我在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;
}