encoder x264 con JNA
Domanda
Sono stato impegnato a creare un involucro attorno JNA x264.dll. Ho la seguente classe per il mio x264_param_t:
Tuttavia, quando cerco di inizializzare il mio x264_param_t del genere
x264_param_t param_t = new x264_param_t;
ottengo il seguente errore:
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)
Se io commento la Vui nella sua classe genitore costruttore, l'istanza è ok. Mi domando che è diverso esattamente questa struttura annidata, in quanto vi sono altri 2 (cioè Rc e analizzare) che sono nidificati nello stesso modo. In qualche modo, però, JNA non è in grado di trovare la dimensione necessaria per Vui. Tutti gli indicatori?
Modifica: Sembra che tutti gli altri le strutture nidificate (analizzare e rc) sono stati, inoltre, non inizializzati. Mi chiedo perché?
Soluzione
Invece di commentare fuori Vui, sostituirlo con un puntatore e verificare se le altre due strutture sono riempiti.
Queste strutture sono definite come strutture interne all'interno del struct x264_param_t, forse JNA ha problemi con esso. Date un'occhiata più da vicino l'output di x264_param_t.toString (), come la stampa offset di memoria calcolati.
Spero che troverete le risposte migliori a JNA mailing list
Modifica Un hack sporco per risolvere il problema:. Utilizzare un array di int o semplicemente scaricare tutte le variabili dalla struct interna invece di utilizzare una classe separata ??p>