private void DisconnectFromCall() { _videoSender.Detach(); _audioSender.Detach(); if (_videoSender == null || _audioSender == null) { return; } _connector.Disconnect(_cameraVideo, _videoSender); _connector.Disconnect(_cameraAudio, _audioSender); }
private void _call_CallStateChanged(object sender, CallStateChangedArgs e) { var handler = CallStateChanged; if (handler != null) { handler(sender, e); } if (e.State.IsCallEnded()) { if (Call != null) { Call.CallStateChanged -= _call_CallStateChanged; _videoSender.Detach(); _audioSender.Detach(); _connector.Dispose(); Call = null; } } }
/// <summary> /// Detaches the media handlers from the phone call. /// </summary> public void DetachVideo() { _phoneCallVideoReceiver.Detach(); _phoneCallVideoSender.Detach(); }
private void Call_CallStateChanged(object sender, CallStateChangedArgs e) { IPhoneCall grCall = sender as IPhoneCall; _grCall = grCall; MyCallState tmp = MyCallState.DoNotthing; if (e.State == CallState.Answered) { StartDevices(); mediaReceiver.AttachToCall(call); mediaSender.AttachToCall(call); videoReceiver.AttachToCall(call); videoSender.AttachToCall(call); tmp = MyCallState.Answered; } if (e.State == CallState.InCall) { StartDevices(); tmp = MyCallState.InCall; CallDuration(); } if (e.State.IsCallEnded() == true) { StopDevices(); mediaReceiver.Detach(); mediaSender.Detach(); videoSender.Detach(); videoReceiver.Detach(); WireDownCallEvents(); call = null; tmp = MyCallState.CallEnd; Instance.IsLocalCameraUsed = false; timer.Stop(); } if (e.State == CallState.LocalHeld) { StopDevices(); } if (e.State == CallState.Busy) { StopDevices(); tmp = MyCallState.Busy; } if (e.State == CallState.Cancelled) { StopDevices(); tmp = MyCallState.Canceled; } if (e.State == CallState.Completed) { tmp = MyCallState.CallEnd; } if (CallStateChange != null) { CallStateChange.Invoke(tmp); } }