diff options
author | Andy Hung <hunga@google.com> | 2014-09-30 14:40:32 -0700 |
---|---|---|
committer | Andy Hung <hunga@google.com> | 2014-10-01 20:23:34 -0700 |
commit | 2abde2c118a94f843a7450818c925d3f0b673cd3 (patch) | |
tree | 452cecbb797776883b387704a299936b1dd55729 /media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | |
parent | 955e24d3a8e218d4711cabc6558781e095011132 (diff) | |
download | frameworks_av-2abde2c118a94f843a7450818c925d3f0b673cd3.zip frameworks_av-2abde2c118a94f843a7450818c925d3f0b673cd3.tar.gz frameworks_av-2abde2c118a94f843a7450818c925d3f0b673cd3.tar.bz2 |
NuPlayer: Fix flush mode decoder error handling
Explicitly handle each flush mode upon decoder error.
Do not clear out affected decoder immediately.
Alter logcat messages for better diagnostics.
Bug: 17638878
Bug: 17679341
Change-Id: I219796c04d65d7c4dd61c0d4f99f9f580241a68b
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | 10 |
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(); |