TeamTalk 5 Java DLL  Version 5.2D
ChangeLog

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

TeamTalk 5 SDK v. 5.2d release

TeamTalk 5 SDK v. 5.2c release

TeamTalk 5 SDK v. 5.2b release

TeamTalk 5 SDK v. 5.2a release

TeamTalk 5 SDK v. 5.1c release

TeamTalk 5 SDK v. 5.1b release

TeamTalk 5 SDK v. 5.1a release

TeamTalk 5 SDK v. 5.0a release

TeamTalk 4 SDK v. 4.6b release

TeamTalk 4 SDK v. 4.6a release

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 5 SDK v. 5.2d release

Bugfixes in v5.2d

Fixed severe crash issue when audio streams are stopped. Crash was due to a race condition which occurs in rare cases.


TeamTalk 5 SDK v. 5.2c release

New features in v5.2c

Virtual sound device

In order to record conversations using TeamTalkBase.StartRecordingMuxedAudioFile() it has previously been required to initialize a real sound output device in order to process audio packets. It is still required to initialize the sound output device but now a new virtual sound device is available which processes audio packets. This virtual sound device has ID BearWare.SoundDeviceConstants.TT_SOUNDDEVICE_ID_TEAMTALK_VIRTUAL.

Transmission queue in CHANNEL_SOLO_TRANSMIT

A new feature of the BearWare.ChannelType.CHANNEL_SOLO_TRANSMIT channel type is that the server ensures that only one user can transmit audio and media files to the channel. The user's position in the transmission queue can be seen in BearWare.Channel.transmitUsersQueue array.

Server callbacks for TeamTalkBase.DoChangeNickname() and TeamTalkBase.DoChangeStatus()

The server API can now intercept when a user requests to change nickname or change status. This is done by calling TeamTalk5Srv.UserChangeNickname and TeamTalk5Srv.UserChangeStatus.

OpenSSL again dynamically linked in Linux distributions

The TeamTalk SDK v5.2b introduced static linking of all dependencies in libTeamTalk5Pro.so but this caused problems when linking an application that already included an OpenSSL dependency. Therefore the Linux distributions now again requires that the user installs the required OpenSSL dependency. To see what OpenSSL dependency is missing run:

  $ ldd Library/TeamTalk_DLL/libTeamTalk5Pro.so

Daemon scripts included for TeamTalk servers

The SDK's Server folder now includes daemon scripts for Debian (/etc/init.d) and systemd based Linux distributions.

API changes in v5.2c

TeamTalk class renamed to TeamTalkBase

Previously the TeamTalk class was used by both the Professional and Standard edition of the TeamTalk SDK but from now on the TeamTalk 5 Professional SDK must instantiate BearWare.TeamTalk5Pro class and TeamTalk 5 Standard Edition must instantiate BearWare.TeamTalk5 class. Both BearWare.TeamTalk5 and BearWare.TeamTalk5Pro classes inherit from BearWare.TeamTalkBase.

This change has been made to ensure the distinction between the two SDKs and also to make the .NET API streamlined with the Java API.


TeamTalk 5 SDK v. 5.2b release

API changes in v.5.2b

TeamTalk Server API for .NET

The TeamTalk server API is now also supported by .NET. Checkout the BearWare.TeamTalk5Srv class which runs the server. To quickly get started it's probably a good idea to checkout TeamTalk .NET Server Example (TeamTalkServer.NET).

Bugfixes in v5.2b

  • Fixed severe issue causing audio playback not to start if client received bursts of audio packets (the client has a 1 second buffer which would overflow and not restart).
  • Fixed nChannelID not being set in BearWare.User-struct when using TeamTalk Server API.

TeamTalk 5 SDK v. 5.2a release

New features in v5.2a

TeamTalk Server API with System ID

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 TeamTalkSrv.StartServerSysID(). When a client has to connect then the chosen system-ID will also have to passed to TeamTalkBase.ConnectSysID(). If it's not then the connecting TeamTalk client will receive the ClientError.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 TeamTalkBase.DoLoginEx(). When a client tries to connect to a TeamTalk server you can then check the szClientName property of BearWare.User to ensure only your client application is allowed to connect.

Voice-Processing I/O Unit for iOS

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

Video4Linux2 (V4L2) support on Linux

