summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/aacdec/AACDecoder.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-03-17 11:29:35 -0700
committerAndreas Huber <andih@google.com>2010-03-17 11:29:35 -0700
commitfe1dee83ed31e8e03a2a5268779bcf79e6e42f24 (patch)
tree94abeb2decdc25285e0a9fdceee7caddb65b175a /media/libstagefright/codecs/aacdec/AACDecoder.cpp
parentd246ca811575eee9122070648e93b7484f6edd81 (diff)
downloadframeworks_base-fe1dee83ed31e8e03a2a5268779bcf79e6e42f24.zip
frameworks_base-fe1dee83ed31e8e03a2a5268779bcf79e6e42f24.tar.gz
frameworks_base-fe1dee83ed31e8e03a2a5268779bcf79e6e42f24.tar.bz2
Instead of asserting that nothing bad happened during (software-)AAC decoding, return a runtime error if appropriate.
Change-Id: I175492aba8fd6cc1320d047bd2608750d7b193f9 related-to-bug: 2492187
Diffstat (limited to 'media/libstagefright/codecs/aacdec/AACDecoder.cpp')
-rw-r--r--media/libstagefright/codecs/aacdec/AACDecoder.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/media/libstagefright/codecs/aacdec/AACDecoder.cpp b/media/libstagefright/codecs/aacdec/AACDecoder.cpp
index f0b66c9..fe84b38 100644
--- a/media/libstagefright/codecs/aacdec/AACDecoder.cpp
+++ b/media/libstagefright/codecs/aacdec/AACDecoder.cpp
@@ -199,7 +199,16 @@ status_t AACDecoder::read(
mConfig->pOutputBuffer_plus = NULL;
mConfig->repositionFlag = false;
- CHECK_EQ(PVMP4AudioDecodeFrame(mConfig, mDecoderBuf), MP4AUDEC_SUCCESS);
+ Int decoderErr = PVMP4AudioDecodeFrame(mConfig, mDecoderBuf);
+
+ if (decoderErr != MP4AUDEC_SUCCESS) {
+ LOGE("AAC decoder returned error %d", decoderErr);
+
+ buffer->release();
+ buffer = NULL;
+
+ return ERROR_MALFORMED;
+ }
buffer->set_range(
0, mConfig->frameLength * sizeof(int16_t) * mConfig->desiredChannels);