Index: media/audio/audio_manager_base.h |
diff --git a/media/audio/audio_manager_base.h b/media/audio/audio_manager_base.h |
index 3d75b77e1ef31fede762138b867ff22818b8f178..d2662537bb01d9d2a7d965c5221b70e33728c097 100644 |
--- a/media/audio/audio_manager_base.h |
+++ b/media/audio/audio_manager_base.h |
@@ -5,17 +5,19 @@ |
#ifndef MEDIA_AUDIO_AUDIO_MANAGER_BASE_H_ |
#define MEDIA_AUDIO_AUDIO_MANAGER_BASE_H_ |
-#include <map> |
#include <string> |
#include <utility> |
#include "base/atomic_ref_count.h" |
#include "base/compiler_specific.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/memory/scoped_vector.h" |
#include "base/observer_list.h" |
#include "base/synchronization/lock.h" |
#include "media/audio/audio_manager.h" |
+#include "media/audio/audio_output_dispatcher.h" |
+ |
#if defined(OS_WIN) |
#include "base/win/scoped_com_initializer.h" |
#endif |
@@ -48,13 +50,15 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager { |
media::AudioDeviceNames* device_names) OVERRIDE; |
virtual AudioOutputStream* MakeAudioOutputStream( |
- const AudioParameters& params) OVERRIDE; |
+ const AudioParameters& params, |
+ const std::string& input_device_id) OVERRIDE; |
virtual AudioInputStream* MakeAudioInputStream( |
const AudioParameters& params, const std::string& device_id) OVERRIDE; |
virtual AudioOutputStream* MakeAudioOutputStreamProxy( |
- const AudioParameters& params) OVERRIDE; |
+ const AudioParameters& params, |
+ const std::string& input_device_id) OVERRIDE; |
virtual bool IsRecordingInProcess() OVERRIDE; |
@@ -71,8 +75,9 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager { |
const AudioParameters& params) = 0; |
// Creates the output stream for the |AUDIO_PCM_LOW_LATENCY| format. |
+ // |input_device_id| is used by unified IO to open the correct input device. |
virtual AudioOutputStream* MakeLowLatencyOutputStream( |
- const AudioParameters& params) = 0; |
+ const AudioParameters& params, const std::string& input_device_id) = 0; |
// Creates the input stream for the |AUDIO_PCM_LINEAR| format. The legacy |
// name is also from |AUDIO_PCM_LINEAR|. |
@@ -96,12 +101,6 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager { |
protected: |
AudioManagerBase(); |
- // TODO(dalecurtis): This must change to map both input and output parameters |
- // to a single dispatcher, otherwise on a device state change we'll just get |
- // the exact same invalid dispatcher. |
- typedef std::map<std::pair<AudioParameters, AudioParameters>, |
- scoped_refptr<AudioOutputDispatcher> > |
- AudioOutputDispatchersMap; |
// Shuts down the audio thread and releases all the audio output dispatchers |
// on the audio thread. All audio streams should be freed before Shutdown() |
@@ -124,15 +123,16 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager { |
virtual AudioParameters GetPreferredOutputStreamParameters( |
const AudioParameters& input_params) = 0; |
- // Map of cached AudioOutputDispatcher instances. Must only be touched |
- // from the audio thread (no locking). |
- AudioOutputDispatchersMap output_dispatchers_; |
- |
// Get number of input or output streams. |
int input_stream_count() { return num_input_streams_; } |
int output_stream_count() { return num_output_streams_; } |
private: |
+ struct DispatcherParams; |
+ typedef ScopedVector<DispatcherParams> AudioOutputDispatchers; |
+ |
+ class CompareByParams; |
+ |
// Called by Shutdown(). |
void ShutdownOnAudioThread(); |
@@ -165,6 +165,10 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager { |
// and GetMessageLoop() starts returning NULL. |
scoped_refptr<base::MessageLoopProxy> message_loop_; |
+ // Map of cached AudioOutputDispatcher instances. Must only be touched |
+ // from the audio thread (no locking). |
+ AudioOutputDispatchers output_dispatchers_; |
+ |
DISALLOW_COPY_AND_ASSIGN(AudioManagerBase); |
}; |