The video capture API on Linux has been updated to it now uses V4L2 instead of the obsolete V4L API.

AVFoundation replaces QTkit on Mac OS

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.

Dependencies on Linux has been reduced

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

Sound Preprocessing (Automatic gain control) for iOS

The Speex sound preprocessing library (SpeexDSP) is now also supported on iOS platforms.

The BearWare.SpeexDSP-struct is used by TeamTalkBase.SetSoundInputPreprocess() and TeamTalkBase.StartSoundLoopbackTest().

TeamTalk for Android now uses Android Studio

Previously the TeamTalk sample application (TeamTalkAndroid) was using Eclipse but this project has now been converted to Android Studio 2.0.

Store audio in .ogg format

When storing audio to files it's now possible to specify AudioFileFormat.AFF_CHANNELCODEC_FORMAT which is part of the enumeration BearWare.AudioFileFormat. The AudioFileFormat.AFF_CHANNELCODEC_FORMAT will store in the audio format configured by a BearWare.Channel's BearWare.AudioCodec.

API changes in v5.2a

Deadline for WebM video encoder

Added nEncodeDeadline to BearWare.WebMVP8Codec which specifies quality of the video encoder. Values are BearWare.WebMVP8CodecConstants.WEBM_VPX_DL_REALTIME, BearWare.WebMVP8CodecConstants.WEBM_VPX_DL_GOOD_QUALITY and BearWare.WebMVP8CodecConstants.WEBM_VPX_DL_BEST_QUALITY.

Get software client used by peer

Added szClientName to BearWare.User-struct. The client name is specified in TeamTalkBase.DoLoginEx().

Limit access to TeamTalk server to one software client

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.

Use the TeamTalk server API to setup a server with a System-ID, i.e. TTS_StartServerSysID() and then use BearWare.TeamTalkBase.ConnectSysID().

Bugfixes in v5.2a

  • Stream media files was slow to start.
  • Streaming media file from Windows caused bottom-up bitmap image.
  • Fixed file handle being leaked on Windows during desktop transmission.
  • Fixed corrupt .wav file if file greater than 4GB.
  • Fixed Bluetooth not working on iOS 10 and later.

TeamTalk 5 SDK v. 5.1c release

The TeamTalk C-API DLL has been moved to Library/TeamTalk_DLL The TeamTalk .NET DLL project has been moved to Library/TeamTalkBase.NET. The TeamTalk JNI DLL has been moved to Library/TeamTalkJNI.

This file layout change has been made so the projects are more aligned with TeamTalk 5 on GitHub.

TeamTalk 5 for iOS application (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).

New features in v. 5.1c

TeamTalk 5 iOS SDKs can now be compiled with "Enable Bitcode" (-fembed-bitcode).

API changes in v. 5.1c

Added function TeamTalkBase.PumpMessage() for getting latest BearWare.User-state.

Sound device 1 (speaker output) removed from TeamTalk iOS SDK when calling TeamTalkBase.GetSoundDevices(). Instead use iOS's function AVAudioSession.setMode().


TeamTalk 5 SDK v. 5.1b release

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.

New features in v. 5.1b

Record own voice stream to separate file

Previously it has only been possible to record own audio streams by subscribing to them. Now it's, however, possible to call TeamTalkBase.SetUserMediaStorageDir() with user ID 0 to record own audio stream.

TeamTalk JNI DLL for Windows

Windows developers can now also use Java for client development. The TeamTalk JNI DLL is located in Library/Java/TeamTalkJNI.


TeamTalk 5 SDK v. 5.1a release

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

New Features in v. 5.1a release

TeamTalk 5 Server API

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.

TeamTalk 5 Java 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 Library/Java/TeamTalkJNI.

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.

TeamTalk 5 SDK for iOS

The iOS platform is now also supported by the TeamTalk DLL. Please refer to the C-API on how to use the TeamTalk DLL on iOS.


TeamTalk 5 SDK v. 5.0a release

New features in v. 5.0a

Updated event handling

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 BearWare.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 BearWare.TTMessage will contain a full copy of the BearWare.TextMessage which was received. Also if a new channel is created then it's no longer required to extract the BearWare.Channel object through the TeamTalk client instance (using TeamTalkBase.GetChannel()) now the new channel is part of the BearWare.TTMessage using the BearWare.TTMessage's data container.

