Re: [rtcweb] New Draft - WebRTC JS Object API Model

Bossiel thioriguel <> Tue, 02 July 2013 21:36 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 1219911E80E0 for <>; Tue, 2 Jul 2013 14:36:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.598
X-Spam-Status: No, score=-2.598 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id s3iQEdyizVxN for <>; Tue, 2 Jul 2013 14:36:36 -0700 (PDT)
Received: from ( []) by (Postfix) with SMTP id 2F4F011E80E6 for <>; Tue, 2 Jul 2013 14:36:35 -0700 (PDT)
Received: from [] by with NNFMP; 02 Jul 2013 21:36:33 -0000
Received: from [] by with NNFMP; 02 Jul 2013 21:36:33 -0000
Received: from [] by with NNFMP; 02 Jul 2013 21:36:33 -0000
X-Yahoo-Newman-Property: ymail-3
Received: (qmail 67102 invoked by uid 60001); 2 Jul 2013 21:36:33 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=s1024; t=1372800993; bh=e6IsVempR/kZjXpvjbXeivOUkwocGwxWnHbkYOOgrDA=; h=X-YMail-OSG:Received:X-Rocket-MIMEInfo:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=CwPWcCwE+krEk8QstFQ04GZ9V92m0yb2JhFaZbCb2O9sdSn/8b49C7jgbLplyw24LRUYFLKKW9NvlxVG8UtUmQtK3QNzpSgW6JhQTQdlw2diJdeijQJE5se+yWeqIaoV5749rtVxLDmwMIkFl7MCmD7FBS2WsHn7r8SCLxlLeXc=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024;; h=X-YMail-OSG:Received:X-Rocket-MIMEInfo:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=FtiBTWZFVqmPVscAANKFlvEU53QzXeft9hXn5ItBJQj9oRjtT9LHeaHnKoyU765+X0KHxkokGE9WccMXwE928yJDhJXKJGCqCh+xExyyt4sLVRL9zO0zKIPTxLG3tTXpDqIVZgdVzrOa0fsXcewfgsmcXh5p+X1RA+V7iBqbF5s= ;
X-YMail-OSG: BHLrxXMVM1lOoOes_Tk6OL7wG.QyfJvwwJ.sCp7dqEAcOk3 p.8_8otd2fE5jIf5XI5qz
Received: from [] by via HTTP; Tue, 02 Jul 2013 22:36:32 BST
X-Rocket-MIMEInfo: 002.001, WW91IGhhdmUgc2FpZDogIkZvciBleGFtcGxlLCB0aGUgb25seSB0aGluZyB0aGF0IHNob3VsZCBiZSBuZWVkZWQgaXMgYSBmbGFnIHRoYXQgc2F5cyBGRUMgaXMgYXZhaWxhYmxlIGluIHRoZSBzaWduYWxpbmcgZm9yIHRoZSB0aGUgUlRQIGxheWVyLsKgIgoKSSBkb24ndCByZWFsbHkgdGhpbmsgYW5kIHRoaXMgaXMgd2h5IEkgYWxyZWFkeSBzYWlkIHRoZSBqb2IgaXMgTVVDSCBoYXJkZXIgdGhhbiB5b3UgdGhpbmsuCi0gWW91IGFsc28gbmVlZCB0byBzYXkgd2hpY2gga2luZyBvZiBGRUMgeW91IHdhbnQgdG8BMAEBAQE-
X-Mailer: YahooMailWebService/
References: <> <> <> <> <> <> <> <> <> <> <> <> <> <>
Message-ID: <>
Date: Tue, 02 Jul 2013 22:36:32 +0100
From: Bossiel thioriguel <>
To: Robin Raymond <>, Tim Panton <>
In-Reply-To: <>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="862858767-1579880068-1372800992=:66449"
Cc: "" <>, "" <>
Subject: Re: [rtcweb] New Draft - WebRTC JS Object API Model
X-Mailman-Version: 2.1.12
Precedence: list
Reply-To: Bossiel thioriguel <>
List-Id: Real-Time Communication in WEB-browsers working group list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 02 Jul 2013 21:36:41 -0000

