diff options
author | Chong Zhang <chz@google.com> | 2014-10-02 12:47:08 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-10-02 12:47:08 +0000 |
commit | e7c6790095545fa4e2bd6d534ae8d8a6fb486f37 (patch) | |
tree | cf4454db136eb3a76582c2f4a6c7950cf7eb88ce | |
parent | f75baebba3a35780df156d1378e18c38097f7c6c (diff) | |
parent | bc6b959b0ff5f4fc83a049cba989edc0a06ae043 (diff) | |
download | frameworks_av-e7c6790095545fa4e2bd6d534ae8d8a6fb486f37.zip frameworks_av-e7c6790095545fa4e2bd6d534ae8d8a6fb486f37.tar.gz frameworks_av-e7c6790095545fa4e2bd6d534ae8d8a6fb486f37.tar.bz2 |
am bc6b959b: am 52cb10c4: am d0b9efe7: Merge "add AAC audio decoder params for PCM limiter enable" into lmp-dev
* commit 'bc6b959b0ff5f4fc83a049cba989edc0a06ae043':
add AAC audio decoder params for PCM limiter enable
-rw-r--r-- | include/media/stagefright/ACodec.h | 3 | ||||
-rw-r--r-- | media/libstagefright/ACodec.cpp | 12 | ||||
-rw-r--r-- | media/libstagefright/codecs/aacdec/SoftAAC2.cpp | 4 |
3 files changed, 16 insertions, 3 deletions
diff --git a/include/media/stagefright/ACodec.h b/include/media/stagefright/ACodec.h index da4c20c..df0dc58 100644 --- a/include/media/stagefright/ACodec.h +++ b/include/media/stagefright/ACodec.h @@ -267,7 +267,8 @@ private: bool encoder, int32_t numChannels, int32_t sampleRate, int32_t bitRate, int32_t aacProfile, bool isADTS, int32_t sbrMode, - int32_t maxOutputChannelCount, const drcParams_t& drc); + int32_t maxOutputChannelCount, const drcParams_t& drc, + int32_t pcmLimiterEnable); status_t setupAC3Codec(bool encoder, int32_t numChannels, int32_t sampleRate); diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index 32365b8..d35f265 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -1359,6 +1359,7 @@ status_t ACodec::configureCodec( int32_t isADTS, aacProfile; int32_t sbrMode; int32_t maxOutputChannelCount; + int32_t pcmLimiterEnable; drcParams_t drc; if (!msg->findInt32("is-adts", &isADTS)) { isADTS = 0; @@ -1373,6 +1374,10 @@ status_t ACodec::configureCodec( if (!msg->findInt32("aac-max-output-channel_count", &maxOutputChannelCount)) { maxOutputChannelCount = -1; } + if (!msg->findInt32("aac-pcm-limiter-enable", &pcmLimiterEnable)) { + // value is unknown + pcmLimiterEnable = -1; + } if (!msg->findInt32("aac-encoded-target-level", &drc.encodedTargetLevel)) { // value is unknown drc.encodedTargetLevel = -1; @@ -1396,7 +1401,8 @@ status_t ACodec::configureCodec( err = setupAACCodec( encoder, numChannels, sampleRate, bitRate, aacProfile, - isADTS != 0, sbrMode, maxOutputChannelCount, drc); + isADTS != 0, sbrMode, maxOutputChannelCount, drc, + pcmLimiterEnable); } } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_NB)) { err = setupAMRCodec(encoder, false /* isWAMR */, bitRate); @@ -1561,7 +1567,8 @@ status_t ACodec::selectAudioPortFormat( status_t ACodec::setupAACCodec( bool encoder, int32_t numChannels, int32_t sampleRate, int32_t bitRate, int32_t aacProfile, bool isADTS, int32_t sbrMode, - int32_t maxOutputChannelCount, const drcParams_t& drc) { + int32_t maxOutputChannelCount, const drcParams_t& drc, + int32_t pcmLimiterEnable) { if (encoder && isADTS) { return -EINVAL; } @@ -1691,6 +1698,7 @@ status_t ACodec::setupAACCodec( presentation.nHeavyCompression = drc.heavyCompression; presentation.nTargetReferenceLevel = drc.targetRefLevel; presentation.nEncodedTargetLevel = drc.encodedTargetLevel; + presentation.nPCMLimiterEnable = pcmLimiterEnable; status_t res = mOMX->setParameter(mNode, OMX_IndexParamAudioAac, &profile, sizeof(profile)); if (res == OK) { diff --git a/media/libstagefright/codecs/aacdec/SoftAAC2.cpp b/media/libstagefright/codecs/aacdec/SoftAAC2.cpp index e701e9e..1b6eac4 100644 --- a/media/libstagefright/codecs/aacdec/SoftAAC2.cpp +++ b/media/libstagefright/codecs/aacdec/SoftAAC2.cpp @@ -368,6 +368,10 @@ OMX_ERRORTYPE SoftAAC2::internalSetParameter( aacPresParams->nEncodedTargetLevel); updateDrcWrapper = true; } + if (aacPresParams->nPCMLimiterEnable >= 0) { + aacDecoder_SetParam(mAACDecoder, AAC_PCM_LIMITER_ENABLE, + (aacPresParams->nPCMLimiterEnable != 0)); + } if (updateDrcWrapper) { mDrcWrap.update(); } |