Arek
Arek

Reputation: 3176

JNI - native method with ByteBuffer parameter

I've got a method:

public native void doSomething(ByteBuffer in, ByteBuffer out);

Generated by javah C/C++ header of this method is:

JNIEXPORT void JNICALL Java__MyClass_doSomething (JNIEnv *, jobject, jobject, jobject, jint, jint);

How can I get a data array from jobject (that is a ByteBuffer instance) ?

Upvotes: 21

Views: 22689

Answers (1)

stacker
stacker

Reputation: 68962

Assuming you allocated the ByteBuffer using ByteBuffer.allocateDirect() you can use GetDirectBufferAddress

jbyte* bbuf_in;  jbyte* bbuf_out;

bbuf_in = (*env)->GetDirectBufferAddress(env, buf1);  
bbuf_out= (*env)->GetDirectBufferAddress(env, buf2); 

Upvotes: 33

Related Questions