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

Re: [webrtc-pc] replaceTrack(null): Allowed?

From: aboba via GitHub <sysbot+gh@w3.org>
Date: Fri, 25 Nov 2016 21:09:36 +0000
To: public-webrtc-logs@w3.org
Message-ID: <issue_comment.created-263022690-1480108173-sysbot+gh@w3.org>
Some preliminary thoughts: 

"Attempts to replace the track being sent with another track provided 
(or with a null track), without renegotiation.

To avoid track identifiers changing on the remote receiving end when a
 track is replaced, the sender must retain the original track 
identifier and stream associations and use these in subsequent 
negotiations.

When the replaceTrack method is invoked, the user agent must run the 
following steps:

Let sender be the RTCRtpSender object on which replaceTrack is 
invoked.
Let tranceiver be the RTCRtpTransceiver object associated with sender.
Let connection be the RTCPeerConnection object that created sender.

If transceiver.stopped is true, return a promise rejected with an 
InvalidStateError.

Let withTrack be the argument to this method.

If withTrack is non-null and withTrack.kind differs from the 
transceiver kind of transceiver, return a promise rejected with a 
TypeError.

If transceiver is not yet associated with a media description [JSEP] 
(section 3.4.1.), then set sender's track attribute to withTrack, and 
return a promise resolved with undefined.

Let p be a new promise.

Run the following steps in parallel:

Determine if negotiation is needed to replace the sender's existing 
track with withTrack. Negotiation is not needed if withTrack is null 
or if the sender's existing track is ended (which appears as though 
the track was muted). Ignore which MediaStream the track resides in 
and the id attribute of the track in this determination. If 
negotiation is needed, then reject p with InvalidModificationError and
 abort these steps.

If withTrack is null, have the sender stop sending, without 
negotiating.  Otherwise, have the sender switch seamlessly to 
transmitting withTrack instead of the sender's existing track, without
 negotiating.

Queue a task that sets sender's track attribute to withTrack, and 
resolves p with undefined.

Return p."

-- 
GitHub Notification of comment by aboba
Please view or discuss this issue at 
https://github.com/w3c/webrtc-pc/issues/947#issuecomment-263022690 
using your GitHub account
Received on Friday, 25 November 2016 21:09:42 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 4 June 2019 15:32:41 UTC