summaryrefslogtreecommitdiff
path: root/media/jni/android_media_MediaCodec.cpp
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-04-17 22:07:04 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-04-17 22:07:04 +0000
commit28ea0461c10c1fad92295f191c636a3550394f10 (patch)
treebeedb7e9aadf0854d6fd91b8464411de0026c152 /media/jni/android_media_MediaCodec.cpp
parentc7cd73aa001f0a721b841b72d545505d6bbdc062 (diff)
parentbedf6bac626a367ca7bd35c9f4ffc325bd4aeac5 (diff)
Merge "media: fix OutputFrame.getFormat()" into rvc-dev
Diffstat (limited to 'media/jni/android_media_MediaCodec.cpp')
-rw-r--r--media/jni/android_media_MediaCodec.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index 362dfa0c88f4..947cfc038b7f 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -735,14 +735,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) {