2017-05-26 22 views
0

我不能installTap裏面做什麼(onBus塊?我不能installTap裏面做什麼(onBus阻止?

如果你看到講座WWDC 2016提供非凡的音效體驗=>在31分鐘 它會說,在實時音頻我需要做的不是讓線程分配內存。

也是本教程中說 http://teragonaudio.com/article/How-to-do-realtime-recording-with-effect-processing-on-iOS.html 這裏遊戲的名稱是移動任何你能出的渲染和進入初始化函數。這包括分配內存塊和調用系統功能等。

我有這樣的代碼

inputNode?.installTap(onBus: bus, bufferSize: myTapOnBusBufferSize, format: theAudioFormat) { 
      (buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in 
      theShowInfo.audioFormat = theAudioFormat 

      self.onNewBuffer(buffer) 
     } 

這是否意味着我onNewBuffer功能裏面

我無法輸入這個代碼?

var myStringArray = ["",""] 

我無法輸入此代碼?

DispatchQueue.main.async(qos: .userInteractive) { 

     } 

我無法輸入此代碼?

NotificationCenter.default.post(name: Notification.Name(rawValue: MyNotificationIdentifier), object: nil) 

這是否意味着,否則我的應用程序將崩潰,如果我會做線程,分配內存?

這是否意味着如果我做fft算法,我需要在onNewBuffer函數的線程中爲fft創建所有代碼?

+0

在第502講 - AVAudioEngine in Practice =>在22分鐘內。龍頭塊裏面我可以做什麼我需要做的與這些數據 – user

回答

1

在音頻呈現線程上不調用給予InstallTapOnBus的閉包,因此您不必擔心此處的鎖定。渲染回調是使用C API設置的。如果你正在使用渲染回調,那麼是的,你會避免任何Swift函數,Objective-C消息,賦予ObjC對象(ARC),分配或其他任何可能需要鎖定或可能花費太長時間的所有權的賦值返回。

+0

嗨戴夫 非常有用的感謝 – user

相關問題