WebM replaces Theora video codec

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.

OPUS replaces CELT audio codec

CELT is no longer being developed and has been replaced by OPUS. Check out OPUS website for more information.

AES encryption replaces Blowfish

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.

New stream type for media files

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.

User rights now moved to user account

In TeamTalk 4 all users of the default user type had the same user rights on the server which were set up in BearWare.ServerProperties. The user rights (BearWare.UserRight) are now part of BearWare.UserAccount so each user can have different BearWare.UserRight on the server.

Audio codec bitrate limit moved to user account

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 BearWare.UserAccount.

Max channels limited to 4000

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.

Peer to peer support has been removed

TeamTalk 5 doesn't support P2P connections since the 'forward through server' is required for desktop sharing to work.

Channels can be renamed

In TeamTalk 4 is was not possible to update a channel's name but this is now supported. Ensure to update szInitChannel of BearWare.UserAccount if you use this feature.

Daemon script for server included

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

Audio configuration no longer forced by channel

If a BearWare.Channel was configured with an BearWare.AudioConfig in TeamTalk 4 then the client instance would automatically enable this audio configuration. This is no longer the case in TeamTalk

  1. Now the client application must invoke TeamTalkBase.SetSoundInputPreprocess() manually.

Default server config file renamed to tt5srv.xml

The default name for the server xml configuration file was tt4svc.xml in TeamTalk 4 but in TeamTalk 5 it's now tt5srv.xml and tt5prosrv.xml for the Professional edition.

Server statistics updated

BearWare.ServerStatistics now includes the number of users served, the highest number of users and server's uptime.

Non-encrypted mode in Professional server

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.

API changes in v. 5.0a

New structs:

Renamed/modified structs:

Removed structs

New enumerations

Renamed/modified enumerations

Removed enumerations:

New events:

Renamed/modified events:

Removed events

New methods

Renamed/modified methods

Removed methods


TeamTalk 4 SDK v. 4.6b release

The TeamTalk 4 SDK is now also available for Mac OS X 64-bit.

Released on 2014/07/20.

New features in v. 4.6b

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.


TeamTalk 4 SDK v. 4.6a release

Released on 2014/02/20.

New features in v. 4.6a

Desktop Access

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.

API Changes in v4.6a


TeamTalk 4 SDK v. 4.5a release

Released on 2013/05/13.

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 BearWare.TeamTalk.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 BearWare.ServerProperties. It's now also possible to limit the number of logins per IP-address by specifying nMaxLoginsPerIPAddress in BearWare.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 BearWare.TeamTalk.DoBanIPAddress().

API Changes in v4.5a


TeamTalk 4 SDK v. 4.4a release

Released on 2012/10/15.

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.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 TeamTalk.GetSoundInputDevices() and TeamTalk.GetSoundOutputDevices().

TeamTalk.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, BearWare.ChannelType 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 TeamTalk.ConnectNonEncrypted() to do this.

Unicode video device names

BearWare.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

Released on 2012/03/26.

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 TeamTalk.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 BearWare.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 TeamTalk.GetMyUserAccount() to get the local instance's BearWare.UserAccount after login has completed.

Automatically become channel operator

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

Custom message type

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

Query maximum UDP packet size

Some routers don't allow UDP packets over a given size so use TeamTalk.QueryMaxPayload() after connecting to a server to detect the maximum size for UDP packets. The event TeamTalk.OnMaxPayloadUpdate() 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 TeamTalk.EnableAudioBlockEvent(). The event TeamTalk.OnUserAudioBlock() is triggered when a new BearWare.AudioBlock is available.

Get name of file being recorded to

If audio files are being recorded separately for every BearWare.User, using TeamTalk.SetUserAudioFolder, the file name of the file currently being recorded to can be found in the szAudioFileName property of the BearWare.User struct.

Reset recorded audio file

To cancel and start recording to a new audio file pass AudioFileFormat AudioFileFormat.AFF_NONE as parameter to TeamTalk.SetUserAudioFolder. This will reset the current recording and generate the TeamTalk.OnUserAudioFile() event.

See own video stream

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

Free-for-all option in classrooms

A BearWare.Channel configured using ChannelType ChannelType.CHANNEL_CLASSROOM was previously limited to 16 people transmitting either video or audio. Now it's, however, possible to add BearWare.TeamTalk.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

