diff options
author | John Grossman <johngro@google.com> | 2012-09-06 12:32:37 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-09-06 12:32:38 -0700 |
commit | c56857b4cd12cd4bc3361e375f5b7554277ce9d7 (patch) | |
tree | 1c34e45c3af498c9a703c2d424b2b587eb1232ff /media | |
parent | 96150cfc6b9ae93b6c4b60b5c7889a7a90af5def (diff) | |
parent | a39ad61a1c9c69c2cc60f5d14243dd56040f8571 (diff) | |
download | frameworks_av-c56857b4cd12cd4bc3361e375f5b7554277ce9d7.zip frameworks_av-c56857b4cd12cd4bc3361e375f5b7554277ce9d7.tar.gz frameworks_av-c56857b4cd12cd4bc3361e375f5b7554277ce9d7.tar.bz2 |
Merge "Fix calculations for an obscure combo of MPEG audio options." into jb-mr1-dev
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/MP3Extractor.cpp | 9 | ||||
-rw-r--r-- | media/libstagefright/avc_utils.cpp | 5 |
2 files changed, 11 insertions, 3 deletions
diff --git a/media/libstagefright/MP3Extractor.cpp b/media/libstagefright/MP3Extractor.cpp index 6abaf23..d94054b 100644 --- a/media/libstagefright/MP3Extractor.cpp +++ b/media/libstagefright/MP3Extractor.cpp @@ -228,6 +228,7 @@ protected: virtual ~MP3Source(); private: + static const size_t kMaxFrameSize; sp<MetaData> mMeta; sp<DataSource> mDataSource; off64_t mFirstFramePos; @@ -405,6 +406,13 @@ sp<MetaData> MP3Extractor::getTrackMetaData(size_t index, uint32_t flags) { //////////////////////////////////////////////////////////////////////////////// +// The theoretical maximum frame size for an MPEG audio stream should occur +// while playing a Layer 2, MPEGv2.5 audio stream at 160kbps (with padding). +// The size of this frame should be... +// ((1152 samples/frame * 160000 bits/sec) / +// (8000 samples/sec * 8 bits/byte)) + 1 padding byte/frame = 2881 bytes/frame. +// Set our max frame size to the nearest power of 2 above this size (aka, 4kB) +const size_t MP3Source::kMaxFrameSize = (1 << 12); /* 4096 bytes */ MP3Source::MP3Source( const sp<MetaData> &meta, const sp<DataSource> &source, off64_t first_frame_pos, uint32_t fixed_header, @@ -433,7 +441,6 @@ status_t MP3Source::start(MetaData *) { mGroup = new MediaBufferGroup; - const size_t kMaxFrameSize = 32768; mGroup->add_buffer(new MediaBuffer(kMaxFrameSize)); mCurrentPos = mFirstFramePos; diff --git a/media/libstagefright/avc_utils.cpp b/media/libstagefright/avc_utils.cpp index 65c1848..a141752 100644 --- a/media/libstagefright/avc_utils.cpp +++ b/media/libstagefright/avc_utils.cpp @@ -600,7 +600,7 @@ bool GetMPEGAudioFrameSize( bitrate = kBitrateV2[bitrate_index - 1]; if (out_num_samples) { - *out_num_samples = 576; + *out_num_samples = (layer == 1 /* L3 */) ? 576 : 1152; } } @@ -612,7 +612,8 @@ bool GetMPEGAudioFrameSize( *frame_size = 144000 * bitrate / sampling_rate + padding; } else { // V2 or V2.5 - *frame_size = 72000 * bitrate / sampling_rate + padding; + size_t tmp = (layer == 1 /* L3 */) ? 72000 : 144000; + *frame_size = tmp * bitrate / sampling_rate + padding; } } |