Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 70c556be authored by Wonsik Kim's avatar Wonsik Kim
Browse files

MediaCodec: configure to reclaim resources before reset

When resource reclaim happens after reset, resources may already have
been reclaimed during reset. This causes duplicate reclaim leading to
a failure.

Test: cts/media/device-small
Bug: 179594452
Change-Id: Ibfb86574fcf21adf4ebbd681a498b9117f90056e
parent bf58beb6
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -1333,16 +1333,12 @@ status_t MediaCodec::configure(
    // 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.