Ejemplo n.º 1
0
        public bool SendVideoFrame(int friendNumber, ToxAvVideoFrame frame, out ToxAvErrorSendFrame error)
        {
            ThrowIfDisposed();

            error = ToxAvErrorSendFrame.Ok;
            return(ToxAvFunctions.VideoSendFrame(_toxAv, ToxTools.Map(friendNumber), (ushort)frame.Width, (ushort)frame.Height, frame.Y, frame.U, frame.V, ref error));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Joins an audio groupchat.
        /// </summary>
        /// <param name="friendNumber"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public int JoinAvGroupchat(uint friendNumber, byte[] data)
        {
            ThrowIfDisposed();

            if (data == null)
            {
                throw new ArgumentNullException("data");
            }

            ToxAvDelegates.GroupAudioReceiveDelegate callback = (IntPtr tox, uint groupNumber, uint peerNumber, IntPtr frame, uint sampleCount, byte channels, uint sampleRate, IntPtr userData) =>
            {
                if (OnReceivedGroupAudio != null)
                {
                    short[] samples = new short[sampleCount * channels];
                    Marshal.Copy(frame, samples, 0, samples.Length);

                    OnReceivedGroupAudio(this, new ToxAvEventArgs.GroupAudioDataEventArgs(groupNumber, peerNumber, samples, channels, sampleRate));
                }
            };

            int result = ToxAvFunctions.JoinAvGroupchat(toxHandle, friendNumber, data, (ushort)data.Length, callback, IntPtr.Zero);

            if (result != -1)
            {
                groupAudioHandlers.Add(callback);
            }

            return(result);
        }
Ejemplo n.º 3
0
        public bool SendAudioFrame(int friendNumber, ToxAvAudioFrame frame, out ToxAvErrorSendFrame error)
        {
            ThrowIfDisposed();

            error = ToxAvErrorSendFrame.Ok;
            return(ToxAvFunctions.AudioSendFrame(_toxAv, ToxTools.Map(friendNumber), frame.Data, (uint)(frame.Data.Length / frame.Channels), (byte)frame.Channels, (uint)frame.SamplingRate, ref error));
        }
Ejemplo n.º 4
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));
        }
Ejemplo n.º 5
0
        public bool SetVideoBitrate(int friendNumber, int bitrate, out ToxAvErrorSetBitrate error)
        {
            ThrowIfDisposed();

            error = ToxAvErrorSetBitrate.Ok;
            return(ToxAvFunctions.BitrateSet(_toxAv, ToxTools.Map(friendNumber), -1, bitrate, ref error));
        }
Ejemplo n.º 6
0
        public bool Answer(uint friendNumber, uint audioBitrate, uint videoBitrate, out ToxAvErrorAnswer error)
        {
            ThrowIfDisposed();

            error = ToxAvErrorAnswer.Ok;
            return(ToxAvFunctions.Answer(AvHandle, friendNumber, audioBitrate, videoBitrate, ref error));
        }
Ejemplo n.º 7
0
        public bool Answer(int friendNumber, int audioBitrate, int videoBitrate, out ToxAvErrorAnswer error)
        {
            ThrowIfDisposed();

            error = ToxAvErrorAnswer.Ok;
            return(ToxAvFunctions.Answer(_toxAv, ToxTools.Map(friendNumber), (uint)audioBitrate, (uint)videoBitrate, ref error));
        }
