summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-05-29 11:36:08 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-05-29 11:36:08 -0700
commit91b0d43a27b3a1cebd75270f953f3fb9fa4f2047 (patch)
tree4018b0914585b9bb5713a9b6af44b0d0275d8beb /media
parent40fe18f20e07f3626ff23d89ebdd5113733e155d (diff)
parent755b9861197f1566f916785ba7d35cf86fd5b2d5 (diff)
downloadframeworks_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.cpp13
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;