Skip to content

Releases: twilio/twilio-video-ios

Twilio Video SDK iOS 2.2.2

25 Jul 22:57
389560e
Compare
Choose a tag to compare

This release consumes twilio-video-cpp-2.1.2.

Enhancements

  • Clarified the header docs for TVIVideoViewDelegate.
  • Updated certificate bundle to include "Starfield Class 2 CA" and "Starfield Services Root Certificate Authority - G2" using release-2.0.0 of cert-bundle.

Bug Fixes

  • Fixed a crash which might occur when processing the stats reports when calling [TVIRoom getStatsWithBlock:].
  • Retry failed ICE Server requests up to TVIIceOptions.iceServersTimeout to increase reliability.
  • Fixed a memory leak which could occur after creating SDPs.

Known Issues

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

Twilio Video SDK iOS 2.2.1

20 Jun 21:18
389560e
Compare
Choose a tag to compare

This release consumes twilio-video-cpp-2.1.1.

Improvements

  • Refactored internal signaling reachability events, which reduced thread hops on Apple platforms.
  • Increased the signaling disconnect timeout interval to 7 seconds when a network connection is available.

Bug Fixes

  • A timer overflow could cause events to occur sooner than expected.
  • Fixed a bug that caused disconnected responses to be dropped and delayed RoomObserver::onDisconnected callbacks by up to 1 second.

Known Issues

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

Twilio Video SDK iOS 2.2.0

07 Jun 20:12
389560e
Compare
Choose a tag to compare

This release consumes twilio-video-cpp-2.1.0.

Enhancements

  • TVIRoom's delegate property is no longer read only. #13
  • When invalidating TVIVideoView, the black frame is rendered synchronously rather than on the next vsync.

Bug Fixes

  • Corrected the @return documentation for the [TwilioVideo connectWithOptions:delegate:] method. #14
  • Fixed a bug where [TVIVp8Codec isEqual:] returned YES when TVIVp8Codec.isSimulcast did not match.

Known Issues

  • Network handoff is not supported in Group Rooms. #154
  • 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.
  • 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

Twilio Video SDK iOS 2.1.0

25 May 00:18
389560e
Compare
Choose a tag to compare

This release consumes twilio-video-cpp-2.1.0.

Enhancements

  • TwilioVideo.framework is now built with the Xcode 9.3 toolchain.
  • Improved thread safety when accessing the TVIVideoRenderer collection in TVIVideoTrack.
  • Added an initializer to TVIVp8Codec to enable simulcast. Enabling simulcast causes the encoder to generate multiple spatial and temporal layers for the video that is published. Simulcast should only be enabled in a Group Room.
  • Fixed an issue where the aspect ratio in TVIVideoView could be incorrect. #266
  • Added two new properties to TVIIceOptions to control how ICE servers are fetched.
    • abortOnIceServersTimeout- Require ICE server fetching to complete, and disallow the use of default STUN servers if the request fails.
    • iceServersTimeout - A custom timeout to use when fetching ICE servers.

Bug Fixes

  • Fixed a bug where the SDK could crash when unsubscribing from a TVIRemoteDataTrack and disconnecting from a Room at the same time.
  • Fixed a rare crash that occurs during PeerConnectionSignaling teardown.
  • Fixed an issue in PeerConnectionSignaling which could cause DTLS roles to be negotiated incorrectly in a multi-party Peer-to-Peer Room.
  • Fixed build configuration to reduce file size of libtwilio-video for Darwin and iOS.

Known Issues

  • Network handoff is not supported in Group Rooms. #154
  • 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.
  • 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

Twilio Video SDK iOS 1.4.3

21 Aug 20:05
389560e
Compare
Choose a tag to compare

This release consumes twilio-video-cpp-1.4.4.

Enhancements

  • TwilioVideo.framework is now built with Xcode 9.4.1.

Known Issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #62

Twilio Video SDK iOS 1.4.2

25 Jul 19:01
389560e
Compare
Choose a tag to compare

This release consumes twilio-video-cpp-1.4.4.

Improvements

  • Updated certificate bundle to include "Starfield Class 2 CA" and "Starfield Services Root Certificate Authority - G2" using release-2.0.0 of cert-bundle.

Bug Fixes

  • Fixed an instance where the signaling Client could send an extra UPDATE message or fail a reconnect operation.

Known Issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #62

Twilio Video SDK iOS 1.4.1

19 Jun 19:50
389560e
Compare
Choose a tag to compare

This release consumes twilio-video-cpp-1.4.3.

1.4.1 (In development)

Improvements

  • TwilioVideo.framework and our C++ core library are now built with the Xcode 9.3 toolchain.
  • Initial Connect message now includes Client version metadata.

Bug Fixes

  • Fixed a bug where the SDK hangs if DNS resolution fails and the user does not initiate disconnect.
  • The signaling Client no longer logs access tokens.
  • Resolved an issue where the signaling Client could send too many UPDATE messages, or use too many CPU cycles and disconnect from a Room.

Known Issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #62

Twilio Video SDK iOS 2.0.1

04 May 19:01
b9875b7
Compare
Choose a tag to compare

Features

  • TVIVideoView now uses MTKView from MetalKit.framework when Metal rendering is selected.

Bug Fixes

  • Resolved a rare crash involving TVIVideoView and an internal class named TVIDisplayLinkTimer when Metal rendering is used.
  • Fixed a bug where the SDK could invoke UIView APIs on a background thread while invalidating a TVIVideoView.

Known Issues

  • Network handoff is not supported in Group Rooms. #154
  • 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.
  • 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

