Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(551)

Unified Diff: media/audio/audio_manager_base.cc

Issue 495983002: Improve logging related to start/stop and failure of audio input streams in Chrome (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« media/audio/audio_manager.h ('K') | « media/audio/audio_manager_base.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_manager_base.cc
diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc
index 3b36b106fa681659dc78b6e894a1965a7d93cae4..4644f75233eba22e88102f46f5799dc6ef3bf76c 100644
--- a/media/audio/audio_manager_base.cc
+++ b/media/audio/audio_manager_base.cc
@@ -8,6 +8,7 @@
#include "base/bind_helpers.h"
#include "base/command_line.h"
#include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
#include "build/build_config.h"
#include "media/audio/audio_output_dispatcher_impl.h"
#include "media/audio/audio_output_proxy.h"
@@ -80,6 +81,7 @@ AudioManagerBase::AudioManagerBase(AudioLogFactory* audio_log_factory)
// block the UI thread when swapping devices.
output_listeners_(
ObserverList<AudioDeviceListener>::NOTIFY_EXISTING_ONLY),
+ state_listeners_(ObserverList<StateChangeListener>::NOTIFY_EXISTING_ONLY),
audio_thread_("AudioThread"),
audio_log_factory_(audio_log_factory) {
#if defined(OS_WIN)
@@ -187,27 +189,38 @@ AudioInputStream* AudioManagerBase::MakeAudioInputStream(
if (!params.IsValid() || (params.channels() > kMaxInputChannels) ||
device_id.empty()) {
- DLOG(ERROR) << "Audio parameters are invalid for device " << device_id;
+ std::ostringstream oss;
+ oss << "MakeAudioInputStream => invalid parameters";
+ DLOG(ERROR) << oss;
+ NotifyAllStateChangeListeners(oss.str());
DaleCurtis 2014/08/26 20:09:29 This seems wrong. Only the creating controller sho
henrika (OOO until Aug 14) 2014/08/27 13:54:38 Done.
return NULL;
}
if (num_input_streams_ >= max_num_input_streams_) {
- DLOG(ERROR) << "Number of opened input audio streams "
- << num_input_streams_
- << " exceed the max allowed number " << max_num_input_streams_;
+ std::ostringstream oss;
+ oss << "MakeAudioInputStream => "
DaleCurtis 2014/08/26 20:09:29 Ditto. All this is doing is spamming all listeners
henrika (OOO until Aug 14) 2014/08/27 13:54:38 Done.
+ << "number of opened input audio streams " << num_input_streams_
+ << " exceed the max allowed number " << max_num_input_streams_;
+ DLOG(ERROR) << oss;
+ NotifyAllStateChangeListeners(oss.str());
return NULL;
}
AudioInputStream* stream;
+ std::ostringstream oss;
+ oss << "MakeAudioInputStream(";
switch (params.format()) {
case AudioParameters::AUDIO_PCM_LINEAR:
stream = MakeLinearInputStream(params, device_id);
+ oss << "AUDIO_PCM_LINEAR)";
break;
case AudioParameters::AUDIO_PCM_LOW_LATENCY:
stream = MakeLowLatencyInputStream(params, device_id);
+ oss << "AUDIO_PCM_LOW_LATENCY)";
break;
case AudioParameters::AUDIO_FAKE:
stream = FakeAudioInputStream::MakeFakeStream(this, params);
+ oss << "AUDIO_FAKE)";
break;
default:
stream = NULL;
@@ -217,6 +230,8 @@ AudioInputStream* AudioManagerBase::MakeAudioInputStream(
if (stream) {
++num_input_streams_;
}
+ oss << " => num_input_streams = " << num_input_streams_;
+ NotifyAllStateChangeListeners(oss.str());
return stream;
}
@@ -315,6 +330,9 @@ void AudioManagerBase::ReleaseInputStream(AudioInputStream* stream) {
DCHECK(stream);
// TODO(xians) : Have a clearer destruction path for the AudioInputStream.
--num_input_streams_;
+ std::string log_string = base::StringPrintf(
DaleCurtis 2014/08/26 20:09:29 Further, none of this is actually a state change,
henrika (OOO until Aug 14) 2014/08/27 13:54:38 Done.
+ "ReleaseInputStream => num_input_streams = %d", num_input_streams_);
+ NotifyAllStateChangeListeners(log_string);
delete stream;
}
@@ -358,6 +376,25 @@ void AudioManagerBase::NotifyAllOutputDeviceChangeListeners() {
FOR_EACH_OBSERVER(AudioDeviceListener, output_listeners_, OnDeviceChange());
}
+void AudioManagerBase::AddStateChangeListener(StateChangeListener* listener) {
+ DCHECK(task_runner_->BelongsToCurrentThread());
+ state_listeners_.AddObserver(listener);
+}
+
+void AudioManagerBase::RemoveStateChangeListener(
+ StateChangeListener* listener) {
+ DCHECK(task_runner_->BelongsToCurrentThread());
+ state_listeners_.RemoveObserver(listener);
+}
+
+void AudioManagerBase::NotifyAllStateChangeListeners(const std::string& msg) {
+ DCHECK(task_runner_->BelongsToCurrentThread());
+ std::string log_string("AMB::");
+ log_string += msg;
+ FOR_EACH_OBSERVER(
+ StateChangeListener, state_listeners_, OnStateChange(log_string));
+}
+
AudioParameters AudioManagerBase::GetDefaultOutputStreamParameters() {
return GetPreferredOutputStreamParameters(GetDefaultOutputDeviceID(),
AudioParameters());
« media/audio/audio_manager.h ('K') | « media/audio/audio_manager_base.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698