Exemple #1
0
 private void DoListen(object obj)
 {
     waveOut.Play();
     listener =
         new DuplexChannelFactory <ISpeexStreamer>(new InstanceContext(this), "NetTcpBinding_ISpeexStreamer",
                                                   new EndpointAddress(ListenAddress)).CreateChannel();
     listener.Subscribe();
     IsPlaying = true;
     RaiseCommands();
 }
Exemple #2
0
        public MainViewModel()
        {
            listenAddress = "net.tcp://localhost:8001/SpeexStreamer";

            encoder = new SpeexEncoder(BandMode.Narrow);
            //encoder.VBR = true;
            //encoder.DTX = true;
            //todo: preProcessor = new NativePreprocessor(encoder.FrameSize, 16000);// { AGC = true, AGCIncrement = 1, MaxAGCGain = 10, Denoise = true, VAD = true };

            //encoder = new NativeEncoder((EncodingMode) 1);
            //encoder.VBR = false;
            //encoder.DTX = false;

            waveFormat = new WaveFormat(encoder.FrameSize * 50, 16, 1);
            waveIn     = new WaveIn {
                WaveFormat = waveFormat, BufferMillisconds = 40, NumberOfBuffers = 2
            };
            //waveIn = new WasapiCapture();

            waveIn.DataAvailable    += waveIn_DataAvailable;
            waveIn.RecordingStopped += waveIn_RecordingStopped;

            sender = new DuplexChannelFactory <ISpeexStreamer>(this, "NetTcpBinding_ISpeexStreamer").CreateChannel();

            waveProvider = new JitterBufferWaveProvider();
            waveProvider.VolumeUpdated += HandleVolumeUpdated;

            //waveOut = new DirectSoundOut(40);
            //waveOut = new WaveOut();
            waveOut = new WasapiOut(AudioClientShareMode.Shared, 20);

            waveOut.Init(waveProvider);
            waveOut.PlaybackStopped += waveOut_PlaybackStopped;
            waveOut.Volume           = 1.0f;

            StartCommand  = new DelegateCommand <object>(DoStartRecording, obj => !IsRecording);
            ListenCommand = new DelegateCommand <object>(DoListen, obj => !IsPlaying);
        }