Merge "MediaCodec: configure to reclaim resources before reset" am: 2c40890de0
Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1680725
Change-Id: I92579e05072b01c5c5bc9f61d2f413c6daeb59e7
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index 0fa2e3f..a35932a 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -1333,16 +1333,12 @@
// the reclaimResource call doesn't consider the requester's buffer size for now.
resources.push_back(MediaResource::GraphicMemoryResource(1));
for (int i = 0; i <= kMaxRetry; ++i) {
- if (i > 0) {
- // Don't try to reclaim resource for the first time.
- if (!mResourceManagerProxy->reclaimResource(resources)) {
- break;
- }
- }
-
sp<AMessage> response;
err = PostAndAwaitResponse(msg, &response);
if (err != OK && err != INVALID_OPERATION) {
+ if (isResourceError(err) && !mResourceManagerProxy->reclaimResource(resources)) {
+ break;
+ }
// MediaCodec now set state to UNINITIALIZED upon any fatal error.
// To maintain backward-compatibility, do a reset() to put codec
// back into INITIALIZED state.