[英]jni SAMPLETYPE to jbyteArray
I get an error at the return line. 我在回车线出现错误。 My code:
我的代码:
extern "C" DLL_PUBLIC jbyteArray Java_com_ngochoang_playerdemo_AudioNativeLib_navProcessBytes(JNIEnv *env, jobject thiz, jbyteArray data, jint size)
{
LOGV("JNI call soundtouch.navProcessBytes");
int bufferSize = size*5;
SAMPLETYPE sampleBuffer[bufferSize];
pSoundTouch.putSamples((SAMPLETYPE*)data, size);
TotalNSamples = pSoundTouch.receiveSamples(sampleBuffer, bufferSize);
LOGV("JNI call soundtouch.navProcessBytes END");
return (jbyteArray)sampleBuffer;
}
Error: 错误:
Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 5980 (Thread-753)
致命信号11(SIGSEGV)位于0xdeadd00d(代码= 1),线程5980(线程753)
Thanks 谢谢
I fixed my problem. 我解决了我的问题。
extern "C" DLL_PUBLIC jbyteArray Java_com_ngochoang_playerdemo_AudioNativeLib_navProcessBytes(JNIEnv *env, jobject thiz, jbyteArray data, jint size)
{
LOGV("JNI call soundtouch.navProcessBytes");
int bufferSize = size*5;
SAMPLETYPE sampleBuffer[bufferSize];
pSoundTouch.putSamples((SAMPLETYPE*)data, size);
TotalNSamples = pSoundTouch.receiveSamples(sampleBuffer, bufferSize);
jbyteArray ret = env->NewByteArray(bufferSize);
env->SetByteArrayRegion(ret, 0, bufferSize, (jbyte *)sampleBuffer);
LOGV("JNI call soundtouch.navProcessBytes END");
return ret;
}
it's needed copy into jbyteArray by using JNI function SetByteArrayRegion 需要使用JNI函数SetByteArrayRegion复制到jbyteArray中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.