From e3fdb6012905d593c9350958f4429d0d670adae4 Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Fri, 8 Aug 2014 15:52:38 -0700 Subject: Fix WAVExtractor to output full audio frames only Fixes NuPlayer crash from MediaBuffers ending in partial audio frames. Bug: 16881623 Change-Id: Ia80a9910f99245e645860c00ae85118cc85bef57 --- media/libstagefright/WAVExtractor.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'media/libstagefright/WAVExtractor.cpp') diff --git a/media/libstagefright/WAVExtractor.cpp b/media/libstagefright/WAVExtractor.cpp index 7124fd3..a4a651d 100644 --- a/media/libstagefright/WAVExtractor.cpp +++ b/media/libstagefright/WAVExtractor.cpp @@ -439,6 +439,10 @@ status_t WAVSource::read( maxBytesToRead = maxBytesAvailable; } + // read only integral amounts of audio unit frames. + const size_t inputUnitFrameSize = mNumChannels * mBitsPerSample / 8; + maxBytesToRead -= maxBytesToRead % inputUnitFrameSize; + if (mWaveFormat == WAVE_FORMAT_MSGSM) { // Microsoft packs 2 frames into 65 bytes, rather than using separate 33-byte frames, // so read multiples of 65, and use smaller buffers to account for ~10:1 expansion ratio -- cgit v1.1