New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 596059 link

Starred by 2 users

Issue metadata

Status: Archived
Owner:
Closed: May 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

WebRTC Jitter Buffer Does Not Expand Enough

Reported by benweeke...@gmail.com, Mar 18 2016

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36

Example URL:
Apprtc or other WebRTC service

Steps to reproduce the problem:
1.  Setup a WebRTC Call with 2 or more people.
2. Add jitter > 600ms to the client receiving audio
3. Speak in to the client sending audio.

What is the expected behavior?
All the audio should be heard.

What went wrong?
The audio will sound bad with much missing

Did this work before? N/A 

Is it a problem with Flash or HTML5? HTML5

Does this work in other browsers? N/A 

Chrome version: 49.0.2623.87  Channel: stable
OS Version: OS X 10.10.5
Flash Version: Shockwave Flash 21.0 r0

If it was possible to optionally specify a larger maximum jitter buffer width then the audio could be played.

A solution was suggested by hlundin here
https://bugs.chromium.org/p/chromium/issues/detail?id=587476#c13

There is a "latency" capability defined in http://w3c.github.io/mediacapture-main/getusermedia.html#media-track-capabilities. The following property is the one referenced:

(double or DoubleRange) latency
 

Comment 1 by meh...@chromium.org, Mar 18 2016

Components: Blink>WebRTC
Cc: hta@chromium.org tlegrand@chromium.org hlundin@chromium.org
Components: -Blink>WebRTC Blink>WebRTC>Audio
Status: Available (was: Unconfirmed)
I leave it up to one of hlundin/tlegrand/hta to find an appropriate owner and timeframe for implementation.

Comment 3 by hta@chromium.org, Mar 21 2016

Did I understand previous discussion to say that we've actually implemented configurable max jitter buffer on the WebRTC library interface, so that we "just" need a double-valued constraint in the Blink API in order to enable it?

Can someone confirm and say which API (call and struct) in WebRTC it needs to be on in order to be effective?
Hi,

The original post has more information but in short changing kAudioJitterBufferMaxPackets to 100 meant Chrome could handle twice the jitter it can do normally. Increasing this value any further didn't increase the handling of jitter any further.

While allowing us to set kAudioJitterBufferMaxPackets to 100 would be a welcomed quick win, it would be better to look into it properly as the statistics related to the jitter buffer jump around wildly and it doesn't seem to grow and shrink nicely as expected. We can help test any changes you make and build chromium locally if needed.

I spotted something in Chrome logging

AudioOptions {aec: true, agc: true, ns: true, hf: true, swap: false, audio_jitter_buffer_max_packets: 50, audio_jitter_buffer_fast_accelerate: false, typing: true, agc_delta: 0, experimental_agc: false, extended_filter_aec: false, delay_agnostic_aec: false, experimental_ns: false, aec_dump: false, }


These look relevant:

audio_jitter_buffer_max_packets
audio_jitter_buffer_fast_accelerate

can they be set in the javascript somehow? 




No, they cannot be set from javascript today, but audio_jitter_buffer_max_packets is the C++ config that hta@ is asking for in #3.

Comment 7 by hta@chromium.org, Mar 30 2016

Is there a simple translation between audio_jitter_buffer_max_packets and the latency (seconds) that is described as a constraint in the spec?

if kAudioJitterBufferMaxPackets is currently setting audio_jitter_buffer_max_packets then yes we found that increasing  kAudioJitterBufferMaxPackets from 50 to 100 doubled the amount of latency volatility that the Jitter Buffer could handle. This would be a good start to improving this.
A translation between audio_jitter_buffer_max_packets and the latency (seconds) requires knowing the frame size (ms) of the audio packets. This may not be known, and it is also conceivable that it changes over the course of a call.
Project Member

Comment 10 by sheriffbot@chromium.org, Mar 31 2017

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been available for more than 365 days, and should be re-evaluated. Please re-triage this issue.
The Hotlist-Recharge-Cold label is applied for tracking purposes, and should not be removed after re-triaging the issue.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Cc: -hlundin@chromium.org
Owner: hlundin@chromium.org
Status: Assigned (was: Untriaged)
hlundin@ can you help with triage here?
Status: Archived (was: Assigned)
Regarding the tuning of the jitter buffer itself: this is a long-term project. I can't say much more than to stay tuned.

Sign in to add a comment