W3C home > Mailing lists > Public > public-webrtc@w3.org > November 2012

Re: [ACTION-59] V2: Introduce lookup by id structures for streams and tracks.

From: Harald Alvestrand <harald@alvestrand.no>
Date: Fri, 16 Nov 2012 10:51:18 +0100
Message-ID: <50A60C96.1080002@alvestrand.no>
To: public-webrtc@w3.org
Changing the subject line slightly to mark that this is a reset...

I think this looks good. Let's Just Do It.

On 11/15/2012 11:47 AM, Adam Bergkvist wrote:
> Hi
>
> It's time for an update to reflect the feedback so far.
>
> I've written a few code examples recently using a lot of stream and 
> track lookups and would like to add another bullet to the list of 
> common use cases (feedback on these?). We already have:
> 1) Lookup by id.
> 2) Iterate/loop through all the items in the collection.
>
> I'd like to add a third:
> 3) Get the only track of a certain kind (if any) from a stream created 
> by getUserMedia().
>
> The forEach() approach has gotten some support, but I think it's a bit 
> clumsy doing 3) from the list of common uses.
>
> var theTrack;
> stream.audioTracks.forEach(function (track) {
>     theTrack = track;
> });
>
> (if stream had more than one audio track and we wanted the "first" we 
> would have to either break the loop somehow or add a condition to not 
> overwrite theTrack every subsequent time)
>
> compared to something that can use indexes (but without guaranteeing 
> stability).
>
> var theTrack = stream.audioTracks[0];
>
> Preferably you would use the id of the track to look it up, but when 
> you get a fresh stream from getUserMedia() you don't know the id yet.
>
> To sum up the feedback, people seem to want something like this 
> (mainly based on Haralds feedback):
>
> ======
> interface MediaStream {
>     // ...
>
>     sequence<MediaStreamTrack> getVideoTracks();
>     sequence<MediaStreamTrack> getAudioTracks();
>
>     MediaStreamTrack getTrackById(DOMString trackId);
>
>     void addTrack(MediaStreamTrack track);
>     void removeTrack(MediaStreamTrack track);
>
>     attribute EventHandler onaddtrack;
>     attribute EventHandler onremovetrack;
> };
> ======
>
> // 1) lookup by id
> var track = stream.getTrackById(trackId);
>
> // 2) Iterate
> var audioTracks = stream.getAudioTracks();
> for (var i = 0; i < audioTracks.length; i++)
>     // use audioTracks[i]
>
> // 3) Get only (first) track of a kind
> var audioTrack = localStream.getAudioTracks()[0];
>
> /Adam
>
Received on Friday, 16 November 2012 09:51:50 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 16 November 2012 09:51:50 GMT