TeamTalk 5 C-API DLL Version 220.127.116.1181
This section contains the list of new features and API changes in TeamTalk SDK releases.
Added TTS_SendTextMessage() to TeamTalk Server API.
nChannelIDnot being set in User-struct when using TeamTalk Server API.
The server API has been updated in this release so it's possible to restrict logins to your TeamTalk server to only your own client application. If the "normal" TeamTalk client tries to connect to your TeamTalk server then it will be possible to reject it.
To limit access to your TeamTalk server you can use the
szSystemID parameter of TT_StartServerSysID(). When a client has to connect then the chosen system-ID will also have to passed to TT_ConnectSysID(). If it's not then the connecting TeamTalk client will receive the CMDERR_INCOMPATIBLE_PROTOCOLS. The szSystemID of the default TeamTalk application is "teamtalk". This is what you see when you connect with Telnet on port TCP port 10333 (non-encrypted).
On top of the system-ID restriction it's now also possible to do a check on the client name connecting by using the extended TT_DoLoginEx(). When a client tries to connect to a TeamTalk server you can then check the
szClientName property of User to ensure only your client application is allowed to connect.
Audio device "Voice-Processing I/O Unit" added as sound device ID 1 on iOS. The Voice-Processing I/O Unit sound device is designed to eliminate echo when using speaker output and also enable automatic gain control. Read more on audio units here: https://developer.apple.com/library/ios/documentation/MusicAudio/Conceptual/AudioUnitHostingGuide_iOS/UsingSpecificAudioUnits/UsingSpecificAudioUnits.html
The video capture API on Linux has been updated to it now uses V4L2 instead of the obsolete V4L API.
The previously used video capture API, QTkit, on Mac OS has been replaced by AVFoundation. Apple's AppStore doesn't accept apps which link to QTkit, so therefore this replacement was nescessary.
Previous releases of TeamTalk 5 shared library depended on WebM (libvpx), Speex (libspeex), OPUS (libopus), etc. Now this has been limited to C++ standard library (libstdc++) and ALSA (libasound).
The Speex sound preprocessing library (SpeexDSP) is now also supported on iOS platforms.
Previously the TeamTalk sample application (TeamTalkAndroid) was using Eclipse but this project has now been converted to Android Studio 2.0.
When storing audio to files it's now possible to specify AFF_CHANNELCODEC_FORMAT which is part of the enumeration AudioFileFormat. The AFF_CHANNELCODEC_FORMAT will store in the audio format configured by a Channel's AudioCodec.
If using TeamTalk 5 SDK Professional then a System-ID can be used to limit access to the TeamTalk server to a single client application.
The TeamTalk C-API DLL has been moved to
Library/TeamTalk_DLL The TeamTalk .NET DLL project has been moved to
Library/TeamTalk.NET. The TeamTalk JNI DLL has been moved to
This file layout change has been made so the projects are more aligned with TeamTalk 5 on GitHub.
TeamTalk 5 for iOS application (TeamTalk for iOS (iTeamTalk)) from App Store now included with TeamTalk 5 SDKs for iOS.
TeamTalk 5 Professional SDK now includes TeamTalk 5 Java server sample application (jTeamTalkServer).
TeamTalk 5 iOS SDKs can now be compiled with "Enable Bitcode" (
Sound device 1 (speaker output) removed from TeamTalk iOS SDK when calling TeamTalk.GetSoundDevices(). Instead use iOS's function
A quite severe bug which caused files on the server to end up in the wrong channels has been fixed in this minor release. The issue only affects the standalone servers which are included in the SDK. Custom servers created by the TeamTalk server API should not be affected.
Previously it has only been possible to record own audio streams by subscribing to them. Now it's, however, possible to call TT_SetUserMediaStorageDir() with user ID 0 to record own audio stream.
Windows developers can now also use Java for client development. The TeamTalk JNI DLL is located in
The inclusion of the TeamTalk Server API has caused quite a bit of reorganization of the TeamTalk SDK's file layout. Previously the TeamTalk DLL only allowed client operations and was therefore located in the
Client folder. Now that the TeamTalk DLL (in the Professional edition) also allows users to develop a TeamTalk server then the core TeamTalk library projects have been moved to the
Library folder in the root of the SDK.
Library C-API Java NET Documentation C-API Java NET Examples C-API Java NET Server Demo Client
The TeamTalk 5 Professional Edition now includes a TeamTalk Server API which enables developers to instantiate a TeamTalk server by calling the TeamTalk DLL. With the server API it's possible to do basic operations like authentication users and updating server properties.
Note that the TeamTalk server API is currently only supported in the TeamTalk C-API DLL.
Now that the TeamTalk SDK is also available for Android the Java API used for Android development has also been ported to Linux and Mac OS X.
Java is supported by using a new TeamTalk DLL with a Java Native Interface (JNI). The TeamTalk JNI DLL is located in
Open the Java documentation to see how to use the new Java API. The Java TeamTalk classes greatly ressemble the .NET classes therefore the API documentation for Java is the same as .NET. Hopefully this doesn't cause too much confusion.
The iOS platform is now also supported by the TeamTalk DLL. Please refer to TeamTalk DLL on iOS on how to use the TeamTalk DLL on iOS.
In TeamTalk 4 events were posted in a
TTMessage containing a WPARAM and LPARAM where the WPARAM would typically contain an ID and the LPARAM some extended information about the event. When an event occured the client application would query the TeamTalk client instance to extract information about what had changed to the current state. Since the client instance was running in its own thread the state change could, however, have become unknown in the meantime. If e.g. a text message was received from a user and the user would immediately quit afterwards then the text message would be lost since the text message was "attached" to the user who was no longer there. In TeamTalk 5 a TTMessage now contains a copy of what changed as a cause of the event. If e.g. a text message is received from a user then the TTMessage will contain a full copy of the TextMessage which was received. Also if a new channel is created then it's no longer required to extract the Channel object through the TeamTalk client instance (using TT_GetChannel()) now the new channel is part of the TTMessage using the TTMessage's data container.
Theora video codec was used in TeamTalk 4 to encode video from webcam and media files but this has now been replaced by the more recent Google-backed WebM codec. Check out WebM website for more information about the new video codec. Currently it's only possible to configure the bitrate in the codec but should you need access to more codec configuration options then feel free to request these.
CELT is no longer being developed and has been replaced by OPUS. Check out OPUS website for more information.
TeamTalk 4 used Blowfish for encrypting audio, video and desktop sharing streams. TeamTalk 5 uses AES 256-bit for encrypting audio, video, media file and desktop sharing streams.
In TeamTalk 4 streaming a media file would replace voice input from microphone and video from a media file would replace webcam input. In TeamTalk 5 a new stream type for media files has been introduced so it's still possible to talk and show webcam video while streaming a media file to a channel.
In TeamTalk 4 all users of the default user type had the same user rights on the server which were set up in ServerProperties. The user rights (UserRight) are now part of UserAccount so each user can have different UserRights on the server.
The maximum bitrate for audio codecs where global to all users in TeamTalk 4 but now the maximum bitrate a user can use for a new channel is configured in the UserAccount.
TeamTalk 4 supported 65000 active channels/rooms but in TeamTalk 5 only 4000 channels are supported. This limited has been implemented to reduce bandwidth usage.
TeamTalk 5 doesn't support P2P connections since the 'forward through server' is required for desktop sharing to work.
In TeamTalk 4 is was not possible to update a channel's name but this is now supported. Ensure to update
szInitChannel of UserAccount if you use this feature.
The TeamTalk 5 Linux server now includes a daemon script which can be put in
/etc/init.d on Debian to start/stop the TeamTalk daemon (with -d option).
If a Channel was configured with an AudioConfig in TeamTalk 4 then the client instance would automatically enable this audio configuration. This is no longer the case in TeamTalk 5. Now the client application must invoke TT_SetSoundInputPreprocess() manually.
The default name for the server xml configuration file was
tt4svc.xml in TeamTalk 4 but in TeamTalk 5 it's now
tt5prosrv.xml for the Professional edition.
ServerStatistics now includes the number of users served, the highest number of users and server's uptime.
The TeamTalk server in the Professional SDK (tt5prosrv) now also supports non-encrypted mode. Whether to run in encrypted or non-encrypted mode is configured when running the setup wizard. See more in TeamTalk Server Setup Guide.
supportedSampleRatesdue to change of TT_GetSoundDevices() instead of
nStreamID. Stream ID changes whenever push-to-talk or voice activation are toggled.
frameBufferwith pointer to data and
nFrameBufferSizewith size of bffer.
opus, i.e. OpusCodec.
nVideoBytesTXreplaced by nVideoCaptureBytesTX.
nVideoBytesRXreplaced by nVideoCaptureBytesRX.
uAFF. Format in CLIENTEVENT_USER_RECORD_MEDIAFILE.
szAudioFileName. File name in CLIENTEVENT_USER_RECORD_MEDIAFILE.
nAudioPacketsRecvreplaced by nVoicePacketsRecv.
nAudioPacketsLostreplaced by nVoicePacketsLost.
nVideoPacketsRecvreplaced by nVideoCapturePacketsRecv.
nVideoFramesRecvreplaced by nVideoCaptureFramesRecv.
USERRIGHT_DOUBLE_LOGINreplaced by USERRIGHT_MULTI_LOGIN.
USERRIGHT_CLIENT_BROADCASTreplaced by USERRIGHT_TEXTMESSAGE_BROADCAST.
USERRIGHT_FORWARD_AUDIOreplaced by USERRIGHT_TRANSMIT_VOICE
USERRIGHT_FORWARD_VIDEOreplaced by USERRIGHT_TRANSMIT_VIDEOCAPTURE
USERRIGHT_FORWARD_DESKTOPreplaced by USERRIGHT_TRANSMIT_DESKTOP
USERRIGHT_FORWARD_DESKTOPINPUTreplaced by USERRIGHT_TRANSMIT_DESKTOPINPUT
USERRIGHT_CHANNEL_CREATION. See User rights now moved to user account.
USERRIGHT_SUBSCRIPTIONS. Subscriptions are now mandatory.
USERRIGHT_STRICT_UTF8. UTF-8 is now mandatory.
CHANNEL_STATICreplaced by CHANNEL_PERMANENT.
CHANNEL_ECHO. Use SUBSCRIBE_VOICE instead.
CHANNEL_ECHO_AUDIO. Use SUBSCRIBE_VOICE instead.
CHANNEL_ECHO_VIDEO. Use SUBSCRIBE_VIDEOCAPTURE instead.
CHANNEL_ECHO_DESKTOP. Use SUBSCRIBE_DESKTOP instead.
CLIENT_TX_AUDIOreplaced by CLIENT_TX_VOICE.
CLIENT_TX_VIDEOreplaced by CLIENT_TX_VIDEOCAPTURE.
CLIENT_P2P_AUDIO. See Peer to peer support has been removed.
CLIENT_P2P_VIDEO. See Peer to peer support has been removed.
CLIENT_P2P. See Peer to peer support has been removed.
TT_StartStreamingAudioFileToUser()replaced by TT_StartStreamingMediaFileToChannel()
nBitmapSizeare now part of DesktopWindow.
nUserIDparameter. All in channel will receive.
szServerPasswordremoved. User account mandatory in TeamTalk 5.
lpAudioBlockparameter. Now returns AudioBlock.
nVolumeVoicein User instead.
nGainLevelVoicein User instead.
nStoppedDelayVoicein User instead.
soundPositionVoicein User instead.
uUserStatein User instead.
The TeamTalk 4 SDK is now also available for Mac OS X 64-bit.
Released on 2014/07/20.
The TeamTalk server now also includes
-l command line argument for specifying the location of the log-file. Previously only the
-wd argument could be used for changing the location of the log file.
The log-file of the TeamTalk server now also includes entries for when a user acount is added or deleted and also a log entry for when users are moved between channels.
Released on 2014/02/20.
Shared desktops can now be controlled remotely using mouse and keyboard input. Check out Remote Desktop Access to read on how to control remote desktops.
Released on 2013/05/13.
Previously it's only been possible to stream 16-bit signed PCM wave-files to a channel but in the 4.5 release it's now possible to stream mp3, mpg, avi, wma, wmv, etc. to a channel. On Windows you can basically stream whatever Windows Media Player can play to a channel. Checkout
TT_StartStreamingMediaFileToChannel() for more information.
To prevent a brute force login attempt it's now possible to limit the number of login attempt before banning an IP-address. Checkout
nMaxLoginAttempts property of ServerProperties. It's now also possible to limit the number of logins per IP-address by specifying
nMaxLoginsPerIPAddress in ServerProperties.
Previously it was only possible to ban a user's IP-address if the user was present on the server. Now it's, however, possible to ban an IP-address using TT_DoBanIPAddress().
Released on 2012/10/15.
Windows Audio Session is a new sound system available in Windows Vista and later versions of Windows. It's a sound system which provides significantly lower latency than both DirectSound and Windows default sound devices. Check out SOUNDSYSTEM_WASAPI for more information.
When the TeamTalk client is initially start it scan the system for all sound devices but if a user later plugs in a USB sound card then this device will not be detected automatically in
TT_RestartSoundSystem() can now be used to shut down the sound systems can rescan for new devices.
If a sound card doesn't support the sampling rate of a codec or if the codec requires stereo input then TeamTalk now automatically resamples audio so it fits the proper format. DirectSound e.g. had problems with input devices which only allowed mono and therefore couldn't be used with stereo codecs.
A new channel type, CHANNEL_OPERATOR_RECVONLY, has now also been introduced which only allowed administrators and operators of a channel to receive audio and video. This can be useful if bandwidth is a problem.
The client in the TeamTalk 4 Professional Edition can now also connect to non-encrypted TeamTalk server. Use TT_ConnectNonEncrypted() to do this.
VideoCaptureDevice now shows the name of the video device in Unicode on Windows.
Released on 2012/03/26.
The major new feature in the 4.3 release is the ability to share desktop applications. When sharing a desktop application you send a bitmap, using TT_SendDesktopWindow(), to the local client instance. The bitmap is then split into in small blocks and transmitted to the server using the UDP connection. Read more about this feature in the section Desktop Sharing.
A UserAccount now has the
szInitChannel property which holds the channel a user should join after login. The user can join this channel without passing a password. Use TT_GetMyUserAccount() to get the local instance's UserAccount after login has completed.
Some routers don't allow UDP packets over a given size so use TT_QueryMaxPayload() after connecting to a server to detect the maximum size for UDP packets. The event
WM_TEAMTALK_CON_MAX_PAYLOAD_UPDATED is triggered when the client instance has finished querying.
The raw audio, which has been playing when a user is talking, can now be accessed by calling TT_EnableAudioBlockEvent(). The event
WM_TEAMTALK_USER_AUDIOBLOCK is triggered when a new AudioBlock is available.
If audio files are being recorded separately for every User, using
TT_SetUserAudioFolder, the file name of the file currently being recorded to can be found in the
szAudioFileName property of the User struct.
To cancel and start recording to a new audio file pass AFF_NONE as parameter to
TT_SetUserAudioFolder. This will reset the current recording and generate the
A Channel can now be configured using the
CHANNEL_ECHO_VIDEO flag for echoing the video stream transmitted by the local client instance.
A Channel configured using CHANNEL_CLASSROOM was previously limited to 16 people transmitting either video or audio. Now it's, however, possible to add TT_CLASSROOM_FREEFORALL to the "enabled" users properties to allow everyone to transmit.
Released on 2011/11/02.
It is now possible to store "muxed" audio files, i.e. audio from all users are written to the same audio file. Check out TT_StartRecordingMuxedAudioFile() on how to do this.
The Windows Firewall, included in XP and later Windows versions, can sometimes block network traffic to and from applications which uses the TeamTalk DLL. Check out the section Windows Firewall on how to use the Windows Firewall functions.
Voice activation is by default disabled if no audio has reached the voice activation level for 1.5 seconds. This option can now be changed by calling TT_SetVoiceActivationStopDelay(). Also users who are talking are set to non-talking after 0.5 seconds if no new voice data has been received. This value can now be changed by calling
Speex and CELT can now be used in VBR mode by creating a Channel with the SpeexVBRCodec or
CELTVBRCodec. To limit bandwidth usage it is advised to use the VBR codecs. Especially the Speex VBR codec with DTX enabled reduces throughput when there's silence.
CELT 0.5.2, which was used in v 4.1 and previous of the SDK, has been replaced by CELT 0.11. Note that encoding and decoding of CELT 0.5.2 is no longer supported. Check out http://www.celt-codec.org
Client and server now support IPv6. To make the server run in IPv6 mode the server must bind to an IPv6 address. Check out Configurating the TeamTalk Server on how to specify the bind IP-address (<bind-ip> tag).
Note that the TeamTalk DLL can no longer run on Windows 2000 since this platform does not support IPv6.
CELTCodecstruct updated for CELT 0.11.
CELTVBRCodecstruct for CELT VBR.
Support for "talking callback" by function pointer has been removed since it's causing problems with threads (typically UI vs. TT-threads).
Released on 2010/10/30.
The new features in the TeamTalk 4 SDK v. 4.1a has are described in the following subsections.
Mac OS X is now supported using the C-API DLL which is compiled for i386 and uses QuickTime for video and CoreAudio for audio. Windows Mobile support is now also supported using both the C-API DLL and the .NET Framework DLL. Note, however, that the Windows Mobile is only supported in the Standard SDK and not the Professional SDK since OpenSSL is quite tricky to port to Windows Mobile.
When initializing the client instance's sound system in duplex mode it is now possible to enable echo cancellation. Note, however, that echo cancellation performs poorly on Windows whereas it's very effective on Mac OS X and Linux. Check out TT_InitSoundDuplexDevices() and TT_EnableEchoCancellation() on how to use echo cancellation.
A new channel-type called classroom has now been introduced where the channel's operator can control who is allowed to transmit audio and video to a channel. The channel operator can then work as sort of a teacher where the teacher selects the people who should answer questions. Check out CHANNEL_CLASSROOM for how to create classroom channels.
Often users have set their microphones to different audio levels so it's hard to hear certain users and others are too loud. When creating a channel it's now possible to use Channel's audiocfg member to set the same audio level for all users. Note that all users must use the v. 4.1a release for this to work.
Administrators can now query a server statistics using the command TT_DoQueryServerStats() and thereby get an overview of bandwidth usage.
Using TT_GetUserVideoFrame() is quite tricky to use since the developer must first query for how much memory must be allocated to store the video frame. In this new release it's possible to share memory with the client instance so one simply calls TT_AcquireUserVideoFrame() to get a pointer to a user's video data. when one has completed using the video frame call TT_ReleaseUserVideoFrame() to release the shared memory. Note that only one video frame can be extracted each time, therefore calling TT_AcquireUserVideoFrame() twice will simply result in getting the same video frame.
Released on 2010/03/16.
The new features in the TeamTalk 4 SDK v. 4.0c has are described in the following subsections.
The UserAccount struct now has a new member called szNote which can contain extra information about a user account. The UserAccount and User structs now also has a nUserData integer field which can be used by developers to store an application specific value. After a successful login the nUserData field on UserAccount will be transferred to the nUserData field on the User struct.
All users who are connected to a server can now be retrieved using TT_GetServerUsers().
Here a list of bugs fixed in this release:
Released on 2009/11/23.
The new features in the TeamTalk 4 SDK v. 4.0a has are described in the following subsections.
TeamTalk can now capture video from webcams and encode it for transmission. Bandwidth usage can be as low as a 2-3 KBytes/sec in low resolutions. High resultions are, of course, also supported.
To start using the new video features checkout the following new functions:
TT_EnableTransmissionto transmit video data.
The TeamTalk server can now be set to only allow users to log on if they have a user account on the server. The user account also introduces user types, so some users can have administrator capabilities.
Read the section Configurating the TeamTalk Server on how to configure the server with user accounts. To see the new functions in the TeamTalk DLL for handling user accounts check out the following new functions:
When calling any of the client to server commands listed in section Client/Server Commands a command ID is returned to the user application. This command ID can be used to track when the server has started and finished processing the command using the
The TeamTalk client now has better support for peer to peer data transmission and can now penetrate most NAT devices.
Check out section REMOVED for more information on P2P networking. P2P networking is enabled using the following functions:
TT_EnablePeerToPeerto enable/disable peer to peer connections.
TeamTalk now not only supports the Speex codec, but also the CELT codec. The CELT codec gives much better audio quality but also requires higher bandwidth usage. If a user application is used to transmit music it is advised to use CELT since the sound quality will be must better than Speex. Speex is mainly for voice transmissions. Check out section Audio and Video Codecs to read more about the new codec.
Also note that the audio codec used by a client is now configured on a Channel and not on each individual client. This means that all users in a channel must now use the same audio settings. This restriction has been set to support echo-cancellation which is on the Known Issues.
This section outlines how TeamTalk 3 developers can adapt their existing applications to TeamTalk 4.
USERSTATE_MUTEin uUserState of User-struct.
USERSTATE_TALKINGin uUserState of User-struct.
TT_EnablePeerToPeerwith parameter to false (the default setting).
CLIENT_P2Pis no enabled.