Skip to content

SetRemoteDescription does not update codec preferences for existing transceivers in renegotiation #3276

@byungyeon89

Description

@byungyeon89

Your environment.

  • Version: v4.1.6
  • Browser: include version
  • Other Information - stacktraces, related issues, suggestions how to fix, links for us to have context

What did you do?

We are implementing an SFU that needs to handle codec changes during renegotiation for existing transceivers. The scenario is:

  1. SFU acts as an answerer
  2. Initial negotiation succeeds with VP8 codec for both v_1 and v_2 MIDs
  3. Streamer sends a renegotiation offer changing v_2 from VP8 to H264
  4. Call SetRemoteDescription with the renegotiation offer
  5. Call GetLocalDescription to get the answer

Initial Offer (both MIDs use VP8):

m=video 9 UDP/TLS/RTP/SAVPF 100 101
a=mid:v_1
a=rtpmap:100 VP8/90000
...
m=video 9 UDP/TLS/RTP/SAVPF 100 101
a=mid:v_2
a=rtpmap:100 VP8/90000
...

Renegotiation Offer (v_2 changed to H264):

m=video 9 UDP/TLS/RTP/SAVPF 100 101
a=mid:v_1
a=rtpmap:100 VP8/90000
...
m=video 9 UDP/TLS/RTP/SAVPF 102 103
a=mid:v_2
a=rtpmap:102 H264/90000
...

What did you expect?

When SetRemoteDescription is called with the renegotiation offer:

  • The transceiver with mid:v_2 should have its codec preferences updated from VP8 to H264
  • The answer generated by GetLocalDescription should reflect H264 codec for mid:v_2 (payload types 102 103)

What happened?

  • The transceiver with mid:v_2 retains VP8 codec preferences
  • The answer generated by GetLocalDescription still contains VP8 for mid:v_2 instead of H264

Actual Answer after renegotiation:

m=video 9 UDP/TLS/RTP/SAVPF 100 101
a=mid:v_2
a=rtpmap:100 VP8/90000 // Should be rtpmap:102 H264/90000
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions