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

Issue 611708 link

Starred by 4 users

Issue metadata

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



Sign in to add a comment

Error on WebRTC renegotiation

Reported by ish...@zingaya.com, May 13 2016

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36

Steps to reproduce the problem:
1. Create chrome-chrome webrtc connection with audio & video
2. On Offer side 
   i.  remove localStream
   ii.  add localStream with audio only
   iii. generate Offer with {offerToReceiveVideo: true, offerToReceiveAudio: true}
   iv. send SDP to another side
3. On Answer side 
   i.   setRemoteDescription
   ii.  createAnswer without params
   iii. setLocalDescription with this answer
   iv. send SDP to another side
4. On Offer side
   i. setRemoteDescription

On offer side throw error  
DOMException: Failed to parse SessionDescription.  Failed to parse video codecs correctly.

What is the expected behavior?

What went wrong?
in Answer sdp we have 
a=rtcp-fb:101 ccm fir
a=rtcp-fb:101 nack
a=rtcp-fb:101 nack pli
a=rtcp-fb:101 goog-remb
a=rtcp-fb:101 transport-cc

but we haven't
a=rtpmap:101 VP9/90000

Did this work before? N/A 

Chrome version: 50.0.2661.94  Channel: n/a
OS Version: OS X 10.11.4
Flash Version: Shockwave Flash 21.0 r0
 
offer_sdp.txt
2.4 KB View Download
answer_sdp.txt
2.4 KB View Download
Cc: ashej...@chromium.org
Labels: Needs-Feedback
Thanks for the report. Request you to provide sample html or jsfiddle file which reproduces the above issue.

I really appreciate your help.

Thank you!

Comment 2 by rsesek@chromium.org, May 26 2016

Components: Blink>WebRTC
Cc: hta@chromium.org jansson@chromium.org
Labels: -Needs-Feedback
Thank you for the detailed bug report! FWIW, I mostly used https://webrtc.github.io/samples/src/content/peerconnection/munge-sdp/ when investigating this report.

Your offer says:
m=video 9 UDP/TLS/RTP/SAVPF 100

and

a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc

so I'm assuming you're trying to indicate that you only want to receive VP8 video. 

However, your offer also includes 
a=rtcp-fb:101 ccm fir
a=rtcp-fb:101 nack
a=rtcp-fb:101 nack pli
a=rtcp-fb:101 goog-remb
a=rtcp-fb:101 transport-cc

but rtp payload number 101 isn't mentioned in the m=video line. Removing those five "a=rtcp-fb:101" lines from the offer eliminated the "Failed to parse video codecs correctly" error when attempting to set the offer. 

jansson@ and hta@ - is it correct that Chrome throws an error while parsing an offer that references "a=rtcp-fb:101" without "a=rtpmap:101 VP9/90000" or a mention of payload 101 in the m=video line?


(And FYI to the reporter - even after removing the "a=rtcp-fb:101" lines from the offer, I still wasn't able to establish a connection because when I tried to set an answer, Chrome threw this error:
Failed to set session description: OperationError: Failed to set remote answer sdp: Failed to push down transport description: Offerer must use actpass value for setup attribute. 
A possibly relevant discussion of that error is in https://bugs.chromium.org/p/webrtc/issues/detail?id=2782)

Comment 4 by ish...@zingaya.com, May 27 2016

Thank you for answer!
I'm don't mangle offer and answer. It's pure generated by Chrome on renegotiation without change DTLS roles. This is holding operation. OfferToRecive set to false and no media streams added as local streams.
Owner: hta@chromium.org
Status: Assigned (was: Unconfirmed)
Directly assigning to hta@ since I'm getting the feeling that I'm missing something here...

Comment 6 by hta@webrtc.org, Jun 1 2016

The offer generated has the brokenness. It seems that we're leaving in some stuff that belongs to VP9, but somehow leave VP9 out of the offer.

It also has a=setup:active, which I am not sure it should (but seems to make sense - "keep the current role").
A test case is needed; according to the description, it should be easy to repro.

Comment 7 by hta@chromium.org, Apr 5 2017

Owner: deadbeef@chromium.org
Is someone in Kirkland able to pick this up?
Cc: ish...@zingaya.com
Status: Archived (was: Assigned)
Archiving this because it was reported several Chrome versions ago, and I think it's unlikely to still be a problem.

Please comment if you still see this, and I'll reopen and investigate further.

Comment 9 by ish...@zingaya.com, Apr 10 2017

I'm still can reproduce this bug on 57.0.2987.133 (64-bit) Linux and Mac
Components: -Blink>WebRTC Blink>WebRTC>PeerConnection
Labels: Needs-Feedback
Status: Untriaged (was: Archived)
I wasn't able to reproduce the originally reported issue (extra "rtcp-fb" lines). But what I did find is that, after adding the new stream, the stream ID in the new offer didn't change. As a result, though the offer/answer exchange completed successfully, audio wasn't flowing end-to-end audio. Is this what you saw?

If so, I believe that issue will be fixed by this CL: https://codereview.webrtc.org/2810733003
Status: Fixed (was: Untriaged)
The CL linked above landed in webrtc; can you test next week with Chrome Canary?

Sign in to add a comment