gpt4 book ai didi

java - Android JNI : Why ReleaseByteArrayElements does NOT copy back data

转载 作者:太空宇宙 更新时间:2023-11-04 14:19:40 28 4
gpt4 key购买 nike

在函数中:

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。

为什么会发生这种情况?

最佳答案

当你说“out istotal 0”时,你似乎期望数组中的元素数量会神奇地改变。这不是、也不可能是它的运作方式。请注意,您没有将 out_size 传递给 ReleaseByteArrayElements(),也不是可以,那么它如何知道数组的大小已更改?

关于java - Android JNI : Why ReleaseByteArrayElements does NOT copy back data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27341262/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com