在功能中:
jint Java_cn_vl_video_Encoder_encode(JNIEnv * env, jobject obj, jlong handle, jbyteArray in, jint in_size, jbyteArray out)
out是Java中的一个字节数组。
有一些像这样的代码:
char * h264Buf = (char*) (*env)->GetByteArrayElements(env, out, &h264Buf_isCopy);
jint out_size = vl_video_encoder_encode(handle_t, FRAME_TYPE_AUTO, buf, in_size, &h264Buf);
(*env)->ReleaseByteArrayElements(env, out, (jbyte*)h264Buf, 0);
我已经打印了一些jni代码,h264Buf有一些正确的数据。 但是在发布字节数组之后,在Java中out为0。
为什么会这样?
答案 0 :(得分:0)
当你说“out
总计为0”时,你似乎期望数组中元素的数量神奇地改变。这不是,也可能不是,它是如何运作的。请注意,您没有将out_size
传递给ReleaseByteArrayElements()
,而不是您可以,所以它怎么知道数组的大小已经改变了?