This page provides the release notes for the Agora Video SDK for iOS.

Overview

The Video SDK supports the following scenarios:

  • Voice/Video Communication
  • Live Voice/Video Broadcast

For the key features included in each scenario, see Voice Overview, Video Overview, Audio Broadcast Overview and Video Broadcast Overview.

v2.4.0

v2.4.0 is released on April 1, 2019.

Before Getting Started

  • Agora Video SDK for iOS adds a library dependency on CoreML.framework in v2.4.0. Ensure that you add this library when integrating the SDK. For details, see Integrate the SDK.
  • If you integrate the SDK by using CocoaPods,ensure that you run pod update in your Terminal before pod install. If you prefer to specify the SDK version to obtain the latest release, ensure that you specify it as 'AgoraRtcEngine_iOS', '2.4.0.1' in the Podfile.

New Features

1. Image enhancement

In scenarios such as the video chat, interactive broadcast, and online education, basic beautification is a popular feature. v2.4.0 adds the setBeautyEffectOptions method, allowing you to adjust the contrast, brightness, smoothness and red saturation of an image. For more information, see Image Enhancement.

2. Voice changer and voice reverberation

Adding voice changer and reverberation effects in an audio chat room brings much more fun. v2.4.0 adds the setLocalVoiceChanger and setLocalVoiceReverbPreset methods, allowing you to change your voice or reverberation by choosing from the preset options. See Adjust the pitch and tone.

3. Tracking the sound position of a remote user

v2.4.0 adds the enableSoundPositionIndication and setRemoteVoicePosition methods. Call the enableSoundPositionIndication method before joining a channel to enable stereo panning for the remote users, and then you can call the setRemoteVoicePosition method to track the position of a remote user.

4. Pre-call last-mile network probe test

Conducting a last-mile probe test before joining the channel helps the local user to evaluate or predict the uplink network conditions. v2.4.0 adds the startLastmileProbeTest, stopLastmileProbeTest, and lastmileProbeResult APIs, allowing you to get the uplink and downlink last-mile network statistics, including the bandwidth, packet loss, jitter, and round-trip time (RTT).

5.Setting the priority of a remote user's stream

v2.4.0 adds the setRemoteUserPriority method for setting the priority of a remote user's media stream. You can use this method with the setRemoteSubscribeFallbackOption method. If the fallback function is enabled for a remote stream, the SDK ensures the high-priority user gets the best possible stream quality.

6. State of an audio mixing file

v2.4.0 adds the localAudioMixingStateDidChanged callback to report any change of the audio-mixing file playback state (playback succeeds or fails) and the corresponding reason. This release also adds the warning code 701, which is triggered if the local audio-mixing file does not exist, or if the SDK does not support the file format or cannot access the music file URL when playing the audio-mixing file.

7. Setting the log file size

The SDK has two log files, each with a default size of 512 KB. In case some customers require more than the default size, v2.4.0 adds the setLogFileSize method for setting the log file size (KB).

Improvements

1. Accuracy of call quality statistics

2. Video encoder preferences

v2.4.0 provides the following options for setting video encoder preferences:

3. Core quality improvements

  • Reduces the audio delay.
  • Improves the video quality and stability.
  • Shortens the time to render the first remote video frame.

Issues Fixed

Audio

  • Calling the enableLocalAudio method disconnects all connected Bluetooth devices.
  • The SDK does not support audio mixing URLs with Chinese characters.
  • The SDK does not return YES after the pushExternalAudioFrameSampleBuffer method call succeeds.
  • Volume levels of the high-pitch sound are lowered.
  • Sounds are occasionally played fast.

Video

  • If you skip the renderMode setting, the video stretches due to a mismatch with the display.
  • Video freezes on some lower-end devices.
  • It takes too long to render the first received video frame.

Miscellaneous

  • The user drop-offline time between Android and iOS is not unified.
  • The SEI information does not synchronize with the media stream when publishing transcoded streams to the CDN.

API Changes

To improve your experience, we made the following changes to the APIs:

Added

Deprecated

  • startEchoTest
  • setVideoQualityParameters

Miscellaneous

v2.4.0 changes the type of the frameRate parameter in the AgoraVideoEncoderConfiguration class from enum to int.

v2.3.3

