diff options
author | Lajos Molnar <lajos@google.com> | 2014-03-31 12:30:01 -0700 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2014-04-01 13:29:44 -0700 |
commit | 54b0bc74e051bd7df10cd657b481d88db6cdaa27 (patch) | |
tree | d0f66d92baae1b16a34e01eab18d640f3e2f8434 /media | |
parent | 118e7ff24af2e470ffed2bf7b37c9afa69afee92 (diff) | |
download | frameworks_av-54b0bc74e051bd7df10cd657b481d88db6cdaa27.zip frameworks_av-54b0bc74e051bd7df10cd657b481d88db6cdaa27.tar.gz frameworks_av-54b0bc74e051bd7df10cd657b481d88db6cdaa27.tar.bz2 |
ACodec: do not signal kWhatShutdownCompleted on codec error
Do not signal kWhatShutdownCompleted when moving to Uninitialized
state due to receiving a codec error.
Do not abort if error happens just before handling a stop request.
Bug: 13675112
Change-Id: I4b14b2e64cff0f71215d2bbc24cd850617dfb67b
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/ACodec.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index ac40568..4aecb80 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -365,6 +365,7 @@ ACodec::ACodec() mIsEncoder(false), mUseMetadataOnEncoderOutput(false), mShutdownInProgress(false), + mExplicitShutdown(false), mEncoderDelay(0), mEncoderPadding(0), mChannelMaskPresent(false), @@ -3722,7 +3723,8 @@ bool ACodec::UninitializedState::onMessageReceived(const sp<AMessage> &msg) { int32_t keepComponentAllocated; CHECK(msg->findInt32( "keepComponentAllocated", &keepComponentAllocated)); - CHECK(!keepComponentAllocated); + ALOGW_IF(keepComponentAllocated, + "cannot keep component allocated on shutdown in Uninitialized state"); sp<AMessage> notify = mCodec->mNotify->dup(); notify->setInt32("what", ACodec::kWhatShutdownCompleted); @@ -3895,6 +3897,7 @@ void ACodec::LoadedState::stateEntered() { onShutdown(keepComponentAllocated); } + mCodec->mExplicitShutdown = false; } void ACodec::LoadedState::onShutdown(bool keepComponentAllocated) { @@ -3904,9 +3907,12 @@ void ACodec::LoadedState::onShutdown(bool keepComponentAllocated) { mCodec->changeState(mCodec->mUninitializedState); } - sp<AMessage> notify = mCodec->mNotify->dup(); - notify->setInt32("what", ACodec::kWhatShutdownCompleted); - notify->post(); + if (mCodec->mExplicitShutdown) { + sp<AMessage> notify = mCodec->mNotify->dup(); + notify->setInt32("what", ACodec::kWhatShutdownCompleted); + notify->post(); + mCodec->mExplicitShutdown = false; + } } bool ACodec::LoadedState::onMessageReceived(const sp<AMessage> &msg) { @@ -3940,6 +3946,7 @@ bool ACodec::LoadedState::onMessageReceived(const sp<AMessage> &msg) { CHECK(msg->findInt32( "keepComponentAllocated", &keepComponentAllocated)); + mCodec->mExplicitShutdown = true; onShutdown(keepComponentAllocated); handled = true; @@ -4359,6 +4366,7 @@ bool ACodec::ExecutingState::onMessageReceived(const sp<AMessage> &msg) { "keepComponentAllocated", &keepComponentAllocated)); mCodec->mShutdownInProgress = true; + mCodec->mExplicitShutdown = true; mCodec->mKeepComponentAllocated = keepComponentAllocated; mActive = false; |