Skip to content

Releases: twilio/twilio-video-ios

Twilio Video SDK iOS 2.10.0

24 Apr 22:17
389560e
Compare
Choose a tag to compare

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
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 or TVILocalVideoTrack 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

18 Apr 22:19
389560e
Compare
Choose a tag to compare

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 to YES when connecting to a Group Room.
    • To determine the current network quality level for your Local Participant, query the TVILocalParticipant.networkQualityLevel. Note, this will return TVINetworkQualityLevelUnknown if:
      • The TVIConnectOptions.networkQualityEnabled property was set to NO OR
      • Using a Peer-to-Peer room OR
      • The network quality level has not yet been computed
    • Network Quality Level for Remote Participants will be available in a future release.
    • Implementing [TVILocalParticipantDelegate localParticipant:networkQualityLevelDidChange:] method on your TVILocalParticipantDelegate will allow you to receive callbacks when the network quality level changes.
@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 or TVILocalVideoTrack 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

21 Mar 22:58
389560e
Compare
Choose a tag to compare

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 new TVICameraSource could result in the 2nd source being interrupted.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack 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

15 Mar 01:03
389560e
Compare
Choose a tag to compare

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 to YES when connecting to a Group Room. To determine the current dominant speaker, query the TVIRoom.dominantSpeaker property. When there is no dominant speaker, the TVIConnectOptions.dominantSpeakerEnabled property was set to NO or when using a Peer-to-Peer room, the TVIRoom.dominantSpeaker property will always return nil. When there is a dominant speaker, the TVIRoom.dominantSpeaker property will return the appropriate TVIRemoteParticipant. Implementing [TVIRoomDelegate room:dominantSpeakerDidChange:] method on your TVIRoomDelegate will allow you to receive callbacks when the dominant speaker in a Group Room changes. The dominantSpeakerDidChange: argument will contain the TVIRemoteParticipant of the dominant speaker, or nil 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 while TVIRoom.state == TVIRoomStateReconnecting. [CSDK-2787]

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack 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

14 Feb 21:25
389560e
Compare
Choose a tag to compare

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. The TVIRoom.state property will transition to TVIRoomStateReconnecting 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 or TVILocalVideoTrack 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

20 Dec 00:00
389560e
Compare
Choose a tag to compare

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 and TVICameraSourceOptions.torchLevel.
  • Added TVILocalVideoTrack.source property to retrieve the TVIVideoSource used when creating the local video track.

Bug Fixes

  • TVILocalVideoTrack.capturer and TVILocalVideoTrack.constraints no longer return nil when called while the VideoSource 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

14 Dec 02:51
389560e
Compare
Choose a tag to compare
Pre-release

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 and TVICameraSourceOptionsBuilder classes, including options for the torch and camera zoom.
  • Replaced [TVICameraSource initWithPreviewEnabled:delegate:] with [TVICameraSource initWithOptions:delegate:], which accepts TVICameraSourceOptions.
  • TVICameraSourceStartedBlock now includes a TVIVideoFormat 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 calling TVIVideoSink.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 a TVIAudioTrack.
  • The return value for TVICameraSource.init is now correctly marked as null_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

03 Dec 23:58
389560e
Compare
Choose a tag to compare
Pre-release

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

05 Dec 21:29
389560e
Compare
Choose a tag to compare

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

29 Nov 01:12
389560e
Compare
Choose a tag to compare

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