Releases: GetStream/stream-video-unity
Releases · GetStream/stream-video-unity
Release list
0.11.0
Improvements
- Remote video subscriptions are now more reliable when participants join a call at different times — the SDK waits until a participant is actually publishing video before requesting their stream, and automatically re-subscribes when they start publishing
- Improved handling of large calls where remote media can arrive before full participant information is available — tracks are held and matched once the participant is known
- Subscriber connection setup is now serialized, preventing overlapping negotiations from interfering with each other
Bug Fixes
- Fixed remote video not appearing when a participant starts publishing their camera after others have already joined the call
- Fixed subscription changes being lost when made while a previous subscription request was still in progress
- Fixed remote video tracks being dropped when they arrived before the participant's track identifier was available
- Fixed ICE restart not being applied to the connection that receives remote media, which could leave video stuck after a network recovery
- Fixed incorrect parsing of remote track identifiers in edge cases that could prevent video from binding to the right participant
- Fixed occasional crash when collecting WebRTC call statistics
- Fixed Unity console warnings when reading camera rotation before the camera has finished initializing
0.9.0
Reconnection Flow
- The SDK now automatically handles reconnection when the connection to the video server is lost during an active call. The reconnection uses a multi-strategy approach:
- Fast Reconnect — attempts to quickly re-establish the connection while preserving the existing WebRTC connections. This minimizes disruption and allows the call to resume almost instantly with audio and video tracks automatically restored.
- Full Rejoin — if Fast Reconnect fails (after multiple attempts or a timeout deadline), the SDK falls back to a full rejoin — creating new WebRTC connections and re-publishing all tracks automatically.
- The SDK starts with Fast Reconnect and automatically escalates to Full Rejoin when needed. Previously published tracks and subscriptions are restored automatically after a successful reconnect.
- When the device goes back online (e.g., after toggling airplane mode or losing Wi-Fi), the SDK automatically initiates reconnection if a call was active.
Improvements
- Call capabilities are now updated in real-time when changed server-side
- Participant connection quality is now tracked and updated from the server
- Participant state changes are now properly reflected when updated server-side
- Trigger connection restart if requested by the server
- The call is now properly closed when the server signals that the call has ended
- WebSocket
Disconnectedevent is now always fired from the Unity main thread, preventing potential threading issues in event handlers
Bug Fixes
- Fixed
RenderTextureleak — creatingRenderTexturemultiple times during a single session was not releasing the old ones - Fixed
LeaveCallAsyncgetting stuck on the stats collection task - Fixed a race condition when attempting to connect while the underlying WebSocket is already connecting
- Fixed editor errors when destroying audio containers in edit mode
0.8.22
- Added
participant.IsSpeakingChangedandparticipant.AudioLevelChangedevents to notify when the participant starts/stops speaking or when the volume changes
0.8.21
- Added an option to mute an audio track locally. This mute is applied only to the current audio track on the local device. Note that a new audio track instance is created each time the same user leaves and rejoins the call. Therefore, it’s up to the integrator to cache the mute state and reapply it whenever the participant joins and adds an audio track. An example of caching can be found in this PR: #203
0.8.20
- Introduce
Client.SetAndroidAudioUsageModeto allow setting Android audio mode (media or voice communication) - Add
NativeAudioDeviceManager.GetAudioRoute()to easily inspect current audio route on Android for debug purposes
0.8.19
- Fix for this crash in
unity::webrtc::VideoFrameAdapter::ToI420 - Potential fix for audio delay after pausing the app
- Fix SFU WebSocket reconnecting when Coordinator Websocket connection was lost
- Temporarily disable the
IStreamAudioConfig.EnableDtx- this was breaking the audio
0.8.18
- Force hardware AEC in calls
- Potential fix for audio delay after previously pausing/resuming the audio
0.8.17
- Recompiled the native Android library with NDK 28 to fix missing 16KB alignment requirement for Android builds
0.8.15
- Add support for cancellation tokens. GetCallAsync/JoinCallAsync/ConnectUserAsync operations can now be cancelled via CancellationToken
- call.LeaveAsync will cancel any previous in-progress join operation
- Fixed WS reconnection issue
- Improved WebSocket disconnection handling
- Added an additional callback when the video server had disconnected.
0.8.16
- from now on, each participant needs to explicitly set which tracks of other participants he wants to request by calling:
participant.SetIncomingVideoEnabled. This needs to be set for allcall.Participantswhen joining the call and also in reaction tocall.ParticipantJoinedevent. Previously, the SDK was auto-subscribing to every joined participants but there's a server limit of 40 subscriptions. Audio subscriptions have no limit, but can also be controlled.
participant.SetIncomingVideoEnabled- request receiving video for this participant
participant.SetIncomingAudioEnabled- request receiving audio for this participant - A typical pattern is to control the video request based on the rendering state of the UI. So the video should only be requested for participants who are currently rendered on screen. The rendering resolution should be passed to
participant.UpdateRequestedVideoResolutionto request video resolution matching the rendered resolution.