Re: [rtcweb] ROAP Example Application

Eric Rescorla <ekr@rtfm.com> Fri, 21 October 2011 14:22 UTC

Return-Path: <ekr@rtfm.com>
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 673F621F8C80 for <rtcweb@ietfa.amsl.com>; Fri, 21 Oct 2011 07:22:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.963
X-Spam-Level:
X-Spam-Status: No, score=-102.963 tagged_above=-999 required=5 tests=[AWL=0.014, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1, USER_IN_WHITELIST=-100]
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 qF5I8w8HLOkl for <rtcweb@ietfa.amsl.com>; Fri, 21 Oct 2011 07:22:44 -0700 (PDT)
Received: from mail-vx0-f172.google.com (mail-vx0-f172.google.com [209.85.220.172]) by ietfa.amsl.com (Postfix) with ESMTP id 3AB3821F8C7D for <rtcweb@ietf.org>; Fri, 21 Oct 2011 07:22:44 -0700 (PDT)
Received: by vcbfo1 with SMTP id fo1so4056624vcb.31 for <rtcweb@ietf.org>; Fri, 21 Oct 2011 07:22:43 -0700 (PDT)
Received: by 10.52.76.199 with SMTP id m7mr2524112vdw.63.1319206963565; Fri, 21 Oct 2011 07:22:43 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.220.161.20 with HTTP; Fri, 21 Oct 2011 07:22:03 -0700 (PDT)
In-Reply-To: <4EA17E25.9080208@skype.net>
References: <EED7DD83-EFDF-43B3-B9EE-7D28D057FA37@cisco.com> <4EA11552.3010507@skype.net> <4EA150BC.9040605@alvestrand.no> <4EA17E25.9080208@skype.net>
From: Eric Rescorla <ekr@rtfm.com>
Date: Fri, 21 Oct 2011 07:22:03 -0700
Message-ID: <CABcZeBPusnBUUU9Ry_Mcn98BWP_YEEbLn3EjrUeOs15ibF_X2w@mail.gmail.com>
To: Matthew Kaufman <matthew.kaufman@skype.net>
Content-Type: text/plain; charset="ISO-8859-1"
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] ROAP Example Application
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: Fri, 21 Oct 2011 14:22:45 -0000

On Fri, Oct 21, 2011 at 7:13 AM, Matthew Kaufman
<matthew.kaufman@skype.net> wrote:
> On 10/21/11 4:00 AM, Harald Alvestrand wrote:
>>
>> On 10/21/2011 08:46 AM, Matthew Kaufman wrote:
>>>
>>> On 10/20/11 7:08 PM, Cullen Jennings wrote:
>>>>
>>>> I liked Dan Yorks rant on what we need and it made me want to show some
>>>> simple code using an interface like the current W3C PeerConnection API along
>>>> with ROAP. Assuming the ROAP objects got passed in and out of the Peer
>>>> Connection object, here is a short little example I copied that shows how
>>>> simple it is to write a web application that sets up an audio / video
>>>> connection between two browsers. It assumes a simple web server that that
>>>> can pass messages from alice to bob and visa versa. Both alice and bob just
>>>> short poll the web server to get messages from their mailbox and post
>>>> messages to the others mailbox. The web server does not transform the
>>>> messages in any way. Clearly this example is wrong in some ways, lacks
>>>> authentication, and various error handling but I think it illustrates the
>>>> basics of the interfaces.
>>>>
>>>>
>>>
>>> Thanks for the example.
>>>
>>> However, in addition to illustrating the basics, it also illustrates that
>>> ICE parameters and codec SDP parameters are now inextricably intertwined
>>> within this proposal, where in fact there is a good argument that not only
>>> should they be kept separate but that in fact they are the responsibility of
>>> different objects within the JavaScript API.
>>
>> As I've noted before, they are more entangled than one might like them to
>> be;
>
> This is just an argument that RTP is actually a poor choice as well, but I'm
> afraid it is too late for that.
>
>> if we don't support the extension to use a single RTP session, we don't
>> know how many ICE sessions we need to set up until we know at least how many
>> top level media types we want to support. If we want to support multiple RTP
>> sessions for other reasons, we need similar control of the number of ICE
>> sessions set up.
>
> But none of these examples actually shows that there's a requirement to
> combine the two into a single blob.
>
> An easy solution to these examples, for instance, would be to exchange the
> codec-choosing blobs *first* and then, based on the results, examine the
> "encoder" and "decoder" objects to see how many transport streams they need
> attached. Or, even easier, when you wire the media encoding/decoding objects
> to the transport object, the transport object can know what it will need to
> be transporting and, once it receives an internal event that the codec and
> RTP parameters have been selected, it can fire an event to JavaScript
> containing the ICE setup blob.

Note that Jingle in some cases does sort of the opposite of this:
The caller offers combined media encoding/decoding objects  and
transport objects (in a session-initiate) and the callee sends
back only transport objects (in a transport-info) and then the
combined media encoding objects and transport objects
(in a session-accept).

XEP-0167 has a good example of this.

-Ekr