Codec PT mismatch during renegotiation, valid or not?

Hi,

The following scenario causes setLocalDescription() to fail after
renegotiation because the re-offerer (Firefox) introduces new codec PT
in the same m= lines):



1) Chrome calls to Firefox with an audio track. SDP offer (simplified):

m=audio 58234 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 126
a=setup:actpass
a=mid:audio
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000



2) Firefox SDP answer:

m=audio 65515 UDP/TLS/RTP/SAVPF 111
a=recvonly
a=fmtp:111 maxplaybackrate=48000;stereo=1
a=mid:audio
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=setup:active

Firefox has chosen PT 111 (opus). Fine.



3) Firefox re-offers with its own audio track. SDP re-offer:

m=audio 65515 UDP/TLS/RTP/SAVPF 109 9 0 8 111
a=sendrecv
a=fmtp:111 maxplaybackrate=48000;stereo=1
a=mid:audio
a=rtcp-mux
a=rtpmap:109 opus/48000/2
a=rtpmap:9 G722/8000/1
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:111 opus/48000/2
a=setup:actpass

Here Firefox has introduced a new PT value: 109 (also opus). Note that
PT 111 (opus) is also present.



4) Chrome gets the SDP re-offer, calls setRemoteDescription()
(success) and calls createAnswer(), which produces the following SDP
answer:

m=audio 58234 UDP/TLS/RTP/SAVPF 109 9 0 8
a=setup:passive
a=mid:audio
a=sendrecv
a=rtcp-mux
a=rtpmap:109 opus/48000/2
a=fmtp:109 minptime=10;useinbandfec=1
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000

Note that Chrome has chosen PT 109 (opus) instead of the previously
used PT 111 (opus).



5) Such a call to setLocalDescription() in Chrome produces this error:

> Uncaught OperationError: Failed to set local answer sdp: Session error code: ERROR_CONTENT. Session error description: Failed to set local audio description recv parameters.



So my main question is: can an endpoint perform a PeerConnection
renegotiation and introduce new PT values within an existing m= line?
AFAIR this is NOT valid.
- If valid, then this is a Chrome bug.
- If invalid, then this is a Firefox bug.


Thanks a lot.


-- 
Iñaki Baz Castillo
<ibc@aliax.net>

Received on Thursday, 8 September 2016 10:23:26 UTC