-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove paragraph about removeTrack causing track to be ended remotely. #1168
Conversation
This no longer happens, because you can still call replaceTrack on the RTCRtpSender, and thus the track tied to the RTCRtpReceiver on the remote side is not fully dead yet. The remote track is never actually ended unless the transceiver is stopped/m= section rejected, since that's the only irreversible change. This paragraph dates back to before we had transceivers/RtpSenders, so I believe it's just obsolete and hasn't been noticed until now.
(I deleted earlier comments where I was confused) Doing a sanity recap: In my book we've got 3 fundamentally different versions of this API:
A difference between So, with Specifically, I'd expect a renegotiation to fire This was certainly the expectation before transceivers. Maybe |
I think we can do what you describe, but without ending or replacing the Making |
@taylor-b Isn't that what |
Let me ask differently: What if the application wants to end the remote track? How does it do it? |
Meaning, why not just do
The only way right now is with If we want to change the way senders' and receivers' tracks relate (which I tried to summarize here: #1169), it may still be be possible since Chrome/Firefox haven't implemented it yet. But it would be a somewhat significant change to the spec. |
To be clear, this is a breaking change. The following works in both Chrome and Firefox. That is: It's unfortunate that we didn't catch this earlier when we added transceivers, but we've caught it now. I think we need to discuss how to fix transceivers to not break this. |
I still think this is plain wrong. So we have moved away from events firing on the track to explicitly surfacing an event on the peerconnection in case of an audio-only call upgrading to an audio-video one. What used to be this
is now surfacing addtrack
This is great because it increases transparancy of what happens on the peerconnection. Now if we were to remove the requirement that ended fires when the track is removed remotely there is a different area where we use the same pattern: datachannels. you only get a signal for adding one (ondatachannel) and then need to listen for its onclose method. If you remove this design pattern from MediaStreamTrack it should also be removed from the datachannel and I think we agree that nobody wants that (hopefully) |
But data channels are symmetrical between the two PeerConnection instances, while tracks (since transceivers were introduced) are not. So I don't think it's fair to compare them. |
I believe that there was agreement at the virtual interim that this paragraph was a leftover. |
Looks fine to me. Though, as discussed at the June interim, we should get counters in browsers to learn how much breakage this causes. |
I think this is still tied up with #1181 (comment). |
This no longer happens, because you can still call replaceTrack on the
RTCRtpSender, and thus the track tied to the RTCRtpReceiver on the
remote side is not fully dead yet. The remote track is never actually
ended unless the transceiver is stopped/m= section rejected, since
that's the only irreversible change.
This paragraph dates back to before we had transceivers/RtpSenders, so
I believe it's just obsolete and hasn't been noticed until now.