Menu

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Changelog: Twilio Video iOS

Deprecation Notice - Versions 1.0.0-beta9 and earlier
Please note that older versions of the Programmable Video iOS SDK prior to 1.0.0-beta10 are deprecated and will stop working on September 13, 2018. Please make sure you’re using the latest version of the library in your apps, and make sure your customers update their apps by that date. For more information please review the knowledge base.
Compatibility Notice - All versions
Please note that all 1.x versions are incompatible with Firefox 63+ in a Peer-to-Peer Room. For more information please review the GitHub Issue.

The Twilio Programmable Video SDKs use Semantic Versioning.

1.4.3 (August 21, 2018)

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. #402

1.4.2 (July 25, 2018)

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. #402

1.4.1 (June 19, 2018)

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

  • The signaling Client could send an extra UPDATE message or fail a reconnect operation in rare cases.
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402

1.4.0 (March 23, 2018)

Features

  • Added a framesEncoded stats field to TVILocalVideoTrackStats.

Bug Fixes

  • Fixed a bug where [TVIRoomDelegate::roomDidDisconnect:error:] was not invoked due to a race condition between a network handover and a user initiated [TVIRoom disconnect] call. #235

Known Issues

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

1.3.12 (March 12, 2018)

Enhancements

  • TwilioVideo.framework and our C++ core library are now built with the Xcode 9.2 toolchain.
  • Simplified the internal process for retrieving ice servers and resolving outbound DNS.

Bug Fixes

  • Fixed an issue where the application thread could be blocked for up to 30 seconds when connecting to and deleting a TVIRoom in bad network conditions.

Known Issues

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

1.3.11 (February 26, 2018)

Enhancements

  • The media engine now uses a dedicated thread for networking operations.

Bug Fixes

  • Resolved a condition where ICE candidates might not be applied in Peer-to-Peer Rooms.
  • ICE URIs using the stuns and turns schemes are now supported. The SDK will now use turns servers if needed when turn is enabled for your Room.
  • Resolved an issue where the device model was being incorrectly reported to Insights.

Known Issues

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

1.3.10 (January 18, 2018)

Enhancements

  • TwilioVideo.framework and our C++ core library are now built with the Xcode 9.1 toolchain.

Bug Fixes

  • Clarified header docs for [TVIRoomDelegate room:didFailToConnectWithError:], [TVIRoomDelegate roomDidStartRecording:] and [TVIRoomDelegate roomDidStopRecording:].
  • Don't publish Ice Candidate stats unless an active pair is present.

Known Issues

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

1.3.9 (January 10, 2018)

Enhancements

  • TwilioVideo.framework and our C++ core library are now built with the Xcode 9.0 toolchain.
  • Added several properties to TVIIceCandidatePairStats
    • activeCandidatePair - indicates if the candidate pair is active.
    • localCandidateIp - the IP address of the local candidate associated with this candidate pair.
    • remoteCandidateIp - the IP address of the remote candidate associated with this candidate pair.
    • relayProtocol - the relay protocol

Known Issues

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

1.3.8 (November 6, 2017)

Bug Fixes

  • TVIAudioSink now pre-allocates buffers used on a real-time CoreAudio thread. #104 [ISDK-1412]

Known Issues

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

1.3.7 (October 17, 2017)

Bug Fixes

  • TVIAudioSinks added to a TVILocalAudioTrack now raise callbacks. Audio recording does not start until you join an empty Group Room or a Peer-to-Peer Room with one or more Participants. #104

Known Issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402
  • TVIAudioSink should pre-allocate buffers used on a real-time CoreAudio thread. #104 [ISDK-1412]

1.3.6 (October 9, 2017)

Enhancements

  • WebRTC and other third party dependencies are now built with Xcode 8.3.3 to match our C++ core library. We will be upgrading our build toolchain to Xcode 9.x in a future release.

Known Issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104

1.3.5 (September 21, 2017)

Bug Fixes

  • Fixed some properties which were missed during docs generation.
  • Fixed a potential crash when calling [TVIRoom disconnect:] before [TVIRoomDelegate didConnectToRoom:] is called and then destroying the TVIRoom in the [TVIRoomDelegate room:didDisconnectWithError:] callback.
  • Fixed incorrect values for TVIIceCandidateStats.port and TVIIceCandidateStats.isRemote.

