summaryrefslogtreecommitdiffstats
path: root/content/renderer/media
diff options
context:
space:
mode:
authorjiayl@chromium.org <jiayl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-10 23:39:37 +0000
committerjiayl@chromium.org <jiayl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-10 23:39:37 +0000
commitd7ea0c8cc1be6a230c43f478abd249c7b594e328 (patch)
treec87b1b1278b79ce505ae127694aa451bb97388f8 /content/renderer/media
parentd421d710e60ac517b8e6aecda532783bc4d7573b (diff)
downloadchromium_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.cc26
-rw-r--r--content/renderer/media/webrtc_audio_capturer.h7
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);
};