diff options
Diffstat (limited to 'chromium/media/audio/android/audio_record_input.cc')
-rw-r--r-- | chromium/media/audio/android/audio_record_input.cc | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/chromium/media/audio/android/audio_record_input.cc b/chromium/media/audio/android/audio_record_input.cc index 15a0c3d3b7b..3f19588b4a6 100644 --- a/chromium/media/audio/android/audio_record_input.cc +++ b/chromium/media/audio/android/audio_record_input.cc @@ -7,14 +7,18 @@ #include "base/logging.h" #include "jni/AudioRecordInput_jni.h" #include "media/audio/android/audio_manager_android.h" +#include "media/base/audio_bus.h" namespace media { AudioRecordInputStream::AudioRecordInputStream( - AudioManagerAndroid* audio_manager, const AudioParameters& params) + AudioManagerAndroid* audio_manager, + const AudioParameters& params) : audio_manager_(audio_manager), callback_(NULL), - direct_buffer_address_(NULL) { + direct_buffer_address_(NULL), + audio_bus_(media::AudioBus::Create(params)), + bytes_per_sample_(params.bits_per_sample() / 8) { DVLOG(2) << __PRETTY_FUNCTION__; DCHECK(params.IsValid()); j_audio_record_.Reset( @@ -48,10 +52,13 @@ bool AudioRecordInputStream::RegisterAudioRecordInput(JNIEnv* env) { void AudioRecordInputStream::OnData(JNIEnv* env, jobject obj, jint size, jint hardware_delay_bytes) { DCHECK(direct_buffer_address_); + DCHECK_EQ(size, + audio_bus_->frames() * audio_bus_->channels() * bytes_per_sample_); // Passing zero as the volume parameter indicates there is no access to a // hardware volume slider. - callback_->OnData(this, direct_buffer_address_, size, hardware_delay_bytes, - 0.0); + audio_bus_->FromInterleaved( + direct_buffer_address_, audio_bus_->frames(), bytes_per_sample_); + callback_->OnData(this, audio_bus_.get(), hardware_delay_bytes, 0.0); } bool AudioRecordInputStream::Open() { @@ -90,8 +97,7 @@ void AudioRecordInputStream::Stop() { base::android::AttachCurrentThread(), j_audio_record_.obj()); // The Java thread must have been stopped at this point, so we are free to - // set |callback_|. - callback_->OnClose(this); + // clear |callback_|. callback_ = NULL; } |