0

Jack kit API 使用来自其(实时)线程的回调来处理音频数据:

jack_set_process_callback (client, process, 0);
...

int process(jack_nframes_t nframes, void *arg)
{
    ...
}

我怎样才能线程安全地将一些参数传输到这个回调(当然没有阻塞操作)?我不仅需要传输参数,还需要重新初始化音频过滤对象,因此我需要找到基于事件的解决方案。

4

1 回答 1

0

在主线程中分配您的事件并使用环形缓冲区(jack/ringbuffer.h)将指向该事件的指针发送到您的音频线程。使用第二个环形缓冲区将指针发送回主线程,以便释放内存。

在http://harryhaaren.blogspot.com/2011/11/tutorial-jack-ringbuffers.html有一个很好的简单示例

于 2016-10-22T22:54:39.750 回答