diff options
author | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-16 22:12:39 +0000 |
---|---|---|
committer | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-16 22:12:39 +0000 |
commit | 279ad52e5a54ddd57edced32ba9ffff8e0cfed6f (patch) | |
tree | 4d71a3ff3fadc869c68444790447ffb10a6f9b47 /media | |
parent | 93a8094d0aa19d17c22bec249d05bbd208ae34e3 (diff) | |
download | chromium_src-279ad52e5a54ddd57edced32ba9ffff8e0cfed6f.zip chromium_src-279ad52e5a54ddd57edced32ba9ffff8e0cfed6f.tar.gz chromium_src-279ad52e5a54ddd57edced32ba9ffff8e0cfed6f.tar.bz2 |
Revert 194407 "Revert 194371"
r194371 didn't break the tests. It's r194378 that changed use_openmax_dl_fft to 1 which leads to using media_android.cc for media tests. r194378 needs to implement InitializeMediaLibraryForTesting() in media_android.cc in the same way as in media_stub.cc.
> Revert 194371
>
> Looks like its breaking blink build. Contact jchaffraix for more info.
>
> > Refactor android specific code in AudioManagerBase class.
> >
> > Move android specific code into AudioManagerAndroid class.
> >
> > Contributed by leozwang@chromium.org (https://chromiumcodereview.appspot.com/14265014/).
> >
> > BUG=231468
> >
> > Review URL: https://codereview.chromium.org/14053012
>
> TBR=wjia@chromium.org
> Review URL: https://codereview.chromium.org/14302003
TBR=cpu@chromium.org
Review URL: https://codereview.chromium.org/14230016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@194461 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/audio/android/audio_manager_android.cc | 62 | ||||
-rw-r--r-- | media/audio/android/audio_manager_android.h | 17 | ||||
-rw-r--r-- | media/audio/audio_manager_base.cc | 58 | ||||
-rw-r--r-- | media/audio/audio_manager_base.h | 23 | ||||
-rw-r--r-- | media/base/android/media_jni_registrar.cc | 6 |
5 files changed, 86 insertions, 80 deletions
diff --git a/media/audio/android/audio_manager_android.cc b/media/audio/android/audio_manager_android.cc index 71801cf..ec43db4 100644 --- a/media/audio/android/audio_manager_android.cc +++ b/media/audio/android/audio_manager_android.cc @@ -5,6 +5,7 @@ #include "media/audio/android/audio_manager_android.h" #include "base/logging.h" +#include "jni/AudioManagerAndroid_jni.h" #include "media/audio/android/opensles_input.h" #include "media/audio/android/opensles_output.h" #include "media/audio/audio_manager.h" @@ -18,12 +19,20 @@ namespace media { // Maximum number of output streams that can be open simultaneously. static const int kMaxOutputStreams = 10; +static const int kAudioModeNormal = 0x00000000; +static const int kAudioModeInCommunication = 0x00000003; + AudioManager* CreateAudioManager() { return new AudioManagerAndroid(); } AudioManagerAndroid::AudioManagerAndroid() { SetMaxOutputStreamsAllowed(kMaxOutputStreams); + + j_audio_manager_.Reset( + Java_AudioManagerAndroid_createAudioManagerAndroid( + base::android::AttachCurrentThread(), + base::android::GetApplicationContext())); } AudioManagerAndroid::~AudioManagerAndroid() { @@ -57,6 +66,36 @@ AudioParameters AudioManagerAndroid::GetInputStreamParameters( kDefaultSampleRate, 16, kDefaultBufferSize); } +AudioOutputStream* AudioManagerAndroid::MakeAudioOutputStream( + const AudioParameters& params) { + AudioOutputStream* stream = + AudioManagerBase::MakeAudioOutputStream(params); + if (stream && output_stream_count() == 1) + RegisterHeadsetReceiver(); + return stream; +} + +AudioInputStream* AudioManagerAndroid::MakeAudioInputStream( + const AudioParameters& params, const std::string& device_id) { + AudioInputStream* stream = + AudioManagerBase::MakeAudioInputStream(params, device_id); + if (stream && input_stream_count() == 1) + SetAudioMode(kAudioModeInCommunication); + return stream; +} + +void AudioManagerAndroid::ReleaseOutputStream(AudioOutputStream* stream) { + AudioManagerBase::ReleaseOutputStream(stream); + if (!output_stream_count()) + UnregisterHeadsetReceiver(); +} + +void AudioManagerAndroid::ReleaseInputStream(AudioInputStream* stream) { + AudioManagerBase::ReleaseInputStream(stream); + if (!input_stream_count()) + SetAudioMode(kAudioModeNormal); +} + AudioOutputStream* AudioManagerAndroid::MakeLinearOutputStream( const AudioParameters& params) { DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); @@ -116,4 +155,27 @@ AudioParameters AudioManagerAndroid::GetPreferredOutputStreamParameters( sample_rate, bits_per_sample, buffer_size); } +// static +bool AudioManagerAndroid::RegisterAudioManager(JNIEnv* env) { + return RegisterNativesImpl(env); +} + +void AudioManagerAndroid::SetAudioMode(int mode) { + Java_AudioManagerAndroid_setMode( + base::android::AttachCurrentThread(), + j_audio_manager_.obj(), mode); +} + +void AudioManagerAndroid::RegisterHeadsetReceiver() { + Java_AudioManagerAndroid_registerHeadsetReceiver( + base::android::AttachCurrentThread(), + j_audio_manager_.obj()); +} + +void AudioManagerAndroid::UnregisterHeadsetReceiver() { + Java_AudioManagerAndroid_unregisterHeadsetReceiver( + base::android::AttachCurrentThread(), + j_audio_manager_.obj()); +} + } // namespace media diff --git a/media/audio/android/audio_manager_android.h b/media/audio/android/audio_manager_android.h index fbc05d2..d21d3a1 100644 --- a/media/audio/android/audio_manager_android.h +++ b/media/audio/android/audio_manager_android.h @@ -5,6 +5,7 @@ #ifndef MEDIA_AUDIO_ANDROID_AUDIO_MANAGER_ANDROID_H_ #define MEDIA_AUDIO_ANDROID_AUDIO_MANAGER_ANDROID_H_ +#include "base/android/jni_android.h" #include "media/audio/audio_manager_base.h" namespace media { @@ -22,6 +23,13 @@ class MEDIA_EXPORT AudioManagerAndroid : public AudioManagerBase { virtual AudioParameters GetInputStreamParameters( const std::string& device_id) OVERRIDE; + virtual AudioOutputStream* MakeAudioOutputStream( + const AudioParameters& params) OVERRIDE; + virtual AudioInputStream* MakeAudioInputStream( + const AudioParameters& params, const std::string& device_id) OVERRIDE; + virtual void ReleaseOutputStream(AudioOutputStream* stream) OVERRIDE; + virtual void ReleaseInputStream(AudioInputStream* stream) OVERRIDE; + // Implementation of AudioManagerBase. virtual AudioOutputStream* MakeLinearOutputStream( const AudioParameters& params) OVERRIDE; @@ -32,6 +40,8 @@ class MEDIA_EXPORT AudioManagerAndroid : public AudioManagerBase { virtual AudioInputStream* MakeLowLatencyInputStream( const AudioParameters& params, const std::string& device_id) OVERRIDE; + static bool RegisterAudioManager(JNIEnv* env); + protected: virtual ~AudioManagerAndroid(); @@ -39,6 +49,13 @@ class MEDIA_EXPORT AudioManagerAndroid : public AudioManagerBase { const AudioParameters& input_params) OVERRIDE; private: + void SetAudioMode(int mode); + void RegisterHeadsetReceiver(); + void UnregisterHeadsetReceiver(); + + // Java AudioManager instance. + base::android::ScopedJavaGlobalRef<jobject> j_audio_manager_; + DISALLOW_COPY_AND_ASSIGN(AudioManagerAndroid); }; diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc index a484ded..23e8227 100644 --- a/media/audio/audio_manager_base.cc +++ b/media/audio/audio_manager_base.cc @@ -9,9 +9,6 @@ #include "base/command_line.h" #include "base/message_loop_proxy.h" #include "base/threading/thread.h" -#if defined(OS_ANDROID) -#include "jni/AudioManagerAndroid_jni.h" -#endif #include "media/audio/audio_output_dispatcher_impl.h" #include "media/audio/audio_output_proxy.h" #include "media/audio/audio_output_resampler.h" @@ -34,11 +31,6 @@ static const int kDefaultMaxInputStreams = 16; static const int kMaxInputChannels = 2; -#if defined(OS_ANDROID) -static const int kAudioModeNormal = 0x00000000; -static const int kAudioModeInCommunication = 0x00000003; -#endif - const char AudioManagerBase::kDefaultDeviceName[] = "Default"; const char AudioManagerBase::kDefaultDeviceId[] = "default"; @@ -63,13 +55,6 @@ AudioManagerBase::AudioManagerBase() CHECK(audio_thread_->Start()); #endif message_loop_ = audio_thread_->message_loop_proxy(); - -#if defined(OS_ANDROID) - JNIEnv* env = base::android::AttachCurrentThread(); - jobject context = base::android::GetApplicationContext(); - j_audio_manager_.Reset( - Java_AudioManagerAndroid_createAudioManagerAndroid(env, context)); -#endif } AudioManagerBase::~AudioManagerBase() { @@ -134,10 +119,6 @@ AudioOutputStream* AudioManagerBase::MakeAudioOutputStream( if (stream) { ++num_output_streams_; -#if defined(OS_ANDROID) - if (num_output_streams_ == 1) - RegisterHeadsetReceiver(); -#endif } return stream; @@ -180,10 +161,6 @@ AudioInputStream* AudioManagerBase::MakeAudioInputStream( if (stream) { ++num_input_streams_; -#if defined(OS_ANDROID) - if (num_input_streams_ == 1) - SetAudioMode(kAudioModeInCommunication); -#endif } return stream; @@ -268,10 +245,6 @@ void AudioManagerBase::ReleaseOutputStream(AudioOutputStream* stream) { // streams. --num_output_streams_; delete stream; -#if defined(OS_ANDROID) - if (!num_output_streams_) - UnregisterHeadsetReceiver(); -#endif } void AudioManagerBase::ReleaseInputStream(AudioInputStream* stream) { @@ -279,10 +252,6 @@ void AudioManagerBase::ReleaseInputStream(AudioInputStream* stream) { // TODO(xians) : Have a clearer destruction path for the AudioInputStream. --num_input_streams_; delete stream; -#if defined(OS_ANDROID) - if (!num_input_streams_) - SetAudioMode(kAudioModeNormal); -#endif } void AudioManagerBase::IncreaseActiveInputStreamCount() { @@ -350,13 +319,6 @@ void AudioManagerBase::ShutdownOnAudioThread() { #endif // defined(OS_IOS) } -#if defined(OS_ANDROID) -// static -bool AudioManagerBase::RegisterAudioManager(JNIEnv* env) { - return RegisterNativesImpl(env); -} -#endif - void AudioManagerBase::AddOutputDeviceChangeListener( AudioDeviceListener* listener) { DCHECK(message_loop_->BelongsToCurrentThread()); @@ -385,24 +347,4 @@ AudioParameters AudioManagerBase::GetInputStreamParameters( return AudioParameters(); } -#if defined(OS_ANDROID) -void AudioManagerBase::SetAudioMode(int mode) { - Java_AudioManagerAndroid_setMode( - base::android::AttachCurrentThread(), - j_audio_manager_.obj(), mode); -} - -void AudioManagerBase::RegisterHeadsetReceiver() { - Java_AudioManagerAndroid_registerHeadsetReceiver( - base::android::AttachCurrentThread(), - j_audio_manager_.obj()); -} - -void AudioManagerBase::UnregisterHeadsetReceiver() { - Java_AudioManagerAndroid_unregisterHeadsetReceiver( - base::android::AttachCurrentThread(), - j_audio_manager_.obj()); -} -#endif // defined(OS_ANDROID) - } // namespace media diff --git a/media/audio/audio_manager_base.h b/media/audio/audio_manager_base.h index 6dd51e3..3d75b77 100644 --- a/media/audio/audio_manager_base.h +++ b/media/audio/audio_manager_base.h @@ -20,10 +20,6 @@ #include "base/win/scoped_com_initializer.h" #endif -#if defined(OS_ANDROID) -#include "base/android/jni_android.h" -#endif - namespace base { class Thread; } @@ -97,10 +93,6 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager { virtual AudioParameters GetInputStreamParameters( const std::string& device_id) OVERRIDE; -#if defined(OS_ANDROID) - static bool RegisterAudioManager(JNIEnv* env); -#endif - protected: AudioManagerBase(); @@ -136,16 +128,14 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager { // 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: // Called by Shutdown(). void ShutdownOnAudioThread(); -#if defined(OS_ANDROID) - void SetAudioMode(int mode); - void RegisterHeadsetReceiver(); - void UnregisterHeadsetReceiver(); -#endif - // Counts the number of active input streams to find out if something else // is currently recording in Chrome. base::AtomicRefCount num_active_input_streams_; @@ -175,11 +165,6 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager { // and GetMessageLoop() starts returning NULL. scoped_refptr<base::MessageLoopProxy> message_loop_; -#if defined(OS_ANDROID) - // Java AudioManager instance. - base::android::ScopedJavaGlobalRef<jobject> j_audio_manager_; -#endif - DISALLOW_COPY_AND_ASSIGN(AudioManagerBase); }; diff --git a/media/base/android/media_jni_registrar.cc b/media/base/android/media_jni_registrar.cc index 2ec2634..9cedfac 100644 --- a/media/base/android/media_jni_registrar.cc +++ b/media/base/android/media_jni_registrar.cc @@ -8,7 +8,7 @@ #include "base/android/jni_android.h" #include "base/android/jni_registrar.h" -#include "media/audio/audio_manager_base.h" +#include "media/audio/android/audio_manager_android.h" #include "media/base/android/media_player_bridge.h" #include "media/base/android/media_player_listener.h" #include "media/base/android/webaudio_media_codec_bridge.h" @@ -17,8 +17,8 @@ namespace media { static base::android::RegistrationMethod kMediaRegisteredMethods[] = { - { "AudioManagerBase", - AudioManagerBase::RegisterAudioManager }, + { "AudioManagerAndroid", + AudioManagerAndroid::RegisterAudioManager }, { "MediaPlayerBridge", MediaPlayerBridge::RegisterMediaPlayerBridge }, { "MediaPlayerListener", |