获取或设置AUGraphAddRenderNotify接收的音频格式

时间:2014-09-02 14:51:51

标签: ios core-audio audiounit

是否可以设置AUGraphAddRenderNotify回调的音频格式?如果没有,是否可以在初始时看到格式是什么?

我有一个非常简单的AUGraph,播放从kAudioUnitSubType_AudioFilePlayerkAudioUnitSubType_RemoteIO的音频。我正在对音频进行实时处理,因此我已在图表中添加了AUGraphAddRenderNotify回调功能。这一切都很好,但是当我初始化图形时,我需要为我的处理设置一些缓冲区和一些其他数据,我需要知道回调中将提供什么格式。 (在某些设备上它是交错的,而在其他设备上却不是 - 这很好,我只需要知道)。

以下是设置:

NewAUGraph(&audioUnitGraph);

AUNode playerNode;
AUNode outputNode;

AudioComponentDescription playerDescription = {
    .componentType = kAudioUnitType_Generator,
    .componentSubType = kAudioUnitSubType_AudioFilePlayer,
    .componentManufacturer = kAudioUnitManufacturer_Apple
};

AudioComponentDescription outputDescription = {
    .componentType = kAudioUnitType_Output,
    .componentSubType = kAudioUnitSubType_RemoteIO,
    .componentManufacturer = kAudioUnitManufacturer_Apple
};

AUGraphAddNode(audioUnitGraph, &playerDescription, &playerNode);
AUGraphAddNode(audioUnitGraph, &outputDescription, &outputNode);

AUGraphOpen(audioUnitGraph);

AUGraphNodeInfo(audioUnitGraph, playerNode, NULL, &playerAudioUnit);
AUGraphNodeInfo(audioUnitGraph, outputNode, NULL, &outputAudioUnit);

// Tried adding all manner of AudioUnitSetProperty() calls here to set the AU formats

AUGraphConnectNodeInput(audioUnitGraph, playerNode, 0, outputNode, 0);
AUGraphAddRenderNotify(audioUnitGraph, render, (__bridge void *)self);

AUGraphInitialize(audioUnitGraph);

// Some time later...
// - Set up audio file in the file player
// - Start the graph with AUGraphStart()

我可以理解,改变两个音频单元使用的格式可能对格式'看到'在AUGraph呈现回调的时候(因为这是它们的下游),但肯定有一种方法可以在初始化时知道​​该格式是什么?

0 个答案:

没有答案