New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 714523 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: May 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocked on:
issue webrtc:7553


Previous locations:
webrtc:7495


Sign in to add a comment

WebRTC fails with setLocalDescription when toggling video off and on.

Reported by steven.y...@gmail.com, Apr 18 2017

Issue description

What steps will reproduce the problem?
1. offer with audio codec occupying payload type X(104 for ISAC 32000 in my case), and video codecs (h264, vp8, vp9 + rtx codecs in my case) dynamically allocated payload type above X, i.e. it would have allocated X if not used by audio.
2. negotiate the call to audio codec Y, and video codec Z
2. remove video stream from both ends, so now we only have negotiated audio codec Y active
3. enable video offering for remote first, and then locally, now we get duplicate id warnings as the allocation of the payload type now begins with Y, all the supported video codecs and then the other supported audio codecs. In this case, the ordering of the payload type allocation has changed, and video codec would occupy payload type X instead, and voice engine would fail as it detects a payload type change on the audio codec that originally had payload type X.

What is the expected result?
The setlocaldescription shouldn't fail in this case.

What do you see instead?
now it is in a bad state where we can no longer re-enable video.

What version of the product are you using? On what operating system?
this is since m57 I think.

Please provide any additional information below.

In MediaSessionDescriptionFactory::GetCodecsToOffer, the ordering of finding the codecs to offer changes in re-negotiation (with current_description or not), which then could change the payload type of the same codec offered previously.


In WebRtcVoiceMediaChannel::SetRecvCodecs, there is code to look for the payload type change of a previously configured codec, and fail the operation.

I see there is comment in WebRtcVoiceMediaChannel::SetRecvCodecs saying changing the payload type is wrong, but it obviously happens for video and seems fine. so couple of questions:

1. why video allows changing in payload type?
2. why cannot the codecs be trimmed after both side agreed upon a subset of the codecs?
3. why cannot the audio receive streams be reconfigured with the updated payload type? It is conveyed in the sdp negotiation, so both sides will have it updated.




 
webrtc.log
3.7 KB View Download
Project: chromium
Moved issue webrtc:7495 to now be  issue chromium:714523 .
Components: Blink>WebRTC>PeerConnection
Please share your Chrome and OS version.
Labels: Needs-Milestone

Comment 4 by guidou@chromium.org, Apr 24 2017

Components: -Blink>WebRTC>PeerConnection Blink>WebRTC>Video

Comment 5 by holmer@chromium.org, Apr 24 2017

Cc: magjed@chromium.org
Owner: solenberg@chromium.org
Fredrik, this sounds like an audio issue. Can you take a first look?

cc: magjed since it could be related to dynamic payload types.

Comment 6 by tommi@chromium.org, Apr 26 2017

Status: Assigned (was: Unconfirmed)
Cc: deadbeef@chromium.org kwiberg@chromium.org solenberg@chromium.org
Owner: deadbeef@chromium.org
Routing to deadbeef@ ; there were recent changes to the WVoMC::SetRecvCodecs() logic so this issue may already be sorted.
Blockedon: webrtc:7553
This is slightly different... It's changing the codec that PT 104 is mapped to, from "ISAC" to "ulpfec". Which unlike the other issue, is definitely illegal from an SDP perspective. When packet is received with PT 104, you don't know whether it's ulpfec or a late-arriving ISAC packet.

This CL (https://codereview.webrtc.org/2831333002/) might allow things to work, but this is still an issue. I filed a new webrtc bug (see link above) to more specifically describe what needs to be fixed.
Thanks @deadbeef, I've confirmed that the change addresses my use case.
In that case, I'll close this bug and we can use https://bugs.chromium.org/p/webrtc/issues/detail?id=7553 to keep track of the SDP generation bugs.
Status: Fixed (was: Assigned)

Sign in to add a comment