Пример #1
0
        public void Dispose()
        {
            try
            {
                WinMM.ErrorCheck(WinMM.waveInReset(WaveHandle));

                // free buffers
                foreach (RecordBuffer buffer in Buffers)
                {
                    buffer.Dispose();
                }
                Buffers = null;

                // free speex
                Speex.speex_bits_destroy(ref EncodeBits);
                Speex.speex_encoder_destroy(SpeexEncoder);
                Speex.speex_preprocess_state_destroy(PreProcessor);
                //Speex.speex_echo_state_destroy(EchoState);

                WinMM.ErrorCheck(WinMM.waveInClose(WaveHandle));
            }
            catch (Exception ex)
            {
                Voices.Core.Network.UpdateLog("Voice", "Error Disposing: " + ex.Message);
            }

            Voices.Recorder = null;
        }
Пример #2
0
        public void Dispose()
        {
            try
            {
                WinMM.ErrorCheck(WinMM.waveOutReset(WaveHandle));

                // free buffers
                foreach (PlayBuffer buffer in Buffers)
                {
                    buffer.Dispose();
                }
                Buffers = null;

                // free speex
                Speex.speex_bits_destroy(ref DecodeBits);
                Speex.speex_decoder_destroy(SpeexDecoder);

                WinMM.ErrorCheck(WinMM.waveOutClose(WaveHandle));
            }
            catch (Exception ex)
            {
                Voices.Core.Network.UpdateLog("Voice", "Error Disposing Player: " + ex.Message);
            }

            // remove wave out stream from user structure
            foreach (ulong routing in User.Streams.Keys)
            {
                if (User.Streams[routing] == this)
                {
                    User.Streams.Remove(routing);
                    break;
                }
            }

            Voices.Players.SafeRemove(this);
        }