Xamarin.Agora.Full.iOS 2.3.0

Xamarin bindings to the native iOS Agora Video SDK.

Xamarin bindings to the native iOS Agora.io Full SDK.

Install-Package Xamarin.Agora.Full.iOS -Version 2.3.0
dotnet add package Xamarin.Agora.Full.iOS --version 2.3.0
paket add Xamarin.Agora.Full.iOS --version 2.3.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

v2.3.0 (Released Aug 31st, 2018)
Before Reading
To support scenarios with video rotation and enable better quality for custom video source, this release deprecates the setVideoProfile interface and uses setVideoEncoderConfiguration instead to set the video encoding configurations. You can still use setVideoProfile but Agora recommends using setVideoEncoderConfiguration 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 source, the SDK adjusts the width and height of the output video frames on basis of the inputting video frames, avoiding unnecessary cropping and thereby renderering more image frames at the Player.
An Accelerate.framework library was added to the SDK in v2.3.0, which is capable of large-scale mathemetical computations and image calculations, optimzed for high performance.
The security keys are improved and updated in v2.1.0. If you are using an Agora SDK version earlier than 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 will deteriorate under unreliable network conditions. To improve the efficiency of a live broadcast, the setLocalPublishFallbackOption and setRemoteSubscribFallbackOption interfaces are added. These interfaces allow the SDK to automatically disable the video stream when the network condition cannot support both audio and video, and enable the video when the network conditions improve. didLocalPublishFallbackToAudioOnly or didRemoteSubscribeFallbackToAudioOnly is triggered when the stream falls back to audio-only or when the stream switches back to the video.

2. Notifies the user that the Token will expire 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 renewToken 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, these callbacks are triggered every two seconds after the 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 custom video source, this release deprecates the setVideoProfile interface and uses setVideoEncoderConfiguration instead to set the video encoding configurations. You can still use setVideoProfile but Agora recommends using setVideoEncoderConfiguration 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 source, the SDK adjusts the width and height of the output video frames on basis of the inputting video frames, avoiding unnecessary cropping and thereby renderering 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 descriptions in 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
Improved the quality for one-on-one voice/video scenarios with optimized latency and smoothness, especially for areas like Southeast Asia, South America, Africa and Middle East.
Improved the audio encoder efficiency in a live broadcast to reduce user traffic while ensuring the call quality.
Improved the audio quality during a call or a live broadcast using the deep-learning algorithm.
Issues Fixed
Increased 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 line at the bottom of the video when a user switches from low stream to high stream in the communication mode.
Crashes after publishing streams from some iOS devices.
Occasional crashes on some iOS devices.
Crash when a user frequently mutes and resumes all sound effects on some iOS devices.
Excessive increase in memory usage associated with a host when he/she frequently joins and leaves a channel of multiple delegated hosts.
Occasional issue that the remote user cannot hear the host when the host swithces to AUDIENCE and then back to BROADCASTER.
Occasional issue that settings to the background image of live transcoding do not take effect.
Occasional issue that some devices have video height and width swapped in communication mode.
Occasional failure to respond to the destroy method after a user enables video and joins a channel.
Occasional issue on some iOS devices that a user fails to hear any sound after returnning to the channel from a system phone call.
The audience cannot adjust the channel volume on some special occasions.
Occasional crashes when a user frequently joins and leaves the channel.
Occasional crashes when frequently setting the video encoder profile on some iOS devices.
Occasional issue on iOS devices that videos from a remote user in a communication channel cannot be seen.
Occasional failure to capture video of the delegated host when the hosts and the audience frequently change roles.
Occasional issue on some iOS devices that a Web user can subscribe to the low video stream 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 his/her video encoder profiles.
Occasional crashes on some devices when preloading the sound effects.
Video resolution inconsistency between the encoder end and the decoder end in the live broadcast mode.
Occasional video freeze in the communication or live broadcast mode.
Occasional crashes when calling the muteRemoteVideoStream method after joinning the channel.
Occasional issue that some iOS devices can 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.
An iOS issue that the bitrates cannot reach the target values when manually setting the video profile.
Occasional failure to interoperate 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.
An iOS issue that when a host has injected 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 tswitching from multiple hosts to one single host.
Occasional interoperability failures between the SIP devices and the SDK.
Occasional echoes when using a specific audio card.
Occasional video delay 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 user experience, Agora has cleaned up and made the following changes to its APIs:

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

addUser
removeUser
The following APIs are deleted and no longer supported in v2.3.0. Agora provides the Recording SDK for better recording services. For more information on the Recoding SDK, see Release Notes for Agora Recording SDK.

startRecordingService
stopRecordingService
refreshRecordingServiceStatus
The following deprecated APIs are deleted and no longer supported from v2.3.0:

switchView
setSpeakerphoneVolume
Backwards Compatibility Breaking Changes
None.

Known Issues
None.

origin: https://docs.agora.io/en/2.4/product/Video/Product Overview/release_ios_video

Dependencies

This package has no dependencies.

Version History

Version Downloads Last updated
2.3.0 76 9/4/2018
2.2.3 152 7/10/2018
2.2.2 99 6/22/2018
2.2.2-beta3 60 6/25/2018
2.2.1 74 6/1/2018
2.2.0 82 5/21/2018
2.2.0-beta1 46 5/21/2018
2.1.3 133 4/23/2018
2.1.2.2 71 4/12/2018
2.1.2 92 4/10/2018
2.1.1 228 3/19/2018
2.1.0.2 245 3/9/2018
2.1.0 78 3/8/2018
2.0.3 205 12/18/2017
2.0.2.2 72 12/18/2017
2.0.2 110 12/15/2017
1.14.0 203 10/24/2017
1.13.1 216 9/29/2017
1.13.0 146 9/13/2017
1.13.0-beta1 79 9/12/2017
1.12.0 184 8/18/2017
1.12.0-beta1 81 8/18/2017
1.11.1.1 244 7/12/2017
1.11.1.1-beta1 99 7/12/2017
1.11.0.1 185 6/16/2017
1.11.0.1-beta1 107 6/16/2017
1.10.0.1 190 5/25/2017
1.10.0.1-beta1 98 5/25/2017
1.10.0-beta2 98 5/25/2017
1.9.1.2 114 5/22/2017
1.9.1.1-beta1 233 4/13/2017
1.9.0.1-beta2 166 3/7/2017
1.9.0.1-beta1 130 3/7/2017
1.8.3.1 160 3/14/2017
1.8.3.1-beta1 389 2/13/2017
1.8.0.6-beta3 144 2/3/2017
1.8.0.6-beta2 112 1/30/2017
1.8.0.5 182 1/14/2017
1.8.0.5-beta1 105 1/27/2017
1.8.0.4 142 1/10/2017
1.8.0.3 138 1/10/2017
1.8.0.2 148 1/9/2017
1.8.0.1 127 1/5/2017