/// <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); }
/// <summary> /// Creates a new audio groupchat. /// </summary> /// <returns></returns> public int AddAvGroupchat() { ThrowIfDisposed(); ToxAvDelegates.GroupAudioReceiveDelegate callback = (tox, groupNumber, peerNumber, frame, sampleCount, channels, sampleRate, 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.AddAvGroupchat(toxHandle, callback, IntPtr.Zero); if (result != -1) { groupAudioHandlers.Add(callback); } return(result); }
public static extern Int32 JoinAvGroupchat(ToxHandle tox, UInt32 friendNumber, Byte[] data, UInt16 length, ToxAvDelegates.GroupAudioReceiveDelegate callback, IntPtr userData);
public static extern Int32 AddAvGroupchat(ToxHandle tox, ToxAvDelegates.GroupAudioReceiveDelegate callback, IntPtr userData);