Beispiel #1
0
 public bool SendControl(int friendNumber, ToxAvCallControl control)
 {
     ToxAvErrorCallControl error;
     var retVal = _toxAv.SendControl(friendNumber, control, out error);
     ToxErrorViewModel.Instance.RelayError(error);
     return retVal;
 }
Beispiel #2
0
        public bool SendControl(uint friendNumber, ToxAvCallControl control, out ToxAvErrorCallControl error)
        {
            ThrowIfDisposed();

            error = ToxAvErrorCallControl.Ok;
            return(ToxAvFunctions.CallControl(AvHandle, friendNumber, control, ref error));
        }
Beispiel #3
0
        public bool SendControl(int friendNumber, ToxAvCallControl control, out ToxAvErrorCallControl error)
        {
            ThrowIfDisposed();

            error = ToxAvErrorCallControl.Ok;
            return(ToxAvFunctions.CallControl(_toxAv, ToxTools.Map(friendNumber), control, ref error));
        }
Beispiel #4
0
        public bool SendControl(int friendNumber, ToxAvCallControl control)
        {
            if (friendNumber == _friendInCall && control == ToxAvCallControl.Cancel)
                _friendInCall = -1;

            ToxAvErrorCallControl error;
            var retVal = _toxAv.SendControl(friendNumber, control, out error);
            ToxErrorViewModel.Instance.RelayError(error);
            return retVal;
        }
Beispiel #5
0
        public bool SendControl(int friendNumber, ToxAvCallControl control)
        {
            if (friendNumber == _friendInCall && control == ToxAvCallControl.Cancel)
            {
                _friendInCall = -1;
            }

            ToxAvErrorCallControl error;
            var retVal = _toxAv.SendControl(friendNumber, control, out error);

            ToxErrorViewModel.Instance.RelayError(error);
            return(retVal);
        }
