Esempio n. 1
0
        private void setupBuffer()
        {
            pWaveHdr1                 = new WAVEHDR();
            pWaveHdr1.lpData          = bufferPin.AddrOfPinnedObject();
            pWaveHdr1.dwBufferLength  = INP_BUFFER_SIZE;
            pWaveHdr1.dwBytesRecorded = 0;
            pWaveHdr1.dwUser          = IntPtr.Zero;
            pWaveHdr1.dwFlags         = 0;
            pWaveHdr1.dwLoops         = 1;
            pWaveHdr1.lpNext          = IntPtr.Zero;
            pWaveHdr1.reserved        = (System.IntPtr)null;

            int i = waveInPrepareHeader(handle, ref pWaveHdr1, Convert.ToUInt32(Marshal.SizeOf(pWaveHdr1)));

            if (i != 0)
            {
                this.Text = "Error: waveInPrepare " + i.ToString();
                return;
            }

            i = waveInAddBuffer(handle, ref pWaveHdr1, Convert.ToUInt32(Marshal.SizeOf(pWaveHdr1)));
            if (i != 0)
            {
                this.Text = "Error: waveInAddrBuffer";
                return;
            }
        }
Esempio n. 2
0
 public static extern int waveInUnprepareHeader(IntPtr hwi, ref WAVEHDR pwh, uint cbwh);
Esempio n. 3
0
 public static extern int waveInAddBuffer(IntPtr hWaveIn, ref WAVEHDR lpWaveHdr, uint cWaveHdrSize);
Esempio n. 4
0
 public static extern int waveInPrepareHeader(IntPtr hWaveIn, ref WAVEHDR lpWaveHdr, uint Size);
Esempio n. 5
0
        public void callbackWaveIn(IntPtr deviceHandle, uint message, IntPtr instance, ref WAVEHDR wavehdr, IntPtr reserved2)
        {
            int  i  = 0;
            uint ii = 0;

            if (message == 0x3BF)
            {//WIM_CLOSE
                //     i = waveInUnprepareHeader(deviceHandle, ref wavehdr, Convert.ToUInt32(Marshal.SizeOf(wavehdr)));
                //     if (i != 0)
                //     {
                //         this.Text = "Error: waveInUnprepareHeader " + i;
                //     }
            }
            else
            if (message == 958)
            {//WIM_OPEN
                return;
            }
            else
            if (message == 0x3C0) //WIM_DATA
            //if (this.InvokeRequired)
            //    this.Invoke(waveIn, deviceHandle, message, instance, wavehdr, reserved2);
            //else
            {
                {
                    if (wavehdr.dwBytesRecorded > 0)
                    {
                        byte[] temp = new byte[sampleLength + wavehdr.dwBytesRecorded];
                        Array.Copy(samples, temp, sampleLength);

                        Array.Copy(buffer, 0, temp, sampleLength, wavehdr.dwBytesRecorded);
                        sampleLength += wavehdr.dwBytesRecorded;
                        samples       = temp;
                        //     foreach (byte buf in buffer)
                        //    {

                        //               form.addData(buffer);
                        // do something cool with your byte stream
                        //   }
                        i = waveInUnprepareHeader(deviceHandle, ref wavehdr, Convert.ToUInt32(Marshal.SizeOf(wavehdr)));
                        if (i != 0)
                        {
                            this.Text = "Error: waveInUnprepareHeader " + i;
                        }
                        setupBuffer();
                    }
                    if (endRecording)
                    {
                        return;
                    }
                }
            }
            else //SHOULD NOT GET HERE
            {
                endRecording = true;
            }
        }