diff options
author | Andreas Huber <andih@google.com> | 2010-02-26 09:47:28 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-02-26 09:47:28 -0800 |
commit | 749c570be1ed496b4fe2b48c421b7b82ab141f86 (patch) | |
tree | 70a44a7cf9b3db830065864ed4041cc501eb68f2 /media/libstagefright | |
parent | e379710cc5914c7ed10e9236079ec7f02c99ee4e (diff) | |
download | frameworks_base-749c570be1ed496b4fe2b48c421b7b82ab141f86.zip frameworks_base-749c570be1ed496b4fe2b48c421b7b82ab141f86.tar.gz frameworks_base-749c570be1ed496b4fe2b48c421b7b82ab141f86.tar.bz2 |
The PV aac software decoder screws up if playing a mono-AACplus stream unless we output stereo data. Now we always output stereo data as the legacy OMX nodes did.
related-to-bug: 2472545
Diffstat (limited to 'media/libstagefright')
-rw-r--r-- | media/libstagefright/codecs/aacdec/AACDecoder.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/media/libstagefright/codecs/aacdec/AACDecoder.cpp b/media/libstagefright/codecs/aacdec/AACDecoder.cpp index ff51e88..f0b66c9 100644 --- a/media/libstagefright/codecs/aacdec/AACDecoder.cpp +++ b/media/libstagefright/codecs/aacdec/AACDecoder.cpp @@ -57,9 +57,9 @@ status_t AACDecoder::start(MetaData *params) { mConfig->aacPlusUpsamplingFactor = 0; mConfig->aacPlusEnabled = false; - int32_t numChannels; - CHECK(mSource->getFormat()->findInt32(kKeyChannelCount, &numChannels)); - mConfig->desiredChannels = numChannels; + // The software decoder doesn't properly support mono output on + // AACplus files. Always output stereo. + mConfig->desiredChannels = 2; UInt32 memRequirements = PVMP4AudioDecoderGetMemRequirements(); mDecoderBuf = malloc(memRequirements); @@ -127,14 +127,16 @@ status_t AACDecoder::stop() { sp<MetaData> AACDecoder::getFormat() { sp<MetaData> srcFormat = mSource->getFormat(); - int32_t numChannels; int32_t sampleRate; - CHECK(srcFormat->findInt32(kKeyChannelCount, &numChannels)); CHECK(srcFormat->findInt32(kKeySampleRate, &sampleRate)); sp<MetaData> meta = new MetaData; meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_RAW); - meta->setInt32(kKeyChannelCount, numChannels); + + // We'll always output stereo, regardless of how many channels are + // present in the input due to decoder limitations. + meta->setInt32(kKeyChannelCount, 2); + meta->setInt32(kKeySampleRate, sampleRate); int64_t durationUs; |