2013-06-05 54 views
0

我試圖將音頻輸入設置爲單聲道,並使用兩個AudioStreamBasicDescription將音頻輸入設置爲立體聲,這是一個RemoteIO AudioUnit,它是唯一的AudioUnit。CoreAudio,iOS:無法使用單聲道通過RemoteIO使用單聲道輸入和立體聲輸出

然後我註冊了輸入(kAudioOutputUnitProperty_SetInputCallback)和輸出(kAudioUnitProperty_SetRenderCallback)兩個獨立的回調,並期待在我的輸出回調,與AudioBufferList *ioDataioData->mNumberBuffers應該爲2

但是,令我吃驚的是,它仍然是1.

是否RemoteIO不支持具有不同的輸入和輸出通道號?

回答

0

我似乎已經計算出來: 我用已登錄的整數採樣格式,並與該格式, 的RenderCallback的輸入參數AudioBufferList *ioData只有一個AudioBuffer在它與交錯的聲音樣本(兩個輸出信道緩衝器連成一個),即AudioBufferList::mNumberBuffers就是其中之一。其唯一的AudioBuffer成員又具有屬性mNumberChannels,其對應於真實的信道計數。就我而言,這個領域是兩個。

一個額外的發現支持上述:有符號整數格式不能進行交織,即,屬性kAudioFormatFlagIsNonInterleaved不能與kAudioFormatFlagIsSignedInteger設置ASBD的格式標誌時結合(與Xcode4.6在OSX山獅測試)。

如果使用浮動加非交錯樣本格式中,RenderCallback的AudioBufferList *ioData具有在緩衝器列表中的兩個AudioBuffer s,各具有mNumberChannels字段爲一體。