v2.3.3 is released on January 24, 2019.

Issues Fixed

Occasional inaccurate statistics returned in the networkQuality callback.

v2.3.2

v2.3.2 is released on January 16, 2019.

Before Getting Started

Besides the new features and improvements mentioned below, it is worth noting that v2.3.2:

  • Improves the SDK's ability to counter packet loss under unreliable network conditions.
  • Improves the communication smoothness.
  • Reduces video freezes in the Live Broadcast profile.

Before upgrading your SDK, ensure that the version is:

  • Native SDK v1.11 or later.
  • Web SDK v2.1 or later.

New Features

1. Automatic exposure at a point of interest

v2.3.2 adds the following methods and callback to support camera exposure and improve the captured video quality:

2. Video quality in a live broadcast

v2.3.2 adds the minBitrate parameter (minimum encoding bitrate) in the setVideoEncoderConfiguration method. The SDK automatically adjusts the encoding bitrate to adapt to the network conditions. Using a value greater than the default value forces the video encoder to output high-quality images but may cause more packet loss and hence sacrifice the smoothness of the video transmission. Agora does not recommend changing this value unless you have special requirements for image quality.

3. Independent audio mixing volume adjustments for local playback and remote publishing

v2.3.2 adds the adjustAudioMixingPlayoutVolume and adjustAudioMixingPublishVolume methods to complement the adjustAudioMixingVolume method, allowing you to independently adjust the audio mixing volume for local playback and remote publishing. See Adjust the Volume for the scenarios and corresponding APIs.

Improvements

1. Improves the accuracy of the call quality statistics

v2.3.2 deprecates the audioQualityOfUid callback and replaces it with the remoteAudioStats callback to improve the accuracy of the call quality statistics. The remoteAudioStats callback returns parameters such as the audio frame loss rate, end-to-end audio delay, and jitter buffer delay at the receiver, which are more closely linked to the real user experience. In addition, v2.3.2 optimizes the algorithm of the networkQuality callback for the uplink and downlink network qualities.

  • remoteAudioStats: Reports the statistics of the remote audio stream from each user/host. This callback replaces the onAudioQuality callback.
  • networkQuality: Reports the last mile network quality of each user in the channel.

Agora plans to improve the following callback in subsequent versions:

  • lastmileQuality: Reports the last mile network quality of the local user before the user joins a channel.

For the list of API methods related to the call quality statistics and on how and when to use them, see Report In-call Statistics.

2. New network connection policy

v2.3.2 adds the following API method and callback to get the current network connection state and reason for a connection state change:

v2.3.2 deprecates the rtcEngineConnectionDidInterrupted and rtcEngineConnectionDidBanned callbacks.

In the new API method, the network connection states are "disconnected", "connecting", "connected", "reconnecting", and "failed". The SDK triggers the connectionChangedToState callback when the network connection state changes. The SDK also triggers the rtcEngineConnectionDidInterrupted and rtcEngineConnectionDidBanned callbacks under certain circumstances, but Agora does not recommend using them.

3. Improves the call rating system

v2.3.2 changes the rating parameter in the rate method to "1 to 5" to encourage more feedback from end-users on the quality of a call or live broadcast. Application developers can use this feedback for future product improvement. Agora strongly recommends integrating this method in your application.

4. Improves the audio quality in music scenarios

v2.3.2 adds high-quality audio in scenarios such as music education. In the setAudioProfile method, you can set AgoraAudioProfile as MusicHighQuality(4) and AgoraAudioScenario as GameStreaming(3) to minimize echo and noise while maintaining the quality of the music.

5. Other improvements

  • Minimizes packet loss under unreliable network conditions in the Live Broadcast profile.
  • Accelerates the video quality recovery under network congestion.
  • Improves the stability in pushing streams.
  • Optimizes the API calling threads.
  • Improves the performance of the SDK on mid-end and low-end iOS devices.
  • Checks the headset and Bluetooth device connection.
  • Reduces the audio delay.

Issues Fixed

The following issues are fixed in v2.3.2.

Audio

  • A user joins a live broadcast with a Bluetooth headset. The audio is not played through the Bluetooth headset when the user leaves the channel and opens another application.
  • Crashes when calling the startAudioMixing method to play music files.
  • A previously disabled microphone becomes enabled when the device connects to a headset.
  • Cannot adjust the volume of the speaker when users change roles, join and leave channels, or a system phone or Siri interrupts.
  • Users do not hear any voice for a while when an application switches back from the background.