Twilio Video SDK iOS 2.0.0-beta4

10 Apr 14:40
b9875b7
Compare
Choose a tag to compare

Features

  • Added a framesEncoded stats field to TVILocalVideoTrackStats.
  • Removed trackId from TVIBaseTrackStats. trackSid can be used to identify track stats in a TVIStatsReport.
  • Removed trackId from TVILocalAudioTrack, TVILocalDataTrack, and TVILocalVideoTrack. trackSid or name can be used to identify local tracks.
  • Added TVIRemoteAudioTrack.sid, TVIRemoteVideoTrack.sid and TVIRemoteDataTrack.sid properties.
  • Replaced TVIAudioCodec enumeration with TVIAudioCodec, TVIG722Codec, TVIIsacCodec, TVIOpusCodec, TVIPcmaCodec and TVIPcmuCodec classes.
  • Replaced TVIVideoCodec enumeration with TVIH264Codec, TVIVp8Codec and TVIVp9Codec classes.

Improvements

  • Simplified the internal process for retrieving ice servers and resolving outbound DNS.
  • The media engine now uses a dedicated thread for networking operations.
  • Reduced the time needed to shutdown the signaling stack while disconnecting from a Room.
  • Increased the signaling disconnect timeout interval to 1 second.
  • Enable monotonic clock support in the signaling Client.
  • Initial Connect message now includes Client version metadata.

Bug Fixes

  • Fixed an issue where [TVIRoomDelegate room:didDisconnectWithError:] was not raised for connected Participants when a Room is completed via the REST API.
  • Fixed an issue where the value of [TVIRoom hash] could change between the time a TVIRoom object is created and when it connects. This issue could cause issues when the TVIRoom object was stored in a collection.
  • Quieted unnecessary warning logs when preferring codecs.
  • Fixed an issue where application thread would block up to 30 seconds when connecting to and destroying a TVIRoom in bad network conditions.
  • Fixed a bug where [TVIRoomDelegate room:didDisconnectWithError:] was not getting invoked due to a race condition between a network handover and a user initiated [TVIRoom disconnect] call. #235
  • ICE URIs using the turns scheme are now supported. The SDK will now use turns by default if turn is enabled for your Room.
  • ICE URIs using the stuns scheme are now supported.
  • Resolved a condition where ICE candidates might not be applied in Peer-to-Peer Rooms.
  • Resolved an issue with clock rollover in the Room signaling layer that resulted in high CPU usage and disconnects.
  • The signaling Client no longer logs access tokens.

Known Issues

  • There is no way for a developer's TVIAudioDevice to communicate runtime errors. [ISDK-1839]
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • 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.
  • 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

Twilio Video SDK iOS 2.0.0

26 Apr 20:55
b9875b7
Compare
Choose a tag to compare

This is our first Generally Available (GA) 2.0 release.

Thank you for the feedback that you've provided on our preview and beta releases. This version includes some minor API changes around TVIVideoFrame and TVIVideoRenderer / TVIVideoView reuse, but otherwise is very similar to 2.0.0-beta4.

Features

  • TVIVideoFrame.timestamp now uses CMTime instead of int64_t (in microseconds). We've found that developers writing custom TVIVideoCapturers are sometimes confused at having to convert time into microseconds. Furthermore, this conversion can be a destructive operation which causes the original timescale to be lost. For those working with CFTimeInterval we've also added an initializer which accepts this argument. The following code snippet demonstrates how to modify your capture logic when dealing with a source which produces CMSampleBuffers.
// Before
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
    CMTime presentationTimestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
    int64_t timestamp = (int64_t)(CMTimeGetSeconds( presentationTimestamp ) * INT64_C( 1000000 ));
    TVIVideoFrame *frame = [[TVIVideoFrame alloc] initWithTimestamp:timestamp
                                                             buffer:CMSampleBufferGetImageBuffer( sampleBuffer )
                                                        orientation:TVIVideoOrientationUp];

    [_captureConsumer consumeCapturedFrame:frame];
}
// After
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
    CMTime timestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
    TVIVideoFrame *frame = [[TVIVideoFrame alloc] initWithTimestamp:timestamp
                                                             buffer:CMSampleBufferGetImageBuffer( sampleBuffer )
                                                        orientation:TVIVideoOrientationUp];

    [_captureConsumer consumeCapturedFrame:frame];
}
  • TVIVideoFrame initializers are now marked as nullable instead of null_unspecified.
  • Added the optional invalidateRenderer method to the TVIVideoRenderer protocol. This method, if implemented, will be invoked when a TVIVideoRenderer object is removed from a video track by calling the [TVIVideoTrack removeRenderer:] method. This method allows the TVIVideoRenderer to perform any necessary cleanup that is required, for instance when the TVIVideoRender is to be reused with a different video track.
  • TVIVideoView implements the invalidateRenderer protocol method and will now better support reusing the view between different video tracks. #240 Now, when a TVIVideoView is removed as a renderer for a video track, the following will occur:
    • A black frame is rendered to the view to clear the last frame and then the view is resized back to its original internal dimensions.
    • The hasVideoData flag is reset. This will allow the [TVIVideoViewDelegate videoViewDidReceiveData:] method to be fired again when new video data arrives.
    • The videoDimensions, videoOrientation, viewShouldRotateContent and mirror properties are reset to their respective default values.

Bug Fixes

  • The H.264 encoder now supports inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange.

Known Issues

  • Network handoff is not supported in Group Rooms. #154
  • 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.
  • 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