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)); }
/// <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); }
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)); }
public bool SendControl(int friendNumber, ToxAvCallControl control, out ToxAvErrorCallControl error) { ThrowIfDisposed(); error = ToxAvErrorCallControl.Ok; return(ToxAvFunctions.CallControl(_toxAv, ToxTools.Map(friendNumber), control, ref error)); }
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)); }
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)); }
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)); }
public bool SendControl(uint friendNumber, ToxAvCallControl control, out ToxAvErrorCallControl error) { ThrowIfDisposed(); error = ToxAvErrorCallControl.Ok; return(ToxAvFunctions.CallControl(AvHandle, friendNumber, control, ref error)); }
/// <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); }
/// <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)); }
/// <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); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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); }