Loading media/libstagefright/codecs/aacdec/SoftAAC2.cpp +43 −18 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/hexdump.h> #include <media/stagefright/MediaErrors.h> #define FILEREAD_MAX_LAYERS 2 Loading Loading @@ -336,8 +337,13 @@ void SoftAAC2::onQueueFilled(OMX_U32 portIndex) { const uint8_t *adtsHeader = inHeader->pBuffer + inHeader->nOffset; CHECK_GE(inHeader->nFilledLen, 7); bool signalError = false; if (inHeader->nFilledLen < 7) { ALOGE("Audio data too short to contain even the ADTS header. " "Got %ld bytes.", inHeader->nFilledLen); hexdump(adtsHeader, inHeader->nFilledLen); signalError = true; } else { bool protectionAbsent = (adtsHeader[1] & 1); unsigned aac_frame_length = Loading @@ -345,8 +351,14 @@ void SoftAAC2::onQueueFilled(OMX_U32 portIndex) { | (adtsHeader[4] << 3) | (adtsHeader[5] >> 5); CHECK_GE(inHeader->nFilledLen, aac_frame_length); if (inHeader->nFilledLen < aac_frame_length) { ALOGE("Not enough audio data for the complete frame. " "Got %ld bytes, frame size according to the ADTS " "header is %u bytes.", inHeader->nFilledLen, aac_frame_length); hexdump(adtsHeader, inHeader->nFilledLen); signalError = true; } else { adtsHeaderSize = (protectionAbsent ? 7 : 9); inBuffer[0] = (UCHAR *)adtsHeader + adtsHeaderSize; Loading @@ -354,6 +366,19 @@ void SoftAAC2::onQueueFilled(OMX_U32 portIndex) { inHeader->nOffset += adtsHeaderSize; inHeader->nFilledLen -= adtsHeaderSize; } if (signalError) { mSignalledError = true; notify(OMX_EventError, OMX_ErrorStreamCorrupt, ERROR_MALFORMED, NULL); return; } } } else { inBuffer[0] = inHeader->pBuffer + inHeader->nOffset; inBufferLength[0] = inHeader->nFilledLen; Loading Loading
media/libstagefright/codecs/aacdec/SoftAAC2.cpp +43 −18 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/hexdump.h> #include <media/stagefright/MediaErrors.h> #define FILEREAD_MAX_LAYERS 2 Loading Loading @@ -336,8 +337,13 @@ void SoftAAC2::onQueueFilled(OMX_U32 portIndex) { const uint8_t *adtsHeader = inHeader->pBuffer + inHeader->nOffset; CHECK_GE(inHeader->nFilledLen, 7); bool signalError = false; if (inHeader->nFilledLen < 7) { ALOGE("Audio data too short to contain even the ADTS header. " "Got %ld bytes.", inHeader->nFilledLen); hexdump(adtsHeader, inHeader->nFilledLen); signalError = true; } else { bool protectionAbsent = (adtsHeader[1] & 1); unsigned aac_frame_length = Loading @@ -345,8 +351,14 @@ void SoftAAC2::onQueueFilled(OMX_U32 portIndex) { | (adtsHeader[4] << 3) | (adtsHeader[5] >> 5); CHECK_GE(inHeader->nFilledLen, aac_frame_length); if (inHeader->nFilledLen < aac_frame_length) { ALOGE("Not enough audio data for the complete frame. " "Got %ld bytes, frame size according to the ADTS " "header is %u bytes.", inHeader->nFilledLen, aac_frame_length); hexdump(adtsHeader, inHeader->nFilledLen); signalError = true; } else { adtsHeaderSize = (protectionAbsent ? 7 : 9); inBuffer[0] = (UCHAR *)adtsHeader + adtsHeaderSize; Loading @@ -354,6 +366,19 @@ void SoftAAC2::onQueueFilled(OMX_U32 portIndex) { inHeader->nOffset += adtsHeaderSize; inHeader->nFilledLen -= adtsHeaderSize; } if (signalError) { mSignalledError = true; notify(OMX_EventError, OMX_ErrorStreamCorrupt, ERROR_MALFORMED, NULL); return; } } } else { inBuffer[0] = inHeader->pBuffer + inHeader->nOffset; inBufferLength[0] = inHeader->nFilledLen; Loading