Skip to content

Releases: twilio/twilio-video-ios

Twilio Video SDK iOS 1.4.0

24 Mar 02:05
b9875b7
Compare
Choose a tag to compare

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

Twilio Video SDK iOS 2.0.0-beta3

21 Mar 20:20
9f3ad2d
Compare
Choose a tag to compare

Enhancements

  • Added the functions TVIAudioSessionActivated() and TVIAudioSessionDeactivated() to support backgrounding for custom TVIAudioDevices. [ISDK-1842]
  • Removed the reconnectAfterReturningToForeground property from TVIConnectOptions and TVIConnectOptionsBuilder. 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 invoking TVIAudioDeviceFormatChanged().

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-preview9

19 Jan 23:41
db64596
Compare
Choose a tag to compare

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 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
  • AVPlayer audio content does not mix properly with Room audio. #62

Twilio Video SDK iOS 2.0.0-preview8

09 Jan 23:32
db64596
Compare
Choose a tag to compare

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 uses AVCaptureSessionInterruptionReason instead of TVICameraCapturerInterruptionReason.
  • Added subscription failure callbacks to TVIRemoteParticipantDelegate.
    • failedToSubscribeToAudioTrack:error:forParticipant:
    • failedToSubscribeToDataTrack:error:forParticipant:
    • failedToSubscribeToVideoTrack:error:forParticipant:
  • This release deprecates TVIAudioController and adds a new TVIDefaultAudioDevice class. The TVIDefaultAudioDevice class allows you to record and playback audio and allows to configure AVAudioSession when you are connected to a Room.
  • TVIAudioController.startAudio() and TVIAudioController.stopAudio() have been removed in favor of a new property called TVIDefaultAudioDevice.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 setting TVIDefaultAudioDevice.enabled to NO and can be enabled during the lifecycle of the Room by setting TVIDefaultAudioDevice.enabled to YES. The default value is YES. 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 to TVIConnectOptions while connecting to a Room.
  • TVIRoom has a new property audioDevice 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 as null_unspecified instead of inheriting from NSObject.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 is nullptr.

Known Issues

  • 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
  • AVPlayer audio content does not mix properly with Room audio. #62

Twilio Video SDK iOS 2.0.0-beta1

07 Feb 23:37
db64596
Compare
Choose a tag to compare

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 added TVIAudioFormat which describes audio that is being captured and rendered.
  • Introduced TwilioVideo.audioDevice class property, and removed TVIConnectOptions.audioDevice. You should set your audio device on TwilioVideo before performing any other actions with the SDK such as creating Tracks or connecting to a Room.
  • The class factory methods for TVILocalAudioTrack and TVILocalDataTrack now return nullable instances.

Bug Fixes

  • TVIDefaultAudioDevice is not able to play or record audio after an AVAudioSessionInterruptionNotification 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 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-beta2

27 Feb 22:29
db64596
Compare
Choose a tag to compare

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 and TVIAudioDeviceExecuteWorkerBlock. It should no longer be possible for these functions to access an invalid TVIAudioDeviceContext.

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 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 1.3.12

13 Mar 00:59
db64596
Compare
Choose a tag to compare

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

Twilio Video SDK iOS 1.3.11

26 Feb 19:49
db64596
Compare
Choose a tag to compare

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

Twilio Video SDK iOS 1.3.10

19 Jan 02:00
db64596
Compare
Choose a tag to compare

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

Twilio Video SDK iOS 1.3.9

10 Jan 20:49
db64596
Compare
Choose a tag to compare

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

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