Releases: twilio/twilio-video-ios
Twilio Video SDK iOS 5.2.1
This release consumes twilio-video-cpp-6.6.1.
5.2.1
- Programmable Video iOS SDK 5.2.1 [XCFramework] (checksum: f38bde50fc021e052d67e2aec2a9abf340b9f3008f613e46c5c4641c2324881a
).
Bug Fixes
- Fixed a bug in Adaptive Simulcast where processing of capturer parameter change events was causing a crash and debug check failure. [VIDEO-11409]
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 5.2.1
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.7 MB | 10.9 MB |
arm64 | 4.7 MB | 10.9 MB |
Twilio Video SDK iOS 5.2.0
This release consumes twilio-video-cpp-6.6.0.
- Programmable Video iOS SDK 5.2.0 [XCFramework] (checksum: ab796cb1d6ec8e918d125df0df2caaa00779000cc4840e58ed2612a14df9a9ec
).
Bug Fixes
- 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.
- Fixed several bugs that could cause crashes and deadlocks when a Room is disconnected / destroyed.
- Fixed a use-after-free bug associated with tasks posted to TaskQueue that could lead to undefined behavior.
- Fixed a bug which could cause a crash in IceConnectionActivityMonitor when reconnecting to or disconnecting from a Room.
- Fixed a race condition where subscribed callbacks for Remote Participant could be raised for tracks that have been ended.
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 5.2.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.7 MB | 10.9 MB |
arm64 | 4.7 MB | 10.9 MB |
Twilio Video SDK iOS 5.1.1
This release consumes twilio-video-cpp-6.5.2.
- Programmable Video iOS SDK 5.1.1 [XCFramework] (checksum: 125e944221600cbe98436d1cbc7bd8817c2795e6a9f36e3a63c01f0016f67d78
).
Bug Fixes
- Fixed symbol naming conflicts for side-by-side support of third-party WebRTC builds. #207
Known Issues
- On iOS 15.4+, lower frame rate may be observed when H.264 codecs are used. #238
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 5.1.1
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.8 MB | 11.4 MB |
arm64 | 4.8 MB | 11.4 MB |
Twilio Video SDK iOS 5.1.0
This release consumes twilio-video-cpp-6.5.0-rc12.
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
toauto
, which allows the SDK to select video codecs, use adaptive simulcast and manage encodings automatically. This feature cannot be used alongsideEncodingParameters.maxVideoBitrate
.
API Changes
- Added the
videoEncodingMode
property toConnectOptions
. - The
videoEncodingMode
API is mutually exclusive with existing codec management APIsEncodingParameters.maxVideoBitrate
andpreferredVideoCodecs
.
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 5.1.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.8 MB | 11.4 MB |
arm64 | 4.8 MB | 11.4 MB |
Twilio Video SDK iOS 5.0.0
This release consumes twilio-video-cpp-6.3.4-rc1.
Enhancements
- Microphone permissions will only be requested when needed.
Maintenance
- This release is built with Xcode 13.
- The minimum iOS version supported is 12.2.
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.
- Fixed a bug where audio fails to start in the iOS Simulator on M1 Mac Mini when no microphone is present.
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with
.xcframeworks
as documented here. Once Carthage supports binary.xcframeworks
, Carthage distribution will be re-added. - Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 5.0.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.8 MB | 11.3 MB |
arm64 | 4.8 MB | 11.3 MB |
Twilio Video SDK iOS 4.6.3
This release consumes twilio-video-cpp-6.3.3.
API Changes
- New error code
TVIErrorParticipantSessionLengthExceededError
(53216) is added to support configurable participant session limit.
Bug Fixes
- Fixed a bug where media could incorrectly be detected as not flowing after the network connectivity changes. [VIDEO-7685]
Known Issues
- Audio playback fails when running a simulator on a Mac Mini. #182
- Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with
.xcframeworks
as documented here. Once Carthage supports binary.xcframeworks
, Carthage distribution will be re-added. - Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 4.6.3
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 10.0 MB | 21.4 MB |
arm64 | 4.8 MB | 11.3 MB |
armv7 | 5.2 MB | 10.1 MB |
Twilio Video SDK iOS 4.6.2
This release consumes twilio-video-cpp-6.3.2.
Enhancements
- Added support for
Audio Only
rooms. - Improved reconnection time after network connectivity disruptions.
- This release is built with Xcode 12.5.1
API Changes
- Two new error codes
TVIErrorRoomAudioOnlyFlagNotSupportedError
(53124) andTVIErrorRoomTrackKindNotSupportedError
(53125) are added to supportAudio Only
rooms.
Known Issues
- Audio playback fails when running a simulator on a Mac Mini. #182
- Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with
.xcframeworks
as documented here. Once Carthage supports binary.xcframeworks
, Carthage distribution will be re-added. - Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 4.6.2
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 10.0 MB | 21.4 MB |
arm64 | 4.8 MB | 11.3 MB |
armv7 | 5.2 MB | 10.1 MB |
Twilio Video SDK iOS 4.6.1
This release consumes twilio-video-cpp-6.3.1.
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
- Audio playback fails when running a simulator on a Mac Mini. #182
- Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with
.xcframeworks
as documented here. Once Carthage supports binary.xcframeworks
, Carthage distribution will be re-added. - Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 4.6.1
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 10.0 MB | 21.4 MB |
arm64 | 4.8 MB | 11.3 MB |
armv7 | 5.2 MB | 10.1 MB |
Twilio Video SDK iOS 4.6.0
This release consumes twilio-video-cpp-6.3.0.
This release adds support for Apple Silicon arm64 Macs, updates WebRTC and modernizes our use of several WebRTC APIs. Thank you for your feedback on 4.6.0-beta1 and for your interest in Apple Silicon development.
Features
TwilioVideo.xcframework
now supports the simulator on Apple Silicon arm64 Macs. #144- This results in a size increase for the SDK during development.
- App store download size is not affected.
Enhancements
- This release is based on WebRTC M88.
- 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. [VIDEO-3532]
API Changes
- The ordering of
RemoteParticipantDelegate.onAudioTrackSubscribed()
andRemoteParticipantDelegate.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.framesEncoded
now reflects the total number of frames encoded for a simulcast track.
Bug Fixes
- Fixed performance problems with
Room.getStats()
where block callbacks could sometimes be significantly delayed. [CSDK-3475] - Fixed an interoperability issue with
twilio-video.js
when publishing media in Peer-to-Peer or WebRTC Go Rooms. #931
Known Issues
- Audio playback fails when running a simulator on a Mac Mini. #182
- Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with
.xcframeworks
as documented here. Once Carthage supports binary.xcframeworks
, Carthage distribution will be re-added. - Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 4.6.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 10.0 MB | 21.4 MB |
arm64 | 4.8 MB | 11.3 MB |
armv7 | 5.2 MB | 10.1 MB |
Twilio Video SDK iOS 4.5.0
This release consumes twilio-video-cpp-6.2.0.
This release contains a significant update to the Bandwidth Profile API. It allows for more efficient use of bandwidth and CPU in multi-party applications. In addition it provides developers with more dynamic control over which video tracks are delivered to the client and the preferred video resolution of the tracks. These capabilities are provided via the Client Track Switch Off Control and Video Content Preferences settings.
Existing Bandwidth Profile settings will continue to function as before, however we recommend developers update their Bandwidth Profile settings to make use of these new capabilities at their earliest convenience.
Client Track Switch Off Control
- This feature allows subscribers to control whether the media for a
RemoteVideoTrack
is received or not. Client Track Switch Off Control has two modes of operation:- auto (default): The SDK determines whether tracks should be switched off based on renderer attachment, view visibility, and application lifecycle.
- manual: The application requests that individual tracks be switched off or on using the
RemoteVideoTrack.switchOff()
/switchOn()
methods.
- Note: If your application previously set the
maxTracks
property to limit the number of tracks visible, you should migrate to usingclientTrackSwitchOffControl
to take advantage of this feature.
Video Content Preferences
- This feature allows subscribers to specify preferences about the media that they receive on a
RemoteVideoTrack
. Video content preferences has two modes of operation:- auto (default): The SDK specifies content preferences based on video view size. A
RemoteVideoTrack
rendered by aVideoView
with larger dimensions will get a higher quality video compared to aRemoteVideoTrack
rendered by aVideoView
with smaller dimensions. - manual: The application specifies the content preferences for individual tracks using
RemoteVideoTrack.setContentPreferences()
.
- auto (default): The SDK specifies content preferences based on video view size. A
- Note: If your application previously set the
renderDimensions
property, you should migrate to usingcontentPreferencesMode
to take advantage of this feature.
Both of these features are available in Group Rooms and are enabled by default if your application specifies BandwidthProfileOptions during connect.
let connectOptions = ConnectOptions(token: accessToken) { (builder) in
builder.bandwidthProfileOptions = BandwidthProfileOptions(
videoOptions: VideoBandwidthProfileOptions { builder in
// Use "auto" default. Be sure to remove "maxTracks" and "renderDimensions".
}
)
}
let room = TwilioVideoSDK.connect(options: connectOptions, delegate: self)
If you don't want the SDK to automatically switch on/off RemoteVideoTracks
then specify ClientTrackSwitchOffControl.manual
and VideoContentPreferencesMode.manual
instead.
let connectOptions = ConnectOptions(token: accessToken) { (builder) in
builder.bandwidthProfileOptions = BandwidthProfileOptions(
videoOptions: VideoBandwidthProfileOptions { builder in
builder.clientTrackSwitchOffControl = .manual
builder.contentPreferencesMode = .manual
}
)
}
let room = TwilioVideoSDK.connect(options: connectOptions, delegate: self)
Participants that connect with ClientTrackSwitchOffControl.manual
can request which RemoteVideoTracks
are switched on or off.
func didSubscribeToVideoTrack(videoTrack: RemoteVideoTrack,
publication: RemoteVideoTrackPublication,
participant: RemoteParticipant) {
if participant.identity != "Bob" {
videoTrack.switchOff()
}
}
Subscribers that connect with VideoContentPreferencesMode.manual
can request which resolution they prefer to receive RemoteVideoTracks
in.
func didSubscribeToVideoTrack(videoTrack: RemoteVideoTrack,
publication: RemoteVideoTrackPublication,
participant: RemoteParticipant) {
videoTrack.setContentPreferences(VideoContentPreferences { builder in
builder.renderDimensions = VideoDimensions(width: 320, height: 240)
})
}
API Changes
- The
VideoBandwidthProfileOptions.maxTracks
property is now deprecated and will raise a warning when set. CallingRemoteVideoTrack.switchOn()
orRemoteVideoTrack.switchOff()
after settingmaxTracks
is not allowed and will raise an exception. - The
VideoBandwidthProfileOptions.renderDimensions
property is now deprecated and will raise a warning when set. CallingRemoteVideoTrack.setContentPreferences()
after settingrenderDimensions
is not allowed and will raise an exception.
Bug Fixes
- Fixed a bug where correct recording state of the
Room
was not available right after theRoomDelegate.roomDidConnect(room:)
delegate was invoked. [VIDEO-4616] - Fixed a bug that could cause a crash when changing log level to Trace at runtime. [VIDEO-5893]
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 the hints from 180p, 360p, and 720p, sometimes the subscriber receives larger video than expected.
- The TwilioVideo.xcframework does not currently support the simulator on Apple Silicon arm64 Macs.
- Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with
.xcframeworks
as documented here. Once Carthage supports binary.xcframeworks
, Carthage distribution will be re-added. - Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact for 4.5.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 9.7 MB | 20.9 MB |
arm64 | 4.7 MB | 11.1 MB |
armv7 | 5.0 MB | 9.7 MB |