Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

datachannel doesn't have rtcp-mux attribute #13

Open
benbro opened this issue May 24, 2015 · 8 comments
Open

datachannel doesn't have rtcp-mux attribute #13

benbro opened this issue May 24, 2015 · 8 comments
Labels

Comments

@benbro
Copy link

benbro commented May 24, 2015

When creating a pc with only a datachannel, Firefox 38 doesn't set the rcp-mux attribute and toPlanB fails with an error:

Cannot convert to Plan B because m-lines without the rtcp-mux attribute were found.

Is it a problem with FF or does the interop need to relax the rtcp-mux requirement on the application m-section?

var pcConfig = {
    "iceServers": [{"url": "stun:stun.l.google.com:19302"}],
    "RTCBundlePolicy": "max-bundle"
};
pc = new RTCPeerConnection(pcConfig);
var dataChannel = pc.createDataChannel("label", {});

var mediaConstraints = {
  'mandatory': {
    'OfferToReceiveAudio': false, 
    'OfferToReceiveVideo': false},
  'optional': []};
pc.createOffer(
    function(description) {
      pc.setLocalDescription(
        description,
        function() {
          description = interop.toPlanB(description);
          //sendMessage(description);
        },
        function () {}
      );
    },
    function() {},
    mediaConstraints
  );
@gpolitis gpolitis added the bug label May 25, 2015
@gpolitis
Copy link
Member

Thanks, I think you're right, sdp-interop needs to relax the rtcp-mux requirement on the application m-line. Could you please try to do the following and see if it works any better?

  • s/bLine.direction !== 'inactive'/bLine.direction !== 'inactive' && bLine.type !== 'application'/ and ...
  • s/unifiedLine.direction !== 'inactive'/unifiedLine.direction !== 'inactive && unifiedLine.type !== 'application'/

@gpolitis
Copy link
Member

Also just a heads up, I see that you use FF as the offerer, but sdp-interop assumes that FF is the answerer (this is described in the README.md). I don't expect it to just work with FF as the offerer, but it can be fixed with some help (see #4).

@benbro
Copy link
Author

benbro commented May 25, 2015

I saw the README.
If it is OK, I'll test FF as the offerer and report issues.

I've tested with your change and now sdp-introp can convert the first offer with the data channel to planB.

The server sends back an answer with datachannel, I'm converting to unified plan and calling setLocalDescription.
Now The server sends a new offer adding inactive audio and video m-sections in addition to the sendrecv application m-section.
When trying to convert the server offer to unified-plan, I'm getting an error:

Cannot convert to Unified Plan because m-lines that are not bundled were found.

SDP:
https://drive.google.com/file/d/0B12AhxvnYHrAY0phODFldzRHRFU/view?usp=sharing

@benbro
Copy link
Author

benbro commented Oct 21, 2015

Any plans to add the datachannel rtcp-mux fix?

@gpolitis
Copy link
Member

Hi, I'm sorry for the late response. I somehow missed your previous reply. I have created a branch that attempts to fix this issue here https://github.com/jitsi/sdp-interop/tree/issue-13. Could you please try it and let me know how it goes?

@igracia
Copy link

igracia commented Apr 25, 2016

Any chance that PR will get merged?

@soup-in-boots
Copy link

I am pleased to confirm that the issue-13 branch resolves the problem with datachannels.

@iamwo0
Copy link

iamwo0 commented Sep 7, 2018

I am trying to create a p2p communication over chrome and firefox. I got an error exception while us ~interop.toUnifiedPlan. Below is some of my resource:

  1. chrome(Version 68.0.3440.106 (Official Build) (64-bit)) create offer with options:
options: {offerToReceiveVideo: 1, offerToReceiveAudio: 1, voiceActivityDetection: true, iceRestart: false}

and got offer like this:

