Release Notes for LiveSwitch Server v1.14
1.14.6.13358
Release date: April 06, 2022
Client SDK
Bug Fixes
- [LS1-206] Applications using Typescript 4.4 failed to build. Builds are successful after adding support for Typescript 4.4 in the JavaScript SDK.
Dashboard
Bug Fixes
- [LS1-649] Server console failed to handle the 404 Page Not Found error when visiting invalid Dashboard pages. The Server console now displays the 404 Page Not Found page on invalid Dashboard pages.
Other
Bug Fixes
- [LS1-705] In Media Servers and Gateways, the "Refreshing webhooks for Application ID" logs produced a higher number of log entries when set to the Info log level. Updated the log level to Verbose to lower the number of log entries.
1.14.5.12846
Release date: March 28, 2022
Media Server
Improvements
- [LS1-674] A security vulnerability discovered in older versions of OpenSSL necessitated updating the OpenSSL library used by the Media Server to version 1.1.1n. It is highly recommended that you upgrade to this latest version. For more information on the vulnerability, see OpenSSL Security Advisory.
1.14.4.12809
Release date: March 25, 2022
Client SDK
Bug Fixes
- [LS1-300] Fixed a bug in Camera2Source where on some Android devices the source raised frames at half of the desired rate.
- [LS1-546] Fixed a bug in the JavaScript SDK where in Peer-to-Peer connection the stream disconnected and reconnected while updating bitrate.
- [LS1-547] Fixed a bug in the TypeScript Web SDK where the connections failed if the
setPreferredCodecs
method was called before creating an SFU, an MCU, or a P2P connection.
Media Server
Bug Fixes
- [LS1-464] Fixed a bug which prevented some connections from closing and related recording files from being made available following a session.
Examples
Bug Fixes
- [LS1-333] In the web example, when sharing a specific tab in the Chrome browser, any app that stops local media and then restarts it no longer causes the call to fail.
- [LS1-659] In the macOS example, participants failed to join sessions with IDs starting with a 0 (zero) because the text field format type was set to accept numbers. Participants can successfully join sessions with IDs starting with a 0 as the numeric format type from the text field has been removed.
1.14.3.9675
Release date: March 5, 2022
Client SDK
Bug Fixes
- [LS1-371] Fixed a memory leak when network connectivity was lost in iOS and macOS native clients.
- [LS1-459] Fixed a bug where a JavaScript client was not respecting the maximum bitrate requests from the server.
- [LS1-492] Fixed a bug in Android AudioTrackSink where some audio frames were not rendered properly, resulting in crackling or no sound.
- [LS-7278] Fixed a bug in OpenH264 video encoding for high-bitrate streams over 1 Mbps. This bug caused remote media decoded by browsers to contain artifacts and remote media decoded by native platforms to generate excessive picture loss indications that degraded video performance. This bug particularly affected server-side simulcast and transcoding involving H.264 codecs.
- [LS-7326] Fixed a bug that prevented Xamarin.Forms iOS applications from rendering video streams after upgrading Xamarin iOS to version 15.2.0.17.
Unity Client SDK
Bug Fixes
- [LS-6225] Fixed a bug that prevented proper Acoustic Echo Cancellation (AEC) for Unity on Android.
- [LS-6261] Fixed a bug in the Android build of the Unity example that prevented Acoustic Echo Cancellation (AEC).
- [LS-6322] Fixed a bug that prevented audio playback on Unity after the app was paused, that's, moved to the background.
- [LS-7002] Fixed a bug that caused buzzing in audio for Unity Android and Xamarin Android, which require upsampled audio after Acoustic Echo Cancellation (AEC).
- [LS-7088] Fixed a bug in the Unity SDK that delayed video playback when the app was opened after it was paused.
- [LS-7130] Fixed a bug that led to Unity lip-syncing issues on the remote end.
Media Server
Bug Fixes
- [LS1-141] Fixed a bug that caused video flickering if remote audio or video was turned off in Selective Forwarding Unit (SFU) conferences with two participants.
Examples
Bug Fixes
- [LS1-166] Fixed a bug in the iOS example where the app would freeze if a user tried to leave a channel immediately after joining.
- [LS1-174] Fixed a bug in the iOS example where AVAudioSession activated multiple times and caused remote clients to hear white noise when an iOS client joined.
- [LS1-360] Fixed a bug in the Web Layout Manager example where the layout manager displayed a black screen.
1.14.2.2993
Release date: December 14, 2021
Client SDK
Bug fixes
- [LS1-284] Disabled H.264 on Safari to work around a browser issue that resulted in an iOS Safari tab crash if SFU connections were attempted.
1.14.1.2388
Release date: December 10, 2021
Client SDK
New features
- [LS1-1] LiveSwitch now supports H.264 video streaming on Safari version 15 or newer.
Bug fixes
- [LS1-235] Fixed
Cast to smaller integer type 'int' from 'id'
error when building applications using the Cocoa SDK on Xcode 13. - [LS1-304] Fixed an issue that prevented participants on Safari 15 from sending media on peer-to-peer connections when they were the first to join a conference. SFU and MCU connections were not affected.
- [LS1-339] Fixed a bug where the
onAudioLevel
event was always returning a level of0
on iOS and macOS.
Gateway
New features
- [LS1-317] Added new configuration options that control what channel settings can be updated with the REST API or the SDK. These configuration options are:
allowedChannelUpdates
inDeploymentConfig
.allowedChannelUpdatesOverride
inApplicationConfig
andChannelConfig
.
These settings have
mute
andrecord
boolean values. By default,mute
andrecord
aretrue
forallowedChannelUpdates
. ForallowedChannelUpdatesOverride
,mute
andrecord
are set to null by default.DeploymentConfig
sets the default for all applications, but can be overridden by Application or Channel settings. These options can only be configured using the v2 REST API.
Bug fixes
- [LS1-180] Fixed a bug where External Redirects would cause REST API POST methods to return a 404 error.
- [LS1-322] Fixed a bug that caused the Gateway to fail during startup if there was an error while querying for the public IP address of the server.
Media Server
Bug fixes
- [LS1-144] Fixed a bug that caused connections to fail if connectivity check STUN requests were processed by the Media Server before remote candidates were received.
- [LS1-167] Fixed a bug where large gaps in the audio stream were incorrectly being identified as a reset, resulting in the audio recordings not including these gaps.
Recording
Bug fixes
- [LS1-175] Fixed a bug that caused recordings with multiple participants or transitions to not sync correctly with audio.
- [LS1-327] Fixed a bug where the server would miscalculate a recording's video delay causing it to not sync correctly with audio.
1.14.0.64462
Release date: November 18, 2021
Client SDK
New features
- [LS-6284] New
AudioRecordSource2
class has been added to the Android SDK. It does not modify theAudioManager
modes or audio routing settings, which allows you to manage them separately. - [LS-6287] New
AudioUnmuteDisabled
andVideoUnmuteDisabled
properties inManagedConnection
. These properties indicate whether participants are allowed to unmute audio or video. - [LS-6287] New
OnAudioUnmuteDisabled
,OnAudioUnmuteEnabled
,OnVideoUnmuteDisabled
, andOnVideoUnmuteEnabled
events inManagedConnection
. These events are raised when an administrator changes whether participants are allowed to unmute audio or video. - [LS-6287] New
OnRecordingEnabled
andOnRecordingDisabled
events inManagedConnection
. These events are raised when an administrator enables or disables recording. - [LS-6298] New
ClientProtocol
andIsSip
properties inConnectionInfo
. These properties indicate when a remote client is connected via SIP. - [LS-6298] New
Protocol
andIsSip
properties inClientInfo
. These properties indicate when a remote client is connected via SIP. - [LS-6338] New
UpdateUser
,UpdateDevice
,UpdateClient
, andUpdateConnection
methods inChannel
. These methods allow clients with thecanUpdate
privilege to toggle recording, audio muted, video muted, and whether audio or video can be unmuted. - [LS-6720] Updated
AudioRecordSource
in the Xamarin.Android SDK to enable hardware noise suppression and automatic gain control by default. - [LS-6733] New
OnSizeChange
event inVideoTrack
. This event is raised when the video's frame size changes. - [LS-6733] New
OnVideoSizeChange
event inLocalMedia
andRemoteMedia
. This event is raised when the video's frame size changes. - [LS-6921] New
DefaultStatsEventInterval
static property inManagedConnection
.This property configures the default value forStatsEventInterval
. - [LS-6921] New
DefaultStatsReportInterval
static property inManagedConnection
. This property configures the default value forStatsReportInterval
. - [LS-6921] New
MediaQuality
property inManagedConnection
. This property indicates the current connection's media quality. - [LS-6921] New
NetworkQuality
property inManagedConnection
. This property indicates the current connection's network quality. - [LS-6921] New
OnMediaQuality
event inManagedConnection
. This event is raised when the connection's media quality is estimated. - [LS-6921] New
OnNetworkQuality
event inManagedConnection
. This event is raised when the connection's network quality is estimated. - [LS-6921] New
OnStats
event inManagedConnection
. This event is raised when the current connection's statistics are gathered. - [LS-6921] New
StatsEventInterval
property inManagedConnection
. This property configures how frequently connection statistics are gathered. - [LS-6925] New
AudioLevelInterval
property inMedia
. This property configures how frequentlyOnAudioLevel
is raised. - [LS-6925] New
LevelInterval
property inAudioTrack
. This property configures how frequentlyOnLevel
is raised. - [LS-6940] New
GraphicsCaptureSessionSource
class for UWP screen capture. - [LS-6961] New
Kick
,KickUser
,KickDevice
, andKickConnection
methods inChannel
. These methods allow clients with thecanKick
privilege to kick clients and connections based on channel ID, user ID, device ID, or connection ID. - [LS-7009] New
OnAudioMuted
,OnAudioUnmuted
,OnVideoMuted
, andOnVideoUnmuted
events inLocalMedia
. These events are raised when the local media track sources are muted or unmuted. - [LS-7009] New
OnMuted
andOnUnmuted
events inMediaSource
. These events are raised when the media source is muted or unmuted. - [LS-7009] New
OnMuted
andOnUnmuted
events inMediaTrack
. These events are raised when the media track source is muted or unmuted. - [LS-7065] New
LocalAudioUnmuteDisabled
andLocalVideoUnmuteDisabled
properties inConnectionInfo
. These properties indicate whether a connection is restricted from unmuting. - [LS-7205] You can now exclude a user, device, client, connection, or all four from the record, mute or unmute, and enable or disable unmute operations.
Bug fixes
- [LS-5141] Fixed a bug that prevented clients from using NuGet packages to develop .NET Framework LiveSwitch client applications.
- [LS-5522] Fixed a bug in TypeScript SDK where
MaxSendBitrate
andMaxReceiveBitrate
were not limiting bitrates if they were called before a media stream was attached to a connection or if the connection was not in the Connected state. - [LS-6067] Fixed a bug in the
AudioMixer
class in the CSharp, Java, and Android client SDKs that caused choppy inbound audio. - [LS-6211] Fixed a bug that allowed CPU-limited and network-limited clients to send unlimited NACK messages which caused network congestion.
- [LS-6229] Fixed a bug in the Xamarin Android SDK class
AudioTrackSink
where audio output could sound choppy on certain devices or codecs. - [LS-6273] Fixed a bug that caused a DTMF tone to not end if the duration of the tone was not a multiple of the audio frame length.
- [LS-6281] Fixed a bug in the
AudioMixer
class in the CSharp, Java, and Android client SDKs that caused audio clipping. - [LS-6282] Fixed the performance issue of the
Camera2Source
class in Android so that frames are quickly processed at high resolutions. - [LS-6283] Fixed a bug in the Android SDK class
AudioTrackSink
where audio output could sound choppy on certain devices. - [LS-6315]
Channel.OnRemoteUpstreamConnectionUpdate
now returns the correct property values for the old connection information. - [LS-6322] Fixed a bug that caused audio delays after pausing and playing audio in the Unity Editor and Unity App.
- [LS-6724] Fixed deprecation warnings related to
ScriptProcessorNode
in the JavaScript SDK. - [LS-6724] Improved performance of audio level calculations in JavaScript.
- [LS-6917] Fixed a JavaScript bug where a
<video>
element on a non-responsive page would fail to play. - [LS-6925] Improved performance of audio level calculations in all SDKs.
- [LS-6929] Fixed a bug in the Android SDK where
Camera2Source
would crash applications after multiple permission request dialogues are accepted in quick succession. - [LS-6961] Fixed a 10-second delay in the
Channel.OnRemoteUpstreamConnectionClosed
event when kicking an upstream connection. - [LS-6998] Extended the workaround from LS-6734 to Chrome 93. Works around a bug in Chrome 90 to 93 where video jitter in
getStats
is reported as 90 times higher than it actually is. - [LS-7128] Fixed a bug in the TypeScript SDK where
addOnIceConnectionStateChange
did not add aonIceConnectionStateChange
handler. - [LS-7271] Fixed a bug in the TypeScript SDK where setting a value for
MaxSendBitrate
while using Server Side Simulcast caused incorrect downstream encoding bitrates.
Breaking Changes
- [LS-6283] The Android SDK class
AudioTrackSink
has been updated to use a newer version of theandroid.media.AudioTrack constructor
. As a result,setAudioStreamType
is no longer supported and insteadsetAudioUsage
andsetAudioContentType
can be used. - [LS-6340] The
Admin:Disabled
andSync:Disabled
environment variables have been deprecated and will be removed in a future release. TheAdmin:Mode
andSync:Mode
environment variables should be used in their place. - [LS-6921] New
StatsReportInterval
property inManagedConnection
. This property configures how frequently connection statistics are reported to the Gateway. This property replacesStatsInterval
, which is now deprecated. - [LS-7096]
LogLevel
has been deprecated. Log providers now use the value ofLog.DefaultLogLevel
as their default log level.
Gateway
New features
- [LS-6203] The default recording strategy for new deployments is now
FlatDirectory
. - [LS-6268] The
publicIPAddress
of a service that is registered with the Gateway is now returned when you query the Media Server, Gateway, and SIP Connector. - [LS-6269] New REST API,
api/v1/applications/{applicationId}/environment
, available to gather all information about all connected services. - [LS-6276] Local audio and video for individual participants can now be muted and unmuted using the REST API.
- [LS-6287] Unmuting local audio and video for individual participants can now be disabled using the REST API.
- [LS-6320] You can now connect to LiveSwitch Gateway over IPv6.
- [LS-6340] New
Admin:Mode
andSync:Mode
Gateway environment variables (also accessible through JSON configuration) disable an endpoint or make an endpoint read-only. - [LS-7000] New REST APIs,
api/v1/applications/{applicationId}/channelRecordings/count
andapi/v1/applications/{applicationId}/channels/{channelId}/channelRecordings/count
, to request a total number of recordings.
Improvements
- [LS-2753] Removed weak ciphers that the Gateway TLS configuration uses when it is running on Linux.
Bug fixes
- [LS-7220] Fixed a bug in the Gateway where kicking a SIP participant by connection ID would fail to clean up the associated client record.
Media Server
New features
- [LS-5500] You can now add custom audio codecs for media processing.
- [LS-6144] Arrays of external public IP addresses and public hostnames are now supported in Media Server configuration files.
Bug fixes
- [LS-5864] STUN server URIs are no longer part of the ICE server URI collection if a TURN/UDP server URI is present.
- [LS-5864] TURN/TCP server URIs are no longer part of the ICE server URI collection if a TURNS server URI is present.
- [LS-6339] TURN servers now respond with a 508 (Insufficient Capacity) error if an available socket cannot be found for an allocation request.
- [LS-6718] Fixed a bug where Media Servers with both IPv4 and IPv6 public IP addresses available could not communicate with clients that did not support ICE. This bug mostly affected SIP clients.
- [LS-7085] Fixed a bug that caused a video stream using Server Simulcast to freeze when downgrading from the original encoding to a lower encoding.
- [LS-7141] Fixed a bug that caused
Connection.Update
webhooks to not trigger. - [LS-7194] Fixed a bug that caused Media Server connections to fail when an unrelated Media Server was stopped.
- [LS-7258] Fixed a bug where upstream connections failed if server-side simulcast was enabled and the max send bitrate was set to a low value.
- [LS-7273] Fixed a bug preventing SFU audio and video downstreams from synchronizing with each other.
ICE and Networking
Bug fixes
- [LS-6154] Fixed a bug that shut down connectivity 15 seconds after being established under certain network conditions.
- [LS-6154] Fixed a bug that occurred under certain network conditions where connectivity was established over a relay connection even when a more direct route was available. This resulted in inefficient routing.
- [LS-7249] Fixed a bug where occasional crackles can be heard depending on network condition.
Webhooks
New features
- [LS-5220] Application and Channel webhooks now include the header
X-ApplicationSignature
. The contents ofX-ApplicationSignature
are a Base64 encoded HMAC-SHA256 hash of the webhook JSON body using the Application's shared secret as the hash secret. - [LS-6918] Webhooks can now reload every 30 seconds.
- [LS-7282] Network errors that occur when reliable webhooks are sent are logged at the WARNING instead of the ERROR level unless they occur after a retry.
Dashboard
Bug fixes
- [LS-4606] Fixed a bug where users could create channels with the same pattern.
- [LS-6234] Fixed a bug that prevented users from deleting a selected Application on the Server Console�s Application list if the list was sorted. Another Application would be deleted instead.
Recording
New features
- [LS-6102] New Recording Monitor service to monitor the Media Server recordings folder for completed recordings and track them in a local database.
- [LS-6103] New Recording Mover service to move completed connection and channel recordings from the local file system to S3-compatible object storage.
- [LS-6104] New Recording Muxer service to mux completed connection recordings into a single channel recording.
- [LS-6218] When you upgrade an environment to 1.14.0, log targets with Gateways, Media Servers, and SIP Connectors enabled now have Recording Monitors, Recording Movers, and Recording Muxers enabled.
Bug fixes
- [LS-7082] Fixed a bug that prevented all three recording management services from starting after installing LiveSwitch on Windows and rebooting.
SIP Connector
New features
- [LS-6260] SIP participants can now mute and unmute themselves using a configurable DTMF tone sequence.
Bug fixes
- [LS-6702] Fixed a bug where a 200 OK response might contain an invalid Contact header with a private IP address.
Examples
New features
- [LS-7226] Upgraded the Android Material Design support library to version 1.4.0 and migrated from ViewPager to ViewPager2.
Bug fixes
- [LS-1570] Fixed a bug in the Android example where changing the orientation prevented text messages from being sent.
- [LS-6039] Fixed a bug in the examples across all platforms where the simulcast context menu did not behave consistently.
- [LS-6956] Fixed a bug in the Web example that caused Font Awesome icons to not render.
- [LS-6965] Fixed a bug in the Xamarin iOS example where selecting audio only throws a null reference exception causing the app to crash.
- [LS-6989] Fixed a bug in the Android example where the app crashes if it targets Android SDK 29 or 30 and enables screen share.
- [LS-7243] Fixed a bug in the Android LiveSwitch Chat example where the app crashed on retrying to join a session after denying runtime permissions.
- [LS-7243] Fixed a bug in the Android Icelink Chat example where the app did not allow users to leave a session after denying runtime permissions.
- [LS-7245] Fixed a bug in the Android example where the
requestLayout() improperly called
warning was given if a new request for a layout for the same view was made. - [LS-7253] Fixed a bug in the Web example where contact information was not visible on mobile devices.