From c22c695660ed9edaba0d4cd7c0ab3a794216fe80 Mon Sep 17 00:00:00 2001 From: Wei Jia Date: Fri, 29 Aug 2014 14:47:50 -0700 Subject: [PATCH] MediaCodec: set state to UNINITIALIZED when receiving fatal error. NuPlayerDecoder: release MediaCodec when handling an error. Bug: 16661923 Change-Id: I1b6fd7ee5cc1136b3f289135e5360cd3d98f9799 --- media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | 2 ++ media/libstagefright/MediaCodec.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp index d1aac501f4..5aaf48ce74 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp @@ -220,6 +220,8 @@ status_t NuPlayer::Decoder::getInputBuffers(Vector > *buffers) const void NuPlayer::Decoder::handleError(int32_t err) { + mCodec->release(); + sp notify = mNotify->dup(); notify->setInt32("what", kWhatError); notify->setInt32("err", err); diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp index 76f730f84b..fc2dd30365 100644 --- a/media/libstagefright/MediaCodec.cpp +++ b/media/libstagefright/MediaCodec.cpp @@ -733,13 +733,15 @@ void MediaCodec::onMessageReceived(const sp &msg) { case CONFIGURING: { - setState(INITIALIZED); + setState(actionCode == ACTION_CODE_FATAL ? + UNINITIALIZED : INITIALIZED); break; } case STARTING: { - setState(CONFIGURED); + setState(actionCode == ACTION_CODE_FATAL ? + UNINITIALIZED : CONFIGURED); break; } -- 2.11.0