Ejemplo n.º 8
0
        public bool SendControl(uint friendNumber, ToxAvCallControl control, out ToxAvErrorCallControl error)
        {
            ThrowIfDisposed();

            error = ToxAvErrorCallControl.Ok;
            return(ToxAvFunctions.CallControl(AvHandle, friendNumber, control, ref error));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Joins an audio groupchat.
        /// </summary>
        /// <param name="friendNumber"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public int JoinAvGroupchat(int friendNumber, byte[] data)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            ToxAvDelegates.GroupAudioReceiveCallback callback = (IntPtr tox, int groupNumber, int peerNumber, IntPtr frame, uint sampleCount, byte channels, uint sampleRate, IntPtr userData) =>
            {
                if (OnReceivedGroupAudio != null)
                {
                    short[] samples = new short[sampleCount * channels];
                    Marshal.Copy(frame, samples, 0, samples.Length);

                    OnReceivedGroupAudio(this, new ToxAvEventArgs.GroupAudioDataEventArgs(groupNumber, peerNumber, samples, (int)channels, (int)sampleRate));
                }
            };

            int result = ToxAvFunctions.JoinAvGroupchat(_tox, friendNumber, data, (ushort)data.Length, callback, IntPtr.Zero);

            if (result != -1)
            {
                _groupAudioHandlers.Add(callback);
            }

            return(result);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Retrieves the tox instance that this toxav instance belongs to.
        /// </summary>
        /// <returns></returns>
        public IntPtr GetTox()
        {
            if (disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.GetTox(toxav));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Sends an audio frame to a group.
        /// </summary>
        /// <param name="groupNumber"></param>
        /// <param name="pcm"></param>
        /// <param name="perframe"></param>
        /// <param name="channels"></param>
        /// <param name="sampleRate"></param>
        /// <returns></returns>
        public bool GroupSendAudio(int groupNumber, short[] pcm, int perframe, int channels, int sampleRate)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.GroupSendAudio(_tox, groupNumber, pcm, (uint)perframe, (byte)channels, (uint)sampleRate) == 0);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Changes the type of an in-progress call
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="settings"></param>
        /// <returns></returns>
        public ToxAvError ChangeSettings(int callIndex, ToxAvCodecSettings settings)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.ChangeSettings(_toxAv, callIndex, ref settings));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Retrieves the state of a call.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <returns></returns>
        public ToxAvCallState GetCallState(int callIndex)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.GetCallState(_toxAv, callIndex));
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Hangs up an in-progress call.
        /// </summary>
        /// <param name="call_index"></param>
        /// <returns></returns>
        public ToxAvError Hangup(int call_index)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.Hangup(toxav, call_index));
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Detects whether some activity is present in the call.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="pcm"></param>
        /// <param name="frameSize"></param>
        /// <param name="refEnergy"></param>
        /// <returns></returns>
        public int HasActivity(int callIndex, short[] pcm, ushort frameSize, float refEnergy)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.HasActivity(_toxAv, callIndex, pcm, frameSize, refEnergy));
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Kills the transmission of a call. Should be called at the end of the transmission.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <returns></returns>
        public ToxAvError KillTransmission(int callIndex)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.KillTransmission(_toxAv, callIndex));
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Get the friend_number of peer participating in conversation
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="peer"></param>
        /// <returns></returns>
        public int GetPeerID(int callIndex, int peer)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.GetPeerID(_toxAv, callIndex, peer));
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Prepares transmission. Must be called before any transmission occurs.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="supportVideo"></param>
        /// <returns></returns>
        public ToxAvError PrepareTransmission(int callIndex, bool supportVideo)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.PrepareTransmission(_toxAv, callIndex, supportVideo ? 1 : 0));
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Stops a call and terminates the transmission without notifying the remote peer.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <returns></returns>
        public ToxAvError StopCall(int callIndex)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.StopCall(_toxAv, callIndex));
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Rejects an incoming call.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="reason"></param>
        /// <returns></returns>
        public ToxAvError Reject(int callIndex, string reason)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.Reject(_toxAv, callIndex, reason));
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Cancels a call.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="friendNumber"></param>
        /// <param name="reason"></param>
        /// <returns></returns>
        public ToxAvError Cancel(int callIndex, int friendNumber, string reason)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.Cancel(_toxAv, callIndex, friendNumber, reason));
        }
