1

我创建了一个简单的 AUGraph - 远程 IO、混音器和一个回调(将麦克风输入写入文件) - 但是我认为它的配置方式不是我想的那样。我正在尝试使用 CAShow() 来了解我实际创建的内容,但我正在努力将其输出与我认为我已配置的内容以及运行应用程序时实际发生的情况相协调。

相信我的 AUGraph 包含以下连接(从扬声器到麦克风向后工作):

  • 混音器单元的输出总线连接到远程 IO 输出元件的输入总线
  • 在混音器单元的输入上设置的回调
  • 连接到回调的远程 IO 输入元素的输出总线

这是配置和初始化 AUGraph 后 CAShow() 的输出:

AudioUnitGraph 0x8EA7000:
  Member Nodes:
    node 1: 'auou' 'rioc' 'appl', instance 0xa87f530 O I
    node 2: 'aumx' 'mcmx' 'appl', instance 0xa880420 O I
  Connections:
    node   2 bus   0 => node   1 bus   0  [ 1 ch,  44100 Hz, 'lpcm' (0x0000000C) 16-bit little-endian signed integer]
  Input Callbacks:
    {0x28c0, 0xa87df40} => node   2 bus   0  [1 ch, 44100 Hz]
  CurrentState:
    mLastUpdateError=0, eventsToProcess=F, isRunning=F

它似乎应该显示从远程 IO 输入元素的输出总线到回调的连接,但事实并非如此。我知道它正在工作,因为在启动 AUGraph 时我可以听到音频,并且我的回调正在按照设计将样本写入 ExtAudioFile。

我想我误解了关于 AUGraphs、Callbacks 或两者的基本知识。

4

2 回答 2

2

从 RemoteIO 输入(例如麦克风)到程序输入回调的连接完全在 AUGraph 外部,因此它不会显示在CAShow()输出中。就 AUGraph 而言,入口点是混音器的渲染回调,出口点是 RemoteIO 输出。AUGraph 不知道您的程序是如何布局的,以及在样本在其渲染回调中被馈送到混合器之前会发生什么。

在 ASCII 中(假设您使用的是环形缓冲区):

Outside AUGraph                   Inside AUGraph
+-------------------------------+-----------------------------------------+
| RemoteIO Input -> Ring Buffer | Ring Buffer -> Mixer -> RemoteIO Output |
+-------------------------------+-----------------------------------------+
于 2012-12-05T22:18:10.007 回答
0

“连接到回调的远程 IO 输入元素的输出总线” - 你能解释一下你的意思吗?据我所知,这不是一件事,所以这似乎是你的问题所在。

在您的混音器输入回调中,您可以从 remoteIO 输入访问样本并将它们提供给混音器,但它们没有连接,至少就 AUGraph 而言。

如果您发布一些代码,我会更新答案。

于 2012-12-05T18:40:28.593 回答