2017-05-26 12 views
0

(onBusブロック?私はブロックonBus(installTapの内部で行うことはできません?私はinstallTapの内部で行うことはできませんどのよう

あなたは、優れたオーディオ体験を提供する講義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を使用して設定されます。レンダーコールバックを使用している場合は、スウィフト関数、Objective-Cメッセージ、ObjCオブジェクト(ARC)、割り当てなどの所有権を取得する割り当てや、ロックを取るか、戻る。

+0

こんにちはDave ありがとう非常に便利です – user

関連する問題