Video

  • Occasional issues when using an external video source.
  • The cursor on the remote side is not in the same position as the local side when sharing the desktop.

API Changes

To improve your experience, we made the following changes to the APIs:

Added

Deprecated

v2.3.1

v2.3.1 is released on September 28, 2018.

New Features

Disables/Re-enables the Local Audio Function

When a user joins a channel, the audio function is enabled by default.
To receive audio streams without sending any audio streams after joining a channel, this version adds the enableLocalAudio method to disable or re-enable the local audio function.
Once the local audio function is disabled or re-enabled, the SDK returns the didMicrophoneEnabled callback, and the local audio capturing stops.
This method does not affect receiving or playing the remote audio streams.

The difference between this method and muteLocalAudioStream is that enableLocalAudio does not capture or send any audio stream, while muteLocalAudioStream captures but does not send audio streams.

Improvements

  • Reduces the CPU consumption in the audio communication profile on some low-end iOS devices.

Issues Fixed

  • Occasional crashes on some iOS devices when using customized video source functions.
  • Occasional crashes on some iOS devices when using customized remote renderer functions.
  • Occasional crashes when switching between the front and rear camera.
  • Communication profile: If one user disables the video and re-enables it during a one-to-one call, it takes a long time for the other user to see the image.
  • Live-broadcast profile: Occasionally, the app freezes and the user cannot leave the channel after switching between the front and rear cameras on some iOS devices.
  • Live-broadcast profile: Occasionally, two taps are needed for a successful focus on some iOS devices.
  • Live-broadcast profile: Delay at the client due to incorrect statistics.
  • The timestamp in the captured raw video frames does not refresh with the frame.

v2.3.0

v2.3.0 is released on August 31, 2018.

Before Reading

  • To support video rotation and enable better quality for the custom video source, this version deprecates the setVideoProfile method and uses the setVideoEncoderConfiguration method instead to set the video encoding configurations. You can still use the setVideoProfile method but we recommend using the setVideoEncoderConfiguration method to set the video profile because:
    • During a live broadcast, users can set the video orientation mode as adaptive, under which the SDK can transfer rotated video frames without cropping them, thus avoiding the “big headshot” or blurry images at the player.
    • In scenarios involving external video sources, the SDK adjusts the width and height of the output video frames based on the inputting video frames, avoiding unnecessary cropping and thereby rendering more image frames at the player.
  • An Accelerate.framework library is added to the SDK in v2.3.0, which is capable of large-scale mathematical computations and image calculations, optimized for high performance.
  • The security keys are 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, see Token Migration Guide.

New Features

1. Fallback options for a live broadcast under unreliable network conditions.

The audio and video quality of a live broadcast deteriorate under unreliable network conditions. To improve the efficiency of a live broadcast, the setLocalPublishFallbackOption and setRemoteSubscribFallbackOption methods are added. These methods allow the SDK to automatically disable the video stream when the network conditions cannot support both audio and video, and enable the video when the network conditions improve. The SDK triggers the didLocalPublishFallbackToAudioOnly or didRemoteSubscribeFallbackToAudioOnly callback when the stream falls back to audio-only or when the stream switches back to the video.

2. Notifies the user that the token expires in 30 seconds.

The SDK returns the tokenPrivilegeWillExpire callback 30 seconds before a token expires to notify the app to renew it. When this callback is received, you need to generate a new token on your server and call the renewToken method to pass the newly-generated token to the SDK.

3. Returns user-specific upstream and downstream statistics, including the bitrate, frame rate, packet loss rate, and time delay

The audioTransportStatsOfUid and videoTransportStatsOfUid callbacks are added to provide user-specific upstream and downstream statistics, including the bitrate, frame rate, and packet loss rate. During a call or a live broadcast, the SDK triggers these callbacks once every two seconds after the local user receives audio/video packets from a remote user. The callbacks include the user ID, audio bitrate at the receiver, packet loss rate, and time delay (ms).

4. Sets the SDK’s control over an audio session

