Audio and MIDI library for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

56 lines
2.3 KiB

using System;
using System.Runtime.InteropServices;
namespace NAudio.Wave.Asio
{
/// <summary>
/// ASIO Callbacks
/// </summary>
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct AsioCallbacks
{
/// <summary>
/// ASIO Buffer Switch Callback
/// </summary>
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void AsioBufferSwitchCallBack(int doubleBufferIndex, bool directProcess);
/// <summary>
/// ASIO Sample Rate Did Change Callback
/// </summary>
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void AsioSampleRateDidChangeCallBack(double sRate);
/// <summary>
/// ASIO Message Callback
/// </summary>
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int AsioAsioMessageCallBack(AsioMessageSelector selector, int value, IntPtr message, IntPtr opt);
// return AsioTime*
/// <summary>
/// ASIO Buffer Switch Time Info Callback
/// </summary>
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr AsioBufferSwitchTimeInfoCallBack(IntPtr asioTimeParam, int doubleBufferIndex, bool directProcess);
// internal delegate IntPtr AsioBufferSwitchTimeInfoCallBack(ref AsioTime asioTimeParam, int doubleBufferIndex, bool directProcess);
/// <summary>
/// Buffer switch callback
/// void (*bufferSwitch) (long doubleBufferIndex, AsioBool directProcess);
/// </summary>
public AsioBufferSwitchCallBack pbufferSwitch;
/// <summary>
/// Sample Rate Changed callback
/// void (*sampleRateDidChange) (AsioSampleRate sRate);
/// </summary>
public AsioSampleRateDidChangeCallBack psampleRateDidChange;
/// <summary>
/// ASIO Message callback
/// long (*asioMessage) (long selector, long value, void* message, double* opt);
/// </summary>
public AsioAsioMessageCallBack pasioMessage;
/// <summary>
/// ASIO Buffer Switch Time Info Callback
/// AsioTime* (*bufferSwitchTimeInfo) (AsioTime* params, long doubleBufferIndex, AsioBool directProcess);
/// </summary>
public AsioBufferSwitchTimeInfoCallBack pbufferSwitchTimeInfo;
}
}