- From: Harald Alvestrand <harald@alvestrand.no>
- Date: Fri, 16 Nov 2012 10:51:18 +0100
- 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 UTC