The SDK and app both have control over the audio session. However, the app may restrict the SDK’s control over an audio session and allow another app or a third-party component to control it by using the setAudioSessionOperationRestriction method. You can implement different levels of control by choosing the corresponding restriction. You can call this method before or after joining the channel.

5. Sets the video encoder configurations

To support scenarios with video rotation and enable better quality for the custom video source, this release 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 because:

  • During a live broadcast, users can set the video orientation mode as adaptive, under which the SDK can transfer rotated video frames without cropping them, thus avoiding the “big headshot” or blurry images at the player.
  • In scenarios involving external video sources, the SDK adjusts the width and height of the output video frames based on the inputting video frames, avoiding unnecessary cropping and thereby rendering more image frames at the player.

The AgoraVideoEncoderConfiguration class provides a set of configurable video parameters, including the dimension, frame rate, bitrate, and orientation. For more information on the API, see Set the Video Encoder Configuration.

6. Adds support for background image settings in setLiveTranscoding

The backgroundImage parameter is added to the setLiveTranscoding method allowing you to set the background image in the combined video of a live broadcast.

Improvements

  • Improves the quality for one-on-one voice/video scenarios with optimized latency and smoothness, especially for areas like Southeast Asia, South America, Africa, and the Middle East.
  • Improves the audio encoder efficiency in a live broadcast to reduce user traffic while ensuring the call quality.
  • Improves the audio quality during a call or a live broadcast using the deep-learning algorithm.

Issues Fixed

  • The users on the Web client cannot see the video sent from the Native client due to codec bugs.
  • Excessive increase in the memory usage when multiple delegated hosts broadcast in the channel.
  • Occasional video renderer crashes when the app switches to the background on some iOS devices.
  • Occasional app crashes on some iOS devices.
  • The remote view does not display on some devices.
  • Occasional black screens on some iOS devices.
  • Occasional ghost images.
  • Occasional green lines at the bottom of the video when a user switches from a low stream to a high stream video in the Communication profile.
  • Crashes after publishing streams from some iOS devices.
  • Occasional crashes on some iOS devices.
  • Crashes when a user frequently mutes and resumes all sound effects on some iOS devices.
  • Excessive increase in the memory usage for the host when the host frequently joins and leaves a channel that has multiple delegated hosts.
  • Occasionally, the remote user cannot hear the host when the host switches between AUDIENCE and BROADCASTER.
  • Occasionally, the settings applied to the background image in live transcoding do not take effect.
  • Occasionally on some devices, the video height and width are swapped in the Communication profile.
  • Occasionally, the destroy method does not respond after a user enables the video and joins a channel.
  • Occasionally on some iOS devices, a user fails to hear any sound after returning to the channel from a system phone call.
  • Occasionally, the audience cannot adjust the channel volume.
  • Occasional crashes when a user frequently joins and leaves the channel.
  • Occasional crashes when you frequently set the video encoder profile on some iOS devices.
  • Occasionally on iOS devices, a remote user cannot send video in a communication channel.
  • Occasional failures to capture video of the delegated host when the hosts and the audience frequently change roles.
  • Occasionally on some iOS devices, a web user can subscribe to the low-stream video even when the iOS device does not have the dual-stream mode enabled.
  • Occasional crashes when calling the setCameraFocusPositionInPreview method on some devices.
  • Occasional crashes when one of the two broadcasters mutes or disables the local audio while playing the background music.
  • Occasional crashes on the iOS device when the device interoperates with the Web and when a web user frequently joins and leaves a channel.
  • A user cannot join a communication channel after frequently changing the video encoder profiles.
  • Occasional crashes on some devices when preloading the sound effects.
  • Video resolution inconsistencies between the encoder and decoder in the Live-broadcast profile.
  • Occasional video freezes in the Communication or Live-broadcast profile.
  • Occasional crashes when calling the muteRemoteVideoStream method after joining the channel.
  • Occasionally, some iOS devices still receive the video fallback-specific callbacks even when the video fallback option is not enabled.
  • Incorrect video orientation on some iOS devices when setting the video profile of an external video source during a live broadcast.
  • On iOS, the bitrates cannot reach the target values when manually setting the video profile.
  • Occasional inter-operational failures between an iOS and a macOS device.
  • Occasional crashes on some iOS devices when a user leaves the live broadcast channel while playing music using a third-party application.
  • Occasional crashes on some iOS devices when leaving the channel.
  • On iOS, when a host injects a stream to a broadcast channel, other hosts can still inject a second stream to the channel.
  • Occasional crashes on some iOS devices when the user frequently turns on and off the camera.
  • Occasional video freezes when switching from multiple hosts to a single host.
  • Occasional inter-operational failures between SIP devices and the SDK.
  • Occasional echo issues when using a specific audio card.
  • Occasional video delays on some iOS devices.
  • The video window size jumps from small to big on some iOS devices.
  • Image blurs on some iOS devices when the camera vibrates.
  • Failure to adjust the volume on some iOS devices.

