W3C home > Mailing lists > Public > public-webrtc@w3.org > July 2013

Re: setting bandwidth

From: Silvia Pfeiffer <silviapfeiffer1@gmail.com>
Date: Fri, 26 Jul 2013 13:24:52 +1000
Message-ID: <CAHp8n2k5mmydL-9WLusw114TVHfK4sZYpZtfdPX7tPN1Uq-45Q@mail.gmail.com>
To: cowwoc <cowwoc@bbs.darktech.org>
Cc: public-webrtc <public-webrtc@w3.org>
As it turns out there are three possibilities as Cullan brought up the
stats API.

I'll need to think more deeply about the advantages/disadvantages of each
is all I meant.

Silvia.
On 26 Jul 2013 13:22, "cowwoc" <cowwoc@bbs.darktech.org> wrote:

> Silvia,
>
>     I was referring to http://lists.w3.org/Archives/**
> Public/public-webrtc/2013Jul/**0601.html<http://lists.w3.org/Archives/Public/public-webrtc/2013Jul/0601.html>where you wrote "Both are probably necessary actually." Didn't you mean to
> imply that we'll probably need timers on both levels? I thought you meant
> that we'll need a single generic threshold for the internal timer, and then
> a different user timer depending on what property was changed.
>
>     Anyway, my main interest here is the use of callbacks and fence
> conditions. The suggestion for a timer came from Kiran. We can start
> without it and add one as needed.
>
> Gili
>
> On 25/07/2013 10:12 PM, Silvia Pfeiffer wrote:
>
>> That's not what I said. I don't know what the efficiency implications
>> are and I just think it needs more analysis. Somebody needs to sit
>> down and at least on paper think through the implications of each of
>> these choices with some well-informed assumptions about what an
>> application would do. Which approach would require more interrupts?
>>
>> I don't have time right now, but maybe you can have a go?
>>
>> Cheers,
>> Silvia.
>>
>> On Thu, Jul 25, 2013 at 11:05 PM, cowwoc <cowwoc@bbs.darktech.org> wrote:
>>
>>>      Silvia is right: we need timeout handling inside the Constraints
>>> API or
>>> user callback.
>>>
>>> Gili
>>>
>>>
>>> On 24/07/2013 7:43 PM, Silvia Pfeiffer wrote:
>>>
>>> That instead requires the JS to constantly poll the stats objects for
>>> updated information. I'm not sure that's more efficient approach than a
>>> callback.
>>>
>>> Silvia.
>>>
>>> On 25 Jul 2013 08:00, "Cullen Jennings (fluffy)" <fluffy@cisco.com>
>>> wrote:
>>>
>>>>
>>>> Given the general focus on moving as much state as possible out of the
>>>> browser and into JS, it seems like it would be better to just do things
>>>> like
>>>> timers and level monitors and such in JS and just have them query the
>>>> stats
>>>> objects.
>>>>
>>>>
>>>> On Jul 24, 2013, at 9:23 AM, Göran Eriksson AP
>>>> <goran.ap.eriksson@ericsson.**com <goran.ap.eriksson@ericsson.com>>
>>>> wrote:
>>>>
>>>>
>>>>> 24 jul 2013 kl. 17:05 skrev "Kiran Kumar" <g.kiranreddy4u@gmail.com>:
>>>>>
>>>>>  Dear Piranna,
>>>>>>
>>>>>> If the network state is not stable, and if the bandwidth levels are
>>>>>> oscillating at the border. (like at around 1Mbit as stated in previous
>>>>>> example). There is a chance for raising more number of call backs
>>>>>> with in
>>>>>> less time and may result in call-back congestion
>>>>>> (http://forums.electricimp.**com/discussion/176/possible-**
>>>>>> callback-congestion-causes-**hang/p1<http://forums.electricimp.com/discussion/176/possible-callback-congestion-causes-hang/p1>
>>>>>> ).
>>>>>> Maintaining some window timer at lower levels will reduce this
>>>>>> problem.
>>>>>>
>>>>>> According to Congestion Manager RFC (RFC 3124),
>>>>>> Callback-based transmission, and other call back based implementations
>>>>>> like TCP congestion control algorithms are all implementing timers at
>>>>>> the
>>>>>> lower layers
>>>>>>   only.
>>>>>>
>>>>>>
>>>>>>  Good point. I had in mind waiting with pushing the timer to the
>>>>> browser
>>>>> until we have more experience on real use cases but this was a
>>>>> compelling
>>>>> argument for doing it already know.
>>>>>
>>>>> Thanx
>>>>>
>>>>>
>>>>>  Thanks,
>>>>>> Kiran.
>>>>>>
>>>>>>
>>>>>> On Wed, Jul 24, 2013 at 7:05 PM, piranna@gmail.com <piranna@gmail.com
>>>>>> >
>>>>>> wrote:
>>>>>> It's not bad to have the timers inside the API, but I would wait until
>>>>>> more clear use cases apear.
>>>>>>
>>>>>> 2013/7/24 Kiran Kumar <g.kiranreddy4u@gmail.com>:
>>>>>>
>>>>>>> Dear Goran Eriksson/Piranna,
>>>>>>>
>>>>>>> Yes, It can be done by application too.
>>>>>>> But maintaining such timer in the lower level, might be more
>>>>>>> appropriate. It
>>>>>>> will reduce unnecessary call backs.
>>>>>>> (Even though this is may not be the perfect example, some signaling
>>>>>>> protocols like SIP are maintaining their timers in the lower layers
>>>>>>> instead
>>>>>>> of application layer).
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Kiran.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Jul 24, 2013 at 6:47 PM, Göran Eriksson AP
>>>>>>> <goran.ap.eriksson@ericsson.**com <goran.ap.eriksson@ericsson.com>>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> 24 jul 2013 kl. 15:04 skrev "Kiran Kumar"
>>>>>>>> <g.kiranreddy4u@gmail.com>:
>>>>>>>>
>>>>>>>> This seems to be nice Idea to send callbacks.
>>>>>>>> But I suggest to add some timer on top of it. Like If the bandwidth
>>>>>>>> drops
>>>>>>>> below a certain minimum level, then it should wait for a predefined
>>>>>>>> window
>>>>>>>> time, if the bandwidth is still less than the minimum limit, then
>>>>>>>> only it
>>>>>>>> should send a call back.
>>>>>>>> Because there are many network scenarios, that affects the bandwidth
>>>>>>>> for a
>>>>>>>> minute period of time, and recover to its normal state soon.
>>>>>>>>
>>>>>>>>
>>>>>>>> That is an option but is that not up to the application to have a
>>>>>>>> timer, a
>>>>>>>> counter or what ever is needed to decide on an action?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Kiran.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Jul 24, 2013 at 11:16 AM, cowwoc <cowwoc@bbs.darktech.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> On 24/07/2013 12:26 AM, Cullen Jennings (fluffy) wrote:
>>>>>>>>>
>>>>>>>>>> On Jul 18, 2013, at 6:21 AM, Stefan Håkansson LK
>>>>>>>>>> <stefan.lk.hakansson@ericsson.**com<stefan.lk.hakansson@ericsson.com>>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>  2. Setting BW for a MediaStreamTrack
>>>>>>>>>>> ------------------------------**------
>>>>>>>>>>> Why: There are situations where a suitable start bit-rate can be
>>>>>>>>>>> known,
>>>>>>>>>>> or guessed. If this knowledge could be used the perceived
>>>>>>>>>>> end-user
>>>>>>>>>>> quality could be improved (since a higher quality is available
>>>>>>>>>>> from
>>>>>>>>>>> start since there is no need to start at a really low bit-rate).
>>>>>>>>>>>
>>>>>>>>>>> There are also situations where it could be beneficial if min and
>>>>>>>>>>> max
>>>>>>>>>>> bit-rates to be used can be influenced.
>>>>>>>>>>>
>>>>>>>>>>> * The app developer may know that below a certain bit-rate the
>>>>>>>>>>> quality
>>>>>>>>>>> is so bad that the browser could stop sending it, and likewise
>>>>>>>>>>> there
>>>>>>>>>>> may
>>>>>>>>>>> be knowledge about a bit-rate above which the quality does not
>>>>>>>>>>> improve.
>>>>>>>>>>>
>>>>>>>>>>> * There are situations when there is an agreement between the
>>>>>>>>>>> service
>>>>>>>>>>> provider and the connectivity provider about min and max
>>>>>>>>>>> bit-rates.
>>>>>>>>>>>
>>>>>>>>>>> What: Again, this depends on how much BW info is included in the
>>>>>>>>>>> SDP.
>>>>>>>>>>> But my understanding is that there should be some (since RTCP
>>>>>>>>>>> rates to
>>>>>>>>>>> be used are based on this info IIUC).
>>>>>>>>>>>
>>>>>>>>>> I agree and think we need to a couple things here. One is setting
>>>>>>>>>> the
>>>>>>>>>> limits for the bandwidth but the  other is using the stats
>>>>>>>>>> interface to read
>>>>>>>>>> the current bandwidth being used.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>      A slightly related but higher-level proposal: replace
>>>>>>>>> Mandatory
>>>>>>>>> constraints with Optional constraints that act as Fence conditions.
>>>>>>>>>
>>>>>>>>>      It works like this: You specify a bunch of optional
>>>>>>>>> constraints
>>>>>>>>> and a
>>>>>>>>> callback to be invoked when a Constraint is violated. For example,
>>>>>>>>> I would
>>>>>>>>> ask for a bandwidth between 1Mbit and 2Mbit. If bandwidth drops
>>>>>>>>> below the
>>>>>>>>> minimum, the callback gets invoked. I then reduce the video
>>>>>>>>> resolution, or
>>>>>>>>> turn off audio, or... whatever the application wants... and set new
>>>>>>>>> min/max
>>>>>>>>> bandwidth bounds. If the maximum bound is surpassed, I know I can
>>>>>>>>> afford to
>>>>>>>>> increase the video resolution so I do so. And so on.
>>>>>>>>>
>>>>>>>>>      Assuming I'm wrong (you need mandatory constraints) I still
>>>>>>>>> think
>>>>>>>>> adding this fence behavior puts control in the right place. The
>>>>>>>>> application
>>>>>>>>> is uniquely positioned to decide what happens when the connection
>>>>>>>>> capabilities change.
>>>>>>>>>
>>>>>>>>> Gili
>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>>> --
>>>>>> "Si quieres viajar alrededor del mundo y ser invitado a hablar en un
>>>>>> monton de sitios diferentes, simplemente escribe un sistema operativo
>>>>>> Unix."
>>>>>> – Linus Tordvals, creador del sistema operativo Linux
>>>>>>
>>>>>>
>>>>
>
Received on Friday, 26 July 2013 03:25:19 UTC

This archive was generated by hypermail 2.3.1 : Monday, 23 October 2017 15:19:35 UTC