summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MPEG4Extractor.cpp
diff options
context:
space:
mode:
authorDave Burke <daveburke@google.com>2012-04-19 00:14:27 -0700
committerDave Burke <daveburke@google.com>2012-04-25 22:02:58 -0700
commitaeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b (patch)
treef8b459d895acef1717c96cb7133675dda3e458b7 /media/libstagefright/MPEG4Extractor.cpp
parente0fa467e1150c65a7b1b1ed904c579b40f97c9df (diff)
downloadframeworks_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.cpp22
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) {