Re: [rtcweb] Forking & Early Media - Was Re: Minimal SDP negotiation mechanism

Hadriel Kaplan <> Thu, 22 September 2011 22:52 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id C36F211E80C7 for <>; Thu, 22 Sep 2011 15:52:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.528
X-Spam-Status: No, score=-2.528 tagged_above=-999 required=5 tests=[AWL=0.071, BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Rym2dD9T7e0a for <>; Thu, 22 Sep 2011 15:52:54 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 253A511E8098 for <>; Thu, 22 Sep 2011 15:52:53 -0700 (PDT)
Received: from ( by ( with Microsoft SMTP Server (TLS) id; Thu, 22 Sep 2011 18:55:25 -0400
Received: from ([]) by ([]) with mapi id 14.01.0270.001; Thu, 22 Sep 2011 18:55:24 -0400
From: Hadriel Kaplan <>
To: Christer Holmberg <>
Thread-Topic: [rtcweb] Forking & Early Media - Was Re: Minimal SDP negotiation mechanism
Thread-Index: AQHMeXq2MKhYCusi80eyAB0xuXvE5w==
Date: Thu, 22 Sep 2011 22:55:24 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: text/plain; charset="us-ascii"
Content-ID: <>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: AAAAAQAAAWE=
Cc: "" <>
Subject: Re: [rtcweb] Forking & Early Media - Was Re: Minimal SDP negotiation mechanism
X-Mailman-Version: 2.1.12
Precedence: list
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: Thu, 22 Sep 2011 22:52:54 -0000

On Sep 22, 2011, at 3:41 PM, Christer Holmberg wrote:

>> The really hard part is knowing which stream to use/render/send-to, imho.  And putting that decision in the gateway isn't good - the best decider of that is probably the JS in the browser.
> I am not sure whether the JS app would be able to make better decisions than the gateway - and I've never seen a SIP client which would allow the user to choose which early media to listen to. 

But these aren't phone-call SIP clients - they're browsers.  They can show the multiple video streams in separate windows, for example.  They can show multiple chat sessions per fork too.  Or they may just pick the most recent one and only display it.  That's the nice thing about JS: the JS developer decides what the user experience model is like, based on what type of application/service they're providing; as opposed to the IETF/W3C choosing for them.

> In my opinion the best thing would be if we could come up with some common BCP, e.g. saying that media associated with the early dialog on which the latest SDP answer was received is considered "active", and will be presented to the user etc. 

That's not the whole problem though.  Suppose it only forked to two agents: Robert and Bob.  Robert sent a 18x with SDP first and then Bob.  So the rtcweb browser starts off using Robert's, does ICE with Robert, etc., and then get's Bob's and starts using Bob's because it's fresher.  Now Robert accepts the connection and/or Bob rejects it; how does the rtcweb browser revert to using Robert?  

If the answer is "well the rtcweb browser had to keep state information about Robert's SDP/media info as well as about Bob's", then we're back to the tricky part about PeerConnection having multiple media peers when it only expected one; if we can solve that, then we've solved the basic issue at hand. (I think... or I need more coffee)