API Changes

To improve your experience, we made the following changes to the APIs:

To avoid adding too many users with the same uid into the CDN publishing channel, the following API methods are added in v2.3.0:

  • addUser
  • removeUser

The following API methods are deleted and no longer supported in v2.3.0. Agora provides the Recording SDK for better recording services.

  • startRecordingService
  • stopRecordingService
  • refreshRecordingServiceStatus

The following deprecated API methods are deleted and no longer supported from v2.3.0:

  • switchView
  • setSpeakerphoneVolume

Backward Compatibility Issues

None.

Known Issues

None.

v2.2.3

v2.2.3 is released on July 5, 2018.

Read This First

The security keys are 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, see Token Migration Guide.

Issues Fixed

  • Occasional online statistics crashes.
  • Occasional crashes during a live broadcast.
  • Excessive increase in the memory usage when multiple delegated hosts broadcast in the channel.
  • Failure to report the uid and volume of the speaker in a channel.
  • Unsteady voice volume of the broadcaster in a live broadcast.
  • Occasional video freeze after a view size change.

v2.2.2

v2.2.2 is released on June 21, 2018.

Issues Fixed

  • Fixed occasional online statistics crashes.
  • Fixed the issue that the media and the signaling services cannot be accessed at the same time on some iOS devices.
  • Fixed the issue of failing to report the uid and volume of the speaker in a channel.
  • Fixed the issue of occasional video freeze after a view size change.

v2.2.1

v2.2.1 is released on May 30, 2018.

Issues Fixed

  • Occasional crashes on some iOS devices.
  • Occasional memory leak on some iOS devices.
  • Occasional app crashes when the app starts audio mixing on some iOS devices.

v2.2.0

v2.2.0 is released on May 4, 2018.

New Features

1. Play the audio effect in the channel

Adds a publish parameter in the playEffect method for the remote user in the channel to hear the audio effect played locally.

If your SDK is upgraded to v2.2 from a previous version, pay attention to the functional changes of this API.

2. Deploy the proxy at the server

We provide a proxy package for enterprise users with corporate firewalls to deploy before accessing our services.

3. Get the remote video state

Adds the remoteVideoStateChangedOfUid method to get the state of the remote video stream.

4. Add watermarks on the broadcasting video

Adds the watermark function for users to add a PNG file to the local or CDN broadcast as a watermark. Adds the addVideoWatermark and clearVideoWatermarks methods to add and delete watermarks in a local live-broadcast. Adds the watermark parameter in the LiveTranscording interface to add watermarks in CDN broadcasts.

Improvements

1. Audio volume indication

Improves the enableAudioVolumeIndication method. This method once enabled, sends the audio volume indication of the speaker in its callback at set intervals, regardless of whether anyone is speaking in the channel.

2. Network quality detection during a session

To meet the customers’ need for real-time network quality detection in the channel, the onNetworkQuality method improves its data accuracy.

3. Last mile network quality detection before joining a channel

To test if the customers’ network condition can support audio or video calls before joining the channel, the onLastmileQuality callback changes its detection base from a fixed bitrate to the bitrate set by the customer in videoProfile to improve data accuracy. When the network condition is unknown, the SDK triggers this callback once every 2 seconds.

4. Audio quality enhancement

Improves the audio quality in scenarios that involve music playback. To achieve high-fidelity music playback, you can set Scenario:AgoraAudioScenarioGameStreaming = 3 in the setAudioProfile method.

5. Bitcode support

Adds support for Bitcode, which enables App optimization and thinning by the App Store. The package size of the Bitcode SDK is 2.5 times that of the normal one.

