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..4a6e4ac9231007632eb2c833c773a46f78841eb2 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) |
@@ -185,6 +187,10 @@ AudioInputStream* AudioManagerBase::MakeAudioInputStream( |
// this method on the audio thread, then uncomment the following: |
// DCHECK(task_runner_->BelongsToCurrentThread()); |
+ std::string log_string = base::StringPrintf( |
+ "MakeAudioInputStream(device_id=%s)", device_id.c_str()); |
Henrik Grunell
2014/08/22 16:14:43
Is this id something that can identify someone?
no longer working on chromium
2014/08/25 08:20:05
as I pointed out, we can't log the device_id due t
henrika (OOO until Aug 14)
2014/08/25 12:47:45
Removed.
But Shijing, we do log it at other place
|
+ NotifyAllStateChangeListeners(log_string); |
+ |
if (!params.IsValid() || (params.channels() > kMaxInputChannels) || |
device_id.empty()) { |
DLOG(ERROR) << "Audio parameters are invalid for device " << device_id; |
@@ -216,6 +222,9 @@ AudioInputStream* AudioManagerBase::MakeAudioInputStream( |
if (stream) { |
++num_input_streams_; |
+ log_string = base::StringPrintf( |
+ "MakeAudioInputStream => num_input_streams = %d", num_input_streams_); |
Henrik Grunell
2014/08/22 16:14:43
Do we need the above if we have this? What about t
henrika (OOO until Aug 14)
2014/08/25 12:47:45
Thanks. Improved.
|
+ NotifyAllStateChangeListeners(log_string); |
} |
return stream; |
@@ -315,6 +324,10 @@ 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( |
+ "ReleaseInputStream => num_input_streams = %d", |
+ num_input_streams_); |
+ NotifyAllStateChangeListeners(log_string); |
delete stream; |
} |
@@ -358,6 +371,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()); |