Exemple #1
0
 /// <summary>creates a new wavebuffer</summary>
 /// <param name="hWaveOut">WaveOut device to write to</param>
 /// <param name="bufferSize">Buffer size in bytes</param>
 /// <param name="bufferFillStream">Stream to provide more data</param>
 /// <param name="waveOutLock">Lock to protect WaveOut API's from being called on &gt;1 thread</param>
 public AudioBuffer(
     IntPtr hWaveOut,
     int bufferSize,
     IWaveProvider bufferFillStream,
     object waveOutLock)
 {
     BufferSize           = bufferSize;
     _buffer              = new byte[bufferSize];
     _hBuffer             = GCHandle.Alloc((object)_buffer, GCHandleType.Pinned);
     _hWaveOut            = hWaveOut;
     _waveStream          = bufferFillStream;
     _waveOutLock         = waveOutLock;
     _header              = new WaveHeader();
     _hHeader             = GCHandle.Alloc((object)_header, GCHandleType.Pinned);
     _header.dataBuffer   = _hBuffer.AddrOfPinnedObject();
     _header.bufferLength = bufferSize;
     _header.loops        = 1;
     _hThis           = GCHandle.Alloc((object)this);
     _header.userData = (IntPtr)_hThis;
     lock (waveOutLock)
         MmException.Try(AudioInterop.waveOutPrepareHeader(hWaveOut, _header, Marshal.SizeOf((object)_header)), "waveOutPrepareHeader");
 }
Exemple #2
0
 public static extern MmResult waveInAddBuffer(IntPtr hWaveIn, WaveHeader pwh, int cbwh);
Exemple #3
0
 public static extern MmResult waveOutUnprepareHeader(
     IntPtr hWaveOut,
     WaveHeader lpWaveOutHdr,
     int uSize);
Exemple #4
0
 public static extern MmResult waveOutWrite(
     IntPtr hWaveOut,
     WaveHeader lpWaveOutHdr,
     int uSize);
Exemple #5
0
 public static extern MmResult waveInPrepareHeader(
     IntPtr hWaveIn,
     WaveHeader lpWaveInHdr,
     int uSize);