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

Commit bedf6bac authored by Wonsik Kim's avatar Wonsik Kim
Browse files

media: fix OutputFrame.getFormat()

JMediaCodec::getOutputFormat generates underlying Map object, not the
MediaFormat object proper.

Bug: 152618093
Bug: 154107928
Test: atest CtsMediaTestCases:MediaCodecBlockModelTest
Change-Id: I9acddc14b6c4f25cfea616ec9724b7503539688b
parent efda8ff7
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -733,14 +733,19 @@ status_t JMediaCodec::getOutputFrame(
        }
    }

    jobject format;
    err = getOutputFormat(env, index, &format);
    jobject formatMap;
    err = getOutputFormat(env, index, &formatMap);
    if (err != OK) {
        return err;
    }
    env->SetObjectField(frame, gFields.outputFrameFormatID, format);
    env->DeleteLocalRef(format);
    format = nullptr;
    ScopedLocalRef<jclass> mediaFormatClass{env, env->FindClass("android/media/MediaFormat")};
    ScopedLocalRef<jobject> format{env, env->NewObject(
            mediaFormatClass.get(),
            env->GetMethodID(mediaFormatClass.get(), "<init>", "(Ljava/util/Map;)V"),
            formatMap)};
    env->SetObjectField(frame, gFields.outputFrameFormatID, format.get());
    env->DeleteLocalRef(formatMap);
    formatMap = nullptr;

    sp<RefBase> obj;
    if (buffer->meta()->findObject("changedKeys", &obj) && obj) {