TeamTalk 5 .NET DLL Version 5.15A
|
This section contains the list of new features and API changes in TeamTalk SDK releases.
TeamTalk 5 SDK v. 5.15a release, December 19th 2023
TeamTalk 5 SDK v. 5.14a release, August 16th 2023
TeamTalk 5 SDK v. 5.13a release, May 8th 2023
TeamTalk 5 SDK v. 5.12a release, December 21st 2022
TeamTalk 5 SDK v. 5.11a release, October 2nd 2022
TeamTalk 5 SDK v. 5.9a release, April 2nd 2022
TeamTalk 5 SDK v. 5.8b release, September 7th 2021
TeamTalk 5 SDK v. 5.8a release, June 24th 2021
TeamTalk 5 SDK v. 5.7a release, March 4th 2021
TeamTalk 5 SDK v. 5.6a release, August 9th 2020
TeamTalk 5 SDK v. 5.5a release, April 13 2020
TeamTalk 5 SDK v. 5.4a release, June 25th 2019
TeamTalk 5 SDK v. 5.3b release, November 11th 2018
TeamTalk 5 SDK v. 5.3a release, April 14th 2018
TeamTalk 5 SDK v. 5.2d release, June 24th 2017
TeamTalk 5 SDK v. 5.2c release, May 8th 2017
TeamTalk 5 SDK v. 5.2b release, Jan 30th 2017
TeamTalk 5 SDK v. 5.2a release, January 8th 2017
TeamTalk 5 SDK v. 5.1c release, February 29th 2016
TeamTalk 5 SDK v. 5.1b release, October 3rd 2015
TeamTalk 5 SDK v. 5.1a release, June 13th 2015
TeamTalk 5 SDK v. 5.0a release, March 15th 2015
TeamTalk 4 SDK v. 4.6b release, June 28th 2014
TeamTalk 4 SDK v. 4.6a release, February 20th 2014
TeamTalk 4 SDK v. 4.5a release, May 12th 2013
TeamTalk 4 SDK v. 4.4a release, September 25th 2012
TeamTalk 4 SDK v. 4.3a release, March 18th 2012
TeamTalk 4 SDK v. 4.2a release, November 1st 2011
TeamTalk 4 SDK v. 4.1a release, October 30th 2010
TeamTalk 4 SDK v. 4.0c release, March 7th 2010
TeamTalk 4 SDK v. 4.0a release, November 22nd 2009
PulseAudio sound system is now supported in the TeamTalk SDKs for Ubuntu 22 and Raspbian.
It is now possible to disable the ability to send private and channel text messages using UserRight.USERRIGHT_TEXTMESSAGE_USER and UserRight.USERRIGHT_TEXTMESSAGE_CHANNEL.
szOwner
in BearWare.BannedUserClientError.CMDERR_MAX_FILETRANSFERS_EXCEEDED
in ClientErrorTTType.__SOUNDDEVICEEFFECTS
in TTTypeTTType.__DESKTOPWINDOW
in TTTypeTTType.__ABUSEPREVENTION
in TTTypeSoundSystem.SOUNDSYSTEM_PULSEAUDIO
in SoundSystemAudioFileFormat.AFF_MP3_320KBIT_FORMAT
in AudioFileFormatUserRight.USERRIGHT_TEXTMESSAGE_USER
in UserRightUserRight.USERRIGHT_TEXTMESSAGE_CHANNEL
in UserRightThe maximum duration (in milliseconds) for a voice or media stream to be active can now be specified in BearWare.Channel fields nTimeOutTimerVoiceMSec
and nTimeOutTimerMediaFileMSec
. This can be used to ensure that a single user does not block voice transmission to a channel when e.g. using BearWare.ChannelType.CHANNEL_SOLO_TRANSMIT.
nTimeOutTimerVoiceMSec
in BearWare.ChannelnTimeOutTimerMediaFileMSec
in BearWare.ChannelThe call to BearWare.TeamTalkBase.Connect() is no longer a blocking call when using encryption.
This release fixes a crash issue in the TeamTalk server when a user performs a channel ban on a user who is not in a channel.
Here's the list of new features in TeamTalk SDK v5.11a:
Here's the list of bug fixes in TeamTalk SDK v5.11a:
TextMsgType.MSGTYPE_NONE
.It's now possible to change log levels while the TeamTalk server is running. Setup uServerLogEvents
in BearWare.ServerProperties and issue BearWare.TeamTalkBase.DoUpdateServer(). uServerLogEvents
is based on BearWare.ServerLogEvent.
BearWare.TextMessage is limited to 511 characters but now it's possible to specify bMore
on BearWare.TextMessage to denote that a text message is part of a combined message.
A BearWare.ChannelType.CHANNEL_SOLO_TRANSMIT BearWare.Channel automatically switched to the next user after 500 msec of inactivity. This delay is now configurable using nTransmitUsersQueueDelayMSec
on BearWare.Channel.
uServerLogEvents
in BearWare.ServerPropertiesbMore
in BearWare.TextMessagenTransmitUsersQueueDelayMSec
in BearWare.ChannelBearWare.UserAccount now includes a property that shows when it was last modified.
BearWare.RemoteFile now includes a property that shows when it was uploaded.
szLastModified
on BearWare.UserAccount-struct.szUploadTime
on BearWare.RemoteFile-structPreviously it was only possible to store audio from BearWare.StreamType.STREAMTYPE_VOICE to either a file or BearWare.AudioBlock. In TeamTalk v5.8a it's now possible to have the TeamTalk instance mix several stream types into a single audio stream.
To record multiple audio streams, i.e. BearWare.StreamType.STREAMTYPE_VOICE, BearWare.StreamType.STREAMTYPE_LOCALMEDIAPLAYBACK_AUDIO and BearWare.StreamType.STREAMTYPE_MEDIAFILE_AUDIO, use BearWare.TeamTalkBase.StartRecordingMuxedStreams(). The BearWare.StreamType can be OR'ed to mix the wanted combination.
To retrieve BearWare.AudioBlock with mixed audio use BearWare.TeamTalkBase.EnableAudioBlockEvent().
uStreamTypes
on BearWare.AudioBlock denoting which streams were mixed into the BearWare.AudioBlock.Previously BearWare.SpeexDSP was the only support audio preprocessor for noise suppression, echo cancellation and automatic gain control (AGC). In TeamTalk v5.7 it's now possible to use WebRTC's audio preprocessor which work significantly better than the echo cancellor in SpeexDSP and platform echo cancellors supported through SoundDeviceFeature.SOUNDDEVICEFEATURE_AEC.
Read more about WebRTC's audio preprocessor using the BearWare.WebRTCAudioPreprocessor-struct.
Previously it was only possible to control StreamType.STREAMTYPE_VOICE, StreamType.STREAMTYPE_MEDIAFILE, StreamType.STREAMTYPE_VIDEOCAPTURE and StreamType.STREAMTYPE_DESKTOP in a classroom using transmitUsers
on BearWare.Channel-struct. Now StreamType.STREAMTYPE_CHANNELMSG has been added so it's also possible to enable/disable channel text messages sent through TeamTalkBase.DoTextMessage().
A new channel type ChannelType.CHANNEL_HIDDEN has been introduced which makes a channel invisible to users who do not have UserRight.USERRIGHT_VIEW_HIDDEN_CHANNELS. Users who cannot see the channel are still able to join it given that they know its name and password. Only users with UserRight.USERRIGHT_MODIFY_CHANNELS are able to create hidden channels.
Use TeamTalkBase.DoMakeChannel() or TeamTalkBase.DoJoinChannel() to create a hidden channel.
Both client and server are now able to verify that the remote end is a valid user using TLS peer verification. Peer verfication is set up in BearWare.EncryptionContext and enable using TeamTalkBase.SetEncryptionContext() on the client and TeamTalkSrvBase.SetEncryptionContext() on the server.
Compensation for network jitter can now be enabled using BearWare.JitterConfig and activated using TeamTalkBase.SetUserJitterControl(). The jitter configuration allows a buffer to build up before playback starts. Remember to also increase the allowed buffer size by calling TeamTalkBase.SetUserAudioStreamBufferSize().
TeamTalkBase.StartStreamingMediaFileToChannel() now support OPUS .ogg files on Windows. This allows playback of files recorded using TeamTalkBase.SetUserMediaStorageDir() or TeamTalkBase.StartRecordingMuxedAudioFile().
Previously it was only possible to set one BearWare.EncryptionContext for all TeamTalk server instance, i.e. BearWare.TeamTalkSrvBase, but now each server instance can have its own by calling TeamTalkSrvBase.SetEncryptionContext().
webrtc
in BearWare.AudioPreprocessor for BearWare.WebRTCAudioPreprocessor.nSoundInputDeviceDelayMSec
in BearWare.ClientStatistics for showing audio device delay.%starttick%
for audio file names. See TeamTalkBase.SetUserMediaStorageDir().A new BearWare.SoundDevice will appear on Android when calling TeamTalkBase.GetSoundDevices(). This sound device behaves the same as calling Android Java class android.media.AudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION).
Most platforms today come with their own way of toggling effects on a sound device. Examples of this are echo cancellation, automatic gain control (AGC), noise suppression, 3D sound positioning.
BearWare.SoundDevice now has a new property called uSoundDeviceFeatures
which tells what features can be enabled on the sound device. Currently the list of BearWare.SoundDeviceFeature includes:
TeamTalkBase.SetSoundDeviceEffects() is a new function in TeamTalk v5.6 which can be used for enabling AGC, AEC and denoising on Windows and Android.
When BearWare.SoundDeviceConstants.TT_SOUNDDEVICE_ID_SHARED_FLAG was introduced the shared sound device would default to a sample rate of 48000 and stereo.
Now it's possible to manually specify the sample rate and number of audio channels using TeamTalkBase.InitSoundInputSharedDevice() and TeamTalkBase.InitSoundOutputSharedDevice().
When BearWare.AudioPreprocessor was introduced it could not be used when performing a loopback test. This is now possible using TeamTalkBase.StartSoundLoopbackTestEx().
Previously only BearWare.SpeexDSP was available as BearWare.AudioPreprocessor but now others can be chosing using TeamTalkBase.SetSoundInputPreprocessEx().
uSoundDeviceFeatures
on BearWare.SoundDevice.nWaveDeviceID
on BearWare.SoundDevice on non-Windows platforms. Previously this property was only shown on Windows but now it's shown on all platform. The reason for this is to have a common structure available for Python integration.uSoundDeviceFeatures
on BearWare.SoundDevice for showing features available when setting up a sound device.All platforms now include the property nWaveDeviceID
on BearWare.SoundDevice. Previously this property was only shown on Windows but now it's shown on all platform. This means the byte offset of bSupports3D
and onwards have changed in the BearWare.SoundDevice structure. The reason for this is to have a common structure available for Python integration.
Value of BearWare.SoundDeviceConstants.TT_SOUNDDEVICE_ID_VOICEPREPROCESSINGIO has been changed to include BearWare.SoundDeviceConstants.TT_SOUNDDEVICE_ID_SHARED_FLAG. Previously the iOS sound device that does voice preprocessing actually ran in its own shared device. However, with the introduction of BearWare.SoundDeviceConstants.TT_SOUNDDEVICE_ID_SHARED_FLAG in TeamTalk v5.5 it is simpler for iOS to use the same shared device property as on Android. Therefore ensure that TeamTalkBase.InitSoundInputDevice() and TeamTalkBase.InitSoundOutputDevice() is not called with 1 instead of the value of BearWare.SoundDeviceConstants.TT_SOUNDDEVICE_ID_VOICEPREPROCESSINGIO.
Previously the Android platform only supported one active sound input device. This meant that only one TeamTalk instance could be used on Android.
With the introduction of shared audio device it's now possible for multiple TeamTalk instances to share the same audio input device.
Also for playback the TeamTalk instance can use a shared sound device so playback is not limited to few simultaneous users talking at the same time.
The shared audio device on Android is same as BearWare.SoundDeviceConstants.TT_SOUNDDEVICE_ID_OPENSLES_DEFAULT but or'ed with the flag BearWare.SoundDeviceConstants.TT_SOUNDDEVICE_ID_SHARED_FLAG. The sound device ID flag BearWare.SoundDeviceConstants.TT_SOUNDDEVICE_ID_SHARED_FLAG tells the TeamTalk instance to create a shared audio device which distributes its audio to all other client instances.
The shared audio device which is created runs at the audio device's highest sample rate and highest number of channels. Each client which receives the audio from the shared audio device resamples the audio data to its own format. This is a CPU intensive task, so many clients at different sample rates uses more CPU. It is therefore recommended that clients which use this feature all use channels that has the same audio codec settings. Preferably nDefaultSampleRate
and nMaxInputChannels
and nMaxOutputChannels
of the chosen BearWare.SoundDevice.
To initialize a shared audio input device call like this:
ttInst.InitSoundInputDevice(ttInst, inputid | SoundDeviceConstants.TT_SOUNDDEVICE_ID_SHARED_FLAG);
To initialize a shared audio output device call like this:
ttInst.InitSoundInputDevice(ttInst, outputid | SoundDeviceConstants.TT_SOUNDDEVICE_ID_SHARED_FLAG);
Media files can now be played using the TeamTalk instance configured sound output device. Call TeamTalkBase.InitLocalPlayback() to playback a media file.
Prior to playback it's possible to set specify an offset using BearWare.MediaFilePlayback and setup an BearWare.AudioPreprocessor.
While the media file is playing it's possible to use TeamTalkBase.UpdateLocalPlayback() to change the media stream's properties. The progress of the media file playback can be monitor through ClientEvent.CLIENTEVENT_LOCAL_MEDIAFILE.
Stop local media file playback using TeamTalkBase.StopLocalPlayback().
streaming to channel
When streaming media files to a channel it's now possible to specify an BearWare.AudioPreprocessor to change the audio stream of the media file.
A new audio BearWare.TTAudioPreprocessor is introduced with can mute left/right audio channel and change gain level.
It's also possible to change the offset and pause the media file using TeamTalkBase.UpdateStreamingMediaFileToChannel() and BearWare.MediaFilePlayback.
To use these new features use TeamTalkBase.StartStreamingMediaFileToChannelEx() instead of TeamTalkBase.StartStreamingMediaFileToChannel().
Previously the maximum transmit interval was limited to 100 msec. With BearWare.OpusCodec's introduction of 120 msec frame sizes the transmit interval has been increased to 500 msec.
OPUS v1.3 introduced additional frame sizes, i.e. 80, 100 and 120 msec. These frame sizes can now be set using the nFrameSizeMSec
property of BearWare.OpusCodec.
Previously TeamTalkBase.EnableAudioBlockEvent() could only be used to access audio from a single user. Using BearWare.TeamTalkBase.TT_MUXED_USERID now makes it possible to access the audio stream where all users' audio streams have been mixed together. Basically the same as recording all conversations to a single file using TeamTalkBase.StartRecordingMuxedAudioFile().
The StreamType.STREAMTYPE_VOICE could previously only come from the configured BearWare.SoundDevice passed to TeamTalkBase.InitSoundInputDevice(). Now it's possible to replace the, typically microphone, audio input with a custom audio stream by passing raw audio in BearWare.AudioBlock to TeamTalkBase.InsertAudioBlock().
The audio input must be passed continuesly to TeamTalkBase.InsertAudioBlock() to keep the input going. Use event ClientEvent.CLIENTEVENT_AUDIOINPUT to monitor progress. The BearWare.AudioInputProgress struct hold information about the queue sizes/progress.
How often "keep alive" information should be sent depend on the type of network where the TeamTalk client is deployed. Previously the TCP and UDP keep alive settings have been controlled entirely by the TeamTalk client instance.
Now it's possible to configure the keep alive properties using BearWare.ClientKeepAlive-struct and functions TeamTalkBase.SetClientKeepAlive() and TeamTalkBase.GetClientKeepAlive().
Previously it was only possible to have one active audio recording using TeamTalkBase.StartRecordingMuxedAudioFile().
Now it's possible to record multiple channels at the same time using TeamTalkBase.StartRecordingMuxedAudioFileEx(). Note that in order to get audio from channels where the TeamTalk instance is currently not participating requires the use of TeamTalkBase.DoSubscribe() and Subscription.SUBSCRIBE_INTERCEPT_VOICE.
The TeamTalk 5 SDK Standard Edition could only connect to unencrypted TeamTalk servers, but now it's also possible to connect to encrypted servers. The TeamTalk server in TeamTalk 5 SDK, however, still cannot run in encrypted mode.
Previously the Android platform only included a shared library for Java Native Interface (JNI). But now it's also possible to use a shared library like other platforms.
nFrameSizeMSec
for BearWare.OpusCodec.
TeamTalk SDKs for Android now comes with a TeamTalk JNI library for 64-bit ARM and 32-bit Intel x86. Required API level is now 21 (Android 5.0).
TeamTalk SDKs for Windows now uses Microsoft Media Foundation instead of DirectShow when streaming media files and capturing from video cameras. This means that Windows 10 users can now stream from HTTP and HTTPS.
TeamTalk SDK Standard Edition can now connect to encrypted TeamTalk servers. Running an encrypted TeamTalk server, however, still requires TeamTalk SDK Professional Edition.
TeamTalk SDK Standard Edition can now stream HTTPS on macOS, Android and Linux.
TeamTalk SDK Standard Edition now requires libssl dependency (OpenSSL).
BearWare.Codec.OPUS_CODEC upgraded to v1.3 on all platforms.
Record in MP3 format when using TeamTalkBase.SetUserMediaStorageDir() and TeamTalkBase.StartRecordingMuxedAudioFile().
nLoginDelayMSec
to BearWare.ServerPropertiesszAccessToken
to BearWare.ServerPropertiesFixed BearWare.DesktopInput not being received in encrypted mode.
The transmitUsers
array of BearWare.Channel now also applies to ChannelType.CHANNEL_DEFAULT but unlike a channel of type ChannelType.CHANNEL_CLASSROOM the transmitUsers
array contains the user ID of those who cannot talk. Basically the opposite of classrooms.
The following new macros have been introduced to access the transmitUsers
array:
StreamType enumeration now contains:
UserRight enumeration now contains:
uBanTypes
to BearWare.BannedUser.abusePrevent
to BearWare.UserAccount.Fixed severe crash issue when audio streams are stopped. Crash was due to a race condition which occurs in rare cases.
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.
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.
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.
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
The SDK's Server
folder now includes daemon scripts for Debian (/etc/init
.d) and systemd based Linux distributions.
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.
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).
nChannelID
not being set in BearWare.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 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.
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.
The BearWare.SpeexDSP-struct is used by TeamTalkBase.SetSoundInputPreprocess() and TeamTalkBase.StartSoundLoopbackTest().
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 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.
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.
Added szClientName
to BearWare.User-struct. The client name is specified in TeamTalkBase.DoLoginEx().
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().
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).
TeamTalk 5 iOS SDKs can now be compiled with "Enable Bitcode" (-fembed-bitcode
).
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()
.
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 TeamTalkBase.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 Library/Java/TeamTalkJNI
.
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 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.
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.
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.
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 BearWare.ServerProperties. The user rights (BearWare.UserRight) are now part of BearWare.UserAccount so each user can have different BearWare.UserRight 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 BearWare.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 BearWare.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 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
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.
BearWare.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.
FileInfo
.inputSampleRates
and outputSampleRates
replaced by supportedSampleRates
due to change of TeamTalkBase.GetSoundDevices() instead of TeamTalk4.GetSoundInputDevices()
and TeamTalk4.GetSoundOutputDevices()
.nStreamID
. Stream ID changes whenever push-to-talk or voice activation are toggled.captureFormats
renamed to videoFormats
.nCaptureFormatsCount
renamed to nVideoFormatsCount
.szFileName
.frameBuffer
with pointer to data and nFrameBufferSize
with size of bffer.nMSecPerPacket
to nTxIntervalMSec.bUseJitterBuffer
.nMSecPerPacket
to nTxIntervalMSec.nQualityVBR
to nQuality
.bUseJitterBuffer
.celt
and celt_vbr
.opus
, i.e. BearWare.OpusCodec.theora
.webm_vp8
.szServerPasswd
. Only valid BearWare.UserAccount is required now.uUserRights
. Now part of BearWare.UserAccount.nAduioCodecBpsLimit
. Now part of BearWare.UserAccount.nMaxVideoTxPerSecond
replaced by nMaxVideoCaptureTxPerSecond.nMaxMediaFileTxPerSecond
.nVideoBytesTX
replaced by nVideoCaptureBytesTX.nVideoBytesRX
replaced by nVideoCaptureBytesRX.nMediaFileBytesTX
.nMediaFileBytesRX
.nUsersServed
.nUsersPeak
.nFilesTx
.nFilesRx
.uUserRights
. See User rights now moved to user account.nAudioCodecBpsLimit
. See Audio codec bitrate limit moved to user account.nVolumeVoice
.nVolumeMediaFile
.nGainLevelVoice
.nGainLevelMediaFile
.nStoppedDelayVoice
.nStoppedDelayMediaFile
.soundPositionVoice
.soundPositionMediaFile
.stereoPlaybackVoice
.stereoPlaybackMediaFile
.nBufferMSecVoice
nBufferMSecMediaFile
.szAudioFolder
to szMediaStorageDir
uAFF
. Format in ClientEvent.CLIENTEVENT_USER_RECORD_MEDIAFILE.szAudioFileName
. File name in ClientEvent.CLIENTEVENT_USER_RECORD_MEDIAFILE.nAudioPacketsRecv
replaced by nVoicePacketsRecv.nAudioPacketsLost
replaced by nVoicePacketsLost.nVideoPacketsRecv
replaced by nVideoCapturePacketsRecv.nVideoFramesRecv
replaced by nVideoCaptureFramesRecv.nMediaFileAudioPacketsRecv
.nMediaFileAudioPacketsLost
.nMediaFileVideoPacketsRecv
.nMediaFileVideoFramesRecv
.nMediaFileVideoFramesLost
.nMediaFileVideoFramesDropped
.nUserData
.transmitUsers
.codec
to audiocodec
.voiceUsers
. Use transmitUsers
instead.videoUsers
. Use transmitUsers
instead.desktopUsers
. Use transmitUsers
instead.voiceUsers
. Use transmitUsers
instead.nStatus
.CELTCodec
TheoraCodec
FileInfo
CaptureFormat
TransmitType
USERRIGHT_DOUBLE_LOGIN
replaced by UserRight.USERRIGHT_MULTI_LOGIN.USERRIGHT_CLIENT_BROADCAST
replaced by UserRight.USERRIGHT_TEXTMESSAGE_BROADCAST.USERRIGHT_FORWARD_AUDIO
replaced by UserRight.USERRIGHT_TRANSMIT_VOICEUSERRIGHT_FORWARD_VIDEO
replaced by UserRight.USERRIGHT_TRANSMIT_VIDEOCAPTUREUSERRIGHT_FORWARD_DESKTOP
replaced by UserRight.USERRIGHT_TRANSMIT_DESKTOPUSERRIGHT_FORWARD_DESKTOPINPUT
replaced by UserRight.USERRIGHT_TRANSMIT_DESKTOPINPUTUSERRIGHT_CHANNEL_CREATION
. See User rights now moved to user account.USERRIGHT_CHANNEL_OPERATORS
.USERRIGHT_CHANNEL_COMMANDS
.USERRIGHT_SUBSCRIPTIONS
. Subscriptions are now mandatory.USERRIGHT_STRICT_UTF8
. UTF-8 is now mandatory.SUBSCRIBE_AUDIO
replaced by SUBSCRIBE_VOICE.SUBSCRIBE_VIDEO
replaced by SUBSCRIBE_VIDEOCAPTURE.SUBSCRIBE_INTERCEPT_AUDIO
replaced by SUBSCRIBE_INTERCEPT_VOICE.SUBSCRIBE_INTERCEPT_VIDEO
replaced by SUBSCRIBE_INTERCEPT_VIDEOCAPTURE.USERSTATE_TALKING
replaced by UserState.USERSTATE_VOICE.USERSTATE_MUTE
replaced by UserState.USERSTATE_MUTE_VOICE.USERSTATE_VIDEO
replaced by UserState.USERSTATE_VIDEOCAPTURE.USERSTATE_MUTE_MEDIAFILE
.USERSTATE_MEDIAFILE_AUDIO
.USERSTATE_MEDIAFILE_VIDEO
.USERSTATE_MEDIAFILE
.CHANNEL_STATIC
replaced by ChannelType.CHANNEL_PERMANENT.CHANNEL_ECHO
. Use Subscription.SUBSCRIBE_VOICE instead.CHANNEL_ECHO_AUDIO
. Use Subscription.SUBSCRIBE_VOICE instead.CHANNEL_ECHO_VIDEO
. Use Subscription.SUBSCRIBE_VIDEOCAPTURE instead.CHANNEL_ECHO_DESKTOP
. Use Subscription.SUBSCRIBE_DESKTOP instead.CMDERR_INCORRECT_SERVER_PASSWORD
.CMDERR_CANNOT_CREATE_CHANNELS
.CMDERR_SUBSCRIPTIONS_DISABLED
.CMDERR_SERVER_HAS_USERS
.CLIENT_TX_AUDIO
replaced by ClientFlag.CLIENT_TX_VOICE.CLIENT_TX_VIDEO
replaced by ClientFlag.CLIENT_TX_VIDEOCAPTURE.CLIENT_SNDINPUT_DENOISING
.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.CLIENT_SNDINPUT_AEC
.CLIENT_SNDINPUT_AGC
.SOUND_VU_MAX
to 100SOUND_VOLUME_MAX
32000SOUND_VOLUME_DEFAULT
AudioFileStatus
uUserState
changed.TeamTalk4.OnConnectSuccess
TeamTalk4.OnConnectFailed
TeamTalk4.OnCmdProcessing
bCompleted
inverted and now states bActive
.TeamTalk4.OnCmdMyselfLoggedIn
TeamTalk4.OnCmdMyselfJoinedChannel
TeamTalk4.OnCmdMyselfLeftChannel
TeamTalk4.OnCmdMyselfKickedFromChannel
TeamTalk4.OnUserTalking
TeamTalk4.OnUserVideoFrame
TeamTalk4.OnUserAudioFile
TeamTalk4.OnDesktopTransferUpdate
TeamTalk4.OnUserDesktopCursorPosition
TeamTalk4.OnMaxPayloadUpdate
TeamTalk4.OnStreamAudioFileToChannel
TeamTalk4.StartStreamingAudioFileToUser()
replaced by BearWare.TeamTalkBase.StartStreamingMediaFileToChannel()TeamTalk4.OnStreamMediaFileChannel
TeamTalk4.OnStreamAudioFileToUser
TeamTalk4.OnConnectionP2P
TeamTalk4.GetSoundInputDevices
and TeamTalk4.GetSoundOutputDevices.TeamTalk4.SetAGCSettings
and TeamTalk4.GetAGCSettings
.TeamTalk4.GetAGCSettings
.TeamTalk4.EnableTransmission
.TeamTalk4.EnableTransmission
.TeamTalk4.EnableTransmission
.TeamTalk4.GetUserVideoFrame
and TeamTalk4.AcquireUserVideoFrame
.TeamTalk4.ReleaseUserVideoFrame
.TeamTalk4.GetChannelFileInfo
TeamTalk4.SetUserStoppedTalkingDelay
TeamTalk4.SetUserMediaBufferSize
HWND
message identifier.lpTTInstance
parameter.lpVideoCodec
parameter.lpBitmap
and nBitmapSize
are now part of BearWare.DesktopWindow.nUserID
parameter. All in channel will receive.bEncrypted
parameter.bEncrypted
parameter.szServerPassword
removed. User account mandatory in TeamTalk 5.lpUserIDs
replaced by lpUsers
parameter.lpUserIDs
replaced by lpUsers
parameter.lpFileInfos
replaced by lpRemoteFiles
lpChannelIDs
replaced by lpChannels
.nStreamType
parameter.nStreamType
parameter.nStreamType
parameter.nUserID
and nStreamType
.lpAudioBlock
parameter. Now returns BearWare.AudioBlock.TeamTalk4.GetSoundInputDevices
TeamTalk4.GetSoundOutputDevices
TeamTalk4.StartSoundLoopbackTestEx()
TeamTalk4.EnableAGC
TeamTalk4.EnableEchoCancellation
TeamTalk4.SetAGCSettings
TeamTalk4.GetAGCSettings
TeamTalk4.EnableDenoising
TeamTalk4.SetDenoiseLevel
TeamTalk4.GetDenoiseLevel
TeamTalk4.GetUserVideoFrame
TeamTalk4.AcquireUserVideoFrame
TeamTalk4.ReleaseUserVideoFrame
.TeamTalk4.EnableTransmission
TeamTalk4.IsTransmitting
TeamTalk4.StartStreamingAudioFileToUser
TeamTalk4.StopStreamingAudioFileToUser
TeamTalk4.StartStreamingAudioFileToChannel
TeamTalk4.StopStreamingAudioFileToChannel
BearWare.TeamTalk4.SetUserAudioFolder
TeamTalk4.GetUserDesktopCursor
TeamTalk4.GetUserDesktopInput
TeamTalk4.ConnectNonEncrypted
TeamTalk4.SetKeepAliveInterval()
TeamTalk4.GetKeepAliveInterval()
TeamTalk4.SetServerTimeout
TeamTalk4.GetServerTimeout
TeamTalk4.EnablePeerToPeer
TeamTalk4.GetStatistics
TeamTalk4.GetPacketSize
TeamTalk4.GetServerStatistics
TeamTalk4.GetChannelFileInfo()
TeamTalk4.GetTextMessage()
TeamTalk4.GetUserVolume
nVolumeVoice
in BearWare.User instead.TeamTalk4.GetUserGainLevel
nGainLevelVoice
in BearWare.User instead.TeamTalk4.SetUserStoppedTalkingDelay
TeamTalk4.GetUserStoppedTalkingDelay
nStoppedDelayVoice
in BearWare.User instead.TeamTalk4.GetUserPosition
soundPositionVoice
in BearWare.User instead.TeamTalk4.GetUserStereo
uUserState
in BearWare.User instead.TeamTalk4.SetUserMediaBufferSize
TeamTalk4.ReleaseAllAudioBlocks
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.
BearWare.DesktopInput
BearWare.DesktopKeyState
BearWare.Subscription
BearWare.TeamTalk.OnUserDesktopInput
BearWare.UserRight
USERRIGHT_FORWARD_DESKTOPINPUT
BearWare.TeamTalk.SendDesktopInput
BearWare.TeamTalk.GetUserDesktopInput
BearWare.WindowsHelper.KeyTranslate
BearWare.WindowsHelper.Execute
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 BearWare.TeamTalk.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 BearWare.ServerProperties
. It's now also possible to limit the number of logins per IP-address by specifying nMaxLoginsPerIPAddress
in BearWare.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 BearWare.TeamTalk.DoBanIPAddress().
BearWare.AudioFormat
BearWare.MediaFileInfo
BearWare.ServerProperties
nMaxLoginAttempts
nMaxLoginsPerIPAddress
BearWare.ClientError
BearWare.ClientFlag
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.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 TeamTalk.GetSoundInputDevices() and TeamTalk.GetSoundOutputDevices().
TeamTalk.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, 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.
The client in the TeamTalk 4 Professional Edition can now also connect to non-encrypted TeamTalk server. Use TeamTalk.ConnectNonEncrypted() to do this.
BearWare.VideoCaptureDevice
now shows the name of the video device in Unicode on Windows.
BearWare.SoundSystem
BearWare.SoundDevice
nDefaultSampleRate
BearWare.UserRight
USERRIGHT_STRICT_UTF8
BearWare.ChannelType
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 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.
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.
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
.
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
.
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.
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.
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.
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.
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.
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.
uAFF
parameterBearWare.TeamTalk.OnUserAudioBlock()
BearWare.TeamTalk.OnUserDesktopWindow()
BearWare.TeamTalk.OnDesktopTransferUpdate()
BearWare.TeamTalk.OnUserDesktopCursorPosition()
BearWare.TeamTalk.OnMaxPayloadUpdate()
BearWare.AudioBlock
new structBitmapFormat
new structDesktopProtocol
new structBearWare.DesktopWindow
new structBearWare.ShareWindow
new structBearWare.Channel
struct updated with new fields:desktopUsers
BearWare.ClientStatistics
nDesktopBytesSent
nDesktopBytesRecv
BearWare.ServerProperties
struct updated with new fields:szMOTDRaw
nMaxDesktopTxPerSecond
.BearWare.UserAccount
struct updated with new fields:szInitChannel
autoOperatorChannels
BearWare.User
struct updated with new fieldsuAFF
szAudioFileName
AudioFileFormat
enumeration updated with new values:AudioFileFormat
AudioFileFormat.AFF_MP3_16KBIT_FORMAT
AudioFileFormat
AudioFileFormat.AFF_MP3_32KBIT_FORMAT
ChannelType
enumeration updated with new values:ChannelType
CHANNEL_ECHO_AUDIO
ChannelType
CHANNEL_ECHO_VIDEO
ChannelType
CHANNEL_ECHO_DESKTOP
ClientFlag
Subscription
enumeration updated with new values:Subscription
Subscription.SUBSCRIBE_CUSTOM_MSG
Subscription
Subscription.SUBSCRIBE_INTERCEPT_CUSTOM_MSG
Subscription
Subscription.SUBSCRIBE_DESKTOP
Subscription
Subscription.SUBSCRIBE_INTERCEPT_DESKTOP
TextMsgType
TextMsgType
TextMsgType.MSGTYPE_CUSTOM
UserState
enumeration updated with new values:UserState
UserState.USERSTATE_DESKTOP
UserState
USERSTATE_VIDEO
UserRight
enumeration updated with new values:UserRight
USERRIGHT_FORWARD_DESKTOP
.BearWare.TeamTalk.TT_CLASSROOM_FREEFORALL
new const macroBearWare.TeamTalk.TT_CHANNELS_OPERATOR_MAX
new const macroReleased 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 BearWare.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 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().
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 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.
BearWare.SpeexVBRCodec
struct for Speex VBR.BearWare.CELTCodec
struct updated for CELT 0.11.BearWare.CELTVBRCodec
struct for CELT VBR.Codec
enum update with Codec
CELT_0_5_2_OBSOLETE_CODEC
, Codec.SPEEX_VBR_CODEC
, Codec
CELT_CODEC
and Codec
CELT_VBR_CODEC
.BearWare.AudioCodec
struct updated with VBR codecs.BearWare.ServerProperties
struct updated with nAudioCodecBpsLimit
, nMaxAudioTxPerSecond
, nMaxVideoTxPerSecond
and nMaxTotalTxPerSecond
.BearWare.ServerStatistics
struct updated with nUptimeMSec
.AudioFileFormat
enum for different types of audio storage.ClientError
enum now contains ClientError
ClientError.CMDERR_UNKNOWN_AUDIOCODEC
for unsupport audio codec and ClientError
ClientError.CMDERR_AUDIOCODEC_BITRATE_LIMIT_EXCEEDED
for setting a bitrate for audio codecs which is too high.ClientFlag
enum now contains ClientFlag.CLIENT_MUX_AUDIOFILE
for active muxed audio file.Released on 2010/10/30.
The new features in the TeamTalk 4 SDK v. 4.1a has are described in the following subsections.
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 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.
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.
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.
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.
Administrators can now query a server statistics using the command BearWare.TeamTalk.DoQueryServerStats() and thereby get an overview of bandwidth usage.
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.
BearWare.TeamTalk.ConnectEx()
BearWare.SoundSystem
SoundSystem.SOUNDSYSTEM_COREAUDIO
BearWare.AudioConfig
and echo cancellation.BearWare.TeamTalk.EnableDenoising()
is enabled.BearWare.VideoFrame
struct. Call BearWare.TeamTalk.ReleaseUserVideoFrame() to release the memory referenced in the BearWare.VideoFrame
.BearWare.VideoFrame
from BearWare.TeamTalk.AcquireUserVideoFrame() again after this call.BearWare.AudioConfig
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
BearWare.Channel
to select who is allowed to transmit then afterwards call BearWare.TeamTalk.DoUpdateChannel().BearWare.Channel's
operator password.BearWare.ServerStatistics
struct.Released on 2010/03/16.
The new features in the TeamTalk 4 SDK v. 4.0c has are described in the following subsections.
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.
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
.
All users who are connected to a server can now be retrieved using BearWare.TeamTalk.GetServerUsers().
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
BearWare.TeamTalk.SetUserAudioFolder
instead.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:
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:
UserType
UserType.USERTYPE_ADMIN
.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.
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:
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.
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
constructorTeamTalk3.DoBroadcastMessage
BearWare.TextMessage
using message type MSGTYPE_BROADCAST
.TeamTalk3.DoChangeNick
TeamTalk3.DoChannelMessage
BearWare.TextMessage
using message type MSGTYPE_CHANNEL
.TeamTalk3.DoUserMessage
BearWare.TextMessage
using message type MSGTYPE_USER
.TeamTalk3.DoUserSubscribe
TeamTalk3.DoUserUnsubscribe
TeamTalk3.GetBytesSent
TeamTalk3.GetBytesReceived
TeamTalk3.GetChannelFile
TeamTalk3.GetChannelFileFromIndex
TeamTalk3.GetChannelFilesCount
TeamTalk3.GetCurrentInputLevel
TeamTalk3.GetDenoising
ClientFlag
CLIENT_SNDINPUT_DENOISING
.TeamTalk3.GetFileTransfer
TeamTalk3.GetForwardToAll
ClientFlag
CLIENT_P2P
is cleared.TeamTalk3.GetInputDeviceCount
TeamTalk3.GetInputDeviceName
TeamTalk3.GetMasterVolume
TeamTalk3.GetMixerCount
TeamTalk3.GetMixerName
TeamTalk3.GetMixerWaveInBoost
TeamTalk3.GetMixerWaveInControlCount
TeamTalk3.GetMixerWaveInControlSelected
TeamTalk3.GetMixerWaveInSelected
TeamTalk3.GetMixerWaveInVolume
TeamTalk3.GetMixerWaveOutMute
TeamTalk3.GetMixerWaveOutVolume
TeamTalk3.GetMuteAll
ClientFlag
CLIENT_SNDOUTPUT_MUTE
.TeamTalk3.GetOutputDeviceCount
TeamTalk3.GetOutputDeviceID
TeamTalk3.GetOutputDeviceName
TeamTalk3.GetTcpKeepAliveInterval
TeamTalk3.GetUserMute
BearWare.User's
uUserState flag for USERSTATE_MUTE
.TeamTalk3.GetVoiceActivated
ClientFlag
CLIENT_SNDINPUT_VOICEACTIVATED
.TeamTalk3.GetVoiceGainLevel
TeamTalk3.InstallTestKeyHook
TeamTalk3.IsAuthorized
ClientFlag
CLIENT_AUTHORIZED
.TeamTalk3.IsConnected
ClientFlag
CLIENT_CONNECTED
TeamTalk3.IsConnecting
ClientFlag
CLIENT_CONNECTING
TeamTalk3.IsSoundSystemInitialized
ClientFlag
CLIENT_SNDNPUT_READY
and CLIENT_SNDOUTPUT_READY
TeamTalk3.LaunchSoundSystem
TeamTalk3.RegisterHotKey
TeamTalk3.RestartSoundSystem
TeamTalk3.SetDenoising
TeamTalk3.SetForwardToAll
TeamTalk3.SetMasterVolume
TeamTalk3.SetMixerWaveInBoost
TeamTalk3.SetMixerWaveInControlSelected
TeamTalk3.SetMixerWaveInSelected
TeamTalk3.SetMixerWaveOutMute
TeamTalk3.SetMuteAll
TeamTalk3.SetTcpKeepAliveInterval
TeamTalk3.SetVoiceActivated
TeamTalk3.SetVoiceGainLevel
TeamTalk3.ShutdownSoundSystem
TeamTalk3.StartTransmitting
TeamTalk3.StartTransmittingWaveFile
TeamTalk3.StopTransmitting
TeamTalk3.StopTransmittingWaveFile
TeamTalk3.UninstallTestKeyHook
TeamTalk3.UnregisterHotKey
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
TeamTalk3.OnAddChannel
TeamTalk3.OnAddFile
TeamTalk3.OnAddUser
TeamTalk3.OnBroadcastMessage
BearWare.TextMessage
for MSGTYPE_BROADCAST
TeamTalk3.OnChannelMessage
BearWare.TextMessage
for MSGTYPE_CHANNEL
TeamTalk3.OnCommandError
TeamTalk3.OnFileTransferBegin
TeamTalk3.OnFileTransferCompleted
TeamTalk3.OnFileTransferFailed
TeamTalk3.OnJoinedChannel
TeamTalk3.OnKicked
TeamTalk3.OnLeftChannel
TeamTalk3.OnLoggedOut
TeamTalk3.OnRemoveChannel
TeamTalk3.OnRemoveFile
TeamTalk3.OnRemoveUser
TeamTalk3.OnServerUpdate
TeamTalk3.OnSoundDeviceError
TeamTalk3.OnTestKeyToggle
TeamTalk3.OnUpdateChannel
TeamTalk3.OnUpdateUser
TeamTalk3.OnUserLoggedIn
TeamTalk3.OnUserLoggedOut
TeamTalk3.OnUserMessage
BearWare.TextMessage
for MSGTYPE_USER
TeamTalk3.OnUserStoppedTalking
TeamTalk3.OnUserTalking
Removed events:
TeamTalk3.OnListCommandCompleted
TeamTalk3.OnUserAudioData
see Known Issues