Re: [rtcweb] codec and connection negotiation

Paul Kyzivat <pkyzivat@alum.mit.edu> Wed, 10 August 2011 12:33 UTC

Return-Path: <pkyzivat@alum.mit.edu>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8223E21F874F for <rtcweb@ietfa.amsl.com>; Wed, 10 Aug 2011 05:33:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.573
X-Spam-Level:
X-Spam-Status: No, score=-2.573 tagged_above=-999 required=5 tests=[AWL=0.026, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KSKlcKeahF5C for <rtcweb@ietfa.amsl.com>; Wed, 10 Aug 2011 05:33:22 -0700 (PDT)
Received: from qmta07.westchester.pa.mail.comcast.net (qmta07.westchester.pa.mail.comcast.net [76.96.62.64]) by ietfa.amsl.com (Postfix) with ESMTP id C084621F8751 for <rtcweb@ietf.org>; Wed, 10 Aug 2011 05:33:21 -0700 (PDT)
Received: from omta06.westchester.pa.mail.comcast.net ([76.96.62.51]) by qmta07.westchester.pa.mail.comcast.net with comcast id JcZU1h00A16LCl057cZtqc; Wed, 10 Aug 2011 12:33:53 +0000
Received: from Paul-Kyzivats-MacBook-Pro.local ([24.62.109.41]) by omta06.westchester.pa.mail.comcast.net with comcast id JcZr1h00j0tdiYw3ScZreo; Wed, 10 Aug 2011 12:33:52 +0000
Message-ID: <4E427AAC.4020105@alum.mit.edu>
Date: Wed, 10 Aug 2011 08:33:48 -0400
From: Paul Kyzivat <pkyzivat@alum.mit.edu>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:5.0) Gecko/20110624 Thunderbird/5.0
MIME-Version: 1.0
To: Markus.Isomaki@nokia.com
References: <4E3C377A.5090105@skype.net> <4E3C3C2C.4020808@skype.net>, <4E3FE002.4060006@alvestrand.no>, <4E40335A.3090204@alum.mit.edu> <BLU152-W814CABC63B3BA452802C193200@phx.gbl> <E44893DD4E290745BB608EB23FDDB762073867@008-AM1MPN1-041.mgdnok.nokia.com>
In-Reply-To: <E44893DD4E290745BB608EB23FDDB762073867@008-AM1MPN1-041.mgdnok.nokia.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] codec and connection negotiation
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 10 Aug 2011 12:33:23 -0000

On 8/10/11 3:27 AM, Markus.Isomaki@nokia.com wrote:
> Hi,
>
> Yes, it is important to distinguish between the API and the protocol in
> this discussion. Standardizing the Javascript API is necessary, but
> standardizing the “on the wire” protocol is not. At least one of the
> requirements should be that we leave enough flexibility about the
> protocol.  A service provider should be able to implement/use any
> protocol that does the job required and works with the standard API
> offered by the browsers.  SDP offer/answer could be one of those protocols.

SDP is *not* a protocol - it is a data format.
Offer/answer is, more or less, a protocol. It can, in principle, be used 
with other formats.

However, as things have evolved, there is a strong coupling between the 
SDP data format and the o/a protocol. For instance, IIRC, there are 
various extensions to SDP that come with their own rules for how o/a is 
applied to those pieces.

> The API itself is the critical piece. I’m not sure if there is any
> benefit in tying it to SDP,

Well, at the end of the day, an API must convey the critical data. It 
doesn't necessarily need to encode the data the same way it is encoded 
in SDP, and it doesn't need to convey that data for o/a in the same way 
that SIP does, but it does need to be able to represent the full range 
of SDP and the full semantics of o/a. And it needs to be flexible enough 
to do that as SDP evolves.

> but certainly it should be possible to
> implement SDP offer/answer protocol in Javascript on top of it. That
> could be one requirement for it, and something that could be even proved
> by a real implementation.

Certainly a real implementation is a useful existence proof. But it is 
not a proof of completeness. Completeness will be accomplished by 
defining a full mapping between the API and SDP + o/a.

*One* way to accomplish a complete mapping between the API and the SDP 
representation is to pass complete SDP in the API. Other ways are 
possible, but will be more work to define.

	Thanks,
	Paul

