Commit a6eff37d authored by Andrew MacPherson's avatar Andrew MacPherson Committed by Commit Bot

Fix for AudioContext 'playback' latency on Android

Creating an AudioContext with a latencyHint of 'playback' on some
Android devices could cause glitching as the context was created
with an audio buffer size less than the hardware buffer size.

BUG=745960

Change-Id: I1db4efe934f427c878ad30bfb3507c535383b82d
Reviewed-on: https://chromium-review.googlesource.com/579068Reviewed-by: default avatarPavel Feldman <pfeldman@chromium.org>
Reviewed-by: default avatarRaymond Toy <rtoy@chromium.org>
Reviewed-by: default avatarDale Curtis <dalecurtis@chromium.org>
Commit-Queue: Andrew MacPherson <andrew.macpherson@soundtrap.com>
Cr-Commit-Position: refs/heads/master@{#491308}
parent 0267a42c
......@@ -61,7 +61,7 @@ int GetOutputBufferSize(const blink::WebAudioLatencyHint& latency_hint,
break;
case media::AudioLatency::LATENCY_PLAYBACK:
return media::AudioLatency::GetHighLatencyBufferSize(
hardware_params.sample_rate(), 0);
hardware_params.sample_rate(), hardware_params.frames_per_buffer());
break;
case media::AudioLatency::LATENCY_EXACT_MS:
return media::AudioLatency::GetExactBufferSize(
......
......@@ -193,8 +193,8 @@ TEST_F(RendererWebAudioDeviceImplTest, TestLatencyHintValues) {
blink::WebAudioLatencyHint playbackLatencyHint(
blink::WebAudioLatencyHint::kCategoryPlayback);
int playbackBufferSize =
media::AudioLatency::GetHighLatencyBufferSize(kHardwareSampleRate, 0);
int playbackBufferSize = media::AudioLatency::GetHighLatencyBufferSize(
kHardwareSampleRate, kHardwareBufferSize);
SetupDevice(playbackLatencyHint);
EXPECT_EQ(webaudio_device_->SampleRate(), kHardwareSampleRate);
......
......@@ -213,8 +213,8 @@ LayoutTestContentRendererClient::OverrideCreateAudioDevice(
media::AudioLatency::GetRtcBufferSize(hw_sample_rate, hw_buffer_size);
break;
case blink::WebAudioLatencyHint::kCategoryPlayback:
buffer_size =
media::AudioLatency::GetHighLatencyBufferSize(hw_sample_rate, 0);
buffer_size = media::AudioLatency::GetHighLatencyBufferSize(
hw_sample_rate, hw_buffer_size);
break;
case blink::WebAudioLatencyHint::kCategoryExact:
buffer_size = media::AudioLatency::GetExactBufferSize(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment