예제 #1
0
 private void CallBack(IntPtr hdrvr, int msg, IntPtr instance, WaveHeader waveHeader, int reserved)
 {
     if (msg == WinMM.WaveInData && recording)
     {
         var hBuffer = (GCHandle)waveHeader.userData;
         var buffer  = (WaveInBuffer)hBuffer.Target;
         if (buffer == null)
         {
             return;
         }
         lastReturnedBufferIndex = Array.IndexOf(buffers, buffer);
         DataAvailable?.Invoke(this, new WaveInEventArgs(buffer.Data, buffer.BytesRecorded));
         buffer.Use();
     }
 }
예제 #2
0
 public WaveOutBuffer(IntPtr WaveOutHandle, int BufferSize)
 {
     waveOutHandle       = WaveOutHandle;
     bufferSize          = BufferSize;
     buffer              = new byte[bufferSize];
     hBuffer             = GCHandle.Alloc(buffer, GCHandleType.Pinned);
     header              = new WaveHeader();
     hHeader             = GCHandle.Alloc(header, GCHandleType.Pinned);
     header.dataBuffer   = hBuffer.AddrOfPinnedObject();
     header.bufferLength = bufferSize;
     header.loops        = 1;
     hThis           = GCHandle.Alloc(this);
     header.userData = (IntPtr)hThis;
     WinMM.waveOutPrepareHeader(waveOutHandle, header, Marshal.SizeOf(header));
 }
예제 #3
0
 private void CallBack(IntPtr hdrvr, int msg, IntPtr dwUser, WaveHeader waveHeader, int dwParam2)
 {
     Console.WriteLine("WaveOut");
     if (msg == WinMM.WaveOutDone && playing)
     {
         try
         {
             GCHandle      hBuffer = (GCHandle)waveHeader.userData;
             WaveOutBuffer buffer  = (WaveOutBuffer)hBuffer.Target;
             lastReturnedBufferIndex = Array.IndexOf(buffers, buffer);
             //buffer.Use();
         }
         catch
         {
         }
     }
 }
예제 #4
0
 public static extern int waveOutWrite(IntPtr hWaveOut, WaveHeader lpWaveOutHdr, int uSize);
예제 #5
0
 public static extern int waveOutPrepareHeader(IntPtr hWaveOut, WaveHeader lpWaveOutHdr, int uSize);
예제 #6
0
 internal static extern int waveInAddBuffer(IntPtr hwi, WaveHeader pwh, int cbwh);
예제 #7
0
 public static extern int waveInUnprepareHeader(IntPtr hWaveIn, WaveHeader lpWaveInHdr, int uSize);