Known Issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104

1.3.4 (September 7, 2017)

This release improves compatibility with iOS 11.0, resolving debugger warnings and assertions that could occur when developing against the SDK.

Bug fixes

  • Resolved a Metal debug assertion caused by improper usage of depth attachments in TVIVideoView. #141
  • Use the modern [CADisplayLinkTimer preferredFramesPerSecond] APIs instead of intervals on iOS 10.0 or newer.
  • TVIScreenCapturer no longer queries UIApplicationState from outside the main thread.
  • Cleanup TVIAudioSinks automatically after a TVIAudioTrack is removed from a TVIParticipant in order to prevent crashes.

Known issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104

1.3.3 (September 1, 2017)

Features

  • TVIVideoView's Metal implementation now supports sharing of CVPixelBuffers with the GPU, and can render frames in any TVIPixelFormat without additional CPU conversions. In order to qualify for the fast sharing path CVPixelBuffers should be created with kCVPixelBufferMetalCompatibilityKey and kCVPixelBufferIOSurfacePropertiesKey.

Bug fixes

  • Fixed the issue where the TVIConnectOptions and TVIConnectOptionsBuilder's audioTracks and videoTracks properties were not respecting their nonnull annotation.
  • Fixed the documentation error on TVIIceCandidatePairStatus currentRoundTripTime.
  • Fixed a bug in TVIScreenCapturer and in the software video pipeline where RGB CVPixelBuffer formats were incorrectly assumed to use host ordering (little endian on Ax ARM-based CPUs) instead of their in memory representation. Because of this TVIPixelFormat32BGRA was treated as TVIPixelFormat32ARGB and vice versa.

Known issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104

1.3.2 (August 22, 2017)

Bug fixes

  • Fixed an issue which prevented multiple Participants from adding/removing Tracks in Group Rooms.
  • The TVIError enumeration is now declared as an NSInteger to match what NSError is expecting.

Known issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104

1.3.1 (August 9, 2017)

Bug fixes

  • The platform name and manufacturer is reported correctly to Insights.
  • C++ core library is built with the Xcode 8.3.3 toolchain (matching video-ios).

Known issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104

1.3.0 (July 19, 2017)

Features

  • Active Ice candidate pair stats are now available as part of the TVIStatsReport objects returned from the TVIRoom:getStatsWithBlock: API.
  • One fewer thread is created per TVIRoom.

Bug fixes

  • Internal timers used by the SDK are more reliable.

Known issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104

1.2.1 (July 11, 2017)

Features

  • The SDK now uses TLS 1.2 in favor of TLS 1.0 to connect to Twilio’s servers.

Bug fixes

  • Local participant state is now promptly synced with Twilio signaling servers when there is a network handoff.

Known issues

  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104

1.2.0 (July 6, 2017)

Features

  • Added the ability to access raw audio samples using the TVIAudioSink protocol. At the moment this is only supported on remote TVIAudioTrack instances. #104

Bug fixes

  • Audio playout and recording does not work correctly on iOS simulators. #73

Known issues

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

1.1.0 (June 27, 2017)

Features

  • This release adds Insights statistics collection, which reports RTP quality metrics back to Twilio. In the future, these statistics will be included in customer-facing reports visible in the Twilio Console. Insights collection is enabled by default, if you wish to disable it use the insightsEnabled property on TVIConnectOptionsBuilder:
TVIConnectOptions *options = [TVIConnectOptions optionsWithToken:token
                                                           block:^(TVIConnectOptionsBuilder * _Nonnull builder) {
    builder.insightsEnabled = NO;
}];
  • The SDK now uses TLS port 443 to connect to Twilio's signaling servers.

Bug fixes

  • Network handoff from Wifi to Wifi is unreliable. #127
  • Resolved a crash which could occur in TVICameraCapturer when changing cameras where the AVCaptureSession was left in an uncomitted state.
  • Fixed instances where UIKit methods were being accessed outside of the main thread.
  • Fixed a bug where media and signaling could become split across network interfaces after a network handover.
  • Fixed a bug where Twilio's signaling backend was not being notified of Track changes when there were no other Participants in a Peer-to-Peer Room.

