diff options
author | Dave Burke <daveburke@google.com> | 2012-04-19 00:14:27 -0700 |
---|---|---|
committer | Dave Burke <daveburke@google.com> | 2012-04-25 22:02:58 -0700 |
commit | aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b (patch) | |
tree | f8b459d895acef1717c96cb7133675dda3e458b7 /media/libstagefright/MPEG4Extractor.cpp | |
parent | e0fa467e1150c65a7b1b1ed904c579b40f97c9df (diff) | |
download | frameworks_av-aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b.zip frameworks_av-aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b.tar.gz frameworks_av-aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b.tar.bz2 |
Add Fraunhofer AAC encoder with AAC-ELD support.
Change-Id: I6cd499d257d72f50a5b508bed97796a591a51506
Diffstat (limited to 'media/libstagefright/MPEG4Extractor.cpp')
-rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index 9385b8a..a572541 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -28,6 +28,7 @@ #include <stdlib.h> #include <string.h> +#include <media/stagefright/foundation/ABitReader.h> #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/DataSource.h> @@ -1824,26 +1825,23 @@ status_t MPEG4Extractor::updateAudioTrackInfoFromESDS_MPEG4Audio( return ERROR_MALFORMED; } - uint32_t objectType = csd[0] >> 3; + ABitReader br(csd, csd_size); + uint32_t objectType = br.getBits(5); - if (objectType == 31) { - return ERROR_UNSUPPORTED; + if (objectType == 31) { // AAC-ELD => additional 6 bits + objectType = 32 + br.getBits(6); } - uint32_t freqIndex = (csd[0] & 7) << 1 | (csd[1] >> 7); + uint32_t freqIndex = br.getBits(4); + int32_t sampleRate = 0; int32_t numChannels = 0; if (freqIndex == 15) { if (csd_size < 5) { return ERROR_MALFORMED; } - - sampleRate = (csd[1] & 0x7f) << 17 - | csd[2] << 9 - | csd[3] << 1 - | (csd[4] >> 7); - - numChannels = (csd[4] >> 3) & 15; + sampleRate = br.getBits(24); + numChannels = br.getBits(4); } else { static uint32_t kSamplingRate[] = { 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, @@ -1855,7 +1853,7 @@ status_t MPEG4Extractor::updateAudioTrackInfoFromESDS_MPEG4Audio( } sampleRate = kSamplingRate[freqIndex]; - numChannels = (csd[1] >> 3) & 15; + numChannels = br.getBits(4); } if (numChannels == 0) { |