首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计音频架构

设计音频架构
EN

Stack Overflow用户
提问于 2012-01-09 12:52:08
回答 1查看 208关注 0票数 1

我正在用java设计一个音频架构。我知道我知道我应该用c++..。

不管怎样,我已经读过Craig Lindley的书Digital Audio with java。他描述了一种pull体系结构,其中设备以链表形式连接,接收器设备在紧接其之前从设备请求数据。这些设备调用相同的接口方法从设备获取之前的数据。该方法类似于:

代码语言:javascript
复制
public int getSamples(byte[] data);

我很有兴趣看看其他人对此的看法。c++,java,什么都行。可以稍微详细说明一些类似pro tools、ableton和reason的架构。这些系统是否依赖于类似于Lindley所描述的"pull架构“,尽管更加成熟。

请原谅这个问题的宽泛性质。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-27 18:56:39

我见过基于push和pull的音频架构,它们各有优缺点。

在基于推送的系统中,每个过滤器将数据向下推送到下游过滤器,您需要对推送请求进行一些计时,以便当声卡准备好数据时,在音频处理单元链的末端具有数据。这通常是以外部时钟的形式出现的,它对图形的泵送进行计时。DirectShow是这样工作的。

在基于pull的系统中,您可以使用来自声卡的I/O请求来驱动图形的泵送,从而使时钟由您的设备运行。在这个系统中,您仍然需要在图形(数据源)的开始处进行缓冲。

我建议不要做一个基于pull/push的系统,而是一个executor风格的架构。假设您有一组音频处理单元(APU),这些单元由一个AudioGraph对象管理,谁知道它们是如何连接的。现在,您可以使用来自声卡的音频回调,并将任何音频输入传递到AudioGraph,并让AudioGraph通过每个音频处理单元管理处理数据。这将数据流与I/O请求完全分离,并允许您的应用程序单元( AudioGraph )处理并行处理请求、运行请求以无序处理每个过滤器等。这是OS X上的AudioUnits

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

https://stackoverflow.com/questions/8784067

复制
相关文章

相似问题

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