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
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user