diff options
author | Eric Laurent <elaurent@google.com> | 2013-12-06 11:51:42 -0800 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2013-12-21 01:19:06 +0000 |
commit | db170bb1cae145d07efc803a3c208963de0c6087 (patch) | |
tree | bc7f1dedcbebc5aef585e66c2baa67df8d1d8bf4 | |
parent | 1777ed30bfb3b9c1edc037a1b5482d5ab8f28b9b (diff) | |
download | frameworks_av-db170bb1cae145d07efc803a3c208963de0c6087.zip frameworks_av-db170bb1cae145d07efc803a3c208963de0c6087.tar.gz frameworks_av-db170bb1cae145d07efc803a3c208963de0c6087.tar.bz2 |
stagefright: do not offload LD-AAC decoding
For now, do not offload LD and ELD AAC decoding because there
is no way to know if it is supported by the audio DSP implementation.
The longer term fix will be to have mapMimeToAudioFormat() use the
audio object type in track metadata to refine the AAC format and the
audio HAL list supported AAC profiles.
Change-Id: Iaa88ecf3f4ae42ad48c1b42a9b007dd80eb88147
-rw-r--r-- | include/media/stagefright/MetaData.h | 1 | ||||
-rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 3 | ||||
-rw-r--r-- | media/libstagefright/Utils.cpp | 11 |
3 files changed, 15 insertions, 0 deletions
diff --git a/include/media/stagefright/MetaData.h b/include/media/stagefright/MetaData.h index de3fc36..3a87474 100644 --- a/include/media/stagefright/MetaData.h +++ b/include/media/stagefright/MetaData.h @@ -134,6 +134,7 @@ enum { kKeyRequiresSecureBuffers = 'secu', // bool (int32_t) kKeyIsADTS = 'adts', // bool (int32_t) + kKeyAACAOT = 'aaot', // int32_t // If a MediaBuffer's data represents (at least partially) encrypted // data, the following fields aid in decryption. diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index b419f53..dc73980 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -2431,6 +2431,9 @@ status_t MPEG4Extractor::updateAudioTrackInfoFromESDS_MPEG4Audio( objectType = 32 + br.getBits(6); } + //keep AOT type + mLastTrack->meta->setInt32(kKeyAACAOT, objectType); + uint32_t freqIndex = br.getBits(4); int32_t sampleRate = 0; diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp index 9041c21..216a329 100644 --- a/media/libstagefright/Utils.cpp +++ b/media/libstagefright/Utils.cpp @@ -562,6 +562,17 @@ bool canOffloadStream(const sp<MetaData>& meta, bool hasVideo, return false; } + // check whether it is ELD/LD content -> no offloading + // FIXME: this should depend on audio DSP capabilities. mapMimeToAudioFormat() should use the + // metadata to refine the AAC format and the audio HAL should only list supported profiles. + int32_t aacaot = -1; + if (meta->findInt32(kKeyAACAOT, &aacaot)) { + if (aacaot == 23 || aacaot == 39 ) { + ALOGV("track of type '%s' is ELD/LD content", mime); + return false; + } + } + int32_t srate = -1; if (!meta->findInt32(kKeySampleRate, &srate)) { ALOGV("track of type '%s' does not publish sample rate", mime); |