Changelog: Twilio Video Android 1.x
Deprecation Notice - Versions 1.0.0-beta10 and earlier |
---|
Older versions of the Programmable Video Android SDK prior to 1.0.0-beta11 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 |
---|
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.
Improvements
- Updated Android Gradle Plugin version to
3.1.0
and Gradle version to4.4
- 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.
- Fixed a rare internal SDK teardown crash.
- 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
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72 e VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Improved internal logic for retrieving ice servers and resolving outbound DNS.
Bug Fixes
- Fixed a bug where onDisconnected was not getting invoked due to a race condition between a network handover and a user initiated disconnect call.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72 e VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Bug Fixes
- Fixed crash when calling
Room#disconnect()
twice. #255
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72 e VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Bug Fixes
- 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.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72 e VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Updated
targetSdkVersion
to 27 - Updated
buildToolsVersion
to 27.0.3 - Updated Android Gradle plugin to 3.0.1
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72 e VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Refactor internal reference counting of internal MediaFactory.
Bug Fixes
- Don't publish Ice Candidate stats unless an active pair is present.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72 e VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Added version to javadoc title, header, and bottom.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Updated javadoc to include note about
VideoView#setVideoScaleType
. Scale type will only be applied to dimensions defined asWRAP_CONTENT
or a custom value. Setting a width or height toMATCH_PARENT
results in the video being scaled to fill the maximum value of the dimension. - Add warning log when calling
setVideoScaleType
when width or height is set toMATCH_PARENT
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Twilio CDN no longer hosts the Video Android aar artifacts or Javadocs
If you are downloading Video Android SDK artifacts from the Twilio CDN then there is one options available moving forward.
- Download the artifacts directly from Bintray.
All Javadocs back to 1.0.0-preview1
are now hosted on Github Pages
with the following URL scheme. https://twilio.github.io/twilio-video-android/docs/{version}
- To view
1.3.7
Javadocs go to https://twilio.github.io/twilio-video-android/docs/1.3.7 - To view the latest Javadocs go to https://twilio.github.io/twilio-video-android/docs/latest
Bug Fixes
- Fixed NPE when calling
takePicture
onCameraCapturer
.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Include javadoc and sources jar with artifacts published to Bintray.
- Updated to Build Tools 26.0.2
- Support annotations and Relinker no longer exposed at compile time
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Improved threading contract.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Bug Fixes
- Fixed issue that caused room names with certain UTF-8 characters to be improperly encoded. #179
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Internal library update
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- Room names with certain UTF-8 characters are not encoded properly #179
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Upgraded to Android Oreo from Nougat
- Fixed crash disconnecting from
Room
that has not connected #116
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Fixed case on some devices where
CameraCapturer
incorrectly reported a failure to close the camera. - Improved echo cancellation on Nexus 6P and Nexus 6 by enabling hardware echo canceller and disabling OpenSL ES.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Features
- Added static method
CameraCapturer.isSourceAvailable
that validates if a camera source is available on the device. This method is used when creating aCameraCapturer
instance and when callingCameraCapturer#switchCamera
to validate that a source can be used for capturing frames.
Improvements
- Added javadoc to
Participant.Listener
,ScreenCapturer.Listener
,VideoCapturer.Listener
, andVideoRenderer.Listener
.
Bug Fixes
- Fixed a bug where multiple participants adding/removing tracks at the same time was not handled properly.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Calling
Participant#setListener
withnull
is no longer allowed.
Bug Fixes
- Removed reference to
LocalMedia
inCameraCapturer
javadoc. - Fixed race condition that could result in track events not being raised.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Improved safety of asynchronous operations in native core.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Features
- The SDK now uses TLS 1.2 in favor of TLS 1.0 to connect to Twilio's servers.
Improvements
- Deprecated
LocalParticipant#release
. This method is not meant to be called and is now a no-op until it is removed in2.0.0-preview1
release. #132 - Added more checks and logging to
CameraCapturer
to help identify cases when the camera service cannot be reached. #126 - Changed
getSupportedFormats
forCameraCapturer
,ScreenCapturer
, andCamera2Capturer
to besynchronized
.
Bug Fixes
- Fixed timing issue where camera was not always available after a video track was released. #126
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Bug Fixes
- Fixed bug in
VideoConstraints
logic where valid VideoCapturer video formats were ignored due to very strict checking of aspect ratios in WebRTC. - Fixed bug in Logger.java where setting certain LogLevel's did not print error logs .
- Fixed bug in
LocalVideoTrack
where FPS check was incorrectly marking a constraint as incompatible. #127
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - LocalParticipant release method is public #132
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Moved signaling network traffic to port 443.
- Added
Camera2Capturer
.Camera2Capturer
usesandroid.hardware.camera2
to implement aVideoCapturer
.Camera2Capturer
does not yet implementtakePicture
and the ability to modify camera parameters onceCamera2Capturer
is running.
Create LocalVideoTrack
with Camera2Capturer
1// Check if device supports Camera2Capturer2if (Camera2Capturer.isSupported(context)) {3// Use CameraManager.getCameraIdList() for a list of all available camera IDs4String cameraId = "0";5Camera2Capturer.Listener camera2Listener = new Camera2Capturer.Listener() {6@Override7public void onFirstFrameAvailable() {}89@Override10public void onCameraSwitched(String newCameraId) {}1112@Override13public void onError(Camera2Capturer.Exception exception) {}14}15Camera2Capturer camera2Capturer = new Camera2Capturer(context, cameraId, camera2Listener);16LocalVideoTrack = LocalVideoTrack.create(context, true, camera2Capturer);17}
-
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 reference the following snippet.
1ConnectOptions connectOptions = new ConnectOptions.Builder(token)2.enableInsights(false)3.build();
Bug Fixes
- Improved signaling connection retry logic. In the case of an error, the SDK will continue to retry with a backoff timer when errors are encountered.
- Fixed a bug in network handoff scenarios where the SDK was not handling the race condition if network lost or network changed event is received when a network changed event is being processed.
- Fixed bug where audio and video tracks were not available after
onParticipantDisconnected
was invoked #125
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Bug Fixes
- Backported fix for Chromium bug 679306.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Improved internal native Room operations.
- Improved
ScreenCapturer
performance by enabling capturing to a texture. - Added new error code for case when participant gets disconnected because of duplicate participant joined the room.
Bug Fixes
- Fixed issue adding audio/video tracks quickly while connected to a room #90
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
We've promoted 1.0.0-beta17 to 1.0.0 as our first General Availability release.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Missing media when adding audio/video tracks quickly while connected to room #90
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Replaced
LocalMedia
class with Track factories forLocalVideoTrack
andLocalAudioTrack
Working with LocalVideoTrack
and LocalAudioTrack
before 1.0.0-beta17
1// Create LocalMedia2LocalMedia localMedia = LocalMedia.create(context);3LocalVideoTrack localVideoTrack = localMedia.addVideoTrack(true, videoCapturer);4LocalAudioTrack localAudioTrack = localMedia.addAudioTrack(true);56...78// Destroy LocalMedia to free native memory resources9localMedia.release();
Working with LocalVideoTrack
and LocalAudioTrack
now
1// Create Tracks2LocalVideoTrack localVideoTrack = LocalVideoTrack.create(context, true, videoCapturer);3LocalAudioTrack localAudioTrack = LocalAudioTrack.create(context, true);45...67// Destroy Tracks to free native memory resources8localVideoTrack.release();9localAudioTrack.release();
- The
ConnectOptions.Builder
now takes aList<LocalAudioTrack>
andList<LocalVideoTrack>
instead ofLocalMedia
Providing LocalVideoTrack
and LocalAudioTrack
before 1.0.0-beta17
1LocalMedia localMedia = LocalMedia.create(context);2LocalVideoTrack localVideoTrack = localMedia.addVideoTrack(true, videoCapturer);3LocalAudioTrack localAudioTrack = localMedia.addAudioTrack(true);45ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)6.roomName(roomName)7.localMedia(localMedia)8.build();9VideoClient.connect(context, connectOptions, roomListener);
Providing LocalVideoTrack
and LocalAudioTrack
now
1List<LocalVideoTrack> localAudioTracks =2new ArrayList<LocalVideoTrack>(){{ add(localVideoTrack); }};3List<LocalAudioTrack> localVideoTracks =4new ArrayList<LocalAudioTrack>(){{ add(localAudioTrack); }};56ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)7.roomName(roomName)8.audioTracks(localAudioTracks)9.videoTracks(localVideoTracks)10.build();11VideoClient.connect(context, connectOptions, roomListener);
- Methods
getVideoTracks()
andgetAudioTracks()
moved fromLocalMedia
andMedia
toLocalParticipant
andParticipant
- Removed
Media
fromParticipant
and migratedMedia.Listener
toParticipant.Listener
.AudioTrack
andVideoTrack
events are raised with the correspondingParticipant
instance. This allows you to create tracks while connected to aRoom
without immediately adding them to the connectedRoom
- Improved hardware accelerated decoding through the use of surface textures.
- Added
textureId
andsamplingMatrix
fields toI420Frame
so implementations ofVideoRenderer
can extract YUV data from frame represented as texture. - Exposed
org.webrtc.YuvConverter
to facilitate converting a texture to an in memory YUV buffer. - Invoke
ScreenCapturer.Listener
callbacks on the threadScreenCapturer
is created on. - Fixed an issue where the ConnectivityReceiver was causing a reconnect when connecting to a
Room
for the first time occasionally leading to a 53001 erroronConnectFailure
response. Room#getParticipants
returnsList<Participant>
instead ofMap<String, Participant>
.
Bug Fixes
- On Nexus 9 device, intermittent high decoding times results in delayed video. #95
- Unsatisfied link errors for
org.webrtc.voiceengine.WebRtcAudioManager
andorg.webrtc.voiceengine.WebRtcAudioTrack
construction. #102 - VideoTrack isEnabled() returning wrong state #104
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Missing media when adding audio/video tracks quickly while connected to room #90
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Added enum
VideoFrame.RotationAngle
to ensureVideoFrame
objects are constructed with valid orientation values. - Updated
CameraCapturer
to be powered by latest WebRTC camera capturer. - Updated
CameraCapturer
to allow scheduling a picture to be taken while the capturer is not running.
Bug Fixes
- Reverted decoding from surface textures. This revert
should fix problems for custom
VideoRenderer
s receivingnull
YUV data forVideoTrack
s #93
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Missing media when adding audio/video tracks quickly while connected to room #90
- On Nexus 9 device, intermittent high decoding times results in delayed video. #95
- Unsatisfied link errors for
org.webrtc.voiceengine.WebRtcAudioManager
andorg.webrtc.voiceengine.WebRtcAudioTrack
construction. #102 - VideoTrack isEnabled() returning wrong state #104
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Upgraded to WebRTC 57.
- Renaming
VideoClient
class toVideo
.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Missing media when adding audio/video tracks quickly while connected to room #90
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Simplified internal data structures that populate
StatsReport
.
Bug Fixes
- Fixed teardown crash that occurred in component that fetches ice servers.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Missing media when adding audio/video tracks quickly while connected to room #90
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- 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.
Bug Fixes
- Fixed a regression in 1.0.0-beta12 where a track added event was not raised when the trackId was reused. #83
- Fixed crash in
Room#disconnect
when releasingParticipant
media - Resolved memory corruption issues which could occur in multi-party scenarios.
- Fixed a crash which could occur in signaling stack
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Missing media when adding audio/video tracks quickly while connected to room #90
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Made
VideoClient
an abstract class. - 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
TwilioException
will now carry a numeric code belonging to one of these ranges, an error message, and an optional error explanation. - Implemented a policy for applying
VideoConstraints
. Adding aLocalVideoTrack
with no constraints, results inLocalMedia
applying a set of default constraints based on the closest supportedVideoFormat
to 640x480 at 30 FPS. Adding aLocalVideoTrack
with custom constraints, results inLocalMedia
checking if the constraints are compatible with the givenVideoCapturer
before applying. If the constraints are not compatibleLocalMedia
applies default constraints. #68
Bug Fixes
- Fixed echo cancellation bug for Nexus 6P #65.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Missing media when adding audio/video tracks quickly while connected to room #90
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Moved
connect
from instance method to static method onVideoClient
class. Calling the new staticconnect
method requires aContext
in addition toConnectOptions
and aRoom.Listener
.VideoClient
is no longer an object that can be instantiated and an instance is no longer required to connect to aRoom
. - Moved access token parameter from
VideoClient
constructor toConnectOptions.Builder
constructor.
Connecting to a Room
before 1.0.0-beta11
1// Create VideoClient2VideoClient videoClient = new VideoClient(context, accessToken);3ConnectOptions connectOptions = new ConnectOptions.Builder()4.roomName(roomName)5.localMedia(localMedia)6.build();7videoClient.connect(connectOptions, roomListener);
Connecting to a Room
with static connect
1ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)2.roomName(roomName)3.localMedia(localMedia)4.build();5VideoClient.connect(context, connectOptions, roomListener);
Bug Fixes
- Fixed crash when disconnecting from a
Room
on HTC 10. - Fixed crash caused by removing a track before calling
Room#disconnect
. - Use a certificate bundle to validate SSL certificates on the signaling connection.
- Improved compatibility with Group Rooms and track added and removed events.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Missing media when adding audio/video tracks quickly while connected to room #90
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
Improvements
- Network handoff, and subsequent connection renegotiation is now supported for IPv4 networks.
Bug Fixes
- Fixed a regression introduced in 1.0.0-beta8 where tokens with purely numeric identities caused a crash #64 #60
- Participant identities now support UTF-8
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- VP8 is the only supported codec #71
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Bug Fixes
- Fixed immediate disconnect when using custom ICE servers
Known issues
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec #71
- Tokens with purely numeric identities results in a crash
- Participant identities with unicode characters are not supported
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Features
- Added an
isRecording
method toRoom
, and callbacks toRoomListener
. Please note that recording is only available in our Group Rooms developer preview.isRecording
will always returnfalse
in a P2P Room.
Bug Fixes
- Fixed camera freeze when using
CameraCapturer#updateCameraParameters
API #54 - Fixed crash when caused by calling
getStats()
immediately after disconnecting fromRoom
- Fixed heap corruption on HTC 10
- Fixed memory leaks parsing signaling messages
- Attempt ICE restarts when a PeerConnection fails
Known issues
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec #71
- Tokens with purely numeric identities results in a crash
- Participant identities with unicode characters are not supported
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Improvements
- Clarified documentation for
LocalMedia#addAudioTrack
enabled parameter
Bug Fixes
- Fixed crash loading library on some devices. #53
Known issues
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec #71
- Disconnecting from a
Room
immediately after callinggetStats()
results in a crash. - Participant identities with unicode characters are not supported
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Bug Fixes
- Fixed black frames being rendered after device is rotated.
- Fixed crash in
EglBaseProvider
.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec #71
- Disconnecting from a
Room
immediately after callinggetStats()
results in a crash. - Native library fails to load on some devices. #53
- Participant identities with unicode characters are not supported
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
New features
- Upgraded to WebRTC 55.
- Upgraded to NDK r12b.
- Improved quickstart README.
- Added a
getStats()
method toRoom
that builds aStatsReport
with metrics for all the audio and video tracks being shared to aRoom
. - Improved hardware accelerated decoding through the use of surface textures.
- Standardized error messages and codes for a
Room
. - Changed
VideoException
toTwilioException
.
Bug Fixes
- Fixed picture orientation bug for
takePicture
. PictureListener
callbacks are invoked on the calling thread oftakePicture
.- Reduced previously high decoding times for Nexus 9.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec #71
- Disconnecting from a
Room
immediately after callinggetStats()
results in a crash. - Participant identities with unicode characters are not supported
- Missing YUV data when adding a custom
VideoRenderer
toVideoTrack
#93 - The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
New features
- Added new API to
CameraCapturer
for taking a picture. - Quickstart has been updated to demonstrate the use of APK splits to reduce APK size.
Known issues
- IPv6 is not fully supported.
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec #71
- On Nexus 9 device, intermittent high decoding times results in delayed video.
- Participant identities with unicode characters are not supported
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
New features
- Added new API to
CameraCapturer
for providing customCamera.Parameters
. - Added
isScreencast()
method toVideoCapturer
. This indicates if a capturer is providing screen content and affects any scaling attempts made while media is flowing.
Bug fixes
- Fixed crashes when RECORD_AUDIO and CAMERA permission are not granted.
LocalMedia
will now returnnull
when attempting to add aLocalAudioTrack
without RECORD_AUDIO permission.CameraCapturer
will log an error and provide an error code via a newCameraCapturer.Listener
when trying to capture video without CAMERA permission.
Known issues
- IPv6 is not fully supported
- Network handoff, and subsequent connection renegotiation is not supported
- VP8 is the only supported codec #71
- Participant identities with unicode characters are not supported
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
New features
- Removed dependency on
AccessManager
inVideoClient
constructor. Only a context and access token are required to create aVideoClient
. - Added an
updateToken
method toVideoClient
that allows for an access token to be updated in case it has expired
Bug fixes
- Fixed crashes on x86 and x86_64 devices
Known issues
- IPv6 is not fully supported
- Network handoff, and subsequent connection renegotiation is not supported
- VP8 is the only supported codec #71
- Participant identities with unicode characters are not supported
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
New features
- Added preliminary support for network handover while connected to a Room
Bug fixes
- Provide a
release()
method on theI420Frame
object allowing developers to free native memory once they are done using the frame when implementing their own custom renderers
Known issues
- IPv6 is not fully supported
- Network handoff, and subsequent connection renegotiation is not supported
- VP8 is the only supported codec #71
- Using x86 or x86_64 devices results in a crash
- Participant identities with unicode characters are not supported
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
New features
- Added support for AudioOptions
- Upgraded to Android Nougat from Marshmallow
Known issues
- IPv6 is not fully supported
- Network handoff, and subsequent connection renegotiation is not supported
- Resource leak when implementing custom
VideoRenderer
- VP8 is the only supported codec #71
- Using x86 or x86_64 devices results in a crash
- Participant identities with unicode characters are not supported
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
New features
- Adopting Room based communications model. The invite model has been completely removed
Bug fixes
- First developer preview release
Known issues
- IPv6 is not fully supported
- Network handoff, and subsequent connection renegotiation is not supported
- Resource leak when implementing custom
VideoRenderer
- VP8 is the only supported codec #71
- Using x86 or x86_64 devices results in a crash
- Participant identities with unicode characters are not supported
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377