This page contains information on major API changes during release v2.0.8 and v2.3.2 for Agora SDK for Windows.

Important Changes

1. Dynamic Key

The Dynamic key is improved and updated in v2.1.0. If you are using an Agora SDK version below v2.1.0 and wish to migrate to the latest version, read the following contents thoroughly before migrating.

Major changes

  • Before v2.1.0, for each step that requires authentication, such as joining a channel and setting the user role, the user needs to provide an independent dynamic key;
  • v2.1.0 introduces the Token, a turnkey solution that has access to all Agora services and privileges. You only need to pass the Token when joining a channel. If you want to renew authentication, call renewToken.
  • In a generated Token, the field name unixTs/Ts (The authorized timestamp) is removed.

Related API Reference

Feature v2.0.2 v2.1.0 and Later
Join a channel public int joinChannel(const char* channelKey, const char* channel, const char* info, uid_t uid) virtual int joinChannel(const char* token, const char* channelId, const char* info, uid_t uid) = 0;
Set the client role public int setClientRole(CLIENT_ROLE_TYPE role, const char* permissionKey); virtual int setClientRole(CLIENT_ROLE_TYPE role) = 0;
Notify the Token has expired public virtual void onRequestChannelKey(); virtual void onRequestToken();
Renew the Token public int renewChannelKey(const char* channelKey); virtual int renewToken(const char* token) = 0;

For more information on Token migration and use guide, see:

2. New Video Encoder Configuration

To support scenarios with video rotation and enable better quality for the custom video source, v2.3.2 deprecates the setVideoProfile method and uses the setVideoEncoderConfiguration method instead to set the video encoding configurations. You can still use the setVideoProfile method, but Agora recommends using the setVideoEncoderConfiguration method to set the video profile.

For more information, see the following documents:

3. More Accurate Call Quality Statistics

v2.3.2 deprecates the onAudioQuality callback and replaces it with the onRemoteAudioStats callback to improve the accuracy of the call quality statistics. The onRemoteAudioStats callback uses more comprehensive algorithm and is more closely linked to the real user experience.

In addition, v2.3.2 optimizes the algorithm of the last mile network quality of the local user before the user joins a channel, and improves the accuracy of the onLastmileQuality and the onNetworkQuality callbacks statistics.

4. New Network Connection Policy

v2.3.2 adds the getConnectionState method and the onConnectionStateChanged callback to get the current network connection state and reason for a connection state change, and deprecates the onConnectionInterrupted and onConnectionBanned callbacks.

5. Speaker Volume Indication

v2.2.0 improves the function of enableAudioVolumeIndication. The method, once enabled, sends the audio volume indication of the speaker in its callback onAudioVolumeIndication at set intervals, regardless of whether any one is speaking in the channel

Major New Features

  • Added the enableLoopbackRecording API to enable Local audio recoding.
  • Added the setLocalVoiceEqualization and the setLocalVoiceReverb APIs to enable voice equalization and reverberation respectively.
  • Added the addInjectStreamUrl API to enble adding a voice or video stream HTTP/HTTPS URL address to the live interactive streaming.
  • Added RESTful APIs to enable checking online channel statistics including the status of the users in the channel and the channel list of a specific company.
  • Added the following APIs to enable sound effects management and playing. Enable playing short-time sound effects like clapping and gunshots. You can play multiple audio effects at the same time, and preload the audio effect file for efficiency. Related APIs are listed as follows:
  • Added a method to deploy the proxy at the server. Agora has provided a proxy package for enterprise users with corporate firewalls to deploy before accessing the services of Agora.
  • Added the onRemoteVideoStateChanged to get the remote video state.
  • Added the addVideoWatermark API and watermark of the setLiveTranscoding API to enable adding a PNG file to the local or CDN live streaming as a watermark respectively.
  • Added the setExternalVideoSource and the pushVideoFrame APIs to enable external video data (Push Mode).
  • Added the setExternalAudioSink and the pullAudioFrame APIs to enable external audio sink (Pull Mode).
  • Added the adjustAudioMixingPlayoutVolume and the adjustAudioMixingPublishVolume APIs to enable independent audio mixing volume adjustments for local playback and remote publishing respectively.
  • Added the following APIs to enable fallback options for live interactive streaming under unreliable network conditions. Unreliable network conditions affect the overall quality of the live v. The function automatically disables the video stream when the network conditions cannot support both audio and video. Related APIs are listed as follows:
    • setLocalPublishFallbackOption: Sets the fallback option for the locally published video stream based on the network conditions.
    • setRemoteSubscribeFallbackOption: Sets the fallback option for the remotely subscribed stream based on the network conditions.
    • onLocalPublishFallbackToAudioOnly: Occurs when the locally published media stream falls back to an audio-only stream due to poor network conditions or switches back to the video after the network conditions improve.
    • onRemoteSubscribeFallbackToAudioOnly: Occurs when the remotely subscribed media stream falls back to audio-only due to poor network conditions or switches back to the video after the network conditions improve.
  • Added the onRemoteAudioTransportStats and the onRemoteVideoTransportStats callbacks to enable upstream and downstream statistics of each remote user/host.