Index: media/audio/android/opensles_input.cc |
diff --git a/media/audio/android/opensles_input.cc b/media/audio/android/opensles_input.cc |
index b927edb6f7ddb49b23eb73f72a635adfb7799b99..1ef3aaca5ef917379ce0b8da5f9fdfbd961a4dcc 100644 |
--- a/media/audio/android/opensles_input.cc |
+++ b/media/audio/android/opensles_input.cc |
@@ -7,6 +7,7 @@ |
#include "base/debug/trace_event.h" |
#include "base/logging.h" |
#include "media/audio/android/audio_manager_android.h" |
+#include "media/base/audio_bus.h" |
#define LOG_ON_FAILURE_AND_RETURN(op, ...) \ |
do { \ |
@@ -27,7 +28,8 @@ OpenSLESInputStream::OpenSLESInputStream(AudioManagerAndroid* audio_manager, |
simple_buffer_queue_(NULL), |
active_buffer_index_(0), |
buffer_size_bytes_(0), |
- started_(false) { |
+ started_(false), |
+ audio_bus_(media::AudioBus::Create(params)) { |
DVLOG(2) << __PRETTY_FUNCTION__; |
format_.formatType = SL_DATAFORMAT_PCM; |
format_.numChannels = static_cast<SLuint32>(params.channels()); |
@@ -295,13 +297,14 @@ void OpenSLESInputStream::ReadBufferQueue() { |
TRACE_EVENT0("audio", "OpenSLESOutputStream::ReadBufferQueue"); |
+ // Convert from interleaved format to deinterleaved audio bus format. |
+ audio_bus_->FromInterleaved(audio_data_[active_buffer_index_], |
+ audio_bus_->frames(), |
+ format_.bitsPerSample / 8); |
+ |
// TODO(henrika): Investigate if it is possible to get an accurate |
// delay estimation. |
- callback_->OnData(this, |
- audio_data_[active_buffer_index_], |
- buffer_size_bytes_, |
- buffer_size_bytes_, |
- 0.0); |
+ callback_->OnData(this, audio_bus_.get(), buffer_size_bytes_, 0.0); |
// Done with this buffer. Send it to device for recording. |
SLresult err = |