TeamTalk 4 C-API DLL  Version 4.5A
ChangeLog

This section contains the list of new features and API changes in TeamTalk 4 SDK releases.

TeamTalk 4 SDK v. 4.5a release

TeamTalk 4 SDK v. 4.4a release

TeamTalk 4 SDK v. 4.3a release

TeamTalk 4 SDK v. 4.2a release

TeamTalk 4 SDK v. 4.1a release

TeamTalk 4 SDK v. 4.0c release

TeamTalk 4 SDK v. 4.0a release


TeamTalk 4 SDK v. 4.5a release

New features in v. 4.5a

Stream Media Files to Channel

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.

Login Attempt Limit

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.

Ban user by IP-address

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().

API Changes in v4.5a

TeamTalk 4 SDK v. 4.4a release

New features in v. 4.4a

Support for Windows Audio Session

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.

Restart Sound System

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_GetSoundInputDevices() and TT_GetSoundOutputDevices().

TT_RestartSoundSystem() can now be used to shut down the sound systems can rescan for new devices.

Automatic resampling of unsupported sample rates

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.

Operator receive-only channel type

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.

Encrypted client (Pro-Edition) can connect to non-encrypted servers

The client in the TeamTalk 4 Professional Edition can now also connect to non-encrypted TeamTalk server. Use TT_ConnectNonEncrypted() to do this.

Unicode video device names

VideoCaptureDevice now shows the name of the video device in Unicode on Windows.

API Changes in v4.4a


TeamTalk 4 SDK v. 4.3a release

New features in v. 4.3a

Share Desktop Applications

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.

Join channel after login

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.

Automatically become channel operator

A user can automatically become operator of a Channel configured with CHANNEL_STATIC if the channel's ID is in the autoOperatorChannels property of UserAccount.

Custom message type

An extra message type has been added for custom messages. The MSGTYPE_CUSTOM works in the same way as MSGTYPE_USER.

Query maximum UDP packet size

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.

Access raw audio data

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.

Get name of file being recorded to

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.

Reset recorded audio file

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 WM_TEAMTALK_USER_AUDIOFILE event.

See own video stream

A Channel can now be configured using the CHANNEL_ECHO_VIDEO flag for echoing the video stream transmitted by the local client instance.

Free-for-all option in classrooms

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.

API Changes in v4.3a


TeamTalk 4 SDK v. 4.2a release

New features in v. 4.2a

Muxed audio files

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.

Windows XP/Vista/7 Firewall

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.

Modify "talking" delay

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 TT_SetUserStoppedTalkingDelay().

VBR audio codecs

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 updated to version 0.11

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

IPv6 support (Windows 2000 no longer supported)

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.

API Changes in v4.2a

Removed API functions

Support for "talking callback" by function pointer has been removed since it's causing problems with threads (typically UI vs. TT-threads).

  • TT_RegisterTalkingCallback
  • TT_UnregisterTalkingCallback

TeamTalk 4 SDK v. 4.1a release

New Features in v. 4.1a

The new features in the TeamTalk 4 SDK v. 4.1a has are described in the following subsections.

Mac OS X and Windows Mobile platforms

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.

Echo Cancellation

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.

Classroom channel-type

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.

Channel based audio configuration

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.

Server Statistics

Administrators can now query a server statistics using the command TT_DoQueryServerStats() and thereby get an overview of bandwidth usage.

Simpler video extraction

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.

API Changes in v4.1a


TeamTalk 4 SDK v. 4.0c release

New Features in v. 4.0c

The new features in the TeamTalk 4 SDK v. 4.0c has are described in the following subsections.

Note-field and user-data for user accounts

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.

Get "my" User Account

After login it's now possible to retrieve one's own UserAccount by calling TT_GetMyUserAccount(). TT_GetMyUserData() can be used to extract one's nUserData of one's UserAccount.

Swap @c HWND for events

When using TT_InitTeamTalk() a HWND is passed which is used for event handling. If at some point another HWND should be used for event handling this HWND can be swapped using TT_SwapTeamTalkHWND().

Extract all Users on the Server

All users who are connected to a server can now be retrieved using TT_GetServerUsers().

API Changes in v4.0c

The folder for audio storage has now been placed in User instead of on Channel. Audio storage is therefore user specific now instead of channel specific.

Renamed/modified functions:

Bug fixes in v. 4.0c

Here a list of bugs fixed in this release:

  • Fixed TCP keep-alive timer not starting after connect event
  • Improved performance for uploading/downloading files


TeamTalk 4 SDK v. 4.0a release

New Features in v. 4.0a

The new features in the TeamTalk 4 SDK v. 4.0a has are described in the following subsections.

Video Capturing from WebCams

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:

User Accounts

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:

Track Command Completion

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 WM_TEAMTALK_CMD_PROCESSING event.

Improved P2P Connections

The TeamTalk client now has better support for peer to peer data transmission and can now penetrate most NAT devices.

Check out section Peer to Peer Transmission Mode for more information on P2P networking. P2P networking is enabled using the following functions:

Support for CELT audio codec

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 TODO List.

API Changes in v. 4.0a

This section outlines how TeamTalk 3 developers can adapt their existing applications to TeamTalk 4.

Renamed/modified functions:

Removed functions:

  • TT_SetEncoderComplexity
  • TT_GetEncoderComplexity
  • TT_GetSamplesPerPacket
  • TT_SetPlaybackMode
  • TT_GetPlaybackMode
  • TT_GetChannelUserCount

Renamed/modified events: