Releases: twilio/twilio-video-ios
Twilio Video SDK iOS 2.2.2
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
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
This release consumes twilio-video-cpp-2.1.0.
Enhancements
TVIRoom
'sdelegate
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:]
returnedYES
whenTVIVp8Codec.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
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 inTVIVideoTrack
. - 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
Twilio Video SDK iOS 1.4.2
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
Twilio Video SDK iOS 1.4.1
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
Twilio Video SDK iOS 2.0.1
Features
TVIVideoView
now usesMTKView
from MetalKit.framework when Metal rendering is selected.
Bug Fixes
- Resolved a rare crash involving
TVIVideoView
and an internal class namedTVIDisplayLinkTimer
when Metal rendering is used. - Fixed a bug where the SDK could invoke
UIView
APIs on a background thread while invalidating aTVIVideoView
.
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
Features
- Added a
framesEncoded
stats field toTVILocalVideoTrackStats
. - Removed
trackId
fromTVIBaseTrackStats
.trackSid
can be used to identify track stats in aTVIStatsReport
. - Removed
trackId
fromTVILocalAudioTrack
,TVILocalDataTrack
, andTVILocalVideoTrack
.trackSid
orname
can be used to identify local tracks. - Added
TVIRemoteAudioTrack.sid
,TVIRemoteVideoTrack.sid
andTVIRemoteDataTrack.sid
properties. - Replaced
TVIAudioCodec
enumeration withTVIAudioCodec
,TVIG722Codec
,TVIIsacCodec
,TVIOpusCodec
,TVIPcmaCodec
andTVIPcmuCodec
classes. - Replaced
TVIVideoCodec
enumeration withTVIH264Codec
,TVIVp8Codec
andTVIVp9Codec
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 aTVIRoom
object is created and when it connects. This issue could cause issues when theTVIRoom
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 useturns
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
orTVIPixelFormatYUV420PlanarVideoRange
. [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
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 usesCMTime
instead ofint64_t
(in microseconds). We've found that developers writing customTVIVideoCapturer
s 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 withCFTimeInterval
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 producesCMSampleBuffer
s.
// 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 asnullable
instead ofnull_unspecified
.- Added the optional
invalidateRenderer
method to theTVIVideoRenderer
protocol. This method, if implemented, will be invoked when aTVIVideoRenderer
object is removed from a video track by calling the[TVIVideoTrack removeRenderer:]
method. This method allows theTVIVideoRenderer
to perform any necessary cleanup that is required, for instance when theTVIVideoRender
is to be reused with a different video track. TVIVideoView
implements theinvalidateRenderer
protocol method and will now better support reusing the view between different video tracks. #240 Now, when aTVIVideoView
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
andmirror
properties are reset to their respective default values.
Bug Fixes
- The H.264 encoder now supports inputs in
TVIPixelFormatYUV420PlanarFullRange
orTVIPixelFormatYUV420PlanarVideoRange
.
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