[英]AudioBufferList contents in remoteIO audio unit playback callback
[英]ios audio unit remoteIO playback while recording
我被指控將VOIP添加到游戲中(跨平台,因此不能使用Apple游戲套件來執行此操作)。
現在3或4天,我正試圖繞着音頻單元和remoteIO ...我已經忽略了幾十個例子等等,但每次它只是將一個簡單的算法應用到輸入PCM並播放它回到揚聲器上。 根據Apple的文檔,為了做VOIP,我們應該使用kAudioSessionCategory_PlayAndRecord。
UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;
status = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(audioCategory),
&audioCategory);
XThrowIfError(status, "couldn't set audio category");
1)但似乎(對我而言)playAndRecord將始終播放來自麥克風的內容(或者更令人興奮的是PerformThru回調// aurioTouch ),我錯了嗎?
我有最簡單的回調,只做AURender
static OSStatus PerformThru(
void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
OSStatus err = AudioUnitRender(THIS->rioUnit, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData);
if (err)
printf("PerformThru: error %d\n", (int)err);
return err
}
從那個回調我打算將數據發送給對等體(當然不是直接,但數據將來自它)......
我不知道我怎么能輸出不同於輸入的輸出,除了可能有2個單位,一個錄音,一個播放,但它似乎不是蘋果的意圖(仍然是文檔)。
當然,我找不到任何關於它的文檔,音頻單元仍然沒有記錄......
任何人都會知道最好的方法是什么?
你可以看到這個簡單的例子。 它描述了如何使用遠程IO單元。 理解了這個例子后,你應該看PJSIP的音頻驅動程序 。 這些應該可以幫助您實現自己的解決方案 祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.