AudioUnitSetPropertyの場合Callback指定
AudioManager.swift
// Set input callback
var callbackStruct = RenderCallbackStruct({cbInRefCon, cbIoActionFlags, cbInTimeStamp, cbInBusNumber, cbInNumberFrames, cbIoData in
return self.recordingCallback(cbInRefCon, ioActionFlags: cbIoActionFlags, inTimeStamp: cbInTimeStamp, inBusNumber: cbInBusNumber, inNumberFrames: cbInNumberFrames, ioData: cbIoData)
})
...
func recordingCallback(inRefCon: UnsafeMutablePointer<Void>, ioActionFlags: UnsafeMutablePointer<AudioUnitRenderActionFlags>, inTimeStamp: UnsafePointer<AudioTimeStamp>, inBusNumber: UInt32, inNumberFrames: UInt32, ioData: UnsafeMutablePointer<AudioBufferList>) -> OSStatus {
println("recordingCallback")
}
AudioHelper.h
#import <AudioToolbox/AudioToolbox.h>
typedef OSStatus (^RenderCallbackClosure)(void *inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inOutputBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData);
OSStatus renderCallback (void *inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inOutputBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData);
AURenderCallbackStruct RenderCallbackStruct (RenderCallbackClosure rClosure);