杰克音频套件 API 线程同步
Posted
技术标签:
【中文标题】杰克音频套件 API 线程同步【英文标题】:Jack audio kit API thread synchronization 【发布时间】:2015-04-21 20:02:07 【问题描述】:Jack kit API 使用来自其(实时)线程的回调来处理音频数据:
jack_set_process_callback (client, process, 0);
...
int process(jack_nframes_t nframes, void *arg)
...
如何以线程安全的方式将一些参数传输到此回调(当然,没有阻塞操作)?我不仅需要传递参数,还需要重新初始化音频过滤对象,因此我需要找到基于事件的解决方案。
【问题讨论】:
我不仅需要传递参数,还需要重新初始化音频过滤对象,所以我需要找到基于事件的解决方案。 【参考方案1】:在您的主线程中分配您的事件,并使用环形缓冲区 (jack/ringbuffer.h) 将指向该事件的指针发送到您的音频线程。使用第二个环形缓冲区将指针发送回主线程,以便释放内存。
http://harryhaaren.blogspot.com/2011/11/tutorial-jack-ringbuffers.html 有一个很好的简单示例
【讨论】:
以上是关于杰克音频套件 API 线程同步的主要内容,如果未能解决你的问题,请参考以下文章
XMLHTTPRequest 错误:不推荐使用主线程上的同步 XMLHttpRequest ...(SoundCloud API)