我正在開發iOS應用程序,該應用程序使用RemoteIO音頻單元錄製來自麥克風的音頻,將其處理並輸出到揚聲器(耳機)。目前我使用單聲道(單聲道)進行輸入和輸出。使用Core Audio控制單聲道播放輸出
我想要做的是讓用戶選擇一個輸出揚聲器:只剩下,只有右側或兩者兼而有之。我目前的代碼只支持「both」設置 - 兩個揚聲器都有相同的聲音。
下面是如何設置的輸入和輸出總線的流格式(kAudioUnitProperty_StreamFormat):
AudioStreamBasicDescription ASBD = {0};
size_t bytesPerSample = sizeof(SInt16);
ASBD.mFormatID = kAudioFormatLinearPCM;
ASBD.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
ASBD.mSampleRate = 44100;
ASBD.mFramesPerPacket = 1;
ASBD.mBytesPerFrame = bytesPerSample;
ASBD.mBytesPerPacket = bytesPerSample;
ASBD.mBitsPerChannel = 8 * bytesPerSample;
ASBD.mChannelsPerFrame = 1;
我的渲染回調(kAudioUnitProperty_SetRenderCallback)看起來大致是這樣的:
AudioUnitRender(remoteIO, ioActionFlags, inTimeStamp, inputBus, inNumberFrames, ioData);
SInt16 *renderBuffer = ioData->mBuffers[0].mData;
// Process renderBuffer and modify the samples
會是什麼實現僅限左側/僅限右側設置的最簡單方法?如果有任何相關的話,我不介意更改設備設置。
你能發佈一個適合你的配置嗎?沒有解決方案爲我工作:我不能將兩個元素都設置爲立體聲,因爲麥克風是單聲道的。如果我將輸入定義爲單聲道並將輸出定義爲立體聲,則對於交錯的情況,AudioBufferList包含與以前相同數量的樣本(無立體聲)。對於非交叉的情況,我得到初始化時的「fmt」錯誤。經過iPod第二代iOS 4.2的測試。 – kshahar
試試這個示例項目。它演示瞭如何使用LFO調製輸入採樣,同時選擇性地對任一通道進行靜音:http://dl.dropbox.com/u/13103695/StereoSelector.zip – warrenm
感謝您的努力! – kshahar