MediaStreamTrack disabling - effect on downstream MediaStreams?

Hello,

speaking as a member of the Chrome WebRTC implementation team, a matter 
for discussion:

In the current draft spec, the following text is found in section 3.1:

    When a track in a|MediaStream
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastream>|parentis
    disabled, any|MediaStreamTrack
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastreamtrack>|objects
    corresponding to the tracks in any|MediaStream
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastream>|objects
    that were created fromparentare disassociated from any track, and
    must not be reused for tracks again. If a disabled track in
    a|MediaStream
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastream>|parentis
    re-enabled, from the perspective of any|MediaStream
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastream>|objects
    that were created fromparentit is a new track and thus
    new|MediaStreamTrack
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastreamtrack>|objects
    must be created for the tracks that correspond to the re-enabled track.


The enabling and disabling of a MediaStreamTrack is done by writing to 
its "enabled" attribute:

    |enabled|of typeboolean

        The|MediaStreamTrack.enabled|attribute, on getting, must return
        the last value to which it was set. On setting, it must be set
        to the new value, and then, if the|MediaStreamTrack
        <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastreamtrack>|object
        is still associated with a track, must enable the track if the
        new value is true, and disable it otherwise.

It's entirely unclear to us (the implementors working on the Chrome 
implementation) what the purpose of this effect of disabling is, and in 
several usages (such as temporarily turning off a track to e.g. mute 
video or audio), it seems disruptive - since any other properties such 
as SSRCs assigned to a MediaStreamTrack will have to be re-established 
or re-negotiated after a disable/enable event.

 From the perspective of enabling temporary muting of a track, it seems 
like it would be better if the text had said:

    When a track in a|MediaStream
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastream>|parentis
    disabled, any|MediaStreamTrack
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastreamtrack>|objects
    corresponding to the tracks in any|MediaStream
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastream>|objects
    that were created fromparentstop sending data, although their
    "enabled" status does not change. If a disabled track in
    a|MediaStream
    <http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastream>|parentis
    re-enabled, data starts flowing on the downstream MediaStreamTrack
    objects, as long as their /enabled/ attribute has the value "true".

What do other people think - what would it be best if the spec said?

                   Harald

Received on Wednesday, 14 September 2011 19:09:53 UTC