简体   繁体   English

jni SAMPLETYPE到jbyteArray

[英]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.

相关问题 Java中的Java jbytearray访问(JNI) - Java jbytearray access in c (JNI) C ++中的JNI将文件读取到jbyteArray - JNI in C++ to read file to jbyteArray 如何在jni中将jbyteArray转换为本机char *? - How to convert jbyteArray to native char* in jni? 如何在 JNI 中将 char* 转换为 jbyteArray whitout malloc 一个新的内存区域 - How to cast a char* to jbyteArray in JNI whitout malloc a new memory area 如何将uint8_t *强制转换为jbyteArray jni android - How to cast uint8_t * to jbyteArray jni android 将(objective-c)JNI中的jbyteArray传递给Java的最佳方法是什么? - What is the best way to pass a jbyteArray from (objective-c) JNI to Java? 如何从JNI,Java和C ++释放使用jShortArray / jByteArray分配的内存 - How to free memory allocated with jShortArray/jByteArray from JNI, Java and C++ JNI:本机库需要void *,如何将jbytearray转换为C void * - JNI: Native library requires void*, how can I convert my jbytearray to C void* 如何在 JNI 中调用 String.getBytes()? 我想在 JNI 中获取字节数组,但 CallByteMethod 只返回 jbyte 而不是 jbytearray - How to I call String.getBytes() in JNI? I want to get byte array in JNI but the CallByteMethod just returns jbyte and not the jbytearray 如何将jbyteArray转换为结构? - how to cast jbyteArray to a structure?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM