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; }
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); }