Release Notes for LiveSwitch Server v1.19
1.19.3.51543
Release date: May 23, 2024
Client SDK
Improvements
- [LS1-1742] Added
changeAudioMediaStream
andchangeVideoMediaStream
toLocalMedia
in the JavaScript SDK for changing the MediaStream. - [LS1-1760] Updated SCTP Data Stream timeout error message to indicate the length of the timeout.
- [LS1-1764] Added
setStaticJitterBufferSize
andgetStaticJitterBufferSize
toAudioStream
. This can be used for setting the static Jitter Buffer size in milliseconds. This is only supported for Media-Over-WebSockets connections in the JavaScript SDK.
Bug Fixes
- [LS1-1725] Fixed a bug where Media-over-WebSockets connections were failing to connect when using mutliple
Client
instances simultaneously. - [LS1-1730], [LS1-1738], [LS1-1746], [LS1-1767] Performance improvements to Media-over-WebSockets in the JavaScript SDK. Decreased CPU and memory usage, and fixed a memory leak.
- [LS1-1752] Improved performance of Android
Camera2Source
to decrease memory usage, particularly on low end Android devices. - [LS1-1753] Improved memory handling.
- [LS1-1754] Fixed a bug when a MediaStream was stopped outside of the SDK when using Media-over-WebSockets.
- [LS1-1781] Fixed a bug with Media-over-WebSockets connections where received audio could be higher pitched for the first few seconds of a connection.
- [LS1-1790] Fixed a bug causing a crash in some circumstances when a connection was shutting down.
Media Server
Improvements
- [LS1-1760] Update SCTP Data Stream timout error message to indicate the length of the timeout.
Bug Fixes
- [LS1-1773] Fixed a bug with cluster connection recovery when a client connection would fail. This issue could cause increased CPU usage.
- [LS1-1791] Fixed a bug on the Media Server where it would become deadlocked during signalling with the Gateway.
1.19.2.47139
Release date: April 2, 2024
Client SDK
Breaking Changes
- [LS1-1474] (Android SDK) Deprecated constructor
AudioRecordSource2(AudioConfig)
. Please useAudioRecordSource2(Context, AudioConfig)
instead. See Android Audio Device Management for details.
Improvements
- [LS1-1193] (Android SDK) Exposed
AudioManagerUtility
for improved audio device selection handling. See Android Audio Device Management for details. - [LS1-1711] Included
FM.LiveSwitch.Android.LayoutManager
andFM.LiveSwitch.Cocoa.LayoutManager
in the MAUI Client SDK, easing migration for existing Xamarin applications. - [LS1-1722] Improved performance of JavaScript SDK when using audio in Media-over-WebSockets scenarios.
Bug Fixes
- [LS1-1692] Fixed an issue where muting audio or video on a
RemoteMedia
object failed when theSfuDownstreamConnection
was sending Media-over-WebSockets. - [LS1-1694] Fixed an issue preventing running native SDK on older Android versions.
- [LS1-1698] Fixed a crash that occurred during the initialization of the connection when muting was attempted.
- [LS1-1721] Fixed an issue where the promise returned from
Client.SendMessage
did not resolve when the Client was unregistered. - [LS1-1734] Fixed an issue where Safari users were unable to hear remote peers when using Media-over-WebSockets.
Media Server
Bug Fixes
- [LS1-1690] Fixed an issue where Connection Updates sent immediately on connection establishment were sometimes discarded by the Media Server.
- [LS1-1717] Fixed an issue where a MediaServer could send CPU/memory usage messages to the Gateway with empty values.
WebSocket Media Server
Bug Fixes
- [LS1-1701] Fixed an issue where the WebSocket Media Server attempted to bind to port 0 instead of the default port (7001) if the port configured in the deployment configuration was set to 0.
1.19.1.44695
Release date: February 28, 2024
Client SDK
Improvements
- [LS1-1478] Added a guard preventing updating a connection that is Failing/Failed/Closing/Closed state. If attempting to update such Connection, a related Promise will be rejected and an error will be displayed.
Bug Fixes
- [LS1-1617] Alleviated memory leak on connection shutdown for macOS and iOS.
- [LS1-1671] Fixed a bug where single channel (mono) audio streams were not supported for Media-over-WebSockets for .NET clients.
- [LS1-1674] Fixed a bug causing a null reference exception in Signalling client on Client shut down.
- [LS1-1678] Fixed a crash that occurred under some conditions during iOS and macOS-based connection shutdown.
- [LS1-1688] Added an explicit error on Firefox indicating that Media-over-Websockets protocol is not yet available for Firefox web clients.
Media Server
Improvements
- [LS1-1672] Fixed an issue that caused long connection times if the video was initialized but not started before opening a connection.
- [LS1-1686] Fixed an issue that resulted in a Media Server no longer accepting connections in some cases.
Bug Fixes
- [LS1-1447] Updated SDK to reject promise when MediaIntent send fails
- [LS1-1657] Connections now have a grace period after the Gateways recover from a Redis outage before they are terminated due to idle timeout.
- [LS1-1671] Fixed a bug where single channel (mono) audio streams were not supported for Media-over-WebSockets for .NET clients.
1.19.0.43184
Release date: February 7, 2024
Media-over-WebSockets
New Features
- Introduced a new feature allowing client applications to stream media payload over WebSocket connections to the WebRTC conferences.
- Exposed
Channel.CreateSfuUpstreamConnection(AudioStream, VideoStream, bool)
,Channel.CreateSfuDownstreamConnection(AudioStream, VideoStream, bool)
where the boolean indicates whether to use Media-over-WebSockets (as opposed to WebRTC). - Exposed
RtcLocalMedia.PacketizerDisabled
. This property gets or sets a value indicating whether the packetizer is disabled. WebRTC media requires the RTP packetizer so the value must be false. Media-over-WebSockets must not use the RTP packetizer, so the value must be true. If the packetizer is not required, this value must be set in the constructor. - Exposed
RtcRemoteMedia.DepacketizerDisabled
. This property gets or sets a value indicating whether the depacketizer is disabled. WebRTC media requires the RTP depacketizer so the value must be false. Media-over-WebSockets must not use the RTP depacketizer, so the value must be true. If the depacketizer is not required, this value must be set in the constructor. - Exposed new error types:
WebSocketMediaConnectionsNotAllowed
- Indicates that the WebSocket Media Connections are not allowed or unavailable for this application or deployment.WebSocketMediaServerToMediaServerError
- Indicates that the WebSocket Media Server encountered a problem connecting to the Media Server over a WebRTC connection.WebSocketMediaClientFailure
- Indicates that an error occurred while communicating with a WebSocket Media Server over a service connection.WebSocketMediaServerRejectedConnectionTerminally
- Indicates that the WebSocket Media Server rejected the connection due to the capacity policy. The client should not retry.
- WebSocket Media Server - Created a new service entitled “WebSocket Media Server“ that receives media over WebSocket connections and sends it to a WebRTC-based Media Server. The service also receives WebRTC media from a Media Server and sends the media over WebSocket connections to end clients.
- Gateway and WebSocket Media Server - Exposed new Availability thresholds via REST API and environment variables:
WssCpuThreshold
- Indicates the CPU percentage used to determine if a WebSocket Media Server is overcapacity.WssMemoryThreshold
- Indicates the memory usage (in bytes) used to determine if a WebSocket Media Server is over capacity.WssConnectionsPerCpuThreshold
- Indicates the threshold of the number of clients connected over WebSockets per CPU to determine if a WebSocket Media Server is over capacity. Note, that this is not the number of media connections, but rather the number of clients that may send and receive multiple SFU-style connections. Currently set to 4 by default.WssMediaConnectionsPerClientThreshold
- Indicates the threshold of the number of media connections per a WebSocket client to determine if a client is over capacity. No more than this number of media connections will be allowed to be handled by a WebSocket connection serving this client. Unset by default. Currently, recommended to be set to 10. The application layer should restrict the number of connections further for mobile devices.
Client SDK
Bug Fixes
- [LS1-1630] Fixed a regression in JavaScript example where Chrome tab audio was not shared during screen-share with alert
“Could not change audio device. Invalid state“
. - [LS1-1606] Fixed a regression in JavaScript example where Firefox was displaying an alert
“Could not change audio device. getDisplayMedia requires transient activation from a user gesture“
when attempting to screen share. Chrome was displaying screen share picker twice.
Example
Bug Fixes
- [LS1-1627] Fixed a warning in the .NET example related to the video view when closing an audio only connection.
Gateway
New Features
- [LS1-1390] Added support for 4096-bit license keys required in certain FIPS-based environments.
Server/Cloud
Improvements
- [LS1-1647] Updated the response returned for health checks, if enabled, to provide more details on what service, if any, is unhealthy.
- [LS1-1645] Updated to the latest version of the StackExchange.Redis library which contains numerous bug fixes and improvements.
- [LS1-1635] Clarified the service startup failure message.
Bug Fixes
- [LS1-1624] Fixed a bug where intended video resolution and framerate were incorrectly passed to the media server under certain conditions, resulting in the invalid allocation of server resources.