- From: Robin Raymond <robin@hookflash.com>
- Date: Wed, 17 Jul 2013 00:45:18 -0400
- To: Martin Thomson <martin.thomson@gmail.com>
- CC: Harald Alvestrand <harald@alvestrand.no>, "public-webrtc@w3.org" <public-webrtc@w3.org>
- Message-ID: <51E6215E.7060500@hookflash.com>
This flexibility and lack of details for what must be supported for SDP control is one of the reasons largest challenges ahead. There is no clear definition of what exact feature sets must be supported exclusive to the RTC engine without a lot of "hand waving" saying "whatever SDP does" for compatibility. That's not good enough to finish 1.0, let alone be able to come up with a reasonable 2.0 non-SDP based alternative that covers 1.0 features. See this draft for example a ton of SDP features that could be supported: http://tools.ietf.org/html/draft-nandakumar-mmusic-sdp-mux-attributes-03 This SDP settings list can be grouped into several categories: 1) attributes needed by RTP engine for control / constraints / stream / track definition and mappings 2) attributes needed to specify compatibility between other non-WebRTC RTC engines 3) attributes that are legacy and do not need definition at all 4) attributes that have no value to a browser's RTC engine, but might to a higher layer above 5) attributes that could be respected by an browser's RTC engine, but could also be performed by a higher layer 6) attributes that are extensions that might have value to RTC engine, but only in some future version So to address each types: 1) These attributes are the real mandatory attributes and define the minimum required feature set for 1.0. Examples: codec attributes, payload mappings, SSRCs and track / stream groupings, and transport information. 2) The exact RTC engine feature for mandate support and optional support needs to be defined for various extensions that currently exist. Example: "rtcp-rsize". 3) What happens to these attributes if they are sent into an engine? Example: "mbms-repair" 4) If you need/want these attributes, you'll have to parse the SDP from JS, or ask the browsers to expose an API for you. Example: "label" 5) The responsibility for who should/could respond to these kind of attributes is unclear for SDP. Example "t" or 'floor control' SDP attributes. 6) Each of these needs to be road mapped now vs later. Not only is it going to take an enormous amount of time to define the exact SDP attributes needed but it will introduce ambiguities for what should be implemented inside the RTC engine (vs JS). To that end, what should be exposed for easier SDP handling (to prevent mangling -- even if they aren't truly needed by the RTC engine)? Where is the division of responsibility lies for features which could be implemented in JS as a layer above versus mandated that a browser must / might implement? E.g. should the browser respect the start/stop times of the "t" attribute? In the future, should the browser define floor control API just because the SDP can express it? The bottom line: We should be asking "What features / functions / control do we need an RTC engine to support minimum on the wire compatibility for 1.0" and define the JS surface controls around those exclusively. Instead the question being asked far-to-often appears to be "What attributes of SDP do we need to expose inside the browser engine?". The distinction is important. By mandating SDP, we must define every support / optional / unsupported SDP attribute exposed from WebRTC browser engines (even if they are merely generated in the SDP output or accepted as input). Whereas we could just select what an engine really needs to function properly and compatibly with existing systems and expose nothing more. -Robin > Martin Thomson <mailto:martin.thomson@gmail.com> > 16 July, 2013 2:53 PM > > This process might be made more feasible if there was a specification > that identified exactly what SDP browsers are required to: > a) produce - given a set of stream inputs, what are the set of SDP > offers a browser can legally produce; given an offer, plus a set of > stream inputs, what are the set of SDP answers a browser can legally > produce; and > b) consume - given a certain starting state, what SDP offers or > answers is a browser required to accept and what actions do those > documents induce. > > This should, at least initially, be a very constrained specification. > (I believe that is what Roman is stating.) In fact, this could go so > far as to categorically state that the input to setLocalDescription() > is precisely the output of createOffer or createAnswer. > > Once that is sorted out, your process for enabling a range of use > cases makes sense. Until that specification exists, I don't see a way > to get anything other than what you describe: a piecemeal approach. > It's not like Justin and Cullen haven't already tried to cover the set > of use cases. The JSEP draft has had a list of them for ages, but > there has been no real attempt on the W3C side to address those cases. > > I'm just speculating, but I suspect that there is some reluctance to > explore solutions when the foundation in SDP is still quite nebulous. > Maybe that will change when (if?) MMUSIC decides on a plan, but I > suspect that plan will first need to be enacted before you will see > any movement. I have no objection to doing a little groundwork now, > but I find that talking about requirements only gets you so far.
Received on Wednesday, 17 July 2013 04:45:53 UTC