This page provides the release notes for the Agora Unity SDK.

Overview

The Agora Unity SDK supports the following scenarios:

  • Voice or video call
  • Live interactive audio or video streaming

For the key features included in each scenario, see Agora Voice Call Overview, Agora Video Call Overview, Agora Live Interactive Audio Streaming Overview and Agora Live Interactive Video Streaming Overview.

v3.0.1

v3.0.1 was released on September 16, 2020.

In this release, Agora improves the user experience under poor network conditions for both the COMMUNICATION and LIVE_BROADCASTING profiles through the following measures:

  • Adopting a new architecture for the COMMUNICATION profile.
  • Upgrading the last-mile network strategy for both the COMMUNICATION and LIVE_BROADCASTING profiles, which enhances the SDK's anti-packet-loss capacity by maximizing the net bitrate when the uplink and downlink bandwidth are insufficient.

To deal with any incompatibility issues caused by the architecture change, Agora uses the fallback mechanism to ensure that users of different versions of the SDKs can communicate with each other: if a user joins the channel from a client using a previous version, all clients using v3.0.1 automatically fall back to the older version. This has the effect that none of the users in the channel can enjoy the improved experience. Therefore we strongly recommend upgrading all your clients to v3.0.1.

If you also use the On-premise Recording SDK, ensure that you upgrade your On-premise Recording SDK to v3.0.0 so that all users can enjoy the improvements brought by the new architecture and network strategy.

Compatibility changes

1. Dynamic library replaces the static library (for macOS and iOS)

This release adds support for a dynamic library and removes the static library. This release renames the library from AgoraRtcEngineKit.framework to AgoraRtcKit.framework. If you upgrade your SDK to v3.0.1, you must re-import the AgoraRtcKit class in Xcode, and set the Embed attribute as Embed & Sign.

If you integrated the encryption library AgoraRtcCryptoLoader.framework, you must re-import the AgoraRtcCryptoLoader class in Xcode, and set the Embed attribute as Embed & Sign.

2. Enumerator names change

This release changes CLIENT_ROLE to CLIENT_ROLE_TYPE, and changes the name of the following members:

  • BROADCASTER to CLIENT_ROLE_BROADCASTER
  • AUDIENCE to CLIENT_ROLE_AUDIENCE

3. Dual-stream mode not enabled in the COMMUNICATION profile

As of v3.0.1, the native SDK does not enable the dual-stream mode by default in the COMMUNICATION profile. Call the EnableDualStreamMode (true) method after joining the channel to enable it. In video scenarios with multiple users, we recommend enabling the dual-stream mode.

New features

1. Specify the area of connection

This release adds GetEngine2 for specifying the area of connection when creating an IRtcEngine instance. This advanced feature applies to scenarios that have regional restrictions. You can choose from areas including Mainland China, North America, Europe, Asia (excluding Mainland China), and global (default).

2. Multiple channel management

To enable a user to join an unlimited number of channels at a time, this release adds the AgoraChannel class. By creating multiple AgoraChannel objects, a user can join the corresponding channels at the same time. Besides, this release adds SetMultiChannelWant for enabling the multi-channel mode, and SetForMultiChannelUser for setting the local or remote video of users in multiple channels.

After joining multiple channels, users can receive the audio and video streams of all the channels, but publish one stream to only one channel at a time. This feature applies to scenarios where users need to receive streams from multiple channels, or frequently switch between channels to publish streams. See Join multiple channels for details.

3. Audio mixing pitch

To set the pitch of the local music file during audio mixing, this release adds SetAudioMixingPitch. You can set the pitch parameter to increase or decrease the pitch of the music file. This method sets the pitch of the local music file only. It does not affect the pitch of a human voice.

4. Adjusting the playback volume of the specified remote user

Adds AdjustUserPlaybackSignalVolume for adjusting the playback volume of a specified remote user. You can call this method as many times as necessary in a call or the live interactive streaming to adjust the playback volume of different remote users, or to repeatedly adjust the playback volume of the same remote user.

5. Voice beautifier and audio effects

To improve the audio quality, this release adds the following enumerate elements in SetLocalVoiceChanger and SetLocalVoiceReverbPreset:

  • VOICE_CHANGER_PRESET adds several enumerations that have the prefixes VOICE_BEAUTY and GENERAL_BEAUTY_VOICE. The VOICE_BEAUTYenumerations implement voice timbre transformation, and the GENERAL_BEAUTY_VOICE enumerations beautify chat voice.
  • AUDIO_REVERB_PRESET adds the enumeration AUDIO_VIRTUAL_STEREO and several enumerations that have the prefix AUDIO_REVERB_FX. The AUDIO_VIRTUAL_STEREO enumeration implements reverberation in the virtual stereo, and the AUDIO_REVERB_FX enumerations implement voice changer effects, new style transformation effects, and new room acoustics effects.

6. Face detection