Released on 2011/11/02.

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 BearWare.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 TeamTalk.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 TeamTalk.SetUserStoppedTalkingDelay().

VBR audio codecs

Speex and CELT can now be used in VBR mode by creating a BearWare.Channel with the BearWare.SpeexVBRCodec or BearWare.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


TeamTalk 4 SDK v. 4.1a release

Released on 2010/10/30.

New Features in v. 4.1a release

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

Removed Microsoft C Runtime dependency

The .NET wrapper for the TeamTalk 4 C-API DLL is now written in Cso there's no longer a need to include the Microsoft C Runtime files.

Mac OS X and Windows Mobile platforms

Mac OS X is now supported using the C-API DLL. The C-API DLL is compiled for i386 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.

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 BearWare.TeamTalk.InitSoundDuplexDevices() and BearWare.TeamTalk.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 BearWare.ChannelType ChannelType.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 BearWare.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 BearWare.TeamTalk.DoQueryServerStats() and thereby get an overview of bandwidth usage.

Simpler video extraction

Using BearWare.TeamTalk.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 BearWare.TeamTalk.AcquireUserVideoFrame() to get a pointer to a user's video data. when one has completed using the video frame call BearWare.TeamTalk.ReleaseUserVideoFrame() to release the shared memory. Note that only one video frame can be extracted each time, therefore calling BearWare.TeamTalk.AcquireUserVideoFrame() twice will simply result in getting the same video frame.

API Changes in v4.1a

  • BearWare.TeamTalk.ConnectEx()
    • This function has now been introduced which allows to specify the IP-address to bind to on the local interface.
  • BearWare.TeamTalk.OnCmdSuccess()
    • Whenever the client issues a command to the server (BearWare.TeamTalk.Do* functions) this message will be posted if the command was successful.
  • BearWare.SoundSystem SoundSystem.SOUNDSYSTEM_COREAUDIO
    • Support for Mac OS X sound system.
  • BearWare.TeamTalk.InitSoundDuplexDevices()
    • Initialize both sound input and output devices simultaneously. In duplex mode all users' playback streams will be mixed into a single stream. Duplex mode most be enabled if echo cancellation is to be used.
  • BearWare.TeamTalk.CloseSoundDuplexDevices()
    • When running in duplex mode this function must be used to close down audio capture and playback.
  • BearWare.TeamTalk.StartSoundLoopbackTestEx()
    • Same as BearWare.TeamTalk.StartSoundLoopbackTest() both with BearWare.AudioConfig and echo cancellation.
  • BearWare.TeamTalk.SetDenoiseLevel()
    • Specify how agressive denoise should be when BearWare.TeamTalk.EnableDenoising() is enabled.
  • BearWare.TeamTalk.GetDenoiseLevel()
    • Getter for BearWare.TeamTalk.SetDenoiseLevel().
  • BearWare.TeamTalk.EnableEchoCancellation()
    • For echo cancellation to be enabled the sound system must have been initialized in duplex mode using BearWare.TeamTalk.InitSoundDuplexDevices(). Note that echo cancellation performs poorly on Windows.
  • BearWare.TeamTalk.AcquireUserVideoFrame()
  • BearWare.TeamTalk.ReleaseUserVideoFrame()
    • Release the resources held by the client instance so a new video frame can be extracted. Never use the BearWare.VideoFrame from BearWare.TeamTalk.AcquireUserVideoFrame() again after this call.
  • BearWare.AudioConfig
    • When creating a BearWare.Channel using BearWare.TeamTalk.DoMakeChannel() or BearWare.TeamTalk.DoJoinChannel() it is now possible to specify an audio configuration so all users will speak at the same volume level.
  • BearWare.ChannelType ChannelType.CHANNEL_CLASSROOM
    • This is a new channel-type where a channel operator or administrator can select which users are allowed to talk and send video to a channel. Use voiceUsers and videoUsers members of BearWare.Channel to select who is allowed to transmit then afterwards call BearWare.TeamTalk.DoUpdateChannel().
  • BearWare.TeamTalk.DoChannelOpEx()
    • Make another user operator of a channel by specifying the BearWare.Channel's operator password.
  • BearWare.TeamTalk.DoQueryServerStats()
    • Ask the server for statistics regarding bandwidth usage.
  • BearWare.TeamTalk.GetServerStatistics()
    • After a successful call to BearWare.TeamTalk.DoQueryServerStats() extract the server's statistics in a BearWare.ServerStatistics struct.

