void InitWinMm( AudioChunk chunk ) { handle = IntPtr.Zero; WaveFormatEx format = new WaveFormatEx(); format.Channels = (ushort)chunk.Channels; format.ExtraSize = 0; format.FormatTag = WaveFormatTag.Pcm; format.BitsPerSample = (ushort)chunk.BitsPerSample; format.BlockAlign = (ushort)( format.Channels * format.BitsPerSample / 8 ); format.SampleRate = (uint)chunk.Frequency; format.AverageBytesPerSecond = chunk.Frequency * format.BlockAlign; WaveOpenFlags flags = WaveOpenFlags.CallbackFunction; callback = ProcessWaveOutCallback; uint result = Open( out handle, new UIntPtr( (uint)0xFFFF ), ref format, callback, UIntPtr.Zero, flags ); CheckError( result ); }
static extern uint Open( out IntPtr handle, UIntPtr deviceID, ref WaveFormatEx format, WaveOutCallback callback, UIntPtr callbackInstance, WaveOpenFlags flags);