Known issues

  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402

1.0.2 (June 12, 2017)

Bug fixes

  • Resolved a crash which could occur when destroying TVILocalVideoTrack with attached renderers.
  • Backported fix for Chromium bug 679306.

Known issues

  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Network handoff from Wifi to Wifi is unreliable. #127
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402

1.0.1 (May 15, 2017)

Bug fixes

  • No Media received when adding audio/video tracks quickly while connected to a Room. #101
  • Fixed a bug in the OpenGL ES implementation of TVIVideoView where rotation was incorrect after disabling and then enabling TVILocalVideoTrack. #119
  • Fixed a bug where encoded video was corrupted when sending 720p or larger on devices with 3 or more CPU cores (iPad Air 2, iPad Pro, or iPad 2017).
  • Resolved a crash when downscaling 960x540 video in response to network congestion. #116
  • Network handoff is not supported to/from a NAT’d IPv6 network. #87

Known issues

  • VP8 is the only supported codec. #88
  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Network handoff from Wifi to Wifi is unreliable. #127
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayer audio content does not mix properly with Room audio. #402

1.0.0 (April 26, 2017)

We've promoted 1.0.0-beta16 to 1.0.0. As part of our first General Availability release we are now publishing our podspecs to the CocoaPods Master Spec Repo, instead of Twilio's Spec Repo.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. #87
  • VP8 is the only supported codec. #88
  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • Missing Media when adding audio/video tracks quickly while connected to a Room. #101
  • AVPlayer audio content does not mix properly with Room audio. #402

1.0.0-beta16 (April 25, 2017)

Bug fixes

  • Fixed an issue where the SDK was incorrectly choosing TVIAudioOutputVoiceChatDefault by default, causing audio to be routed to the receiver on iPhones.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. #87
  • VP8 is the only supported codec. #88
  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • Missing Media when adding audio/video tracks quickly while connected to a Room. #101
  • AVPlayer audio content does not mix properly with Room audio. #402

1.0.0-beta15 (April 24, 2017)

Features

  • TVIVideoClient has been renamed to TwilioVideo.
  • TVILocalMedia has been removed from TVILocalParticipant. It is now possible to create TVILocalAudioTrack and TVILocalVideoTrack using class factory methods, and add them to TVILocalParticipant directly.
  • TVIConnectOptions accepts Tracks instead of LocalMedia.
  • TVIAudioController is now a singleton, instead of a property on TVILocalMedia.
  • TVIMedia has been removed from TVIParticipant. Use the audioTracks and videoTracks properties in place of media to access Participant Tracks.
  • TVIVideoCaptureSource has been renamed to TVICameraCaptureSource.
  • - [TVICameraCapturer selectSource:] now returns a BOOL that indicates whether the provided TVICameraCaptureSource is available on the device.
  • Removed the selectNextSource API from TVICameraCapturer.
  • Changed the cameraCapturerWasInterrupted: delegate method to cameraCapturerWasInterrupted:reason:.
  • TVICameraCapturer no longer generates the TVICameraPreviewView by default. To enable previewView generation, call the initWithSource:delegate:enablePreview: initializer.
  • Removed the cameraCapturerPreviewDidStart: delegate method.
  • Added a mirror property to TVIVideoView.
  • Mirroring is no longer automatically applied to any TVIVideoViews that are rendering a TVILocalVideoTrack created with a TVICameraCapturer.

Bug fixes

  • Fixed a bug where out of order offer and answer messages could result in a failure when DTLS roles are negotiated.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. #87
  • VP8 is the only supported codec. #88
  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • Missing Media when adding audio/video tracks quickly while connected to a Room. #101
  • AVPlayer audio content does not mix properly with Room audio. #402

1.0.0-beta14 (April 12, 2017)

