- From: Justin Uberti <juberti@google.com>
- Date: Wed, 29 Aug 2012 15:04:05 -0700
- To: Roman Shpount <roman@telurix.com>
- Cc: "Timothy B. Terriberry" <tterriberry@mozilla.com>, "public-webrtc@w3.org" <public-webrtc@w3.org>
- Message-ID: <CAOJ7v-3uqp6xiStZ7As2wFAhifSoFqoLwV5_DZ4-WngpoRsGfw@mail.gmail.com>
On Wed, Aug 29, 2012 at 9:41 AM, Roman Shpount <roman@telurix.com> wrote: > > On Wed, Aug 29, 2012 at 12:09 PM, Timothy B. Terriberry < > tterriberry@mozilla.com> wrote: > >> Roman Shpount wrote: >> >>> PeerConnection API was created to simplify interoperability, but ended >>> up as something that will not work with SIP (modified offer/answer, a >>> large number of SDP extensions that are not supported by anything >>> currently existing, no support for forking) or Jingle (Jingle was not >>> >> >> This seems like a somewhat nonsensical argument. "It's possible to make >> JSEP API calls that do things outside of 3264 O/A, therefore we should >> throw that away all 3264 semantics and use something that has no relation >> to it at all"? >> > > My main issue with offer/answer and SDP is that we are trying to use them > to implement an API, when those things were clearly designed for a network > protocol. A lot of things that normally fall under the real time media > stack API cannot be expressed via offer/answer, so we add things like > hints. The API needs to inform the signaling application about > its capabilities (ie codecs supported, media types, security methods), > allow the signaling stack to select its preferences (for instance listen > only audio call with Opus codec preferred), and make the make the media > stack generate an offer. When an answer is received, signaling stack needs > to examine this answer, modify it according to its preferences and pass it > on to the underlying stack. It then needs to be able to generate new > offers, or to provide the modified answer to a previous offer. Doing this > by manipulating SDP and by trying to fit this into offer/answer > is cumbersome and of no real benefit. > > First of all, SDP has a clear internal structure (ie SDP lines with a very > few known types of well defined formats). API should be dealing with this > data packaged in the structures, not in a string blob. It is trivial to > define a mapping from SDP to a session description object. > We currently have a SessionDescription object in the API, which can convert to/from SDP. One can certainly imagine having specific accessors on this object so that the description can be changed without having to do operations on a string blob. > > > Offer/answer would be better implemented by decomposing it into set of > lower level operations, such as creating data connections, selecting > encryption to be used over this data connection, and then selecting media > to be transmitted over this media connection independently. > > To summarize, from my point of view, it is not that I want to through away > offer/answer. I just think it is inappropriate as a model for an API. I > would argue that building WebRTC API on top of offer/answer will make > application harder to implement and control, and in the end of the day, > will make interop with offer/answer harder as well. > > SIP and Jingle aren't the same things. One API that can handle both is by >> necessity going to be able to do some things they might not be able to do >> on their own. It's still much easier to build an application that >> interoperates with SIP if everything works _mostly_ the same. Given that >> the maintainer of libjingle is the primary author and proponent of the JSEP >> API, I'm also pretty sure that API will handle what Jingle needs to do just >> fine. > > > I am pretty sure current API cannot be mapped to Jingle without some > extensions or additional work. When thing mostly the same does not make it > easier to build an interoperable solutions. It really depends on the exact > difference. Current WebRTC proposal will only work with other WebRTC > implementations or some sort of media and signaling translation device. > As Tim mentions... I'm pretty sure it can be mapped just fine. > > As for extensions... if you're referring to things like BUNDLE and msid, >> these are something the SDP for a SIP-compatible application is going to >> have to deal with, regardless of what the W3C API looks like. They're also >> squarely under the purview of the IETF. >> > > These extensions are under IETF purview, but the API that controls their > use is under W3C purview. I think, for interop it would be better to > disable some of those features via the API instead of relying on > offer/answer and SDP to negotiate that these things are not supported by > the remote party. > Well, you can do this - strip anything you don't want out of the local description, then you don't even have to negotiate it off via offer/answer. > > >> And finally for forking: Mozilla would like to support it, and we've >> discussed options for cloning PeerConnection objects that would allow you >> to do it. Someone does need to do the real work of writing up a proposal >> for that API and defining what the semantics are, but that would be equally >> true of any other solution that would allow forking. There are lots of >> issues like this, for which real work needs to be done, but all this time >> spent debating whether or not we should throw away all the work we have >> done and start over (again) is just keeping people from actually working on >> them. >> > > I would be more then happy to help designing or implementing this within > the current API or an alternative that will be proposed. > _____________ > Roman Shpount >
Received on Wednesday, 29 August 2012 22:04:53 UTC