Ejemplo n.º 22
0
        /// <summary>
        /// Sets VAD activity treshold for calculating VAD. 40 is some middle value for treshold.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="treshold"></param>
        /// <returns></returns>
        public ToxAvError SetVadTreshold(int callIndex, uint treshold)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return((ToxAvError)ToxAvFunctions.SetVadTreshold(_toxAv, callIndex, treshold));
        }
Ejemplo n.º 23
0
        /// <summary>
        /// Sends an encoded audio frame.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="frame"></param>
        /// <param name="frameSize"></param>
        /// <returns></returns>
        public ToxAvError SendAudio(int callIndex, byte[] frame, int frameSize)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.SendAudio(_toxAv, callIndex, frame, (uint)frameSize));
        }
Ejemplo n.º 24
0
        /// <summary>
        /// Encodes an audio frame.
        /// </summary>
        /// <param name="call_index"></param>
        /// <param name="dest"></param>
        /// <param name="dest_max"></param>
        /// <param name="frame"></param>
        /// <returns></returns>
        public int PrepareAudioFrame(int call_index, byte[] dest, int dest_max, ushort[] frame)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.PrepareAudioFrame(toxav, call_index, dest, dest_max, frame, frame.Length));
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Checks whether a certain capability is supported.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="capability"></param>
        /// <returns></returns>
        public bool CapabilitySupported(int callIndex, ToxAvCapabilities capability)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.CapabilitySupported(_toxAv, callIndex, capability) == 1);
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Prepares transmission. Must be called before any transmission occurs.
        /// </summary>
        /// <param name="call_index"></param>
        /// <param name="support_video"></param>
        /// <param name="jbuf_size"></param>
        /// <param name="VAD_treshold"></param>
        /// <returns></returns>
        public ToxAvError PrepareTransmission(int call_index, int jbuf_size, int VAD_treshold, bool support_video)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.PrepareTransmission(toxav, call_index, (uint)jbuf_size, (uint)VAD_treshold, support_video ? 1 : 0));
        }
Ejemplo n.º 27
0
        /// <summary>
        /// Encodes an audio frame.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="dest"></param>
        /// <param name="destMax"></param>
        /// <param name="frames"></param>
        /// <param name="perframe"></param>
        /// <returns></returns>
        public int PrepareAudioFrame(int callIndex, byte[] dest, int destMax, short[] frames, int perframe) //TODO: use 'out' keyword to get the encoded frame
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.PrepareAudioFrame(_toxAv, callIndex, dest, destMax, frames, perframe));
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Answers a call.
        /// </summary>
        /// <param name="call_index"></param>
        /// <param name="settings"></param>
        /// <returns></returns>
        public ToxAvError Answer(int call_index, ToxAvCodecSettings settings)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            return(ToxAvFunctions.Answer(toxav, call_index, ref settings));
        }
Ejemplo n.º 29
0
        /// <summary>
        /// Creates a new call.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="friendNumber"></param>
        /// <param name="settings"></param>
        /// <param name="ringingSeconds"></param>
        /// <returns></returns>
        public ToxAvError Call(int friendNumber, ToxAvCodecSettings settings, int ringingSeconds, out int callIndex)
        {
            ThrowIfDisposed();

            int        index  = new int();
            ToxAvError result = ToxAvFunctions.Call(_toxAv, ref index, friendNumber, ref settings, ringingSeconds);

            callIndex = index;
            return(result);
        }
Ejemplo n.º 30
0
        /// <summary>
        /// Retrieves a peer's codec settings.
        /// </summary>
        /// <param name="callIndex"></param>
        /// <param name="peer"></param>
        /// <returns></returns>
        public ToxAvCodecSettings GetPeerCodecSettings(int callIndex, int peer)
        {
            ThrowIfDisposed();

            ToxAvCodecSettings settings = new ToxAvCodecSettings();

            ToxAvFunctions.GetPeerCodecSettings(_toxAv, callIndex, peer, ref settings);

            return(settings);
        }