summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2010-07-18 17:57:01 -0700
committerJames Dong <jdong@google.com>2010-07-19 12:41:35 -0700
commit6cad99fefc7275f30886962e4193a336a2144b7b (patch)
tree61fd8673992b3cc9ed4543af8c7d3a56944a902e /media/libstagefright/codecs
parent46bf665ea3687f06069ebd1a0acd01ed7b5ac9cb (diff)
downloadframeworks_av-6cad99fefc7275f30886962e4193a336a2144b7b.zip
frameworks_av-6cad99fefc7275f30886962e4193a336a2144b7b.tar.gz
frameworks_av-6cad99fefc7275f30886962e4193a336a2144b7b.tar.bz2
Fix MPEG4Extractor to extract sampling frequency correctly when SBR is enabled.
Change-Id: I883c81dad3ea465e71cb5590e89d763671a90ff8
Diffstat (limited to 'media/libstagefright/codecs')
-rw-r--r--media/libstagefright/codecs/aacdec/AACDecoder.cpp22
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) {