diff options
author | Marco Nelissen <marcone@google.com> | 2013-03-14 14:50:47 -0700 |
---|---|---|
committer | Marco Nelissen <marcone@google.com> | 2013-03-14 14:50:47 -0700 |
commit | 0364a91b4230e5b0631f96579e91a0eb2efa48c3 (patch) | |
tree | aba5897497b0ceb9a575ed4a1096a9f2d57930ae /media/libstagefright/MPEG4Extractor.cpp | |
parent | 060c68497a9ab59fd71ffbe7c9a7cd3e58489265 (diff) | |
download | frameworks_av-0364a91b4230e5b0631f96579e91a0eb2efa48c3.zip frameworks_av-0364a91b4230e5b0631f96579e91a0eb2efa48c3.tar.gz frameworks_av-0364a91b4230e5b0631f96579e91a0eb2efa48c3.tar.bz2 |
Parse SBR extension sample rate
Change-Id: Ib6f6994228a279ee10b389515fba04516c7c42ba
Diffstat (limited to 'media/libstagefright/MPEG4Extractor.cpp')
-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) { |