Bug 3326605: AudioRecorder uses wrong channel mask
Change-Id: I2121211b0202bc39100d74232d63be94c7e8a8de
diff --git a/opensles/libopensles/android_AudioPlayer.cpp b/opensles/libopensles/android_AudioPlayer.cpp
index c52adaa..79d2313 100644
--- a/opensles/libopensles/android_AudioPlayer.cpp
+++ b/opensles/libopensles/android_AudioPlayer.cpp
@@ -1026,7 +1026,8 @@
pAudioPlayer->mStreamType, // streamType
sampleRate, // sampleRate
sles_to_android_sampleFormat(df_pcm->bitsPerSample), // format
- sles_to_android_channelMask(df_pcm->numChannels, df_pcm->channelMask),//channel mask
+ sles_to_android_channelMaskOut(df_pcm->numChannels, df_pcm->channelMask),
+ //channel mask
0, // frameCount (here min)
0, // flags
audioTrack_callBack_pullFromBuffQueue, // callback
diff --git a/opensles/libopensles/android_AudioRecorder.cpp b/opensles/libopensles/android_AudioRecorder.cpp
index a5c6ceb..06897ab 100644
--- a/opensles/libopensles/android_AudioRecorder.cpp
+++ b/opensles/libopensles/android_AudioRecorder.cpp
@@ -388,7 +388,8 @@
ar->mAudioRecord->set(ar->mRecordSource, // source
sles_to_android_sampleRate(ar->mSampleRateMilliHz), // sample rate in Hertz
android::AudioSystem::PCM_16_BIT, //FIXME use format from buffer queue sink
- sles_to_android_channelMask(ar->mNumChannels, 0 /*no channel mask*/), // channel config
+ sles_to_android_channelMaskIn(ar->mNumChannels, 0 /*no channel mask*/),
+ // channel config
0, //frameCount min
0, // flags
audioRecorder_callback,// callback_t
diff --git a/opensles/libopensles/android_sles_conversions.h b/opensles/libopensles/android_sles_conversions.h
index 9bdf6ea..a224c96 100644
--- a/opensles/libopensles/android_sles_conversions.h
+++ b/opensles/libopensles/android_sles_conversions.h
@@ -60,7 +60,15 @@
}
-static inline int sles_to_android_channelMask(SLuint32 nbChannels, SLuint32 channelMask) {
+static inline int sles_to_android_channelMaskIn(SLuint32 nbChannels, SLuint32 channelMask) {
+ // FIXME handle channel mask mapping between SL ES and Android
+ return (nbChannels == 1 ?
+ android::AudioSystem::CHANNEL_IN_MONO :
+ android::AudioSystem::CHANNEL_IN_STEREO);
+}
+
+
+static inline int sles_to_android_channelMaskOut(SLuint32 nbChannels, SLuint32 channelMask) {
// FIXME handle channel mask mapping between SL ES and Android
return (nbChannels == 1 ?
android::AudioSystem::CHANNEL_OUT_MONO :