TeamTalk 4 .NET DLL
Version 4.5A
|
This section contains the list of new features and API changes in TeamTalk 4 SDK releases.
TeamTalk 4 SDK v. 4.5a release
TeamTalk 4 SDK v. 4.4a release
TeamTalk 4 SDK v. 4.3a release
TeamTalk 4 SDK v. 4.2a release
TeamTalk 4 SDK v. 4.1a release
TeamTalk 4 SDK v. 4.0c release
TeamTalk 4 SDK v. 4.0a release
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.TeamTalk4.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.TeamTalk4.DoBanIPAddress().
nMaxLoginAttempts
nMaxLoginsPerIPAddress
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 BearWare.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 TeamTalk4.GetSoundInputDevices() and TeamTalk4.GetSoundOutputDevices().
TeamTalk4.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 TeamTalk4.ConnectNonEncrypted() to do this.
BearWare.VideoCaptureDevice now shows the name of the video device in Unicode on Windows.
SOUNDSYSTEM_WASAPI
nDefaultSampleRate
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 TeamTalk4.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 TeamTalk4.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 MSGTYPE_CUSTOM works in the same way as TextMsgType MSGTYPE_USER.
Some routers don't allow UDP packets over a given size so use TeamTalk4.QueryMaxPayload() after connecting to a server to detect the maximum size for UDP packets. The event TeamTalk4.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 TeamTalk4.EnableAudioBlockEvent(). The event TeamTalk4.OnUserAudioBlock() is triggered when a new BearWare.AudioBlock is available.
If audio files are being recorded separately for every BearWare.User, using TeamTalk4.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 AFF_NONE as parameter to TeamTalk4.SetUserAudioFolder(). This will reset the current recording and generate the TeamTalk4.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 CHANNEL_CLASSROOM was previously limited to 16 people transmitting either video or audio. Now it's, however, possible to add BearWare.TeamTalk4.TT_CLASSROOM_FREEFORALL to the "enabled" users properties to allow everyone to transmit.
uAFF
parameterdesktopUsers
nDesktopBytesSent
nDesktopBytesRecv
szMOTDRaw
nMaxDesktopTxPerSecond
.szInitChannel
autoOperatorChannels
uAFF
szAudioFileName
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 TeamTalk4.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 TeamTalk4.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.
nAudioCodecBpsLimit
, nMaxAudioTxPerSecond
, nMaxVideoTxPerSecond
and nMaxTotalTxPerSecond
.nUptimeMSec
.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 C# so 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.TeamTalk4.InitSoundDuplexDevices() and BearWare.TeamTalk4.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 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.TeamTalk4.DoQueryServerStats() and thereby get an overview of bandwidth usage.
Using BearWare.TeamTalk4.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.TeamTalk4.AcquireUserVideoFrame() to get a pointer to a user's video data. when one has completed using the video frame call BearWare.TeamTalk4.ReleaseUserVideoFrame() to release the shared memory. Note that only one video frame can be extracted each time, therefore calling BearWare.TeamTalk4.AcquireUserVideoFrame() twice will simply result in getting the same video frame.
BearWare.TeamTalk4.ConnectEx()
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.TeamTalk4.GetMyUserAccount(). BearWare.TeamTalk4.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.TeamTalk4.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.TeamTalk4.SetChannelAudioFolder
BearWare.TeamTalk4.SetUserAudioFolder()
instead.Here a list of bugs fixed in this release:
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:
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 TeamTalk4.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 Peer to Peer Transmission Mode 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 TODO List.
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
MSGTYPE_BROADCAST
.TeamTalk3.DoChangeNick
TeamTalk3.DoChannelMessage
MSGTYPE_CHANNEL
.TeamTalk3.DoUserMessage
MSGTYPE_USER
.TeamTalk3.DoUserSubscribe
TeamTalk3.DoUserUnsubscribe
TeamTalk3.GetBytesSent
TeamTalk3.GetBytesReceived
TeamTalk3.GetChannelFile
TeamTalk3.GetChannelFileFromIndex
TeamTalk3.GetChannelFilesCount
TeamTalk3.GetCurrentInputLevel
TeamTalk3.GetDenoising
CLIENT_SNDINPUT_DENOISING
.TeamTalk3.GetFileTransfer
TeamTalk3.GetForwardToAll
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
CLIENT_SNDOUTPUT_MUTE
.TeamTalk3.GetOutputDeviceCount
TeamTalk3.GetOutputDeviceID
TeamTalk3.GetOutputDeviceName
TeamTalk3.GetTcpKeepAliveInterval
TeamTalk3.GetUserMute
USERSTATE_MUTE
.TeamTalk3.GetVoiceActivated
CLIENT_SNDINPUT_VOICEACTIVATED
.TeamTalk3.GetVoiceGainLevel
TeamTalk3.InstallTestKeyHook
TeamTalk3.IsAuthorized
CLIENT_AUTHORIZED
.TeamTalk3.IsConnected
CLIENT_CONNECTED
TeamTalk3.IsConnecting
CLIENT_CONNECTING
TeamTalk3.IsSoundSystemInitialized
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 TODO List it will be available again.TeamTalk3.GetPlaybackMode
TeamTalk3.GetSamplesPerPacket
TeamTalk3.ProcessMessageQueue
TeamTalk3.RestartSoundSystem
TeamTalk3.SetPlaybackMode
TeamTalk3.RegisterTalkingCallback
see TODO List it will be available again.TeamTalk3.UnregisterTalkingCallback
see TODO List it will be available again.Renamed/modfied events:
TeamTalk3.OnAccepted
TeamTalk3.OnAddChannel
TeamTalk3.OnAddFile
TeamTalk3.OnAddUser
TeamTalk3.OnBroadcastMessage
MSGTYPE_BROADCAST
TeamTalk3.OnChannelMessage
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
MSGTYPE_USER
TeamTalk3.OnUserStoppedTalking
TeamTalk3.OnUserTalking
Removed events:
TeamTalk3.OnListCommandCompleted
TeamTalk3.OnUserAudioData
see TODO List