- From: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>
- Date: Thu, 18 Jun 2015 13:00:07 +0000
- To: Adam Bergkvist <adam.bergkvist@ericsson.com>, "public-webrtc-editors@w3.org" <public-webrtc-editors@w3.org>
In-line.
On 11/06/15 10:37, Adam Bergkvist wrote:
> Hi
>
> I've done some investigating. My initial thought is that this will
> require some more work.
>
> /Adam
>
> =================
>
> # srcObject attribute description in the Media Capture and Streams spec
>
> "This attribute overrides both the src attribute and any <source>
> elements. Specifically, if srcObject is specified, the User Agent MUST
> use it as the source of media, even if the src attribute is also set or
> <source> children are present."
>
> Comment: Covered.
>
> "If the value of srcObject is replaced or set to null the User Agent
> MUST re-run the media element load algorithm"
>
> Comment: Covered
>
> # Modifications/restrictions mentioned in the Media Capture and Streams
> spec:
>
> "Whenever the User Agent runs the media element load algorithm, if
> srcObject is specified, the User Agent must immediately go to the
> resource fetch phase of the algorithm."
>
> Comment: The HTML5.1 document simply says that the "media element load
> algorithm" should be run when the srcObject is set. This will be a
> change in behavior since step 3 (of the "media element load algorithm")
> will fire an "abort" event (networkState is always NETWORK_IDLE). Step 4
> will queue a task that fires an additional event ("emptied") (also
> because of the network state).
I'm not sure the above is a problem. The resource is local, so network
state should be ignored. We should probably take this to the list.
> One way to avoid these events would be to
> force the NETWORK_EMPTY state ahead of running the "media element load
> algorithm". The state would be set back to NETWORK_IDLE later in the
> "resource fetch algorithm".
>
> "Whenever the User Agent runs the media element load algorithm, and
> reaches the resource fetch phase of this algorithm, if it determines
> that the media resource in question is a MediaStream, it MUST
> immediately abort the resource selection algorithm, and set the
> media.readyState to HAVE_NOTHING if the MediaStream is inactive, or
> HAVE_ENOUGH_DATA if it is active."
>
> Comment: The HTML5.1 document doesn't prevent the "resource selection
> algorithm" from running for srcObject=MediaStream. Instead, the
> algorithm has a special mode (mode=object) if the element has an
> "assigned media provider object". The "resource selection algorithm"
> also updates the networkState to values not supported by the attribute
> table in the MediaCap spec (NETWORK_NO_SOURCE and NETWORK_LOADING).
We should update the table. I think we should just remove the lines
related to MediaElement readyState and networkState since that is now
spelled out in 5.1.
>
> "Let the media resource, represented by the MediaStream object, indicate
> to the media element load algorithm that all audio tracks and all live
> video tracks (represented by a MediaStreamTrack with the readyState
> attribute set to live) should be enabled. This allows the media element
> load algorithm to set AudioTrack.enabled, VideoTrack.selected and
> VideoTrackList.selectedIndex accordingly."
>
> Comment: Covered ("if the user agent has information that would
> facilitate the selection of specific audio tracks to improve the user's
> experience")
>
> "If a MediaStreamTrack is removed from a MediaStream, played by a media
> element, the corresponding AudioTrack or VideoTrack MUST be removed as
> well."
>
> Comment: Not covered (at least directly).
I think this is covered in
http://www.w3.org/TR/html51/semantics.html#dom-media-audiotracks
>
> "The User Agent MUST NOT buffer data from a MediaStream. When playing,
> the User Agent MUST always play the current data from the stream."
>
> Comment: Not covered (at least directly).
I agree.
>
> "When the MediaStream state moves from the active to the inactive state,
> the User Agent MUST raise an ended event on the media element and set
> its ended attribute to true. Note that once ended equals true the media
> element will not play media even if new Tracks are added to the
> MediaStream (causing it to return to the active state) unless autoplay
> is true or the JavaScript restarts the element, e.g., by calling play()."
>
> Comment: Not covered (at least directly).
Yes, we need to add that - if we want that behavior.
There are some other things I've detected in addition:
* HTML5.1 srcObject seem to be thinking "blob", things like "when the
entire resource has been loaded" makes no sense
* Not clear what should happen if the MediaStream is inactive when loaded.
I'll update the PR, but won't be ready for the call today.
>
>
Received on Thursday, 18 June 2015 13:00:38 UTC