Loading media/libstagefright/codecs/mp3dec/SoftMP3.cpp +17 −4 Original line number Diff line number Diff line Loading @@ -118,6 +118,17 @@ void SoftMP3::initDecoder() { mIsFirst = true; } void *SoftMP3::memsetSafe(OMX_BUFFERHEADERTYPE *outHeader, int c, size_t len) { if (len > outHeader->nAllocLen) { ALOGE("memset buffer too small: got %lu, expected %zu", outHeader->nAllocLen, len); android_errorWriteLog(0x534e4554, "29422022"); notify(OMX_EventError, OMX_ErrorUndefined, OUTPUT_BUFFER_TOO_SMALL, NULL); mSignalledError = true; return NULL; } return memset(outHeader->pBuffer, c, len); } OMX_ERRORTYPE SoftMP3::internalGetParameter( OMX_INDEXTYPE index, OMX_PTR params) { switch (index) { Loading Loading @@ -245,7 +256,9 @@ void SoftMP3::onQueueFilled(OMX_U32 portIndex) { outHeader->nFilledLen = kPVMP3DecoderDelay * mNumChannels * sizeof(int16_t); memset(outHeader->pBuffer, 0, outHeader->nFilledLen); if (!memsetSafe(outHeader, 0, outHeader->nFilledLen)) { return; } } else { // Since we never discarded frames from the start, we won't have // to add any padding at the end either. Loading Loading @@ -305,9 +318,9 @@ void SoftMP3::onQueueFilled(OMX_U32 portIndex) { // This is recoverable, just ignore the current frame and // play silence instead. memset(outHeader->pBuffer, 0, mConfig->outputFrameSize * sizeof(int16_t)); if (!memsetSafe(outHeader, 0, mConfig->outputFrameSize * sizeof(int16_t))) { return; } mConfig->inputBufferUsedLength = inHeader->nFilledLen; } else if (mConfig->samplingRate != mSamplingRate Loading media/libstagefright/codecs/mp3dec/SoftMP3.h +1 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ private: void initPorts(); void initDecoder(); void *memsetSafe(OMX_BUFFERHEADERTYPE *outHeader, int c, size_t len); DISALLOW_EVIL_CONSTRUCTORS(SoftMP3); }; Loading Loading
media/libstagefright/codecs/mp3dec/SoftMP3.cpp +17 −4 Original line number Diff line number Diff line Loading @@ -118,6 +118,17 @@ void SoftMP3::initDecoder() { mIsFirst = true; } void *SoftMP3::memsetSafe(OMX_BUFFERHEADERTYPE *outHeader, int c, size_t len) { if (len > outHeader->nAllocLen) { ALOGE("memset buffer too small: got %lu, expected %zu", outHeader->nAllocLen, len); android_errorWriteLog(0x534e4554, "29422022"); notify(OMX_EventError, OMX_ErrorUndefined, OUTPUT_BUFFER_TOO_SMALL, NULL); mSignalledError = true; return NULL; } return memset(outHeader->pBuffer, c, len); } OMX_ERRORTYPE SoftMP3::internalGetParameter( OMX_INDEXTYPE index, OMX_PTR params) { switch (index) { Loading Loading @@ -245,7 +256,9 @@ void SoftMP3::onQueueFilled(OMX_U32 portIndex) { outHeader->nFilledLen = kPVMP3DecoderDelay * mNumChannels * sizeof(int16_t); memset(outHeader->pBuffer, 0, outHeader->nFilledLen); if (!memsetSafe(outHeader, 0, outHeader->nFilledLen)) { return; } } else { // Since we never discarded frames from the start, we won't have // to add any padding at the end either. Loading Loading @@ -305,9 +318,9 @@ void SoftMP3::onQueueFilled(OMX_U32 portIndex) { // This is recoverable, just ignore the current frame and // play silence instead. memset(outHeader->pBuffer, 0, mConfig->outputFrameSize * sizeof(int16_t)); if (!memsetSafe(outHeader, 0, mConfig->outputFrameSize * sizeof(int16_t))) { return; } mConfig->inputBufferUsedLength = inHeader->nFilledLen; } else if (mConfig->samplingRate != mSamplingRate Loading
media/libstagefright/codecs/mp3dec/SoftMP3.h +1 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ private: void initPorts(); void initDecoder(); void *memsetSafe(OMX_BUFFERHEADERTYPE *outHeader, int c, size_t len); DISALLOW_EVIL_CONSTRUCTORS(SoftMP3); }; Loading