public OutGoingCallEngine(string dialedNumber, ISoftPhone softPhone, IPhoneLine phoneLine)
        {
            _connector = new MediaConnector();
            _videoSender = new PhoneCallVideoSender();
            _audioSender = new PhoneCallAudioSender();

            var dial = new DialParameters(dialedNumber) { CallType = CallType.AudioVideo };
            Call = softPhone.CreateCallObject(phoneLine, dial);
            Call.CallStateChanged += _call_CallStateChanged;        

            _videoSender.AttachToCall(Call);
            _audioSender.AttachToCall(Call);
        }
        public OutGoingCallEngine(string dialedNumber, ISoftPhone softPhone, IPhoneLine phoneLine)
        {
            _connector   = new MediaConnector();
            _videoSender = new PhoneCallVideoSender();
            _audioSender = new PhoneCallAudioSender();

            var dial = new DialParameters(dialedNumber)
            {
                CallType = CallType.AudioVideo
            };

            Call = softPhone.CreateCallObject(phoneLine, dial);
            Call.CallStateChanged += _call_CallStateChanged;

            _videoSender.AttachToCall(Call);
            _audioSender.AttachToCall(Call);
        }
예제 #3
0
        private void ConnectToCall(ICall call)
        {
            if (call == null)
            {
                return;
            }

            _videoSender.AttachToCall(call);
            _audioSender.AttachToCall(call);

            if (_videoSender == null || _audioSender == null)
            {
                return;
            }

            _connector.Connect(_cameraVideo, _videoSender);
            _connector.Connect(_cameraAudio, _audioSender);
        }
 /// <summary>
 /// Attaches the media handlers to the given phone call.
 /// </summary>
 public void AttachVideo(IPhoneCall call)
 {
     _phoneCallVideoReceiver.AttachToCall(call);
     _phoneCallVideoSender.AttachToCall(call);
 }
        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);
            }
        }
 public void AttachSendCall()
 {
     videoSender.AttachToCall(call);
     audioReceiver.AttachToCall(call);
 }