1

我正在尝试实现音频处理器和android,其中输入将生成正弦波,然后会产生一些效果(回声、失真等),所以我应该如何设计关于线程和缓冲的应用程序。

如果有任何应该遵循的架构,请提供帮助

4

2 回答 2

3

建议:

在流模式 ( ) 中使用 AudioTrack 对象,AudioTrack.MODE_STREAM并使用循环不断地AudioTrack write从专门的非 UI 线程调用阻塞来为其提供数据。该线程从其他线程准备数据的循环缓冲区中读取。

请注意,即使最小内部音频缓冲区大小受系统限制(请务必检查 AudioTrack 对象的构造结果),您也可以将数据写入更小的块中,这可以减少平均延迟。

避免进行浮点运算,尤其是实时计算三角函数(例如正弦)和浮点/整数转换;提前准备尽可能多的波形,并将它们存储在循环表中;保持您的 PCM 幅度为浮点形式,直到最后一步。

于 2012-10-28T13:11:16.167 回答
0

Gstreamer 已移植到安卓。它是一个用于处理多种格式以及实时播放、转码和创建效果的框架。

如果您无法从现有的参数中找到正确的参数化,则可以轻松构建自己的过滤器。

于 2012-10-28T13:12:03.283 回答