我的 Java 本机音频库有问题,但首先,这是我当前的方法:
所以现在我试图弄清楚如何防止从 C++ 或 Java 中删除流。
一种解决方案是在流中创建一个线程,以防止删除。
但我不喜欢这个解决方案......
因此,我搜索了如何使此类对象保持活动状态,并发现可以使用 JNI 进行所谓的“全局引用”。但我不明白它们是只适用于java对象还是两者都适用。
我还尝试了另一种 C++ 指针类型是否可以提供帮助。
我感谢任何帮助或想法,它不一定只是 JNI。C++ 标准库方法/函数/类等也很好:)!
系统信息:
全局流意味着所有 JNI 方法都可以访问该流。
编辑:
好吧,“为了让猫从后面出来”,我正在使用 RtAudio。 实时 C++ 音频库
例子:
//THIS IS C++ CODE
RtAudio audio(RtAudio::WASAPI);
int callback(//Buffer stuff etc.){
//do something
if(data.isEmpty())return 1;//invokes audio.closeStream() but this does NOT closes the stream!
else return 0; //Go on with the stream rather wait for the next call
}
JNIEXPORT void JNICALL openStream(jintArray …Run Code Online (Sandbox Code Playgroud)