Releases: twilio/twilio-video-ios
Twilio Video SDK iOS 2.10.0
This release consumes twilio-video-cpp-3.5.0.
This release adds support for publish only Participants (such as a ReplayKit Broadcast Extension) in a Group Room.
Enhancements
- Added a new property
TVIConnectOptions.automaticSubscriptionEnabled
to control Track subscription behavior in Group Rooms:- Selecting
YES
(the default value) causes the Participant to be subscribed to all Tracks that are published in the Room - Selecting
NO
causes the Participant to be subscribed to none of the Tracks that are published in the Room - Selecting
NO
has no impact in a Peer-to-Peer Room
- Selecting
let connectOptions = TVIConnectOptions(token: accessToken) { (builder) in
builder.automaticSubscriptionEnabled = true
builder.roomName = "my-room"
}
self.room = TwilioVideo.connect(with: connectOptions, delegate: self)
Bug Fixes
- Fixed a bug where media reconnection might fail when the loopback interface is mistakenly chosen as a preferred network interface. [CSDK-2762]
- When network quality is enabled and the Client reconnects to a Room, it no longer sends extra network quality messages to Twilio's Servers. [CSDK-2876]
- Network quality reports will continue to be received after heavy packet loss. [CSDK-2871]
Known Issues
- Unpublishing and republishing a
TVILocalAudioTrack
orTVILocalVideoTrack
might not be seen by Participants. #34 - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
Size Impact for 2.10.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.9 MB | 19.3 MB |
arm64 | 4.2 MB | 10.3 MB |
armv7 | 4.5 MB | 8.7 MB |
Twilio Video SDK iOS 2.9.0
This release consumes twilio-video-cpp-3.4.0.
API Changes
- Implemented the Network Quality functionality for Group Rooms:
- To enable the Network Quality functionality, set the
TVIConnectOptions.networkQualityEnabled
property toYES
when connecting to a Group Room. - To determine the current network quality level for your Local Participant, query the
TVILocalParticipant.networkQualityLevel
. Note, this will returnTVINetworkQualityLevelUnknown
if:- The
TVIConnectOptions.networkQualityEnabled
property was set toNO
OR - Using a Peer-to-Peer room OR
- The network quality level has not yet been computed
- The
- Network Quality Level for Remote Participants will be available in a future release.
- Implementing
[TVILocalParticipantDelegate localParticipant:networkQualityLevelDidChange:]
method on yourTVILocalParticipantDelegate
will allow you to receive callbacks when the network quality level changes.
- To enable the Network Quality functionality, set the
@IBAction func connectToRoom(sender: AnyObject) {
let connectOptions = TVIConnectOptions(token: accessToken) { (builder) in
builder.networkQualityEnabled = true
builder.roomName = "my-room"
}
room = TwilioVideo.connect(with: connectOptions, delegate: self)
}
...
// MARK: TVILocalParticipantDelegate
func localParticipant(_ participant: TVILocalParticipant, didChange networkQualityLevel: TVINetworkQualityLevel) {
print("Network Quality Level Changed: \(networkQualityLevel)")
}
Known Issues
- When network quality is enabled and the Client reconnects to a Room, it sends extra network quality messages to Twilio's Servers. [CSDK-2876]
- Unpublishing and republishing a
TVILocalAudioTrack
orTVILocalVideoTrack
might not be seen by Participants. #34 - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
Size Impact for 2.9.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.9 MB | 19.3 MB |
arm64 | 4.2 MB | 10.3 MB |
armv7 | 4.5 MB | 8.7 MB |
Twilio Video SDK iOS 2.8.1
This release consumes twilio-video-cpp-3.3.0.
Bug Fixes
- Fixed a crash that could occur under poor network conditions when preferring H.264 and:
- Connecting to a Group Room that supports H.264
- Connecting to a Peer-to-Peer Room with one or more Firefox Participants
- Connected to a Peer-to-Peer Room when the first Firefox Participant joins
- Disabling a
TVILocalVideoTrack
- [ISDK-2317]
- Fixed a race condition where stopping a
TVICameraSource
, waiting for its completion handler, and then starting a newTVICameraSource
could result in the 2nd source being interrupted.
Known Issues
- Unpublishing and republishing a
TVILocalAudioTrack
orTVILocalVideoTrack
might not be seen by Participants. #34 - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
Size Impact for 2.8.1
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.8 MB | 19.2 MB |
arm64 | 4.2 MB | 10.3 MB |
armv7 | 4.4 MB | 8.6 MB |
Twilio Video SDK iOS 2.8.0
This release consumes twilio-video-cpp-3.3.0.
API Changes
- Implemented the Dominant Speaker functionality for Group Rooms. To enable the dominant speaker functionality, set the
TVIConnectOptions.dominantSpeakerEnabled
property toYES
when connecting to a Group Room. To determine the current dominant speaker, query theTVIRoom.dominantSpeaker
property. When there is no dominant speaker, theTVIConnectOptions.dominantSpeakerEnabled
property was set toNO
or when using a Peer-to-Peer room, theTVIRoom.dominantSpeaker
property will always returnnil
. When there is a dominant speaker, theTVIRoom.dominantSpeaker
property will return the appropriateTVIRemoteParticipant
. Implementing[TVIRoomDelegate room:dominantSpeakerDidChange:]
method on yourTVIRoomDelegate
will allow you to receive callbacks when the dominant speaker in a Group Room changes. ThedominantSpeakerDidChange:
argument will contain theTVIRemoteParticipant
of the dominant speaker, ornil
if there is no longer a dominant speaker.
@IBAction func connectToRoom(sender: AnyObject) {
let connectOptions = TVIConnectOptions(token: accessToken) { (builder) in
builder.dominantSpeakerEnabled = true
builder.roomName = "my-room"
}
room = TwilioVideo.connect(with: connectOptions, delegate: self)
}
...
// MARK: TVIRoomDelegate
func room(_ room: TVIRoom, dominantSpeakerDidChange participant: TVIRemoteParticipant?) {
var identity = "N/A"
if let participant = participant {
identity = participant.identity
}
print("Dominant Speaker Changed: \(identity)")
}
Bug Fixes
- Fixed a crash related to stats gathering which could occur when insights reporting is enabled. [CSDK-2751]
- Fixed a crash related to media state summarization which could occur when disconnecting from a Room. [CSDK-2776]
- Fixed a crash related to stats gathering which could occur in the media monitor component. [CSDK-2786]
[TVIRoom getStatsWithBlock:]
will execute the provided block if called whileTVIRoom.state == TVIRoomStateReconnecting
. [CSDK-2787]
Known Issues
- Unpublishing and republishing a
TVILocalAudioTrack
orTVILocalVideoTrack
might not be seen by Participants. #34 - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
Size Impact for 2.8.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.8 MB | 19.2 MB |
arm64 | 4.2 MB | 10.3 MB |
armv7 | 4.4 MB | 8.6 MB |
Twilio Video SDK iOS 2.7.0
This release consumes twilio-video-cpp-3.2.0.
API Changes
- Added new
TVIRoomStateReconnecting
to signify that the Client is attempting to reconnect to the Room due to a network disruption. - Added two new delegate methods to
TVIRoomDelegate
[TVIRoomDelegate room:isReconnectingWithError:]
- Invoked when the Client experiences a network interruption in signaling or media. TheTVIRoom.state
property will transition toTVIRoomStateReconnecting
and the Client will attempt to restore the connection.[TVIRoomDelegate didReconnectToRoom:]
- Invoked after the Client successfully reconnects to the Room. If the reconnection attempts fail,[TVIRoomDelegate room:didDisconnectWithError:]
is invoked instead.
Enhancements
TwilioVideo.framework
is now built with Xcode 10.1.
Bug Fixes
- Fixed a bug where video tracks configured for screencast could be simulcasted with empty spatial layers. [CSDK-2540]
Known Issues
- Unpublishing and republishing a
TVILocalAudioTrack
orTVILocalVideoTrack
might not be seen by Participants. #34 - The
TVIVideoRenderingType.OpenGLES
renderer is not supported in app extensions. [ISDK-2159] - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
Size Impact for 2.7.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.8 MB | 19.1 MB |
arm64 | 4.1 MB | 10.2 MB |
armv7 | 4.4 MB | 8.6 MB |
Twilio Video SDK iOS 2.6.0
This release consumes twilio-video-cpp-3.1.5.
API Changes
- Added properties to control the torch and camera zoom while capturing:
TVICameraSource.torchLevel
TVICameraSource.torchMode
TVICameraSource.zoomFactor
- Removed
TVICameraSourceOptions.torchMode
andTVICameraSourceOptions.torchLevel
. - Added
TVILocalVideoTrack.source
property to retrieve theTVIVideoSource
used when creating the local video track.
Bug Fixes
TVILocalVideoTrack.capturer
andTVILocalVideoTrack.constraints
no longer returnnil
when called while theVideoSource
APIs are being used. [ISDK-2331]TVICameraSourceStartedBlock
is now fired when calling[TVICameraSource selectCaptureDevice:completion:]
repeatedly, with the same device. [ISDK-2321]
Known Issues
- The
TVIVideoRenderingType.OpenGLES
renderer is not supported in app extensions. [ISDK-2159] - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
Size Impact for 2.6.0
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.8 MB | 19.0 MB |
arm64 | 4.3 MB | 10.3 MB |
armv7 | 4.5 MB | 8.7 MB |
Twilio Video SDK iOS 2.6.0-preview2
This release consumes twilio-video-cpp-3.1.5.
This preview refines the TVICameraSource
APIs, introducing manual orientation, torch and zoom controls. We've also squashed a few bugs with TVIVideoSource
and picked up the latest fixes from the 2.5.6 release.
API Changes
- Introduced
[TVICameraSource initWithDelegate:]
method. - Introduced
TVICameraSourceOptions
andTVICameraSourceOptionsBuilder
classes, including options for the torch and camera zoom. - Replaced
[TVICameraSource initWithPreviewEnabled:delegate:]
with[TVICameraSource initWithOptions:delegate:]
, which acceptsTVICameraSourceOptions
. TVICameraSourceStartedBlock
now includes aTVIVideoFormat
argument.
Enhancements
- Added
[TVICameraSource updateVideoOrientation:]
method to enable manual control of orientation tags. #324 - Added helper function
TVIVideoOrientationIsValid
. - Refactored internals of
TVIConnectOptions
for improved resource management. [ISDK-1943]
Bug Fixes
- Fixed a bug where the signaling connection would not recover after a network handover. [CSDK-2623]
- Fixed a bug where the SDK might close the signaling connection after connecting to a Group Room using CallKit when the application is backgrounded. #29
- Fixed a crash when downscaling RGB32 images tagged with
TVIVideoOrientationDown
. [ISDK-2307] TVIVideoSink.sourceRequirements
is populated after callingTVIVideoSink.onFormatRequest()
. [ISDK-2309]- It is now possible to drop frames using a format request. [ISDK-2264]
- Fixed a memory leak when removing a
TVIAudioSink
from aTVIAudioTrack
. - The return value for
TVICameraSource.init
is now correctly marked asnull_unspecified
. TVICameraSourceStartedBlock
is now fired when calling[TVICameraSource selectCaptureDevice:format:completion:]
repeatedly, with different formats.[TVICameraSource supportedFormatsForDevice:]
no longer returns duplicate formats.
Known Issues
TVICameraSourceStartedBlock
is not fired when calling[TVICameraSource selectCaptureDevice:completion:]
repeatedly, with the same device. [ISDK-2321]- The
TVIVideoRenderingType.OpenGLES
renderer is not supported in app extensions. [ISDK-2159] - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
Size Impact for 2.6.0-preview2
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.8 MB | 19.0 MB |
arm64 | 4.3 MB | 10.3 MB |
armv7 | 4.5 MB | 8.7 MB |
Twilio Video SDK iOS 2.6.0-preview1
This release consumes twilio-video-cpp-3.1.4.
This release introduces new TVIVideoSource
APIs as a replacement for TVIVideoCapturer
. A Source is a producer of video content (such as frames from the Camera), and delivers that content to a Sink.
We have updated ReplayKitExample to use the TVIVideoSource
APIs, and you can try this app today. We will be updating our other examples during the preview period.
As part of this transition we are deprecating the following classes, protocols, and methods:
TVICameraCapturer
TVICameraCapturerDelegate
TVILocalVideoTrack.capturer
TVILocalVideoTrack.constraints
TVILocalVideoTrack.trackWithCapturer:
TVILocalVideoTrack.trackWithCapturer:enabled:constraints:name:
TVIVideoCapturer
TVIVideoCaptureConsumer
TVIVideoConstraints
TVIVideoConstraintsBuilder
The existing TVIVideoCapturer
APIs will continue to function until the next major release of our SDK. The following replacement APIs are now available in this preview:
TVICameraSource
TVICameraSourceDelegate
TVILocalVideoTrack.trackWithSource:
TVILocalVideoTrack.trackWithSource:enabled:name:
TVIVideoSource
TVIVideoSink
Enhancements
- It is possible to produce video from the camera in any aspect ratio using
TVICameraSource
and[TVIVideoSource requestOutputFormat:]
. For example, you can now stream square 480x480 video for multi-party conferencing scenarios. - The H.264 encoding pipeline can now use hardware acceleration for cropping (in addition to scaling) when a
TVIVideoSource
is used.
Bug Fixes
- Cropping a
TVIVideoFrame
to produce an I420 buffer (suitable for VP8 and VP9 encoding) no longer stretches the source image.
Known Issues
- Output format requests only support cropping and scaling, and can't drop frames to hit a target frame rate. [ISDK-2264]
- The signaling connection may not recover after a network handover. [CSDK-2623]
- The
TVIVideoRenderingType.OpenGLES
renderer is not supported in app extensions. [ISDK-2159] - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
- When iphone is locked, if user connects to a group Room by answering an incoming call request on CallKit UI, the phone gets disconnected from Room after 90 seconds. #29
Size Impact for 2.6.0-preview1
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.8 MB | 19.0 MB |
arm64 | 4.3 MB | 10.3 MB |
armv7 | 4.5 MB | 8.7 MB |
Twilio Video SDK iOS 2.5.6
This release consumes twilio-video-cpp-3.1.5-rc1.
Bug Fixes
- Fixed a bug where the signaling connection would not recover after a network handover. [CSDK-2623]
- Fixed a bug where the SDK might close the signaling connection after connecting to a Group Room using CallKit when the application is backgrounded. #29
Known Issues
- The
TVIVideoRenderingType.OpenGLES
renderer is not supported in app extensions. [ISDK-2159] - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
Size Impact for 2.5.6
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.7 MB | 18.9 MB |
arm64 | 4.2 MB | 10.2 MB |
armv7 | 4.5 MB | 8.6 MB |
Twilio Video SDK iOS 2.5.5
This release consumes twilio-video-cpp-3.1.4.
Bug Fixes
- Resolved an issue where
TVIVideoView
could display video which was rotated incorrectly on an iPhone XS, iPhone XS Max, or iPhone XR running iOS 12.1. #326 - Resolved an issue where switching cameras on an iPhone XS, iPhone XS Max, or iPhone XR running iOS 12.1 could cause the application to hang. [ISDK-2268]
Known Issues
- The
TVIVideoRenderingType.OpenGLES
renderer is not supported in app extensions. [ISDK-2159] - Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
- 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]
- Participant disconnect event can take up to 120 seconds to occur. #99
- When iphone is locked, if user connects to a group Room by answering an incoming call request on CallKit UI, the phone gets disconnected from Room after 90 seconds. #29
Size Impact for 2.5.5
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 8.7 MB | 18.9 MB |
arm64 | 4.2 MB | 10.2 MB |
armv7 | 4.5 MB | 8.6 MB |