- From: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>
- Date: Fri, 27 Sep 2013 13:38:02 +0000
- To: Harald Alvestrand <harald@alvestrand.no>
- CC: "public-media-capture@w3.org" <public-media-capture@w3.org>
On 2013-09-27 14:28, Harald Alvestrand wrote: > Reawakening an old discussion (tracked in bug 22270). > > The suggestions made are (I think) three different ones: > > - Create two classes of MediaStream, one which adds tracks under UA > control, and one which adds tracks under Javascript control. Only the > second has the addTrack and removeTrack methods. getUserMedia and > peerconnections produce the first type. For the fun of it, I sketched on how this could look. Note that it could be described in many different ways, e.g. we could have a base class that is extended. interface PlatformMediaStream : EventTarget { readonly attribute DOMString id; sequence<MediaStreamTrack> getAudioTracks (); sequence<MediaStreamTrack> getVideoTracks (); MediaStreamTrack? getTrackById (DOMString trackId); MediaStream clone (); readonly attribute boolean inactive; attribute EventHandler oninactive; attribute EventHandler onaddtrack; attribute EventHandler onremovetrack; }; [Constructor, Constructor (MediaStream stream), Constructor (PlatformMediaStream stream), Constructor (MediaStreamTrackSequence tracks)] interface MediaStream : EventTarget { readonly attribute DOMString id; sequence<MediaStreamTrack> getAudioTracks (); sequence<MediaStreamTrack> getVideoTracks (); MediaStreamTrack? getTrackById (DOMString trackId); MediaStream clone (); void addTrack (MediaStreamTrack track); void removeTrack (MediaStreamTrack track); readonly attribute boolean inactive; attribute EventHandler oninactive; }; I did change "ended" to "inactive" since I think that is what we agreed on, but I think a MediaStream generated by a call to getUserMedia would (if all tracks stop) really be ended - there is no way to revive it. Stefan > > - Let addTrack and removeTrack fail when a MediaStream comes from > getUserMedia or peerconnections. > > - No change. Tracks can be added to any MediaStream. > > Should we make a decision here? > > > On 04/18/2013 11:09 AM, Adam Bergkvist wrote: >> On 2013-04-17 12:23, Robert O'Callahan wrote: >>> On Wed, Apr 17, 2013 at 10:18 PM, Adam Bergkvist >>> <adam.bergkvist@ericsson.com <mailto:adam.bergkvist@ericsson.com>> >>> wrote: >>> >>> Since they're only used to listen to when the UA updates the track >>> set they wouldn't be used when it's only the application that >>> manages the track set. >>> >>> This is a bit confusing in the current spec. The description of the >>> events say that they are fired whenever a track is added, which is >>> misleading since they are not fired in the addTrack()/removeTrack() >>> algorithms. It's fixed for the next release. >>> >>> >>> We should also fire them when addTrack()/removeTrack() are called, >>> shouldn't we? >> >> We currently don't do that since these methods directly adds or >> removes the track. In the case where it's the UA that modifiess the >> track set, the track is added/removed in the same event loop iteration >> as the addtrack/removetrack event is fired. >> >> I don't have a strong preference about this; if we could find similar >> behavior in established APIs I would be happy to align. >> >> /Adam >> > > >
Received on Friday, 27 September 2013 13:38:31 UTC