diff options
author | jiayl@chromium.org <jiayl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-10 23:39:37 +0000 |
---|---|---|
committer | jiayl@chromium.org <jiayl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-10 23:39:37 +0000 |
commit | d7ea0c8cc1be6a230c43f478abd249c7b594e328 (patch) | |
tree | c87b1b1278b79ce505ae127694aa451bb97388f8 /content/renderer/media | |
parent | d421d710e60ac517b8e6aecda532783bc4d7573b (diff) | |
download | chromium_src-d7ea0c8cc1be6a230c43f478abd249c7b594e328.zip chromium_src-d7ea0c8cc1be6a230c43f478abd249c7b594e328.tar.gz chromium_src-d7ea0c8cc1be6a230c43f478abd249c7b594e328.tar.bz2 |
Adds more logging for audio input issues.
-Adds the audio input device id and name to the stream generation message.
-Re-enables the no_data_timer in AudioInputController for logging. The NO_DATA_ERROR is ignored and will not stop capturing.
-Adds a AudioPowerMonitor to WebRtcAudioCapturer to log the audio power level.
R=vrk@chromium.org,xians@chromium.org,tommi@chromium.org
BUG=360756
Review URL: https://codereview.chromium.org/229573003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263127 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/media')
-rw-r--r-- | content/renderer/media/webrtc_audio_capturer.cc | 26 | ||||
-rw-r--r-- | content/renderer/media/webrtc_audio_capturer.h | 7 |
2 files changed, 32 insertions, 1 deletions
diff --git a/content/renderer/media/webrtc_audio_capturer.cc b/content/renderer/media/webrtc_audio_capturer.cc index 7318cba..482d25f 100644 --- a/content/renderer/media/webrtc_audio_capturer.cc +++ b/content/renderer/media/webrtc_audio_capturer.cc @@ -38,6 +38,13 @@ const int kValidInputRates[] = {48000, 44100}; const int kValidInputRates[] = {44100}; #endif +// Time constant for AudioPowerMonitor. See AudioPowerMonitor ctor comments +// for semantics. This value was arbitrarily chosen, but seems to work well. +const int kPowerMonitorTimeConstantMs = 10; + +// The time between two audio power level samples. +const int kPowerMonitorLogIntervalSeconds = 10; + } // namespace // Reference counted container of WebRtcLocalAudioTrack delegate. @@ -222,7 +229,10 @@ WebRtcAudioCapturer::WebRtcAudioCapturer( peer_connection_mode_(false), key_pressed_(false), need_audio_processing_(false), - audio_device_(audio_device) { + audio_device_(audio_device), + audio_power_monitor_( + device_info_.device.input.sample_rate, + base::TimeDelta::FromMilliseconds(kPowerMonitorTimeConstantMs)) { DVLOG(1) << "WebRtcAudioCapturer::WebRtcAudioCapturer()"; } @@ -483,6 +493,20 @@ void WebRtcAudioCapturer::Capture(media::AudioBus* audio_source, (*it)->SetAudioProcessor(audio_processor_); } + if ((base::TimeTicks::Now() - last_audio_level_log_time_).InSeconds() > + kPowerMonitorLogIntervalSeconds) { + audio_power_monitor_.Scan(*audio_source, audio_source->frames()); + + last_audio_level_log_time_ = base::TimeTicks::Now(); + + std::pair<float, bool> result = + audio_power_monitor_.ReadCurrentPowerAndClip(); + WebRtcLogMessage(base::StringPrintf( + "WAC::Capture: current_audio_power=%.2fdBFS.", result.first)); + + audio_power_monitor_.Reset(); + } + // Push the data to the processor for processing. audio_processor_->PushCaptureData(audio_source); diff --git a/content/renderer/media/webrtc_audio_capturer.h b/content/renderer/media/webrtc_audio_capturer.h index 78a21811..63c846f 100644 --- a/content/renderer/media/webrtc_audio_capturer.h +++ b/content/renderer/media/webrtc_audio_capturer.h @@ -17,6 +17,7 @@ #include "content/common/media/media_stream_options.h" #include "content/renderer/media/tagged_list.h" #include "media/audio/audio_input_device.h" +#include "media/audio/audio_power_monitor.h" #include "media/base/audio_capturer_source.h" #include "third_party/WebKit/public/platform/WebMediaConstraints.h" @@ -207,6 +208,12 @@ class CONTENT_EXPORT WebRtcAudioCapturer // of RenderThread. WebRtcAudioDeviceImpl* audio_device_; + // Audio power monitor for logging audio power level. + media::AudioPowerMonitor audio_power_monitor_; + + // Records when the last time audio power level is logged. + base::TimeTicks last_audio_level_log_time_; + DISALLOW_COPY_AND_ASSIGN(WebRtcAudioCapturer); }; |