Chromium Code Reviews| 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()); |