Re: [rtcweb] Alternative Proposal for Dynamic Codec Parameter Change (Was: Re: Resolution negotiation - a contribution)

Magnus Westerlund <> Wed, 25 April 2012 14:35 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 70EF121F874C for <>; Wed, 25 Apr 2012 07:35:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -106.133
X-Spam-Status: No, score=-106.133 tagged_above=-999 required=5 tests=[AWL=0.116, BAYES_00=-2.599, HELO_EQ_SE=0.35, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id trA4-2K0F0NE for <>; Wed, 25 Apr 2012 07:35:41 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 5540B21F86C2 for <>; Wed, 25 Apr 2012 07:35:41 -0700 (PDT)
X-AuditID: c1b4fb30-b7b07ae000006839-af-4f980bbc1736
Authentication-Results: x-tls.subject="/CN=esessmw0191"; auth=fail (cipher=AES128-SHA)
Received: from (Unknown_Domain []) (using TLS with cipher AES128-SHA (AES128-SHA/128 bits)) (Client CN "esessmw0191", Issuer "esessmw0191" (not verified)) by (Symantec Mail Security) with SMTP id C5.EB.26681.CBB089F4; Wed, 25 Apr 2012 16:35:40 +0200 (CEST)
Received: from [] ( by ( with Microsoft SMTP Server id; Wed, 25 Apr 2012 16:35:38 +0200
Message-ID: <>
Date: Wed, 25 Apr 2012 16:35:18 +0200
From: Magnus Westerlund <>
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120420 Thunderbird/12.0
MIME-Version: 1.0
To: Justin Uberti <>
References: <> <> <>
In-Reply-To: <>
X-Enigmail-Version: 1.4.1
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Brightmail-Tracker: AAAAAA==
Cc: "" <>
Subject: Re: [rtcweb] Alternative Proposal for Dynamic Codec Parameter Change (Was: Re: Resolution negotiation - a contribution)
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: Wed, 25 Apr 2012 14:35:42 -0000

On 2012-04-25 05:20, Justin Uberti wrote:
> On Tue, Apr 24, 2012 at 10:25 AM, Magnus Westerlund
> < <>>
> wrote:
>     A) Using COP and using SDP based signaling for the dynamic changes are
>     two quite different models in relation to how the interaction happens.
>     For COP this all happens in the browser, normally initiated by the
>     browser's own determination that a COP request or notification is
>     needed. Harald's proposal appears to require that the JS initiate a
>     renegotiation. This puts a requirement on the implementation to listen
>     to the correct callbacks to know when changes happens, such as window
>     resize. To my knowledge there are not yet any proposals for how the
>     browser can initiate a JSEP renegotiation.
> Maybe I misunderstand what you are saying, but the application will
> definitely know when the browser size changes, and can then trigger a
> JSEP renegotiation by calling createOffer and shipping it off.

Yes, they can but that requires them to write code to do this. With COP
the browser can do it and it works well for all applications, not only
the ones that have implementors that are aware of the need to do this.

I am proposing a mechanism that makes the default behavior if you care
nothing about controlling or optimizing this behavior in your JS to be
good. In addition JS that wants to control it can affect the behavior
through generic mechanisms, such as controlling the video element. And
if clear need is shown and some functionality is missing, W3C can create
an API to provide explicit control.

> I have the opposite concern - how can the browser know when the
> application makes a change, for instance to display a participant in a
> large view versus a small view? This may be possible if using a <video/>
> for display, but I don't think it will be possible when using WebGL for
> rendering, where the size of the view will be dictated only by the
> geometry of the scene.

What I understand from my colleagues is that all rendering of video have
to go through a video element, even if not displayed directly. Thus the
application can control the size of the video element used and possibly
consumed by WebGL to be included in rendering. Thus the application will
have control over this even when COP is being used.

Can you be more specific on any particular usage that you think would
have issues?

>     But I am worried that using SDP and with an API that requires the
>     application to listen for triggers that could benefit from a codec
>     parameter renegotiation. This will likely only result in good behavior
>     for the JS application implementors that are really good and find out
>     what listeners and what signaling tricks are needed with JSEP to get
>     good performance. I would much rather prefer good behavior by default in
>     simple applications, i.e. using the default behavior that the browser
>     implementor have put in.
> The issue here is that this behavior needs to be sufficiently specified,
> or else we will have many different behaviors, none of which can be
> fully overridden by the app. I worry this will make life hard for people
> trying to develop sophisticated apps.

I agree that it needs to be clearly specified. But COP appears to be
less prone to complete failures by using target values. Then at least it
will receive video that can be used, even if not optimal. imageattr can
result in failures in the negotiation requiring at minimal a second
round potentially no agreed on acceptable resolution then that is
clearly sub-optimal. That is even without considering involving JS
mainipulating this.


Magnus Westerlund

Multimedia Technologies, Ericsson Research EAB/TVM
Ericsson AB                | Phone  +46 10 7148287
Färögatan 6                | Mobile +46 73 0949079
SE-164 80 Stockholm, Sweden| mailto: