summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2014-10-02 12:47:08 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-02 12:47:08 +0000
commite7c6790095545fa4e2bd6d534ae8d8a6fb486f37 (patch)
treecf4454db136eb3a76582c2f4a6c7950cf7eb88ce
parentf75baebba3a35780df156d1378e18c38097f7c6c (diff)
parentbc6b959b0ff5f4fc83a049cba989edc0a06ae043 (diff)
downloadframeworks_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.h3
-rw-r--r--media/libstagefright/ACodec.cpp12
-rw-r--r--media/libstagefright/codecs/aacdec/SoftAAC2.cpp4
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();
}