首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PortAudio实时流及处理

PortAudio实时流及处理
EN

Stack Overflow用户
提问于 2016-10-13 12:20:52
回答 1查看 873关注 0票数 2

我是PortAudio的新手。我的意图是继续从我的个人电脑上的输入数据,并处理实时的数据。

我使用的采样率为44100,缓冲器大小(frameCount)为11025。我成功地做到了这一点,但我正在portAudio引擎调用的回调函数中执行所有处理。此回调函数的通用原型:

代码语言:javascript
复制
int recordCallback(const void* inputBuffer, void* outputBuffer, unsigned long frameCount, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void* userData);

在这个回调中对音频数据进行所有处理是不是很糟糕?

由于执行回调函数所需的时间,我也在丢失数据。

我考虑实现一个适当大小的全局循环缓冲区,这样回调就可以连续地填充这个缓冲区,并在准备就绪时设置一个标志。我的主函数可以轮询此标志,然后在主函数中执行处理。

然而,我担心的是,回调是否可能写到这个环形缓冲区,而我的主要功能也会在另一个部分从它读取。

有没有人有更好的解决方案来解决我想要达到的目标?事先非常感谢

EN

回答 1

Stack Overflow用户

发布于 2016-10-13 12:48:12

在这个回调中对音频数据进行所有处理是不是很糟糕? 由于执行回调函数所需的时间,我也在丢失数据。

我想你刚才回答了你自己的问题。尝试将其推送到缓冲区,然后让另一个线程执行您的后处理(注意--如果处理不够快,您将不得不将其转储到磁盘,否则将导致内存不足)

你说过你关心并发性--这是合理的,但是尝试一下,然后当你尝试的时候,再发布关于这个特定问题的另一个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40020850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档