diff options
author | James Dong <jdong@google.com> | 2010-07-18 17:57:01 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2010-07-19 12:41:35 -0700 |
commit | 0c5f2ec25faf1a34ea336e31086ef8c4047ae51b (patch) | |
tree | 8b1b75ef66abd53734b85347e56edd0195a38675 /media/libstagefright/codecs/aacdec | |
parent | faf775e772e329e821d81ba735474df097b1e1e9 (diff) | |
download | frameworks_base-0c5f2ec25faf1a34ea336e31086ef8c4047ae51b.zip frameworks_base-0c5f2ec25faf1a34ea336e31086ef8c4047ae51b.tar.gz frameworks_base-0c5f2ec25faf1a34ea336e31086ef8c4047ae51b.tar.bz2 |
Fix MPEG4Extractor to extract sampling frequency correctly when SBR is enabled.
Change-Id: I883c81dad3ea465e71cb5590e89d763671a90ff8
Diffstat (limited to 'media/libstagefright/codecs/aacdec')
-rw-r--r-- | media/libstagefright/codecs/aacdec/AACDecoder.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/media/libstagefright/codecs/aacdec/AACDecoder.cpp b/media/libstagefright/codecs/aacdec/AACDecoder.cpp index f3b281f..8ae1135 100644 --- a/media/libstagefright/codecs/aacdec/AACDecoder.cpp +++ b/media/libstagefright/codecs/aacdec/AACDecoder.cpp @@ -99,15 +99,6 @@ status_t AACDecoder::initCheck() { != MP4AUDEC_SUCCESS) { return ERROR_UNSUPPORTED; } - - // Check on the sampling rate to see whether it is changed. - int32_t sampleRate; - CHECK(mMeta->findInt32(kKeySampleRate, &sampleRate)); - if (mConfig->samplingRate != sampleRate) { - mMeta->setInt32(kKeySampleRate, mConfig->samplingRate); - LOGW("Sample rate was %d, but now is %d", - sampleRate, mConfig->samplingRate); - } } return OK; } @@ -215,6 +206,19 @@ status_t AACDecoder::read( Int decoderErr = PVMP4AudioDecodeFrame(mConfig, mDecoderBuf); + // Check on the sampling rate to see whether it is changed. + int32_t sampleRate; + CHECK(mMeta->findInt32(kKeySampleRate, &sampleRate)); + if (mConfig->samplingRate != sampleRate) { + mMeta->setInt32(kKeySampleRate, mConfig->samplingRate); + LOGW("Sample rate was %d, but now is %d", + sampleRate, mConfig->samplingRate); + buffer->release(); + mInputBuffer->release(); + mInputBuffer = NULL; + return INFO_FORMAT_CHANGED; + } + size_t numOutBytes = mConfig->frameLength * sizeof(int16_t) * mConfig->desiredChannels; if (mConfig->aacPlusUpsamplingFactor == 2) { |