summaryrefslogtreecommitdiffstats
path: root/content/renderer/media
diff options
context:
space:
mode:
authorxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-14 13:47:27 +0000
committerxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-14 13:47:27 +0000
commit9040b8a52f88f7e54d787da5db320641b96166df (patch)
tree5642ad491aa40233eb233c63b47e80ebd5979126 /content/renderer/media
parent4f1a2e6e9f12e37c9ddce1e913bf92804e208ec4 (diff)
downloadchromium_src-9040b8a52f88f7e54d787da5db320641b96166df.zip
chromium_src-9040b8a52f88f7e54d787da5db320641b96166df.tar.gz
chromium_src-9040b8a52f88f7e54d787da5db320641b96166df.tar.bz2
Limit the max volume to 255 before pass it to APM.
BUG=264611 Review URL: https://codereview.chromium.org/225143006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263624 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/media')
-rw-r--r--content/renderer/media/media_stream_audio_processor.cc2
-rw-r--r--content/renderer/media/webrtc_audio_capturer.cc8
2 files changed, 6 insertions, 4 deletions
diff --git a/content/renderer/media/media_stream_audio_processor.cc b/content/renderer/media/media_stream_audio_processor.cc
index c83ffff..dcd9d40 100644
--- a/content/renderer/media/media_stream_audio_processor.cc
+++ b/content/renderer/media/media_stream_audio_processor.cc
@@ -11,6 +11,7 @@
#include "content/public/common/content_switches.h"
#include "content/renderer/media/media_stream_audio_processor_options.h"
#include "content/renderer/media/rtc_media_constraints.h"
+#include "content/renderer/media/webrtc_audio_device_impl.h"
#include "media/audio/audio_parameters.h"
#include "media/base/audio_converter.h"
#include "media/base/audio_fifo.h"
@@ -474,6 +475,7 @@ int MediaStreamAudioProcessor::ProcessData(webrtc::AudioFrame* audio_frame,
audio_processing_->set_stream_delay_ms(total_delay_ms);
+ DCHECK_LE(volume, WebRtcAudioDeviceImpl::kMaxVolumeLevel);
webrtc::GainControl* agc = audio_processing_->gain_control();
int err = agc->set_stream_analog_level(volume);
DCHECK_EQ(err, 0) << "set_stream_analog_level() error: " << err;
diff --git a/content/renderer/media/webrtc_audio_capturer.cc b/content/renderer/media/webrtc_audio_capturer.cc
index 482d25f..67882a1 100644
--- a/content/renderer/media/webrtc_audio_capturer.cc
+++ b/content/renderer/media/webrtc_audio_capturer.cc
@@ -460,11 +460,11 @@ void WebRtcAudioCapturer::Capture(media::AudioBus* audio_source,
if (!running_)
return;
- // Map internal volume range of [0.0, 1.0] into [0, 255] used by the
- // webrtc::VoiceEngine. webrtc::VoiceEngine will handle the case when the
- // volume is higher than 255.
+ // Map internal volume range of [0.0, 1.0] into [0, 255] used by AGC.
+ // The volume can be higher than 255 on Linux, and it will be cropped to
+ // 255 since AGC does not allow values out of range.
volume_ = static_cast<int>((volume * MaxVolume()) + 0.5);
- current_volume = volume_;
+ current_volume = volume_ > MaxVolume() ? MaxVolume() : volume_;
audio_delay = base::TimeDelta::FromMilliseconds(audio_delay_milliseconds);
audio_delay_ = audio_delay;
key_pressed_ = key_pressed;