diff options
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp index a18e1da279..b52e6d2f15 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp @@ -549,7 +549,10 @@ bool NuPlayer::Decoder::handleAnInputBuffer(size_t index) { ALOGI("[%s] resubmitting CSD", mComponentName.c_str()); msg->setBuffer("buffer", buffer); mCSDsToSubmit.removeAt(0); - CHECK(onInputBufferFetched(msg)); + if (!onInputBufferFetched(msg)) { + handleError(UNKNOWN_ERROR); + return false; + } return true; } @@ -913,7 +916,11 @@ bool NuPlayer::Decoder::onInputBufferFetched(const sp<AMessage> &msg) { // copy into codec buffer if (buffer != codecBuffer) { - CHECK_LE(buffer->size(), codecBuffer->capacity()); + if (buffer->size() > codecBuffer->capacity()) { + handleError(ERROR_BUFFER_TOO_SMALL); + mDequeuedInputBuffers.push_back(bufferIx); + return false; + } codecBuffer->setRange(0, buffer->size()); memcpy(codecBuffer->data(), buffer->data(), buffer->size()); } |