Audio Unit Processing Grapph 完整描述了一个音频信号处理过程。其功能包括: 连接一组 audio unit 之间的输入和输出,形成一张网状图并为audio unit 的输入提供了回调;子处理图允许嵌入到父处理图的各部分。


音频处理图形对象可以获取所有在图形的音频单元完整信息。在图中,每个节点代表一个音频单元或子图,我们可以添加或去除,并且修改它们之间的相互作。图形对象有一个头节点 - 输出单元。输出单元,用于启动和停止图的绘制操作; 在运行时,调度各个节点的信息。


audio unit  processing graph 应用的大概流程:

  • 创建 audio processing graph 对象

    OSStatus NewAUGraph (
       AUGraph *outGraph
    );
  • 添加 audio nodes

    OSStatus AUGraphAddNode (
       AUGraph                         inGraph,
       const AudioComponentDescription *inDescription,
       AUNode                          *outNode
    );


  • 打开audio processing graph 对象


    OSStatus AUGraphOpen (
       AUGraph inGraph
    );


  • 各个audio node 添加相应的 audio unit 以及输入输出格式等信息


    OSStatus AUGraphNodeInfo (
       AUGraph                   inGraph,
       AUNode                    inNode,
       AudioComponentDescription *outDescription,
    );


  • 关联audio nodes 之间的输入和输出


    OSStatus AUGraphConnectNodeInput (
       AUGraph inGraph,
       AUNode inSourceNode,
       UInt32 inSourceOutputNumber,
       AUNode inDestNode,
       UInt32 inDestInputNumber
    );


  • 初始化 audio uint processing graph

    OSStatus AUGraphInitialize (
       AUGraph inGraph
    );
  • 启动  audio uint processing graph

    OSStatus AUGraphStart (
       AUGraph inGraph
    );
  • 停止  audio uint processing graph
    OSStatus AUGraphStop (
       AUGraph inGraph
    );
    
  • 释放  audio uint processing graph 对象
    OSStatus DisposeAUGraph (
       AUGraph inGraph
    );