Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
 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;
 }
Beispiel #4
0
 private void CreateDecoder()
 {
     _Decoder = OpusDecoder.Create(outputSampleRate, channels);
 }
Beispiel #5
0
        public void Dispose()
        {
            var e = Encoder;
            var d = _Decoder;

            _Encoder = null;
            _Decoder = null;

            if (e != null)
                e.Dispose();
            if (d != null)
                d.Dispose();
        }
Beispiel #6
0
 public OpusDecoder(int SampleRate, int Channels)
 {
     decoder = FragLabs.Audio.Codecs.OpusDecoder.Create(SampleRate, Channels);
 }
Beispiel #7
0
 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;
 }
Beispiel #8
0
        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;
        }