кодер x264 с JNA - PullRequest
       33

кодер x264 с JNA

1 голос
/ 19 января 2011

Я был занят созданием оболочки JNA вокруг x264.dll. У меня есть следующий класс для моего x264_param_t:

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 в его конструкторе родительского класса, экземпляр будет в порядке. Интересно, что отличается именно от этой вложенной структуры, так как есть еще 2 (а именно Rc и Analyze), которые вложены одинаково Тем не менее, почему-то JNA не может найти требуемый размер для Vui. Есть указатели?

Edit: Кажется, что все другие вложенные структуры (анализ и rc) также не были инициализированы. Интересно почему?

1 Ответ

1 голос
/ 19 января 2011

Вместо того, чтобы комментировать Vui, замените его указателем и проверьте, заполнены ли другие две структуры.

Эти структуры определены как внутренние структуры в структуре x264_param_t, возможно, у JNA есть проблемы с этим.Присмотритесь к выводу x264_param_t.toString (), поскольку он печатает вычисленные смещения памяти.

Надеюсь, вы найдете лучшие ответы в списке рассылки jna

РЕДАКТИРОВАТЬ Грязный хак для решения проблемы: использовать массив целых или просто вывести все переменные из внутренней структуры вместо использования отдельного класса.

...