summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2013-03-14 22:02:37 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-03-14 22:02:37 +0000
commit1cea316d40b306f5d710175cd77c2ae4161c12e1 (patch)
treeb3d818ce189f728f7a49c1b0dc66b0d96bae9677 /media
parentacd695c42749f8821b0a0cc27739ddf096c6d4e8 (diff)
parent595ee7ba5f988ff34527226d0142a109ca3b049e (diff)
downloadframeworks_av-1cea316d40b306f5d710175cd77c2ae4161c12e1.zip
frameworks_av-1cea316d40b306f5d710175cd77c2ae4161c12e1.tar.gz
frameworks_av-1cea316d40b306f5d710175cd77c2ae4161c12e1.tar.bz2
Merge "Parse SBR extension sample rate" into jb-mr2-dev
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/MPEG4Extractor.cpp31
1 files changed, 22 insertions, 9 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp
index b2e60be..56fad60 100644
--- a/media/libstagefright/MPEG4Extractor.cpp
+++ b/media/libstagefright/MPEG4Extractor.cpp
@@ -2067,17 +2067,30 @@ status_t MPEG4Extractor::updateAudioTrackInfoFromESDS_MPEG4Audio(
sampleRate = br.getBits(24);
numChannels = br.getBits(4);
} else {
- static uint32_t kSamplingRate[] = {
- 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050,
- 16000, 12000, 11025, 8000, 7350
- };
-
- if (freqIndex == 13 || freqIndex == 14) {
- return ERROR_MALFORMED;
+ numChannels = br.getBits(4);
+ if (objectType == 5) {
+ // SBR specific config per 14496-3 table 1.13
+ freqIndex = br.getBits(4);
+ if (freqIndex == 15) {
+ if (csd_size < 8) {
+ return ERROR_MALFORMED;
+ }
+ sampleRate = br.getBits(24);
+ }
}
- sampleRate = kSamplingRate[freqIndex];
- numChannels = br.getBits(4);
+ if (sampleRate == 0) {
+ static uint32_t kSamplingRate[] = {
+ 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050,
+ 16000, 12000, 11025, 8000, 7350
+ };
+
+ if (freqIndex == 13 || freqIndex == 14) {
+ return ERROR_MALFORMED;
+ }
+
+ sampleRate = kSamplingRate[freqIndex];
+ }
}
if (numChannels == 0) {