Releases: twilio/twilio-video-ios
Twilio Video SDK iOS 1.4.0
Features
- Added a
framesEncoded
stats field toTVILocalVideoTrackStats
.
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
Twilio Video SDK iOS 2.0.0-beta3
Enhancements
- Added the functions
TVIAudioSessionActivated()
andTVIAudioSessionDeactivated()
to support backgrounding for customTVIAudioDevice
s. [ISDK-1842] - Removed the
reconnectAfterReturningToForeground
property fromTVIConnectOptions
andTVIConnectOptionsBuilder
. The SDK will continue to support the default behavior of terminating signaling connections when AVAudioSession is inactive and the app is backgrounded.
Bug Fixes
- Fixed a bug where
TVIDefaultAudioDevice
was not able to play or record audio if the user joins a Room with a bluetooth device. #236 - Resolved a deadlock in
TVIAudioDevice
which could occur while invokingTVIAudioDeviceFormatChanged()
.
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-preview9
Enhancements
- Our C++ core library is now built with the Xcode 9.1 toolchain (matching video-ios).
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
- 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
- AVPlayer audio content does not mix properly with Room audio. #62
Twilio Video SDK iOS 2.0.0-preview8
As of this release we are removing support for iOS 8 and raising our minimum target to iOS 9.0. Twilio Video 1.x releases will continue to support iOS 8.1 and later.
Enhancements
[TVICameraCapturerDelegate cameraCapturerWasInterrupted:reason:]
now usesAVCaptureSessionInterruptionReason
instead ofTVICameraCapturerInterruptionReason
.- Added subscription failure callbacks to
TVIRemoteParticipantDelegate
.failedToSubscribeToAudioTrack:error:forParticipant:
failedToSubscribeToDataTrack:error:forParticipant:
failedToSubscribeToVideoTrack:error:forParticipant:
- This release deprecates
TVIAudioController
and adds a newTVIDefaultAudioDevice
class. TheTVIDefaultAudioDevice
class allows you to record and playback audio and allows to configureAVAudioSession
when you are connected to a Room. TVIAudioController.startAudio()
andTVIAudioController.stopAudio()
have been removed in favor of a new property calledTVIDefaultAudioDevice.enabled
. This property provides developers with a mechanism to enable or disable the activation of the audio device prior to connecting to a Room or to stop or start the audio device while you are already connected to a Room. A Room can now be connected without activating the audio device by settingTVIDefaultAudioDevice.enabled
toNO
and can be enabled during the lifecycle of the Room by settingTVIDefaultAudioDevice.enabled
toYES
. The default value isYES
. This API change was made to ensure full compatibility with CallKit as well as supporting other use cases where developers may need to disable the audio device during a call.TVIDefaultAudioDevice
can be provided toTVIConnectOptions
while connecting to a Room.TVIRoom
has a new propertyaudioDevice
which points to the audio device used by the Room.
Examples #1 - Changing the audio route from speaker to receiver in a live call:
TVIDefaultAudioDevice *audioDevice = [TVIDefaultAudioDevice audioDevice];
//...connect to a Room with audioDevice. By default the audio route will be configured to speaker.
room.audioDevice.block = ^ {
// We will execute `kDefaultAVAudioSessionConfigurationBlock` first.
kDefaultAVAudioSessionConfigurationBlock();
// Overwrite the audio route
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *error = nil;
if (![session setMode:AVAudioSessionModeVoiceChat error:&error]) {
NSLog(@"AVAudiosession setMode %@",error);
}
if (![session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error]) {
NSLog(@"AVAudiosession overrideOutputAudioPort %@",error);
}
};
room.audioDevice.block();
Example #2 - Connecting to a Room using the AVAudioSessionCategoryPlayback
category:
TVIDefaultAudioDevice *audioDevice = [TVIDefaultAudioDevice audioDeviceWithBlock:^ {
// Execute the `kDefaultAVAudioSessionConfigurationBlock` first.
kDefaultAVAudioSessionConfigurationBlock();
// Overwrite the category to `playback`
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *error = nil;
if (![session setCategory:AVAudioSessionCategoryPlayback
mode:AVAudioSessionModeVideoChat
options:AVAudioSessionCategoryOptionAllowBluetooth
error:&error]) {
NSLog(@"AVAudioSession setCategory:options:mode:error: %@",error);
}
}];
TVIConnectOptions *connectOptions = [TVIConnectOptions optionsWithToken:token
block:^(TVIConnectOptionsBuilder *builder) {
builder.audioDevice = audioDevice;
}];
TVIRoom *room = [TwilioVideo connectWithOptions: connectOptions]
- C++ core library is now built with Xcode 9.1 tool chain (matching video-ios).
- 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
Bug Fixes
TVICameraCapturer.init()
is now annotated asnull_unspecified
instead of inheriting fromNSObject.init()
to match other initializers. [ISDK-1728]- Fixed a potential crash when connecting to Group Rooms and publishing Audio, Video and Data Tracks.
- Fixed a crash which could occur in the signaling layer when disconnecting from a Room while receiving messages.
- Resolved a multi-threading issue where
TVIRemoteParticipantDelegate
callbacks could be missed leading to[TVIRemoteParticipant unsubscribedFrom*Track:publication:forParticipant:]
events raised when the underlying C++ core track isnullptr
.
Known Issues
- 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
- AVPlayer audio content does not mix properly with Room audio. #62
Twilio Video SDK iOS 2.0.0-beta1
This release is focused on enabling more advanced audio use cases in Twilio Video. In the past you've been able to use TVIAudioSink
to access raw audio samples from a TVIAudioTrack
. However, these APIs did not allow developers to control the mechanism by which audio is captured and rendered in a Room.
We're now pleased to introduce TVIAudioDevice
. This protocol works in concert with TVIAudioSink
, giving you the ability to replace TVIDefaultAudioDevice
. By implementing the TVIAudioDevice
protocol, you can write your own audio capturer to feed audio samples to the Video SDK and an audio renderer to receive the remote Participant's audio samples. For example, you could integrate with ReplayKit2
and capture application audio for broadcast or play music using AVAssetReader
.
See AudioDeviceExample which uses a custom Audio Device with CoreAudio to play the remote Participant's stereo audio. In the future, we will add more AudioDevices to the repo.
Please note, if you are providing your own custom audio device, it is necessary to support audio capturing in order to create an instance of TVILocalAudioTrack
. Also, if the supplied audio device does not support audio rendering then the you will not be able to receive any audio samples via TVIAudioSink
.
Enhancements
- Added the ability to provide your own audio capturing and rendering via the
TVIAudioDevice
protocol. As a part of this change we've also addedTVIAudioFormat
which describes audio that is being captured and rendered. - Introduced
TwilioVideo.audioDevice
class property, and removedTVIConnectOptions.audioDevice
. You should set your audio device onTwilioVideo
before performing any other actions with the SDK such as creating Tracks or connecting to a Room. - The class factory methods for
TVILocalAudioTrack
andTVILocalDataTrack
now returnnullable
instances.
Bug Fixes
TVIDefaultAudioDevice
is not able to play or record audio after anAVAudioSessionInterruptionNotification
is triggered. #221
Known Issues
- The signaling connection is closed upon entering the background when an audio device besides
TVIDefaultAudioDevice
is used in a Room. [ISDK-1842] - 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-beta2
Enhancements
TVIAudioDeviceExecuteWorkerBlock
executes the supplied block asynchronously.
Bug Fixes
- Audio is not resumed for Alice if Alice is connected to a Room and receives an incoming cellular call and the caller cancels the call (iOS 9.x).
- Resolved an issue where the device model was being incorrectly reported to Insights.
- Improved thread safety while executing
TVIAudioDeviceFormatChanged
andTVIAudioDeviceExecuteWorkerBlock
. It should no longer be possible for these functions to access an invalidTVIAudioDeviceContext
.
Known Issues
- The signaling connection is closed upon entering the background when an audio device besides
TVIDefaultAudioDevice
is used in a Room. [ISDK-1842] - 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 1.3.12
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
Twilio Video SDK iOS 1.3.11
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
andturns
schemes are now supported. The SDK will now useturns
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
Twilio Video SDK iOS 1.3.10
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
Twilio Video SDK iOS 1.3.9
Enhancements
TwilioVideo.framework
and our C++ core library are now built with the Xcode 9.1 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