TeamTalk 5 Java DLL  Version 5.22A
TeamTalk.cs
1 /*
2  * Copyright (c) 2005-2018, BearWare.dk
3  *
4  * Contact Information:
5  *
6  * Bjoern D. Rasmussen
7  * Kirketoften 5
8  * DK-8260 Viby J
9  * Denmark
10  * Email: contact@bearware.dk
11  * Phone: +45 20 20 54 59
12  * Web: http://www.bearware.dk
13  *
14  * This source code is part of the TeamTalk SDK owned by
15  * BearWare.dk. Use of this file, or its compiled unit, requires a
16  * TeamTalk SDK License Key issued by BearWare.dk.
17  *
18  * The TeamTalk SDK License Agreement along with its Terms and
19  * Conditions are outlined in the file License.txt included with the
20  * TeamTalk SDK distribution.
21  *
22  */
23 
24 using System;
25 using System.Collections.Generic;
26 using System.Text;
27 using System.Windows.Forms;
28 using System.Drawing;
29 using System.Drawing.Imaging;
30 using System.Threading;
31 using System.Diagnostics;
32 using System.Reflection;
33 using System.Runtime.InteropServices;
34 using c_tt;
35 
36 namespace BearWare
37 {
43  [Flags]
44  public enum StreamType : uint
45  {
47  STREAMTYPE_NONE = 0x00000000,
50  STREAMTYPE_VOICE = 0x00000001,
53  STREAMTYPE_VIDEOCAPTURE = 0x00000002,
56  STREAMTYPE_MEDIAFILE_AUDIO = 0x00000004,
59  STREAMTYPE_MEDIAFILE_VIDEO = 0x00000008,
62  STREAMTYPE_DESKTOP = 0x00000010,
66  STREAMTYPE_DESKTOPINPUT = 0x00000020,
78  STREAMTYPE_CHANNELMSG = 0x00000040,
85 
93  }
106  public enum SoundSystem : uint
107  {
109  SOUNDSYSTEM_NONE = 0,
111  SOUNDSYSTEM_WINMM = 1,
113  SOUNDSYSTEM_DSOUND = 2,
121  SOUNDSYSTEM_ALSA = 3,
134  SOUNDSYSTEM_WASAPI = 5,
158  }
159 
164  [Flags]
165  public enum SoundDeviceFeature : uint
166  {
167  SOUNDDEVICEFEATURE_NONE = 0x0000,
173  SOUNDDEVICEFEATURE_AEC = 0x0001,
179  SOUNDDEVICEFEATURE_AGC = 0x0002,
202  }
203 
216  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
217  public struct SoundDevice
218  {
224  public int nDeviceID;
228  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
229  public string szDeviceName;
234  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
235  public string szDeviceID;
252  public int nWaveDeviceID;
255  public bool bSupports3D;
257  public int nMaxInputChannels;
259  public int nMaxOutputChannels;
263  [MarshalAs(UnmanagedType.ByValArray, SizeConst = TeamTalkBase.TT_SAMPLERATES_MAX)]
264  public int[] inputSampleRates;
268  [MarshalAs(UnmanagedType.ByValArray, SizeConst = TeamTalkBase.TT_SAMPLERATES_MAX)]
269  public int[] outputSampleRates;
271  public int nDefaultSampleRate;
278  }
279 
280 
289  public struct SoundDeviceEffects
290  {
306  public bool bEnableAGC;
323  public bool bEnableDenoise;
340  }
341 
344  public struct SoundDeviceConstants
345  {
348  public const int TT_SOUNDDEVICE_ID_REMOTEIO = 0;
373  public const int TT_SOUNDDEVICE_ID_TEAMTALK_VIRTUAL = 1978;
374 
375 
389  public const uint TT_SOUNDDEVICE_ID_SHARED_FLAG = 0x00000800;
390 
395  public const uint TT_SOUNDDEVICE_ID_MASK = 0x000007FF;
396  }
397 
401  public struct SoundLevel
402  {
408  public const int SOUND_VU_MAX = 100;
414  public const int SOUND_VU_MIN = 0;
422  public const int SOUND_VOLUME_MAX = 32000;
430  public const int SOUND_VOLUME_DEFAULT = 1000;
436  public const int SOUND_VOLUME_MIN = 0;
445  public const int SOUND_GAIN_MAX = 32000;
455  public const int SOUND_GAIN_DEFAULT = 1000;
464  public const int SOUND_GAIN_MIN = 0;
465  }
466 
481  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
482  public struct AudioBlock
483  {
487  public int nStreamID;
489  public int nSampleRate;
491  public int nChannels;
495  public System.IntPtr lpRawAudio;
497  public int nSamples;
505  public uint uSampleIndex;
519  }
520 
529  public enum MediaFileStatus : uint
530  {
531  MFS_CLOSED = 0,
533  MFS_ERROR = 1,
535  MFS_STARTED = 2,
537  MFS_FINISHED = 3,
539  MFS_ABORTED = 4,
541  MFS_PAUSED = 5,
544  MFS_PLAYING = 6
545  }
546 
550  public enum AudioFileFormat : uint
551  {
553  AFF_NONE = 0,
566  AFF_WAVE_FORMAT = 2,
579  }
580 
588  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
589  public struct AudioFormat
590  {
594  public int nSampleRate;
596  public int nChannels;
597  }
598 
609  public enum FourCC : uint
610  {
612  FOURCC_NONE = 0,
615  FOURCC_I420 = 100,
618  FOURCC_YUY2 = 101,
621  FOURCC_RGB32 = 102
622  }
623 
630  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
631  public struct VideoFormat
632  {
635  public int nWidth;
638  public int nHeight;
642  public int nFPS_Numerator;
646  public int nFPS_Denominator;
649  }
650 
658  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
659  public struct VideoFrame
660  {
663  public int nWidth;
666  public int nHeight;
672  public int nStreamID;
677  public bool bKeyFrame;
679  public System.IntPtr frameBuffer;
682  public int nFrameBufferSize;
683  }
684 
694  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
695  public struct VideoCaptureDevice
696  {
698  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
699  public string szDeviceID;
701  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
702  public string szDeviceName;
715  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
716  public string szCaptureAPI;
718  [MarshalAs(UnmanagedType.ByValArray, SizeConst = TeamTalkBase.TT_VIDEOFORMATS_MAX)]
722  public int nVideoFormatsCount;
723  }
724 
732  public enum BitmapFormat : uint
733  {
735  BMP_NONE = 0,
741  BMP_RGB8_PALETTE = 1,
744  BMP_RGB16_555 = 2,
748  BMP_RGB24 = 3,
752  BMP_RGB32 = 4
753  }
754 
759  public enum DesktopProtocol : uint
760  {
764  }
765 
772  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
773  public struct DesktopWindow
774  {
776  public int nWidth;
778  public int nHeight;
783  public int nBytesPerLine;
790  public int nSessionID;
794  public IntPtr frameBuffer;
797  public int nFrameBufferSize;
798  }
799 
803  public enum DesktopKeyState : uint
804  {
806  DESKTOPKEYSTATE_NONE = 0x00000000,
808  DESKTOPKEYSTATE_DOWN = 0x00000001,
810  DESKTOPKEYSTATE_UP = 0x00000002,
811  }
812 
820  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
821  public struct DesktopInput
822  {
826  public ushort uMousePosX;
830  public ushort uMousePosY;
836  public uint uKeyCode;
841  public DesktopInput(bool set_defaults)
842  {
843  if (set_defaults)
844  {
847  uKeyState = DesktopKeyState.DESKTOPKEYSTATE_NONE;
848  }
849  else
850  {
851  uMousePosX = uMousePosY = 0;
852  uKeyCode = 0;
853  uKeyState = DesktopKeyState.DESKTOPKEYSTATE_NONE;
854  }
855  }
856  }
857 
859  public struct DesktopInputConstants
860  {
868  public const uint DESKTOPINPUT_KEYCODE_IGNORE = 0xFFFFFFFF;
869 
877  public const ushort DESKTOPINPUT_MOUSEPOS_IGNORE = 0xFFFF;
878 
885  public const uint DESKTOPINPUT_KEYCODE_LMOUSEBTN = 0x1000;
886 
893  public const uint DESKTOPINPUT_KEYCODE_RMOUSEBTN = 0x1001;
894 
901  public const uint DESKTOPINPUT_KEYCODE_MMOUSEBTN = 0x1002;
902  }
903 
916  [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)]
917  public struct SpeexCodec
918  {
921  [FieldOffset(0)]
922  public int nBandmode;
925  [FieldOffset(4)]
926  public int nQuality;
936  [FieldOffset(8)]
937  public int nTxIntervalMSec;
942  [FieldOffset(12)]
943  public bool bStereoPlayback;
944  }
945 
951  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
952  public struct SpeexVBRCodec
953  {
956  public int nBandmode;
959  public int nQuality;
966  public int nBitRate;
970  public int nMaxBitRate;
974  public bool bDTX;
983  public int nTxIntervalMSec;
988  public bool bStereoPlayback;
989  }
990 
992  public struct SpeexConstants
993  {
995  public const int SPEEX_BANDMODE_NARROW = 0;
997  public const int SPEEX_BANDMODE_WIDE = 1;
999  public const int SPEEX_BANDMODE_UWIDE = 2;
1001  public const int SPEEX_QUALITY_MIN = 0;
1003  public const int SPEEX_QUALITY_MAX = 10;
1006  public const int SPEEX_NB_MIN_BITRATE = 2150;
1009  public const int SPEEX_NB_MAX_BITRATE = 24600;
1012  public const int SPEEX_WB_MIN_BITRATE = 3950;
1015  public const int SPEEX_WB_MAX_BITRATE = 42200;
1018  public const int SPEEX_UWB_MIN_BITRATE = 4150;
1021  public const int SPEEX_UWB_MAX_BITRATE = 44000;
1024  public const int DEFAULT_SPEEX_BANDMODE = 1;
1027  public const int DEFAULT_SPEEX_QUALITY = 4;
1030  public const int DEFAULT_SPEEX_DELAY = 40;
1033  public const bool DEFAULT_SPEEX_SIMSTEREO = false;
1036  public const int DEFAULT_SPEEX_BITRATE = 0;
1039  public const int DEFAULT_SPEEX_MAXBITRATE = 0;
1042  public const bool DEFAULT_SPEEX_DTX = true;
1043  }
1044 
1047  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1048  public struct OpusCodec
1049  {
1052  public int nSampleRate;
1054  public int nChannels;
1058  public int nApplication;
1061  public int nComplexity;
1064  public bool bFEC;
1067  public bool bDTX;
1071  public int nBitRate;
1073  public bool bVBR;
1076  public bool bVBRConstraint;
1083  public int nTxIntervalMSec;
1087  public int nFrameSizeMSec;
1088  }
1089 
1091  public struct OpusConstants
1092  {
1095  public const int OPUS_APPLICATION_VOIP = 2048;
1098  public const int OPUS_APPLICATION_AUDIO = 2049;
1101  public const int OPUS_MIN_BITRATE = 6000;
1104  public const int OPUS_MAX_BITRATE = 510000;
1105 
1108  public const int OPUS_MIN_FRAMESIZE = 2; /* Actually it's 2.5 */
1111  public const int OPUS_MAX_FRAMESIZE = 60;
1115  public const int OPUS_REALMAX_FRAMESIZE = 120;
1116 
1118  public const int DEFAULT_OPUS_SAMPLERATE = 48000;
1119  public const int DEFAULT_OPUS_CHANNELS = 1;
1120  public const int DEFAULT_OPUS_COMPLEXITY = 10;
1121  public const bool DEFAULT_OPUS_FEC = true;
1122  public const bool DEFAULT_OPUS_DTX = false;
1123  public const bool DEFAULT_OPUS_VBR = true;
1124  public const bool DEFAULT_OPUS_VBRCONSTRAINT = false;
1125  public const int DEFAULT_OPUS_BITRATE = 32000;
1126  public const int DEFAULT_OPUS_DELAY = 20;
1127  }
1128 
1146  [StructLayout(LayoutKind.Explicit)]
1147  public struct SpeexDSP
1148  {
1156  [FieldOffset(0)]
1157  public bool bEnableAGC;
1160  [FieldOffset(4)]
1161  public int nGainLevel;
1165  [FieldOffset(8)]
1166  public int nMaxIncDBSec;
1171  [FieldOffset(12)]
1172  public int nMaxDecDBSec;
1176  [FieldOffset(16)]
1177  public int nMaxGainDB;
1180  [FieldOffset(20)]
1181  public bool bEnableDenoise;
1185  [FieldOffset(24)]
1205  [FieldOffset(28)]
1210  [FieldOffset(32)]
1211  public int nEchoSuppress;
1215  [FieldOffset(36)]
1217 
1218  public SpeexDSP(bool set_defaults)
1219  {
1220  if (set_defaults)
1221  {
1227 
1230 
1234  }
1235  else
1236  {
1237  bEnableAGC = false;
1238  nGainLevel = 0;
1239  nMaxIncDBSec = 0;
1240  nMaxDecDBSec = 0;
1241  nMaxGainDB = 0;
1242 
1243  bEnableDenoise = false;
1244  nMaxNoiseSuppressDB = 0;
1245 
1246  bEnableEchoCancellation = false;
1247  nEchoSuppress = 0;
1248  nEchoSuppressActive = 0;
1249  }
1250  }
1251  }
1252 
1255  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1256  public struct TTAudioPreprocessor
1257  {
1261  public int nGainLevel;
1263  public bool bMuteLeftSpeaker;
1265  public bool bMuteRightSpeaker;
1266  }
1267 
1277  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1279  {
1281  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1282  public struct Preamplifier
1283  {
1286  public bool bEnable;
1288  public float fFixedGainFactor;
1289  }
1291 
1294  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1295  public struct EchoCanceller
1296  {
1302  public bool bEnable;
1303  }
1305 
1308  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1309  public struct NoiseSuppression
1310  {
1312  public bool bEnable;
1315  public int nLevel;
1316  }
1318 
1321  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1322  public struct GainController2
1323  {
1326  public bool bEnable;
1329  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1330  public struct FixedDigital
1331  {
1334  public float fGainDB;
1335  }
1337 
1339  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1340  public struct AdaptiveDigital
1341  {
1342  /* @brief Configuration for fine tuning gain level after echo
1343  * cancellation and noise suppression. */
1344  public bool bEnable;
1346  public float fHeadRoomDB;
1348  public float fMaxGainDB;
1350  public float fInitialGainDB;
1351  /* Range: 0 < x < infinite. Default: 6 dB/sec */
1353  /* Range: -infinite < x < 0. Default: -50 */
1355  }
1357  }
1359 
1360  public WebRTCAudioPreprocessor(bool set_defaults)
1361  {
1362  if (set_defaults)
1363  {
1366 
1368 
1371 
1374 
1381  }
1382  else
1383  {
1384  preamplifier.bEnable = false;
1386 
1387  echocanceller.bEnable = false;
1388 
1389  noisesuppression.bEnable = false;
1391 
1392  gaincontroller2.bEnable = false;
1394 
1401  }
1402  }
1403  }
1404 
1406  public struct WebRTCConstants
1407  {
1408  public const bool DEFAULT_WEBRTC_PREAMPLIFIER_ENABLE = false;
1409  public const float DEFAULT_WEBRTC_PREAMPLIFIER_GAINFACTOR = 1.0f;
1410  public const bool DEFAULT_WEBRTC_GAINCTL_ENABLE = false;
1411  public const float DEFAULT_WEBRTC_GAINDB = 15;
1412  public const bool DEFAULT_WEBRTC_SAT_PROT_ENABLE = false;
1413  public const float DEFAULT_WEBRTC_HEADROOM_DB = 5;
1414  public const float DEFAULT_WEBRTC_MAXGAIN_DB = 50;
1415  public const float DEFAULT_WEBRTC_INITIAL_GAIN_DB = 15;
1416  public const float DEFAULT_WEBRTC_MAXGAIN_DBSEC = 6;
1417  public const float DEFAULT_WEBRTC_MAX_OUT_NOISE = -50;
1418  public const bool DEFAULT_WEBRTC_NOISESUPPRESS_ENABLE = false;
1420  public const bool DEFAULT_WEBRTC_ECHO_CANCEL_ENABLE = false;
1421  public const float WEBRTC_GAINCONTROLLER2_FIXEDGAIN_MAX = 49.9f;
1422  }
1423 
1427  public enum AudioPreprocessorType : uint
1428  {
1439  };
1440 
1442  [StructLayout(LayoutKind.Explicit)]
1443  public struct AudioPreprocessor
1444  {
1446  [FieldOffset(0)]
1449  [FieldOffset(4)]
1452  [FieldOffset(4)]
1455  [FieldOffset(4)]
1457  }
1458 
1460  public struct SpeexDSPConstants
1461  {
1462  public const bool DEFAULT_AGC_ENABLE = true;
1463  public const int DEFAULT_AGC_GAINLEVEL = 8000;
1464  public const int DEFAULT_AGC_INC_MAXDB = 12;
1465  public const int DEFAULT_AGC_DEC_MAXDB = -40;
1466  public const int DEFAULT_AGC_GAINMAXDB = 30;
1467  public const bool DEFAULT_DENOISE_ENABLE = true;
1468  public const int DEFAULT_DENOISE_SUPPRESS = -30;
1469  public const bool DEFAULT_ECHO_ENABLE = true;
1470  public const int DEFAULT_ECHO_SUPPRESS = -40;
1471  public const int DEFAULT_ECHO_SUPPRESS_ACTIVE = -15;
1472  }
1473 
1478  [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)]
1479  public struct WebMVP8Codec
1480  {
1482  [FieldOffset(0)]
1483  public int nRcTargetBitrate;
1489  [FieldOffset(0)]
1490  public int rc_target_bitrate;
1498  [FieldOffset(4)]
1499  public uint nEncodeDeadline;
1500  }
1501 
1503  {
1506  public const int WEBM_VPX_DL_REALTIME = 1;
1509  public const int WEBM_VPX_DL_GOOD_QUALITY = 1000000;
1512  public const int WEBM_VPX_DL_BEST_QUALITY = 0;
1513  }
1514 
1519  public enum Codec : uint
1520  {
1522  NO_CODEC = 0,
1525  SPEEX_CODEC = 1,
1528  SPEEX_VBR_CODEC = 2,
1530  OPUS_CODEC = 3,
1532  WEBM_VP8_CODEC = 128
1533  }
1534 
1538  [StructLayout(LayoutKind.Explicit)]
1539  public struct AudioCodec
1540  {
1543  [FieldOffset(0)]
1544  public Codec nCodec;
1547  [FieldOffset(4)]
1551  [FieldOffset(4)]
1555  [FieldOffset(4)]
1556  public OpusCodec opus;
1557  }
1558 
1572  [StructLayout(LayoutKind.Explicit)]
1573  public struct AudioConfig
1574  {
1576  [FieldOffset(0)]
1577  public bool bEnableAGC;
1579  [FieldOffset(4)]
1580  public int nGainLevel;
1581 
1582  public AudioConfig(bool set_defaults)
1583  {
1584  if (set_defaults)
1585  {
1586  bEnableAGC = true;
1588  }
1589  else
1590  {
1591  bEnableAGC = false;
1592  nGainLevel = 0;
1593  }
1594  }
1595  }
1596 
1597  public struct AudioConfigConstants
1598  {
1599  public const int DEFAULT_AGC_GAINLEVEL = 8000;
1600  public const int DEFAULT_AGC_INC_MAXDB = 12;
1601  }
1602 
1604  [StructLayout(LayoutKind.Explicit)]
1605  public struct VideoCodec
1606  {
1610  [FieldOffset(0)]
1611  public Codec nCodec;
1612  [FieldOffset(4)]
1614  }
1625  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1626  public struct MediaFileInfo
1627  {
1632  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
1633  public string szFileName;
1639  public uint uDurationMSec;
1641  public uint uElapsedMSec;
1642  }
1651  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1652  public struct MediaFilePlayback
1653  {
1658  public uint uOffsetMSec;
1660  public bool bPaused;
1663  }
1664 
1667  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1668  public struct AudioInputProgress
1669  {
1671  public int nStreamID;
1674  public uint uQueueMSec;
1677  public uint uElapsedMSec;
1678  }
1679 
1696  [Flags]
1697  public enum UserRight : uint
1698  {
1701  USERRIGHT_NONE = 0x00000000,
1704  USERRIGHT_MULTI_LOGIN = 0x00000001,
1706  USERRIGHT_VIEW_ALL_USERS = 0x00000002,
1714  USERRIGHT_MODIFY_CHANNELS = 0x00000008,
1717  USERRIGHT_TEXTMESSAGE_BROADCAST = 0x00000010,
1719  USERRIGHT_KICK_USERS = 0x00000020,
1722  USERRIGHT_BAN_USERS = 0x00000040,
1725  USERRIGHT_MOVE_USERS = 0x00000080,
1728  USERRIGHT_OPERATOR_ENABLE = 0x00000100,
1730  USERRIGHT_UPLOAD_FILES = 0x00000200,
1733  USERRIGHT_DOWNLOAD_FILES = 0x00000400,
1736  USERRIGHT_UPDATE_SERVERPROPERTIES = 0x00000800,
1739  USERRIGHT_TRANSMIT_VOICE = 0x00001000,
1742  USERRIGHT_TRANSMIT_VIDEOCAPTURE = 0x00002000,
1745  USERRIGHT_TRANSMIT_DESKTOP = 0x00004000,
1748  USERRIGHT_TRANSMIT_DESKTOPINPUT = 0x00008000,
1764  USERRIGHT_LOCKED_NICKNAME = 0x00040000,
1767  USERRIGHT_LOCKED_STATUS = 0x00080000,
1770  USERRIGHT_RECORD_VOICE = 0x00100000,
1772  USERRIGHT_VIEW_HIDDEN_CHANNELS = 0x00200000,
1775  USERRIGHT_TEXTMESSAGE_USER = 0x00400000,
1778  USERRIGHT_TEXTMESSAGE_CHANNEL = 0x00800000,
1779 
1782  }
1783 
1790  [Flags]
1791  public enum ServerLogEvent : uint
1792  {
1794  SERVERLOGEVENT_NONE = 0x00000000,
1796  SERVERLOGEVENT_USER_CONNECTED = 0x00000001,
1798  SERVERLOGEVENT_USER_DISCONNECTED = 0x00000002,
1800  SERVERLOGEVENT_USER_LOGGEDIN = 0x00000004,
1802  SERVERLOGEVENT_USER_LOGGEDOUT = 0x00000008,
1804  SERVERLOGEVENT_USER_LOGINFAILED = 0x00000010,
1806  SERVERLOGEVENT_USER_TIMEDOUT = 0x00000020,
1808  SERVERLOGEVENT_USER_KICKED = 0x00000040,
1810  SERVERLOGEVENT_USER_BANNED = 0x00000080,
1812  SERVERLOGEVENT_USER_UNBANNED = 0x00000100,
1814  SERVERLOGEVENT_USER_UPDATED = 0x00000200,
1816  SERVERLOGEVENT_USER_JOINEDCHANNEL = 0x00000400,
1818  SERVERLOGEVENT_USER_LEFTCHANNEL = 0x00000800,
1820  SERVERLOGEVENT_USER_MOVED = 0x00001000,
1830  SERVERLOGEVENT_CHANNEL_CREATED = 0x00020000,
1832  SERVERLOGEVENT_CHANNEL_UPDATED = 0x00040000,
1834  SERVERLOGEVENT_CHANNEL_REMOVED = 0x00080000,
1836  SERVERLOGEVENT_FILE_UPLOADED = 0x00100000,
1838  SERVERLOGEVENT_FILE_DOWNLOADED = 0x00200000,
1840  SERVERLOGEVENT_FILE_DELETED = 0x00400000,
1842  SERVERLOGEVENT_SERVER_UPDATED = 0x00800000,
1844  SERVERLOGEVENT_SERVER_SAVECONFIG = 0x01000000,
1845  }
1846 
1858  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1859  public struct ServerProperties
1860  {
1862  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
1863  public string szServerName;
1866  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
1867  public string szMOTD;
1876  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
1877  public string szMOTDRaw;
1880  public int nMaxUsers;
1883  public int nMaxLoginAttempts;
1909  public bool bAutoSave;
1911  public int nTcpPort;
1913  public int nUdpPort;
1916  public int nUserTimeout;
1918  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
1919  public string szServerVersion;
1921  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
1931  public int nLoginDelayMSec;
1935  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
1936  public string szAccessToken;
1943  }
1944 
1952  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1953  public struct ServerStatistics
1954  {
1957  public long nTotalBytesTX;
1960  public long nTotalBytesRX;
1963  public long nVoiceBytesTX;
1966  public long nVoiceBytesRX;
1975  public long nMediaFileBytesTX;
1978  public long nMediaFileBytesRX;
1981  public long nDesktopBytesTX;
1984  public long nDesktopBytesRX;
1986  public int nUsersServed;
1988  public int nUsersPeak;
1991  public long nFilesTx;
1994  public long nFilesRx;
1996  public long nUptimeMSec;
1997  }
1998 
2004  [Flags]
2005  public enum BanType : uint
2006  {
2008  BANTYPE_NONE = 0x00,
2012  BANTYPE_CHANNEL = 0x01,
2014  BANTYPE_IPADDR = 0x02,
2016  BANTYPE_USERNAME = 0x04
2017  };
2018 
2023  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2024  public struct BannedUser
2025  {
2027  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2028  public string szIPAddress;
2030  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2031  public string szChannelPath;
2033  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2034  public string szBanTime;
2036  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2037  public string szNickname;
2039  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2040  public string szUsername;
2044  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2045  public string szOwner;
2046  }
2047 
2051  [Flags]
2052  public enum UserType : uint
2053  {
2056  USERTYPE_NONE = 0x0,
2058  USERTYPE_DEFAULT = 0x01,
2060  USERTYPE_ADMIN = 0x02
2061  }
2062 
2071  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2072  public struct AbusePrevention
2073  {
2083  public int nCommandsLimit;
2086  }
2087 
2096  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2097  public struct UserAccount
2098  {
2100  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2101  public string szUsername;
2103  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2104  public string szPassword;
2114  public int nUserData;
2116  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2117  public string szNote;
2122  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2123  public string szInitChannel;
2127  [MarshalAs(UnmanagedType.ByValArray, SizeConst = TeamTalkBase.TT_CHANNELS_OPERATOR_MAX)]
2128  public int[] autoOperatorChannels;
2140  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2141  public string szLastModified;
2144  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2145  public string szLastLoginTime;
2146  }
2170  [Flags]
2171  public enum Subscription : uint
2172  {
2174  SUBSCRIBE_NONE = 0x00000000,
2177  SUBSCRIBE_USER_MSG = 0x00000001,
2180  SUBSCRIBE_CHANNEL_MSG = 0x00000002,
2183  SUBSCRIBE_BROADCAST_MSG = 0x00000004,
2186  SUBSCRIBE_CUSTOM_MSG = 0x00000008,
2188  SUBSCRIBE_VOICE = 0x00000010,
2190  SUBSCRIBE_VIDEOCAPTURE = 0x00000020,
2192  SUBSCRIBE_DESKTOP = 0x00000040,
2196  SUBSCRIBE_DESKTOPINPUT = 0x00000080,
2199  SUBSCRIBE_MEDIAFILE = 0x00000100,
2202  SUBSCRIBE_INTERCEPT_USER_MSG = 0x00010000,
2205  SUBSCRIBE_INTERCEPT_CHANNEL_MSG = 0x00020000,
2206  /* unused SUBSCRIBE_INTERCEPT_BROADCAST_MSG = 0x00040000 */
2209  SUBSCRIBE_INTERCEPT_CUSTOM_MSG = 0x00080000,
2214  SUBSCRIBE_INTERCEPT_VOICE = 0x00100000,
2219  SUBSCRIBE_INTERCEPT_VIDEOCAPTURE = 0x00200000,
2224  SUBSCRIBE_INTERCEPT_DESKTOP = 0x00400000,
2225  /* unused SUBSCRIBE_INTERCEPT_DESKTOPINPUT = 0x00800000, */
2230  SUBSCRIBE_INTERCEPT_MEDIAFILE = 0x01000000,
2231  }
2232 
2236  [Flags]
2237  public enum UserState : uint
2238  {
2240  USERSTATE_NONE = 0x0000000,
2244  USERSTATE_VOICE = 0x00000001,
2246  USERSTATE_MUTE_VOICE = 0x00000002,
2249  USERSTATE_MUTE_MEDIAFILE = 0x00000004,
2254  USERSTATE_DESKTOP = 0x00000008,
2259  USERSTATE_VIDEOCAPTURE = 0x00000010,
2265  USERSTATE_MEDIAFILE_AUDIO = 0x00000020,
2269  USERSTATE_MEDIAFILE_VIDEO = 0x00000040,
2275  }
2276 
2281  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2282  public struct User
2283  {
2287  public int nUserID;
2292  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2293  public string szUsername;
2298  public int nUserData;
2304  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2305  public string szIPAddress;
2311  public uint uVersion;
2317  public int nChannelID;
2334  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2335  public string szNickname;
2340  public int nStatusMode;
2345  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2346  public string szStatusMsg;
2352  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2353  public string szMediaStorageDir;
2359  public int nVolumeVoice;
2365  public int nVolumeMediaFile;
2379  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
2380  public float[] soundPositionVoice;
2386  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
2387  public float[] soundPositionMediaFile;
2392  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
2393  public bool[] stereoPlaybackVoice;
2398  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
2403  public int nBufferMSecVoice;
2415  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2416  public string szClientName;
2417  }
2418 
2423  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2424  public struct UserStatistics
2425  {
2427  public long nVoicePacketsRecv;
2429  public long nVoicePacketsLost;
2456  }
2457 
2466  public enum TextMsgType : uint
2467  {
2470  MSGTYPE_USER = 1,
2475  MSGTYPE_CHANNEL = 2,
2478  MSGTYPE_BROADCAST = 3,
2481  MSGTYPE_CUSTOM = 4
2482  }
2483 
2491  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2492  public struct TextMessage
2493  {
2497  public int nFromUserID;
2499  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2500  public string szFromUsername;
2502  public int nToUserID;
2505  public int nChannelID;
2508  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2509  public string szMessage;
2512  public bool bMore;
2513  }
2521  [Flags]
2522  public enum ChannelType : uint
2523  {
2526  CHANNEL_DEFAULT = 0x0000,
2529  CHANNEL_PERMANENT = 0x0001,
2531  CHANNEL_SOLO_TRANSMIT = 0x0002,
2542  CHANNEL_CLASSROOM = 0x0004,
2547  CHANNEL_OPERATOR_RECVONLY = 0x0008,
2550  CHANNEL_NO_VOICEACTIVATION = 0x0010,
2552  CHANNEL_NO_RECORDING = 0x0020,
2555  CHANNEL_HIDDEN = 0x0040,
2556  }
2557 
2569  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2570  public struct Channel
2571  {
2574  public int nParentID;
2577  public int nChannelID;
2579  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2580  public string szName;
2582  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2583  public string szTopic;
2587  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2588  public string szPassword;
2591  public bool bPassword;
2597  public int nUserData;
2599  public long nDiskQuota;
2602  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2603  public string szOpPassword;
2605  public int nMaxUsers;
2666  [MarshalAs(UnmanagedType.ByValArray, SizeConst = TeamTalkBase.TT_TRANSMITUSERS_MAX * 2)]
2667  public int[] transmitUsers;
2672  [MarshalAs(UnmanagedType.ByValArray, SizeConst = TeamTalkBase.TT_TRANSMITQUEUE_MAX)]
2673  public int[] transmitUsersQueue;
2674 
2683 
2688 
2693 
2696  public void AddTransmitUser(int nUserID, StreamType uStreamType)
2697  {
2698  int i;
2699  for (i = 0; i < TeamTalkBase.TT_TRANSMITUSERS_MAX; i++)
2700  {
2701  if (transmitUsers[i * 2] == 0 || transmitUsers[i * 2] == nUserID)
2702  break;
2703  }
2705  {
2706  transmitUsers[i * 2] = nUserID;
2707  transmitUsers[i * 2 + 1] |= (int)uStreamType;
2708  }
2709  }
2713  {
2714  int i;
2715  for (i = 0; i < TeamTalkBase.TT_TRANSMITUSERS_MAX; i++)
2716  {
2717  if (transmitUsers[i * 2] == nUserID)
2718  return (StreamType)transmitUsers[i * 2 + 1];
2719  }
2720  return StreamType.STREAMTYPE_NONE;
2721  }
2724  {
2725  int i;
2726  for (i = 0; i < TeamTalkBase.TT_TRANSMITUSERS_MAX; i++)
2727  {
2728  if (transmitUsers[i * 2] == 0)
2729  break;
2730  }
2731  return i;
2732  }
2734  public void RemoveTransmitUser(int nUserID, StreamType uStreamType)
2735  {
2736  int i;
2737  for (i = 0; i < TeamTalkBase.TT_TRANSMITUSERS_MAX; i++)
2738  {
2739  if (transmitUsers[i * 2] == nUserID)
2740  break;
2741  }
2743  {
2744  transmitUsers[i * 2] = nUserID;
2745  transmitUsers[i * 2 + 1] &= (int)~uStreamType;
2746 
2747  if (transmitUsers[i * 2 + 1] == (int)StreamType.STREAMTYPE_NONE)
2748  {
2749  for (; i < TeamTalkBase.TT_TRANSMITUSERS_MAX - 1; i++)
2750  {
2751  transmitUsers[i * 2] = transmitUsers[(i + 1) * 2 + 1];
2752  transmitUsers[i * 2 + 1] = transmitUsers[(i + 1) * 2 + 1];
2753  }
2754  }
2755  }
2756  }
2757  }
2758 
2761  public enum FileTransferStatus : uint
2762  {
2764  FILETRANSFER_CLOSED = 0,
2766  FILETRANSFER_ERROR = 1,
2768  FILETRANSFER_ACTIVE = 2,
2771  }
2772 
2776  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2777  public struct FileTransfer
2778  {
2782  public int nTransferID;
2784  public int nChannelID;
2786  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2787  public string szLocalFilePath;
2789  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2790  public string szRemoteFileName;
2792  public long nFileSize;
2794  public long nTransferred;
2796  public bool bInbound;
2797  }
2798 
2802  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2803  public struct RemoteFile
2804  {
2806  public int nChannelID;
2808  public int nFileID;
2810  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2811  public string szFileName;
2813  public long nFileSize;
2815  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2816  public string szUsername;
2819  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2820  public string szUploadTime;
2821  }
2832  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2833  public struct EncryptionContext
2834  {
2840  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2841  public string szCertificateFile;
2843  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2844  public string szPrivateKeyFile;
2849  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2850  public string szCAFile;
2853  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
2854  public string szCADir;
2861  public bool bVerifyPeer;
2872  public bool bVerifyClientOnce;
2880  public int nVerifyDepth;
2881  }
2882 
2890  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2891  public struct ClientKeepAlive
2892  {
2935  }
2936 
2941  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2942  public struct ClientStatistics
2943  {
2945  public long nUdpBytesSent;
2947  public long nUdpBytesRecv;
2949  public long nVoiceBytesSent;
2951  public long nVoiceBytesRecv;
2965  public long nDesktopBytesSent;
2967  public long nDesktopBytesRecv;
2971  public int nUdpPingTimeMs;
2975  public int nTcpPingTimeMs;
2994  }
2995 
3001  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
3002  public struct JitterConfig
3003  {
3005  public int nFixedDelayMSec;
3007  public bool bUseAdativeDejitter;
3018  }
3019 
3020 
3030  public enum ClientError : uint
3031  {
3033  CMDERR_SUCCESS = 0,
3034  SUCCESS = 0,
3035 
3036  /* COMMAND ERRORS 1000-1999 ARE DUE TO INVALID OR UNSUPPORTED
3037  * COMMANDS */
3038 
3040  CMDERR_SYNTAX_ERROR = 1000,
3045  CMDERR_UNKNOWN_COMMAND = 1001,
3048  CMDERR_MISSING_PARAMETER = 1002,
3059  CMDERR_INVALID_USERNAME = 1005,
3060 
3061  /* COMMAND ERRORS 2000-2999 ARE DUE TO INSUFFICIENT RIGHTS */
3062 
3079  CMDERR_INVALID_ACCOUNT = 2002,
3096  CMDERR_SERVER_BANNED = 2005,
3128  CMDERR_NOT_AUTHORIZED = 2006,
3136 
3143 
3150 
3157 
3161 
3166  CMDERR_COMMAND_FLOOD = 2014,
3167 
3173  CMDERR_CHANNEL_BANNED = 2015,
3174 
3180 
3181  /* COMMAND ERRORS 3000-3999 ARE DUE TO INVALID STATE OF CLIENT INSTANCE */
3182 
3188  CMDERR_NOT_LOGGEDIN = 3000,
3189 
3193  CMDERR_ALREADY_LOGGEDIN = 3001,
3197  CMDERR_NOT_IN_CHANNEL = 3002,
3224  CMDERR_CHANNEL_NOT_FOUND = 3005,
3235  CMDERR_USER_NOT_FOUND = 3006,
3240  CMDERR_BAN_NOT_FOUND = 3007,
3250  CMDERR_OPENFILE_FAILED = 3009,
3255  CMDERR_ACCOUNT_NOT_FOUND = 3010,
3260  CMDERR_FILE_NOT_FOUND = 3011,
3271 
3275  CMDERR_CHANNEL_HAS_USERS = 3015,
3276 
3281 
3287 
3288  /* ERRORS 10000-10999 ARE NOT COMMAND ERRORS BUT INSTEAD
3289  * ERRORS IN THE CLIENT INSTANCE. */
3290 
3295  INTERR_SNDINPUT_FAILURE = 10000,
3300  INTERR_SNDOUTPUT_FAILURE = 10001,
3329  INTERR_SNDEFFECT_FAILURE = 10005,
3330  }
3331 
3332  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
3333  public struct ClientErrorMsg
3334  {
3336  public int nErrorNo;
3338  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
3339  public string szErrorMsg;
3340  }
3341 
3351  public enum ClientEvent : uint
3352  {
3353  CLIENTEVENT_NONE = 0,
3905  }
3906 
3907 
3908  /* List of structures used internally by TeamTalkBase. */
3909  public enum TTType : uint
3910  {
3911  __NONE = 0,
3912  __AUDIOCODEC = 1,
3913  __BANNEDUSER = 2,
3914  __VIDEOFORMAT = 3,
3915  __OPUSCODEC = 4,
3916  __CHANNEL = 5,
3917  __CLIENTSTATISTICS = 6,
3918  __REMOTEFILE = 7,
3919  __FILETRANSFER = 8,
3920  __MEDIAFILESTATUS = 9,
3921  __SERVERPROPERTIES = 10,
3922  __SERVERSTATISTICS = 11,
3923  __SOUNDDEVICE = 12,
3924  __SPEEXCODEC = 13,
3925  __TEXTMESSAGE = 14,
3926  __WEBMVP8CODEC = 15,
3927  __TTMESSAGE = 16,
3928  __USER = 17,
3929  __USERACCOUNT = 18,
3930  __USERSTATISTICS = 19,
3931  __VIDEOCAPTUREDEVICE = 20,
3932  __VIDEOCODEC = 21,
3933  __AUDIOCONFIG = 22,
3934  __SPEEXVBRCODEC = 23,
3935  __VIDEOFRAME = 24,
3936  __AUDIOBLOCK = 25,
3937  __AUDIOFORMAT = 26,
3938  __MEDIAFILEINFO = 27,
3939  __CLIENTERRORMSG = 28,
3940  __TTBOOL = 29,
3941  __INT32 = 30,
3942  __DESKTOPINPUT = 31,
3943  __SPEEXDSP = 32,
3944  __STREAMTYPE = 33,
3946  __AUDIOPREPROCESSOR = 35,
3947  __TTAUDIOPREPROCESSOR = 36,
3948  __MEDIAFILEPLAYBACK = 37,
3949  __CLIENTKEEPALIVE = 38,
3950  __UINT32 = 39,
3951  __AUDIOINPUTPROGRESS = 40,
3952  __JITTERCONFIG = 41,
3954  __ENCRYPTIONCONTEXT = 43,
3955  __SOUNDDEVICEEFFECTS = 44,
3956  __DESKTOPWINDOW = 45,
3957  __ABUSEPREVENTION = 46,
3958  }
3959 
3970  [StructLayout(LayoutKind.Sequential)]
3971  public struct TTMessage
3972  {
3976  public int nSource;
3978  public TTType ttType;
3980  public uint uReserved;
3981  [MarshalAs(UnmanagedType.ByValArray, SizeConst = TTDLL.SIZEOF_TTMESSAGE_DATA)]
3982  public byte[] data;
3983  //UnionData data;
3984 
3985  public object DataToObject()
3986  {
3987  switch (ttType)
3988  {
3989  case TTType.__CHANNEL:
3990  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(Channel));
3991  case TTType.__CLIENTERRORMSG:
3992  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(ClientErrorMsg));
3993  case TTType.__DESKTOPINPUT:
3994  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(DesktopInput));
3995  case TTType.__FILETRANSFER:
3996  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(FileTransfer));
3997  case TTType.__MEDIAFILEINFO:
3998  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(MediaFileInfo));
3999  case TTType.__REMOTEFILE:
4000  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(RemoteFile));
4001  case TTType.__SERVERPROPERTIES:
4002  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(ServerProperties));
4003  case TTType.__SERVERSTATISTICS:
4004  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(ServerStatistics));
4005  case TTType.__TEXTMESSAGE:
4006  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(TextMessage));
4007  case TTType.__USER:
4008  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(User));
4009  case TTType.__USERACCOUNT:
4010  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(UserAccount));
4011  case TTType.__BANNEDUSER :
4012  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(BannedUser));
4013  case TTType.__TTBOOL:
4014  return Marshal.ReadInt32(TTDLL.TT_DBG_GETDATAPTR(ref this)) != 0;
4015  case TTType.__INT32:
4016  return Marshal.ReadInt32(TTDLL.TT_DBG_GETDATAPTR(ref this));
4017  case TTType.__STREAMTYPE :
4018  return (StreamType)Marshal.ReadInt32(TTDLL.TT_DBG_GETDATAPTR(ref this));
4019  case TTType.__AUDIOINPUTPROGRESS :
4020  return Marshal.PtrToStructure(TTDLL.TT_DBG_GETDATAPTR(ref this), typeof(AudioInputProgress));
4021  default:
4022  return null;
4023  }
4024  }
4025  }
4026 
4027  [StructLayout(LayoutKind.Explicit, Size = 5224)]
4028  struct UnionData
4029  {
4030  [FieldOffset(0)]
4032  [FieldOffset(0)]
4034  [FieldOffset(0)]
4036  [FieldOffset(0)]
4038  [FieldOffset(0)]
4040  [FieldOffset(0)]
4042  [FieldOffset(0)]
4044  [FieldOffset(0)]
4046  [FieldOffset(0)]
4047  public User user;
4048  [FieldOffset(0)]
4050  [FieldOffset(0)]
4051  public bool bActive;
4052  [FieldOffset(0)]
4053  public int nBytesRemain;
4054  [FieldOffset(0)]
4055  public int nStreamID;
4056  [FieldOffset(0)]
4057  public int nPayloadSize;
4058  }
4059 
4077  [Flags]
4078  public enum ClientFlag : uint
4079  {
4082  CLIENT_CLOSED = 0x00000000,
4086  CLIENT_SNDINPUT_READY = 0x00000001,
4090  CLIENT_SNDOUTPUT_READY = 0x00000002,
4096  CLIENT_SNDINOUTPUT_DUPLEX = 0x00000004,
4103  CLIENT_SNDINPUT_VOICEACTIVATED = 0x00000008,
4110  CLIENT_SNDINPUT_VOICEACTIVE = 0x00000010,
4113  CLIENT_SNDOUTPUT_MUTE = 0x00000020,
4120  CLIENT_SNDOUTPUT_AUTO3DPOSITION = 0x00000040,
4124  CLIENT_VIDEOCAPTURE_READY = 0x00000080,
4127  CLIENT_TX_VOICE = 0x00000100,
4130  CLIENT_TX_VIDEOCAPTURE = 0x00000200,
4136  CLIENT_TX_DESKTOP = 0x00000400,
4141  CLIENT_DESKTOP_ACTIVE = 0x00000800,
4145  CLIENT_MUX_AUDIOFILE = 0x00001000,
4148  CLIENT_CONNECTING = 0x00002000,
4153  CLIENT_CONNECTED = 0x00004000,
4160  CLIENT_AUTHORIZED = 0x00008000,
4165  CLIENT_STREAM_AUDIO = 0x00010000,
4170  CLIENT_STREAM_VIDEO = 0x00020000
4171  }
4172 
4180  public abstract class TeamTalkBase : IDisposable
4181  {
4190  public const int TT_STRLEN = 512;
4191 
4193  public const int TT_USERID_MAX = 0xFFF;
4194 
4197  public const int TT_CHANNELID_MAX = 0xFFF;
4198 
4202  public const int TT_VIDEOFORMATS_MAX = 1024;
4203 
4209  public const int TT_TRANSMITUSERS_MAX = 128;
4210 
4218  public const int TT_CLASSROOM_FREEFORALL = 0xFFF;
4219 
4222  public const int TT_CLASSROOM_USERID_INDEX = 0;
4223 
4226  public const int TT_CLASSROOM_STREAMTYPE_INDEX = 1;
4227 
4230  public const int TT_TRANSMITUSERS_FREEFORALL = 0xFFF;
4231 
4234  public const int TT_TRANSMITUSERS_USERID_INDEX = 0;
4235 
4239 
4253  public const int TT_LOCAL_USERID = 0;
4254 
4262  public const int TT_LOCAL_TX_USERID = 0x1002;
4263 
4271  public const int TT_MUXED_USERID = 0x1001; /* TT_USERID_MAX + 2 */
4272 
4277  public const int TT_CHANNELS_OPERATOR_MAX = 16;
4278 
4282  public const int TT_TRANSMITQUEUE_MAX = 16;
4283 
4286  public const int TT_SAMPLERATES_MAX = 16;
4287 
4292  public const int TT_DESKTOPINPUT_MAX = 16;
4293 
4302  public const uint TT_MEDIAPLAYBACK_OFFSET_IGNORE = 0xFFFFFFFF;
4303 
4304 
4306  public static string GetVersion() { return Marshal.PtrToStringAuto(TTDLL.TT_GetVersion()); }
4307 
4318  protected TeamTalkBase(bool poll_based)
4319  {
4320  Assembly assembly = Assembly.GetExecutingAssembly();
4321  AssemblyName name = assembly.GetName();
4322  Version dllversion = new Version(Marshal.PtrToStringUni((c_tt.TTDLL.TT_GetVersion())));
4323  if (!name.Version.Equals(dllversion))
4324  {
4325  string errmsg = String.Format("Invalid {2} version loaded. {2} is version {0} and {3} is version {1}",
4326  dllversion.ToString(), name.Version.ToString(), c_tt.TTDLL.dllname, c_tt.TTDLL.mgtdllname);
4327 
4328  // throw new Exception(errmsg);
4329 
4330  System.Diagnostics.Debug.WriteLine(errmsg);
4331  }
4332 
4333  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__AUDIOCODEC) == Marshal.SizeOf(new AudioCodec()));
4334  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__BANNEDUSER) == Marshal.SizeOf(new BannedUser()));
4335  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__VIDEOFORMAT) == Marshal.SizeOf(new VideoFormat()));
4336  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__OPUSCODEC) == Marshal.SizeOf(new OpusCodec()));
4337  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__CHANNEL) == Marshal.SizeOf(new Channel()));
4338  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__CLIENTSTATISTICS) == Marshal.SizeOf(new ClientStatistics()));
4339  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__REMOTEFILE) == Marshal.SizeOf(new RemoteFile()));
4340  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__FILETRANSFER) == Marshal.SizeOf(new FileTransfer()));
4341  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__MEDIAFILESTATUS) == Marshal.SizeOf(Enum.GetUnderlyingType(typeof(MediaFileStatus))));
4342  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__SERVERPROPERTIES) == Marshal.SizeOf(new ServerProperties()));
4343  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__SERVERSTATISTICS) == Marshal.SizeOf(new ServerStatistics()));
4344  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__SOUNDDEVICE) == Marshal.SizeOf(new SoundDevice()));
4345  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__SPEEXCODEC) == Marshal.SizeOf(new SpeexCodec()));
4346  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__TEXTMESSAGE) == Marshal.SizeOf(new TextMessage()));
4347  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__WEBMVP8CODEC) == Marshal.SizeOf(new WebMVP8Codec()));
4348  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__TTMESSAGE) == Marshal.SizeOf(new TTMessage()));
4349  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__USER) == Marshal.SizeOf(new User()));
4350  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__USERACCOUNT) == Marshal.SizeOf(new UserAccount()));
4351  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__USERSTATISTICS) == Marshal.SizeOf(new UserStatistics()));
4352  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__VIDEOCAPTUREDEVICE) == Marshal.SizeOf(new VideoCaptureDevice()));
4353  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__VIDEOCODEC) == Marshal.SizeOf(new VideoCodec()));
4354  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__AUDIOCONFIG) == Marshal.SizeOf(new AudioConfig()));
4355  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__SPEEXVBRCODEC) == Marshal.SizeOf(new SpeexVBRCodec()));
4356  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__VIDEOFRAME) == Marshal.SizeOf(new VideoFrame()));
4357  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__AUDIOBLOCK) == Marshal.SizeOf(new AudioBlock()));
4358  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__AUDIOFORMAT) == Marshal.SizeOf(new AudioFormat()));
4359  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__MEDIAFILEINFO) == Marshal.SizeOf(new MediaFileInfo()));
4360  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__CLIENTERRORMSG) == Marshal.SizeOf(new ClientErrorMsg()));
4361  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__DESKTOPINPUT) == Marshal.SizeOf(new DesktopInput()));
4362  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__SPEEXDSP) == Marshal.SizeOf(new SpeexDSP()));
4363  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__STREAMTYPE) == Marshal.SizeOf(Enum.GetUnderlyingType(typeof(StreamType))));
4364  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__AUDIOPREPROCESSORTYPE) == Marshal.SizeOf(Enum.GetUnderlyingType(typeof(AudioPreprocessorType))));
4365  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__WEBRTCAUDIOPREPROCESSOR) == Marshal.SizeOf(new WebRTCAudioPreprocessor()));
4366  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__TTAUDIOPREPROCESSOR) == Marshal.SizeOf(new TTAudioPreprocessor()));
4367  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__AUDIOPREPROCESSOR) == Marshal.SizeOf(new AudioPreprocessor()));
4368  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__MEDIAFILEPLAYBACK) == Marshal.SizeOf(new MediaFilePlayback()));
4369  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__CLIENTKEEPALIVE) == Marshal.SizeOf(new ClientKeepAlive()));
4370  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__AUDIOINPUTPROGRESS) == Marshal.SizeOf(new AudioInputProgress()));
4371  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__JITTERCONFIG) == Marshal.SizeOf(new JitterConfig()));
4372  Debug.Assert(TTDLL.TT_DBG_SIZEOF(TTType.__ENCRYPTIONCONTEXT) == Marshal.SizeOf(new EncryptionContext()));
4373 
4374  if (poll_based)
4375  m_ttInst = TTDLL.TT_InitTeamTalkPoll();
4376  else
4377  {
4378  m_eventhandler = new MyEventHandler(this);
4379 #if PocketPC
4380  IntPtr hWnd = m_eventhandler.Hwnd;
4381 #else
4382  m_eventhandler.CreateControl();
4383  IntPtr hWnd = m_eventhandler.Handle;
4384 #endif
4385  m_ttInst = TTDLL.TT_InitTeamTalk(hWnd, MyEventHandler.WM_TEAMTALK_CLIENTEVENT);
4386  }
4387  }
4388 
4393  ~TeamTalkBase()
4394  {
4395  DeleteMe();
4396  }
4397 
4398 
4399  #region IDisposable Members
4400 
4401  public void Dispose()
4402  {
4403  DeleteMe();
4404  }
4405 
4406  private void DeleteMe()
4407  {
4408  if (m_ttInst != IntPtr.Zero)
4409  {
4410  TTDLL.TT_CloseTeamTalk(m_ttInst);
4411  m_ttInst = IntPtr.Zero;
4412  }
4413  }
4414 
4415  #endregion
4416 
4434  public bool GetMessage(ref TTMessage pMsg, int nWaitMs)
4435  {
4436  return TTDLL.TT_GetMessage(m_ttInst, ref pMsg, ref nWaitMs);
4437  }
4438 
4465  public bool PumpMessage(ClientEvent nClientEvent,
4466  int nIdentifier)
4467  {
4468  return TTDLL.TT_PumpMessage(m_ttInst, nClientEvent, nIdentifier);
4469  }
4470 
4479  public BearWare.ClientFlag GetFlags()
4480  {
4481  return TTDLL.TT_GetFlags(m_ttInst);
4482  }
4483 
4488  {
4489  get { return GetFlags(); }
4490  }
4491 
4501  public static bool SetLicenseInformation(string szRegName, string szRegKey)
4502  {
4503  return TTDLL.TT_SetLicenseInformation(szRegName, szRegKey);
4504  }
4505 
4510  public void ProcessMsg(TTMessage msg)
4511  {
4512  switch (msg.nClientEvent)
4513  {
4514  case ClientEvent.CLIENTEVENT_CON_SUCCESS:
4515  if(OnConnectionSuccess != null)
4517  break;
4518  case ClientEvent.CLIENTEVENT_CON_FAILED:
4519  if (OnConnectionFailed != null)
4521  break;
4522  case ClientEvent.CLIENTEVENT_CON_LOST:
4523  if (OnConnectionLost != null)
4524  OnConnectionLost();
4525  break;
4526  case ClientEvent.CLIENTEVENT_CON_MAX_PAYLOAD_UPDATED :
4527  if (OnConnectionMaxPayloadUpdated != null)
4529  break;
4530  case ClientEvent.CLIENTEVENT_CMD_PROCESSING:
4531  if (OnCmdProcessing != null)
4532  OnCmdProcessing(msg.nSource, (bool)msg.DataToObject());
4533  break;
4534  case ClientEvent.CLIENTEVENT_CMD_ERROR:
4535  if (OnCmdError != null)
4536  OnCmdError((int)msg.nSource, (ClientErrorMsg)msg.DataToObject());
4537  break;
4538  case ClientEvent.CLIENTEVENT_CMD_SUCCESS :
4539  if (OnCmdSuccess != null)
4540  OnCmdSuccess((int)msg.nSource);
4541  break;
4542  case ClientEvent.CLIENTEVENT_CMD_MYSELF_LOGGEDIN:
4543  if (OnCmdMyselfLoggedIn != null)
4545  break;
4546  case ClientEvent.CLIENTEVENT_CMD_MYSELF_LOGGEDOUT:
4547  if (OnCmdMyselfLoggedOut != null)
4549  break;
4550  case ClientEvent.CLIENTEVENT_CMD_MYSELF_KICKED:
4551  if (msg.ttType == TTType.__USER)
4552  {
4553  if (OnCmdMyselfKicked != null)
4555  }
4556  else if (OnCmdMyselfKicked != null)
4557  OnCmdMyselfKicked(new User());
4558  break;
4559  case ClientEvent.CLIENTEVENT_CMD_USER_LOGGEDIN:
4560  if (OnCmdUserLoggedIn != null)
4562  break;
4563  case ClientEvent.CLIENTEVENT_CMD_USER_LOGGEDOUT:
4564  if (OnCmdUserLoggedOut != null)
4566  break;
4567  case ClientEvent.CLIENTEVENT_CMD_USER_UPDATE:
4568  if (OnCmdUserUpdate != null)
4570  break;
4571  case ClientEvent.CLIENTEVENT_CMD_USER_JOINED:
4572  if (OnCmdUserJoinedChannel != null)
4574  break;
4575  case ClientEvent.CLIENTEVENT_CMD_USER_LEFT:
4576  if (OnCmdUserLeftChannel != null)
4578  break;
4579  case ClientEvent.CLIENTEVENT_CMD_USER_TEXTMSG:
4580  if (OnCmdUserTextMessage != null)
4582  break;
4583  case ClientEvent.CLIENTEVENT_CMD_CHANNEL_NEW:
4584  if (OnCmdChannelNew != null)
4586  break;
4587  case ClientEvent.CLIENTEVENT_CMD_CHANNEL_UPDATE:
4588  if (OnCmdChannelUpdate != null)
4590  break;
4591  case ClientEvent.CLIENTEVENT_CMD_CHANNEL_REMOVE:
4592  if (OnCmdChannelRemove != null)
4594  break;
4595  case ClientEvent.CLIENTEVENT_CMD_SERVER_UPDATE:
4596  if (OnCmdServerUpdate != null)
4598  break;
4599  case ClientEvent.CLIENTEVENT_CMD_SERVERSTATISTICS :
4600  if (OnCmdServerStatistics != null)
4602  break;
4603  case ClientEvent.CLIENTEVENT_CMD_FILE_NEW:
4604  if (OnCmdFileNew != null)
4606  break;
4607  case ClientEvent.CLIENTEVENT_CMD_FILE_REMOVE:
4608  if (OnCmdFileRemove != null)
4610  break;
4611  case ClientEvent.CLIENTEVENT_CMD_USERACCOUNT :
4612  if (OnCmdUserAccount != null)
4614  break;
4615  case ClientEvent.CLIENTEVENT_CMD_BANNEDUSER :
4616  if (OnCmdBannedUser != null)
4618  break;
4619 
4620  case ClientEvent.CLIENTEVENT_USER_STATECHANGE :
4621  if (OnUserStateChange != null)
4623  break;
4624  case ClientEvent.CLIENTEVENT_USER_VIDEOCAPTURE:
4625  if (OnUserVideoCapture != null)
4626  OnUserVideoCapture(msg.nSource, (int)msg.DataToObject());
4627  break;
4628  case ClientEvent.CLIENTEVENT_USER_MEDIAFILE_VIDEO:
4629  if (OnUserMediaFileVideo != null)
4630  OnUserMediaFileVideo((int)msg.nSource, (int)msg.DataToObject());
4631  break;
4632  case ClientEvent.CLIENTEVENT_USER_DESKTOPWINDOW:
4633  if (OnUserDesktopWindow != null)
4634  OnUserDesktopWindow((int)msg.nSource, (int)msg.DataToObject());
4635  break;
4636  case ClientEvent.CLIENTEVENT_USER_DESKTOPCURSOR:
4637  if (OnUserDesktopCursor != null)
4639  break;
4640  case ClientEvent.CLIENTEVENT_USER_DESKTOPINPUT :
4641  if (OnUserDesktopInput != null)
4643  break;
4644  case ClientEvent.CLIENTEVENT_USER_RECORD_MEDIAFILE :
4645  if(OnUserRecordMediaFile != null)
4647  break;
4648  case ClientEvent.CLIENTEVENT_USER_AUDIOBLOCK :
4649  if(OnUserAudioBlock != null)
4650  OnUserAudioBlock((int)msg.nSource, (StreamType)msg.DataToObject());
4651  break;
4652  case ClientEvent.CLIENTEVENT_INTERNAL_ERROR :
4653  if(OnInternalError!= null)
4655  break;
4656  case ClientEvent.CLIENTEVENT_VOICE_ACTIVATION :
4657  if(OnVoiceActivation != null)
4658  OnVoiceActivation((bool)msg.DataToObject());
4659  break;
4660  case ClientEvent.CLIENTEVENT_HOTKEY :
4661  if(OnHotKeyToggle != null)
4662  OnHotKeyToggle(msg.nSource, (bool)msg.DataToObject());
4663  break;
4664  case ClientEvent.CLIENTEVENT_HOTKEY_TEST :
4665  if(OnHotKeyTest != null)
4666  OnHotKeyTest(msg.nSource, (bool)msg.DataToObject());
4667  break;
4668  case ClientEvent.CLIENTEVENT_FILETRANSFER :
4669  if(OnFileTransfer != null)
4671  break;
4672  case ClientEvent.CLIENTEVENT_DESKTOPWINDOW_TRANSFER :
4673  if(OnDesktopWindowTransfer != null)
4674  OnDesktopWindowTransfer(msg.nSource, (int)msg.DataToObject());
4675  break;
4676  case ClientEvent.CLIENTEVENT_STREAM_MEDIAFILE :
4677  if(OnStreamMediaFile != null)
4679  break;
4680  case ClientEvent.CLIENTEVENT_LOCAL_MEDIAFILE:
4681  if (OnLocalMediaFile != null)
4683  break;
4684  case ClientEvent.CLIENTEVENT_AUDIOINPUT:
4685  if (OnAudioInput != null)
4687  break;
4688  case ClientEvent.CLIENTEVENT_USER_FIRSTVOICESTREAMPACKET:
4689  if (OnUserFirstVoiceStreamPacket != null)
4691  break;
4692  }
4693  }
4694 
4707  public static bool GetDefaultSoundDevices(ref int lpnInputDeviceID,
4708  ref int lpnOutputDeviceID)
4709  {
4710  return TTDLL.TT_GetDefaultSoundDevices(ref lpnInputDeviceID, ref lpnOutputDeviceID);
4711  }
4716  public static bool GetDefaultSoundDevicesEx(SoundSystem nSndSystem,
4717  ref int lpnInputDeviceID,
4718  ref int lpnOutputDeviceID)
4719  {
4720  return TTDLL.TT_GetDefaultSoundDevicesEx(nSndSystem, ref lpnInputDeviceID, ref lpnOutputDeviceID);
4721  }
4730  public static bool GetSoundDevices(out SoundDevice[] lpSoundDevices)
4731  {
4732  int count = 0;
4733  bool b = TTDLL.TT_GetSoundDevices_NULL(IntPtr.Zero, ref count);
4734  SoundDevice[] devs = new SoundDevice[count];
4735  b = TTDLL.TT_GetSoundDevices(devs, ref count);
4736  lpSoundDevices = b ? devs : null;
4737  return b;
4738  }
4754  public static bool RestartSoundSystem()
4755  {
4756  return TTDLL.TT_RestartSoundSystem();
4757  }
4762  public static IntPtr StartSoundLoopbackTest(int nInputDeviceID, int nOutputDeviceID,
4763  int nSampleRate, int nChannels,
4764  bool bDuplexMode, SpeexDSP lpSpeexDSP)
4765  {
4766  return TTDLL.TT_StartSoundLoopbackTest(nInputDeviceID, nOutputDeviceID,
4767  nSampleRate, nChannels, bDuplexMode,
4768  ref lpSpeexDSP);
4769  }
4801  public static IntPtr StartSoundLoopbackTest(int nInputDeviceID, int nOutputDeviceID,
4802  int nSampleRate, int nChannels,
4803  bool bDuplexMode, AudioPreprocessor lpAudioPreprocessor,
4804  BearWare.SoundDeviceEffects lpSoundDeviceEffects)
4805  {
4806  return TTDLL.TT_StartSoundLoopbackTestEx(nInputDeviceID, nOutputDeviceID,
4807  nSampleRate, nChannels, bDuplexMode,
4808  ref lpAudioPreprocessor, ref lpSoundDeviceEffects);
4809  }
4816  public static bool CloseSoundLoopbackTest(IntPtr lpTTSoundLoop)
4817  {
4818  return TTDLL.TT_CloseSoundLoopbackTest(lpTTSoundLoop);
4819  }
4848  public bool InitSoundInputDevice(int nInputDeviceID)
4849  {
4850  return TTDLL.TT_InitSoundInputDevice(m_ttInst, nInputDeviceID);
4851  }
4852 
4883  public bool InitSoundInputSharedDevice(int nSampleRate,int nChannels, int nFrameSize)
4884  {
4885  return TTDLL.TT_InitSoundInputSharedDevice(nSampleRate, nChannels, nFrameSize);
4886  }
4887 
4916  public bool InitSoundOutputDevice(int nOutputDeviceID)
4917  {
4918  return TTDLL.TT_InitSoundOutputDevice(m_ttInst, nOutputDeviceID);
4919  }
4950  public bool InitSoundOutputSharedDevice(int nSampleRate, int nChannels,int nFrameSize)
4951  {
4952  return TTDLL.TT_InitSoundOutputSharedDevice(nSampleRate, nChannels, nFrameSize);
4953  }
4987  public bool InitSoundDuplexDevices(int nInputDeviceID, int nOutputDeviceID)
4988  {
4989  return TTDLL.TT_InitSoundDuplexDevices(m_ttInst, nInputDeviceID, nOutputDeviceID);
4990  }
5011  {
5012  return TTDLL.TT_CloseSoundInputDevice(m_ttInst);
5013  }
5033  {
5034  return TTDLL.TT_CloseSoundOutputDevice(m_ttInst);
5035  }
5043  {
5044  return TTDLL.TT_CloseSoundDuplexDevices(m_ttInst);
5045  }
5081  public bool SetSoundDeviceEffects(SoundDeviceEffects lpSoundDeviceEffect)
5082  {
5083  return TTDLL.TT_SetSoundDeviceEffects(m_ttInst, ref lpSoundDeviceEffect);
5084  }
5089  public bool GetSoundDeviceEffects(ref SoundDeviceEffects lpSoundDeviceEffect)
5090  {
5091  return TTDLL.TT_GetSoundDeviceEffects(m_ttInst, ref lpSoundDeviceEffect);
5092  }
5109  public int GetSoundInputLevel()
5110  {
5111  return TTDLL.TT_GetSoundInputLevel(m_ttInst);
5112  }
5128  public bool SetSoundInputGainLevel(int nLevel)
5129  {
5130  return TTDLL.TT_SetSoundInputGainLevel(m_ttInst, nLevel);
5131  }
5139  {
5140  return TTDLL.TT_GetSoundInputGainLevel(m_ttInst);
5141  }
5142 
5158  public bool SetSoundInputPreprocess(SpeexDSP lpSpeexDSP)
5159  {
5160  return TTDLL.TT_SetSoundInputPreprocess(m_ttInst, ref lpSpeexDSP);
5161  }
5162 
5171  public bool GetSoundInputPreprocess(ref SpeexDSP lpSpeexDSP)
5172  {
5173  return TTDLL.TT_GetSoundInputPreprocess(m_ttInst, ref lpSpeexDSP);
5174  }
5186  public bool SetSoundInputPreprocess(AudioPreprocessor lpAudioPreprocessor)
5187  {
5188  return TTDLL.TT_SetSoundInputPreprocessEx(m_ttInst, ref lpAudioPreprocessor);
5189  }
5190 
5198  public bool GetSoundInputPreprocess(ref AudioPreprocessor lpAudioPreprocessor)
5199  {
5200  return TTDLL.TT_GetSoundInputPreprocessEx(m_ttInst, ref lpAudioPreprocessor);
5201  }
5209  public bool SetSoundOutputVolume(int nVolume)
5210  {
5211  return TTDLL.TT_SetSoundOutputVolume(m_ttInst, nVolume);
5212  }
5220  {
5221  return TTDLL.TT_GetSoundOutputVolume(m_ttInst);
5222  }
5230  public bool SetSoundOutputMute(bool bMuteAll)
5231  {
5232  return TTDLL.TT_SetSoundOutputMute(m_ttInst, bMuteAll);
5233  }
5241  public bool Enable3DSoundPositioning(bool bEnable)
5242  {
5243  return TTDLL.TT_Enable3DSoundPositioning(m_ttInst, bEnable);
5244  }
5251  public bool AutoPositionUsers()
5252  {
5253  return TTDLL.TT_AutoPositionUsers(m_ttInst);
5254  }
5255 
5319  public bool EnableAudioBlockEvent(int nUserID, StreamType uStreamTypes,
5320  bool bEnable)
5321  {
5322  return TTDLL.TT_EnableAudioBlockEvent(m_ttInst, nUserID, uStreamTypes, bEnable);
5323  }
5352  public bool EnableAudioBlockEvent(int nUserID, StreamType uStreamTypes,
5353  AudioFormat lpAudioFormat, bool bEnable)
5354  {
5355  return TTDLL.TT_EnableAudioBlockEventEx(m_ttInst, nUserID, uStreamTypes, ref lpAudioFormat, bEnable);
5356  }
5391  public bool InsertAudioBlock(AudioBlock lpAudioBlock)
5392  {
5393  return TTDLL.TT_InsertAudioBlock(m_ttInst, ref lpAudioBlock);
5394  }
5395 
5413  public bool EnableVoiceTransmission(bool bEnable)
5414  {
5415  return TTDLL.TT_EnableVoiceTransmission(m_ttInst, bEnable);
5416  }
5417 
5443  public bool EnableVoiceActivation(bool bEnable)
5444  {
5445  return TTDLL.TT_EnableVoiceActivation(m_ttInst, bEnable);
5446  }
5458  public bool SetVoiceActivationLevel(int nLevel)
5459  {
5460  return TTDLL.TT_SetVoiceActivationLevel(m_ttInst, nLevel);
5461  }
5469  {
5470  return TTDLL.TT_GetVoiceActivationLevel(m_ttInst);
5471  }
5484  public bool SetVoiceActivationStopDelay(int nDelayMSec)
5485  {
5486  return TTDLL.TT_SetVoiceActivationStopDelay(m_ttInst, nDelayMSec);
5487  }
5488 
5499  {
5500  return TTDLL.TT_GetVoiceActivationStopDelay(m_ttInst);
5501  }
5502 
5545  public bool StartRecordingMuxedAudioFile(AudioCodec lpAudioCodec,
5546  string szAudioFileName,
5547  AudioFileFormat uAFF)
5548  {
5549  return TTDLL.TT_StartRecordingMuxedAudioFile(m_ttInst,
5550  ref lpAudioCodec,
5551  szAudioFileName,
5552  uAFF);
5553  }
5554 
5574  public bool StartRecordingMuxedAudioFile(int nChannelID,
5575  string szAudioFileName,
5576  AudioFileFormat uAFF)
5577  {
5578  return TTDLL.TT_StartRecordingMuxedAudioFileEx(m_ttInst,
5579  nChannelID,
5580  szAudioFileName,
5581  uAFF);
5582  }
5583 
5584 
5616  public bool StartRecordingMuxedStreams(StreamType uStreamTypes,
5617  AudioCodec lpAudioCodec,
5618  string szAudioFileName,
5619  AudioFileFormat uAFF)
5620  {
5621  return TTDLL.TT_StartRecordingMuxedStreams(m_ttInst, uStreamTypes, ref lpAudioCodec, szAudioFileName, uAFF);
5622  }
5623 
5636  {
5637  return TTDLL.TT_StopRecordingMuxedAudioFile(m_ttInst);
5638  }
5639 
5646  public bool StopRecordingMuxedAudioFile(int nChannelID)
5647  {
5648  return TTDLL.TT_StopRecordingMuxedAudioFileEx(m_ttInst, nChannelID);
5649  }
5650 
5673  public bool StartVideoCaptureTransmission(VideoCodec lpVideoCodec)
5674  {
5675  return TTDLL.TT_StartVideoCaptureTransmission(m_ttInst, ref lpVideoCodec);
5676  }
5677 
5683  {
5684  return TTDLL.TT_StopVideoCaptureTransmission(m_ttInst);
5685  }
5686 
5698  public static bool GetVideoCaptureDevices(out VideoCaptureDevice[] lpVideoDevices)
5699  {
5700  //To speed up query we only query for a max of 25.
5701  //Hopefully no one has more than 25 capture devices.
5702  VideoCaptureDevice[] devs = new VideoCaptureDevice[25];
5703  int count = devs.Length;
5704  bool b = TTDLL.TT_GetVideoCaptureDevices(devs, ref count);
5705  if (b)
5706  {
5707  lpVideoDevices = new VideoCaptureDevice[count];
5708  for (int i = 0; i < count; i++)
5709  lpVideoDevices[i] = devs[i];
5710  }
5711  else lpVideoDevices = null;
5712 
5713  return b;
5714  }
5726  public bool InitVideoCaptureDevice(string szDeviceID,
5727  VideoFormat lpVideoFormat)
5728  {
5729  return TTDLL.TT_InitVideoCaptureDevice(m_ttInst, szDeviceID, ref lpVideoFormat);
5730  }
5736  {
5737  return TTDLL.TT_CloseVideoCaptureDevice(m_ttInst);
5738  }
5753  public bool PaintVideoFrame(int nUserID,
5754  System.IntPtr hDC,
5755  int XDest,
5756  int YDest,
5757  int nDestWidth,
5758  int nDestHeight,
5759  ref VideoFrame lpVideoFrame)
5760  {
5761  return TTDLL.TT_PaintVideoFrame(nUserID, hDC, XDest, YDest, nDestWidth,
5762  nDestHeight, ref lpVideoFrame);
5763  }
5764 
5796  public bool PaintVideoFrameEx(int nUserID,
5797  System.IntPtr hDC,
5798  int XDest,
5799  int YDest,
5800  int nDestWidth,
5801  int nDestHeight,
5802  int XSrc,
5803  int YSrc,
5804  int nSrcWidth,
5805  int nSrcHeight,
5806  ref VideoFrame lpVideoFrame)
5807  {
5808  return TTDLL.TT_PaintVideoFrameEx(nUserID, hDC, XDest, YDest, nDestWidth, nDestHeight,
5809  XSrc, YSrc, nSrcWidth, nSrcHeight,
5810  ref lpVideoFrame);
5811  }
5812 
5831  public VideoFrame AcquireUserVideoCaptureFrame(int nUserID, out Bitmap bmp)
5832  {
5833  bmp = null;
5834  IntPtr ptr = TTDLL.TT_AcquireUserVideoCaptureFrame(m_ttInst, nUserID);
5835  if(ptr == IntPtr.Zero)
5836  return new VideoFrame();
5837 
5838  VideoFrame frm = (VideoFrame)Marshal.PtrToStructure(ptr, typeof(VideoFrame));
5839  vidcapframes.Add(frm.frameBuffer, ptr);
5840 
5841  PixelFormat pixelformat = PixelFormat.Format32bppRgb;
5842  bmp = new Bitmap(frm.nWidth, frm.nHeight, frm.nWidth*4, pixelformat, frm.frameBuffer);
5843  return frm;
5844  }
5845 
5846  Dictionary<IntPtr, IntPtr> vidcapframes = new Dictionary<IntPtr, IntPtr>();
5847 
5855  public bool ReleaseUserVideoCaptureFrame(VideoFrame lpVideoFrame)
5856  {
5857  IntPtr ptr;
5858  if (vidcapframes.TryGetValue(lpVideoFrame.frameBuffer, out ptr))
5859  {
5860  vidcapframes.Remove(lpVideoFrame.frameBuffer);
5861  return TTDLL.TT_ReleaseUserVideoCaptureFrame(m_ttInst, ptr);
5862  }
5863  return false;
5864  }
5865 
5878  /*
5879  public bool GetUserVideoFrame(int nUserID,
5880  ref System.Drawing.Bitmap lpPicture)
5881  {
5882  CaptureFormat cap;
5883  if (!TTDLL.TT_GetUserVideoFrame(m_ttInst, nUserID, IntPtr.Zero, 0, out cap))
5884  return false;
5885 
5886  PixelFormat pixelformat = PixelFormat.Format32bppRgb;
5887 
5888  if (lpPicture == null ||
5889  lpPicture.Width != cap.nWidth ||
5890  lpPicture.Height != cap.nHeight
5891 #if PocketPC
5892  )
5893 #else
5894  || lpPicture.PixelFormat != pixelformat)
5895 #endif
5896  {
5897  lpPicture = new Bitmap(cap.nWidth, cap.nHeight,
5898  pixelformat);
5899  }
5900 
5901  // Lock the bitmap's bits.
5902  System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, lpPicture.Width, lpPicture.Height);
5903  BitmapData bmpData = lpPicture.LockBits(rect, ImageLockMode.ReadWrite, pixelformat);
5904 
5905  // Get the address of the first line.
5906  IntPtr ptr = bmpData.Scan0;
5907 
5908  bool b = TTDLL.TT_GetUserVideoFrame(m_ttInst, nUserID, ptr,
5909  cap.nWidth * cap.nHeight * 4, out cap);
5910  // Unlock the bits.
5911  lpPicture.UnlockBits(bmpData);
5912  return b;
5913  }
5914  * */
5915 
5923  public bool StartStreamingMediaFileToChannel(string szMediaFilePath,
5924  VideoCodec lpVideoCodec)
5925  {
5926  return TTDLL.TT_StartStreamingMediaFileToChannel(m_ttInst, szMediaFilePath,
5927  ref lpVideoCodec);
5928  }
5929 
5959  public bool StartStreamingMediaFileToChannel(string szMediaFilePath,
5960  MediaFilePlayback lpMediaFilePlayback,
5961  VideoCodec lpVideoCodec)
5962  {
5963  return TTDLL.TT_StartStreamingMediaFileToChannelEx(m_ttInst, szMediaFilePath,
5964  ref lpMediaFilePlayback,
5965  ref lpVideoCodec);
5966  }
5967 
5984  public bool UpdateStreamingMediaFileToChannel(MediaFilePlayback lpMediaFilePlayback,
5985  VideoCodec lpVideoCodec)
5986  {
5987  return TTDLL.TT_UpdateStreamingMediaFileToChannel(m_ttInst, ref lpMediaFilePlayback, ref lpVideoCodec);
5988  }
5989 
5998  {
5999  return TTDLL.TT_StopStreamingMediaFileToChannel(m_ttInst);
6000  }
6001 
6026  public int InitLocalPlayback(string szMediaFilePath, MediaFilePlayback lpMediaFilePlayback)
6027  {
6028  return TTDLL.TT_InitLocalPlayback(m_ttInst, szMediaFilePath, ref lpMediaFilePlayback);
6029  }
6030 
6042  public bool UpdateLocalPlayback(int nPlaybackSessionID,
6043  MediaFilePlayback lpMediaFilePlayback)
6044  {
6045  return TTDLL.TT_UpdateLocalPlayback(m_ttInst, nPlaybackSessionID, ref lpMediaFilePlayback);
6046  }
6047 
6056  public bool StopLocalPlayback(int nPlaybackSessionID)
6057  {
6058  return TTDLL.TT_StopLocalPlayback(m_ttInst, nPlaybackSessionID);
6059  }
6060 
6068  public static bool GetMediaFileInfo(string szMediaFilePath,
6069  ref MediaFileInfo lpMediaFileInfo)
6070  {
6071  return TTDLL.TT_GetMediaFileInfo(szMediaFilePath, ref lpMediaFileInfo);
6072  }
6073 
6093  public VideoFrame AcquireUserMediaVideoFrame(int nUserID, out Bitmap bmp)
6094  {
6095  bmp = null;
6096  IntPtr ptr = TTDLL.TT_AcquireUserMediaVideoFrame(m_ttInst, nUserID);
6097  if (ptr == IntPtr.Zero)
6098  return new VideoFrame();
6099 
6100  VideoFrame frm = (VideoFrame)Marshal.PtrToStructure(ptr, typeof(VideoFrame));
6101  mediaframes.Add(frm.frameBuffer, ptr);
6102 
6103  PixelFormat pixelformat = PixelFormat.Format32bppRgb;
6104  bmp = new Bitmap(frm.nWidth, frm.nHeight, frm.nWidth * 4, pixelformat, frm.frameBuffer);
6105  return frm;
6106  }
6107 
6115  public bool ReleaseUserMediaVideoFrame(VideoFrame lpVideoFrame)
6116  {
6117  IntPtr ptr;
6118  if (mediaframes.TryGetValue(lpVideoFrame.frameBuffer, out ptr))
6119  {
6120  mediaframes.Remove(lpVideoFrame.frameBuffer);
6121  return TTDLL.TT_ReleaseUserMediaVideoFrame(m_ttInst, ptr);
6122  }
6123  return false;
6124  }
6125 
6126  Dictionary<IntPtr, IntPtr> mediaframes = new Dictionary<IntPtr, IntPtr>();
6127 
6170  public int SendDesktopWindow(DesktopWindow lpDesktopWindow,
6171  BitmapFormat nConvertBmpFormat)
6172  {
6173  return TTDLL.TT_SendDesktopWindow(m_ttInst, ref lpDesktopWindow, nConvertBmpFormat);
6174  }
6175 
6183  public bool CloseDesktopWindow()
6184  {
6185  return TTDLL.TT_CloseDesktopWindow(m_ttInst);
6186  }
6187 
6204  public static System.Drawing.Color Palette_GetColorTable(BitmapFormat nBmpPalette,
6205  int nIndex)
6206  {
6207  IntPtr ptr = TTDLL.TT_Palette_GetColorTable(nBmpPalette, nIndex);
6208  switch(nBmpPalette)
6209  {
6210  case BitmapFormat.BMP_RGB8_PALETTE:
6211  return Color.FromArgb(Marshal.ReadInt32(ptr));
6212  }
6213  return new Color();
6214  }
6215 
6226  public int SendDesktopWindowFromHWND(System.IntPtr hWnd,
6227  BitmapFormat nBitmapFormat,
6228  DesktopProtocol nDesktopProtocol)
6229  {
6230  return TTDLL.TT_SendDesktopWindowFromHWND(m_ttInst, hWnd, nBitmapFormat, nDesktopProtocol);
6231  }
6232 
6247  public bool PaintDesktopWindow(int nUserID,
6248  System.IntPtr hDC,
6249  int XDest,
6250  int YDest,
6251  int nDestWidth,
6252  int nDestHeight)
6253  {
6254  return TTDLL.TT_PaintDesktopWindow(m_ttInst, nUserID, hDC, XDest, YDest, nDestWidth, nDestHeight);
6255  }
6256 
6289  public bool PaintDesktopWindowEx(int nUserID,
6290  System.IntPtr hDC,
6291  int XDest,
6292  int YDest,
6293  int nDestWidth,
6294  int nDestHeight,
6295  int XSrc,
6296  int YSrc,
6297  int nSrcWidth,
6298  int nSrcHeight)
6299  {
6300  return TTDLL.TT_PaintDesktopWindowEx(m_ttInst, nUserID, hDC, XDest,
6301  YDest, nDestWidth, nDestHeight,
6302  XSrc, YSrc, nSrcWidth, nSrcHeight);
6303  }
6304 
6317  public bool SendDesktopCursorPosition(ushort nPosX,
6318  ushort nPosY)
6319  {
6320  return TTDLL.TT_SendDesktopCursorPosition(m_ttInst, nPosX, nPosY);
6321  }
6322 
6346  public bool SendDesktopInput(int nUserID,
6347  DesktopInput[] lpDesktopInputs)
6348  {
6349  return TTDLL.TT_SendDesktopInput(m_ttInst, nUserID, lpDesktopInputs, lpDesktopInputs.Length);
6350  }
6351 
6376  {
6377  IntPtr ptr = TTDLL.TT_AcquireUserDesktopWindow(m_ttInst, nUserID);
6378  if (ptr == IntPtr.Zero)
6379  return new DesktopWindow();
6380  DesktopWindow lpDesktopWindow = (DesktopWindow)Marshal.PtrToStructure(ptr, typeof(DesktopWindow));
6381  desktopwindows.Add(lpDesktopWindow.frameBuffer, ptr);
6382  return lpDesktopWindow;
6383  }
6384 
6391  public DesktopWindow AcquireUserDesktopWindowEx(int nUserID, BitmapFormat nBitmapFormat)
6392  {
6393  IntPtr ptr = TTDLL.TT_AcquireUserDesktopWindowEx(m_ttInst, nUserID, nBitmapFormat);
6394  if (ptr == IntPtr.Zero)
6395  return new DesktopWindow();
6396  DesktopWindow lpDesktopWindow = (DesktopWindow)Marshal.PtrToStructure(ptr, typeof(DesktopWindow));
6397  desktopwindows.Add(lpDesktopWindow.frameBuffer, ptr);
6398  return lpDesktopWindow;
6399  }
6400 
6401  Dictionary<IntPtr, IntPtr> desktopwindows = new Dictionary<IntPtr, IntPtr>();
6404  public bool ReleaseUserDesktopWindow(DesktopWindow lpDesktopWindow)
6405  {
6406  IntPtr ptr;
6407  if (desktopwindows.TryGetValue(lpDesktopWindow.frameBuffer, out ptr))
6408  {
6409  desktopwindows.Remove(lpDesktopWindow.frameBuffer);
6410  return TTDLL.TT_ReleaseUserDesktopWindow(m_ttInst, ptr);
6411  }
6412  return false;
6413  }
6414 
6431  public bool SetEncryptionContext(EncryptionContext lpEncryptionContext)
6432  {
6433  return TTDLL.TT_SetEncryptionContext(m_ttInst, ref lpEncryptionContext);
6434  }
6435 
6464  public bool Connect(string szHostAddress,
6465  int nTcpPort,
6466  int nUdpPort,
6467  int nLocalTcpPort,
6468  int nLocalUdpPort,
6469  bool bEncrypted)
6470  {
6471  return TTDLL.TT_Connect(m_ttInst, szHostAddress, nTcpPort, nUdpPort,
6472  nLocalTcpPort, nLocalUdpPort, bEncrypted);
6473  }
6474 
6498  public bool ConnectSysID(string szHostAddress,
6499  int nTcpPort,
6500  int nUdpPort,
6501  int nLocalTcpPort,
6502  int nLocalUdpPort,
6503  bool bEncrypted,
6504  string szSystemID)
6505  {
6506  return TTDLL.TT_ConnectSysID(m_ttInst, szHostAddress,
6507  nTcpPort, nUdpPort, nLocalTcpPort,
6508  nLocalUdpPort, bEncrypted, szSystemID);
6509  }
6510 
6531  public bool ConnectEx(string szHostAddress,
6532  int nTcpPort,
6533  int nUdpPort,
6534  string szBindIPAddr,
6535  int nLocalTcpPort,
6536  int nLocalUdpPort,
6537  bool bEncrypted)
6538  {
6539  return TTDLL.TT_ConnectEx(m_ttInst, szHostAddress, nTcpPort, nUdpPort,
6540  szBindIPAddr, nLocalTcpPort, nLocalUdpPort,
6541  bEncrypted);
6542  }
6543 
6548  public bool Disconnect()
6549  {
6550  return TTDLL.TT_Disconnect(m_ttInst);
6551  }
6561  public bool QueryMaxPayload(int nUserID)
6562  {
6563  return TTDLL.TT_QueryMaxPayload(m_ttInst, nUserID);
6564  }
6570  public bool GetClientStatistics(ref ClientStatistics lpClientStatistics)
6571  {
6572  return TTDLL.TT_GetClientStatistics(m_ttInst, ref lpClientStatistics);
6573  }
6574 
6589  public bool SetClientKeepAlive(ClientKeepAlive lpClientKeepAlive)
6590  {
6591  return TTDLL.TT_SetClientKeepAlive(m_ttInst, ref lpClientKeepAlive);
6592  }
6593 
6600  public bool GetClientKeepAlive(ref ClientKeepAlive lpClientKeepAlive)
6601  {
6602  return TTDLL.TT_GetClientKeepAlive(m_ttInst, ref lpClientKeepAlive);
6603  }
6626  public int DoPing()
6627  {
6628  return TTDLL.TT_DoPing(m_ttInst);
6629  }
6630 
6642  public int DoLogin(string szNickname, string szUsername, string szPassword)
6643  {
6644  return TTDLL.TT_DoLogin(m_ttInst, szNickname, szUsername, szPassword);
6645  }
6646 
6676  public int DoLoginEx(string szNickname, string szUsername, string szPassword,
6677  string szClientName)
6678  {
6679  return TTDLL.TT_DoLoginEx(m_ttInst, szNickname, szUsername, szPassword, szClientName);
6680  }
6694  public int DoLogout()
6695  {
6696  return TTDLL.TT_DoLogout(m_ttInst);
6697  }
6737  public int DoJoinChannel(Channel lpChannel)
6738  {
6739  return TTDLL.TT_DoJoinChannel(m_ttInst, ref lpChannel);
6740  }
6764  public int DoJoinChannelByID(int nChannelID, string szPassword)
6765  {
6766  return TTDLL.TT_DoJoinChannelByID(m_ttInst, nChannelID, szPassword);
6767  }
6787  public int DoLeaveChannel()
6788  {
6789  return TTDLL.TT_DoLeaveChannel(m_ttInst);
6790  }
6808  public int DoChangeNickname(string szNewNick)
6809  {
6810  return TTDLL.TT_DoChangeNickname(m_ttInst, szNewNick);
6811  }
6831  public int DoChangeStatus(int nStatusMode, string szStatusMessage)
6832  {
6833  return TTDLL.TT_DoChangeStatus(m_ttInst, nStatusMode, szStatusMessage);
6834  }
6853  public int DoTextMessage(TextMessage lpTextMessage)
6854  {
6855  return TTDLL.TT_DoTextMessage(m_ttInst, ref lpTextMessage);
6856  }
6877  public int DoChannelOp(int nUserID, int nChannelID, bool bMakeOperator)
6878  {
6879  return TTDLL.TT_DoChannelOp(m_ttInst, nUserID, nChannelID, bMakeOperator);
6880  }
6900  public int DoChannelOpEx(int nUserID,
6901  int nChannelID,
6902  string szOpPassword,
6903  bool bMakeOperator)
6904  {
6905  return TTDLL.TT_DoChannelOpEx(m_ttInst, nUserID, nChannelID, szOpPassword, bMakeOperator);
6906  }
6929  public int DoKickUser(int nUserID, int nChannelID)
6930  {
6931  return TTDLL.TT_DoKickUser(m_ttInst, nUserID, nChannelID);
6932  }
6967  public int DoSendFile(int nChannelID, string szLocalFilePath)
6968  {
6969  return TTDLL.TT_DoSendFile(m_ttInst, nChannelID, szLocalFilePath);
6970  }
7000  public int DoRecvFile(int nChannelID, int nFileID, string szLocalFilePath)
7001  {
7002  return TTDLL.TT_DoRecvFile(m_ttInst, nChannelID, nFileID, szLocalFilePath);
7003  }
7026  public int DoDeleteFile(int nChannelID, int nFileID)
7027  {
7028  return TTDLL.TT_DoDeleteFile(m_ttInst, nChannelID, nFileID);
7029  }
7044  public int DoSubscribe(int nUserID, Subscription uSubscriptions)
7045  {
7046  return TTDLL.TT_DoSubscribe(m_ttInst, nUserID, uSubscriptions);
7047  }
7063  public int DoUnsubscribe(int nUserID, Subscription uSubscriptions)
7064  {
7065  return TTDLL.TT_DoUnsubscribe(m_ttInst, nUserID, uSubscriptions);
7066  }
7092  public int DoMakeChannel(Channel lpChannel)
7093  {
7094  return TTDLL.TT_DoMakeChannel(m_ttInst, ref lpChannel);
7095  }
7128  public int DoUpdateChannel(Channel lpChannel)
7129  {
7130  return TTDLL.TT_DoUpdateChannel(m_ttInst, ref lpChannel);
7131  }
7150  public int DoRemoveChannel(int nChannelID)
7151  {
7152  return TTDLL.TT_DoRemoveChannel(m_ttInst, nChannelID);
7153  }
7173  public int DoMoveUser(int nUserID, int nChannelID)
7174  {
7175  return TTDLL.TT_DoMoveUser(m_ttInst, nUserID, nChannelID);
7176  }
7193  public int DoUpdateServer(ServerProperties lpServerProperties)
7194  {
7195  return TTDLL.TT_DoUpdateServer(m_ttInst, ref lpServerProperties);
7196  }
7221  public int DoListUserAccounts(int nIndex, int nCount)
7222  {
7223  return TTDLL.TT_DoListUserAccounts(m_ttInst, nIndex, nCount);
7224  }
7247  public int DoNewUserAccount(UserAccount lpUserAccount)
7248  {
7249  return TTDLL.TT_DoNewUserAccount(m_ttInst, ref lpUserAccount);
7250  }
7269  public int DoDeleteUserAccount(string szUsername)
7270  {
7271  return TTDLL.TT_DoDeleteUserAccount(m_ttInst, szUsername);
7272  }
7300  public int DoBanUser(int nUserID, int nChannelID)
7301  {
7302  return TTDLL.TT_DoBanUser(m_ttInst, nUserID, nChannelID);
7303  }
7304 
7316  public int DoBanUserEx(int nUserID, BanType uBanTypes)
7317  {
7318  return TTDLL.TT_DoBanUserEx(m_ttInst, nUserID, uBanTypes);
7319  }
7320 
7339  public int DoBan(BannedUser lpBannedUser)
7340  {
7341  return TTDLL.TT_DoBan(m_ttInst, ref lpBannedUser);
7342  }
7343 
7364  public int DoBanIPAddress(string szIPAddress, int nChannelID)
7365  {
7366  return TTDLL.TT_DoBanIPAddress(m_ttInst, szIPAddress, nChannelID);
7367  }
7368 
7389  public int DoUnBanUser(string szIPAddress, int nChannelID)
7390  {
7391  return TTDLL.TT_DoUnBanUser(m_ttInst, szIPAddress, nChannelID);
7392  }
7393 
7403  public int DoUnBanUserEx(BannedUser lpBannedUser)
7404  {
7405  return TTDLL.TT_DoUnBanUserEx(m_ttInst, ref lpBannedUser);
7406  }
7407 
7428  public int DoListBans(int nChannelID, int nIndex, int nCount)
7429  {
7430  return TTDLL.TT_DoListBans(m_ttInst, nChannelID, nIndex, nCount);
7431  }
7449  public int DoSaveConfig()
7450  {
7451  return TTDLL.TT_DoSaveConfig(m_ttInst);
7452  }
7469  public int DoQueryServerStats()
7470  {
7471  return TTDLL.TT_DoQueryServerStats(m_ttInst);
7472  }
7485  public int DoQuit()
7486  {
7487  return TTDLL.TT_DoQuit(m_ttInst);
7488  }
7500  public bool GetServerProperties(ref ServerProperties lpServerProperties)
7501  {
7502  return TTDLL.TT_GetServerProperties(m_ttInst, ref lpServerProperties);
7503  }
7514  public bool GetServerUsers(out User[] lpUsers)
7515  {
7516  int count = 0;
7517  bool b = TTDLL.TT_GetServerUsers_NULL(m_ttInst, IntPtr.Zero, ref count);
7518  User[] users = new User[count];
7519  b = TTDLL.TT_GetServerUsers(m_ttInst, users, ref count);
7520  lpUsers = b ? users : null;
7521  return b;
7522  }
7535  public int GetRootChannelID()
7536  {
7537  return TTDLL.TT_GetRootChannelID(m_ttInst);
7538  }
7545  public int GetMyChannelID()
7546  {
7547  return TTDLL.TT_GetMyChannelID(m_ttInst);
7548  }
7552  public int ChannelID { get { return GetMyChannelID(); } }
7560  public bool GetChannel(int nChannelID, ref Channel lpChannel)
7561  {
7562  return TTDLL.TT_GetChannel(m_ttInst, nChannelID, ref lpChannel);
7563  }
7570  public bool GetChannelPath(int nChannelID, ref string szChannelPath)
7571  {
7572  IntPtr ptr = Marshal.AllocHGlobal(TeamTalkBase.TT_STRLEN * 2);
7573  bool b = TTDLL.TT_GetChannelPath(m_ttInst, nChannelID, ptr);
7574  if(b)
7575  szChannelPath = Marshal.PtrToStringUni(ptr);
7576  Marshal.FreeHGlobal(ptr);
7577  return b;
7578  }
7585  public int GetChannelIDFromPath(string szChannelPath)
7586  {
7587  return TTDLL.TT_GetChannelIDFromPath(m_ttInst, szChannelPath);
7588  }
7597  public bool GetChannelUsers(int nChannelID, out User[] lpUsers)
7598  {
7599  int count = 0;
7600  bool b = TTDLL.TT_GetChannelUsers_NULL(m_ttInst, nChannelID, IntPtr.Zero, ref count);
7601  User[] users = new User[count];
7602  b = TTDLL.TT_GetChannelUsers(m_ttInst, nChannelID, users, ref count);
7603  lpUsers = b ? users : null;
7604  return b;
7605  }
7614  public bool GetChannelFiles(int nChannelID, out RemoteFile[] lpRemoteFiles)
7615  {
7616  int count = 0;
7617  bool b = TTDLL.TT_GetChannelFiles_NULL(m_ttInst, nChannelID, IntPtr.Zero, ref count);
7618  RemoteFile[] files = new RemoteFile[count];
7619  b = TTDLL.TT_GetChannelFiles(m_ttInst, nChannelID, files, ref count);
7620  lpRemoteFiles = b ? files : null;
7621  return b;
7622  }
7630  public bool GetChannelFile(int nChannelID, int nFileID, ref RemoteFile lpRemoteFile)
7631  {
7632  return TTDLL.TT_GetChannelFile(m_ttInst, nChannelID, nFileID, ref lpRemoteFile);
7633  }
7640  public bool IsChannelOperator(int nUserID, int nChannelID)
7641  {
7642  return TTDLL.TT_IsChannelOperator(m_ttInst, nUserID, nChannelID);
7643  }
7650  public bool GetServerChannels(out Channel[] lpChannels)
7651  {
7652  int count = 0;
7653  bool b = TTDLL.TT_GetServerChannels_NULL(m_ttInst, IntPtr.Zero, ref count);
7654  Channel[] channels = new Channel[count];
7655  b = TTDLL.TT_GetServerChannels(m_ttInst, channels, ref count);
7656  lpChannels = b ? channels : null;
7657  return b;
7658  }
7672  public int GetMyUserID()
7673  {
7674  return TTDLL.TT_GetMyUserID(m_ttInst);
7675  }
7676 
7687  public bool GetMyUserAccount(ref UserAccount lpUserAccount)
7688  {
7689  return TTDLL.TT_GetMyUserAccount(m_ttInst, ref lpUserAccount);
7690  }
7691 
7695  public int UserID { get { return GetMyUserID(); } }
7696 
7708  {
7709  return TTDLL.TT_GetMyUserType(m_ttInst);
7710  }
7711 
7715  public BearWare.UserType UserType { get { return GetMyUserType(); } }
7716 
7720  public BearWare.UserRight UserRights { get { return GetMyUserRights(); } }
7721 
7723  public BearWare.UserRight GetMyUserRights()
7724  {
7725  return TTDLL.TT_GetMyUserRights(m_ttInst);
7726  }
7727 
7737  public int GetMyUserData()
7738  {
7739  return TTDLL.TT_GetMyUserData(m_ttInst);
7740  }
7741 
7745  public int UserData { get { return GetMyUserData(); } }
7746 
7753  public bool GetUser(int nUserID, ref User lpUser)
7754  {
7755  return TTDLL.TT_GetUser(m_ttInst, nUserID, ref lpUser);
7756  }
7762  public bool GetUserStatistics(int nUserID, ref UserStatistics lpUserStatistics)
7763  {
7764  return TTDLL.TT_GetUserStatistics(m_ttInst, nUserID, ref lpUserStatistics);
7765  }
7774  public bool GetUserByUsername(string szUsername, ref User lpUser)
7775  {
7776  return TTDLL.TT_GetUserByUsername(m_ttInst, szUsername, ref lpUser);
7777  }
7794  public bool SetUserVolume(int nUserID, StreamType nStreamType, int nVolume)
7795  {
7796  return TTDLL.TT_SetUserVolume(m_ttInst, nUserID, nStreamType, nVolume);
7797  }
7809  public bool SetUserMute(int nUserID, StreamType nStreamType, bool bMute)
7810  {
7811  return TTDLL.TT_SetUserMute(m_ttInst, nUserID, nStreamType, bMute);
7812  }
7825  public bool SetUserStoppedPlaybackDelay(int nUserID,
7826  StreamType nStreamType,
7827  int nDelayMSec)
7828  {
7829  return TTDLL.TT_SetUserStoppedPlaybackDelay(m_ttInst, nUserID, nStreamType, nDelayMSec);
7830  }
7831 
7856  public bool SetUserJitterControl(int nUserID,
7857  StreamType nStreamType,
7858  JitterConfig lpJitterConfig)
7859  {
7860  return TTDLL.TT_SetUserJitterControl(m_ttInst, nUserID, nStreamType, ref lpJitterConfig);
7861  }
7862 
7873  public bool GetUserJitterControl(int nUserID,
7874  StreamType nStreamType,
7875  ref JitterConfig lpJitterConfig)
7876  {
7877  return TTDLL.TT_GetUserJitterControl(m_ttInst, nUserID, nStreamType, ref lpJitterConfig);
7878  }
7879 
7891  public bool SetUserPosition(int nUserID, StreamType nStreamType,
7892  float x, float y, float z)
7893  {
7894  return TTDLL.TT_SetUserPosition(m_ttInst, nUserID, nStreamType, x, y, z);
7895  }
7907  public bool SetUserStereo(int nUserID, StreamType nStreamType, bool bLeftSpeaker, bool bRightSpeaker)
7908  {
7909  return TTDLL.TT_SetUserStereo(m_ttInst, nUserID, nStreamType, bLeftSpeaker, bRightSpeaker);
7910  }
7946  public bool SetUserMediaStorageDir(int nUserID, string szFolderPath, string szFileNameVars,
7947  AudioFileFormat uAFF)
7948  {
7949  return TTDLL.TT_SetUserMediaStorageDir(m_ttInst, nUserID, szFolderPath, szFileNameVars, uAFF);
7950  }
7951 
7976  public bool SetUserMediaStorageDir(int nUserID, string szFolderPath, string szFileNameVars,
7977  AudioFileFormat uAFF, int nStopRecordingExtraDelayMSec)
7978  {
7979  return TTDLL.TT_SetUserMediaStorageDirEx(m_ttInst, nUserID, szFolderPath, szFileNameVars, uAFF, nStopRecordingExtraDelayMSec);
7980  }
7981 
8006  public bool SetUserAudioStreamBufferSize(int nUserID, StreamType uStreamType,
8007  int nMSec)
8008  {
8009  return TTDLL.TT_SetUserAudioStreamBufferSize(m_ttInst, nUserID, uStreamType, nMSec);
8010  }
8030  public AudioBlock AcquireUserAudioBlock(StreamType uStreamTypes, int nUserID)
8031  {
8032  IntPtr ptr = TTDLL.TT_AcquireUserAudioBlock(m_ttInst, uStreamTypes, nUserID);
8033  if (ptr == IntPtr.Zero)
8034  return new AudioBlock();
8035  AudioBlock lpAudioBlock = (AudioBlock)Marshal.PtrToStructure(ptr, typeof(AudioBlock));
8036  audioblocks.Add(lpAudioBlock.lpRawAudio, ptr);
8037  return lpAudioBlock;
8038  }
8039 
8040  Dictionary<IntPtr, IntPtr> audioblocks = new Dictionary<IntPtr, IntPtr>();
8041 
8055  public bool ReleaseUserAudioBlock(AudioBlock lpAudioBlock)
8056  {
8057  IntPtr ptr;
8058  if (audioblocks.TryGetValue(lpAudioBlock.lpRawAudio, out ptr))
8059  {
8060  audioblocks.Remove(lpAudioBlock.lpRawAudio);
8061  return TTDLL.TT_ReleaseUserAudioBlock(m_ttInst, ptr);
8062  }
8063  return false;
8064  }
8078  public bool GetFileTransferInfo(int nTransferID, ref FileTransfer lpFileTransfer)
8079  {
8080  return TTDLL.TT_GetFileTransferInfo(m_ttInst, nTransferID, ref lpFileTransfer);
8081  }
8082 
8091  public bool CancelFileTranfer(int nTransferID)
8092  {
8093  return TTDLL.TT_CancelFileTransfer(m_ttInst, nTransferID);
8094  }
8095 
8106  public static string GetErrorMessage(ClientError nError)
8107  {
8108  IntPtr ptr = Marshal.AllocHGlobal(TeamTalkBase.TT_STRLEN * 2);
8109  TTDLL.TT_GetErrorMessage((int)nError, ptr);
8110  string s = Marshal.PtrToStringUni(ptr);
8111  Marshal.FreeHGlobal(ptr);
8112  return s;
8113  }
8114 
8141  public bool HotKey_Register(int nHotKeyID, int[] lpnVKCodes)
8142  {
8143  return TTDLL.TT_HotKey_Register(m_ttInst, nHotKeyID, lpnVKCodes, lpnVKCodes.Length);
8144  }
8150  public bool HotKey_Unregister(int nHotKeyID)
8151  {
8152  return TTDLL.TT_HotKey_Unregister(m_ttInst, nHotKeyID);
8153  }
8159  public int HotKey_IsActive(int nHotKeyID)
8160  {
8161  return TTDLL.TT_HotKey_IsActive(m_ttInst, nHotKeyID);
8162  }
8173  {
8174  if (m_eventhandler != null)
8175  {
8176 #if PocketPC
8177  IntPtr hWnd = m_eventhandler.Hwnd;
8178 #else
8179  IntPtr hWnd = m_eventhandler.Handle;
8180 #endif
8181  return TTDLL.TT_HotKey_InstallTestHook(m_ttInst, hWnd,
8182  MyEventHandler.WM_TEAMTALK_CLIENTEVENT);
8183  }
8184  return false;
8185  }
8192  {
8193  return TTDLL.TT_HotKey_RemoveTestHook(m_ttInst);
8194  }
8201  public bool HotKey_GetKeyString(int nVKCode, ref string szKeyName)
8202  {
8203  IntPtr ptr = Marshal.AllocHGlobal(TeamTalkBase.TT_STRLEN * 2);
8204  bool b = TTDLL.TT_HotKey_GetKeyString(m_ttInst, nVKCode, ptr);
8205  if(b)
8206  szKeyName = Marshal.PtrToStringUni(ptr);
8207  Marshal.FreeHGlobal(ptr);
8208  return b;
8209  }
8212  public bool DBG_SetSoundInputTone(StreamType uStreamTypes, int nFrequency)
8213  {
8214  return TTDLL.TT_DBG_SetSoundInputTone(m_ttInst, uStreamTypes, nFrequency);
8215  }
8216 
8217 
8218  public bool DBG_WriteAudioFileTone(MediaFileInfo lpMediaFileInfo,
8219  int nFrequency)
8220  {
8221  return TTDLL.TT_DBG_WriteAudioFileTone(ref lpMediaFileInfo, nFrequency);
8222  }
8223 
8230  public delegate void Connection();
8256 
8262  public delegate void MaxPayloadUpdate(int nPayloadSize);
8263 
8272 
8280  public delegate void CommandProcessing(int nCmdID, bool bActive);
8281 
8293 
8298  public delegate void CommandError(int nCmdID, ClientErrorMsg clienterrormsg);
8299 
8308  public event CommandError OnCmdError;
8309 
8313  public delegate void CommandSuccess(int nCmdID);
8314 
8323 
8329  public delegate void MyselfLoggedIn(int nMyUserID, UserAccount useraccount);
8330 
8340 
8342  public delegate void MyselfLoggedOut();
8351 
8357  public delegate void MyselfKicked(User user);
8364 
8369  public delegate void UserUpdate(User user);
8370 
8374  public delegate void UserStreamUpdate(User user, int nStreamID);
8375 
8384 
8394 
8400 
8406 
8412 
8418  public delegate void UserTextMessage(TextMessage textmessage);
8419 
8425 
8426 
8429  public delegate void ChannelUpdate(Channel channel);
8430 
8438 
8444 
8449 
8451  public delegate void ServerUpdate(ServerProperties serverproperties);
8452 
8459 
8461  public delegate void ServerStats(ServerStatistics serverstatistics);
8462 
8468 
8470  public delegate void FileUpdate(RemoteFile remotefile);
8471 
8476  public event FileUpdate OnCmdFileNew;
8477 
8483 
8485  public delegate void ListUserAccount(UserAccount useraccount);
8486 
8490 
8492  public delegate void ListBannedUser(BannedUser banneduser);
8493 
8497 
8503 
8508 
8510  public delegate void UserVideoFrame(int nUserID, int nStreamID);
8511 
8517 
8523 
8532  public delegate void NewDesktopWindow(int nUserID, int nStreamID);
8533 
8543 
8545  public delegate void UserDesktopInput(int nSrcUserID, DesktopInput desktopinput);
8546 
8553 
8560 
8562  public delegate void UserRecordMediaFile(int nUserID, MediaFileInfo mediafileinfo);
8563 
8569 
8571  public delegate void NewAudioBlock(int nUserID, StreamType nStreamType);
8572 
8583 
8585  public delegate void ErrorOccured(ClientErrorMsg clienterrormsg);
8586 
8592 
8595  public delegate void VoiceActivation(bool bVoiceActive);
8596 
8602 
8608  public delegate void HotKeyToggle(int nHotKeyID, bool bActive);
8609 
8619 
8624  public delegate void HotKeyTest(int nVkCode, bool bActive);
8625 
8642  public event HotKeyTest OnHotKeyTest;
8643 
8647  public delegate void FileTransferUpdate(FileTransfer filetransfer);
8648 
8661 
8671  public delegate void DesktopTransferUpdate(int nSessionID, int nBytesRemain);
8672 
8683 
8685  public delegate void StreamMediaFile(MediaFileInfo mediafileinfo);
8686 
8692 
8694  public delegate void LocalMediaFile(MediaFileInfo mediafileinfo);
8695 
8701 
8703  public delegate void AudioInput(AudioInputProgress aip);
8704 
8709  public event AudioInput OnAudioInput;
8710 
8713  //TTDLL instance
8714  private IntPtr m_ttInst;
8715  //TTDLL event handler
8716  c_tt.MyEventHandler m_eventhandler;
8717  }
8718 
8727  public class TeamTalk5 : TeamTalkBase
8728  {
8729  public const int DEFAULT_TCPPORT = 10333;
8730  public const int DEFAULT_UDPPORT = 10333;
8731 
8733  public TeamTalk5(bool poll_based)
8734  : base(poll_based)
8735  {
8736  }
8737  }
8738 
8745  {
8746  public const int DEFAULT_TCPPORT = 10443;
8747  public const int DEFAULT_UDPPORT = 10443;
8748 
8750  public TeamTalk5Pro(bool poll_based)
8751  : base(poll_based)
8752  {
8753  }
8754  }
8763  public enum TTKeyTranslate : uint
8764  {
8766  TTKEY_NO_TRANSLATE = 0,
8780  }
8781 
8803  public enum MixerControl : uint
8804  {
8806  WAVEOUT_WAVE,
8808 
8810  WAVEIN_LINEIN,
8812  }
8813 
8817  public class WindowsMixer
8818  {
8825  public static int GetMixerCount()
8826  {
8827  return TTDLL.TT_Mixer_GetMixerCount();
8828  }
8835  public static bool GetMixerName(int nMixerIndex,
8836  ref string szMixerName)
8837  {
8838  IntPtr ptr = Marshal.AllocHGlobal(TeamTalkBase.TT_STRLEN * 2);
8839  bool b = TTDLL.TT_Mixer_GetMixerName(nMixerIndex, ptr);
8840  if(b)
8841  szMixerName = Marshal.PtrToStringUni(ptr);
8842 
8843  Marshal.FreeHGlobal(ptr);
8844  return b;
8845  }
8853  public static bool GetWaveInName(int nWaveDeviceID,
8854  ref string szMixerName)
8855  {
8856  IntPtr ptr = Marshal.AllocHGlobal(TeamTalkBase.TT_STRLEN * 2);
8857  bool b = TTDLL.TT_Mixer_GetWaveInName(nWaveDeviceID, ptr);
8858  if(b)
8859  szMixerName = Marshal.PtrToStringUni(ptr);
8860  Marshal.FreeHGlobal(ptr);
8861  return b;
8862  }
8870  public static bool GetWaveOutName(int nWaveDeviceID,
8871  ref string szMixerName)
8872  {
8873  IntPtr ptr = Marshal.AllocHGlobal(TeamTalkBase.TT_STRLEN * 2);
8874  bool b = TTDLL.TT_Mixer_GetWaveOutName(nWaveDeviceID, ptr);
8875  if(b)
8876  szMixerName = Marshal.PtrToStringUni(ptr);
8877 
8878  Marshal.FreeHGlobal(ptr);
8879  return b;
8880  }
8881 
8892  public static bool SetWaveOutMute(int nWaveDeviceID, MixerControl nControl, bool bMute)
8893  {
8894  return TTDLL.TT_Mixer_SetWaveOutMute(nWaveDeviceID, nControl, bMute);
8895  }
8905  public static int GetWaveOutMute(int nWaveDeviceID, MixerControl nControl)
8906  {
8907  return TTDLL.TT_Mixer_GetWaveOutMute(nWaveDeviceID, nControl);
8908  }
8917  public static bool SetWaveOutVolume(int nWaveDeviceID, MixerControl nControl, int nVolume)
8918  {
8919  return TTDLL.TT_Mixer_SetWaveOutVolume(nWaveDeviceID, nControl, nVolume);
8920  }
8929  public static int GetWaveOutVolume(int nWaveDeviceID, MixerControl nControl)
8930  {
8931  return TTDLL.TT_Mixer_GetWaveOutVolume(nWaveDeviceID, nControl);
8932  }
8940  public static bool SetWaveInSelected(int nWaveDeviceID, MixerControl nControl)
8941  {
8942  return TTDLL.TT_Mixer_SetWaveInSelected(nWaveDeviceID, nControl);
8943  }
8952  public static int GetWaveInSelected(int nWaveDeviceID, MixerControl nControl)
8953  {
8954  return TTDLL.TT_Mixer_GetWaveInSelected(nWaveDeviceID, nControl);
8955  }
8964  public static bool SetWaveInVolume(int nWaveDeviceID, MixerControl nControl, int nVolume)
8965  {
8966  return TTDLL.TT_Mixer_SetWaveInVolume(nWaveDeviceID, nControl, nVolume);
8967  }
8976  public static int GetWaveInVolume(int nWaveDeviceID, MixerControl nControl)
8977  {
8978  return TTDLL.TT_Mixer_GetWaveInVolume(nWaveDeviceID, nControl);
8979  }
8986  public static bool SetWaveInBoost(int nWaveDeviceID, bool bEnable)
8987  {
8988  return TTDLL.TT_Mixer_SetWaveInBoost(nWaveDeviceID, bEnable);
8989  }
8996  public static int GetWaveInBoost(int nWaveDeviceID)
8997  {
8998  return TTDLL.TT_Mixer_GetWaveInBoost(nWaveDeviceID);
8999  }
9006  public static bool SetWaveInMute(int nWaveDeviceID, bool bEnable)
9007  {
9008  return TTDLL.TT_Mixer_SetWaveInMute(nWaveDeviceID, bEnable);
9009  }
9016  public static int GetWaveInMute(int nWaveDeviceID)
9017  {
9018  return TTDLL.TT_Mixer_GetWaveInMute(nWaveDeviceID);
9019  }
9028  public static int GetWaveInControlCount(int nWaveDeviceID)
9029  {
9030  return TTDLL.TT_Mixer_GetWaveInControlCount(nWaveDeviceID);
9031  }
9042  public static bool GetWaveInControlName(int nWaveDeviceID, int nControlIndex,
9043  ref string szDeviceName)
9044  {
9045  IntPtr ptr = Marshal.AllocHGlobal(TeamTalkBase.TT_STRLEN * 2);
9046  bool b = TTDLL.TT_Mixer_GetWaveInControlName(nWaveDeviceID, nControlIndex, ptr);
9047  if(b)
9048  szDeviceName = Marshal.PtrToStringUni(ptr);
9049  Marshal.FreeHGlobal(ptr);
9050  return b;
9051  }
9061  public static bool SetWaveInControlSelected(int nWaveDeviceID, int nControlIndex)
9062  {
9063  return TTDLL.TT_Mixer_SetWaveInControlSelected(nWaveDeviceID, nControlIndex);
9064  }
9074  public static bool GetWaveInControlSelected(int nWaveDeviceID, int nControlIndex)
9075  {
9076  return TTDLL.TT_Mixer_GetWaveInControlSelected(nWaveDeviceID, nControlIndex);
9077  }
9078  }
9087  public class WindowsFirewall
9088  {
9094  public static bool IsEnabled()
9095  {
9096  return TTDLL.TT_Firewall_IsEnabled();
9097  }
9107  public static bool Enable(bool bEnable)
9108  {
9109  return TTDLL.TT_Firewall_Enable(bEnable);
9110  }
9117  public static bool AppExceptionExists(string szExecutable)
9118  {
9119  return TTDLL.TT_Firewall_AppExceptionExists(szExecutable);
9120  }
9130  public static bool AddAppException(string szName, string szExecutable)
9131  {
9132  return TTDLL.TT_Firewall_AddAppException(szName, szExecutable);
9133  }
9143  public static bool RemoveAppException(string szExecutable)
9144  {
9145  return TTDLL.TT_Firewall_RemoveAppException(szExecutable);
9146  }
9147  }
9153  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
9154  public struct ShareWindow
9155  {
9157  public IntPtr hWnd;
9159  public int nWndX;
9161  public int nWndY;
9163  public int nWidth;
9165  public int nHeight;
9167  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = TeamTalkBase.TT_STRLEN)]
9168  public string szWindowTitle;
9169  }
9170 
9174  public class WindowsHelper
9175  {
9178  public static System.IntPtr GetDesktopActiveHWND()
9179  {
9180  return TTDLL.TT_Windows_GetDesktopActiveHWND();
9181  }
9182 
9184  public static System.IntPtr GetDesktopHWND()
9185  {
9186  return TTDLL.TT_Windows_GetDesktopHWND();
9187  }
9188 
9190  public static bool GetDesktopWindowHWND(int nIndex,
9191  ref System.IntPtr lpHWnd)
9192  {
9193  return TTDLL.TT_Windows_GetDesktopWindowHWND(nIndex, ref lpHWnd);
9194  }
9195 
9198  public static bool GetWindow(System.IntPtr hWnd,
9199  ref ShareWindow lpShareWindow)
9200  {
9201  return TTDLL.TT_Windows_GetWindow(hWnd, ref lpShareWindow);
9202  }
9203 
9223  public static int DesktopInputKeyTranslate(TTKeyTranslate nTranslate,
9224  DesktopInput[] lpDesktopInputs,
9225  out DesktopInput[] lpTranslatedDesktopInputs)
9226  {
9227  lpTranslatedDesktopInputs = new DesktopInput[lpDesktopInputs.Length];
9228  return TTDLL.TT_DesktopInput_KeyTranslate(nTranslate, lpDesktopInputs,
9229  lpTranslatedDesktopInputs,
9230  lpDesktopInputs.Length);
9231  }
9232 
9253  public static int DesktopInputExecute(DesktopInput[] lpDesktopInputs)
9254  {
9255  return TTDLL.TT_DesktopInput_Execute(lpDesktopInputs, lpDesktopInputs.Length);
9256  }
9257 
9258  }
9259 }
Class used to load TeamTalk5.dll and instantiate a TeamTalk client in TeamTalk 5 SDK Standard Edition...
Definition: TeamTalk.cs:8728
TeamTalk5(bool poll_based)
Simply calls TeamTalkBase.TeamTalkBase()
Definition: TeamTalk.cs:8733
const int DEFAULT_TCPPORT
Definition: TeamTalk.cs:8729
const int DEFAULT_UDPPORT
Definition: TeamTalk.cs:8730
Class used to load TeamTalk5Pro.dll and instantiate a TeamTalk client in TeamTalk 5 SDK Professional ...
Definition: TeamTalk.cs:8745
const int DEFAULT_UDPPORT
Definition: TeamTalk.cs:8747
const int DEFAULT_TCPPORT
Definition: TeamTalk.cs:8746
TeamTalk5Pro(bool poll_based)
Simply calls TeamTalkBase.TeamTalkBase()
Definition: TeamTalk.cs:8750
Abstract class which encapsulates the TeamTalk 5 client. Instantiate either BearWare....
Definition: TeamTalk.cs:4181
bool DBG_WriteAudioFileTone(MediaFileInfo lpMediaFileInfo, int nFrequency)
Definition: TeamTalk.cs:8218
bool DBG_SetSoundInputTone(StreamType uStreamTypes, int nFrequency)
Definition: TeamTalk.cs:8212
A wrapper for the Windows Firewall API.
Definition: TeamTalk.cs:9088
static bool Enable(bool bEnable)
Enable/disable the Windows Firewall.
Definition: TeamTalk.cs:9107
static bool RemoveAppException(string szExecutable)
Remove an application from the Windows Firewall exception list.
Definition: TeamTalk.cs:9143
static bool IsEnabled()
Check if the Windows Firewall is currently enabled.
Definition: TeamTalk.cs:9094
static bool AddAppException(string szName, string szExecutable)
Add an application to the Windows Firewall exception list.
Definition: TeamTalk.cs:9130
static bool AppExceptionExists(string szExecutable)
Check if an executable is already in the Windows Firewall exception list.
Definition: TeamTalk.cs:9117
Helper class for extracting Windows HWND handles and controlling mouse and keyboard.
Definition: TeamTalk.cs:9175
static bool GetWindow(System.IntPtr hWnd, ref ShareWindow lpShareWindow)
Get the properties of a window from its window handle (HWND).
Definition: TeamTalk.cs:9198
static bool GetDesktopWindowHWND(int nIndex, ref System.IntPtr lpHWnd)
Get the all the handles (HWND) of visible windows.
Definition: TeamTalk.cs:9190
static System.IntPtr GetDesktopActiveHWND()
Get the handle (HWND) of the window which is currently active (focused) on the Windows desktop.
Definition: TeamTalk.cs:9178
static int DesktopInputKeyTranslate(TTKeyTranslate nTranslate, DesktopInput[] lpDesktopInputs, out DesktopInput[] lpTranslatedDesktopInputs)
Translate platform key-code to and from TeamTalk's intermediate format.
Definition: TeamTalk.cs:9223
static int DesktopInputExecute(DesktopInput[] lpDesktopInputs)
Execute desktop (mouse or keyboard) input.
Definition: TeamTalk.cs:9253
static System.IntPtr GetDesktopHWND()
Get the handle (HWND) of the Windows desktop (full desktop).
Definition: TeamTalk.cs:9184
A wrapper for the Windows Mixer API.
Definition: TeamTalk.cs:8818
static bool SetWaveOutVolume(int nWaveDeviceID, MixerControl nControl, int nVolume)
Set the volume of a Windows Mixer Wave-Out device from the 'enum' of devices.
Definition: TeamTalk.cs:8917
static int GetWaveInVolume(int nWaveDeviceID, MixerControl nControl)
Get the volume of a Windows Mixer Wave-In device from the 'enum' of devices.
Definition: TeamTalk.cs:8976
static bool SetWaveOutMute(int nWaveDeviceID, MixerControl nControl, bool bMute)
Mute or unmute a Windows Mixer Wave-Out device from the 'enum' of devices.
Definition: TeamTalk.cs:8892
static bool GetWaveOutName(int nWaveDeviceID, ref string szMixerName)
Get the name of the mixer associated with a wave-out device.
Definition: TeamTalk.cs:8870
static bool SetWaveInControlSelected(int nWaveDeviceID, int nControlIndex)
Set the selected state of a Wave-In device in the Windows Mixer.
Definition: TeamTalk.cs:9061
static bool SetWaveInBoost(int nWaveDeviceID, bool bEnable)
Enable and disable microphone boost.
Definition: TeamTalk.cs:8986
static bool GetWaveInControlSelected(int nWaveDeviceID, int nControlIndex)
Get the selected state of a Wave-In device in the Windows Mixer.
Definition: TeamTalk.cs:9074
static bool GetWaveInName(int nWaveDeviceID, ref string szMixerName)
Get the name of the mixer associated with a wave-in device.
Definition: TeamTalk.cs:8853
static bool SetWaveInSelected(int nWaveDeviceID, MixerControl nControl)
Set the selected state of a Windows Mixer Wave-In device from the 'enum' of devices.
Definition: TeamTalk.cs:8940
static int GetWaveInBoost(int nWaveDeviceID)
See if microphone boost is enabled.
Definition: TeamTalk.cs:8996
static bool SetWaveInMute(int nWaveDeviceID, bool bEnable)
Mute/unmute microphone input.
Definition: TeamTalk.cs:9006
static int GetMixerCount()
Get the number of Windows Mixers available.
Definition: TeamTalk.cs:8825
static int GetWaveOutVolume(int nWaveDeviceID, MixerControl nControl)
Get the volume of a Windows Mixer Wave-Out device from the 'enum' of devices.
Definition: TeamTalk.cs:8929
static bool SetWaveInVolume(int nWaveDeviceID, MixerControl nControl, int nVolume)
Set the volume of a Windows Mixer Wave-In device from the 'enum' of devices.
Definition: TeamTalk.cs:8964
static int GetWaveInSelected(int nWaveDeviceID, MixerControl nControl)
Get the selected state of a Windows Mixer Wave-In device from the 'enum' of devices.
Definition: TeamTalk.cs:8952
static int GetWaveInMute(int nWaveDeviceID)
See if microphone is muted.
Definition: TeamTalk.cs:9016
static int GetWaveInControlCount(int nWaveDeviceID)
Get the number of Windows Mixer Wave-In devices.
Definition: TeamTalk.cs:9028
static int GetWaveOutMute(int nWaveDeviceID, MixerControl nControl)
Get the mute state of a Windows Mixer Wave-Out device from the 'enum' of devices.
Definition: TeamTalk.cs:8905
static bool GetWaveInControlName(int nWaveDeviceID, int nControlIndex, ref string szDeviceName)
Get the name of the Wave-In device with the specified index.
Definition: TeamTalk.cs:9042
static bool GetMixerName(int nMixerIndex, ref string szMixerName)
Get the name of a Windows Mixer based on its name.
Definition: TeamTalk.cs:8835
int GetRootChannelID()
Get the root channel's ID.
Definition: TeamTalk.cs:7535
const int TT_TRANSMITUSERS_STREAMTYPE_INDEX
Definition: TeamTalk.cs:4238
FileTransferStatus
Status of a file transfer.
Definition: TeamTalk.cs:2762
bool GetChannelFile(int nChannelID, int nFileID, ref RemoteFile lpRemoteFile)
Get information about a file which can be downloaded.
Definition: TeamTalk.cs:7630
const int TT_TRANSMITQUEUE_MAX
Definition: TeamTalk.cs:4282
int ChannelID
Same as GetMyChannelID().
Definition: TeamTalk.cs:7552
const int TT_CLASSROOM_STREAMTYPE_INDEX
Definition: TeamTalk.cs:4226
const int TT_CLASSROOM_FREEFORALL
Definition: TeamTalk.cs:4218
int GetChannelIDFromPath(string szChannelPath)
Get the channel ID of the supplied path. Channels are separated by '/'.
Definition: TeamTalk.cs:7585
const int TT_TRANSMITUSERS_USERID_INDEX
Definition: TeamTalk.cs:4234
ChannelType
The types of channels supported.
Definition: TeamTalk.cs:2523
bool IsChannelOperator(int nUserID, int nChannelID)
Check whether user is operator of a channel.
Definition: TeamTalk.cs:7640
int GetMyChannelID()
Get the channel which the local client instance is currently participating in.
Definition: TeamTalk.cs:7545
bool GetServerChannels(out Channel[] lpChannels)
Get all the channels on the server.
Definition: TeamTalk.cs:7650
bool GetChannelUsers(int nChannelID, out User[] lpUsers)
Get the IDs of all users in a channel.
Definition: TeamTalk.cs:7597
bool GetChannel(int nChannelID, ref Channel lpChannel)
Get the channel with a specific ID.
Definition: TeamTalk.cs:7560
const int TT_CLASSROOM_USERID_INDEX
Definition: TeamTalk.cs:4222
const int TT_TRANSMITUSERS_FREEFORALL
Definition: TeamTalk.cs:4230
bool GetChannelPath(int nChannelID, ref string szChannelPath)
Get the channel's path. Channels are separated by '/'.
Definition: TeamTalk.cs:7570
bool GetChannelFiles(int nChannelID, out RemoteFile[] lpRemoteFiles)
Get the list of the files in a channel which can be downloaded.
Definition: TeamTalk.cs:7614
const int TT_TRANSMITUSERS_MAX
The maximum number of users allowed to transmit when a BearWare.Channel is configured with BearWare....
Definition: TeamTalk.cs:4209
bool CancelFileTranfer(int nTransferID)
Cancel an active file transfer.
Definition: TeamTalk.cs:8091
bool GetFileTransferInfo(int nTransferID, ref FileTransfer lpFileTransfer)
Get information about an active file transfer.
Definition: TeamTalk.cs:8078
@ FILETRANSFER_ACTIVE
File transfer active.
@ FILETRANSFER_FINISHED
File transfer finished.
@ FILETRANSFER_ERROR
Error during file transfer.
@ CHANNEL_NO_VOICEACTIVATION
Don't allow voice transmission if it's trigged by voice activation.
@ CHANNEL_PERMANENT
A channel which persists even when the last user leaves the channel.
@ CHANNEL_OPERATOR_RECVONLY
Only channel operators (and administrators) will receive audio/video/desktop transmissions....
@ CHANNEL_DEFAULT
A default channel is a channel which disappears after the last user leaves the channel.
@ CHANNEL_CLASSROOM
Voice and video transmission in the channel is controlled by a channel operator.
@ CHANNEL_NO_RECORDING
Don't allow recording to files in the channel.
@ CHANNEL_SOLO_TRANSMIT
Only one user can transmit at a time.
@ CHANNEL_HIDDEN
Hidden channel which can only be seen with BearWare.UserRight.USERRIGHT_VIEW_HIDDEN_CHANNELS.
Codec
The codecs supported.
Definition: TeamTalk.cs:1520
AudioPreprocessorType
The types of supported audio preprocessors.
Definition: TeamTalk.cs:1428
@ WEBM_VP8_CODEC
WebM video codec.
@ SPEEX_VBR_CODEC
Speex audio codec in VBR mode, http://www.speex.org.
@ NO_CODEC
No codec specified.
@ SPEEX_CODEC
Speex audio codec, http://www.speex.org.
@ OPUS_CODEC
OPUS audio codec.
@ SPEEXDSP_AUDIOPREPROCESSOR
Use the BearWare.SpeexDSP audio preprocessor.
@ WEBRTC_AUDIOPREPROCESSOR
Use WebRTC's audio preprocessor from BearWare.WebRTCAudioPreprocessor. https://webrtc....
@ TEAMTALK_AUDIOPREPROCESSOR
Use TeamTalk's internal audio preprocessor BearWare.TTAudioPreprocessor.
@ NO_AUDIOPREPROCESSOR
Value for specifying that no audio preprocessing should occur.
int DoRecvFile(int nChannelID, int nFileID, string szLocalFilePath)
Download a file from the specified channel.
Definition: TeamTalk.cs:7000
int DoPing()
Ping server and wait for server to reply.
Definition: TeamTalk.cs:6626
int DoJoinChannel(Channel lpChannel)
Create a new channel and join it.
Definition: TeamTalk.cs:6737
int DoListBans(int nChannelID, int nIndex, int nCount)
Issue a command to list the banned users.
Definition: TeamTalk.cs:7428
int DoUnBanUser(string szIPAddress, int nChannelID)
Unban the user with the specified IP-address.
Definition: TeamTalk.cs:7389
int DoMoveUser(int nUserID, int nChannelID)
Issue command to move a user from one channel to another.
Definition: TeamTalk.cs:7173
int DoBanUser(int nUserID, int nChannelID)
Issue a ban command on a user in a specific channel.
Definition: TeamTalk.cs:7300
int DoChannelOpEx(int nUserID, int nChannelID, string szOpPassword, bool bMakeOperator)
Make another user operator of a channel using the szOpPassword of BearWare.Channel.
Definition: TeamTalk.cs:6900
int DoBanUserEx(int nUserID, BanType uBanTypes)
Ban the user with nUserID using the ban types specified.
Definition: TeamTalk.cs:7316
int DoChangeStatus(int nStatusMode, string szStatusMessage)
Change the client instance's currect status.
Definition: TeamTalk.cs:6831
int DoSendFile(int nChannelID, string szLocalFilePath)
Send a file to the specified channel.
Definition: TeamTalk.cs:6967
int DoLogin(string szNickname, string szUsername, string szPassword)
Same as DologinEx() but without the option to specify szClientName. Kept for backwards compatibility.
Definition: TeamTalk.cs:6642
int DoChannelOp(int nUserID, int nChannelID, bool bMakeOperator)
Make another user operator of a channel.
Definition: TeamTalk.cs:6877
int DoDeleteUserAccount(string szUsername)
Issue command to delete a user account on the server.
Definition: TeamTalk.cs:7269
int DoUnsubscribe(int nUserID, Subscription uSubscriptions)
Unsubscribe to user events/data. This can be used to ignore messages or voice data from a specific us...
Definition: TeamTalk.cs:7063
int DoQueryServerStats()
Get the server's current statistics.
Definition: TeamTalk.cs:7469
int DoMakeChannel(Channel lpChannel)
Make a new channel on the server.
Definition: TeamTalk.cs:7092
int DoKickUser(int nUserID, int nChannelID)
Kick user from either channel or server.
Definition: TeamTalk.cs:6929
int DoSaveConfig()
Save the server's current state to its settings file (typically the server's .xml file).
Definition: TeamTalk.cs:7449
int DoDeleteFile(int nChannelID, int nFileID)
Delete a file from a channel.
Definition: TeamTalk.cs:7026
int DoQuit()
Quit from server.
Definition: TeamTalk.cs:7485
int DoUpdateChannel(Channel lpChannel)
Update a channel's properties.
Definition: TeamTalk.cs:7128
int DoLeaveChannel()
Leave the current channel.
Definition: TeamTalk.cs:6787
int DoUnBanUserEx(BannedUser lpBannedUser)
Unban the properties specified in BearWare.BannedUser.
Definition: TeamTalk.cs:7403
int DoNewUserAccount(UserAccount lpUserAccount)
Issue command to create a new user account on the server.
Definition: TeamTalk.cs:7247
int DoSubscribe(int nUserID, Subscription uSubscriptions)
Subscribe to user events and/or data.
Definition: TeamTalk.cs:7044
int DoBanIPAddress(string szIPAddress, int nChannelID)
Issue a ban command on an IP-address user.
Definition: TeamTalk.cs:7364
int DoLoginEx(string szNickname, string szUsername, string szPassword, string szClientName)
Logon to a server.
Definition: TeamTalk.cs:6676
int DoBan(BannedUser lpBannedUser)
Ban the properties specified in lpBannedUser.
Definition: TeamTalk.cs:7339
int DoJoinChannelByID(int nChannelID, string szPassword)
Join an existing channel.
Definition: TeamTalk.cs:6764
int DoLogout()
Logout of the server.
Definition: TeamTalk.cs:6694
int DoChangeNickname(string szNewNick)
Change the client instance's nick name.
Definition: TeamTalk.cs:6808
int DoListUserAccounts(int nIndex, int nCount)
Issue command to list user accounts on the server.
Definition: TeamTalk.cs:7221
int DoUpdateServer(ServerProperties lpServerProperties)
Update server properties.
Definition: TeamTalk.cs:7193
int DoRemoveChannel(int nChannelID)
Remove a channel from a server.
Definition: TeamTalk.cs:7150
int DoTextMessage(TextMessage lpTextMessage)
Send a text message to either a user or a channel.
Definition: TeamTalk.cs:6853
bool Connect(string szHostAddress, int nTcpPort, int nUdpPort, int nLocalTcpPort, int nLocalUdpPort, bool bEncrypted)
Connect to a server.
Definition: TeamTalk.cs:6464
bool SetClientKeepAlive(ClientKeepAlive lpClientKeepAlive)
Update the client instance's default keep alive settings.
Definition: TeamTalk.cs:6589
bool ConnectSysID(string szHostAddress, int nTcpPort, int nUdpPort, int nLocalTcpPort, int nLocalUdpPort, bool bEncrypted, string szSystemID)
Same as Connect() but the option of providing a unique system-ID.
Definition: TeamTalk.cs:6498
bool GetClientStatistics(ref ClientStatistics lpClientStatistics)
Retrieve client statistics of bandwidth usage and response times.
Definition: TeamTalk.cs:6570
bool QueryMaxPayload(int nUserID)
Query the maximum size of UDP data packets to the user or server.
Definition: TeamTalk.cs:6561
bool ConnectEx(string szHostAddress, int nTcpPort, int nUdpPort, string szBindIPAddr, int nLocalTcpPort, int nLocalUdpPort, bool bEncrypted)
Bind to specific IP-address prior to connecting to server.
Definition: TeamTalk.cs:6531
bool SetEncryptionContext(EncryptionContext lpEncryptionContext)
Setup encryption properties prior to Connect().
Definition: TeamTalk.cs:6431
bool Disconnect()
Disconnect from the server.
Definition: TeamTalk.cs:6548
bool GetClientKeepAlive(ref ClientKeepAlive lpClientKeepAlive)
Get the client instance's current keep alive settings.
Definition: TeamTalk.cs:6600
const ushort DESKTOPINPUT_MOUSEPOS_IGNORE
Definition: TeamTalk.cs:877
DesktopWindow AcquireUserDesktopWindowEx(int nUserID, BitmapFormat nBitmapFormat)
Same as TeamTalkBase.AcquireUserDesktopWindow() except an extra option for converting bitmap to a dif...
Definition: TeamTalk.cs:6391
int SendDesktopWindow(DesktopWindow lpDesktopWindow, BitmapFormat nConvertBmpFormat)
Transmit a desktop window (bitmap) to users in the same channel.
Definition: TeamTalk.cs:6170
const uint DESKTOPINPUT_KEYCODE_IGNORE
Definition: TeamTalk.cs:868
TTKeyTranslate
Translate to and from TeamTalk's intermediate key-codes (TTKEYCODE).
Definition: TeamTalk.cs:8764
DesktopKeyState
The state of a key (or mouse button), i.e. if it's pressed or released.
Definition: TeamTalk.cs:804
DesktopWindow AcquireUserDesktopWindow(int nUserID)
Get a user's desktop window (bitmap image).
Definition: TeamTalk.cs:6375
bool PaintDesktopWindow(int nUserID, System.IntPtr hDC, int XDest, int YDest, int nDestWidth, int nDestHeight)
Paint user's desktop window using a Windows' DC (device context).
Definition: TeamTalk.cs:6247
int SendDesktopWindowFromHWND(System.IntPtr hWnd, BitmapFormat nBitmapFormat, DesktopProtocol nDesktopProtocol)
Transmit the specified window in a desktop session.
Definition: TeamTalk.cs:6226
const uint DESKTOPINPUT_KEYCODE_LMOUSEBTN
Definition: TeamTalk.cs:885
DesktopProtocol
The protocols supported for transferring a BearWare.DesktopWindow.
Definition: TeamTalk.cs:760
bool PaintDesktopWindowEx(int nUserID, System.IntPtr hDC, int XDest, int YDest, int nDestWidth, int nDestHeight, int XSrc, int YSrc, int nSrcWidth, int nSrcHeight)
Paint user's desktop window using a Windows' DC (device context).
Definition: TeamTalk.cs:6289
const uint DESKTOPINPUT_KEYCODE_RMOUSEBTN
Definition: TeamTalk.cs:893
bool CloseDesktopWindow()
Close the current desktop session.
Definition: TeamTalk.cs:6183
const int TT_DESKTOPINPUT_MAX
Definition: TeamTalk.cs:4292
bool SendDesktopInput(int nUserID, DesktopInput[] lpDesktopInputs)
Send a mouse or keyboard event to a shared desktop window.
Definition: TeamTalk.cs:6346
bool ReleaseUserDesktopWindow(DesktopWindow lpDesktopWindow)
Release memory allocated by the BearWare.DesktopWindow.
Definition: TeamTalk.cs:6404
BitmapFormat
The bitmap format used for a BearWare.DesktopWindow.
Definition: TeamTalk.cs:733
const uint DESKTOPINPUT_KEYCODE_MMOUSEBTN
Definition: TeamTalk.cs:901
bool SendDesktopCursorPosition(ushort nPosX, ushort nPosY)
Send the position of mouse cursor to users in the same channel.
Definition: TeamTalk.cs:6317
static System.Drawing.Color Palette_GetColorTable(BitmapFormat nBmpPalette, int nIndex)
Get RGB values of the palette for the bitmap format.
Definition: TeamTalk.cs:6204
@ TTKEY_MACKEYCODE_TO_TTKEYCODE
Translate from Mac OS X Carbon kVK_* key-code to TTKEYCODE. The Mac OS X key-codes are defined in Car...
@ TTKEY_TTKEYCODE_TO_WINKEYCODE
Translate from TTKEYCODE to Windows scan-code.
@ TTKEY_WINKEYCODE_TO_TTKEYCODE
Translate from Windows scan-code to TTKEYCODE. The Windows scan-code can be retrieved in Windows' WM_...
@ TTKEY_TTKEYCODE_TO_MACKEYCODE
Translate from TTKEYCODE to Mac OS X Carbon kVK_* key-code.
@ TTKEY_NO_TRANSLATE
Perform no translation.
@ DESKTOPKEYSTATE_DOWN
The key is pressed.
@ DESKTOPKEYSTATE_NONE
The key is ignored.
@ DESKTOPKEYSTATE_UP
The key is released.
@ DESKTOPPROTOCOL_ZLIB_1
Desktop protocol based on ZLIB for image compression and UDP for data transmission.
@ BMP_RGB8_PALETTE
The bitmap is a 256-colored bitmap requiring a palette. The default 256 colored palette is the Netsca...
@ BMP_RGB24
The bitmap is a 24-bit colored bitmap. The maximum size of a 24-bit bitmap is 4095 blocks of 85 by 16...
@ BMP_RGB32
The bitmap is a 32-bit colored bitmap. The maximum size of a 32-bit bitmap is 4095 blocks of 51 by 20...
@ BMP_NONE
Used to denote nothing selected.
@ BMP_RGB16_555
The bitmap is a 16-bit colored bitmap. The maximum pixels.
static string GetErrorMessage(ClientError nError)
Get textual discription of an error message.
Definition: TeamTalk.cs:8106
ClientError
Errors which can occur either as a result of client commands or as a result of internal errors.
Definition: TeamTalk.cs:3031
@ CMDERR_CHANNEL_ALREADY_EXISTS
Channel already exists.
@ CMDERR_MAX_DISKUSAGE_EXCEEDED
Cannot upload file because disk quota will be exceeded.
@ CMDERR_BAN_NOT_FOUND
Banned IP-address does not exist.
@ CMDERR_MISSING_PARAMETER
Command cannot be performed due to missing parameter. Only used internally.
@ INTERR_SNDEFFECT_FAILURE
BearWare.SoundDeviceEffects failed to initialize.
@ CMDERR_COMMAND_FLOOD
Command flooding prevented by server.
@ CMDERR_INCORRECT_OP_PASSWORD
Invalid password for becoming channel operator.
@ CMDERR_INCOMPATIBLE_PROTOCOLS
The server uses a protocol which is incompatible with the client instance.
@ CMDERR_CHANNEL_CANNOT_BE_HIDDEN
Cannot apply BearWare.ChannelType.CHANNEL_HIDDEN to BearWare.Channel's channel type.
@ CMDERR_OPENFILE_FAILED
Server failed to open file.
@ CMDERR_CHANNEL_BANNED
Banned from joining a channel.
@ CMDERR_SUCCESS
Command indicating success.
@ CMDERR_ALREADY_LOGGEDIN
Already logged in.
@ INTERR_TTMESSAGE_QUEUE_OVERFLOW
BearWare.TTMessage event queue overflowed.
@ CMDERR_INCORRECT_CHANNEL_PASSWORD
Invalid channel password.
@ CMDERR_MAX_SERVER_USERS_EXCEEDED
Login failed due to maximum number of users on server.
@ INTERR_SNDOUTPUT_FAILURE
A sound output device failed.
@ INTERR_AUDIOPREPROCESSOR_INIT_FAILED
BearWare.AudioPreprocessor failed to initialize.
@ CMDERR_INVALID_USERNAME
Invalid username for BearWare.UserAccount.
@ CMDERR_USER_NOT_FOUND
User not found.
@ CMDERR_AUDIOCODEC_BITRATE_LIMIT_EXCEEDED
The selected BearWare.AudioCodec exceeds what the server allows.
@ INTERR_AUDIOCODEC_INIT_FAILED
Audio codec used by channel failed to initialize. Ensure the settings specified in BearWare....
@ CMDERR_FILE_ALREADY_EXISTS
File already exist.
@ CMDERR_MAX_CHANNEL_USERS_EXCEEDED
Cannot join channel because it has maximum number of users.
@ CMDERR_FILE_NOT_FOUND
File does not exist.
@ INTERR_SNDINPUT_FAILURE
A sound input device failed.
@ CMDERR_NOT_LOGGEDIN
Client instance has not been authenticated.
@ CMDERR_SERVER_BANNED
IP-address has been banned from server.
@ CMDERR_ACCOUNT_NOT_FOUND
Cannot find user account.
@ CMDERR_SYNTAX_ERROR
Command has syntax error. Only used internally.
@ CMDERR_CHANNEL_HAS_USERS
Cannot process command since channel is not empty.
@ CMDERR_FILETRANSFER_NOT_FOUND
File transfer doesn't exists.
@ CMDERR_UNKNOWN_COMMAND
The server doesn't support the issued command.
@ CMDERR_ALREADY_IN_CHANNEL
Cannot join same channel twice.
@ CMDERR_FILESHARING_DISABLED
Server does not allow file transfers.
@ CMDERR_INVALID_ACCOUNT
Invalid username or password for account.
@ CMDERR_MAX_FILETRANSFERS_EXCEEDED
Maximum number of file transfers exceeded.
@ CMDERR_MAX_CHANNELS_EXCEEDED
The maximum number of channels has been exceeded.
@ CMDERR_UNKNOWN_AUDIOCODEC
The server does not support the audio codec specified by the client. Introduced in version 4....
@ INTERR_SPEEXDSP_INIT_FAILED
Same as BearWare.ClientError.INTERR_AUDIOPREPROCESSOR_INIT_FAILED.
@ CMDERR_MAX_LOGINS_PER_IPADDRESS_EXCEEDED
The maximum number of logins allowed per IP-address has been exceeded.
@ CMDERR_NOT_IN_CHANNEL
Cannot leave channel because not in channel.
@ CMDERR_CHANNEL_NOT_FOUND
Channel does not exist.
@ CMDERR_NOT_AUTHORIZED
Command not authorized.
@ CMDERR_LOGINSERVICE_UNAVAILABLE
The login service is currently unavailable.
@ CMDERR_INCORRECT_SERVER_PASSWORD
Invalid server password.
delegate void ServerStats(ServerStatistics serverstatistics)
Delegate for event OnCmdServerStatistics.
delegate void UserUpdate(User user)
Delegate for events OnCmdUserLoggedIn, OnCmdUserLoggedOut, OnCmdUserUpdate, OnCmdUserJoinedChannel an...
UserDesktopInput OnUserDesktopCursor
A user has sent the position of the mouse cursor.
Definition: TeamTalk.cs:8552
UserUpdate OnCmdUserJoinedChannel
A user has joined a channel.
Definition: TeamTalk.cs:8405
CommandProcessing OnCmdProcessing
A command issued by Do* methods is being processed.
Definition: TeamTalk.cs:8292
HotKeyTest OnHotKeyTest
A button was pressed or released on the user's keyboard or mouse.
Definition: TeamTalk.cs:8642
delegate void NewAudioBlock(int nUserID, StreamType nStreamType)
Delegate for event OnUserAudioBlock.
Connection OnConnectionLost
Connection to server has been lost.
Definition: TeamTalk.cs:8255
DesktopTransferUpdate OnDesktopWindowTransfer
Used for tracking when a desktop window has been transmitted to the server.
Definition: TeamTalk.cs:8682
delegate void UserRecordMediaFile(int nUserID, MediaFileInfo mediafileinfo)
Delegate for event OnUserRecordMediaFile.
CommandError OnCmdError
The server rejected a command issued by the local client instance.
Definition: TeamTalk.cs:8308
MaxPayloadUpdate OnConnectionMaxPayloadUpdated
The maximum size of the payload put into UDP packets has been updated.
Definition: TeamTalk.cs:8271
delegate void StreamMediaFile(MediaFileInfo mediafileinfo)
Delegate for event OnStreamMediaFile.
UserUpdate OnCmdUserUpdate
User changed properties.
Definition: TeamTalk.cs:8399
delegate void MyselfLoggedOut()
Delegate for event OnCmdMyselfLoggedOut.
delegate void CommandSuccess(int nCmdID)
Delegate for event CommandSuccess.
delegate void UserVideoFrame(int nUserID, int nStreamID)
A delegate for the event OnUserVideoCapture.
ChannelUpdate OnCmdChannelUpdate
A channel's properties has been updated.
Definition: TeamTalk.cs:8443
delegate void ErrorOccured(ClientErrorMsg clienterrormsg)
Delegate for event OnInternalError.
NewAudioBlock OnUserAudioBlock
A new audio block can be extracted.
Definition: TeamTalk.cs:8582
VoiceActivation OnVoiceActivation
Voice activation has triggered transmission.
Definition: TeamTalk.cs:8601
MyselfLoggedOut OnCmdMyselfLoggedOut
The client instance logged out of a server.
Definition: TeamTalk.cs:8350
MyselfLoggedIn OnCmdMyselfLoggedIn
The client instance successfully logged on to server.
Definition: TeamTalk.cs:8339
delegate void DesktopTransferUpdate(int nSessionID, int nBytesRemain)
Delegate for event OnDesktopWindowTransfer().
delegate void VoiceActivation(bool bVoiceActive)
Delegate for event OnVoiceActivation.
delegate void ServerUpdate(ServerProperties serverproperties)
Delegate for event OnCmdServerUpdate.
delegate void UserTextMessage(TextMessage textmessage)
Delegate for events OnCmdUserTextMessage.
HotKeyToggle OnHotKeyToggle
A hotkey has been acticated or deactivated.
Definition: TeamTalk.cs:8618
delegate void MyselfKicked(User user)
Delegate for event OnCmdMyselfKicked.
LocalMediaFile OnLocalMediaFile
Media file is being played locally.
Definition: TeamTalk.cs:8700
delegate void MaxPayloadUpdate(int nPayloadSize)
Delegate for event OnConnectionMaxPayloadUpdated().
UserTextMessage OnCmdUserTextMessage
A user has sent a text-message.
Definition: TeamTalk.cs:8424
delegate void ChannelUpdate(Channel channel)
Delegate for OnCmdChannelNew, OnCmdChannelUpdate and OnCmdChannelRemove.
delegate void HotKeyToggle(int nHotKeyID, bool bActive)
Delegate for event OnHotKeyToggle.
AudioInput OnAudioInput
Audio input progress as result of TeamTalkBase.InsertAudioBlock()
Definition: TeamTalk.cs:8709
Connection OnConnectionSuccess
Connected successfully to the server.
Definition: TeamTalk.cs:8239
UserUpdate OnCmdUserLoggedOut
A user logged out of the server.
Definition: TeamTalk.cs:8393
delegate void UserStreamUpdate(User user, int nStreamID)
Delegate for events OnUserFirstVoiceStreamPacket.
ErrorOccured OnInternalError
A internal error occured.
Definition: TeamTalk.cs:8591
CommandSuccess OnCmdSuccess
The server successfully processed a command issued by the local client instance.
Definition: TeamTalk.cs:8322
StreamMediaFile OnStreamMediaFile
Media file being streamed to a channel is processing.
Definition: TeamTalk.cs:8691
delegate void UserDesktopInput(int nSrcUserID, DesktopInput desktopinput)
Delegate for event OnUserDesktopCursor().
delegate void HotKeyTest(int nVkCode, bool bActive)
Delegate for event OnHotKeyTest.
MyselfKicked OnCmdMyselfKicked
The client instance was kicked from a channel.
Definition: TeamTalk.cs:8363
UserVideoFrame OnUserMediaFileVideo
A new video frame was received from a user.
Definition: TeamTalk.cs:8522
UserVideoFrame OnUserVideoCapture
A new video frame was received from a user.
Definition: TeamTalk.cs:8516
ChannelUpdate OnCmdChannelNew
A new channel has been created.
Definition: TeamTalk.cs:8437
delegate void FileTransferUpdate(FileTransfer filetransfer)
Delegate for event OnFileTransfer.
ListUserAccount OnCmdUserAccount
A new user account has been listed by the server. Event handler for BearWare.ClientEvent....
Definition: TeamTalk.cs:8489
UserStreamUpdate OnUserFirstVoiceStreamPacket
The first voice packet of a new voice stream has been received.
Definition: TeamTalk.cs:8502
FileUpdate OnCmdFileNew
A new file is added to a channel.
Definition: TeamTalk.cs:8476
delegate void NewDesktopWindow(int nUserID, int nStreamID)
Delegate for event OnUserDesktopWindow.
delegate void CommandProcessing(int nCmdID, bool bActive)
Delegate for event OnCmdProcessing.
ListBannedUser OnCmdBannedUser
A new banned user has been listed by the server. Event handler for BearWare.ClientEvent....
Definition: TeamTalk.cs:8496
delegate void AudioInput(AudioInputProgress aip)
Delegate for event OnAudioInput.
ServerStats OnCmdServerStatistics
Server statistics available.
Definition: TeamTalk.cs:8467
UserUpdate OnUserStateChange
A user's state has been updated.
Definition: TeamTalk.cs:8507
delegate void ListBannedUser(BannedUser banneduser)
A delegate for event OnCmdUserAccount.
UserRecordMediaFile OnUserRecordMediaFile
An media file recording has changed status.
Definition: TeamTalk.cs:8568
delegate void LocalMediaFile(MediaFileInfo mediafileinfo)
Delegate for event OnLocalMediaFile.
delegate void CommandError(int nCmdID, ClientErrorMsg clienterrormsg)
Delegate for event OnCmdError.
delegate void FileUpdate(RemoteFile remotefile)
A delegate for events OnCmdFileNew and OnCmdFileRemove.
ClientEvent
TeamTalk client event messages.
Definition: TeamTalk.cs:3352
delegate void ListUserAccount(UserAccount useraccount)
A delegate for event OnCmdUserAccount.
NewDesktopWindow OnUserDesktopWindow
A new or updated desktop window has been received from a user.
Definition: TeamTalk.cs:8542
UserUpdate OnCmdUserLoggedIn
A new user logged on to the server.
Definition: TeamTalk.cs:8383
FileUpdate OnCmdFileRemove
A file has been removed from a channel.
Definition: TeamTalk.cs:8482
ServerUpdate OnCmdServerUpdate
Server has updated its settings (server name, MOTD, etc.)
Definition: TeamTalk.cs:8458
UserUpdate OnCmdUserLeftChannel
User has left a channel.
Definition: TeamTalk.cs:8411
FileTransferUpdate OnFileTransfer
A file transfer is processing.
Definition: TeamTalk.cs:8660
Connection OnConnectionFailed
Failed to connect to server.
Definition: TeamTalk.cs:8247
delegate void Connection()
Delegate for events OnConnectionSuccess, OnConnectionFailed and OnConnectionLost.
UserDesktopInput OnUserDesktopInput
Desktop input (mouse or keyboard input) has been received from a user.
Definition: TeamTalk.cs:8559
ChannelUpdate OnCmdChannelRemove
A channel has been removed. Event handler for BearWare.ClientEvent.CLIENTEVENT_CMD_CHANNEL_REMOVE.
Definition: TeamTalk.cs:8448
delegate void MyselfLoggedIn(int nMyUserID, UserAccount useraccount)
Delegate for event OnCmdMyselfLoggedIn.
@ CLIENTEVENT_CMD_FILE_REMOVE
A file has been removed from a channel.
@ CLIENTEVENT_CMD_CHANNEL_UPDATE
A channel's properties has been updated.
@ CLIENTEVENT_USER_DESKTOPCURSOR
A user has sent the position of the mouse cursor.
@ CLIENTEVENT_STREAM_MEDIAFILE
Media file being streamed to a channel is processing.
@ CLIENTEVENT_CMD_SUCCESS
The server successfully processed a command issued by the local client instance.
@ CLIENTEVENT_CMD_MYSELF_KICKED
The client instance was kicked from a channel.
@ CLIENTEVENT_USER_STATECHANGE
A user state has changed.
@ CLIENTEVENT_CMD_MYSELF_LOGGEDOUT
The client instance logged out of the server.
@ CLIENTEVENT_FILETRANSFER
A file transfer is processing.
@ CLIENTEVENT_CMD_USER_JOINED
A user has joined a channel.
@ CLIENTEVENT_HOTKEY
A hotkey has been acticated or deactivated.
@ CLIENTEVENT_CMD_USER_UPDATE
User changed properties.
@ CLIENTEVENT_LOCAL_MEDIAFILE
Media file played locally is procesing.
@ CLIENTEVENT_HOTKEY_TEST
A button was pressed or released on the user's keyboard or mouse.
@ CLIENTEVENT_USER_AUDIOBLOCK
A new audio block can be extracted.
@ CLIENTEVENT_CON_MAX_PAYLOAD_UPDATED
The maximum size of the payload put into UDP packets has been updated.
@ CLIENTEVENT_USER_FIRSTVOICESTREAMPACKET
The first voice packet of a new voice stream has been received.
@ CLIENTEVENT_CMD_SERVER_UPDATE
Server has updated its settings (server name, MOTD, etc.)
@ CLIENTEVENT_USER_MEDIAFILE_VIDEO
A new video frame from a video media file was received from a user.
@ CLIENTEVENT_CON_LOST
Connection to server has been lost.
@ CLIENTEVENT_CMD_FILE_NEW
A new file is added to a channel.
@ CLIENTEVENT_USER_DESKTOPINPUT
Desktop input (mouse or keyboard input) has been received from a user.
@ CLIENTEVENT_CMD_MYSELF_LOGGEDIN
The client instance successfully logged on to server.
@ CLIENTEVENT_CON_SUCCESS
Connected successfully to the server.
@ CLIENTEVENT_USER_RECORD_MEDIAFILE
A media file recording has changed status.
@ CLIENTEVENT_USER_DESKTOPWINDOW
A new or updated desktop window has been received from a user.
@ CLIENTEVENT_CMD_ERROR
The server rejected a command issued by the local client instance.
@ CLIENTEVENT_AUDIOINPUT
Progress is audio being injected as BearWare.StreamType.STREAMTYPE_VOICE.
@ CLIENTEVENT_CMD_USER_LEFT
User has left a channel.
@ CLIENTEVENT_CMD_PROCESSING
A command issued by TeamTalkBase.Do* methods is being processed.
@ CLIENTEVENT_CMD_BANNEDUSER
A banned user has been received from the server.
@ CLIENTEVENT_CON_FAILED
Failed to connect to server.
@ CLIENTEVENT_CMD_CHANNEL_NEW
A new channel has been created.
@ CLIENTEVENT_CMD_SERVERSTATISTICS
Server statistics available.
@ CLIENTEVENT_USER_VIDEOCAPTURE
A new video frame from a video capture device was received from a user.
@ CLIENTEVENT_CMD_USERACCOUNT
A user account has been received from the server.
@ CLIENTEVENT_CMD_USER_TEXTMSG
A user has sent a text-message.
@ CLIENTEVENT_CMD_USER_LOGGEDOUT
A client logged out of the server.
@ CLIENTEVENT_INTERNAL_ERROR
An internal error occurred in the client instance.
@ CLIENTEVENT_CMD_USER_LOGGEDIN
A new user logged on to the server.
@ CLIENTEVENT_CMD_CHANNEL_REMOVE
A channel has been removed.
@ CLIENTEVENT_VOICE_ACTIVATION
Voice activation has triggered transmission.
@ CLIENTEVENT_DESKTOPWINDOW_TRANSFER
Used for tracking when a desktop window has been transmitted to the server.
bool HotKey_Register(int nHotKeyID, int[] lpnVKCodes)
Register a global hotkey.
Definition: TeamTalk.cs:8141
bool HotKey_GetKeyString(int nVKCode, ref string szKeyName)
Get a string description of the virtual-key code.
Definition: TeamTalk.cs:8201
int HotKey_IsActive(int nHotKeyID)
Check whether hotkey is active.
Definition: TeamTalk.cs:8159
bool HotKey_Unregister(int nHotKeyID)
Unregister a registered hotkey.
Definition: TeamTalk.cs:8150
bool HotKey_RemoveTestHook()
Remove the test hook again so the OnHotKeyTest event will no longer be notified.
Definition: TeamTalk.cs:8191
bool HotKey_InstallTestHook()
Install a test hook which calls the event OnHotKeyTest whenever a key or mouse button is pressed.
Definition: TeamTalk.cs:8172
bool GetMessage(ref TTMessage pMsg, int nWaitMs)
Poll for events in the client instance.
Definition: TeamTalk.cs:4434
const int TT_CHANNELID_MAX
The highest channel ID. Also used for BearWare.TeamTalkBase.TT_CLASSROOM_FREEFORALL.
Definition: TeamTalk.cs:4197
const int TT_LOCAL_USERID
User ID passed to TeamTalkBase.EnableAudioBlockEvent() in order to receive BearWare....
Definition: TeamTalk.cs:4253
BearWare.ClientFlag GetFlags()
Get a bitmask describing the client's current state.
Definition: TeamTalk.cs:4479
const int TT_MUXED_USERID
User ID used to identify muxed audio that has been mixed into a single stream.
Definition: TeamTalk.cs:4271
TeamTalkBase(bool poll_based)
Create a new TeamTalk client instance.
Definition: TeamTalk.cs:4318
ClientFlag
Flags used to describe the the client instance current state.
Definition: TeamTalk.cs:4079
bool PumpMessage(ClientEvent nClientEvent, int nIdentifier)
Cause client instance event thread to schedule an update event.
Definition: TeamTalk.cs:4465
const int TT_USERID_MAX
The highest user ID.
Definition: TeamTalk.cs:4193
const int TT_LOCAL_TX_USERID
User ID passed to TeamTalkBase.EnableAudioBlockEvent() in order to receive BearWare....
Definition: TeamTalk.cs:4262
void ProcessMsg(TTMessage msg)
Event handler for BearWare.TTMessage.
Definition: TeamTalk.cs:4510
static string GetVersion()
Get the DLL's version number.
Definition: TeamTalk.cs:4306
ClientFlag Flags
Same as GetFlags().
Definition: TeamTalk.cs:4488
static bool SetLicenseInformation(string szRegName, string szRegKey)
Set license information to disable trial mode.
Definition: TeamTalk.cs:4501
const int TT_STRLEN
The maximum length of all strings used in TeamTalkBase. This value includes the zero terminator,...
Definition: TeamTalk.cs:4190
@ CLIENT_CLOSED
The client instance is in closed state, i.e. no operations has been performed on it.
@ CLIENT_VIDEOCAPTURE_READY
If set the client instance's video device has been initialized, i.e. TeamTalkBase....
@ CLIENT_CONNECTION
Helper for BearWare.ClientFlag.CLIENT_CONNECTING and BearWare.ClientFlag.CLIENT_CONNECTED to see if T...
@ CLIENT_CONNECTED
If set the client instance is connected to a server, i.e. BearWare.ClientEvent.CLIENTEVENT_CON_SUCCES...
@ CLIENT_SNDINOUTPUT_DUPLEX
If set the client instance is running in sound duplex mode where multiple audio output streams are mi...
@ CLIENT_SNDOUTPUT_READY
If set the client instance's sound output device has been initialized, i.e. TeamTalkBase....
@ CLIENT_CONNECTING
If set the client instance is currently try to connect to a server, i.e. TeamTalkBase....
@ CLIENT_STREAM_VIDEO
If set the client is currently streaming the video of a media file. When streaming a video file the B...
@ CLIENT_MUX_AUDIOFILE
If set the client instance is currently muxing audio streams into a single file. This is enabled by c...
@ CLIENT_SNDOUTPUT_AUTO3DPOSITION
If set the client instance will auto position users in a 180 degree circle using 3D-sound....
@ CLIENT_DESKTOP_ACTIVE
If set the client instance current have an active desktop session, i.e. TeamTalkBase....
@ CLIENT_SNDINPUT_READY
If set the client instance's sound input device has been initialized, i.e. TeamTalkBase....
@ CLIENT_STREAM_AUDIO
If set the client is currently streaming the audio of a media file. When streaming a video file the B...
@ CLIENT_SNDINPUT_VOICEACTIVATED
If set the client instance will start transmitting audio if the sound level is above the voice activa...
@ CLIENT_TX_VOICE
If set the client instance is currently transmitting audio.
@ CLIENT_TX_VIDEOCAPTURE
If set the client instance is currently transmitting video.
@ CLIENT_SNDINPUT_VOICEACTIVE
If set GetSoundInputLevel() is higher than the voice activation level. To enable voice transmission i...
@ CLIENT_TX_DESKTOP
If set the client instance is currently transmitting a desktop window. A desktop window update is iss...
@ CLIENT_AUTHORIZED
If set the client instance is logged on to a server, i.e. got BearWare.ClientEvent....
@ CLIENT_SNDOUTPUT_MUTE
If set the client instance has muted all users.
bool UpdateStreamingMediaFileToChannel(MediaFilePlayback lpMediaFilePlayback, VideoCodec lpVideoCodec)
Update active media file being streamed to channel.
Definition: TeamTalk.cs:5984
bool StartStreamingMediaFileToChannel(string szMediaFilePath, VideoCodec lpVideoCodec)
Stream media file to channel, e.g. avi-, wav- or MP3-file.
Definition: TeamTalk.cs:5923
VideoFrame AcquireUserMediaVideoFrame(int nUserID, out Bitmap bmp)
Extract a user's media video frame for display.
Definition: TeamTalk.cs:6093
int InitLocalPlayback(string szMediaFilePath, MediaFilePlayback lpMediaFilePlayback)
Play media file using settings from BearWare.TeamTalkBase instance.
Definition: TeamTalk.cs:6026
bool UpdateLocalPlayback(int nPlaybackSessionID, MediaFilePlayback lpMediaFilePlayback)
Definition: TeamTalk.cs:6042
bool StopLocalPlayback(int nPlaybackSessionID)
Definition: TeamTalk.cs:6056
bool StopStreamingMediaFileToChannel()
Stop streaming media file to channel.
Definition: TeamTalk.cs:5997
bool StartStreamingMediaFileToChannel(string szMediaFilePath, MediaFilePlayback lpMediaFilePlayback, VideoCodec lpVideoCodec)
Stream media file to channel, e.g. avi-, wav- or MP3-file.
Definition: TeamTalk.cs:5959
MediaFileStatus
Status of media file being written to disk.
Definition: TeamTalk.cs:530
static bool GetMediaFileInfo(string szMediaFilePath, ref MediaFileInfo lpMediaFileInfo)
Get the properties of a media file.
Definition: TeamTalk.cs:6068
bool ReleaseUserMediaVideoFrame(VideoFrame lpVideoFrame)
Delete a user's video frame, acquired through TeamTalkBase.AcquireUserMediaVideoFrame(),...
Definition: TeamTalk.cs:6115
const uint TT_MEDIAPLAYBACK_OFFSET_IGNORE
Definition: TeamTalk.cs:4302
AudioFileFormat
Media file formats supported for muxed audio recordings.
Definition: TeamTalk.cs:551
@ MFS_PLAYING
Playing media file with updated uElapsedMSec of BearWare.MediaFileInfo.
@ MFS_FINISHED
Finished processing media file.
@ MFS_STARTED
Started processing media file.
@ MFS_PAUSED
Paused processing of media file.
@ MFS_ERROR
Error while processing media file.
@ MFS_ABORTED
Aborted processing of media file.
@ AFF_MP3_16KBIT_FORMAT
Store in MP3-format.
@ AFF_WAVE_FORMAT
Store in PCM 16-bit wave format.
@ AFF_CHANNELCODEC_FORMAT
Store audio in the same format as the BearWare.Channel's configured audio codec.
@ AFF_NONE
Used to denote nothing selected.
MixerControl
The Windows mixer controls which can be queried by the BearWare.WindowsMixer class.
Definition: TeamTalk.cs:8804
UserRight
The rights users have once they have logged on to the server.
Definition: TeamTalk.cs:1698
ServerLogEvent
Events that are logged by the server, i.e. written to server's log file.
Definition: TeamTalk.cs:1792
bool GetServerUsers(out User[] lpUsers)
Get all the users on the server.
Definition: TeamTalk.cs:7514
bool GetServerProperties(ref ServerProperties lpServerProperties)
Get the server's properties.
Definition: TeamTalk.cs:7500
BanType
Way to ban a user from either login or joining a channel.
Definition: TeamTalk.cs:2006
@ USERRIGHT_TRANSMIT_DESKTOP
User is allowed to forward desktop packets through server.
@ USERRIGHT_MULTI_LOGIN
Allow multiple users to log on to the server with the same BearWare.UserAccount.
@ USERRIGHT_TRANSMIT_VOICE
Users are allowed to forward audio packets through server. TeamTalkBase.EnableVoiceTransmission()
@ USERRIGHT_CREATE_TEMPORARY_CHANNEL
User is allowed to create temporary channels which disappear when last user leaves the channel.
@ USERRIGHT_TRANSMIT_VIDEOCAPTURE
User is allowed to forward video packets through server. TeamTalkBase.StartVideoCaptureTransmission()
@ USERRIGHT_KICK_USERS
User can kick users off the server.
@ USERRIGHT_UPDATE_SERVERPROPERTIES
User can update server properties.
@ USERRIGHT_ALL
User with all rights.
@ USERRIGHT_LOCKED_NICKNAME
User's nick name is locked. TeamTalkBase.DoChangeNickname() cannot be used and TeamTalkBase....
@ USERRIGHT_TEXTMESSAGE_USER
User can send private text messages, i.e. BearWare.TextMsgType.MSGTYPE_USER.
@ USERRIGHT_TRANSMIT_MEDIAFILE
User is allowed to media files to channel.
@ USERRIGHT_BAN_USERS
User can add and remove banned users.
@ USERRIGHT_TRANSMIT_MEDIAFILE_VIDEO
User is allowed to stream video files to channel.
@ USERRIGHT_TEXTMESSAGE_BROADCAST
User can broadcast text message of type BearWare.TextMsgType.MSGTYPE_BROADCAST to all users.
@ USERRIGHT_TRANSMIT_MEDIAFILE_AUDIO
User is allowed to stream audio files to channel.
@ USERRIGHT_TEXTMESSAGE_CHANNEL
User can send private text messages, i.e. BearWare.TextMsgType.MSGTYPE_CHANNEL.
@ USERRIGHT_OPERATOR_ENABLE
User can make other users channel operator.
@ USERRIGHT_TRANSMIT_DESKTOPINPUT
User is allowed to forward desktop input packets through server.
@ USERRIGHT_MOVE_USERS
User can move users from one channel to another.
@ USERRIGHT_LOCKED_STATUS
User's status is locked. TeamTalkBase.DoChangeStatus() cannot be used.
@ USERRIGHT_VIEW_ALL_USERS
User can see users in all other channels.
@ USERRIGHT_DOWNLOAD_FILES
User can download files from channels.
@ USERRIGHT_UPLOAD_FILES
User can upload files to channels.
@ USERRIGHT_VIEW_HIDDEN_CHANNELS
User can see hidden channels, BearWare.ChannelType.CHANNEL_HIDDEN.
@ USERRIGHT_MODIFY_CHANNELS
User is allowed to create permanent channels which are stored in the server's configuration file.
@ USERRIGHT_RECORD_VOICE
User can record voice in all channels. Even channels with BearWare.ChannelType.CHANNEL_NO_RECORDING.
@ USERRIGHT_NONE
Users who log onto the server has none of the rights below.
@ SERVERLOGEVENT_USER_MOVED
User was moved to another channel is logged to file by the server.
@ SERVERLOGEVENT_USER_LEFTCHANNEL
User left a channel is logged to file by the server.
@ SERVERLOGEVENT_USER_LOGGEDIN
User logged in is logged to file by the server.
@ SERVERLOGEVENT_USER_DISCONNECTED
User disconnected from server is logged to file by the server.
@ SERVERLOGEVENT_SERVER_SAVECONFIG
User saved server's configuration is logged to file by the server.
@ SERVERLOGEVENT_CHANNEL_REMOVED
User removed a channel is logged to file by the server.
@ SERVERLOGEVENT_FILE_DELETED
User deleted a file is logged to file by the server.
@ SERVERLOGEVENT_FILE_DOWNLOADED
User downloaded a file is logged to file by the server.
@ SERVERLOGEVENT_USER_KICKED
User was kicked is logged to file by the server.
@ SERVERLOGEVENT_USER_JOINEDCHANNEL
User joined a channel is logged to file by the server.
@ SERVERLOGEVENT_USER_TEXTMESSAGE_BROADCAST
User's broadcast text messages are logged to file by the server.
@ SERVERLOGEVENT_USER_TEXTMESSAGE_CHANNEL
User's channel text messages are logged to file by the server.
@ SERVERLOGEVENT_SERVER_UPDATED
User updated server's properties is logged to file by the server.
@ SERVERLOGEVENT_USER_CONNECTED
User's IP-address is logged to file by serer.
@ SERVERLOGEVENT_USER_TIMEDOUT
User disconnected due to connection timeout is logged to file by the server.
@ SERVERLOGEVENT_USER_LOGINFAILED
User failed to log in is logged to file by the server.
@ SERVERLOGEVENT_USER_LOGGEDOUT
User logged out is logged to file by the server.
@ SERVERLOGEVENT_NONE
Nothing is logged to file by server.
@ SERVERLOGEVENT_USER_TEXTMESSAGE_PRIVATE
User's private text messages are logged to file by the server.
@ SERVERLOGEVENT_CHANNEL_UPDATED
User updated a channel is logged to file by the server.
@ SERVERLOGEVENT_USER_BANNED
User was banned is logged to file by the server.
@ SERVERLOGEVENT_USER_UPDATED
User's status is logged to file by the server.
@ SERVERLOGEVENT_USER_UNBANNED
User was removed from ban list is logged to file by the server.
@ SERVERLOGEVENT_CHANNEL_CREATED
User created new channel is logged to file by the server.
@ SERVERLOGEVENT_FILE_UPLOADED
User uploaded a file is logged to file by the server.
@ SERVERLOGEVENT_USER_TEXTMESSAGE_CUSTOM
User's custom text messages are logged to file by the server.
@ BANTYPE_NONE
Ban type not set.
@ BANTYPE_CHANNEL
The ban applies to the channel specified in the szChannel of BearWare.BannedUser. Otherwise the ban a...
@ BANTYPE_USERNAME
Ban szUsername specified in BearWare.BannedUser.
@ BANTYPE_IPADDR
Ban szIPAddress specified in BearWare.BannedUser.
static IntPtr StartSoundLoopbackTest(int nInputDeviceID, int nOutputDeviceID, int nSampleRate, int nChannels, bool bDuplexMode, SpeexDSP lpSpeexDSP)
Perform a record and playback test of specified sound devices along with an audio configuration and a...
Definition: TeamTalk.cs:4762
bool SetUserMediaStorageDir(int nUserID, string szFolderPath, string szFileNameVars, AudioFileFormat uAFF)
Store user's audio to disk.
Definition: TeamTalk.cs:7946
bool SetUserMediaStorageDir(int nUserID, string szFolderPath, string szFileNameVars, AudioFileFormat uAFF, int nStopRecordingExtraDelayMSec)
Store user's audio to disk.
Definition: TeamTalk.cs:7976
bool Enable3DSoundPositioning(bool bEnable)
Enable automatically position users using 3D-sound.
Definition: TeamTalk.cs:5241
bool ReleaseUserAudioBlock(AudioBlock lpAudioBlock)
Release the shared memory of an BearWare.AudioBlock.
Definition: TeamTalk.cs:8055
bool SetSoundInputPreprocess(SpeexDSP lpSpeexDSP)
Enable sound preprocessor which should be used for processing audio recorded by the sound input devic...
Definition: TeamTalk.cs:5158
bool SetUserStereo(int nUserID, StreamType nStreamType, bool bLeftSpeaker, bool bRightSpeaker)
Set whether a user should speak in the left, right or both speakers. This function only works if Bear...
Definition: TeamTalk.cs:7907
bool EnableAudioBlockEvent(int nUserID, StreamType uStreamTypes, AudioFormat lpAudioFormat, bool bEnable)
Same as TeamTalkBase.EnableAudioBlockEvent() but option to specify audio output format.
Definition: TeamTalk.cs:5352
bool CloseSoundDuplexDevices()
Shut down sound devices running in duplex mode.
Definition: TeamTalk.cs:5042
bool AutoPositionUsers()
Automatically position users using 3D-sound.
Definition: TeamTalk.cs:5251
bool SetSoundOutputVolume(int nVolume)
Set master volume.
Definition: TeamTalk.cs:5209
bool GetSoundDeviceEffects(ref SoundDeviceEffects lpSoundDeviceEffect)
Get the audio effects that are currently enabled.
Definition: TeamTalk.cs:5089
int GetSoundInputLevel()
Get the volume level of the current recorded audio.
Definition: TeamTalk.cs:5109
bool SetUserPosition(int nUserID, StreamType nStreamType, float x, float y, float z)
Set the position of a user.
Definition: TeamTalk.cs:7891
bool SetUserStoppedPlaybackDelay(int nUserID, StreamType nStreamType, int nDelayMSec)
Set the delay of when a user should no longer be considered as playing audio (either voice or audio f...
Definition: TeamTalk.cs:7825
const int TT_SAMPLERATES_MAX
Definition: TeamTalk.cs:4286
bool SetUserAudioStreamBufferSize(int nUserID, StreamType uStreamType, int nMSec)
Change the amount of media data which can be buffered in the user's playback queue.
Definition: TeamTalk.cs:8006
static bool GetSoundDevices(out SoundDevice[] lpSoundDevices)
Retrieve list of sound devices for recording and playback.
Definition: TeamTalk.cs:4730
static bool GetDefaultSoundDevicesEx(SoundSystem nSndSystem, ref int lpnInputDeviceID, ref int lpnOutputDeviceID)
Get the default sound devices for the specified sound system.
Definition: TeamTalk.cs:4716
bool GetUserJitterControl(int nUserID, StreamType nStreamType, ref JitterConfig lpJitterConfig)
Get the de-jitter configuration for a user.
Definition: TeamTalk.cs:7873
bool GetSoundInputPreprocess(ref SpeexDSP lpSpeexDSP)
Get the sound preprocessor settings which are currently in use for recorded sound input device (voice...
Definition: TeamTalk.cs:5171
AudioBlock AcquireUserAudioBlock(StreamType uStreamTypes, int nUserID)
Extract the raw audio associated with the event TeamTalkBase.OnUserAudioBlock().
Definition: TeamTalk.cs:8030
bool SetSoundOutputMute(bool bMuteAll)
Set all users mute.
Definition: TeamTalk.cs:5230
bool InitSoundOutputSharedDevice(int nSampleRate, int nChannels, int nFrameSize)
Setup sample rate, channels and frame size of shared sound output device.
Definition: TeamTalk.cs:4950
bool InitSoundDuplexDevices(int nInputDeviceID, int nOutputDeviceID)
Enable duplex mode where multiple audio streams are mixed into a single stream using software.
Definition: TeamTalk.cs:4987
bool CloseSoundOutputDevice()
Shutdown the output sound device.
Definition: TeamTalk.cs:5032
bool InitSoundOutputDevice(int nOutputDeviceID)
Initialize the sound output device (for audio playback).
Definition: TeamTalk.cs:4916
int GetSoundInputGainLevel()
Get voice gain level of outgoing audio.
Definition: TeamTalk.cs:5138
static bool RestartSoundSystem()
Reinitialize sound system (in order to detect new/removed devices).
Definition: TeamTalk.cs:4754
SoundSystem
The supported sound systems.
Definition: TeamTalk.cs:107
bool SetUserVolume(int nUserID, StreamType nStreamType, int nVolume)
Set the volume of a user.
Definition: TeamTalk.cs:7794
SoundDeviceFeature
Features available on a sound device. Checkout uSoundDeviceFeatures on BearWare.SoundDevice.
Definition: TeamTalk.cs:166
int GetSoundOutputVolume()
Get master volume.
Definition: TeamTalk.cs:5219
static IntPtr StartSoundLoopbackTest(int nInputDeviceID, int nOutputDeviceID, int nSampleRate, int nChannels, bool bDuplexMode, AudioPreprocessor lpAudioPreprocessor, BearWare.SoundDeviceEffects lpSoundDeviceEffects)
Perform a record and playback test of specified sound devices along with an audio configuration and a...
Definition: TeamTalk.cs:4801
bool SetSoundInputPreprocess(AudioPreprocessor lpAudioPreprocessor)
Enable sound preprocessor which should be used for processing audio recorded by the sound input devic...
Definition: TeamTalk.cs:5186
bool GetSoundInputPreprocess(ref AudioPreprocessor lpAudioPreprocessor)
Get the sound preprocessor settings which are currently in use for recorded sound input device (voice...
Definition: TeamTalk.cs:5198
bool EnableAudioBlockEvent(int nUserID, StreamType uStreamTypes, bool bEnable)
Enable/disable access to raw audio from individual users, local microphone input or muxed stream of a...
Definition: TeamTalk.cs:5319
static bool GetDefaultSoundDevices(ref int lpnInputDeviceID, ref int lpnOutputDeviceID)
Get the default sound devices.
Definition: TeamTalk.cs:4707
bool SetUserJitterControl(int nUserID, StreamType nStreamType, JitterConfig lpJitterConfig)
Set the configuration for de-jitter measures for a user.
Definition: TeamTalk.cs:7856
static bool CloseSoundLoopbackTest(IntPtr lpTTSoundLoop)
Stop recorder and playback test.
Definition: TeamTalk.cs:4816
bool SetUserMute(int nUserID, StreamType nStreamType, bool bMute)
Mute a user.
Definition: TeamTalk.cs:7809
bool InitSoundInputDevice(int nInputDeviceID)
Initialize the sound input device (for recording audio).
Definition: TeamTalk.cs:4848
bool SetSoundInputGainLevel(int nLevel)
Set voice gaining of recorded audio.
Definition: TeamTalk.cs:5128
bool CloseSoundInputDevice()
Shutdown the input sound device.
Definition: TeamTalk.cs:5010
bool InitSoundInputSharedDevice(int nSampleRate, int nChannels, int nFrameSize)
Setup sample rate, channels and frame size of shared sound input device.
Definition: TeamTalk.cs:4883
bool SetSoundDeviceEffects(SoundDeviceEffects lpSoundDeviceEffect)
Set up audio effects on a sound device.
Definition: TeamTalk.cs:5081
@ SOUNDSYSTEM_WINMM
Windows legacy audio system. Should be used on Windows Mobile.
@ SOUNDSYSTEM_WASAPI
Windows Audio Session API (WASAPI). Should be used on Windows Vista/7/8/10.
@ SOUNDSYSTEM_DSOUND
DirectSound audio system. Should be used on Windows.
@ SOUNDSYSTEM_AUDIOUNIT
iOS sound API.
@ SOUNDSYSTEM_COREAUDIO
Core Audio. Should be used on MacOS.
@ SOUNDSYSTEM_AUDIOUNIT_IOS
Same as BearWare.SoundSystem.SOUNDSYSTEM_AUDIOUNIT.
@ SOUNDSYSTEM_PULSEAUDIO
PulseAudio API. PulseAudio is typically used on Ubuntu 22.
@ SOUNDSYSTEM_NONE
Sound system denoting invalid or not found.
@ SOUNDSYSTEM_ALSA
Advanced Linux Sound Architecture (ALSA). Should be used on Linux.
@ SOUNDSYSTEM_OPENSLES_ANDROID
Android sound API.
@ SOUNDDEVICEFEATURE_AEC
The BearWare.SoundDevice can enable Acoustic Echo Canceler (AEC). Enable AEC use property bEnableAEC ...
@ SOUNDDEVICEFEATURE_DEFAULTCOMDEVICE
The BearWare.SoundDevice is the default communication device. This feature is only supported on BearW...
@ SOUNDDEVICEFEATURE_AGC
The BearWare.SoundDevice can enable Automatic Gain Control (AGC). Enable AGC use property bEnableAGC ...
@ SOUNDDEVICEFEATURE_DUPLEXMODE
The BearWare.SoundDevice can run in duplex mode.
@ SOUNDDEVICEFEATURE_DENOISE
The BearWare.SoundDevice can enable denoising. Enable denoising use property bEnableDenoising on Bear...
@ SOUNDDEVICEFEATURE_3DPOSITION
The BearWare.SoundDevice can position user in 3D.
bool StartRecordingMuxedAudioFile(AudioCodec lpAudioCodec, string szAudioFileName, AudioFileFormat uAFF)
Store all audio conversations with specific BearWare.AudioCodec settings to a single file.
Definition: TeamTalk.cs:5545
int GetVoiceActivationLevel()
Get voice activation level.
Definition: TeamTalk.cs:5468
bool StopRecordingMuxedAudioFile(int nChannelID)
Stop recording conversations from a channel to a single file.
Definition: TeamTalk.cs:5646
bool StopVideoCaptureTransmission()
Stop transmitting from video capture device.
Definition: TeamTalk.cs:5682
StreamType
The types of streams which are available for transmission.
Definition: TeamTalk.cs:45
bool InsertAudioBlock(AudioBlock lpAudioBlock)
Transmit application provided raw audio in BearWare.AudioBlock-structs as BearWare....
Definition: TeamTalk.cs:5391
int GetVoiceActivationStopDelay()
Get the delay of when voice active state should be disabled.
Definition: TeamTalk.cs:5498
bool StopRecordingMuxedAudioFile()
Stop an active muxed audio recording.
Definition: TeamTalk.cs:5635
bool StartVideoCaptureTransmission(VideoCodec lpVideoCodec)
Start transmitting from video capture device.
Definition: TeamTalk.cs:5673
bool EnableVoiceTransmission(bool bEnable)
Start/stop transmitting of voice data from sound input.
Definition: TeamTalk.cs:5413
bool EnableVoiceActivation(bool bEnable)
Enable voice activation.
Definition: TeamTalk.cs:5443
bool StartRecordingMuxedAudioFile(int nChannelID, string szAudioFileName, AudioFileFormat uAFF)
Store audio conversations from a specific channel into a single file.
Definition: TeamTalk.cs:5574
bool SetVoiceActivationStopDelay(int nDelayMSec)
Set the delay of when voice activation should be stopped.
Definition: TeamTalk.cs:5484
bool StartRecordingMuxedStreams(StreamType uStreamTypes, AudioCodec lpAudioCodec, string szAudioFileName, AudioFileFormat uAFF)
Mix multiple BearWare.StreamType into a single audio file.
Definition: TeamTalk.cs:5616
bool SetVoiceActivationLevel(int nLevel)
Set voice activation level.
Definition: TeamTalk.cs:5458
@ STREAMTYPE_LOCALMEDIAPLAYBACK_AUDIO
Stream type for audio of local playback.
@ STREAMTYPE_NONE
No stream.
@ STREAMTYPE_DESKTOP
Desktop window stream type which is a window (or bitmap) being transmitted.
@ STREAMTYPE_CLASSROOM_ALL
Shortcut to allow voice, media files, desktop, webcamera and channel messages.
@ STREAMTYPE_DESKTOPINPUT
Desktop input stream type which is keyboard or mouse input being transmitted.
@ STREAMTYPE_VOICE
Voice stream type which is audio recorded from a sound input device.
@ STREAMTYPE_VIDEOCAPTURE
Video capture stream type which is video recorded from a webcam.
@ STREAMTYPE_CHANNELMSG
Channel text messages as stream type.
@ STREAMTYPE_MEDIAFILE
Shortcut to allow both audio and video media files.
@ STREAMTYPE_MEDIAFILE_AUDIO
Audio stream type from a media file which is being streamed.
@ STREAMTYPE_MEDIAFILE_VIDEO
Video stream type from a media file which is being streamed.
const int TT_CHANNELS_OPERATOR_MAX
Definition: TeamTalk.cs:4277
bool GetUserStatistics(int nUserID, ref UserStatistics lpUserStatistics)
Get statistics for data and packet reception from a user.
Definition: TeamTalk.cs:7762
BearWare.UserRight GetMyUserRights()
Convenience method for TeamTalkBase.GetMyUserAccount()
Definition: TeamTalk.cs:7723
UserType
The types of users supported.
Definition: TeamTalk.cs:2053
int GetMyUserID()
Get the local client instance's user ID.
Definition: TeamTalk.cs:7672
bool GetMyUserAccount(ref UserAccount lpUserAccount)
Get the local client instance's BearWare.UserAccount.
Definition: TeamTalk.cs:7687
int UserID
Same as GetMyUserID().
Definition: TeamTalk.cs:7695
int UserData
Same as GetMyUserData().
Definition: TeamTalk.cs:7745
UserType GetMyUserType()
Get the client instance's user type.
Definition: TeamTalk.cs:7707
bool GetUser(int nUserID, ref User lpUser)
Get the user with the specified ID.
Definition: TeamTalk.cs:7753
bool GetUserByUsername(string szUsername, ref User lpUser)
Get the user with the specified username.
Definition: TeamTalk.cs:7774
Subscription
A user by default accepts audio, video and text messages from all users. Using subscribtions can,...
Definition: TeamTalk.cs:2172
UserState
The possible states for a user. Used for BearWare.User's uUserState variable.
Definition: TeamTalk.cs:2238
BearWare.UserRight UserRights
Same as GetMyUserRights().
Definition: TeamTalk.cs:7720
int GetMyUserData()
If an account was used in TeamTalkBase.DoLogin() then this value will return the nUserData from the B...
Definition: TeamTalk.cs:7737
TextMsgType
Text message types.
Definition: TeamTalk.cs:2467
@ USERTYPE_NONE
Used internally to denote an unauthenticated user.
@ USERTYPE_DEFAULT
A default user who can join channels.
@ USERTYPE_ADMIN
A user with administrator privileges.
@ SUBSCRIBE_INTERCEPT_CUSTOM_MSG
Intercept all custom text messages sent by user. Only user-type BearWare.UserType....
@ SUBSCRIBE_VOICE
Subscribing to BearWare.StreamType.STREAMTYPE_VOICE.
@ SUBSCRIBE_DESKTOPINPUT
Subscribing to BearWare.StreamType.STREAMTYPE_DESKTOPINPUT.
@ SUBSCRIBE_VIDEOCAPTURE
Subscribing to BearWare.StreamType.STREAMTYPE_VIDEOCAPTURE.
@ SUBSCRIBE_MEDIAFILE
Subscribing to BearWare.StreamType.STREAMTYPE_MEDIAFILE_VIDEO and BearWare.StreamType....
@ SUBSCRIBE_INTERCEPT_MEDIAFILE
Intercept all media file data sent by a user. Only user-type BearWare.UserType.USERTYPE_ADMIN can do ...
@ SUBSCRIBE_BROADCAST_MSG
Subscribing to broadcast text messsages.
@ SUBSCRIBE_INTERCEPT_CHANNEL_MSG
Intercept all channel messages sent by a user. Only user-type BearWare.UserType.USERTYPE_ADMIN can do...
@ SUBSCRIBE_DESKTOP
Subscribing to BearWare.StreamType.STREAMTYPE_DESKTOP.
@ SUBSCRIBE_INTERCEPT_VIDEOCAPTURE
Intercept all video sent by a user. Only user-type BearWare.UserType.USERTYPE_ADMIN can do this....
@ SUBSCRIBE_INTERCEPT_USER_MSG
Intercept all user text messages sent by a user. Only user-type BearWare.UserType....
@ SUBSCRIBE_CUSTOM_MSG
Subscribing to custom user messages.
@ SUBSCRIBE_INTERCEPT_DESKTOP
Intercept all desktop data sent by a user. Only user-type BearWare.UserType.USERTYPE_ADMIN can do thi...
@ SUBSCRIBE_CHANNEL_MSG
Subscribing to channel texxt messages.
@ SUBSCRIBE_USER_MSG
Subscribing to user text messages.
@ SUBSCRIBE_NONE
No subscriptions.
@ SUBSCRIBE_INTERCEPT_VOICE
Intercept all voice sent by a user. Only user-type BearWare.UserType.USERTYPE_ADMIN can do this....
@ USERSTATE_MUTE_MEDIAFILE
If set the user's media file playback is muted.
@ USERSTATE_MEDIAFILE_AUDIO
If set the user currently streams an audio file. If user is streaming a video file with audio then th...
@ USERSTATE_VIDEOCAPTURE
If set the user currently has an active video stream. If this flag changes the event BearWare....
@ USERSTATE_MUTE_VOICE
If set the user's voice is muted.
@ USERSTATE_VOICE
If set the user is currently talking. If this flag changes the event BearWare.ClientEvent....
@ USERSTATE_DESKTOP
If set the user currently has an active desktop session. If this flag changes the event BearWare....
@ USERSTATE_MEDIAFILE
If set user is streaming a media file. If this flag changes the event BearWare.ClientEvent....
@ USERSTATE_MEDIAFILE_VIDEO
If set the user currently streams a video file. If this flag changes the event BearWare....
@ USERSTATE_NONE
The user is in initial state.
@ MSGTYPE_CUSTOM
A custom user to user text message. Works the same way as BearWare.TextMsgType BearWare....
@ MSGTYPE_USER
A User to user text message. A message of this type can be sent across channels.
@ MSGTYPE_BROADCAST
A broadcast message. Requires BearWare.UserRight.USERRIGHT_TEXTMESSAGE_BROADCAST.
@ MSGTYPE_CHANNEL
A User to channel text message. Users of type BearWare.UserType.USERTYPE_DEFAULT can only send this t...
bool PaintVideoFrame(int nUserID, System.IntPtr hDC, int XDest, int YDest, int nDestWidth, int nDestHeight, ref VideoFrame lpVideoFrame)
Paint user's video frame using a Windows' DC (device context).
Definition: TeamTalk.cs:5753
bool InitVideoCaptureDevice(string szDeviceID, VideoFormat lpVideoFormat)
Initialize a video capture device.
Definition: TeamTalk.cs:5726
bool ReleaseUserVideoCaptureFrame(VideoFrame lpVideoFrame)
Delete a user's video frame, acquired through TeamTalkBase.AcquireUserVideoCaptureFrame(),...
Definition: TeamTalk.cs:5855
bool PaintVideoFrameEx(int nUserID, System.IntPtr hDC, int XDest, int YDest, int nDestWidth, int nDestHeight, int XSrc, int YSrc, int nSrcWidth, int nSrcHeight, ref VideoFrame lpVideoFrame)
Paint user's video frame using a Windows' DC (device context).
Definition: TeamTalk.cs:5796
VideoFrame AcquireUserVideoCaptureFrame(int nUserID, out Bitmap bmp)
Extract a user's video frame for display.
Definition: TeamTalk.cs:5831
static bool GetVideoCaptureDevices(out VideoCaptureDevice[] lpVideoDevices)
Get the list of devices available for video capture.
Definition: TeamTalk.cs:5698
bool CloseVideoCaptureDevice()
Close a video capture device.
Definition: TeamTalk.cs:5735
FourCC
The picture format used by a capture device.
Definition: TeamTalk.cs:610
const int TT_VIDEOFORMATS_MAX
Definition: TeamTalk.cs:4202
@ FOURCC_YUY2
Image format where a 640x480 pixel images takes up 614.400 bytes.
@ FOURCC_NONE
Internal use to denote no supported formats.
@ FOURCC_I420
Prefered image format with the lowest bandwidth usage. A 640x480 pixel image takes up 460....
@ FOURCC_RGB32
The image format with the highest bandwidth usage. A 640x480 pixel images takes up 1....
Properties to prevent server abuse.
Definition: TeamTalk.cs:2073
int nCommandsLimit
Limit number of commands a user can send to the server.
Definition: TeamTalk.cs:2083
int nCommandsIntervalMSec
Commands within given interval.
Definition: TeamTalk.cs:2085
An audio block containing the raw audio from a user who was talking.
Definition: TeamTalk.cs:483
int nSamples
The number of samples in the raw audio array.
Definition: TeamTalk.cs:497
StreamType uStreamTypes
The stream types used to generate the AudioBlock's raw audio.
Definition: TeamTalk.cs:518
int nSampleRate
The sample rate of the raw audio.
Definition: TeamTalk.cs:489
uint uSampleIndex
The index of the first sample in lpRawAudio. Its value will be a multiple of nSamples....
Definition: TeamTalk.cs:505
int nStreamID
The ID of the stream. The stream id changes every time the user enables a new transmission using Team...
Definition: TeamTalk.cs:487
int nChannels
The number of channels used (1 for mono, 2 for stereo).
Definition: TeamTalk.cs:491
System.IntPtr lpRawAudio
The raw audio in 16-bit integer format array. The size of the array in bytes is sizeof(short) * nSamp...
Definition: TeamTalk.cs:495
Struct used for specifying which audio codec a channel uses.
Definition: TeamTalk.cs:1540
SpeexVBRCodec speex_vbr
Speex codec settings if nCodec is BearWare.Codec.SPEEX_VBR_CODEC.
Definition: TeamTalk.cs:1552
SpeexCodec speex
Speex codec settings if nCodec is BearWare.Codec.SPEEX_CODEC.
Definition: TeamTalk.cs:1548
Codec nCodec
Specifies whether the member speex, speex_vbr or opus holds the codec settings.
Definition: TeamTalk.cs:1544
OpusCodec opus
Opus codec settings if nCodec is OPUS_CODEC.
Definition: TeamTalk.cs:1556
Audio configuration for clients in a channel.
Definition: TeamTalk.cs:1574
AudioConfig(bool set_defaults)
Definition: TeamTalk.cs:1582
int nGainLevel
Reference gain level to be used by all users.
Definition: TeamTalk.cs:1580
bool bEnableAGC
Users should enable automatic gain control.
Definition: TeamTalk.cs:1577
Struct describing the audio format used by a media file.
Definition: TeamTalk.cs:590
AudioFileFormat nAudioFmt
The audio file format, e.g. wave or MP3.
Definition: TeamTalk.cs:592
int nSampleRate
Sample rate of media file.
Definition: TeamTalk.cs:594
int nChannels
Channels used by media file, mono = 1, stereo = 2.
Definition: TeamTalk.cs:596
The progress of the audio currently being processed as audio input.
Definition: TeamTalk.cs:1669
uint uElapsedMSec
The duration of the audio that has been transmitted.
Definition: TeamTalk.cs:1677
int nStreamID
The stream ID provided in the BearWare.AudioBlock.
Definition: TeamTalk.cs:1671
uint uQueueMSec
The duration of the audio currently queued for transmission.
Definition: TeamTalk.cs:1674
Configure the audio preprocessor specified by nPreprocessor.
Definition: TeamTalk.cs:1444
WebRTCAudioPreprocessor webrtc
Used when nPreprocessor is BearWare.AudioPreprocessorType.WEBRTC_AUDIOPREPROCESSOR.
Definition: TeamTalk.cs:1456
SpeexDSP speexdsp
Used when nPreprocessor is BearWare.AudioPreprocessorType.SPEEXDSP_AUDIOPREPROCESSOR.
Definition: TeamTalk.cs:1450
AudioPreprocessorType nPreprocessor
The audio preprocessor to use in the union of audio preprocessors.
Definition: TeamTalk.cs:1447
TTAudioPreprocessor ttpreprocessor
Used when nPreprocessor is BearWare.AudioPreprocessorType.TEAMTALK_AUDIOPREPROCESSOR.
Definition: TeamTalk.cs:1453
A struct containing the properties of a banned user.
Definition: TeamTalk.cs:2025
string szIPAddress
IP-address of banned user.
Definition: TeamTalk.cs:2028
string szNickname
Nickname of banned user. Read-only property.
Definition: TeamTalk.cs:2037
string szChannelPath
Channel where user was located when banned.
Definition: TeamTalk.cs:2031
string szOwner
The username of the user who made the ban.
Definition: TeamTalk.cs:2045
string szUsername
Username of banned user.
Definition: TeamTalk.cs:2040
BanType uBanTypes
The type of ban that applies to this banned user.
Definition: TeamTalk.cs:2042
string szBanTime
Date and time when user was banned. Read-only property.
Definition: TeamTalk.cs:2034
A struct containing the properties of a channel.
Definition: TeamTalk.cs:2571
int nTransmitUsersQueueDelayMSec
Delay for switching to next active voice user in transmitUsersQueue.
Definition: TeamTalk.cs:2682
int[] transmitUsersQueue
The users currently queued for voice or media file transmission.
Definition: TeamTalk.cs:2673
void AddTransmitUser(int nUserID, StreamType uStreamType)
Helper function for adding a user and BearWare.StreamType to transmitUsers.
Definition: TeamTalk.cs:2696
int GetTransmitUserCount()
Get the number of users who can currently transmit to the BearWare.ChannelType.CHANNEL_CLASSROOM.
Definition: TeamTalk.cs:2723
AudioConfig audiocfg
The audio configuration which users who join the channel should use.
Definition: TeamTalk.cs:2610
void RemoveTransmitUser(int nUserID, StreamType uStreamType)
Helper function for removing a BearWare.StreamType for a user in transmitUsers.
Definition: TeamTalk.cs:2734
int nTimeOutTimerMediaFileMSec
Time out timer for media file stream. The maximum time in miliseconds a user can transmit a media fil...
Definition: TeamTalk.cs:2692
bool bPassword
Whether password is required to join channel. Read-only property.
Definition: TeamTalk.cs:2591
string szPassword
Password to join the channel. When extracted through TeamTalkBase.GetChannel() the password will only...
Definition: TeamTalk.cs:2588
long nDiskQuota
Number of bytes available for file storage.
Definition: TeamTalk.cs:2599
int[] transmitUsers
List of users who can transmit in a channel.
Definition: TeamTalk.cs:2667
StreamType GetTransmitStreamTypes(int nUserID)
Helper function for getting the BearWare.StreamType a user can transmit by querying transmitUsers.
Definition: TeamTalk.cs:2712
string szTopic
Topic of the channel.
Definition: TeamTalk.cs:2583
AudioCodec audiocodec
The audio codec used by users in the channel.
Definition: TeamTalk.cs:2607
int nUserData
User specific data which will be stored on persistent storage on the server if the channel type is Be...
Definition: TeamTalk.cs:2597
int nTimeOutTimerVoiceMSec
Time out timer for voice stream. The maximum time in miliseconds a user can transmit voice without ch...
Definition: TeamTalk.cs:2687
string szOpPassword
Password to become channel operator.
Definition: TeamTalk.cs:2603
int nParentID
Parent channel ID. 0 means no parent channel, i.e. it's the root channel.
Definition: TeamTalk.cs:2574
int nChannelID
The channel's ID. A value from 1 - BearWare.TeamTalkBase.TT_CHANNELID_MAX.
Definition: TeamTalk.cs:2577
ChannelType uChannelType
A bitmask of the type of channel based on BearWare.ChannelType.
Definition: TeamTalk.cs:2593
int nMaxUsers
Max number of users in channel.
Definition: TeamTalk.cs:2605
string szName
Name of the channel.
Definition: TeamTalk.cs:2580
string szErrorMsg
Text message describing the error.
Definition: TeamTalk.cs:3339
int nErrorNo
Error number based on BearWare.ClientError.
Definition: TeamTalk.cs:3336
Control timers for sending keep alive information to the server.
Definition: TeamTalk.cs:2892
int nUdpConnectTimeoutMSec
The duration before the client instance should give up trying to connect to the server on UDP....
Definition: TeamTalk.cs:2934
int nUdpKeepAliveRTXMSec
Client instance's interval for retransmitting UDP keep alive packets. If server hasn't responded to U...
Definition: TeamTalk.cs:2919
int nUdpConnectRTXMSec
Client instance's interval for retransmitting UDP connect packets. UDP connect packets are only sent ...
Definition: TeamTalk.cs:2926
int nTcpKeepAliveIntervalMSec
Client instance's interval between TeamTalkBase.DoPing() command. Read-only value....
Definition: TeamTalk.cs:2907
int nUdpKeepAliveIntervalMSec
Client instance's interval between sending UDP keep alive packets. The UDP keep alive packets are use...
Definition: TeamTalk.cs:2913
int nConnectionLostMSec
The duration before the TeamTalk instance should consider the client/server connection lost.
Definition: TeamTalk.cs:2903
Statistics of bandwidth usage and ping times in the local client instance.
Definition: TeamTalk.cs:2943
long nVoiceBytesRecv
Voice data received (on UDP).
Definition: TeamTalk.cs:2951
int nSoundInputDeviceDelayMSec
Delay of sound input device until the first audio frame is delivered (in msec).
Definition: TeamTalk.cs:2993
long nVideoCaptureBytesRecv
Video data received (on UDP).
Definition: TeamTalk.cs:2955
int nTcpPingTimeMs
Response time to server on TCP (based on ping/pong sent at a specified interval. Set to -1 if not cur...
Definition: TeamTalk.cs:2975
int nUdpServerSilenceSec
The number of seconds nothing has been received by the client on UDP.
Definition: TeamTalk.cs:2981
long nMediaFileVideoBytesSent
Video from media file data sent (on UDP).
Definition: TeamTalk.cs:2961
long nMediaFileVideoBytesRecv
Video from media file data received (on UDP).
Definition: TeamTalk.cs:2963
long nMediaFileAudioBytesSent
Audio from media file data sent (on UDP).
Definition: TeamTalk.cs:2957
long nVoiceBytesSent
Voice data sent (on UDP).
Definition: TeamTalk.cs:2949
long nUdpBytesSent
Bytes sent on UDP.
Definition: TeamTalk.cs:2945
long nMediaFileAudioBytesRecv
Audio from media file data received (on UDP).
Definition: TeamTalk.cs:2959
long nVideoCaptureBytesSent
Video data sent (on UDP).
Definition: TeamTalk.cs:2953
int nTcpServerSilenceSec
The number of seconds nothing has been received by the client on TCP.
Definition: TeamTalk.cs:2978
long nUdpBytesRecv
Bytes received on UDP.
Definition: TeamTalk.cs:2947
long nDesktopBytesSent
Desktop data sent (on UDP).
Definition: TeamTalk.cs:2965
long nDesktopBytesRecv
Desktop data received (on UDP).
Definition: TeamTalk.cs:2967
int nUdpPingTimeMs
Response time to server on UDP (based on ping/pong sent at a specified interval. Set to -1 if not cur...
Definition: TeamTalk.cs:2971
Constants for BearWare.DesktopInput.
Definition: TeamTalk.cs:860
A struct containing a mouse or keyboard event.
Definition: TeamTalk.cs:822
ushort uMousePosX
The X coordinate of the mouse. If used with WindowsHelper.Execute() and the mouse position should be ...
Definition: TeamTalk.cs:826
uint uKeyCode
The key-code (or mouse button) pressed. If used with TeamTalkBase.DesktopInput_Execute() and no key (...
Definition: TeamTalk.cs:836
DesktopInput(bool set_defaults)
When true initializes the desktop input to ignore mouse and key values.
Definition: TeamTalk.cs:841
ushort uMousePosY
The Y coordinate of the mouse. If used with TeamTalkBase.DesktopInput_Execute() and the mouse positio...
Definition: TeamTalk.cs:830
DesktopKeyState uKeyState
The state of the key (or mouse button) pressed, i.e. if it's up or down.
Definition: TeamTalk.cs:839
A struct containing the properties of a shared desktop window.
Definition: TeamTalk.cs:774
int nSessionID
The ID of the session which the bitmap belongs to. If the session ID changes it means the user has st...
Definition: TeamTalk.cs:790
int nWidth
The width in pixels of the bitmap.
Definition: TeamTalk.cs:776
DesktopProtocol nProtocol
The desktop protocol used for transmitting the desktop window.
Definition: TeamTalk.cs:792
int nBytesPerLine
The number of bytes for each scan-line in the bitmap. Zero means 4-byte aligned.
Definition: TeamTalk.cs:783
IntPtr frameBuffer
A buffer pointing to the bitmap data (often refered to as Scan0).
Definition: TeamTalk.cs:794
int nFrameBufferSize
The size in bytes of the buffer allocate in frameBuffer. Typically nBytesPerLine * nHeight.
Definition: TeamTalk.cs:797
BitmapFormat bmpFormat
The format of the bitmap.
Definition: TeamTalk.cs:780
int nHeight
The height in pixels of the bitmap.
Definition: TeamTalk.cs:778
Configure peer verification for encrypted connection.
Definition: TeamTalk.cs:2834
string szCAFile
Path to Certificate Authority (CA) Certificate in PEM format.
Definition: TeamTalk.cs:2850
bool bVerifyClientOnce
Whether to only verify client's certificate once during initial connection.
Definition: TeamTalk.cs:2872
int nVerifyDepth
Set limit to depth in the certificate chain during the verification procedure.
Definition: TeamTalk.cs:2880
string szCertificateFile
Path to SSL certificate in PEM format.
Definition: TeamTalk.cs:2841
string szPrivateKeyFile
Path to certificate's private key.
Definition: TeamTalk.cs:2844
bool bVerifyPeer
Verify that peer (client or server) uses a certificate that has been generated by the Certificate Aut...
Definition: TeamTalk.cs:2861
string szCADir
Path to directory containing Certificate Authority (CA) Certificates in PEM format.
Definition: TeamTalk.cs:2854
A struct containing the properties of a file transfer.
Definition: TeamTalk.cs:2778
bool bInbound
TRUE if download and FALSE if upload.
Definition: TeamTalk.cs:2796
FileTransferStatus nStatus
Status of file transfer.
Definition: TeamTalk.cs:2780
string szRemoteFileName
The filename in the channel.
Definition: TeamTalk.cs:2790
string szLocalFilePath
The file path on local disk.
Definition: TeamTalk.cs:2787
long nTransferred
The number of bytes transferred so far.
Definition: TeamTalk.cs:2794
long nFileSize
The size of the file being transferred.
Definition: TeamTalk.cs:2792
int nTransferID
The ID identifying the file transfer.
Definition: TeamTalk.cs:2782
int nChannelID
The channel where the file is/will be located.
Definition: TeamTalk.cs:2784
Configuration parameters for the Jitter Buffer.
Definition: TeamTalk.cs:3003
int nMaxAdaptiveDelayMSec
A hard maximum delay on the adaptive delay. Only valid when higher than zero. Default = 0.
Definition: TeamTalk.cs:3010
int nActiveAdaptiveDelayMSec
The current adaptive delay. When used with TeamTalkBase.SetUserJitterControl(), this value is used as...
Definition: TeamTalk.cs:3017
bool bUseAdativeDejitter
Turns adaptive jitter buffering ON/OFF. Default is OFF.
Definition: TeamTalk.cs:3007
int nFixedDelayMSec
The fixed delay in milliseconds. Default = 0.
Definition: TeamTalk.cs:3005
Struct describing the audio and video format used by a media file.
Definition: TeamTalk.cs:1627
uint uElapsedMSec
The elapsed time of the media file in miliseconds.
Definition: TeamTalk.cs:1641
AudioFormat audioFmt
The audio properties of the media file.
Definition: TeamTalk.cs:1635
VideoFormat videoFmt
The video properties of the media file.
Definition: TeamTalk.cs:1637
string szFileName
Name of file.
Definition: TeamTalk.cs:1633
uint uDurationMSec
The duration of the media file in miliseconds.
Definition: TeamTalk.cs:1639
MediaFileStatus nStatus
Status of media file if it's being saved to disk.
Definition: TeamTalk.cs:1630
Properties for initializing or updating a file for media streaming.
Definition: TeamTalk.cs:1653
uint uOffsetMSec
Offset in milliseconds in the media file where to start playback. Pass BearWare.TeamTalkBase....
Definition: TeamTalk.cs:1658
AudioPreprocessor audioPreprocessor
Option to activate audio preprocessor on local media file playback.
Definition: TeamTalk.cs:1662
bool bPaused
Start or pause media file playback.
Definition: TeamTalk.cs:1660
OPUS audio codec settings. For detailed information about the OPUS codec check out http://www....
Definition: TeamTalk.cs:1049
int nFrameSizeMSec
OPUS supports 2.5, 5, 10, 20, 40, 60, 80, 100 and 120 msec. If nFrameSizeMSec is 0 then nFrameSizeMSe...
Definition: TeamTalk.cs:1087
bool bFEC
Forward error correction. Corrects errors if there's packetloss.
Definition: TeamTalk.cs:1064
bool bVBR
Enable variable bitrate.
Definition: TeamTalk.cs:1073
int nComplexity
Complexity of encoding (affects CPU usage). Value from 0-10.
Definition: TeamTalk.cs:1061
bool bDTX
Discontinuous transmission. Enables "null" packets during silence.
Definition: TeamTalk.cs:1067
int nSampleRate
The sample rate to use. Sample rate must be 8000, 12000, 16000, 24000 or 48000 Hz.
Definition: TeamTalk.cs:1052
int nApplication
Application of encoded audio, VoIP or music.
Definition: TeamTalk.cs:1058
bool bVBRConstraint
Enable constrained VBR. bVBR must be enabled to enable this.
Definition: TeamTalk.cs:1076
int nTxIntervalMSec
Duration of audio before each transmission. Minimum is 2 msec. Recommended is 40 msec....
Definition: TeamTalk.cs:1083
int nBitRate
Bitrate for encoded audio. Should be between BearWare.OpusConstants.OPUS_MIN_BITRATE and BearWare....
Definition: TeamTalk.cs:1071
int nChannels
Mono = 1 or stereo = 2.
Definition: TeamTalk.cs:1054
OPUS constants for BearWare.OpusCodec.
Definition: TeamTalk.cs:1092
const bool DEFAULT_OPUS_FEC
Definition: TeamTalk.cs:1121
const int DEFAULT_OPUS_COMPLEXITY
Definition: TeamTalk.cs:1120
const bool DEFAULT_OPUS_VBR
Definition: TeamTalk.cs:1123
const bool DEFAULT_OPUS_VBRCONSTRAINT
Definition: TeamTalk.cs:1124
const int DEFAULT_OPUS_APPLICATION
Definition: TeamTalk.cs:1117
const int OPUS_MIN_FRAMESIZE
The minimum frame size for OPUS codec. Checkout nFrameSizeMSec of BearWare.OpusCodec.
Definition: TeamTalk.cs:1108
const int DEFAULT_OPUS_CHANNELS
Definition: TeamTalk.cs:1119
const bool DEFAULT_OPUS_DTX
Definition: TeamTalk.cs:1122
const int OPUS_MAX_BITRATE
The maximum bitrate for OPUS codec. Checkout nBitRate of BearWare.OpusCodec.
Definition: TeamTalk.cs:1104
const int DEFAULT_OPUS_DELAY
Definition: TeamTalk.cs:1126
const int OPUS_REALMAX_FRAMESIZE
The real maximum frame size for OPUS codec. Checkout nFrameSizeMSec of BearWare.OpusCodec....
Definition: TeamTalk.cs:1115
const int OPUS_MAX_FRAMESIZE
The maximum frame size for OPUS codec. Checkout nFrameSizeMSec of BearWare.OpusCodec.
Definition: TeamTalk.cs:1111
const int DEFAULT_OPUS_SAMPLERATE
Definition: TeamTalk.cs:1118
const int OPUS_APPLICATION_AUDIO
Audio encoding is for music. This value should be set as nApplicaton in BearWare.OpusCodec.
Definition: TeamTalk.cs:1098
const int OPUS_MIN_BITRATE
The minimum bitrate for OPUS codec. Checkout nBitRate of BearWare.OpusCodec.
Definition: TeamTalk.cs:1101
const int DEFAULT_OPUS_BITRATE
Definition: TeamTalk.cs:1125
const int OPUS_APPLICATION_VOIP
Audio encoding is for VoIP. This value should be set as nApplicaton in BearWare.OpusCodec.
Definition: TeamTalk.cs:1095
A struct containing the properties of a file in a BearWare.Channel.
Definition: TeamTalk.cs:2804
int nChannelID
The ID of the channel where the file is located.
Definition: TeamTalk.cs:2806
long nFileSize
The size of the file.
Definition: TeamTalk.cs:2813
string szUploadTime
Time when file was uploaded. Date/time is converted local time.
Definition: TeamTalk.cs:2820
string szFileName
The name of the file.
Definition: TeamTalk.cs:2811
int nFileID
The ID identifying the file.
Definition: TeamTalk.cs:2808
string szUsername
Username of the person who uploaded the files.
Definition: TeamTalk.cs:2816
A struct containing the properties of the server's settings.
Definition: TeamTalk.cs:1860
int nMaxMediaFileTxPerSecond
The maximum number of bytes per second which the server will allow for media file packets....
Definition: TeamTalk.cs:1899
int nUserTimeout
The number of seconds before a user who hasn't responded to keepalives will be kicked off the server.
Definition: TeamTalk.cs:1916
bool bAutoSave
Whether the server automatically saves changes.
Definition: TeamTalk.cs:1909
string szServerProtocolVersion
The version of the server's protocol.
Definition: TeamTalk.cs:1922
int nMaxLoginsPerIPAddress
The maximum number of users allowed to log in with the same IP-address. 0 means disabled.
Definition: TeamTalk.cs:1886
ServerLogEvent uServerLogEvents
The events that are logged on the server.
Definition: TeamTalk.cs:1942
string szAccessToken
A randomly generated 256 bit access token created by the server to identify the login session....
Definition: TeamTalk.cs:1936
int nMaxDesktopTxPerSecond
The maximum number of bytes per second which the server will allow for desktop packets....
Definition: TeamTalk.cs:1903
int nUdpPort
The server's UDP port.
Definition: TeamTalk.cs:1913
int nLoginDelayMSec
Number of msec before an IP-address can make another login attempt. If less than this amount then Tea...
Definition: TeamTalk.cs:1931
int nMaxTotalTxPerSecond
The amount of bytes per second which the server will allow for packet forwarding. If this value is ex...
Definition: TeamTalk.cs:1907
string szServerName
The server's name.
Definition: TeamTalk.cs:1863
int nMaxLoginAttempts
The maximum number of logins with wrong password before banning user's IP-address.
Definition: TeamTalk.cs:1883
string szMOTD
The message of the day. Read-only property. Use szMOTDRaw to update this property.
Definition: TeamTalk.cs:1867
string szMOTDRaw
The message of the day including variables. The result of the szMOTDRaw string will be displayed in s...
Definition: TeamTalk.cs:1877
int nMaxUsers
The maximum number of users allowed on the server. A user with admin account can ignore this.
Definition: TeamTalk.cs:1880
int nTcpPort
The server's TCP port.
Definition: TeamTalk.cs:1911
string szServerVersion
The server version.
Definition: TeamTalk.cs:1919
int nMaxVoiceTxPerSecond
The maximum number of bytes per second which the server will allow for voice packets....
Definition: TeamTalk.cs:1890
int nMaxVideoCaptureTxPerSecond
The maximum number of bytes per second which the server will allow for video input packets....
Definition: TeamTalk.cs:1895
A struct containing the server's statistics, i.e. bandwidth usage and user activity.
Definition: TeamTalk.cs:1954
long nMediaFileBytesTX
The number of bytes in media file packets sent from the server to clients.
Definition: TeamTalk.cs:1975
long nVideoCaptureBytesTX
The number of bytes in video packets sent from the server to clients.
Definition: TeamTalk.cs:1969
long nFilesRx
The number of bytes for file transmission received by the server.
Definition: TeamTalk.cs:1994
long nDesktopBytesTX
The number of bytes in desktop packets sent from the server to clients.
Definition: TeamTalk.cs:1981
long nFilesTx
The number of bytes for file transmission transmitted from the server.
Definition: TeamTalk.cs:1991
long nUptimeMSec
The server's uptime in msec.
Definition: TeamTalk.cs:1996
long nVoiceBytesRX
The number of bytes in audio packets received by the server from clients.
Definition: TeamTalk.cs:1966
int nUsersServed
The number of users who have logged on to the server.
Definition: TeamTalk.cs:1986
long nTotalBytesRX
The number of bytes received by the server from clients.
Definition: TeamTalk.cs:1960
long nTotalBytesTX
The number of bytes sent from the server to clients.
Definition: TeamTalk.cs:1957
long nVideoCaptureBytesRX
The number of bytes in video packets received by the server from clients.
Definition: TeamTalk.cs:1972
long nDesktopBytesRX
The number of bytes in desktop packets received by the server from clients.
Definition: TeamTalk.cs:1984
long nVoiceBytesTX
The number of bytes in audio packets sent from the server to clients.
Definition: TeamTalk.cs:1963
long nMediaFileBytesRX
The number of bytes in media file packets received by the server from clients.
Definition: TeamTalk.cs:1978
int nUsersPeak
The highest numbers of users online.
Definition: TeamTalk.cs:1988
A struct which describes the properties of a window which can be shared.
Definition: TeamTalk.cs:9155
IntPtr hWnd
The Windows handle of the window.
Definition: TeamTalk.cs:9157
string szWindowTitle
The title of the window.
Definition: TeamTalk.cs:9168
int nWndX
X coordinate of the window relative to the Windows desktop.
Definition: TeamTalk.cs:9159
int nHeight
The height in pixels of the window.
Definition: TeamTalk.cs:9165
int nWndY
Y coordinate of the window relative to the Windows desktop.
Definition: TeamTalk.cs:9161
int nWidth
The width in pixels of the window.
Definition: TeamTalk.cs:9163
IDs for sound devices.
Definition: TeamTalk.cs:345
const int TT_SOUNDDEVICE_ID_OPENSLES_VOICECOM
Sound device ID for Android OpenSL ES voice communication mode. This device uses the OpenSL ES' Andro...
Definition: TeamTalk.cs:364
const int TT_SOUNDDEVICE_ID_OPENSLES_DEFAULT
Sound device ID for Android OpenSL ES default audio device. Note that this sound device may also exis...
Definition: TeamTalk.cs:359
const int TT_SOUNDDEVICE_ID_TEAMTALK_VIRTUAL
Sound device ID for virtual TeamTalk sound device.
Definition: TeamTalk.cs:373
const uint TT_SOUNDDEVICE_ID_MASK
Extract sound device ID of nDeviceID in BearWare.SoundDevice by and'ing this value.
Definition: TeamTalk.cs:395
const int TT_SOUNDDEVICE_ID_VOICEPREPROCESSINGIO
Sound device ID for iOS AudioUnit subtype Voice-Processing I/O Unit. This sound device ID include the...
Definition: TeamTalk.cs:354
const uint TT_SOUNDDEVICE_ID_SHARED_FLAG
Flag/bit in nDeviceID telling if the BearWare.SoundDevice is a shared version of an existing sound de...
Definition: TeamTalk.cs:389
const int TT_SOUNDDEVICE_ID_REMOTEIO
Sound device ID for iOS AudioUnit subtype Remote I/O Unit.
Definition: TeamTalk.cs:348
Set up audio effects supported by the sound device.
Definition: TeamTalk.cs:290
bool bEnableEchoCancellation
Enable echo cancellation.
Definition: TeamTalk.cs:339
bool bEnableAGC
Enable Automatic Gain Control.
Definition: TeamTalk.cs:306
bool bEnableDenoise
Enable noise suppression.
Definition: TeamTalk.cs:323
A struct containing the properties of a sound device for either playback or recording.
Definition: TeamTalk.cs:218
int nWaveDeviceID
A Windows specific ID to the sound device.
Definition: TeamTalk.cs:252
string szDeviceID
An identifier uniquely identifying the sound device even when new sound devices are being added and r...
Definition: TeamTalk.cs:235
bool bSupports3D
Whether the sound device supports 3D-sound effects.
Definition: TeamTalk.cs:255
SoundDeviceFeature uSoundDeviceFeatures
Additional features available for this sound device. The sound device features can be used to enable ...
Definition: TeamTalk.cs:277
int[] inputSampleRates
Supported sample rates by device for recording. A zero value terminates the list of supported sample ...
Definition: TeamTalk.cs:264
int nDefaultSampleRate
The default sample rate for the sound device.
Definition: TeamTalk.cs:271
int nMaxInputChannels
The maximum number of input channels.
Definition: TeamTalk.cs:257
SoundSystem nSoundSystem
The sound system used by the sound device.
Definition: TeamTalk.cs:226
int nDeviceID
The ID of the sound device. Used for passing to TeamTalkBase.InitSoundInputDevice() and TeamTalkBase....
Definition: TeamTalk.cs:224
string szDeviceName
The name of the sound device.
Definition: TeamTalk.cs:229
int[] outputSampleRates
Supported sample rates by device for playback. A zero value terminates the list of supported sample r...
Definition: TeamTalk.cs:269
int nMaxOutputChannels
The maximum number of output channels.
Definition: TeamTalk.cs:259
An enum encapsulation the minimum, maximum and default sound levels for input and output sound device...
Definition: TeamTalk.cs:402
const int SOUND_VU_MAX
The maximum value of recorded audio.
Definition: TeamTalk.cs:408
const int SOUND_VOLUME_MAX
The maximum volume.
Definition: TeamTalk.cs:422
const int SOUND_GAIN_MIN
The minimum gain level (since it's zero it means silence).
Definition: TeamTalk.cs:464
const int SOUND_VOLUME_MIN
The minimum volume.
Definition: TeamTalk.cs:436
const int SOUND_VU_MIN
The minimum value of recorded audio.
Definition: TeamTalk.cs:414
const int SOUND_GAIN_DEFAULT
The default gain level.
Definition: TeamTalk.cs:455
const int SOUND_GAIN_MAX
The maximum gain level.
Definition: TeamTalk.cs:445
const int SOUND_VOLUME_DEFAULT
The default volume. Use this whenever possible since it requires the least amount of CPU usage.
Definition: TeamTalk.cs:430
Speex audio codec settings for Constant Bitrate mode (CBR).
Definition: TeamTalk.cs:918
int nQuality
A value from 1-10. As of DLL version 4.2 also 0 is supported.
Definition: TeamTalk.cs:926
int nTxIntervalMSec
Milliseconds of audio data before each transmission.
Definition: TeamTalk.cs:937
int nBandmode
Set to 0 for 8 KHz (narrow band), set to 1 for 16 KHz (wide band), set to 2 for 32 KHz (ultra-wide ba...
Definition: TeamTalk.cs:922
bool bStereoPlayback
Playback should be done in stereo.
Definition: TeamTalk.cs:943
Speex constants for BearWare.SpeexCodec and BearWare.SpeexVBRCodec.
Definition: TeamTalk.cs:993
const int SPEEX_BANDMODE_UWIDE
Use BearWare.SpeexCodec or BearWare.SpeexVBRCodec as 32 KHz.
Definition: TeamTalk.cs:999
const bool DEFAULT_SPEEX_DTX
Default Speex DTX for BearWare.SpeexCodec or BearWare.SpeexVBRCodec.
Definition: TeamTalk.cs:1042
const int SPEEX_NB_MAX_BITRATE
The maximum bitrate for Speex codec in 8 KHz mode, i.e. quality set to 10.
Definition: TeamTalk.cs:1009
const int SPEEX_QUALITY_MAX
The maximum quality for Speex codec.
Definition: TeamTalk.cs:1003
const int SPEEX_QUALITY_MIN
The minimum quality for Speex codec.
Definition: TeamTalk.cs:1001
const int SPEEX_WB_MAX_BITRATE
The maximum bitrate for Speex codec in 16 KHz mode, i.e. quality set to 10.
Definition: TeamTalk.cs:1015
const int SPEEX_WB_MIN_BITRATE
The minimum bitrate for Speex codec in 16 KHz mode, i.e. quality set to 0.
Definition: TeamTalk.cs:1012
const int DEFAULT_SPEEX_DELAY
Default Speex delay for BearWare.SpeexCodec or BearWare.SpeexVBRCodec.
Definition: TeamTalk.cs:1030
const int SPEEX_BANDMODE_NARROW
Use BearWare.SpeexCodec or BearWare.SpeexVBRCodec as 8 KHz.
Definition: TeamTalk.cs:995
const int SPEEX_UWB_MIN_BITRATE
The minimum bitrate for Speex codec in 32 KHz mode, i.e. quality set to 0.
Definition: TeamTalk.cs:1018
const int DEFAULT_SPEEX_BITRATE
Default Speex bitrate for BearWare.SpeexCodec or BearWare.SpeexVBRCodec.
Definition: TeamTalk.cs:1036
const int SPEEX_BANDMODE_WIDE
Use BearWare.SpeexCodec or BearWare.SpeexVBRCodec as 16 KHz.
Definition: TeamTalk.cs:997
const int SPEEX_UWB_MAX_BITRATE
The maximum bitrate for Speex codec in 32 KHz mode, i.e. quality set to 10.
Definition: TeamTalk.cs:1021
const int DEFAULT_SPEEX_MAXBITRATE
Default Speex max bitrate for BearWare.SpeexCodec or BearWare.SpeexVBRCodec.
Definition: TeamTalk.cs:1039
const int DEFAULT_SPEEX_BANDMODE
Default Speex bandmode for BearWare.SpeexCodec or BearWare.SpeexVBRCodec.
Definition: TeamTalk.cs:1024
const bool DEFAULT_SPEEX_SIMSTEREO
Default Speex stereo playback for BearWare.SpeexCodec or BearWare.SpeexVBRCodec.
Definition: TeamTalk.cs:1033
const int DEFAULT_SPEEX_QUALITY
Default Speex quality for BearWare.SpeexCodec or BearWare.SpeexVBRCodec.
Definition: TeamTalk.cs:1027
const int SPEEX_NB_MIN_BITRATE
The minimum bitrate for Speex codec in 8 KHz mode, i.e. quality set to 0.
Definition: TeamTalk.cs:1006
Default values for BearWare.SpeexDSP.
Definition: TeamTalk.cs:1461
const int DEFAULT_DENOISE_SUPPRESS
Definition: TeamTalk.cs:1468
const int DEFAULT_ECHO_SUPPRESS_ACTIVE
Definition: TeamTalk.cs:1471
const bool DEFAULT_AGC_ENABLE
Definition: TeamTalk.cs:1462
const int DEFAULT_ECHO_SUPPRESS
Definition: TeamTalk.cs:1470
const int DEFAULT_AGC_DEC_MAXDB
Definition: TeamTalk.cs:1465
const bool DEFAULT_ECHO_ENABLE
Definition: TeamTalk.cs:1469
const bool DEFAULT_DENOISE_ENABLE
Definition: TeamTalk.cs:1467
const int DEFAULT_AGC_INC_MAXDB
Definition: TeamTalk.cs:1464
const int DEFAULT_AGC_GAINMAXDB
Definition: TeamTalk.cs:1466
const int DEFAULT_AGC_GAINLEVEL
Definition: TeamTalk.cs:1463
Audio configuration specifying how recorded audio from sound input device should be preprocessed befo...
Definition: TeamTalk.cs:1148
SpeexDSP(bool set_defaults)
Definition: TeamTalk.cs:1218
int nMaxDecDBSec
Used so volume should not be attenuated too quickly (maximal gain decrease in dB/second)....
Definition: TeamTalk.cs:1172
bool bEnableDenoise
Whether clients who join the channel should automatically enable denoising.
Definition: TeamTalk.cs:1181
bool bEnableAGC
Whether clients who join a BearWare.Channel should enable AGC with the settings specified nGainLevel,...
Definition: TeamTalk.cs:1157
int nMaxIncDBSec
Used so volume should not be amplified too quickly (maximal gain increase in dB/second)....
Definition: TeamTalk.cs:1166
int nGainLevel
A value from 0 to 32768. Default is 8000. Value is ignored if bEnableAGC is FALSE.
Definition: TeamTalk.cs:1161
int nEchoSuppressActive
Set maximum attenuation of the residual echo in dB when near end is active (negative number)....
Definition: TeamTalk.cs:1216
int nEchoSuppress
Set maximum attenuation of the residual echo in dB (negative number). Default is -40....
Definition: TeamTalk.cs:1211
int nMaxGainDB
Ensure volume doesn't become too loud (maximal gain in dB). Default is 30. Value is ignored if bEnabl...
Definition: TeamTalk.cs:1177
bool bEnableEchoCancellation
Speex DSP is used for specifying how recorded audio from a sound input device should be preprocessed ...
Definition: TeamTalk.cs:1206
int nMaxNoiseSuppressDB
Maximum attenuation of the noise in dB. Negative value! Default value is -30. Value is ignored if bEn...
Definition: TeamTalk.cs:1186
Speex audio codec settings for Variable Bitrate mode (VBR).
Definition: TeamTalk.cs:953
int nTxIntervalMSec
Milliseconds of audio data before each transmission.
Definition: TeamTalk.cs:983
int nMaxBitRate
The maximum bitrate at which the audio codec is allowed to output audio. Set to zero if it should be ...
Definition: TeamTalk.cs:970
bool bDTX
Enable/disable discontinuous transmission. When enabled Speex will ignore silence,...
Definition: TeamTalk.cs:974
int nQuality
A value from 0-10. If nBitRate is non-zero it will override this value.
Definition: TeamTalk.cs:959
int nBandmode
Set to 0 for 8 KHz (narrow band), set to 1 for 16 KHz (wide band), set to 2 for 32 KHz (ultra-wide ba...
Definition: TeamTalk.cs:956
int nBitRate
The bitrate at which the audio codec should output encoded audio data. Dividing it by 8 gives roughly...
Definition: TeamTalk.cs:966
bool bStereoPlayback
Playback should be done in stereo.
Definition: TeamTalk.cs:988
Use TeamTalk's internal audio preprocessor for gain audio. Same as used for TeamTalkBase....
Definition: TeamTalk.cs:1257
bool bMuteLeftSpeaker
Whether to mute left speaker in stereo playback.
Definition: TeamTalk.cs:1263
bool bMuteRightSpeaker
Whether to mute right speaker in stereo playback.
Definition: TeamTalk.cs:1265
int nGainLevel
Gain level between BearWare.SoundLevel.SOUND_GAIN_MIN and BearWare.SoundLevel.SOUND_GAIN_MAX....
Definition: TeamTalk.cs:1261
A struct containing the properties of an event.
Definition: TeamTalk.cs:3972
uint uReserved
Reserved. To preserve alignment.
Definition: TeamTalk.cs:3980
int nSource
The source of the event depends on wmMsg.
Definition: TeamTalk.cs:3976
ClientEvent nClientEvent
The event's message number.
Definition: TeamTalk.cs:3974
TTType ttType
Specifies which member to access in the union.
Definition: TeamTalk.cs:3978
object DataToObject()
Definition: TeamTalk.cs:3985
A struct containing the properties of a text message sent by a user.
Definition: TeamTalk.cs:2493
bool bMore
Whether this text message is to be merged with next text message.
Definition: TeamTalk.cs:2512
int nChannelID
Set to zero if nMsgType is BearWare.TextMsgType BearWare.TextMsgType.MSGTYPE_USER or BearWare....
Definition: TeamTalk.cs:2505
int nToUserID
Set to zero if channel message.
Definition: TeamTalk.cs:2502
string szMessage
The actual text message. The message can be multi-line (include EOL)
Definition: TeamTalk.cs:2509
int nFromUserID
Will be set automatically on outgoing message.
Definition: TeamTalk.cs:2497
string szFromUsername
The originators username.
Definition: TeamTalk.cs:2500
TextMsgType nMsgType
The type of text message.
Definition: TeamTalk.cs:2495
FileTransfer filetransfer
Definition: TeamTalk.cs:4037
ClientErrorMsg clienterrormsg
Definition: TeamTalk.cs:4031
DesktopInput desktopinput
Definition: TeamTalk.cs:4035
TextMessage textmessage
Definition: TeamTalk.cs:4045
ServerProperties serverproperties
Definition: TeamTalk.cs:4043
UserAccount useraccount
Definition: TeamTalk.cs:4049
MediaFileInfo mediafileinfo
Definition: TeamTalk.cs:4039
RemoteFile remotefile
Definition: TeamTalk.cs:4041
A struct containing the properties of a user account.
Definition: TeamTalk.cs:2098
string szNote
Additional notes about this user.
Definition: TeamTalk.cs:2117
int nUserData
A user data field which can be used for additional information. The nUserData field of the BearWare....
Definition: TeamTalk.cs:2114
string szInitChannel
User should (manually) join this channel after login. If an initial channel is specified in the user'...
Definition: TeamTalk.cs:2123
UserType uUserType
A bitmask of the type of user based on BearWare.UserType.
Definition: TeamTalk.cs:2106
string szPassword
The account's password.
Definition: TeamTalk.cs:2104
UserRight uUserRights
A bitmask based on BearWare.UserRight which specifies the rights the user have who logs onto the serv...
Definition: TeamTalk.cs:2110
string szLastModified
Timestamp of last modification of user account. Date/time is converted local time.
Definition: TeamTalk.cs:2141
int[] autoOperatorChannels
Channels where this user will automatically become channel operator when joining. The channels must b...
Definition: TeamTalk.cs:2128
AbusePrevention abusePrevent
Properties which can be set to prevent abuse of a server, e.g. limit number of commands issued.
Definition: TeamTalk.cs:2137
string szLastLoginTime
Timestamp of user account's last successful login. Read-only property. Date/time is converted local t...
Definition: TeamTalk.cs:2145
string szUsername
The account's username.
Definition: TeamTalk.cs:2101
int nAudioCodecBpsLimit
Bandwidth restriction for audio codecs created by this user. This value will hold the highest bitrate...
Definition: TeamTalk.cs:2132
A struct containing the properties of a user.
Definition: TeamTalk.cs:2283
int nVolumeVoice
The user's voice volume level. Note that it's a virtual volume which is being set since the master vo...
Definition: TeamTalk.cs:2359
int nStoppedDelayMediaFile
The delay of when a user should no longer be considered playing audio of a media file.
Definition: TeamTalk.cs:2373
int nChannelID
The channel which the user is currently participating in. 0 if none. This value can change as a resul...
Definition: TeamTalk.cs:2317
string szStatusMsg
The user's current status message. Invoke TeamTalkBase.DoChangeStatus() to change this value....
Definition: TeamTalk.cs:2346
int nActiveAdaptiveDelayMSec
The currently active adaptive jitter delay for received voice streams for this user.
Definition: TeamTalk.cs:2411
string szUsername
The szUsername of the user's BearWare.UserAccount. A user account is created by calling TeamTalkBase....
Definition: TeamTalk.cs:2293
int nStoppedDelayVoice
The delay of when a user should no longer be considered as talking.
Definition: TeamTalk.cs:2369
int nVolumeMediaFile
The user's voice volume level. Note that it's a virtual volume which is being set since the master vo...
Definition: TeamTalk.cs:2365
bool[] stereoPlaybackMediaFile
Check what speaker a user is outputting to. If index 0 is TRUE then left speaker is playing....
Definition: TeamTalk.cs:2399
Subscription uPeerSubscriptions
A bitmask of what this user subscribes to from local client instance. Invoking TeamTalkBase....
Definition: TeamTalk.cs:2329
string szIPAddress
The user's IP-address. This value is set by the server.
Definition: TeamTalk.cs:2305
int nUserID
The user's ID. A value from 1 - BearWare.TeamTalkBase.TT_USERID_MAX. This property is set by the serv...
Definition: TeamTalk.cs:2287
string szMediaStorageDir
Store audio received from this user to this folder.
Definition: TeamTalk.cs:2353
uint uVersion
The user's client version. This property is set by the server and will not change after login....
Definition: TeamTalk.cs:2311
string szClientName
The name of the client application which the user is using. This is the value passed as szClientName ...
Definition: TeamTalk.cs:2416
int nBufferMSecVoice
The size of the buffer (in msec) to hold voice content.
Definition: TeamTalk.cs:2403
float[] soundPositionVoice
User's position when using 3D-sound. Index 0 is x-axis, index 1 is y-axis and index 2 is Z-axis.
Definition: TeamTalk.cs:2380
UserState uUserState
A bitmask of the user's current state, e.g. talking, muted, etc.
Definition: TeamTalk.cs:2349
UserType uUserType
The uUserType of the user's BearWare.UserAccount. This property is set by the server and will not cha...
Definition: TeamTalk.cs:2302
int nStatusMode
The user's current status mode. Invoke TeamTalkBase.DoChangeStatus() to change this value....
Definition: TeamTalk.cs:2340
string szNickname
The user's nickname. Invoking TeamTalkBase.DoChangeNickname() changes this value. Event BearWare....
Definition: TeamTalk.cs:2335
float[] soundPositionMediaFile
User's position when using 3D-sound. Index 0 is x-axis, index 1 is y-axis and index 2 is Z-axis.
Definition: TeamTalk.cs:2387
bool[] stereoPlaybackVoice
Check what speaker a user is outputting to. If index 0 is TRUE then left speaker is playing....
Definition: TeamTalk.cs:2393
int nUserData
The nUserData of the user's BearWare.UserAccount. This field can be use to denote e....
Definition: TeamTalk.cs:2298
Subscription uLocalSubscriptions
A bitmask of what the local user subscribes to from this user. Invoking TeamTalkBase....
Definition: TeamTalk.cs:2323
int nBufferMSecMediaFile
The size of the buffer (in msec) to hold media file content.
Definition: TeamTalk.cs:2407
Packet reception and data statistics for a user.
Definition: TeamTalk.cs:2425
long nMediaFileVideoPacketsRecv
Number of media file video packets received from user. A video frame can consist of several video pac...
Definition: TeamTalk.cs:2447
long nVoicePacketsLost
Number of voice packets lost from user.
Definition: TeamTalk.cs:2429
long nMediaFileAudioPacketsLost
Number of media file audio packets lost from user.
Definition: TeamTalk.cs:2444
long nVideoCaptureFramesLost
Video frames which couldn't be shown because packets were lost.
Definition: TeamTalk.cs:2437
long nMediaFileVideoFramesLost
Media file video frames which couldn't be shown because packets were lost.
Definition: TeamTalk.cs:2452
long nMediaFileVideoFramesDropped
Number of media file video frames dropped because user application didn't retrieve video frames in ti...
Definition: TeamTalk.cs:2455
long nVideoCaptureFramesDropped
Number of video frames dropped because user application didn't retrieve video frames in time.
Definition: TeamTalk.cs:2440
long nVideoCaptureFramesRecv
Number of video frames received from user.
Definition: TeamTalk.cs:2434
long nMediaFileVideoFramesRecv
Number of media file video frames received from user.
Definition: TeamTalk.cs:2449
long nVoicePacketsRecv
Number of voice packets received from user.
Definition: TeamTalk.cs:2427
long nMediaFileAudioPacketsRecv
Number of media file audio packets received from user.
Definition: TeamTalk.cs:2442
long nVideoCapturePacketsRecv
Number of video packets received from user. A video frame can consist of several video packets.
Definition: TeamTalk.cs:2432
A struct containing the properties of a video capture device.
Definition: TeamTalk.cs:696
string szCaptureAPI
The name of the API used to capture video.
Definition: TeamTalk.cs:716
int nVideoFormatsCount
The number of capture formats available in captureFormats array.
Definition: TeamTalk.cs:722
VideoFormat[] videoFormats
The supported capture formats.
Definition: TeamTalk.cs:719
string szDeviceID
A string identifying the device.
Definition: TeamTalk.cs:699
string szDeviceName
The name of the capture device.
Definition: TeamTalk.cs:702
Struct used for specifying the video codec to use.
Definition: TeamTalk.cs:1606
Codec nCodec
Specifies member holds the codec settings. So far there is only one video codec to choose from,...
Definition: TeamTalk.cs:1611
WebMVP8Codec webm_vp8
Definition: TeamTalk.cs:1613
A struct containing the properties of a video capture format.
Definition: TeamTalk.cs:632
int nFPS_Denominator
The denominator of the video capture device's video format. Divinding nFPS_Numerator with nFPS_Denomi...
Definition: TeamTalk.cs:646
FourCC picFourCC
Picture format for capturing.
Definition: TeamTalk.cs:648
int nHeight
The height in pixels of the video device supported video format.
Definition: TeamTalk.cs:638
int nFPS_Numerator
The numerator of the video capture device's video format. Divinding nFPS_Numerator with nFPS_Denomina...
Definition: TeamTalk.cs:642
int nWidth
The width in pixels of the video device supported video format.
Definition: TeamTalk.cs:635
A RGB32 image where the pixels can be accessed directly in an allocated imageBuffer.
Definition: TeamTalk.cs:660
bool bKeyFrame
Whether the image acquired is a key-frame. If it is not a key-frame and there has been packet loss or...
Definition: TeamTalk.cs:677
int nFrameBufferSize
The size in bytes of the buffer allocate in frameBuffer.
Definition: TeamTalk.cs:682
int nHeight
The height in pixels of the image contained in imageBuffer.
Definition: TeamTalk.cs:666
int nStreamID
A unique identifier for the frames which are part of the same video sequence. If the stream ID change...
Definition: TeamTalk.cs:672
System.IntPtr frameBuffer
A buffer allocated internally by TeamTalkBase.
Definition: TeamTalk.cs:679
int nWidth
The width in pixels of the image contained in frameBuffer.
Definition: TeamTalk.cs:663
const int WEBM_VPX_DL_BEST_QUALITY
nEncodeDeadline value for best encoding.
Definition: TeamTalk.cs:1512
const int WEBM_VPX_DL_REALTIME
nEncodeDeadline value for fastest encoding.
Definition: TeamTalk.cs:1506
const int WEBM_VPX_DL_GOOD_QUALITY
nEncodeDeadline value for good encoding.
Definition: TeamTalk.cs:1509
WebM video codec settings.
Definition: TeamTalk.cs:1480
int nRcTargetBitrate
Same as rc_target_bitrate.
Definition: TeamTalk.cs:1483
uint nEncodeDeadline
Time that should be spent on encoding a frame.
Definition: TeamTalk.cs:1499
int rc_target_bitrate
Target bitrate in kbits/sec. This value must be greater than 0.
Definition: TeamTalk.cs:1490
Configuration of WebRTC's echo canceller. See also TT_SetSoundDeviceEffects()
Definition: TeamTalk.cs:1296
bool bEnable
Enable WebRTC echo canceller. The WebRTC echo canceller requires sound input and output devices are i...
Definition: TeamTalk.cs:1302
float fInitialGainDB
Range: 0 <= x < infinite. Default: 15 dB.
Definition: TeamTalk.cs:1350
float fHeadRoomDB
Range: 0 <= x < infinite. Default: 5 dB.
Definition: TeamTalk.cs:1346
float fMaxGainDB
Range: 0 < x < infinite. Default: 50 dB.
Definition: TeamTalk.cs:1348
Gain level for AGC. Only active when bEnable is true.
Definition: TeamTalk.cs:1331
float fGainDB
Gain level in dB. Range: 0 <= x < 50. Default: 0.
Definition: TeamTalk.cs:1334
Configuration of WebRTC's gain controller 2 for AGC.
Definition: TeamTalk.cs:1323
bool bEnable
Enable WebRTC's fixed digital gain. WebRTC's automatic gain control (AGC)
Definition: TeamTalk.cs:1326
Configuration of WebRTC's noise suppression. See also BearWare.SpeexDSP.
Definition: TeamTalk.cs:1310
int nLevel
Noise suppression level. 0 = Low, 1 = Moderate, 2 = High, 3 = VeryHigh. Default: 1.
Definition: TeamTalk.cs:1315
bool bEnable
Enable WebRTC noise suppression.
Definition: TeamTalk.cs:1312
Configuration of WebRTC pre-amplifier.
Definition: TeamTalk.cs:1283
bool bEnable
Enable pre-amplifier. Replacement for TT_SetSoundInputGainLevel()
Definition: TeamTalk.cs:1286
float fFixedGainFactor
Gain factor. Default: 1.
Definition: TeamTalk.cs:1288
WebRTC's audio preprocessor.
Definition: TeamTalk.cs:1279
GainController2 gaincontroller2
Definition: TeamTalk.cs:1358
WebRTCAudioPreprocessor(bool set_defaults)
Definition: TeamTalk.cs:1360
NoiseSuppression noisesuppression
Definition: TeamTalk.cs:1317
Default values for BearWare.WebRTCAudioPreprocessor.
Definition: TeamTalk.cs:1407
const float DEFAULT_WEBRTC_MAXGAIN_DBSEC
Definition: TeamTalk.cs:1416
const float DEFAULT_WEBRTC_PREAMPLIFIER_GAINFACTOR
Definition: TeamTalk.cs:1409
const bool DEFAULT_WEBRTC_NOISESUPPRESS_ENABLE
Definition: TeamTalk.cs:1418
const float DEFAULT_WEBRTC_MAXGAIN_DB
Definition: TeamTalk.cs:1414
const bool DEFAULT_WEBRTC_PREAMPLIFIER_ENABLE
Definition: TeamTalk.cs:1408
const bool DEFAULT_WEBRTC_SAT_PROT_ENABLE
Definition: TeamTalk.cs:1412
const bool DEFAULT_WEBRTC_GAINCTL_ENABLE
Definition: TeamTalk.cs:1410
const float WEBRTC_GAINCONTROLLER2_FIXEDGAIN_MAX
Definition: TeamTalk.cs:1421
const float DEFAULT_WEBRTC_GAINDB
Definition: TeamTalk.cs:1411
const float DEFAULT_WEBRTC_INITIAL_GAIN_DB
Definition: TeamTalk.cs:1415
const bool DEFAULT_WEBRTC_ECHO_CANCEL_ENABLE
Definition: TeamTalk.cs:1420
const float DEFAULT_WEBRTC_MAX_OUT_NOISE
Definition: TeamTalk.cs:1417
const float DEFAULT_WEBRTC_HEADROOM_DB
Definition: TeamTalk.cs:1413
const int DEFAULT_WEBRTC_NOISESUPPRESS_LEVEL
Definition: TeamTalk.cs:1419