将jfloatarray转换为float *

时间:2014-11-18 17:24:16

标签: c java-native-interface converter

我在JNI中使用了这个函数,这是一个调用WebRtcNs_Process的包装器。 WebRtcNs_Process接收float *,那么我如何将jfloatArray转换为float *?

 JNIEXPORT jint JNICALL
 nativeNsProcess
 (JNIEnv *env, jclass jclazz, jint nsHandler, const jfloatArray input_frame, jfloatArray out) {

//get handle
NsHandle* NS_instance = (NsHandle*) nsHandler;

if (NS_instance == NULL)
    return -1;
int ret;

if (input_frame == NULL || out == NULL)
    return -1;

//create native floats from java floats
jfloat* native_input_frame = (*env)->GetFloatArrayElements(env, input_frame,
        NULL);

jfloat* native_output_frame = (*env)->GetFloatArrayElements(env, out, NULL);

//noise suppression
ret = WebRtcNs_Process(NS_instance, native_input_frame, NULL,
        native_output_frame, NULL);

//cleanup and return
(*env)->ReleaseFloatArrayElements(env, input_frame, native_input_frame, 0);

(*env)->ReleaseFloatArrayElements(env, out, native_output_frame, 0);

return ret;

}

0 个答案:

没有答案