Beispiel #6
0
        public bool EnableFriendVideo(bool enableFriendVideo)
        {
            if (this.callInfo != null)
            {
                ToxAvCallControl      videoControl = enableFriendVideo ? ToxAvCallControl.ShowVideo : ToxAvCallControl.HideVideo;
                ToxAvErrorCallControl videoError   = ToxAvErrorCallControl.Ok;
                if (!this.toxAv.SendControl(this.callInfo.FriendNumber, videoControl, out videoError))
                {
                    Logger.Log(LogLevel.Error, "Could not change video receiving: " + videoError);
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #7
0
        public bool EnablePlayback(bool enablePlayback)
        {
            if (this.callInfo != null)
            {
                if (!enablePlayback)
                {
                    this.callInfo.EnablePlayback(false);
                }

                ToxAvCallControl      audioControl = enablePlayback ? ToxAvCallControl.UnmuteAudio : ToxAvCallControl.MuteAudio;
                ToxAvErrorCallControl audioError   = ToxAvErrorCallControl.Ok;
                if (!this.toxAv.SendControl(this.callInfo.FriendNumber, audioControl, out audioError))
                {
                    Logger.Log(LogLevel.Error, "Could not change audio receiving: " + audioError);
                }

                ToxAvFriendCallState friendCallState = this.callInfo.FriendCallState;
                if (enablePlayback)
                {
                    friendCallState |= ToxAvFriendCallState.SendingAudio;
                }
                else
                {
                    friendCallState &= ~ToxAvFriendCallState.SendingAudio;
                }
                this.callInfo.FriendCallState = friendCallState;

                if (enablePlayback)
                {
                    this.callInfo.EnablePlayback(true);
                }

                return(true);
            }
            else
            {
                return(this.RestartPlaybackMonitor(enablePlayback));
            }
        }
Beispiel #8
0
        public bool SendControl(int friendNumber, ToxAvCallControl control)
        {
            var error = ToxAvErrorCallControl.Ok;

            return(SendControl(friendNumber, control, out error));
        }
 internal static extern bool CallControl(ToxAvHandle toxAv, uint friendNumber, ToxAvCallControl control, ref ToxAvErrorCallControl error);
Beispiel #10
0
 public static extern Boolean CallControl(ToxAvHandle toxAv, UInt32 friendNumber, ToxAvCallControl control, ref ToxAvErrorCallControl error);
Beispiel #11
0
        public bool Answer(int friendNumber, bool enableRecording, bool enablePlayback, bool enableLocalVideo, bool enableFriendVideo)
        {
            // stop ringing
            this.StopRingingSound();

            if (this.callInfo != null)
            {
                Logger.Log(LogLevel.Warning, "Tried to answer a call but there is already one in progress");
                return(false);
            }

            ToxAvErrorAnswer error = ToxAvErrorAnswer.Ok;

            if (!this.toxAv.Answer(friendNumber, DefaultAudioBitrate, DefaultVideoBitrate, out error))
            {
                Logger.Log(LogLevel.Error, "Could not answer call for friend: " + error);
                return(false);
            }

            ToxAvCallControl      audioControl = enablePlayback ? ToxAvCallControl.UnmuteAudio : ToxAvCallControl.MuteAudio;
            ToxAvErrorCallControl audioError   = ToxAvErrorCallControl.Ok;

            if (!this.toxAv.SendControl(friendNumber, audioControl, out audioError))
            {
                Logger.Log(LogLevel.Error, "Could not change audio receiving: " + audioError);
            }

            ToxAvCallControl      videoControl = enableFriendVideo ? ToxAvCallControl.ShowVideo : ToxAvCallControl.HideVideo;
            ToxAvErrorCallControl videoError   = ToxAvErrorCallControl.Ok;

            if (!this.toxAv.SendControl(friendNumber, videoControl, out videoError))
            {
                Logger.Log(LogLevel.Error, "Could not change video receiving: " + videoError);
            }

            // disable local audio/video monitors
            this.RestartRecordingMonitor(false);
            this.RestartPlaybackMonitor(false);
            this.RestartVideoMonitor(false);

            ToxAvFriendCallState friendCallState = ToxAvFriendCallState.Paused;

            if (enableRecording)
            {
                friendCallState |= ToxAvFriendCallState.ReceivingAudio;
            }
            if (enablePlayback)
            {
                friendCallState |= ToxAvFriendCallState.SendingAudio;
            }
            if (enableLocalVideo)
            {
                friendCallState |= ToxAvFriendCallState.ReceivingVideo;
            }
            if (enableFriendVideo)
            {
                friendCallState |= ToxAvFriendCallState.SendingVideo;
            }

            this.callInfo = new CallInfo(friendNumber, enableRecording, enablePlayback, enableLocalVideo, enableFriendVideo);
            this.callInfo.FriendCallState = friendCallState;
            this.callInfo.RecordingDevice.OnMicVolumeChanged += this.OnAudioDeviceMicVolumeChanged;
            this.callInfo.RecordingDevice.OnMicDataAvailable += this.OnAudioDeviceMicDataAvailable;
            this.callInfo.VideoDevice.OnFrameAvailable       += this.OnVideoDeviceFrameAvailable;

            var  audioBitrateError = ToxAvErrorSetBitrate.Ok;
            bool audioBitrateSet   = this.toxAv.SetAudioBitrate(friendNumber, DefaultAudioBitrate, out audioBitrateError);

            if (!audioBitrateSet)
            {
                Logger.Log(LogLevel.Error, string.Format("Could not set audio bitrate to {0}, error: {1}", DefaultAudioBitrate, audioBitrateError));
            }

            var  videoBitrateError = ToxAvErrorSetBitrate.Ok;
            bool videoBitrateSet   = this.toxAv.SetVideoBitrate(friendNumber, DefaultVideoBitrate, out videoBitrateError);

            if (!videoBitrateSet)
            {
                Logger.Log(LogLevel.Error, string.Format("Could not set video bitrate to {0}, error: {1}", DefaultVideoBitrate, videoBitrateError));
            }

            if (audioBitrateSet)
            {
                this.callInfo.AudioBitrate = DefaultAudioBitrate;
            }

            if (videoBitrateSet)
            {
                this.callInfo.VideoBitrate = DefaultVideoBitrate;
            }

            if (enableRecording)
            {
                this.callInfo.RecordingDevice.StartRecording();
            }
            if (enableLocalVideo)
            {
                this.callInfo.VideoDevice.StartRecording();
            }

            return(true);
        }