- From: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>
- Date: Wed, 19 Feb 2014 07:06:34 +0000
- To: Silvia Pfeiffer <silviapfeiffer1@gmail.com>
- CC: "piranna@gmail.com" <piranna@gmail.com>, Iñaki Baz Castillo <ibc@aliax.net>, public-webrtc <public-webrtc@w3.org>
On 2014-02-18 23:46, Silvia Pfeiffer wrote: > > On 19 Feb 2014 05:20, "Stefan Håkansson LK" > <stefan.lk.hakansson@ericsson.com > <mailto:stefan.lk.hakansson@ericsson.com>> wrote: > > > > On 2014-02-18 01:12, Silvia Pfeiffer wrote: > > > I've also found all sorts of weird things happening when mangling SDP. > > > > I think Martin Thomson has proposed that we for the very first version > > should state that no modification between createOffer/Answer and > > setLocal is be supported (i.e. you are on your own if you do). Maybe > > that is not such a bad idea. > > > > > I think we need to pull all the use cases and turn them into actual > > > browser APIs. Such as: setting bandwidth limits, muting/unmuting/hold, > > > codec change. Once we've done all those, we can cordon off SDP. Right > > > now, though, that would inhibit a lot of useful things from being > > > possible. > > > > I agree, and we also had a discussion on what things that we initially > > need API for. The conclusion of that discussion is captured at > > https://www.w3.org/2011/04/webrtc/wiki/Transport_Control > > Thanks for digging this out. > > We should continue to update this list with use cases as they appear. That was the intention, it should be a "live" document. > There's one for controlling FEC activation on another thread right now. > > Cheers, > Silvia. > > > Stefan > > > > > > > > Silvia. > > > > > > > > > On Tue, Feb 18, 2014 at 8:12 AM, piranna@gmail.com > <mailto:piranna@gmail.com> <piranna@gmail.com > <mailto:piranna@gmail.com>> wrote: > > >> I totally agree, setLocalDescription() purpose seems extrange to > me (don't > > >> you know who you are?!?!), and I also think that SDP, if used, > should be > > >> considered a closed, cryptic and inmutable blob, not allowing > modifications > > >> (I don't find SDP bad for itself except for being too verbose, but > I find > > >> bad the fact thay you need to manipulate it). > > >> > > >> Send from my Samsung Galaxy Note II > > >> > > >> El 17/02/2014 21:40, "Iñaki Baz Castillo" <ibc@aliax.net > <mailto:ibc@aliax.net>> escribió: > > >> > > >>> Hi, > > >>> > > >>> I've spent some time playing with SDP mangling between > createOffer() and > > >>> setLocalDescription(). I won't give accurate details since I > prefer not to > > >>> remember them, but I hope the whole picture is correctly exposed. > > >>> > > >>> Let's say sdp is the RTCSessionDescription.sdp retrieved via > > >>> RTCPeerConnection.createOffer(): > > >>> > > >>> - In Chrome: I can remove some payloads from a m line in that > sdp. Then I > > >>> pass the modified SDP to setLocalDescription(). The resulting SDP > (inspected > > >>> via getLocalDescription) does not contain such a payload nor its > related > > >>> a=rtpmap attribute is also removed (OK). > > >>> > > >>> - In Chrome: Instead of removing a payload, I replace its number > (i.e. > > >>> 125) with another one (i.e. 126) in both the m line and its > associated > > >>> a=rtpmap attribute. Result after getLocalDescription()? The > payload is not > > >>> present (opsss). > > >>> > > >>> - In Firefox: not tested. > > >>> > > >>> - In Chrome: Before setLocalDescription() I can replace > a=setup:actpass > > >>> with a=setup:passive (to force the remote peer to behave as a > DTLS cient). > > >>> It works. > > >>> > > >>> - In Firefox: It produces a "parsing" error (so the only way is > mangling > > >>> the SDP *after* getLocalDescription). > > >>> > > >>> - In Firefox: Before setLocalDescription() I can remove the > a=fingerprint > > >>> attribute, but setLocalDescription() will append it again. OK, > this seems > > >>> reasonable (somehow). > > >>> > > >>> - In Chrome: the same action forces the browser to use SDES > (deprecated > > >>> a=crypto lines are untouched). > > >>> > > >>> > > >>> Like those, there are tons of undocumented and unpredictable > stuff. The > > >>> above basically means that: > > >>> > > >>> - The list of *valid* changes that can be performed to a SDP between > > >>> createOffer() and setLocalDescription() are undocumented. Some > browsers > > >>> behave in some way and others in a different way. > > >>> > > >>> - The SDP passed to setLocalDescription() could be internally > modified by > > >>> the browser, so it does not match the "effective" local SDP > (which can be > > >>> retrieved via getLocalDescription). > > >>> > > >>> - I am also pretty sure that modifying the stream direction (i.e. > > >>> replacing a=sendrecv with a=recvonly) has not the expectable behavior > > >>> (hopefuly I'm wrong). > > >>> > > >>> > > >>> JSEP 06 tries to document some of the above actions in section 6 > > >>> "Configurable SDP Parameters": > > >>> > > >>> http://tools.ietf.org/html/draft-ietf-rtcweb-jsep-06#section-6 > > >>> > > >>> But the door is still open to lot of undocumented possibilities > (basically > > >>> due to the usage of a blob instead of a real API). > > >>> > > >>> > > >>> My conclusion is that the current API is unfortunate. IMHO there > should > > >>> not be "createOffer" and "setLocalDescription", but a single (or > multiple) > > >>> API call that, in the end, makes the browser to produce a final and > > >>> untouchable SDP. But the current API forces the developer to > retrieve an > > >>> "initial" SDP offer from a RTCPeerConnection via createOffer() > and then to > > >>> pass it again to the RTCPeerConnection via setLocalDescription(), > which > > >>> opens the door to funny nightmares between those steps (100% > error prune due > > >>> to the specification and due to implementations based on that > "too open" > > >>> specification). > > >>> > > >>> > > >>> Best regards. > > >>> > > >>> > > >>> > > >>> -- > > >>> Iñaki Baz Castillo > > >>> <ibc@aliax.net <mailto:ibc@aliax.net>> > > > > > > > > >
Received on Wednesday, 19 February 2014 07:06:58 UTC