7.0 Changelog: Twilio Video Android
The Twilio Programmable Video SDKs use Semantic Versioning. Twilio supports version N-1 for 12 months after the first GA release of version N. We recommend you upgrade to the latest version as soon as possible to avoid any breaking changes.
Support for 6.x will cease on September 17th, 2022. This branch will only receive fixes for critical issues until that date. Check this guide when planning your migration to 7.x.
Support for 5.x will cease on December 4th, 2021. This branch will only receive fixes for critical issues until that date. Check this guide when planning your migration to 6.x.
Versions 4.x and below reached End of Life on September 8th, 2021. See the changelog here.
To ensure your account has the most up-to-date features and bug fixes, we recommend updating your Twilio Video SDK at least once a quarter.
7.6.1 (Mar 27, 2023)
- Programmable Video Android SDK 7.6.1 [Maven Central], [docs]
- Programmable Video Android KTX SDK 7.6.1 [Maven Central], [docs]
- Noise Cancellation Plugin Android 7.6.1 [Maven Central], [docs]
New Features
- Updated to now use WebRTC-m105
Known Issues
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
7.5.1 (Oct 18, 2022)
- Programmable Video Android SDK 7.5.1 [Maven Central], [docs]
- Programmable Video Android KTX SDK 7.5.1 [Maven Central], [docs]
- Noise Cancellation Plugin Android 7.5.1 [Maven Central], [docs]
New Features
- Added a custom audio device utilizing the SDK's AudioDevice framework that uses Krisp's audio processing solution called NoiseCancellationAudioDevice . This custom audio device can be applied by calling Video.setAudioDevice(NoiseCancellationAudioDevice(...)) [VIDEO-10449]
Bug Fixes
- Fixed bug where sinks registered with local audio tracks when a custom audio device was being used, failed to deliver frames. [VIDEO-11637]
Known Issues
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
ABI | APK Size Impact |
---|---|
x86 | 5.7MB |
x86_64 | 5.6MB |
armeabi-v7a | 4.3MB |
arm64-v8a | 5.3MB |
universal | 20.2MB |
7.4.0 (Sep 29th, 2022)
- Programmable Video Android SDK 7.3.1 [Maven Central], [docs]
- Programmable Video Android KTX SDK 7.3.1 [Maven Central], [docs]
New Features
- This release introduces Adaptive Simulcast along with new Video Encoding modes for publishers. Adaptive Simulcast reduces publisher resource usage by only sending those encodings for a video track that are needed by subscribers or by the media server (when recording is enabled). This is an opt-in feature and can be enabled by setting the new Connect Option videoEncodingMode to AUTO, which allows the SDK to select video codecs, use adaptive simulcast, and manage encodings automatically. When videoEncodingMode Connect Option is set to AUTO, the preferVideoCodecs and/or EncodingParameters.maxVideoBitrate Connect Options cannot be set.
API Changes
- Added a new videoEncodingMode field to ConnectOptions.
- The videoEncodingMode API is mutually exclusive with existing codec management APIs EncodingParameters.maxVideoBitrate and preferVideoCodecs.
Known Issues
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
Size Report
ABI | APK Size Impact |
---|---|
x86 | 5.7MB |
x86_64 | 5.6MB |
armeabi-v7a | 4.3MB |
arm64-v8a | 5.3MB |
universal | 20.2MB |
7.3.1 (August 25th, 2022)
- Programmable Video Android SDK 7.3.1 [Maven Central], [docs]
- Programmable Video Android KTX SDK 7.3.1 [Maven Central], [docs]
New Features
- Added a configuration property to support MediaTek hardware encoding. This feature is in pilot. Contact support for more information. [VIDEO-10792]
Known Issues
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
7.3.0 (August 24th, 2022)
- Programmable Video Android SDK 7.3.0 [Maven Central], [docs]
- Programmable Video Android KTX SDK 7.3.0 [Maven Central], [docs]
Bug Fixes
- Fixed maxAudioBitrate and maxVideoBitrate behavioral issues. [VIDEO-9081]
- Fixed a grammatical error in the docs regarding the removal of video sinks. [VIDEO-10014]
- Max video bandwidth limits are now applied to each simulcast layer when simulcast is enabled, and the expected behavior for max video bitrates with simulcast is better documented. [VIDEO-6762]
- Fixed several bugs that could cause crashes and deadlocks when a Room is disconnected / destroyed. [VIDEO-9313, VIDEO-9425, VIDEO-9597, VIDEO-10596, VIDEO-10552]
- Fixed a race condition where subscribed callbacks for Remote Participant could be raised for tracks that have been ended. [VIDEO-6322]
- Fixed a crash bug when reconnecting to or disconnecting from a Room. [VIDEO-9425]
- Fixed a crash regarding custom audio devices when writing captured audio samples to WebRTC. [VIDEO-11194]
- Fixed a crash when errant callback from Camera2Capturer for its configuration is invoked after shutdown. [VIDEO-11195]
Known Issues
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
7.1.2 (July 6th, 2022)
- Programmable Video Android SDK 7.1.2 [Maven Central], [docs]
- Programmable Video Android KTX SDK 7.1.2 [Maven Central], [docs]
New Features
- Added MD5 hash of video-release.aar & ktx-release.aar to be included in the release notes of every future release. [VIDEO-4637]
Bug Fixes
- Fixed a crash when connected to a room and a track with an unsupported codec is added by a Remote Participant.[VIDEO-9698]
Known Issues
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
Size Report
ABI | APK Size Impact |
---|---|
x86 | 5.9MB |
x86_64 | 5.9MB |
armeabi-v7a | 4.4MB |
arm64-v8a | 5.5MB |
universal | 20.9MB |
7.1.1 (May 11th, 2022)
Bug Fixes
- Fixed a crash caused by repeatedly switching the camera on/off while toggling the camera flash. [VIDEO-9294]
Size Report
ABI | APK Size Impact |
---|---|
x86 | 5.9MB |
x86_64 | 5.9MB |
armeabi-v7a | 4.4MB |
arm64-v8a | 5.5MB |
universal | 20.9MB |
7.1.0 (March 16th, 2022)
- Programmable Video Android SDK 7.1.0 [Maven Central], [docs]
- Programmable Video Android KTX SDK 7.1.0 [Maven Central], [docs]
New Features
- Added ability to configure enabling/disabling support for video codec hardware encoders via global configuration and a properties file.
The hardware encoder settings are loaded from a properties file located in the assets directory of the application. If the file does not exist, default settings are used. By default the filename is
twilio-video-config.properties
, the filename can be overridden by setting the system propertycom.twilio.video.Video.configPath
.
The properties file currently supports the following settings:
Key | Value | Description |
---|---|---|
tvi.webrtc.DefaultVideoEncoderFactory.enableHWEncoding | true/false | Globally enables or disables support for hardware encoding for all supported video mime types. If disabled, hardware encoding will be disabled regardless if its subsequently enabled for a particular mimetype. |
tvi.webrtc.DefaultVideoEncoderFactory.enableHWVP8Encoding | true/false | Enables or disables support for hardware encoding of VP8 content. |
tvi.webrtc.DefaultVideoEncoderFactory.enableHWVP9Encoding | true/false | Enables or disables support for hardware encoding of VP9 content. |
tvi.webrtc.DefaultVideoEncoderFactory.enableHWH264Encoding | true/false | Enables or disables support for hardware encoding of H.264 content. |
tvi.webrtc.HardwareVideoEncoderFactory.enableH264HighProfile | true/false | Enables "High Profile" H.264 support for hardware encoding H.264 content. Has no effect for software encoding. |
tvi.webrtc.HardwareVideoEncoderFactory.enableIntelVP8Encoder | true/false | Enables support for Intel's VP8 hardware encoder. |
tvi.webrtc.HardwareVideoEncoderFactory.enableH264HuaweiSupport | true/false | Enables support for Huawei's H.264 encoder. |
Bug Fixes
- Fixed a bug that would cause a crash if a hardware encoder throws an exception when constructed. [VIDEO-8948]
- Fixed a bug that could cause a crash when tracks are repeatedly publish/unpublished. [VIDEO-8649]
Size Report
ABI | APK Size Impact |
---|---|
x86 | 5.9MB |
x86_64 | 5.9MB |
armeabi-v7a | 4.4MB |
arm64-v8a | 5.5MB |
universal | 20.9MB |
7.0.6 (February 11th, 2022)
- Programmable Video Android SDK 7.0.4 [Maven Central], [docs]
- Programmable Video Android KTX SDK 7.0.4 [Maven Central], [docs]
New Features
- Now builds with Java 11 instead of java 8
- Updated build dependencies
- Now uses gradle 7 and android tools 7.0.3
- Added VP8 simulcast support using the software encoder. When simulcast is enabled, the software VP8 encoder will be used, even on devices with VP8 hardware encoding support.
Bug Fixes
- Fixed a bug which could occur when connected to a Peer-to-Peer or Go Room and publishing a second video track before another Participant joins, causing the connection to be terminated or the second video track not to be fully established.
- Fixed a bug which could cause the Room connection to be terminated by the server.
- Fixed a bug which could cause the media connection not to be re-established after network changes.
Known Issues
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
Size Report
ABI | APK Size Impact |
---|---|
x86 | 5.8MB |
x86_64 | 5.8MB |
armeabi-v7a | 4.4MB |
arm64-v8a | 5.5MB |
universal | 20.8MB |
7.0.3 (December 6th, 2021)
- Programmable Video Android SDK 7.0.3 [Maven Central], [docs]
- Programmable Video Android KTX SDK 7.0.3 [Maven Central], [docs]
API Changes
- Added error code definition
PARTICIPANT_SESSION_LENGTH_EXCEEDED_EXCEPTION
.
Bug Fixes
- Fixed a bug where if an exception occurs when connecting to a Room, the Room instance could leak and setting a custom audio device could fail.
- Fixed a bug where media could incorrectly be detected as not flowing after the network connectivity changes.
Known Issues
- As of 6.0.0 of the SDK, hardware video encoding doesn't publish all of the three simulcast layers when VP8 simulcast is enabled on Android. This affects Video Content Preferences from working properly for subscribing video participants since the feature requires all three simulcast layers to switch between. Our team is working on a fix for this, but the feature does work when VP8 simulcast is used to publish video from participants using the Javascript or iOS SDKs.
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
Size Report
ABI | APK Size Impact |
---|---|
x86 | 5.8MB |
x86_64 | 5.8MB |
armeabi-v7a | 4.3MB |
arm64-v8a | 5.5MB |
universal | 20.7MB |
7.0.2 (November 3rd, 2021)
- Programmable Video Android SDK 7.0.2 [Maven Central], [docs]
- Programmable Video Android SDK KTX 7.0.2 [Maven Central], [docs]
New Features
- The SDK now supports audio only rooms and added two error codes, ROOM_AUDIO_ONLY_FLAG_NOT_SUPPORTED_EXCEPTION (53124) & TRACK_TRACK_KIND_NOT_SUPPORTED_EXCEPTION (53125).
Enhancements
- Improved reconnection time after network connectivity disruptions.
Known Issues
- As of 6.0.0 of the SDK, hardware video encoding doesn't publish all of the three simulcast layers when VP8 simulcast is enabled on Android. This affects Video Content Preferences from working properly for subscribing video participants since the feature requires all three simulcast layers to switch between. Our team is working on a fix for this, but the feature does work when VP8 simulcast is used to publish video from participants using the Javascript or iOS SDKs.
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
Size Report
ABI | APK Size Impact |
---|---|
x86 | 5.8MB |
x86_64 | 5.8MB |
armeabi-v7a | 4.3MB |
arm64-v8a | 5.5MB |
universal | 20.7MB |
7.0.1 (October 15th, 2021)
- Programmable Video Android SDK 7.0.1 [Maven Central], [docs]
- Programmable Video Android SDK KTX 7.0.1 [Maven Central], [docs]
Bug Fixes
- Fixed an interoperability bug between JavaScript, iOS and Android SDKs which could cause subscription events not to fire in a Peer-to-Peer or Go Room. [VIDEO-7334] #211
Known Issues
- As of 6.0.0 of the SDK, hardware video encoding doesn't publish all of the three simulcast layers when VP8 simulcast is enabled on Android. This affects Video Content Preferences from working properly for subscribing video participants since the feature requires all three simulcast layers to switch between. Our team is working on a fix for this, but the feature does work when VP8 simulcast is used to publish video from participants using the Javascript or iOS SDKs.
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
Size Report
ABI | APK Size Impact |
---|---|
x86 | 5.8MB |
x86_64 | 5.7MB |
armeabi-v7a | 4.3MB |
arm64-v8a | 5.4MB |
universal | 20.6MB |
7.0.0 (September 16th, 2021)
- Programmable Video Android SDK 7.0.0 [Maven Central], [docs]
- Programmable Video Android SDK KTX 7.0.0 [Maven Central], [docs]
New Features
- The SDK has been upgraded to use Chromium WebRTC 88.
- The SDK uses Unified Plan SDP semantics instead of Plan-B. This brings several important benefits:
- Improved interoperability with Firefox, Safari and Chrome in Peer-to-Peer and Go Rooms.
- Track level operations like publishing and unpublishing are more reliable.
- Improved performance of
Room.getStats()
by adopting the W3C standardized RTC stats API. - Unused codecs for a track are removed from the local SDP offer in order to reduce the SDP size, once codecs for the track have been negotiated.
API Changes
- The minimum Android SDK version has been increased from 16 to 21. Please visit our migration guide for more details on how to update your application to 7.0!
- The ordering of
RemoteParticipantObserver.onAudioTrackSubscribed()
andRemoteParticipantObserver.onVideoTrackSubscribed()
is not strictly guaranteed. In this release the ordering of these callbacks may be different when compared to previous releases. - The value of
LocalVideoTrackStats.frames_encoded
now reflects the total number of frames encoded for a simulcast track.
Bug Fixes
- Fixed a bug causing the Connect Option
enableIceGatheringOnAnyAddressPorts
not to have any effect.
Known Issues
- As of 6.0.0 of the SDK, hardware video encoding doesn't publish all of the three simulcast layers when VP8 simulcast is enabled on Android. This affects Video Content Preferences from working properly for subscribing video participants since the feature requires all three simulcast layers to switch between. Our team is working on a fix for this, but the feature does work when VP8 simulcast is used to publish video from participants using the Javascript or iOS SDKs.
- Video Content Preferences might prefer larger video than needed when device orientations are mismatched. For example, if a participant in landscape mode publishes video, then the subscribing participant must also be in landscape mode in order for the correctly sized simulcast layers to be selected. The same is true for the portrait orientation.
- When the publisher is publishing video at 720p with VP8 simulcast enabled and the subscriber varies their hints between 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
Size Report
ABI | APK Size Impact |
---|---|
x86 | 5.8MB |
x86_64 | 5.7MB |
armeabi-v7a | 4.3MB |
arm64-v8a | 5.4MB |
universal | 20.6MB |
Need some help?
We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.