This release enables local face detection on Android and iOS. After you call EnableFaceDetection to enable this function, the SDK triggers the OnFacePositionChangedHandler callback in real time to report the detection results, including the distance between the human face and the device screen. This function can remind users to keep a certain distance from the screen.

Improvements

1. Audio profiles

To meet the need for higher audio quality, this release adjusts the corresponding audio profile of AUDIO_PROFILE_DEFAULT(0) in the LIVE_BROADCASTING profiles.

SDK AUDIO_PROFILE_DEFAULT(0)
v3.0.1 A sample rate of 48 KHz, music encoding, mono, and a bitrate of up to 52 Kbps.
Earlier than v3.0.1 A sample rate of 32 KHz, music encoding, mono, and a bitrate of up to 44 Kbps.

2. Quality statistics

Adds the following members in the RtcStats class for providing more in-call statistics, making it easier to monitor the call quality and memory usage in real time:

  • gatewayRtt
  • memoryAppUsageRatio
  • memoryTotalUsageRatio
  • memoryAppUsageInKbytes

On iOS, to prevent the prompt to find local network devices from popping up when an end user launches the app on an iOS 14.0 device, the gatewayRtt parameter is disabled by default. See the FAQ for details. If you do not mind the prompt, and want to enable the gatewayRtt parameter, please contact Agora technical support via support@agora.io.

3. Screen sharing

This release enables window sharing of UWP (Universal Windows Platform) applications when you call StartScreenCaptureByWindowId.

4. Image enhancement

This release adds SetBeautyEffectOptions on Windows for enabling image enhancement in scenarios such as video social networking, an online class, or live interactive streaming. You can call this method to set parameters including contrast, brightness, smoothness, red saturation, and so on.

5. Others

  • This release adds VIDEO_PIXEL_RGBA in VIDEO_PIXEL_FORMAT. You can capture the RGBA data from an external video source and send the data to the SDK.
  • This release enables interoperability between the RTC Unity SDK and the RTC Web SDK by default, and deprecates the EnableWebSdkInteroperability method.

Issues fixed

  • Audio issues relating to audio mixing, audio encoding, and echoing.
  • Video issues relating to no response on OnVideoSizeChangedHandler callback, no buffer data in VideoFrame, an unexpected watermark, incorrect aspect ratio, poor video sharpness, or a black outline appearing while screen sharing and toggling to full-screen.
  • Issues relating to app crashes, log file, and unstable service during CDN live streaming.
  • Issues on SetRemoteSubscribeFallbackOption, which should work in the LIVE_BROADCASTING profile only, also works in the COMMUNICATION profile.
  • In some one-to-one calls, the downlink media stream falls back to audio-only under poor network conditions.
  • Issues relating to SendStreamMessage and the TranscodingUser of SetLiveTranscoding, which do not support an array format.
  • Inaccurate report of the OnClientRoleChangedHandler callback, authentication issues with an App ID and token, and a garbled log directory.

API changes

Added

Renamed

Enum type CLIENT_ROLE changed to CLIENT_ROLE_TYPE. Enum name BROADCASTER and AUDIENCE changed to CLIENT_ROLE_BROADCASTER and CLIENT_ROLE_AUDIENCE.

Deprecated

v2.9.2

v2.9.2 is released on Feb 17, 2020.

  • This release fixed some abnormal behaviors on Android devices.
  • This release fixed the stuck behavior of using the Editor debug mode on Windows platform.

v2.9.1

Agora Unity SDK is widely used in games, education, AR, VR and other scenarios.

v2.9.1 was released on December 23, 2019.

Functions and features

1. Multi-platform support

Supports iOS, Android, macOS and Windows (x86/x86_64) platforms.

2. Interoperability with the Agora Web SDK

Provides the EnableWebSdkInteroperability method for enabling interoperability with the Agora Web SDK in LIVE_BROADCASTING profile.

3. Video rendering method

Supports multiple video rendering methods. You can choose any method in Auto Graphics API.

4. Multithreaded rendering

Supports multithreaded rendering. You can click the Multithreaded Rendering option for rendering in multiple threads.

5. Raw data

Supports raw audio data and raw video data in RGBA format. You can capture and process the raw data according to your needs. See details in Raw Video Data.

6. External data source

Provides APIs for accessing to the external data source. You can configure the external audio and video source, and push the data to the Agora Unity SDK. See details in Custom Video Source and Renderer

7. Encryption

Supports encryption of audio and video streaming. The following table shows the information of the encryption libraries for the Android and iOS platforms. If you do not intend to use this function, you can remove the encryption libraries to decrease the SDK size.

Platform Encryption libraries
Android libagora-crypto.so
iOS
  • AgoraRtcCryptoLoader.framework
  • libcrypto.a

8. Cloud proxy

Supports the cloud proxy service. See Use Cloud Proxy for details.

Related documentation

See the following documentation to quickly integrate the SDK and implement real-time voice and video communication in your project.

Agora also provides an open-source Unity Sample on GitHub.