TeamTalk 4 SDK v. 4.0c release

Released on 2010/03/16.

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 BearWare.UserAccount struct now has a new member called szNote which can contain extra information about a user account. The BearWare.UserAccount and BearWare.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 BearWare.UserAccount will be transferred to the nUserData field on the BearWare.User struct.

Get "my" User Account

After login it's now possible to retrieve one's own BearWare.UserAccount by calling BearWare.TeamTalk.GetMyUserAccount(). BearWare.TeamTalk.GetMyUserData() can be used to extract one's nUserData of one's BearWare.UserAccount.

Extract all Users on the Server

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

API Changes in v4.0c

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

Renamed/modified functions:

  • BearWare.TeamTalk.SetChannelAudioFolder
    • Call BearWare.TeamTalk.SetUserAudioFolder instead.

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

Released on 2009/11/23.

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:

  • Call TeamTalk.GetVideoCaptureDevices() to get a list of available capture devices.
  • Call TeamTalk.InitVideoCaptureDevice() to initialize the video capture device.
  • Process TeamTalk.OnUserVideoFrame() event.
  • Call TeamTalk.EnableTransmission() to transmit video data.

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:

  • Call TeamTalk.DoNewUserAccount() to create a new user account. The user doing this must be administrator, i.e. UserType UserType.USERTYPE_ADMIN.
  • Call TeamTalk.DoDeleteUserAccount() to delete a user account.
  • Call TeamTalk.DoListUserAccounts() to list all user accounts on the server.

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 TeamTalk.OnCmdProcessing() 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 REMOVED for more information on P2P networking. P2P networking is enabled using the following functions:

  • Call TeamTalk.EnablePeerToPeer() to enable/disable peer to peer connections.

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 BearWare.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.

API Changes in v. 4.0a

The COM DLL has been removed from the SDK since most developers used .NET for their client applications. These developers should now use the .NET DLL instead. Here are the changes from the TeamTalk 3 COM DLL to the TeamTalk 4 .NET DLL.