Features

  • TVIVideoViewRenderer has been renamed to TVIVideoView, and is now a subclass of UIView.
  • Removed the attach, detach and videoDimensions APIs from TVIVideoTrack.
  • Removed the TVIVideoTrackDelegate protocol. Applications interested in size and orientation metadata should use TVIVideoViewDelegate instead.
  • TVIAudioConstraints has been renamed to TVIAudioOptions to be consistent with their counterparts in WebRTC.
  • TVIAudioOptions now only exposes Audio Options that are available for use on iOS.

Bug fixes

  • Fixed a crash which could occur due to a race condition between Room destruction and reachability change events.
  • Fixed an SDK teardown crash which could occur in PeerConnectionSignaling::closePrivate.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. #87
  • VP8 is the only supported codec. #88
  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • Missing Media when adding audio/video tracks quickly while connected to a Room. #101

1.0.0-beta13 (March 30, 2017)

Features

  • Bitcode is now supported. #40
  • This release is based on Chromium WebRTC 57.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. #87
  • VP8 is the only supported codec. #88
  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • Missing Media when adding audio/video tracks quickly while connected to a Room. #101

1.0.0-beta12 (March 24, 2017)

Bug fixes

  • Fixed an SDK teardown crash which could occur in twilio::video::EndpointConfigurationProvider.
  • Fixed a crash which could occur while invalidating the tracks in twilio::video::Participant's destructor.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. #87
  • VP8 is the only supported codec. #88
  • Bitcode is not supported. #40
  • Audio playout and recording does not work correctly on iOS simulators. #73

1.0.0-beta11 (March 21, 2017)

Features

  • Added a new TVIConnectOptions property reconnectAfterReturningToForeground to allow disabling automatic reconnect behavior.

Bug fixes

  • Fixed an SDK teardown crash which could occur if Room is destroyed right after the room.disconnect() API is called. #95
  • Resolved memory corruption issues which could occur in multi-party scenarios. #74
  • Fixed a crash which could occur in twilio::signaling::RoomSignalingImpl. #78
  • Fixed a crash which could occur in twilio::signaling::PeerConnectionSignaling. #85
  • Fixed a regression in 1.0.0-beta9 where a track added event was not raised when the trackId was reused.
  • Decreased Room connection time by establishing the signaling connection earlier in the process.
  • Removed the final case where we resolve localhost. This also improves connection time to your first Room. #92

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. #87
  • VP8 is the only supported codec. #88
  • Bitcode is not supported. #40
  • Audio playout and recording does not work correctly on iOS simulators. #73

1.0.0-beta10 (March 10, 2017)

Features

  • Added a getStats: method to TVIRoom that builds a TVIStatsReport with metrics for all the audio and video tracks being shared to a Room.

Bug fixes

  • Resolved a memory issue where destroying TVICameraCapturer would leak its AVCaptureSession.
  • Validate TVIVideoCapturer API calls in TVIScreenCapturer and TVICameraCapturer.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. #87
  • VP8 is the only supported codec. #88
  • Bitcode is not supported. #40
  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Memory corruption in some multi-party scenarios. #74

1.0.0-beta9 (March 6, 2017)

Features

  • Improved support for backgrounding where CallKit is not used and audio is inactive. #89
  • We've begun formalizing our error codes. They are divided up into Signaling (530xx), Room (531xx), Participant (532xx), Track (533xx), Media (534xx), Configuration (535xx), and Access Token (201xx) subranges. Instances of NSError will now carry a numeric code belonging to one of these ranges. #67
  • Moved connect from an instance method to a class method on TVIVideoClient. Calling the new class connect method requires TVIConnectOptions and TVIRoomDelegate arguments. TVIVideoClient is no longer an object that can be instantiated and an instance is no longer required to connect to a Room.
  • Moved access token parameter from the TVIVideoClient class factory to the TVIConnectOptions initializer.

Connecting to a Room in beta9 using Swift:

    let connectOptions = TVIConnectOptions.init(token: accessToken) { (builder) in
        builder.roomName = "my-room"
        builder.localMedia = self.localMedia
    }
    room = TVIVideoClient.connect(with: connectOptions, delegate: self)