> So, in summary: Avoid strict dependency to SDP, but it must be possible
> to implement SDP offer/answer protocol on top of the standardized API.
>
> Markus
>
> *From:*rtcweb-bounces@ietf.org [mailto:rtcweb-bounces@ietf.org] *On
> Behalf Of *ext Bernard Aboba
> *Sent:* 09 August, 2011 19:19
> *To:* pkyzivat@alum.mit.edu; rtcweb@ietf.org
> *Subject:* Re: [rtcweb] codec and connection negotiation
>
> I think we have to distinguish between the use of SDP in the API versus
> use in signaling.
>
> When you say "attempting to do something like that again", I presume
> that you are referring to an attempt to develop a replacement for SDP
> that would be used on the wire between an RTCWEB implementation and a
> legacy implementation. Given that legacy implementations won't support a
> replacement, it's hard to argue against use of SDP in that context.
>
> However, that doesn't necessarily argue for use of SDP (or something
> semantically equivalent) in the API. The danger we face in adopting SDP
> within the API is we will be saddled with the limitations of SDP while
> not making use of all of its capabilities. We saw hints of this already
> in the IETF 81 discussion -- where questions arose as to whether the
> JSON SDP blob was opaque or editable, how faithful the API is to
> existing SDP usage (including offer/answer, ICE), etc. As a data point,
> I'd note that few if any of the existing Web-based realtime APIs have
> chosen to utilize the SDP format, and that attempts to "profile" SDP
> usage to avoid corner cases have encountered issues, particularly when
> dealing with PSTN interop.
>
>>  Date: Mon, 8 Aug 2011 15:04:58 -0400
>>  From: pkyzivat@alum.mit.edu <mailto:pkyzivat@alum.mit.edu>
>>  To: rtcweb@ietf.org <mailto:rtcweb@ietf.org>
>>  Subject: Re: [rtcweb] codec and connection negotiation
>>
>>  I also have some observations, without conclusions, on this decision:
>>
>>  SDP o/a has some well known limitations. It would be nice if rtcweb was
>>  not saddled with them. For instance, the offer can list multiple codecs,
>>  but the answerer is free to accept more than one. In that case any of
>>  those in both offer and answer can be used. But there are UAs that
>>  support multiple codecs, but only one at a time. O/A doesn't support
>>  that well.
>>
>>  Unfortunately, relaxing the limitations may break interoperation with
>>  non-rtcweb devices. For instance if you have an rtcweb client initiating
>>  a call to a pstn destination, the gateway will likely have the limitation.
>>
>>  Querying for capabilities before initiating a call could, in *some*
>>  cases transcend that incompatibility. But not always. In general it
>>  isn't easy to guarantee that the UA you reach with a query will be the
>>  same one you reach when you try to establish a call. If not, the
>>  capabilities may be wrong.
>>
>>  SDP has needed modernizing for ages. But SDPng went down in flames.
>>  Attempting to do something like that again would probably not be a good
>>  plan for rtcweb.
>>
>>  It might be easier to go with SDP and o/a in order to ease interop, and
>>  at the same time provide a capability query mechanism, also built on SDP
>>  that could be used optionally, with the understanding that it might not
>>  be available in all cases.
>>
>>  Thanks,
>>  paul
>>
>>
>>  On 8/8/11 9:09 AM, Harald Alvestrand wrote:
>>  > Trying to doodle on the opinions (the alternative lists were quite
>>  > useful to clear the mind - I liked them a lot, and will return to them!)
>>  >
>>  > On 08/05/11 20:53, Matthew Kaufman wrote:
>>  >> Now, to follow up on my previous message with a bit of opinion...
>>  >>
>>  >> I think we should not use SDP as the API, and we should not have the
>>  >> browser implementing SDP offer-answer.
>>  >>
>>  >> 1. If SDP offer-answer is all that is available to the Javascript
>>  >> programmer (and server programmer), it becomes very difficult to know
>>  >> what the full capability set is without complex probing. This
>>  >> significantly complicates the building of future innovative
>>  >> applications on top of the browser as platform. Many of the current
>>  >> applications that show off browser capabilities do so by using
>>  >> capabilities that were already present for other reasons, and we can
>>  >> expect the same innovation to occur here, if we provide the tools.
>>  > This may be heretical ... but do we actually need to enumerate all
>>  > capabilities?
>>  > It seems to me that we'll have exactly 2 groups of capabilities:
>>  > - Routine ones, which are generated automagically when saying "I want
>>  > something working"
>>  > - Ones needed to "show off" specific new capabilities
>>  >
>>  > The platforms, which are likely reusing code from outside WebRTC, may
>>  > support many capabilities that are never required for any scenario
>>  > (especially those that have been added over the years to support
>>  > backwards compatibility in very baroque scenarios). Exposing those will
>>  > just add clutter, not add quality.
>>  >
>>  > The "show-offs" will be capable of probing.
>>  >>
>>  >> 2. Using SDP offer-answer has the advantage of reusing all the IETF
>>  >> standards work that occurs to define SDP when a new codec comes along.
>>  >> But it also has the *disadvantage* of having to wait for the IETF to
>>  >> produce these standards, which may be incomplete, or unable to control
>>  >> parameters which are necessary for web applications.
>>  > Hmmm.... since when have people *actually* waited for the IETF process
>>  > to finish before starting to use newly defined capabilities?
>>  > This may argue for looking again at the IANA procedures for SDP, and
>>  > institute something like the "provisional registries" that were
>>  > introduced for email/web.
>>  >>
>>  >> 3. Anything that is missing in SDP (example: forcing the Opus codec to
>>  >> "music" mode for encoding) will still need to be exposed as a
>>  >> Javascript API on the encoder. Thus we end up with a mix of
>>  >> possibly-conflicting settings that are adjusted via the explicit API
>>  >> and the opaque SDP API.
>>  > Won't these be things people want in SDP too? See above.
>>  >>
>>  >> 4. Other work in browsers (like recording camera and microphone to
>>  >> disk) will require the ability to directly control the encoders. If
>>  >> these APIs exist then there will definitely be conflicting settings.
>>  >> What happens if you feed in an SDP answer that requires VP8 encoding
>>  >> and then set the encoder to H.264 mode via the Javascript?
>>  > Transcoding? :-)
>>  > The same problem exists today when trying to use cameras for multiple
>>  > things concurrently.
>>  >>
>>  >>
>>  >> Matthew Kaufman
>>  >> _______________________________________________
>>  >> rtcweb mailing list
>>  >> rtcweb@ietf.org <mailto:rtcweb@ietf.org>
>>  >> https://www.ietf.org/mailman/listinfo/rtcweb
>>  >>
>>  >
>>  > _______________________________________________
>>  > rtcweb mailing list
>>  > rtcweb@ietf.org <mailto:rtcweb@ietf.org>
>>  > https://www.ietf.org/mailman/listinfo/rtcweb
>>  >
>>
>>  _______________________________________________
>>  rtcweb mailing list
>>  rtcweb@ietf.org <mailto:rtcweb@ietf.org>
>>  https://www.ietf.org/mailman/listinfo/rtcweb
>