我不能installTap里面做什么(onBus阻止?

问题描述:

我不能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

在音频呈现线程上不调用给予InstallTapOnBus的闭包,因此您不必担心此处的锁定。渲染回调是使用C API设置的。如果你正在使用渲染回调,那么是的,你会避免任何Swift函数,Objective-C消息,赋予ObjC对象(ARC),分配或其他任何可能需要锁定或可能花费太长时间的所有权的赋值返回。

+0

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