Bug fixes

  • Access token parsing is no longer required on the Client.
  • Use a certificate bundle to validate SSL certificates on the signaling connection.
  • Improved compatibility with Group Rooms and track added and removed events.
  • Set the NET_SERVICE_TYPE_SIG option on signaling sockets in iOS 10.
  • Resolved a deadlock which could occur while processing track events.
  • Fixed a memory management issue where TVITrack resources could be destroyed while in flight to a delegate.
  • Resolved some instances of bad memory accesses when destroying C++ signaling classes.
  • Removed .xcconfig files which were mistakenly included in 1.0.0-beta8.
  • Disallowed init on all builder classes.
  • Validate arguments for TVIVideoFrame, and TVIIceServer.
  • Fixed the exception reason for TVIVideoTrack.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. #87
  • VP8 is the only supported codec. #88
  • Bitcode is not supported. #40
  • Audio playout and recording does not work correctly on iOS simulators. #73
  • Memory corruption in some multi-party scenarios. #74

1.0.0-beta8 (February 17, 2017)

Bug fixes

  • Fixed a memory leak with TVIVideoRenderer and TVIVideoFrame on iOS 8.
  • Fixed a crash which could occur when track enabled or disabled events arrive during media negotiation.
  • Participant identities can now include unicode characters (server side fix).
  • Removed VOIP socket tagging on signaling connections.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network.
  • VP8 is the only supported codec.
  • Bitcode is not supported.
  • Audio playout and recording does not work correctly on iOS simulators.
  • If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.

1.0.0-beta7 (February 10, 2017)

Features

  • Added support for App Extensions.
  • Improved performance of the OpenGL ES implementation of TVIVideoViewRenderer by sharing frames with the GPU where possible.

Bug fixes

  • Fixed a regression from 1.0.0-beta6 where tokens with purely numeric identities caused a crash.
  • Eliminated a call to mDNSResponder when constructing TVIVideoClient.
  • Improved the reliability of DNS resolution for signaling, and resolved a potential crash on failure.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network.
  • VP8 is the only supported codec.
  • Bitcode is not supported.
  • Signaling connections are incorrectly tagged as VOIP sockets.
  • Audio playout and recording does not work correctly on iOS simulators.
  • If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.

1.0.0-beta6 (February 1, 2017)

Features

  • Network handoff is supported in IPv4 environments.
  • Added an isRecording property to TVIRoom, and delegate callbacks to TVIRoomDelegate. Please note that recording is only available in our Group Rooms developer preview. The property will always return NO in a P2P Room.

Bug fixes

  • Resolved an issue where destroying a TVITrack instance after other SDK resources could cause a crash.
  • Fixed memory leaks when parsing JSON signaling messages.
  • Aggressively close old signaling connection on a redirect.
  • Improved signaling logic when handling glare scenarios.
  • Resolved a memory management issue with outgoing signaling messages.
  • Resolved a synchronization issue in the video capture pipeline which could cause frames to be corrupted.
  • Resolved a crash which could occur when parsing ICE candidates.
  • Attempt ICE restarts in response to PeerConnection failures.

Known issues

  • Network handoff is not supported to/from a NAT’d IPv6 network. This is an issue on cellular carriers such as T-Mobile.
  • VP8 is the only supported codec.
  • Bitcode is not supported.
  • Signaling connections are incorrectly tagged as VOIP sockets.
  • Audio playout and recording does not work correctly on iOS simulators.
  • If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.
  • The SDK is not extension safe, and TVIVideoViewRenderer instances will remain paused in this environment.

1.0.0-beta5 (January 19, 2017)

Features

  • Added a new video frame class TVIVideoFrame, which replaces the TVII420Frame class for rendering and the TVIVideoFrame struct for capturing. TVIVideoFrame can be created using a CVImageBufferRef . TVIVideoRenderer and TVIVideoCaptureConsumer have been updated to use this class.
  • Renderers can now specify additional supported pixel formats via the optionalPixelFormats property in TVIVideoRenderer. Support for rotation tags is now mandatory for all renderers.

