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

Unified Diff: media/audio/audio_manager_base.cc

Issue 5158003: Implement AudioOutputProxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 10 years, 1 month 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
Index: media/audio/audio_manager_base.cc
diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc
index 7fa476179b92601761ad599bc2cdd0d609fe8424..dfd6f8178e9313d5c50602dddb1d34e1eae7a62a 100644
--- a/media/audio/audio_manager_base.cc
+++ b/media/audio/audio_manager_base.cc
@@ -3,12 +3,40 @@
// found in the LICENSE file.
#include "media/audio/audio_manager_base.h"
+#include "media/audio/audio_output_proxy.h"
+#include "media/audio/audio_output_dispatcher.h"
scherkus (not reviewing) 2010/11/22 06:43:15 dispatcher should come before proxy
Sergey Ulanov 2010/11/23 19:51:46 Done.
+
+// CompareAudioParams is needed for map to use AudioParameters as a key.
+bool AudioManagerBase::CompareAudioParams::operator()(
+ const AudioParameters& a,
+ const AudioParameters& b) const {
+ if (a.format < b.format)
+ return true;
+ if (a.format > b.format)
+ return false;
+ if (a.channels < b.channels)
+ return true;
+ if (a.channels > b.channels)
+ return false;
+ if (a.sample_rate < b.sample_rate)
+ return true;
+ if (a.sample_rate > b.sample_rate)
+ return false;
+ if (a.bits_per_sample < b.bits_per_sample)
+ return true;
+ if (a.bits_per_sample > b.bits_per_sample)
+ return false;
+ return a.samples_per_packet > b.samples_per_packet;
+}
AudioManagerBase::AudioManagerBase()
: audio_thread_("AudioThread"),
initialized_(false) {
}
+AudioManagerBase::~AudioManagerBase() {
+}
+
void AudioManagerBase::Init() {
initialized_ = audio_thread_.Start();
}
@@ -17,3 +45,16 @@ MessageLoop* AudioManagerBase::GetMessageLoop() {
DCHECK(initialized_);
return audio_thread_.message_loop();
}
+
+AudioOutputStream* AudioManagerBase::MakeAudioOutputStreamProxy(
+ AudioParameters params) {
+ if (!initialized_)
+ return NULL;
+
+ scoped_refptr<AudioOutputDispatcher>& dispatcher =
+ output_dispatchers_[params];
scherkus (not reviewing) 2010/11/22 06:43:15 I tend to avoid using operator[] with map since it
Sergey Ulanov 2010/11/23 19:51:46 Yes, and it is desired behavior here.
scherkus (not reviewing) 2010/11/24 02:01:59 Thanks for explaining -- SGTM!
+ if (!dispatcher)
+ dispatcher = new AudioOutputDispatcher(this, params);
+
+ return new AudioOutputProxy(dispatcher);
+}

Powered by Google App Engine
This is Rietveld 408576698