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

Unified Diff: media/audio/android/audio_manager_android.h

Issue 131503006: Initialization of audio manager for Android is now done on the audio thread (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: improved unit test pattern Created 6 years, 11 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
Index: media/audio/android/audio_manager_android.h
diff --git a/media/audio/android/audio_manager_android.h b/media/audio/android/audio_manager_android.h
index 670c094900d26dd230bb82f9da0eb9713f0de855..08dd98c0979a3678c317e25fad11a3848d9ec5d0 100644
--- a/media/audio/android/audio_manager_android.h
+++ b/media/audio/android/audio_manager_android.h
@@ -9,7 +9,9 @@
#include "base/android/jni_android.h"
#include "base/gtest_prod_util.h"
+#include "base/message_loop/message_loop.h"
#include "base/synchronization/lock.h"
+#include "base/synchronization/waitable_event.h"
#include "media/audio/audio_manager_base.h"
namespace media {
@@ -17,7 +19,9 @@ namespace media {
class OpenSLESOutputStream;
// Android implemention of AudioManager.
-class MEDIA_EXPORT AudioManagerAndroid : public AudioManagerBase {
+class MEDIA_EXPORT AudioManagerAndroid
+ : public AudioManagerBase,
+ public base::MessageLoop::DestructionObserver {
public:
AudioManagerAndroid(AudioLogFactory* audio_log_factory);
@@ -67,6 +71,9 @@ class MEDIA_EXPORT AudioManagerAndroid : public AudioManagerBase {
const AudioParameters& input_params) OVERRIDE;
private:
+ // Implementation of MessageLoop::DestructionObserver.
+ virtual void WillDestroyCurrentMessageLoop() OVERRIDE;
+
bool HadNoAudioStreams();
void Init();
void Close();
@@ -77,6 +84,12 @@ class MEDIA_EXPORT AudioManagerAndroid : public AudioManagerBase {
int GetAudioLowLatencyOutputFrameSize();
int GetOptimalOutputFrameSize(int sample_rate, int channels);
+ void InitializeOnAudioThread();
+ void CloseOnAudioThread();
+ void GetAudioInputDeviceNamesOnAudioThread(
+ base::WaitableEvent* event, AudioDeviceNames* device_names);
+ void SetAudioDeviceOnAudioThread(base::WaitableEvent* event,
+ const std::string& device_id, bool* result);
void DoSetMuteOnAudioThread(bool muted);
// Allow the AudioAndroidTest to access private methods.
@@ -91,6 +104,7 @@ class MEDIA_EXPORT AudioManagerAndroid : public AudioManagerBase {
// AudioManager::MakeAudioOutputStream on the audio thread. For now, this
// lock is used to guard access to |streams_|.
base::Lock streams_lock_;
+ bool initialized_on_audio_thread_;
DISALLOW_COPY_AND_ASSIGN(AudioManagerAndroid);
};

Powered by Google App Engine
This is Rietveld 408576698