summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2014-05-23 16:24:25 -0700
committerAndy Hung <hunga@google.com>2014-05-23 16:54:51 -0700
commitc323fec2a2639c0cf7463016d592d0eb0539657c (patch)
treef3e47eef0c75aa2a2bfb32faff856b097b8a2533 /src
parent76de029ec49b535ca8aa3aef777d0dfb1838889e (diff)
downloadandroid_frameworks_wilhelm-c323fec2a2639c0cf7463016d592d0eb0539657c.tar.gz
android_frameworks_wilhelm-c323fec2a2639c0cf7463016d592d0eb0539657c.tar.bz2
android_frameworks_wilhelm-c323fec2a2639c0cf7463016d592d0eb0539657c.zip
Add 24 bit and 32 bit playback capability to OpenSL ES
slesTest_playbq is the test application. Change-Id: Iaa453471d2e9ff4e6b11ac5c68690993179fea2b
Diffstat (limited to 'src')
-rw-r--r--src/android/AudioPlayer_to_android.cpp4
-rw-r--r--src/android/android_sles_conversions.h38
-rw-r--r--src/data.c2
3 files changed, 23 insertions, 21 deletions
diff --git a/src/android/AudioPlayer_to_android.cpp b/src/android/AudioPlayer_to_android.cpp
index 356d38b..33140b8 100644
--- a/src/android/AudioPlayer_to_android.cpp
+++ b/src/android/AudioPlayer_to_android.cpp
@@ -972,6 +972,7 @@ SLresult android_audioPlayer_checkSourceSink(CAudioPlayer *pAudioPlayer)
case SL_PCMSAMPLEFORMAT_FIXED_8:
case SL_PCMSAMPLEFORMAT_FIXED_16:
case SL_PCMSAMPLEFORMAT_FIXED_24:
+ case SL_PCMSAMPLEFORMAT_FIXED_32:
break;
// others
default:
@@ -984,6 +985,7 @@ SLresult android_audioPlayer_checkSourceSink(CAudioPlayer *pAudioPlayer)
case 8:
case 16:
case 24:
+ case 32:
break;
// others
default:
@@ -1489,7 +1491,7 @@ SLresult android_audioPlayer_realize(CAudioPlayer *pAudioPlayer, SLboolean async
pAudioPlayer->mAudioTrack = new android::AudioTrack(
pAudioPlayer->mStreamType, // streamType
sampleRate, // sampleRate
- sles_to_android_sampleFormat(df_pcm->bitsPerSample), // format
+ sles_to_android_sampleFormat(df_pcm->formatType, df_pcm->containerSize), // format
sles_to_android_channelMaskOut(df_pcm->numChannels, df_pcm->channelMask),
// channel mask
0, // frameCount
diff --git a/src/android/android_sles_conversions.h b/src/android/android_sles_conversions.h
index 6e53ac9..27552b4 100644
--- a/src/android/android_sles_conversions.h
+++ b/src/android/android_sles_conversions.h
@@ -44,25 +44,25 @@ static inline uint32_t sles_to_android_sampleRate(SLuint32 sampleRateMilliHertz)
return (uint32_t)(sampleRateMilliHertz / 1000);
}
-static inline audio_format_t sles_to_android_sampleFormat(SLuint32 pcmFormat) {
- switch (pcmFormat) {
- case SL_PCMSAMPLEFORMAT_FIXED_16:
- return AUDIO_FORMAT_PCM_16_BIT;
- break;
- case SL_PCMSAMPLEFORMAT_FIXED_8:
- return AUDIO_FORMAT_PCM_8_BIT;
- break;
- case SL_PCMSAMPLEFORMAT_FIXED_24:
- return AUDIO_FORMAT_PCM_8_24_BIT;
- // Maybe one of these???
- // return AUDIO_FORMAT_PCM_32_BIT;
- // return AUDIO_FORMAT_PCM_24_BIT_PACKED;
- break;
- case SL_PCMSAMPLEFORMAT_FIXED_20:
- case SL_PCMSAMPLEFORMAT_FIXED_28:
- case SL_PCMSAMPLEFORMAT_FIXED_32:
- default:
- return AUDIO_FORMAT_INVALID;
+static inline audio_format_t sles_to_android_sampleFormat(SLuint32 formatType,
+ SLuint32 containerSize) {
+ switch (formatType) {
+ case SL_DATAFORMAT_PCM:
+ switch (containerSize) {
+ case 8:
+ return AUDIO_FORMAT_PCM_8_BIT;
+ case 16:
+ return AUDIO_FORMAT_PCM_16_BIT;
+ case 24:
+ return AUDIO_FORMAT_PCM_24_BIT_PACKED;
+ case 32:
+ return AUDIO_FORMAT_PCM_32_BIT;
+ default:
+ return AUDIO_FORMAT_INVALID;
+ }
+ break;
+ default:
+ return AUDIO_FORMAT_INVALID;
}
}
diff --git a/src/data.c b/src/data.c
index 4b25632..f840885 100644
--- a/src/data.c
+++ b/src/data.c
@@ -412,10 +412,10 @@ static SLresult checkDataFormat(const char *name, void *pFormat, DataFormat *pDa
case SL_PCMSAMPLEFORMAT_FIXED_8:
case SL_PCMSAMPLEFORMAT_FIXED_16:
case SL_PCMSAMPLEFORMAT_FIXED_24:
+ case SL_PCMSAMPLEFORMAT_FIXED_32:
break;
case SL_PCMSAMPLEFORMAT_FIXED_20:
case SL_PCMSAMPLEFORMAT_FIXED_28:
- case SL_PCMSAMPLEFORMAT_FIXED_32:
result = SL_RESULT_CONTENT_UNSUPPORTED;
break;
default: