java - 带 JNA 的 x264 编码器

标签 java video native jna x264

我一直忙于围绕 x264.dll 创建 JNA 包装器。我的 x264_param_t 有以下类(class):

http://pastebin.com/Mh4JkVpP

但是,当我尝试像这样初始化 x264_param_t 时

x264_param_t param_t = new x264_param_t;

我收到以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: Can't determine size of nested structure: Can't instantiate class anotherReversed.x264_param_t$Vui (java.lang.InstantiationException: anotherReversed.x264_param_t$Vui)
        at com.sun.jna.Structure.calculateSize(Structure.java:790)
        at com.sun.jna.Structure.allocateMemory(Structure.java:287)
        at com.sun.jna.Structure.<init>(Structure.java:177)
        at com.sun.jna.Structure.<init>(Structure.java:167)
        at com.sun.jna.Structure.<init>(Structure.java:163)
        at com.sun.jna.Structure.<init>(Structure.java:154)
        at anotherReversed.x264_param_t.<init>(x264_param_t.java:7)

如果我在其父类构造函数中注释掉 Vui,则实例化就可以了。我想知道这个嵌套结构有什么不同,因为还有另外两个结构(即 Rc 和 Analytics )以相同的方式嵌套。但不知何故,JNA 无法找到 Vui 所需的大小。有什么指点吗?

编辑: 似乎所有其他嵌套结构( analysis 和 rc )也没有初始化。我想知道为什么?

最佳答案

不要注释掉 Vui,而是用 Pointer 替换它,并检查其他两个结构是否已填充。

这些结构被定义为 x264_param_t 结构中的内部结构,也许 JNA 有问题。仔细查看 x264_param_t.toString() 的输出,因为它打印计算出的内存偏移量。

希望您能在 jna mailing list 找到更好的答案

编辑解决问题的肮脏技巧:使用整数数组或仅转储内部结构中的所有变量,而不是使用单独的类。

关于java - 带 JNA 的 x264 编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4737298/

相关文章:

java - 调用对象中的方法?

java - 如何比较两个位置

java - 解码时出现意外的元素错误

java - 如何使用 qtj 和 java 从一组图像创建电影?

video - 如何在推文中嵌入视频?

java - "private static Class clazz = SnappyDecompressor.class"源文件中的 clazz 用于什么?

java - 单击按钮时显示或隐藏部分面板的 Swing 方法?

Android 权限执行 native 应用程序?

c++ - 在 C++ 中设置正在运行的应用程序的当前目录

html - VideoJS - 无缝循环视频