Chromium Code Reviews| Index: media/audio/android/audio_manager_android.cc |
| =================================================================== |
| --- media/audio/android/audio_manager_android.cc (revision 187380) |
| +++ media/audio/android/audio_manager_android.cc (working copy) |
| @@ -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" |
| @@ -17,6 +18,8 @@ |
| // Maximum number of output streams that can be open simultaneously. |
| static const int kMaxOutputStreams = 10; |
| +// AudioMode. |
| +static const int kAudioModeInCommunication = 0x00000003; |
| AudioManager* CreateAudioManager() { |
| return new AudioManagerAndroid(); |
| @@ -60,12 +63,14 @@ |
| AudioOutputStream* AudioManagerAndroid::MakeLinearOutputStream( |
| const AudioParameters& params) { |
| DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); |
| + SetAudioMode(kAudioModeInCommunication); |
|
Yaron
2013/03/13 01:15:07
Ok, but when does this ever get unset? Presumably
|
| return new OpenSLESOutputStream(this, params); |
| } |
| AudioOutputStream* AudioManagerAndroid::MakeLowLatencyOutputStream( |
| const AudioParameters& params) { |
| DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); |
| + SetAudioMode(kAudioModeInCommunication); |
| return new OpenSLESOutputStream(this, params); |
| } |
| @@ -81,6 +86,11 @@ |
| return new OpenSLESInputStream(this, params); |
| } |
| +// static |
| +bool AudioManagerAndroid::RegisterAudioManager(JNIEnv* env) { |
| + return RegisterNativesImpl(env); |
| +} |
| + |
| AudioParameters AudioManagerAndroid::GetPreferredOutputStreamParameters( |
| const AudioParameters& input_params) { |
| // TODO(xians): figure out the right output sample rate and sample rate to |
| @@ -116,4 +126,12 @@ |
| sample_rate, bits_per_sample, buffer_size); |
| } |
| +void AudioManagerAndroid::SetAudioMode(int mode) { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + jobject context = base::android::GetApplicationContext(); |
| + DCHECK(context); |
| + |
| + Java_AudioManagerAndroid_setMode(env, context, mode); |
| +} |
| + |
| } // namespace media |