示例#1
0
        /// <summary>
        /// waveOutProc
        /// </summary>
        /// <param name="hWaveOut"></param>
        /// <param name="msg"></param>
        /// <param name="dwInstance"></param>
        /// <param name="wParam"></param>
        /// <param name="lParam"></param>
        private void waveOutProc(IntPtr hWaveOut, Win32.WOM_Messages msg, IntPtr dwInstance, Win32.WAVEHDR *pWaveHeader, IntPtr lParam)
        {
            try
            {
                switch (msg)
                {
                //Open
                case Win32.WOM_Messages.OPEN:
                    break;

                //Done
                case Win32.WOM_Messages.DONE:
                    //Vermerken das Daten ankommen
                    IsStarted = true;
                    AutoResetEventDataPlayed.Set();
                    break;

                //Close
                case Win32.WOM_Messages.CLOSE:
                    IsStarted       = false;
                    IsWaveOutOpened = false;
                    IsPaused        = false;
                    IsClosed        = true;
                    AutoResetEventDataPlayed.Set();
                    this.hWaveOut = IntPtr.Zero;
                    break;
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(String.Format("Player.cs | waveOutProc() | {0}", ex.Message));
                AutoResetEventDataPlayed.Set();
            }
        }
示例#2
0
        /// <summary>
        /// waveOutProc
        /// </summary>
        /// <param name="hWaveOut"></param>
        /// <param name="msg"></param>
        /// <param name="dwInstance"></param>
        /// <param name="wParam"></param>
        /// <param name="lParam"></param>
        private void waveOutProc(IntPtr hWaveOut, Win32.WOM_Messages msg, IntPtr dwInstance, Win32.WAVEHDR *pWaveHeader, IntPtr lParam)
        {
            switch (msg)
            {
            case Win32.WOM_Messages.OPEN:
                break;

            case Win32.WOM_Messages.DONE:
                break;

            case Win32.WOM_Messages.CLOSE:
                this.hWaveOut = IntPtr.Zero;
                break;
            }
        }
示例#3
0
        /// <summary>
        ///     waveOutProc
        /// </summary>
        /// <param name="hWaveOut"></param>
        /// <param name="msg"></param>
        /// <param name="dwInstance"></param>
        /// <param name="wParam"></param>
        /// <param name="lParam"></param>
        private void waveOutProc(IntPtr hWaveOut, Win32.WOM_Messages msg, IntPtr dwInstance,
                                 ref Win32.WAVEHDR waveHeader, IntPtr lParam)
        {
            try
            {
                switch (msg)
                {
                //Open
                case Win32.WOM_Messages.OPEN:
                    break;

                //Done
                case Win32.WOM_Messages.DONE:

                    //Vermerken das Daten ankommen
                    IsStarted = true;
                    //Speicher freigeben
                    var hBuffer = GCWaveOutHandleBuffers[(int)waveHeader.dwUser];
                    if (hBuffer.IsAllocated)
                    {
                        //Wenn wirklich belegt
                        if ((waveHeader.dwFlags & Win32.WaveHdrFlags.WHDR_DONE) > 0 &&
                            ((waveHeader.dwFlags & Win32.WaveHdrFlags.WHDR_PREPARED) > 0))
                        {
                            hBuffer.Free();
                        }
                    }
                    AutoResetEventDataPlayed.Set();
                    break;

                //Close
                case Win32.WOM_Messages.CLOSE:
                    IsStarted       = false;
                    IsWaveOutOpened = false;
                    IsPaused        = false;
                    IsClosed        = true;
                    AutoResetEventDataPlayed.Set();
                    FreeWaveOutHeaders();
                    this.hWaveOut = IntPtr.Zero;
                    break;
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(String.Format("Player.cs | waveOutProc() | {0}", ex.Message));
                AutoResetEventDataPlayed.Set();
            }
        }
示例#4
0
        /// <summary>
        /// waveOutProc
        /// </summary>
        /// <param name="hWaveOut"></param>
        /// <param name="msg"></param>
        /// <param name="dwInstance"></param>
        /// <param name="wParam"></param>
        /// <param name="lParam"></param>
        private void waveOutProc(IntPtr hWaveOut, Win32.WOM_Messages msg, IntPtr dwInstance, Win32.WAVEHDR *pWaveHeader, IntPtr lParam)
        {
            switch (msg)
            {
            //Open
            case Win32.WOM_Messages.OPEN:
                break;

            //Close
            case Win32.WOM_Messages.CLOSE:
                IsWaveOutOpened = false;
                AutoResetEventDataRecorded.Set();
                this.hWaveOut = IntPtr.Zero;
                break;
            }
        }