Renamed/modified methods:

  • TeamTalk3 constructor
    • Call TeamTalk.TeamTalk() constructor instead. Input parameter poll_based should be 'false' in Windows Forms applications and 'true' in Console applications.
  • TeamTalk3.DoBroadcastMessage
    • Call TeamTalk.DoTextMessage() instead with BearWare.TextMessage using message type MSGTYPE_BROADCAST.
  • TeamTalk3.DoChangeNick
    • Call TeamTalk.DoChangeNickname()
  • TeamTalk3.DoChannelMessage
    • Call TeamTalk.DoTextMessage() instead with BearWare.TextMessage using message type MSGTYPE_CHANNEL.
  • TeamTalk3.DoUserMessage
  • TeamTalk3.DoUserSubscribe
    • Call TeamTalk.DoSubscribe()
  • TeamTalk3.DoUserUnsubscribe
    • Call TeamTalk.DoUnsubscribe()
  • TeamTalk3.GetBytesSent
    • Call TeamTalk.GetStatistics()
  • TeamTalk3.GetBytesReceived
    • Call TeamTalk.GetStatistics()
  • TeamTalk3.GetChannelFile
    • Call TeamTalk.GetChannelFileInfo/(
  • TeamTalk3.GetChannelFileFromIndex
    • Call TeamTalk.GetChannelFiles()
  • TeamTalk3.GetChannelFilesCount
    • Call TeamTalk.GetChannelFiles()
  • TeamTalk3.GetCurrentInputLevel
    • Call TeamTalk.GetSoundInputLevel()
  • TeamTalk3.GetDenoising
    • Call TeamTalk.GetFlags and check ClientFlag CLIENT_SNDINPUT_DENOISING.
  • TeamTalk3.GetFileTransfer
    • Call TeamTalk.GetFileTransferInfo()
  • TeamTalk3.GetForwardToAll
    • Call TeamTalk.GetFlags and check ClientFlag CLIENT_P2P is cleared.
  • TeamTalk3.GetInputDeviceCount
    • Call TeamTalk.GetSoundInputDevices()
  • TeamTalk3.GetInputDeviceName
    • Call TeamTalk.GetSoundInputDevices()
  • TeamTalk3.GetMasterVolume
    • Call TeamTalk.GetSoundOutputVolume()
  • TeamTalk3.GetMixerCount
  • TeamTalk3.GetMixerName
  • TeamTalk3.GetMixerWaveInBoost
  • TeamTalk3.GetMixerWaveInControlCount
  • TeamTalk3.GetMixerWaveInControlSelected
  • TeamTalk3.GetMixerWaveInSelected
  • TeamTalk3.GetMixerWaveInVolume
  • TeamTalk3.GetMixerWaveOutMute
  • TeamTalk3.GetMixerWaveOutVolume
  • TeamTalk3.GetMuteAll
    • Call TeamTalk.GetFlags and check ClientFlag CLIENT_SNDOUTPUT_MUTE.
  • TeamTalk3.GetOutputDeviceCount
    • Call TeamTalk.GetSoundOutputDevices()
  • TeamTalk3.GetOutputDeviceID
    • Call TeamTalk.GetSoundOutputDevices()
  • TeamTalk3.GetOutputDeviceName
    • Call TeamTalk.GetSoundOutputDevices()
  • TeamTalk3.GetTcpKeepAliveInterval
    • Call TeamTalk.GetKeepAliveInterval()
  • TeamTalk3.GetUserMute
    • Call TeamTalk.GetUser() and check BearWare.User's uUserState flag for USERSTATE_MUTE.
  • TeamTalk3.GetVoiceActivated
    • Call TeamTalk.GetFlags() and check for ClientFlag CLIENT_SNDINPUT_VOICEACTIVATED.
  • TeamTalk3.GetVoiceGainLevel
    • Call TeamTalk.GetSoundInputGainLevel()
  • TeamTalk3.InstallTestKeyHook
    • Call TeamTalk.HotKey_InstallTestHook()
  • TeamTalk3.IsAuthorized
    • Call TeamTalk.GetFlags() and check for ClientFlag CLIENT_AUTHORIZED.
  • TeamTalk3.IsConnected
    • Call TeamTalk.GetFlags() and check for ClientFlag CLIENT_CONNECTED
  • TeamTalk3.IsConnecting
    • Call TeamTalk.GetFlags() and check for ClientFlag CLIENT_CONNECTING
  • TeamTalk3.IsSoundSystemInitialized
    • Call TeamTalk.GetFlags() and check for ClientFlag CLIENT_SNDNPUT_READY and CLIENT_SNDOUTPUT_READY
  • TeamTalk3.LaunchSoundSystem
    • Call TeamTalk.InitSoundInputDevice() and TeamTalk.InitSoundOutputDevice()
  • TeamTalk3.RegisterHotKey
    • Call TeamTalk.HotKey_Register()
  • TeamTalk3.RestartSoundSystem
    • Call TeamTalk.CloseSoundInputDevice() and TeamTalk.CloseSoundOutputDevice(), then TeamTalk.InitSoundInputDevice() and TeamTalk.InitSoundOutputDevice()
  • TeamTalk3.SetDenoising
    • Call TeamTalk.EnableDenoising()
  • TeamTalk3.SetForwardToAll
    • Call TeamTalk.EnablePeerToPeer() with 'false'.
  • TeamTalk3.SetMasterVolume
    • Call TeamTalk.SetSoundOutputVolume()
  • TeamTalk3.SetMixerWaveInBoost
  • TeamTalk3.SetMixerWaveInControlSelected
  • TeamTalk3.SetMixerWaveInSelected
  • TeamTalk3.SetMixerWaveOutMute
  • TeamTalk3.SetMuteAll
    • Call TeamTalk.SetSoundOutputMute()
  • TeamTalk3.SetTcpKeepAliveInterval
    • Call TeamTalk.SetKeepAliveInterval()
  • TeamTalk3.SetVoiceActivated
    • Call TeamTalk.EnableVoiceActivation()
  • TeamTalk3.SetVoiceGainLevel
    • Call TeamTalk.SetSoundInputGainLevel()
  • TeamTalk3.ShutdownSoundSystem
    • Call TeamTalk.CloseSoundInputDevice() and TeamTalk.CloseSoundOutputDevice()
  • TeamTalk3.StartTransmitting
    • Call TeamTalk.EnableTransmission()
  • TeamTalk3.StartTransmittingWaveFile
    • Call TeamTalk.StartStreamingAudioFileToUser() or TeamTalk.StartStreamingAudioFileToChannel()
  • TeamTalk3.StopTransmitting
    • Call TeamTalk.EnableTransmission()
  • TeamTalk3.StopTransmittingWaveFile
    • Call TeamTalk.StopStreamingAudioFileToUser() or TeamTalk.StopStreamingAudioFileToChannel()
  • TeamTalk3.UninstallTestKeyHook
    • Call TeamTalk.HotKey_RemoveTestHook()
  • TeamTalk3.UnregisterHotKey
    • Call TeamTalk.HotKey_Unregister()

Removed methods:

  • TeamTalk3.InitTeamTalk
  • TeamTalk3.CloseTeamTalk
  • TeamTalk3.SetLocalBindIP see Known Issues it will be available again.
  • TeamTalk3.GetPlaybackMode
  • TeamTalk3.GetSamplesPerPacket
  • TeamTalk3.ProcessMessageQueue
  • TeamTalk3.RestartSoundSystem
  • TeamTalk3.SetPlaybackMode
  • TeamTalk3.RegisterTalkingCallback see Known Issues it will be available again.
  • TeamTalk3.UnregisterTalkingCallback see Known Issues it will be available again.

Renamed/modfied events:

  • TeamTalk3.OnAccepted
    • TeamTalk.OnCmdMyselfLoggedIn()
  • TeamTalk3.OnAddChannel
    • TeamTalk.OnCmdChannelNew()
  • TeamTalk3.OnAddFile
    • TeamTalk.OnCmdFileNew()
  • TeamTalk3.OnAddUser
    • TeamTalk.OnCmdUserJoinedChannel()
  • TeamTalk3.OnBroadcastMessage
  • TeamTalk3.OnChannelMessage
  • TeamTalk3.OnCommandError
    • TeamTalk.OnCmdError()
  • TeamTalk3.OnFileTransferBegin
    • TeamTalk.OnFileTransfer()
  • TeamTalk3.OnFileTransferCompleted
    • TeamTalk.OnFileTransfer()
  • TeamTalk3.OnFileTransferFailed
    • TeamTalk.OnFileTransfer()
  • TeamTalk3.OnJoinedChannel
    • TeamTalk.OnCmdMyselfJoinedChannel()
  • TeamTalk3.OnKicked
    • TeamTalk.OnCmdMyselfKickedFromChannel()
  • TeamTalk3.OnLeftChannel
    • TeamTalk.OnCmdMyselfLeftChannel()
  • TeamTalk3.OnLoggedOut
    • TeamTalk.OnCmdMyselfLoggedOut()
  • TeamTalk3.OnRemoveChannel
    • TeamTalk.OnCmdChannelRemove()
  • TeamTalk3.OnRemoveFile
    • TeamTalk.OnCmdFileRemove()
  • TeamTalk3.OnRemoveUser
    • TeamTalk.OnCmdUserLeftChannel()
  • TeamTalk3.OnServerUpdate
    • TeamTalk.OnCmdServerUpdate()
  • TeamTalk3.OnSoundDeviceError
    • TeamTalk.OnInternalError()
  • TeamTalk3.OnTestKeyToggle
    • TeamTalk.OnHotKeyTest()
  • TeamTalk3.OnUpdateChannel
    • TeamTalk.OnCmdChannelUpdate()
  • TeamTalk3.OnUpdateUser
    • TeamTalk.OnCmdUserUpdate()
  • TeamTalk3.OnUserLoggedIn
    • TeamTalk.OnCmdUserLoggedIn()
  • TeamTalk3.OnUserLoggedOut
    • TeamTalk.OnCmdUserLoggedOut()
  • TeamTalk3.OnUserMessage
  • TeamTalk3.OnUserStoppedTalking
    • TeamTalk.OnUserTalking()
  • TeamTalk3.OnUserTalking
    • TeamTalk.OnUserTalking()

Removed events:

  • TeamTalk3.OnListCommandCompleted
  • TeamTalk3.OnUserAudioData see Known Issues