EDGE (webrtc 1.0) doesn't support RTCRtpSender.send to update parameter

Won’t fix Issue #12339351


Jun 14, 2017
This issue is public.
Found in
  • Microsoft Edge
Found in build #
Reported by 1 person

Sign in to watch or report this issue.

Steps to reproduce

I cannot call RTCRtpSender.send() or RTCRtpReceiver.receive() with updated parameters. Any of these two functions throws InvalidAccessError.

I have an Audio+Video call between Chrome and Edge through a MCU. The call works well, but I need to be able to change the video ssrc coming from Chrome to Edge.

As a suggestion from a previous reported issue I want to call rtpReceiver.receive with the new ssrc, but I got InvalidAccessError.

I am able to create a new RTCRtpReceiver with the same exact parameters and works, but I cannot call rtpReceiver.receive (update parameters) on the same object.

I can live with a new rtpReceiver being created at this point, but I need to modify
params.rtcp.ssrc for the rtpSender object as well (in order to have RTCP-FB work).
At this point I have the same issue when calling rtpSender.send(params) -> InvalidAccessError.

It works with a new RTCRtpSender object with the exact same params, but this doesn’t work for the MCU because it changes the seqno in the RTP stream and srtp.unprotect fails.

Please advise how to update parameters in rtpSender.send().

I even tried to put codecPayloadType and encodingId in the params.encodings as I saw in the old opensource ortc code.

P.S. If I keep the exact same params when calling RtpSender.send(params) it doesn’t throw any exception.

P.P.S.: I am using the webrtc/adapter.js latest version


0 attachments

    Comments and activity

    • Changed Steps to Reproduce

    • Microsoft Edge Team

      Changed Assigned To to “Shijun S.”

      Changed Status to “Confirmed”

    • Thanks for reaching out to us!

      Is there any example code you can share with us so we could look into the details?

      Shijun, for the MS Edge team

    • Changed Steps to Reproduce

    • Hello,

      Thanks for considering this.

      It’s complicated to provide a full working example, therefore I will share a function added to adapter.js (edge shim) used to fix video stream after MCU changed source SSRC.

    • The 2 version of the function I provided differs just by deleting old rtpSender and initializing a new one in the version that works.

      This function is called in a call with audio+video (working) when MCU changes ssrc.

      It’s important to note that the only parameter changed in “params” is the remote ssrc. The others are identical to the first call (through the setRemoteDescription function).

      P.S. We are using a version of “Plan B” therefore you will notice that we remove the old video stream at the end of the function (we slightly modified adapter.js in this case).

    • Looking more into this, changing SSRC value through send() and receive() is not expected to work in our implementation.  The issue is now posted to the ORCG WG - https://github.com/w3c/ortc/issues/713.  Looks like we will have to wait for more details to be specified. 

      Meanwhile, if you create a new sender object with a new SSRC, your MCU will have to be prepared for the seqno discontinuity.  That seems like the right way to go at this point. 

      All the Best, Shijun for the MS Edge team

    • Microsoft Edge Team

      Changed Status from “Confirmed” to “Won’t fix”

    You need to sign in to your Microsoft account to add a comment.

    Sign in