Bug fixes

  • Fixed an issue where SDK was incorrectly choosing TVIAudioOutputVoiceChatDefault by default, causing audio to be routed to the receiver on iPhones.
  • The SDK will no longer export any symbols from the dependencies that it consumes. For example, Twilio’s Video and Chat SDKs can now be used at the same time to build an application.
  • Added error handling for nil checks and protocol conformance.
  • Fixed a performance regression when communicating with clients that do not support rotation tags (like Firefox).

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported.
  • VP8 is the only supported codec.
  • Bitcode is not supported.
  • Signaling connections are incorrectly tagged as VOIP sockets.
  • If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.
  • The SDK is not extension safe. In particular, the changes made to TVIVideoViewRenderer to support CallKit / backgrounding use cases cause rendering timers to be paused when used in an extension.

1.0.0-beta4 (December 13, 2016)

Features

  • STUN and TURN requests will now succeed on DNS64 / NAT64 networks. This allows for improved media connectivity in mapped IPv6 environments.
  • TVIVideoViewRenderer now supports two new content modes: UIViewContentModeScaleAspectFill and UIViewContentModeScaleToFill.
  • This release is based upon Chromium WebRTC 55. As a part of this update TVIVideoFrame timestamps are now expressed in units of microseconds instead of nanoseconds.
  • TVII420Frame now provides display timestamps.

Bug fixes

  • Using TVICameraCapturer on the iOS 10.0 betas no longer causes a crash.
  • Reverted a change where the Client would aggressively leave Rooms in response to PeerConnection Ice failures.
  • Fixed a thread safety issue where adding/removing a track from TVILocalMedia could cause a crash.
  • Improved error handling for some signaling and media use cases, and defined additional error codes in TVIError.h.

Known issues

  • The SDK incorrectly chooses TVIAudioOutputVoiceChatDefault by default, causing audio to be routed to the receiver on iPhones. You can work around this issue by setting TVIAudioController.audioOutput to TVIAudioOutputVideoChatDefault. See video-quickstart-ios for an example of how to do this.
  • Network handoff, and subsequent connection renegotiation is not supported.
  • VP8 is the only supported codec.
  • Bitcode is not supported.
  • Signaling connections are incorrectly tagged as VOIP sockets.
  • If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.
  • The SDK is not extension safe. In particular, the changes made to TVIVideoViewRenderer to support CallKit / backgrounding use cases cause rendering timers to be paused when used in an extension.
  • There is a performance regression (since beta3) when communicating with Firefox clients. The client performs an additional memory allocation and copy operation when a TVIVideoCapturer delivers frames with non-zero rotation.

1.0.0-beta3 (November 30, 2016)

Bug fixes

  • TVICameraCapturer no longer crashes when created on iOS 10.0 & 10.1 simulators. Instead, initializing the capturer returns nil when an unavailable source is provided. We've also improved runtime error handling for this class.
  • Fixed an issue which could cause connection renegotiation to fail when adding or removing tracks.
  • Fixed an issue where the Room’s Participants list could include the local Participant in multiparty.

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported.
  • VP8 is the only supported codec.
  • Bitcode is not supported.
  • Using TVICameraCapturer on iOS 10.0 betas causes a crash.
  • Signaling connections are incorrectly tagged as VOIP sockets.
  • STUN and TURN requests fail on DNS64 / NAT64 networks. Only host candidates are supported in this environment.
  • TVIVideoViewRenderer only supports UIViewContentModeScaleAspectFit.
  • If your application requires the background audio capability (but not voip) and joins a Room where no audio is being sent or received then signaling and media connections will fail upon entering the background. In some cases this can result in a crash.
  • The SDK is not extension safe. In particular, the changes made to TVIVideoViewRenderer to support CallKit / backgrounding use cases in beta2 cause rendering timers to be paused when used in an extension.

1.0.0-beta2 (November 16, 2016)

New features

  • Added support for CallKit via a new class TVIAudioController. CallKit requires iOS 10.0 or greater. The Video QuickStart Sample App for CallKit demonstrates how to use the new APIs.
  • Added the ability to select audio routes using TVIAudioController.
  • The Signaling stack supports DNS64 / NAT64 environments.
  • Developers can add their own custom capturers by implementing TVIVideoCapturer. The existing camera and screen capturers now adopt this public API.