You have said: "For example, the only thing that should be needed is a flag that says FEC is available in the signaling for the the RTP layer. "

I don't really think and this is why I already said the job is MUCH harder than you think.
- You also need to say which king of FEC you want to use. Let's say it's ulpfec (RFC 5109)
If we are using ulpfec:
A- It is allowed to send FEC packets in the same stream as the protected one or not.
B- When FEC uses different stream then, it is possible to secure it or not regardless the protect stream is secure or not. (e.g SRTP/FEC and RTP/Protected stream). All combinations are possible. When both are encrypted they even could use different keys (if different channels).
C- FEC could be bundled with RED or not
D- When FEC use different channel then, it could use different rate than the protected stream if bundled with RED
E- Say which media (audio, video, application...) and stream you want to protect
F-Whether only one level of protection will be used ("onelevelonly" parameter)
G- etc etc...

SDP already allow all these use-cases. Depending on the  implementations, signalling [A-F] could be mandatory.

Good luck...

 De : Robin Raymond <>
À : Tim Panton <> 
Cc : "" <> 
Envoyé le : Mardi 2 juillet 2013 14h22
Objet : Re: [rtcweb] New Draft - WebRTC JS Object API Model

You are absolutely, there are  a lot of details. But splitting the 
details into logical separate components reduces the overall complexity 
greatly. Plus many of those details are only needed because of a lack 
ability to properly describe the concept of "streams" at the lower level
 RTP layer (which really only supports tracks at best, and lacks 
sufficient details to coordinate any information between them to 
reassembly remotely as a "stream"). So we are left in a situation where 
the high layers must coordinate a lot of information to be capable of 
reassembling the streams when they really should be just negotiating the
 capabilities of the RTP layer itself.

For example, the only thing that should be needed is a flag that says 
FEC is available in the signaling for the the RTP layer. If it is set 
then that would imply the engine supports this feature and thus FEC 
streams may be created by the sending party. Alas, because RTP lacks 
sufficient depth for such concepts like FEC, you have to signal it. RTP 
doesn't even have enough information to reassemble tracks into stream, 
let allow do things like FEC between them.

Having said that, by making a scoped object that understands there is 
some definition of what a stream means needs to be describes, but 
perhaps that the "future' may not require such crazy definitions like 
all the stream/ssrc/track mappings, it allows for a short/long-term 
temporary situation where stream definitions are passed until we are 
able move to a model where that is no longer needed. When a theoretical 
next-gen RTP transport is capable of sending entire streams and 
reassembling them without explicit signaling from an upper layer, we can
 stop defining all that mapping stuff in signaling and remove that 

Basically, it's about scoping the objects, and limiting the requirements
 needed to exchange per object, and defining exactly what is 
expected/required in those definitions and allowing for future 
alternative objects that could replace current ones (if they should 
become available). The other important aspect is removing the definition
 how this information must be coordinated and exchanged to allow for a 
variety of signaling scenarios and alternative state machines. And 
keeping it relatively simple is important for the simple use cases too 
so the burden is low. We are well on our way to producing such a draft 
in short order that does exactly that.

All we ask is that people keep an open mind. We have no desire to 
prevent SDP or offer/answer, just not mandate its usage as an API model.

Make sense?


Tim Panton
>2 July, 2013 4:31 AM
>On 2 Jul 2013, at 08:21, Stefan Håkansson LK wrote:
>Conversely we 
shouldn't underestimate (again) the difficulty of describing all the
>nitty gritty details in SDP. 
>I have the sense that 
we may have pushed the flexibility of SDP beyond it's elastic limit.
>I think that over the last year we have discovered that a dynamically 
programmable browser
>is a fundamentally different beast from a deskphone and that what suits one may well not suit the other.
 mailing list
rtcweb mailing list