/** * @throws OSStatusException * @since Available in iOS 6.0 and later. */ public static MTAudioProcessingTap create(Callbacks callbacks, MTAudioProcessingTapCreationFlags flags) throws OSStatusException { MTAudioProcessingTap.MTAudioProcessingTapPtr ptr = new MTAudioProcessingTap.MTAudioProcessingTapPtr(); long callbackId = MTAudioProcessingTap.callbackId.getAndIncrement(); MTAudioProcessingTapCallbacksStruct struct = new MTAudioProcessingTapCallbacksStruct(0, callbackId, new FunctionPtr(cbInit), new FunctionPtr(cbFinalize), new FunctionPtr(cbPrepare), new FunctionPtr(cbUnprepare), new FunctionPtr(cbProcess)); OSStatus status = create(null, struct, flags, ptr); if (OSStatusException.throwIfNecessary(status)) { synchronized (MTAudioProcessingTap.callbacks) { MTAudioProcessingTap.callbacks.put(callbackId, callbacks); } return ptr.get(); } return null; } /**
/** * @throws OSStatusException * @since Available in iOS 6.0 and later. */ public long getSourceAudio(long numberFrames, AudioBufferList bufferList, MTAudioProcessingTapMutableFlags flags) throws OSStatusException { CMTimeRange timeRangePtr = new CMTimeRange(); MachineSizedSIntPtr numberFramesPtr = new MachineSizedSIntPtr(); OSStatus status = getSourceAudio0(numberFrames, bufferList, flags, timeRangePtr, numberFramesPtr); OSStatusException.throwIfNecessary(status); this.lastTimeRange = timeRangePtr; return numberFramesPtr.get(); }
@Callback private static void cbUnprepare(MTAudioProcessingTap tap) { Callbacks cb = null; synchronized (callbacks) { cb = callbacks.get(tap.getStorage()); } cb.unprepare(tap); } @Callback
@Callback private static void cbFinalize(MTAudioProcessingTap tap) { long storage = tap.getStorage(); Callbacks cb = null; synchronized (callbacks) { cb = callbacks.remove(storage); } cb.finalize(tap); } @Callback
/** * @throws OSStatusException * @since Available in iOS 6.0 and later. */ public long getSourceAudio(long numberFrames, AudioBufferList bufferList, MTAudioProcessingTapMutableFlags flags) throws OSStatusException { CMTimeRange timeRangePtr = new CMTimeRange(); MachineSizedSIntPtr numberFramesPtr = new MachineSizedSIntPtr(); OSStatus status = getSourceAudio0(numberFrames, bufferList, flags, timeRangePtr, numberFramesPtr); OSStatusException.throwIfNecessary(status); this.lastTimeRange = timeRangePtr; return numberFramesPtr.get(); }
/** * @throws OSStatusException * @since Available in iOS 6.0 and later. */ public static MTAudioProcessingTap create(Callbacks callbacks, MTAudioProcessingTapCreationFlags flags) throws OSStatusException { MTAudioProcessingTap.MTAudioProcessingTapPtr ptr = new MTAudioProcessingTap.MTAudioProcessingTapPtr(); long callbackId = MTAudioProcessingTap.callbackId.getAndIncrement(); MTAudioProcessingTapCallbacksStruct struct = new MTAudioProcessingTapCallbacksStruct(0, callbackId, new FunctionPtr(cbInit), new FunctionPtr(cbFinalize), new FunctionPtr(cbPrepare), new FunctionPtr(cbUnprepare), new FunctionPtr(cbProcess)); OSStatus status = create(null, struct, flags, ptr); if (OSStatusException.throwIfNecessary(status)) { synchronized (MTAudioProcessingTap.callbacks) { MTAudioProcessingTap.callbacks.put(callbackId, callbacks); } return ptr.get(); } return null; } /**
@Callback private static void cbPrepare(MTAudioProcessingTap tap, @MachineSizedSInt long maxFrames, AudioStreamBasicDescription processingFormat) { Callbacks cb = null; synchronized (callbacks) { cb = callbacks.get(tap.getStorage()); } cb.prepare(tap, maxFrames, processingFormat); } @Callback
/** * @throws OSStatusException * @since Available in iOS 6.0 and later. */ public long getSourceAudio(long numberFrames, AudioBufferList bufferList, MTAudioProcessingTapMutableFlags flags) throws OSStatusException { CMTimeRange timeRangePtr = new CMTimeRange(); MachineSizedSIntPtr numberFramesPtr = new MachineSizedSIntPtr(); OSStatus status = getSourceAudio0(numberFrames, bufferList, flags, timeRangePtr, numberFramesPtr); OSStatusException.throwIfNecessary(status); this.lastTimeRange = timeRangePtr; return numberFramesPtr.get(); }
/** * @throws OSStatusException * @since Available in iOS 6.0 and later. */ public static MTAudioProcessingTap create(Callbacks callbacks, MTAudioProcessingTapCreationFlags flags) throws OSStatusException { MTAudioProcessingTap.MTAudioProcessingTapPtr ptr = new MTAudioProcessingTap.MTAudioProcessingTapPtr(); long callbackId = MTAudioProcessingTap.callbackId.getAndIncrement(); MTAudioProcessingTapCallbacksStruct struct = new MTAudioProcessingTapCallbacksStruct(0, callbackId, new FunctionPtr(cbInit), new FunctionPtr(cbFinalize), new FunctionPtr(cbPrepare), new FunctionPtr(cbUnprepare), new FunctionPtr(cbProcess)); OSStatus status = create(null, struct, flags, ptr); if (OSStatusException.throwIfNecessary(status)) { synchronized (MTAudioProcessingTap.callbacks) { MTAudioProcessingTap.callbacks.put(callbackId, callbacks); } return ptr.get(); } return null; } /**
@Callback private static void cbProcess(MTAudioProcessingTap tap, @MachineSizedSInt long numberFrames, MTAudioProcessingTapMutableFlags flags, AudioBufferList bufferListInOut, MachineSizedSIntPtr numberFramesOut, MTAudioProcessingTapFlags.MTAudioProcessingTapFlagsPtr flagsOut) { Callbacks cb = null; synchronized (callbacks) { cb = callbacks.get(tap.getStorage()); } long frames = cb.process(tap, numberFrames, flags, bufferListInOut); numberFramesOut.set(frames); flagsOut.set(flags.get()); }
@Callback private static void cbFinalize(MTAudioProcessingTap tap) { long storage = tap.getStorage(); Callbacks cb = null; synchronized (callbacks) { cb = callbacks.remove(storage); } cb.finalize(tap); } @Callback
@Callback private static void cbUnprepare(MTAudioProcessingTap tap) { Callbacks cb = null; synchronized (callbacks) { cb = callbacks.get(tap.getStorage()); } cb.unprepare(tap); } @Callback
@Callback private static void cbFinalize(MTAudioProcessingTap tap) { long storage = tap.getStorage(); Callbacks cb = null; synchronized (callbacks) { cb = callbacks.remove(storage); } cb.finalize(tap); } @Callback
@Callback private static void cbUnprepare(MTAudioProcessingTap tap) { Callbacks cb = null; synchronized (callbacks) { cb = callbacks.get(tap.getStorage()); } cb.unprepare(tap); } @Callback
@Callback private static void cbPrepare(MTAudioProcessingTap tap, @MachineSizedSInt long maxFrames, AudioStreamBasicDescription processingFormat) { Callbacks cb = null; synchronized (callbacks) { cb = callbacks.get(tap.getStorage()); } cb.prepare(tap, maxFrames, processingFormat); } @Callback
@Callback private static void cbPrepare(MTAudioProcessingTap tap, @MachineSizedSInt long maxFrames, AudioStreamBasicDescription processingFormat) { Callbacks cb = null; synchronized (callbacks) { cb = callbacks.get(tap.getStorage()); } cb.prepare(tap, maxFrames, processingFormat); } @Callback
@Callback private static void cbProcess(MTAudioProcessingTap tap, @MachineSizedSInt long numberFrames, MTAudioProcessingTapMutableFlags flags, AudioBufferList bufferListInOut, MachineSizedSIntPtr numberFramesOut, MTAudioProcessingTapFlags.MTAudioProcessingTapFlagsPtr flagsOut) { Callbacks cb = null; synchronized (callbacks) { cb = callbacks.get(tap.getStorage()); } long frames = cb.process(tap, numberFrames, flags, bufferListInOut); numberFramesOut.set(frames); flagsOut.set(flags.get()); }
@Callback private static void cbProcess(MTAudioProcessingTap tap, @MachineSizedSInt long numberFrames, MTAudioProcessingTapMutableFlags flags, AudioBufferList bufferListInOut, MachineSizedSIntPtr numberFramesOut, MTAudioProcessingTapFlags.MTAudioProcessingTapFlagsPtr flagsOut) { Callbacks cb = null; synchronized (callbacks) { cb = callbacks.get(tap.getStorage()); } long frames = cb.process(tap, numberFrames, flags, bufferListInOut); numberFramesOut.set(frames); flagsOut.set(flags.get()); }