public void togglePlayingTCP() { if (sdsock != null) { sdsock.Dispose(); sdsock = null; if (concentusOpusDecoder != null) { concentusOpusDecoder.ResetState(); concentusOpusDecoder = null; } m_Player.Close(); } else { sdsock = new SoundDataSocket(NetworkTypes.Client); sdsock.ConnectedCallback += Socket_ConnectedCallback; sdsock.DisconnectedCallback += Socket_DisconnectedCallback; sdsock.ConnectionFailedCallback += Socket_ConnectionFailedCallback; sdsock.DataRecievedCallback += Socket_DataRecievedCallback; sdsock.StartDataRecievedCallback += Socket_StartDataRecievedCallback; sdsock.EndDataRecievedCallback += Socket_EndDataRecievedCallback; sdsock.Connect(System.Net.IPAddress.Parse(GlobalConfiguration.ServerAddress), config.SoundServerPort); } }
// this call block until recieved client connection request public AudioOutputWriter(MMDevice device, GlobalConfiguration config) { if (device == null) { throw new ArgumentNullException(nameof(device)); } this.config = config; m_JitterBufferCount = this.config.JitterBuffer; m_Milliseconds = this.config.JitterBufferTimerPeriodMsec; m_device = device; this._WaveIn = new WasapiLoopbackCapture(m_device); this._WaveIn.DataAvailable += this.WaveInOnDataAvailable; this._WaveIn.RecordingStopped += this.WaveInOnRecordingStopped; WaveFormat wfmt = this._WaveIn.WaveFormat; sdsock = new SoundDataSocket(NetworkTypes.Server); //dispatcher = Dispatcher.CurrentDispatcher; sdsock.ConnectedCallback += Socket_ConnectedCallback; sdsock.DisconnectedCallback += Socket_DisconnectedCallback; sdsock.ConnectionFailedCallback += Socket_ConnectionFailedCallback; sdsock.DataRecievedCallback += Socket_DataRecievedCallback; sdsock.StartDataRecievedCallback += Socket_StartDataRecievedCallback; sdsock.EndDataRecievedCallback += Socket_EndDataRecievedCallback; //sdsock.Listen(IPAddress.Parse(GlobalConfiguration.ServerAddress), this.config.SoundServerPort); sdsock.Listen(IPAddress.Any, this.config.SoundServerPort); Start(); // start capture and send stream }
private void Socket_DisconnectedCallback() { Device.BeginInvokeOnMainThread(() => { sdsock.Dispose(); sdsock = null; }); }
private void Socket_ConnectionFailedCallback(string error) { Device.BeginInvokeOnMainThread(() => { sdsock.Dispose(); sdsock = null; }); }