diff options
author | Andreas Huber <andih@google.com> | 2012-05-29 11:36:08 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-29 11:36:08 -0700 |
commit | 91b0d43a27b3a1cebd75270f953f3fb9fa4f2047 (patch) | |
tree | 4018b0914585b9bb5713a9b6af44b0d0275d8beb /media | |
parent | 40fe18f20e07f3626ff23d89ebdd5113733e155d (diff) | |
parent | 755b9861197f1566f916785ba7d35cf86fd5b2d5 (diff) | |
download | frameworks_av-91b0d43a27b3a1cebd75270f953f3fb9fa4f2047.zip frameworks_av-91b0d43a27b3a1cebd75270f953f3fb9fa4f2047.tar.gz frameworks_av-91b0d43a27b3a1cebd75270f953f3fb9fa4f2047.tar.bz2 |
Merge "Unwedge ACodec if allocating output buffers fails while reconfiguring." into jb-dev
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/ACodec.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index b2f1746..c4743a1 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -3472,11 +3472,14 @@ bool ACodec::OutputPortSettingsChangedState::onOMXEvent( mCodec->signalError(OMX_ErrorUndefined, err); - // This is technically not correct, since we were unable - // to allocate output buffers and therefore the output port - // remains disabled. It is necessary however to allow us - // to shutdown the codec properly. - mCodec->changeState(mCodec->mExecutingState); + // This is technically not correct, but appears to be + // the only way to free the component instance. + // Controlled transitioning from excecuting->idle + // and idle->loaded seem impossible probably because + // the output port never finishes re-enabling. + mCodec->mShutdownInProgress = true; + mCodec->mKeepComponentAllocated = false; + mCodec->changeState(mCodec->mLoadedState); } return true; |