Varispeed音频单元流格式

时间:2012-02-02 05:50:17

标签: ios core-audio

我正在设置以下音频图

File Player AU -> Varispeed -> Remote IO

当我运行图表时,我听到的音频大多清晰但有很多静态。但是,如果我将图表配置为:

File Player AU -> Remote IO (Removing the varispeed)

我的音频完美无缺。

我意识到通过设置这些音频单元中的一个或多个的流格式来解决此问题。然而,在阅读了文件的数量(包括Apple的)后,我完全迷失了我需要设置流格式的位置和方式。

我是否需要在文件播放器输出中明确设置AUCanonical格式?

是否需要以某种方式修改verispeed输入?

远程IO设备是否会自动处理verispeed的输出格式?

这里有什么我想念的吗?

1 个答案:

答案 0 :(得分:3)

我能够通过从文件播放器的输出范围获取流格式并将其分配给varispeed单元的输出范围来解决我的问题。

//Setup a container ASBD, and zero out it's defaults
AudioStreamBasicDescription asbd;
memset(&asbd, 0, sizeof(AudioStreamBasicDescription));

//Get the size of the ASBD for the get property function
UInt32 propSize = sizeof(asbd);

//Get the file player's output stream format.
AudioUnitGetProperty(mFilePlayer, 
                     kAudioUnitProperty_StreamFormat, 
                     kAudioUnitScope_Output, 
                     0,
                     &asbd, 
                     &propSize)

//Set the file player's ASBD on the output of the varispeed unit
AudioUnitSetProperty(mVarispeed, 
                    kAudioUnitProperty_StreamFormat, 
                    kAudioUnitScope_Output, 
                    0, 
                    &asbd, 
                    sizeof(asbd);

我认为基于Apples文档有道理......虽然我不知道为什么。我希望这有助于一些任性的核心音频冒险家......