- From: cowwoc <cowwoc@bbs.darktech.org>
- Date: Sat, 27 Jul 2013 12:40:51 -0400
- To: Martin Thomson <martin.thomson@gmail.com>
- CC: Kiran Kumar <g.kiranreddy4u@gmail.com>, Silvia Pfeiffer <silviapfeiffer1@gmail.com>, public-webrtc <public-webrtc@w3.org>
- Message-ID: <51F3F813.5010904@bbs.darktech.org>
On 27/07/2013 11:58 AM, Martin Thomson wrote:
> On 25 July 2013 21:24, Kiran Kumar <g.kiranreddy4u@gmail.com> wrote:
>> The timer implementation I suggested, is to avoid the error condition that
>> can arise as a result of Gili's proposal callback API.
> Unfortunately, having a specific timer-based constraint will cause
> problems. Different browsers are likely to implement very different
> rate control mechanisms, as we have already seen with the video
> comparison tests (in RTCWEB). The time periods over which bandwidth
> is controlled and how rate control is implemented are intimately tied.
> What this sort of mechanism is likely to do is force applications to
> learn about the intricate detail of each browser (probably using user
> agent sniffing techniques) in order to control the bandwidth consumed.
>
> In some respects, Cullen's proposal is elegant, but I think that we
> really need a mechanism that effectively just sets the b= line in SDP.
> Note that this doesn't necessary have to be negotiated as long as the
> number that is set is lower than the negotiated value. However, for
> consistency purposes, I'd probably just make this a constraint on
> createOffer and maybe createAnswer, which would force the use of
> setLocalDescription etc...
>
> Also, to anyone considering a minimum value for a bandwidth
> constraint. There is no way that this would ever be a good idea. The
> browser will have to respect the congestion signals it receives and
> reduce bandwidth accordingly. Allowing an application to force a
> minimum rate would allow bad actors to generate congestion on the
> Internet. Besides, good codecs encode still images and silence at
> near zero rates during normal operation, we wouldn't want to prevent
> that. Minimum target quality levels are something else, of course.
Martin,
This is precisely why I believe users should be able to specify "fences"
and callbacks. There are a lot of cases where the application knows
better than the browser what should happen when a fence is crossed.
Here is my use-case for minimum bandwidth:
* I'm running an application that requires 1080p video. A lower video
resolution is unacceptable. It is my job to guarantee the existence
of a 3MBit synchronous pipe. If, for whatever reason something goes
wrong, I expect to be able to handle the failure condition (i.e. the
application should decide, not the browser).
* Each fence condition (congestion, mute, etc) would get handled
differently by the application. In the case of congestion, I might
kill the video feed altogether or display an error message and
terminate the call. In the case of mute, the application could avoid
a fence condition by enabling video mute and changing the minimum
bandwidth to zero at the same time. When un-muting, it would restore
the minimum bandwidth fence.
* Practically speaking: the current behavior (assuming minimum
bandwidth is zero) results in very poor video quality during the
first minute the video session begins. Applications that use 1080p
need to wait a minute for the session to "warm up" before they can
conduct any meaningful dialog. Even if this time were reduced to 10
seconds it would be unacceptable. I expect an immediate sharp video
experience.
Gili
Received on Saturday, 27 July 2013 16:41:43 UTC