summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-16 22:12:39 +0000
committerwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-16 22:12:39 +0000
commit279ad52e5a54ddd57edced32ba9ffff8e0cfed6f (patch)
tree4d71a3ff3fadc869c68444790447ffb10a6f9b47 /media
parent93a8094d0aa19d17c22bec249d05bbd208ae34e3 (diff)
downloadchromium_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.cc62
-rw-r--r--media/audio/android/audio_manager_android.h17
-rw-r--r--media/audio/audio_manager_base.cc58
-rw-r--r--media/audio/audio_manager_base.h23
-rw-r--r--media/base/android/media_jni_registrar.cc6
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",