diff options
| author | Andy Hung <hunga@google.com> | 2014-05-23 16:24:25 -0700 |
|---|---|---|
| committer | Andy Hung <hunga@google.com> | 2014-05-23 16:54:51 -0700 |
| commit | c323fec2a2639c0cf7463016d592d0eb0539657c (patch) | |
| tree | f3e47eef0c75aa2a2bfb32faff856b097b8a2533 /src | |
| parent | 76de029ec49b535ca8aa3aef777d0dfb1838889e (diff) | |
| download | android_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.cpp | 4 | ||||
| -rw-r--r-- | src/android/android_sles_conversions.h | 38 | ||||
| -rw-r--r-- | src/data.c | 2 |
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; } } @@ -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: |
