summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2014-10-02 14:26:01 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-10-02 14:26:02 +0000
commitd8b03abf1d003e2940a19f0071ea2892689dd10e (patch)
tree0da3ff7e88649ef12a8121d483befd555c7ac3f3 /media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
parentf916667a017a5a6763afc4808344778570312d5a (diff)
parent2abde2c118a94f843a7450818c925d3f0b673cd3 (diff)
downloadframeworks_av-d8b03abf1d003e2940a19f0071ea2892689dd10e.zip
frameworks_av-d8b03abf1d003e2940a19f0071ea2892689dd10e.tar.gz
frameworks_av-d8b03abf1d003e2940a19f0071ea2892689dd10e.tar.bz2
Merge "NuPlayer: Fix flush mode decoder error handling" into lmp-dev
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
index 1a066b7..7814bf1 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
@@ -140,6 +140,8 @@ void NuPlayer::Decoder::onConfigure(const sp<AMessage> &format) {
format, surface, NULL /* crypto */, 0 /* flags */);
if (err != OK) {
ALOGE("Failed to configure %s decoder (err=%d)", mComponentName.c_str(), err);
+ mCodec->release();
+ mCodec.clear();
handleError(err);
return;
}
@@ -152,6 +154,8 @@ void NuPlayer::Decoder::onConfigure(const sp<AMessage> &format) {
err = mCodec->start();
if (err != OK) {
ALOGE("Failed to start %s decoder (err=%d)", mComponentName.c_str(), err);
+ mCodec->release();
+ mCodec.clear();
handleError(err);
return;
}
@@ -511,9 +515,9 @@ void NuPlayer::Decoder::onFlush() {
if (err != OK) {
ALOGE("failed to flush %s (err=%d)", mComponentName.c_str(), err);
handleError(err);
- return;
+ // finish with posting kWhatFlushCompleted.
+ // we attempt to release the buffers even if flush fails.
}
-
releaseAndResetMediaBuffers();
sp<AMessage> notify = mNotify->dup();
@@ -551,7 +555,7 @@ void NuPlayer::Decoder::onShutdown() {
if (err != OK) {
ALOGE("failed to release %s (err=%d)", mComponentName.c_str(), err);
handleError(err);
- return;
+ // finish with posting kWhatShutdownCompleted.
}
sp<AMessage> notify = mNotify->dup();