Issues Fixed

  • Occasional screen display abnormalities when the iOS device sets its video in the landscape mode.
  • Occasional screen display abnormalities when a large number of audience members join as the host in the live-broadcast channel.
  • Fixed occasional echo issues caused by some iOS device.

v2.1.3

v2.1.3 is released on April 19, 2018.

In v2.1.3, Agora updates the bitrate values of the setVideoProfile method in the Live-broadcast profile. The bitrate values in v2.1.3 stay consistent with those in v2.0.

Issues Fixed

  • Block callbacks are occasionally not received if the delegate is not set.
  • NSAssertionHandler appears in external links to the SDK.
  • Occasional recording failures on some phones when a user leaves a channel and turns on the built-in recording device.
  • Live-broadcast profile: The iOS client cannot see the video from the web client in Windows 10 even after iOS calls the enableWebSdkInteroperability method.
  • Occasional resolution changes after UIImagePickerController is used to enable the system camera and switch back to the Live-broadcast profile.
  • Occasional crashes during a communication or live-broadcast session.

Improvements

Improves the performance of screen sharing by shortening the time interval between which users switch from screen sharing to the normal Communication or Live-broadcast profile.

v2.1.2

v2.1.2 is released on April 2, 2018.

If you upgrade the SDK to v2.1.2 from a previous version, the live-broadcast video quality is better than the communication video quality in the same resolutions, resulting in the live broadcasts using more bandwidth.

New Features

Extends the setVideoProfile method to enable users to manually set the resolution, frame rate, and bitrate of the video.

Issues Fixed

  • Occasional crashes on iOS 11.
  • Video freeze in DTX + AAC mode.

v2.1.1

v2.1.1 is released on March 16, 2018.

Agora has identified a critical issue in SDK v2.1. Upgrade to v2.1.1 if you are using Agora SDK v2.1.

v2.1.0

v2.1.0 is released on March 7, 2018.

New Features

1. Voice Optimization

Adds a scenario for the game chat room to reduce the bandwidth and cancel the noise with the setAudioProfile method.

2. Enhance the audio effect input from the built-in microphone

In an interactive broadcast, the host can enhance the local audio effects from the built-in microphone with the setLocalVoiceEqualization and setLocalVoiceReverb methods by implementing the voice equalization and reverberation effects.

3. Online statistics query

Adds Restful APIs to check the status of the users in the channel, the channel list of a specific company, and whether the user is an audience or a host:

4. 17-way video

Adds the support of 17-way video in interactive broadcasts, see:

5. Video source customization

Supports the default video-capturing features provided by the camera and the customized video source.

6. Renderer customization

Supports the default functions provided by the renderers to display the local and remote videos to meet your requirements. We provide a set of interfaces for customized renderers.

7. Injecting an external video stream

Adds the function of injecting an external video stream to an ongoing live broadcast, see Injecting an External Stream to a Live Broadcast.

8. Camera focus change

Adds a cameraFocusDidChanged callback to report to the app when the camera focus area changes.

Improvement

Improvement Description
Video Freeze Rate Reduces the video freeze rate in the audience mode and for specific devices.
Authentication Supports a new authentication mechanism. Each legacy Dynamic Key (Channel Key) corresponds to a single privilege (for example, joining a channel), but each token in the new authentication mechanism includes all privileges (for example, joining a channel, hosting in, and stream-pushing).
Billing Optimization Small video resolutions are charged according to the voice-only mode. For example, 16 × 16.
API Naming Optimization Modifies a set of names for the API attributes and enumeration values.

Issues Fixed

  • Occasional crashes.
  • Occasional blank screens.
  • Occasionally, no voice after turning off the microphone.

v2.0.2

v2.0.2 was released on December 15, 2017, and fixes the FFmpeg symbol conflict.

v2.0 and Earlier

v2.0

v2.0 is released on December 6, 2017.

