Re: MediaStream Constructor

On 2012-07-10 14:01, Stefan Hakansson LK wrote:
> On 07/09/2012 03:27 PM, Adam Bergkvist wrote:
>> On 06/14/2012 10:52 AM, Adam Bergkvist wrote:
>>> On 2012-05-15 19:40, Anant Narayanan wrote:
>>>> On 05/15/2012 06:47 AM, Rich Tibbett wrote:
>>>>> Anant Narayanan wrote:
>>>>>>> On 2012-05-10 13:32, Rich Tibbett wrote:
>>>>>>
>>>>>>>> We could certainly tighten up the definition of the
>>>>>>>> MediaStreamTrackList
>>>>>>>> collection interface and I would be happy to take an action to propose
>>>>>>>> some text here.
>>>>>>
>>>>>> Sounds great, thanks Rich!
>>>>>
>>>>> What would be the best way to do this? Plain text in an email, forking
>>>>> the spec to add the proposal in ReSpec markup so it can be copied
>>>>> verbatim in to the spec on approval or adding and committing the updates
>>>>> directly to the spec in the version control system?
>>>>
>>>> All of the above! Use any mechanism you are comfortable with and I'll
>>>> make sure the text ends up in the right place.
>>>
>>> I was going to propose some changes to the MediaStream() constructor
>>> algorithm, but I think it would be best to move to the new argument list
>>> before.
>>>
>>> What's the status on this Rich? I can write something up if you feel
>>> that you don't have the time.
>>>
>>
>> Here's text for the MediaStream() constructor that lets the developer
>> pass a list of MediaStream, MediaStreamTrackList and MediaStreamTrack as
>> argument. The algorithm also clarifies that the tracks in the new stream
>> are new instances.
>>
>> If we want to proceed with it I can push it from my local repo. We might
>> want to add text about what happens when ended tracks/streams are passed
>> in as arguments.
>
> This looks reasonable to me. I think text about what happens if
> tracks/streams that are ended are passed should be added. Some more
> comments in-line below.

Yes, I'll add that.

>>
>> /Adam
>>
>> -------
>>
>> The MediaStream() constructor takes zero or one argument. If the
>> argument, trackContainers, is supplied, it specifies a list of
>> MediaStream, MediaStreamTrackList and MediaStreamTrack objects. The list
>> objects specifies existing tracks whose sources will be used to constuct
>> the tracks in the new MediaStream object. A MediaStreamTrack object
>> specifies a track directly, while MediaStream and MediaStreamTrackList
>> objects specifiy all tracks contained within these objects. When the
>> constructor is invoked, the UA must run the following steps:
>>
>>        1. Let trackContainers be the constructor’s argument, if any, or
>> null otherwise.
>>
>>        2. Let stream be a newly constructed MediaStream object.
>>
>>        3. Set stream’s label attribute to a newly generated value.
>>
>>        4. If trackContainers is not null, then run the following sub steps
>> for every element, trackContainer, in trackContainers:
>>
>>            1. If trackContainer is null, then abort these steps and
>> continue with the next element.
>>
>>            2. If trackContainer is of type MediaStreamTrack, then run the
>> following sub steps:
>>
>>                1. Add track: Let track be the MediaStreamTrack about to be
>> processed.
>>
>>                2. If track’s kind attribute is not "audio" or "video",
>> then throw a SyntaxError exception.
>>
>>                3. If there is a MediaStreamTrack contained within stream
>> that has the same underlying source as track, then abort these steps.
>>
>>                4. Create a new MediaStreamTrack object and let it inherit
>> track’s underlying source, kind, label and enabled attributes. Add the
>
> Should it really inherit the enabled state? I thought it would always be
> in state enabled when created.

That sounds reasonable to me.

> Also should "Add" be "Append"?

Perhaps this part is a bit under-specified. We have other text in the 
spec that says if the media source has a format that defines a track 
order it should be used in a MediaStream and so on. Perhaps we could use 
"append" for now and see if we have any reason to enforce order later.

Thanks for reviewing.
/Adam

>> new MediaStreamTrack to the corresponding track list (audioTracks or
>> videoTracks) in stream according to kind.
>>
>>            3. If trackContainer is of type MediaStreamTrackList, then run
>> the sub steps labeled Add track (above) for every MediaStreamTrack in
>> trackContainer.
>>
>>            4. If trackContainer is of type MediaStream, then run the sub
>> steps labeled Add track (above) for every MediaStreamTrack in
>> trackContainer’s two track lists (audioTracks and videoTracks).
>>
>>        5. Return stream.

Received on Wednesday, 11 July 2012 08:11:38 UTC