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.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.