vlc | branch: master | Thomas Guillem <[email protected]> | Tue Dec 16 19:42:47 
2014 +0100| [095cb6bba1dda367e558da90fd143426f8b7ff44] | committer: 
Jean-Baptiste Kempf

mediacodec: add member.critical

Fail only if a critical method is not found.

Signed-off-by: Jean-Baptiste Kempf <[email protected]>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=095cb6bba1dda367e558da90fd143426f8b7ff44
---

 modules/codec/omxil/android_mediacodec.c |   88 +++++++++++++++---------------
 1 file changed, 45 insertions(+), 43 deletions(-)

diff --git a/modules/codec/omxil/android_mediacodec.c 
b/modules/codec/omxil/android_mediacodec.c
index f429dbe..6e47fe2 100644
--- a/modules/codec/omxil/android_mediacodec.c
+++ b/modules/codec/omxil/android_mediacodec.c
@@ -202,50 +202,51 @@ struct member
     const char *class;
     int offset;
     int type;
+    bool critical;
 };
 static const struct member members[] = {
-    { "toString", "()Ljava/lang/String;", "java/lang/Object", OFF(tostring), 
METHOD },
-
-    { "getCodecCount", "()I", "android/media/MediaCodecList", 
OFF(get_codec_count), STATIC_METHOD },
-    { "getCodecInfoAt", "(I)Landroid/media/MediaCodecInfo;", 
"android/media/MediaCodecList", OFF(get_codec_info_at), STATIC_METHOD },
-
-    { "isEncoder", "()Z", "android/media/MediaCodecInfo", OFF(is_encoder), 
METHOD },
-    { "getSupportedTypes", "()[Ljava/lang/String;", 
"android/media/MediaCodecInfo", OFF(get_supported_types), METHOD },
-    { "getName", "()Ljava/lang/String;", "android/media/MediaCodecInfo", 
OFF(get_name), METHOD },
-    { "getCapabilitiesForType", 
"(Ljava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities;", 
"android/media/MediaCodecInfo", OFF(get_capabilities_for_type), METHOD },
-
-    { "profileLevels", "[Landroid/media/MediaCodecInfo$CodecProfileLevel;", 
"android/media/MediaCodecInfo$CodecCapabilities", OFF(profile_levels_field), 
FIELD },
-    { "profile", "I", "android/media/MediaCodecInfo$CodecProfileLevel", 
OFF(profile_field), FIELD },
-    { "level", "I", "android/media/MediaCodecInfo$CodecProfileLevel", 
OFF(level_field), FIELD },
-
-    { "createByCodecName", "(Ljava/lang/String;)Landroid/media/MediaCodec;", 
"android/media/MediaCodec", OFF(create_by_codec_name), STATIC_METHOD },
-    { "configure", 
"(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V",
 "android/media/MediaCodec", OFF(configure), METHOD },
-    { "start", "()V", "android/media/MediaCodec", OFF(start), METHOD },
-    { "stop", "()V", "android/media/MediaCodec", OFF(stop), METHOD },
-    { "flush", "()V", "android/media/MediaCodec", OFF(flush), METHOD },
-    { "release", "()V", "android/media/MediaCodec", OFF(release), METHOD },
-    { "getOutputFormat", "()Landroid/media/MediaFormat;", 
"android/media/MediaCodec", OFF(get_output_format), METHOD },
-    { "getInputBuffers", "()[Ljava/nio/ByteBuffer;", 
"android/media/MediaCodec", OFF(get_input_buffers), METHOD },
-    { "getOutputBuffers", "()[Ljava/nio/ByteBuffer;", 
"android/media/MediaCodec", OFF(get_output_buffers), METHOD },
-    { "dequeueInputBuffer", "(J)I", "android/media/MediaCodec", 
OFF(dequeue_input_buffer), METHOD },
-    { "dequeueOutputBuffer", "(Landroid/media/MediaCodec$BufferInfo;J)I", 
"android/media/MediaCodec", OFF(dequeue_output_buffer), METHOD },
-    { "queueInputBuffer", "(IIIJI)V", "android/media/MediaCodec", 
OFF(queue_input_buffer), METHOD },
-    { "releaseOutputBuffer", "(IZ)V", "android/media/MediaCodec", 
OFF(release_output_buffer), METHOD },
-
-    { "createVideoFormat", 
"(Ljava/lang/String;II)Landroid/media/MediaFormat;", 
"android/media/MediaFormat", OFF(create_video_format), STATIC_METHOD },
-    { "setInteger", "(Ljava/lang/String;I)V", "android/media/MediaFormat", 
OFF(set_integer), METHOD },
-    { "getInteger", "(Ljava/lang/String;)I", "android/media/MediaFormat", 
OFF(get_integer), METHOD },
-    { "setByteBuffer", "(Ljava/lang/String;Ljava/nio/ByteBuffer;)V", 
"android/media/MediaFormat", OFF(set_bytebuffer), METHOD },
-
-    { "<init>", "()V", "android/media/MediaCodec$BufferInfo", 
OFF(buffer_info_ctor), METHOD },
-    { "size", "I", "android/media/MediaCodec$BufferInfo", OFF(size_field), 
FIELD },
-    { "offset", "I", "android/media/MediaCodec$BufferInfo", OFF(offset_field), 
FIELD },
-    { "presentationTimeUs", "J", "android/media/MediaCodec$BufferInfo", 
OFF(pts_field), FIELD },
-
-    { "allocateDirect", "(I)Ljava/nio/ByteBuffer;", "java/nio/ByteBuffer", 
OFF(allocate_direct), STATIC_METHOD },
-    { "limit", "(I)Ljava/nio/Buffer;", "java/nio/ByteBuffer", OFF(limit), 
METHOD },
-
-    { NULL, NULL, NULL, 0, 0 },
+    { "toString", "()Ljava/lang/String;", "java/lang/Object", OFF(tostring), 
METHOD, true },
+
+    { "getCodecCount", "()I", "android/media/MediaCodecList", 
OFF(get_codec_count), STATIC_METHOD, true },
+    { "getCodecInfoAt", "(I)Landroid/media/MediaCodecInfo;", 
"android/media/MediaCodecList", OFF(get_codec_info_at), STATIC_METHOD, true },
+
+    { "isEncoder", "()Z", "android/media/MediaCodecInfo", OFF(is_encoder), 
METHOD, true },
+    { "getSupportedTypes", "()[Ljava/lang/String;", 
"android/media/MediaCodecInfo", OFF(get_supported_types), METHOD, true },
+    { "getName", "()Ljava/lang/String;", "android/media/MediaCodecInfo", 
OFF(get_name), METHOD, true },
+    { "getCapabilitiesForType", 
"(Ljava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities;", 
"android/media/MediaCodecInfo", OFF(get_capabilities_for_type), METHOD, true },
+
+    { "profileLevels", "[Landroid/media/MediaCodecInfo$CodecProfileLevel;", 
"android/media/MediaCodecInfo$CodecCapabilities", OFF(profile_levels_field), 
FIELD, true },
+    { "profile", "I", "android/media/MediaCodecInfo$CodecProfileLevel", 
OFF(profile_field), FIELD, true },
+    { "level", "I", "android/media/MediaCodecInfo$CodecProfileLevel", 
OFF(level_field), FIELD, true },
+
+    { "createByCodecName", "(Ljava/lang/String;)Landroid/media/MediaCodec;", 
"android/media/MediaCodec", OFF(create_by_codec_name), STATIC_METHOD, true },
+    { "configure", 
"(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V",
 "android/media/MediaCodec", OFF(configure), METHOD, true },
+    { "start", "()V", "android/media/MediaCodec", OFF(start), METHOD, true },
+    { "stop", "()V", "android/media/MediaCodec", OFF(stop), METHOD, true },
+    { "flush", "()V", "android/media/MediaCodec", OFF(flush), METHOD, true },
+    { "release", "()V", "android/media/MediaCodec", OFF(release), METHOD, true 
},
+    { "getOutputFormat", "()Landroid/media/MediaFormat;", 
"android/media/MediaCodec", OFF(get_output_format), METHOD, true },
+    { "getInputBuffers", "()[Ljava/nio/ByteBuffer;", 
"android/media/MediaCodec", OFF(get_input_buffers), METHOD, true },
+    { "getOutputBuffers", "()[Ljava/nio/ByteBuffer;", 
"android/media/MediaCodec", OFF(get_output_buffers), METHOD, true },
+    { "dequeueInputBuffer", "(J)I", "android/media/MediaCodec", 
OFF(dequeue_input_buffer), METHOD, true },
+    { "dequeueOutputBuffer", "(Landroid/media/MediaCodec$BufferInfo;J)I", 
"android/media/MediaCodec", OFF(dequeue_output_buffer), METHOD, true },
+    { "queueInputBuffer", "(IIIJI)V", "android/media/MediaCodec", 
OFF(queue_input_buffer), METHOD, true },
+    { "releaseOutputBuffer", "(IZ)V", "android/media/MediaCodec", 
OFF(release_output_buffer), METHOD, true },
+
+    { "createVideoFormat", 
"(Ljava/lang/String;II)Landroid/media/MediaFormat;", 
"android/media/MediaFormat", OFF(create_video_format), STATIC_METHOD, true },
+    { "setInteger", "(Ljava/lang/String;I)V", "android/media/MediaFormat", 
OFF(set_integer), METHOD, true },
+    { "getInteger", "(Ljava/lang/String;)I", "android/media/MediaFormat", 
OFF(get_integer), METHOD, true },
+    { "setByteBuffer", "(Ljava/lang/String;Ljava/nio/ByteBuffer;)V", 
"android/media/MediaFormat", OFF(set_bytebuffer), METHOD, true },
+
+    { "<init>", "()V", "android/media/MediaCodec$BufferInfo", 
OFF(buffer_info_ctor), METHOD, true },
+    { "size", "I", "android/media/MediaCodec$BufferInfo", OFF(size_field), 
FIELD, true },
+    { "offset", "I", "android/media/MediaCodec$BufferInfo", OFF(offset_field), 
FIELD, true },
+    { "presentationTimeUs", "J", "android/media/MediaCodec$BufferInfo", 
OFF(pts_field), FIELD, true },
+
+    { "allocateDirect", "(I)Ljava/nio/ByteBuffer;", "java/nio/ByteBuffer", 
OFF(allocate_direct), STATIC_METHOD, true },
+    { "limit", "(I)Ljava/nio/Buffer;", "java/nio/ByteBuffer", OFF(limit), 
METHOD, true },
+
+    { NULL, NULL, NULL, 0, 0, false },
 };
 
 #define GET_INTEGER(obj, name) (*env)->CallIntMethod(env, obj, 
p_sys->get_integer, (*env)->NewStringUTF(env, name))
@@ -376,7 +377,8 @@ static int OpenDecoder(vlc_object_t *p_this)
             msg_Warn(p_dec, "Unable to find the member %s in %s",
                      members[i].name, members[i].class);
             (*env)->ExceptionClear(env);
-            goto error;
+            if (members[i].critical)
+                goto error;
         }
     }
 

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to