void StartEncoding() { _startTime = DateTime.Now; _bytesSent = 0; _segmentFrames = 960; var channels = 1; _encoder = Codec.OpusEncoder.Create(48000, channels, Codec.Opus.Application.Voip); _encoder.Bitrate = 8192; _decoder = Codec.OpusDecoder.Create(48000, channels); _bytesPerSegment = _encoder.FrameByteCount(_segmentFrames); _waveIn = new WaveIn(WaveCallbackInfo.FunctionCallback()); _waveIn.BufferMilliseconds = 50; _waveIn.DeviceNumber = comboBox1.SelectedIndex; _waveIn.DataAvailable += _waveIn_DataAvailable; _waveIn.WaveFormat = new WaveFormat(48000, 16, channels); _playBuffer = new BufferedWaveProvider(new WaveFormat(48000, 16, channels)); _waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()); _waveOut.DeviceNumber = comboBox2.SelectedIndex; _waveOut.Init(_playBuffer); _waveOut.Play(); _waveIn.StartRecording(); if (_timer == null) { _timer = new Timer(); _timer.Interval = 1000; _timer.Tick += _timer_Tick; } _timer.Start(); }
void StartEncoding() { _startTime = DateTime.Now; _bytesSent = 0; _segmentFrames = 960; _encoder = OpusEncoder.Create(48000, 1, FragLabs.Audio.Codecs.Opus.Application.Voip); _encoder.Bitrate = 8192; _decoder = OpusDecoder.Create(48000, 1); _bytesPerSegment = _encoder.FrameByteCount(_segmentFrames); _waveIn = new WaveIn(WaveCallbackInfo.FunctionCallback()); _waveIn.BufferMilliseconds = 50; _waveIn.DeviceNumber = comboBox1.SelectedIndex; _waveIn.DataAvailable += _waveIn_DataAvailable; _waveIn.WaveFormat = new WaveFormat(48000, 16, 1); _playBuffer = new BufferedWaveProvider(new WaveFormat(48000, 16, 1)); _waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()); _waveOut.DeviceNumber = comboBox2.SelectedIndex; _waveOut.Init(_playBuffer); _waveOut.Play(); _waveIn.StartRecording(); if (_timer == null) { _timer = new Timer(); _timer.Interval = 1000; _timer.Tick += _timer_Tick; } _timer.Start(); }
void StopEncoding() { _timer.Stop(); _waveIn.StopRecording(); _waveIn.Dispose(); _waveIn = null; _waveOut.Stop(); _waveOut.Dispose(); _waveOut = null; _playBuffer = null; _encoder.Dispose(); _encoder = null; _decoder.Dispose(); _decoder = null; }
private void CreateDecoder() { _Decoder = OpusDecoder.Create(outputSampleRate, channels); }
public void Dispose() { var e = Encoder; var d = _Decoder; _Encoder = null; _Decoder = null; if (e != null) e.Dispose(); if (d != null) d.Dispose(); }
public OpusDecoder(int SampleRate, int Channels) { decoder = FragLabs.Audio.Codecs.OpusDecoder.Create(SampleRate, Channels); }
void StopEncoding() { _timer.Stop(); _waveIn.StopRecording(); _waveIn.Dispose(); _waveIn = null; _waveOut.Stop(); _waveOut.Dispose(); _waveOut = null; _playBuffer = null; _encoder.Dispose(); _encoder = null; _decoder.Dispose(); _decoder = null; }
public byte[] Decode(byte[] data, int length) { if (this.decoder == null) { lock (this.codecLock) { if (this.decoder == null) { this.decoder = OpusDecoder.Create (this.settings.SampleRate, this.settings.Channels); } } } int decodedLength; byte[] decoded = this.decoder.Decode (data, length, out decodedLength); if (decoded.Length != decodedLength) { byte[] final = new byte[decodedLength]; Buffer.BlockCopy (decoded, 0, final, 0, decodedLength); decoded = final; } return decoded; }