在installTap(onBus块)中我不能做什么?

时间:2017-05-26 05:31:11

标签: ios audio avfoundation core-audio

在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制作所有代码?

1 个答案:

答案 0 :(得分:2)

在音频渲染线程中没有调用InstallTapOnBus的闭包,所以你不必担心这里的锁定。渲染回调是使用C API设置的。如果您正在使用渲染回调,那么是的,您将避免使用任何Swift函数,Objective-C消息,取得ObjC对象(ARC)所有权的分配,分配或任何其他可能需要锁定或可能需要很长时间才能执行的操作。返回。