diff options
author | Marco Nelissen <marcone@google.com> | 2013-03-14 22:02:37 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-03-14 22:02:37 +0000 |
commit | 1cea316d40b306f5d710175cd77c2ae4161c12e1 (patch) | |
tree | b3d818ce189f728f7a49c1b0dc66b0d96bae9677 /media | |
parent | acd695c42749f8821b0a0cc27739ddf096c6d4e8 (diff) | |
parent | 595ee7ba5f988ff34527226d0142a109ca3b049e (diff) | |
download | frameworks_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.cpp | 31 |
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) { |