New Features

  • Adds the setRemoteVideoStreamType and enableDualStreamMode methods in the Communication profile to support dual streams.

  • Updates the following callbacks for audio mixing and sound effects:

    Name Description
    rtcEngineMediaEngineDidAudioMixingFinish Removed. Replaced by rtcEngineLocalAudioMixingDidFinish.
    rtcEngineDidAudioEffectFinish Added. Notifies the app when the local audio effect playback stops.
    rtcEngineRemoteAudioMixingDidStart Added. Notifies the app when the remote user starts audio mixing.
    rtcEngineRemoteAudioMixingDidFinish Added. Notifies the app when the remote user stops audio mixing.
  • Adds the camera management function in the Communication and Live-broadcast profiles by adding the following API methods:

    Name Description
    isCameraZoomSupported Checks whether the device supports camera zoom.
    isCameraTorchSupported Checks whether the device supports camera flash.
    isCameraFocusPositionInReviewSupported Checks whether the device supports camera manual focus.
    isCameraAutoFocusFaceModeSupported Checks whether the device supports auto-face focus.
    setCameraZoomFactor Sets the camera zoom ratio.
    setCameraFocusPositionInPreview Sets the position for manual focus and activates focusing.
    setCameraTorchOn Sets the device to turn on the camera flash.
    setCameraAutoFocusFaceModeEnabled Sets the device to start auto-face focusing.
  • Supports the external audio source in the Communication and Live-broadcast profiles by adding the following API methods:

    Name Description
    enableExternalAudioSourceWithSampleRate Enables the external audio source.
    disableExternalAudioSource Disables the external audio source.
    pushExternalAudioFrameRawData Pushes the external audio frame.
  • Provides a set of RESTful APIs to ban a peer user from the server in the Communication and Live-broadcast profiles. Contact sales-us@agora.io to enable this function, if required.

Issues Fixed

Audio routing and Bluetooth issues.

v1.14

v1.14 is released on October 20, 2017.

New Features

  • Adds the setAudioProfile method to set the audio parameters and scenarios.
  • Adds the setLocalVoicePitch method to set the local voice pitch.
  • Live Broadcast: Adds the setInEarMonitoringVolume method to adjust the volume of the in-ear monitor.

Improvements

  • Optimizes the audio at high bitrates.
  • Live Broadcast: The audience can view the host within one second in a single-stream mode (938 ms on average, and 734 ms under good network conditions).
  • Adds the ability to reduce the bandwidth.
    • Before v1.14: If you muted the audio of a specific user, the network still sent the stream.
    • Starting from v1.14: If you mute the audio of a specific user, the network will not send the stream of the user to reduce the bandwidth.
  • Accurate control over the bitrate:
    • Before v1.14: Inaccurate control over the bitrate often caused huge fluctuations, leading to network congestion and higher rates of packet and frame loss. This affected the accuracy of the bandwidth estimation module, especially when the network was under poor conditions.
    • Starting from v1.14: Accurate control over the bitrate prevents huge fluctuations avoiding network congestion and shortening the transmission latency.

Issues Fixed:

Occasional crashes on iOS devices.

v1.13.1

v1.13.1 is released on September 28, 2017.

  • Fixes the issue of unable to adjust the volume in the speaker mode on iOS 11 with iPhone 7 or later.
  • Optimizes the echo issue under certain circumstances.

v1.13

v1.13 is released on September 4, 2017.

New Features

  • Adds the function to dynamically enable and disable acquiring the sound card in a live broadcast.
  • Adds the function to disable the audio playback.
  • Adds the module map for the SDK, which means that bridging header files are not necessary for Swift projects.
  • Supports the profile configuration for stream-pushing on the client side.
  • Adds the didClientRoleChanged method to report on a user role switch between the host and the audience in a live broadcast.
  • Supports the push-stream failure callback on the server side.

Improvements:

The video profile is controllable by the software codec.

Issues Fixed:

Occasional crashes.

v1.12

v1.12 is released on July 25, 2017.

New Features:

  • Adds the injectStream method to inject an RTMP stream into the current channel in live broadcasts.
  • Adds the aes-128-ecb encryption mode in the setEncryptionMode method.
  • Adds the quality parameter in the startAudioRecording method to set the recording audio quality.
  • Adds a set of APIs to manage the audio effect.

Improvements:

In the Communication profile, we improve the 320 × 180 resolution profile:

  • Keeps the video smooth under poor network and equipment conditions.
  • Enhances the image quality to be better than 180p under good network and equipment conditions.

Issues Fixed:

Occasional crashes.