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 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 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)); }
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 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)); }
/// <summary> /// Generates a dns3 string used to query the dns server. /// </summary> /// <param name="name">Name of the registered user.</param> /// <param name="requestId">The request id, to be used when calling DecryptDns3TXT.</param> /// <returns></returns> public string GenerateDns3String(string name, out int requestId) { ThrowIfDisposed(); byte[] bytes = Encoding.UTF8.GetBytes(name); byte[] result = new byte[1024]; uint id = new uint(); int length = ToxDnsFunctions.GenerateDns3String(_toxDns3, result, (ushort)result.Length, ref id, bytes, (byte)bytes.Length); requestId = ToxTools.Map(id); if (length != -1) { return(Encoding.UTF8.GetString(result, 0, length)); } else { throw new Exception("Failed to generate a dns3 string"); } }
private void RegisterAudioVideoCallbacks() { _onReceiveAudioFrameCallback = (IntPtr toxAv, uint friendNumber, IntPtr pcm, uint sampleCount, byte channels, uint samplingRate, IntPtr userData) => { if (OnAudioFrameReceived != null) { OnAudioFrameReceived(this, new ToxAvEventArgs.AudioFrameEventArgs(ToxTools.Map(friendNumber), new ToxAvAudioFrame(pcm, sampleCount, samplingRate, channels))); } }; _onReceiveVideoFrameCallback = (IntPtr toxAv, uint friendNumber, ushort width, ushort height, IntPtr y, IntPtr u, IntPtr v, int yStride, int uStride, int vStride, IntPtr userData) => { if (OnVideoFrameReceived != null) { OnVideoFrameReceived(this, new ToxAvEventArgs.VideoFrameEventArgs(ToxTools.Map(friendNumber), new ToxAvVideoFrame(width, height, y, u, v, yStride, uStride, vStride))); } }; ToxAvFunctions.RegisterAudioReceiveFrameCallback(_toxAv, _onReceiveAudioFrameCallback, IntPtr.Zero); ToxAvFunctions.RegisterVideoReceiveFrameCallback(_toxAv, _onReceiveVideoFrameCallback, IntPtr.Zero); }
/// <summary> /// Decodes and decrypts the dns3 string returned by <see cref="GenerateDns3String"/>. /// </summary> /// <param name="dns3String">String to decrypt.</param> /// <param name="requestId">The request id retrieved with GenerateDns3String.</param> /// <returns></returns> public string DecryptDns3TXT(string dns3String, int requestId) { ThrowIfDisposed(); byte[] id = new byte[ToxConstants.AddressSize]; byte[] idRecordBytes = Encoding.UTF8.GetBytes(dns3String); int result = ToxDnsFunctions.DecryptDns3TXT(_toxDns3, id, idRecordBytes, (uint)idRecordBytes.Length, ToxTools.Map(requestId)); if (result == 0) { return(ToxTools.HexBinToString(id)); } else { throw new Exception("Could not decrypt and decode id_record"); } }