public AudioGraphEventArgs(AudioUnitRenderActionFlags actionFlags, MonoMac.AudioToolbox.AudioTimeStamp timeStamp, int busNumber, int numberFrames, AudioBufferList data) : base(actionFlags, timeStamp, busNumber, numberFrames, data) { }
public _AudioConverterEventArgs( uint _NumberDataPackets, AudioBufferList _Data, MonoMac.AudioToolbox.AudioStreamPacketDescription[] _DataPacketDescription) { NumberDataPackets = _NumberDataPackets; Data = _Data; DataPacketDescription = _DataPacketDescription; }
public AudioUnitEventArgs(AudioUnitRenderActionFlags actionFlags, MonoMac.AudioToolbox.AudioTimeStamp timestamp, int busNumber, int frames, AudioBufferList data) { ActionFlags = actionFlags; this.TimeStamp = timestamp; BusNumber = busNumber; NumberFrames = frames; Data = data; }
static int complexInputDataProc( IntPtr inAudioConverrter, ref uint ioNumberDataPackets, AudioBufferList ioData, ref AudioStreamPacketDescription[] outDataPacketDescription, //AudioStreamPacketDescription** IntPtr inUserData ) { // getting audiounit instance var handler = GCHandle.FromIntPtr(inUserData); var inst = (_AudioConverter)handler.Target; // evoke event handler with an argument if (inst.EncoderCallback != null) { var args = new _AudioConverterEventArgs( ioNumberDataPackets, ioData, outDataPacketDescription); inst.EncoderCallback(inst, args); } return 0; // noerror }
public void WriteAsync(int numberFrames, AudioBufferList data) { IntPtr buffer = data == null ? IntPtr.Zero : data.ToPointer (); int err = ExtAudioFileWriteAsync(_extAudioFile, numberFrames, buffer); // Try not to leak unmanaged pointer buffer if (last_async_write_buffer_ptr != IntPtr.Zero) { Marshal.FreeHGlobal (last_async_write_buffer_ptr); last_async_write_buffer_ptr = IntPtr.Zero; } if (err != 0) { if (buffer != IntPtr.Zero) Marshal.FreeHGlobal (buffer); throw new ArgumentException(String.Format("Error code:{0}", err)); } if (buffer != IntPtr.Zero) { last_async_write_buffer_ptr = buffer; } }
public int Read(int numberFrames, AudioBufferList data) { if (data == null) throw new ArgumentNullException ("data"); var ptr = data.ToPointer (); int err = ExtAudioFileRead(_extAudioFile, ref numberFrames, ptr); Marshal.FreeHGlobal (ptr); if (err != 0) { throw new ArgumentException(String.Format("Error code:{0}", err)); } return numberFrames; }
static extern int AudioUnitRender(IntPtr inUnit, ref AudioUnitRenderActionFlags ioActionFlags, ref AudioTimeStamp inTimeStamp, int inOutputBusNumber, int inNumberFrames, AudioBufferList ioData);
public AudioUnitStatus TryRender(AudioUnitRenderActionFlags flags, AudioTimeStamp timeStamp, int outputBusnumber, int numberFrames, AudioBufferList data) { return (AudioUnitStatus) AudioUnitRender(handle, ref flags, ref timeStamp, outputBusnumber, numberFrames, data); }
public void Render(AudioUnitRenderActionFlags flags, AudioTimeStamp timeStamp, int outputBusnumber, int numberFrames, AudioBufferList data) { int err = AudioUnitRender(handle, ref flags, ref timeStamp, outputBusnumber, numberFrames, data); if (err != 0) throw new AudioUnitException (err); }
static int renderCallback(IntPtr inRefCon, ref AudioUnitRenderActionFlags _ioActionFlags, ref AudioTimeStamp _inTimeStamp, int _inBusNumber, int _inNumberFrames, AudioBufferList _ioData) { // getting audiounit instance var handler = GCHandle.FromIntPtr(inRefCon); var inst = (AudioUnit)handler.Target; // evoke event handler with an argument if (inst.RenderCallback != null) { var args = new AudioUnitEventArgs( _ioActionFlags, _inTimeStamp, _inBusNumber, _inNumberFrames, _ioData); inst.RenderCallback(inst, args); } return 0; // noerror }
static extern int ExtAudioFileWriteAsync(IntPtr inExtAudioFile, uint inNumberFrames, AudioBufferList ioData);
static extern int ExtAudioFileRead(IntPtr inExtAudioFile, ref uint ioNumberFrames, AudioBufferList ioData);
public void WriteAsync(uint numberFrames, AudioBufferList data) { int err = ExtAudioFileWriteAsync(_extAudioFile, numberFrames, data); if (err != 0) throw new ArgumentException(String.Format("Error code:{0}", err)); }
public uint Read(uint numberFrames, AudioBufferList data) { int err = ExtAudioFileRead(_extAudioFile, ref numberFrames, data); if (err != 0) { throw new ArgumentException(String.Format("Error code:{0}", err)); } return numberFrames; }
static extern int AudioConverterFillComplexBuffer( IntPtr inAudioConverter, AudioConverterComplexInputDataProc inInputDataProc, IntPtr inInputDataProcUserData, ref uint ioOutputDataPacketSize, AudioBufferList outOutputData, AudioStreamPacketDescription[] outPacketDescription);
public void FillBuffer(AudioBufferList data, uint numberFrames, AudioStreamPacketDescription[] packetDescs) { uint numPackets = numberFrames; int err =AudioConverterFillComplexBuffer( _audioConverter, complexInputDataProc, GCHandle.ToIntPtr(_handle), ref numPackets, data, packetDescs); if(err != 0 || numPackets == 0) { throw new InvalidOperationException(String.Format("Error code:{0}", err)); } }