Re: [rtcweb] Interaction between MediaStream API and signaling

Randell Jesup <> Sat, 14 April 2012 02:26 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id CB7C611E809F for <>; Fri, 13 Apr 2012 19:26:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.031
X-Spam-Status: No, score=-2.031 tagged_above=-999 required=5 tests=[AWL=0.568, BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id FZkmM929zAx3 for <>; Fri, 13 Apr 2012 19:26:50 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id A1BAE11E809D for <>; Fri, 13 Apr 2012 19:26:21 -0700 (PDT)
Received: from ([] helo=[]) by with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from <>) id 1SIsgu-0005dm-Mr for; Fri, 13 Apr 2012 21:26:20 -0500
Message-ID: <>
Date: Fri, 13 Apr 2012 22:22:27 -0400
From: Randell Jesup <>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20120312 Thunderbird/11.0
MIME-Version: 1.0
References: <> <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname -
X-AntiAbuse: Original Domain -
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain -
Subject: Re: [rtcweb] Interaction between MediaStream API and signaling
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: Sat, 14 Apr 2012 02:26:51 -0000

A reply I hadn't sent...

On 4/2/2012 9:55 AM, Stefan Hakansson LK wrote:
> On 04/02/2012 05:16 AM, Justin Uberti wrote:
>>>> Yes. Just like in SIP. And so when you send an OFFER (or
>> modified
>> re-OFFER), you must be ready to receive data per that offer
>> even if no
>> ANSWER has been received - just like in SIP. And if its a
>> re-offer, you
>> need to accept the old, and accept the new (though you could
>> probably
>> use reception of obviously new-OFFER media to turn off
>> decoding/rendering old-OFFER in preparation for the ANSWER).
>> The flip side of this is the responder has to infer when the
>> sender
>> switches over to the result of the ANSWER from the media.
>> For example:
>> A B
>> <--- H.261 --->
>> re-OFFER(VP8) --->
>> <-- ANSWER(VP8) (delayed in reception)
>> <-----------VP8 (A should infer that B ANSWERed
>> and accepted VP8)
>> ----------> H.261
>> <-- ANSWER(VP8) (received)
>> <--------VP8----------> (B should infer by reception of
>> VP8 that ANSWER
>> was received)
>> (Personally, I hate inferences, but without a 3 (or 4) way
>> handshake,
>> you have to). If you switches of codecs are staged, then
>> this isn't
>> (much) of a problem. Either leave old codec on the list, or
>> leave it on
>> the list until accept, and then re-OFFER to remove the
>> un-used codec.

[ Stefan responded: ]

>> I think I understand what you mean, and this would work fine as
>> long as
>> you just switch codecs that are used in already set-up MediaStreams.

Ah, but how do you know which stream the packets are for:
in bundle, the packets are designated by SSRC, but without the ANSWER 
you can't figure it out, and on ANSWER the SSRCs could change.  Or if 
you change from non-bundle to bundle (admittedly, it's unclear when one 
would do so, but we're discussing a protocol, and that's not disallowed 
I assume).

We have to consider, since we're designing a protocol, not only the 
preferred and likely negotiations, but all possible negotiations. 
Painful, but true.

>> This may have been a very bad example. Probably you can tell them
>> apart on the SSRC. But even so, the A browser won't know what the
>> VP8 stream (if it has an unknown SSRC) represents without receiving
>> the ANSWER.
>> I think this is only an issue if you decide to add streams in the
>> ANSWER. But even so, eventually the ANSWER arrives and you can start
>> demuxing/decoding appropriately.
> Yes, I agree to that it is only an issue if you add streams in the
> answer. Perhaps it is a model we should move away from - but that is the
> model used in the basic examples of the JSEP draft.

Even if you don't add streams you could change the Bundle; or the SSRC's 
could change messing up demux until ANSWER, etc.

> I think there is a risk of clipping if you start sending immediately,
> but can only start demuxing/decoding once an answer is received.

I would agree.

Randell Jesup