Bug fixes

  • Fixed an inconsistency with the TVIRoomDelegate method room:didFailToConnectWithErrorwhere an error was not returned even though the argument was marked as nonnull.
  • Calling disconnect before connecting to a Room results in room:didDisconnectWithError: rather than room:didFailToConnectWithError:.
  • TVIVideoViewRenderer will no longer attempt to use GPU resources if initialized in the background. The Metal implementation only renders when the application is in the active state in order to better support CallKit use cases.
  • Using a malformed AccessToken causes an error to be raised.
  • Logging at TVILogLevelDebug or greater shows the signaling messages exchanged.
  • Removed the usage of Poco thread pools for timers. Typically this means that the SDK requires two fewer threads to operate.
  • The SDK includes an acknowledgements file which lists open source dependencies.

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported.
  • VP8 is the only supported codec.
  • Bitcode is not supported.
  • Using TVICameraCapturer on iOS 10.0 betas causes a crash.
  • Signaling connections are incorrectly tagged as VOIP sockets.
  • STUN and TURN requests fail on DNS64 / NAT64 networks. Only host candidates are supported in this environment.
  • TVIVideoViewRenderer only supports UIViewContentModeScaleAspectFit.
  • If your application requires the background audio capability (but not voip) and joins a Room where there is no audio being sent or received then signaling and media connections will fail upon entering the background. In some cases this can result in a crash.
  • The SDK is not extension safe. In particular, the changes made to TVIVideoViewRenderer to support CallKit / backgrounding use cases in beta2 cause rendering timers to be paused when used in an extension.

1.0.0-beta1 (October 10, 2016)

New features

  • Added support for the iPhone 7 Plus to TVICameraCapturer. The SDK is compiled against the iOS 10 SDK, and continues to target iOS 8.1+.
  • Added a script to strip simulator architectures for use when submitting to the App Store.

Bug fixes

  • If you don't detach or remove your renderer from a TVIVideoTrack it will automatically be cleaned up when the track is destroyed.
  • It is now possible to re-negotiate more than one track at a time.
  • Improved signaling reliability.
  • Fixed several crashes related to object teardown.
  • Fixed an issue where passing an invalid TVIIceServer could result in a crash.

Known issues

  • IPv6 is not fully supported on iOS 10.
  • Network handoff, and subsequent connection renegotiation is not supported.
  • VP8 is the only supported codec.
  • CallKit is not officially supported. We plan on adding this in a future beta releases.
  • Bitcode is not supported.
  • Using TVICameraCapturer on iOS 10.0 betas causes a crash.
  • Signaling connections are incorrectly tagged as VOIP sockets.

1.0.0-preview1 (September 23, 2016)

New features

  • TwilioVideo uses a Room based communications model. We have replaced TWCConversation with TVIRoom and eliminated Invites from the SDK. Instead of calling inviteToConversation on TwilioConversationsClient you should call connectWithDelegate or connectWithOptions:delegate on TVIVideoClient.
  • A Room is a named voice and/or video session between one or more Participants. Unlike a Conversation a Room is created as soon as a single Participant joins. Rooms do not use invitations; Participants may join a room by simply calling connect and passing the Room’s name as an argument.
  • It is possible to join more than one Room at a time.
  • Manipulating TVILocalMedia is synchronous, and no longer requires a delegate.
  • It is possible to use TVILocalMedia independently from joining a Room. The same instance of TVILocalMedia can be reused in multiple Rooms.
  • We have added TVIScreenCapturer , a new capturer which shares the contents of a UIView with other Participants.
  • Local audio is now a first class citizen in the SDK via TVILocalAudioTrack . You can use TVIAudioConstraints in order to customize the audio that you share.
  • TwilioCommon is no longer used with the SDK.
  • TwilioVideo is distributed as a dynamic framework.
  • We use a new signaling protocol which offers support for trickle-ice. This should result in improved call setup times compared to Conversations.

Bug fixes

  • First developer preview release.

Known issues

  • IPv6 is not fully supported on iOS 10.
  • Network handoff, and subsequent connection renegotiation is not supported.
  • If you use the attach APIs to render a video feed, then you must call detach explicitly. Similarly if you add a renderer to a video track then you will have to remove it yourself.
  • Renegotiating more than one track at a time is not supported.
  • VP8 is the only supported codec.
  • Bitcode is not supported.
Rate this page:

Need some help?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.