type: offer, sdp: v=0
o=- 8827218701004799662 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video data
a=msid-semantic: WMS 2CFneQPyAjhJEu8xSCECZHNzFnd1mhF1scaW
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:C1os
a=ice-pwd:BVKEK6W6f45+cneHolcrf4CN
a=ice-options:trickle
a=fingerprint:sha-256 86:54:8E:2E:19:4A:BF:43:38:FD:9C:F5:3F:77:60:AF:09:3F:6E:C0:A4:FE:E4:D2:2C:55:61:70:93:4E:3E:1B
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
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:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:3020400816 cname:9OgctryAB3v2cYP5
a=ssrc:3020400816 msid:2CFneQPyAjhJEu8xSCECZHNzFnd1mhF1scaW 044c9071-5351-486b-b200-734567cbf604
a=ssrc:3020400816 mslabel:2CFneQPyAjhJEu8xSCECZHNzFnd1mhF1scaW
a=ssrc:3020400816 label:044c9071-5351-486b-b200-734567cbf604
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 123 127 122 125 107 108 109 124
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:C1os
a=ice-pwd:BVKEK6W6f45+cneHolcrf4CN
a=ice-options:trickle
a=fingerprint:sha-256 86:54:8E:2E:19:4A:BF:43:38:FD:9C:F5:3F:77:60:AF:09:3F:6E:C0:A4:FE:E4:D2:2C:55:61:70:93:4E:3E:1B
a=setup:actpass
a=mid:video
a=extmap:2 urn:ietf:params:rtp-hdrext:toffset
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:4 urn:3gpp:video-orientation
a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=sendrecv
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 H264/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:123 rtx/90000
a=fmtp:123 apt=102
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032
a=rtpmap:122 rtx/90000
a=fmtp:122 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 red/90000
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:124 ulpfec/90000
a=ssrc-group:FID 1641676001 10430605
a=ssrc:1641676001 cname:9OgctryAB3v2cYP5
a=ssrc:1641676001 msid:2CFneQPyAjhJEu8xSCECZHNzFnd1mhF1scaW bdec83f5-63e3-4561-a001-5acb36d5248a
a=ssrc:1641676001 mslabel:2CFneQPyAjhJEu8xSCECZHNzFnd1mhF1scaW
a=ssrc:1641676001 label:bdec83f5-63e3-4561-a001-5acb36d5248a
a=ssrc:10430605 cname:9OgctryAB3v2cYP5
a=ssrc:10430605 msid:2CFneQPyAjhJEu8xSCECZHNzFnd1mhF1scaW bdec83f5-63e3-4561-a001-5acb36d5248a
a=ssrc:10430605 mslabel:2CFneQPyAjhJEu8xSCECZHNzFnd1mhF1scaW
a=ssrc:10430605 label:bdec83f5-63e3-4561-a001-5acb36d5248a
m=application 9 DTLS/SCTP 5000
c=IN IP4 0.0.0.0
a=ice-ufrag:C1os
a=ice-pwd:BVKEK6W6f45+cneHolcrf4CN
a=ice-options:trickle
a=fingerprint:sha-256 86:54:8E:2E:19:4A:BF:43:38:FD:9C:F5:3F:77:60:AF:09:3F:6E:C0:A4:FE:E4:D2:2C:55:61:70:93:4E:3E:1B
a=setup:actpass
a=mid:data
a=sctpmap:5000 webrtc-datachannel 1024
  1. After that chrome set setLocalDescription, and firefox receive this offer, try to translate to Unified Plan by use peerconnectionAdapter.interop.toUnifiedPlan(description);. Then I got Exception like this:
Error: Cannot convert to Unified Plan because m-lines without the rtcp-mux attribute were found.
  1. I found that is the application bLine trigger this Exception, this is the bLine :
"{\"rtp\":[],\"fmtp\":[],\"type\":\"application\",\"port\":9,\"protocol\":\"DTLS/SCTP\",\"payloads\":5000,\"connection\":{\"version\":4,\"ip\":\"0.0.0.0\"},\"iceUfrag\":\"C1os\",\"icePwd\":\"BVKEK6W6f45+cneHolcrf4CN\",\"iceOptions\":\"trickle\",\"fingerprint\":{\"type\":\"sha-256\",\"hash\":\"86:54:8E:2E:19:4A:BF:43:38:FD:9C:F5:3F:77:60:AF:09:3F:6E:C0:A4:FE:E4:D2:2C:55:61:70:93:4E:3E:1B\"},\"setup\":\"actpass\",\"mid\":\"data\",\"sctpmap\":{\"sctpmapNumber\":5000,\"app\":\"webrtc-datachannel\",\"maxMessageSize\":1024}}"
  1. I have read the document and I have not find any way to create an Offer which application with rtcp-mux line. I don't know what Can I do.

  2. I have try issue_13, and translate sdp without error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants