2013-07-10 32 views
4

我在iOS應用中使用了兩個AUGraphs,一個用於錄製音頻,另一個用於播放音頻。我一次只使用一個。這個工作正常,只要我從頭開始重新創建AUGraph實例,每次我開始使用它們。iOS中AudioUnit圖表的可重用性

我試圖重複使用這些AUGraphs,而不是每次在錄製和播放之間切換時創建並初始化它們的新實例。

我有問題,要做到這一點,因爲這樣做下面的步驟時,我下一次得到一個錯誤,我嘗試從I/O單元獲取麥克風數據:

  • 撰寫記錄圖
  • 初始化記錄圖形
  • 開始記錄圖形
  • 停止記錄圖形
  • 撰寫播放圖表
  • INI tialize播放圖像
  • 開始播放圖像
  • 停止播放圖像
  • 開始記錄圖

然後這將導致錯誤的調用,-50返回代碼(這個說法重新創建時,工作正常AUGraph每次):

OSStatus status = AudioUnitRender(
    remoteIoUnit, 
    ioActionFlags, 
    inTimeStamp, 
    CB_remoteIoUnitInputElement, 
    inNumberFrames, 
    ioData 
); 

重複使用AUGraphs一般可能,如果是這樣,如何?

+0

我已經恢復使用娛樂方法。雖然這個解決方法爲我做了這項工作,但如果有人能告訴我如何重用AUGraph,請告訴我。我甚至只是出於好奇而感興趣。 –

+0

發現這個,可能會有些微的興趣:http://lists.apple.com/archives/coreaudio-api/2012/Oct/msg00113.html – Woodstock

回答

2

可以重複使用一個AU圖完全以問題中所述的相同方式。

爲什麼它不適用於我的問題是,我有一個錯誤,導致我的兩個AUGraph實例之間的干擾/覆蓋。我偶然發現了這些錯誤。自從我修復它們之後,AUGraphs就按預期工作。

當保持兩個AUGraph實例完全分離時,您可以根據需要使用和重複使用儘可能多的AUGraph實例。我沒有測試它們是否可以同時使用。