diff options
author | Eric Laurent <elaurent@google.com> | 2013-12-06 11:51:42 -0800 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2014-03-06 11:16:08 -0800 |
commit | f590f948e6c0fe3c54008dd7802fd513f127792d (patch) | |
tree | 1bd64930d69158418ac7c54c9d9a9b3a16dab973 /media | |
parent | 3c836e7882e88de42e0e600627de433b61e78621 (diff) | |
download | frameworks_av-f590f948e6c0fe3c54008dd7802fd513f127792d.zip frameworks_av-f590f948e6c0fe3c54008dd7802fd513f127792d.tar.gz frameworks_av-f590f948e6c0fe3c54008dd7802fd513f127792d.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.
Bug: 11697128.
Change-Id: Iaa88ecf3f4ae42ad48c1b42a9b007dd80eb88147
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 3 | ||||
-rw-r--r-- | media/libstagefright/Utils.cpp | 11 |
2 files changed, 14 insertions, 0 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index 6f51c39..491b4d1 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -2297,6 +2297,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); |