All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Set starting send bitrate to 1000kbps to reduce time of low resolution at start of connection
- Add per-frame encoding time in video encoding CPU connection health policy
- Replace substr with substring
- Improve some log strings
- Avoid breaking audio input when external devices are disconnected on iOS browsers when using Web Audio by suspending and resuming the audio context in that case.
- Fixed incoming audio loss calculation when server side network adaption and redundant audio features are running together.
- Prevent DataMessage callback errors from killing a meeting
- Do not store metrics for video send stream that no longer exists after reconnection
- Send audio downstream decoder loss and jitter buffer size to backend as intended, for internal debugging
- Updated guides and doc-strings to recommend
VideoPriorityBasedPolicy
overVideoAdaptiveProbePolicy
.
- Include STUN packets in received packet reconnection check to mitigate edge cases when all attendee capabilities are 'None'
- Terminate audio RED worker before removing reference.
- Update uplink policy at codec degradation triggered by encoding health monitor.
- Added
DefaultDeviceController.suspendAudioContext
andDefaultDeviceController.resumeAudioContext
. Suspending and resuming the resusable audio context is preferable to stopping and recreating if an audio context eventually needs to be used again.
- Do not try to manually adjust SVC layers based off target resolution, as this may lead to an unnecessarily high minimum bitrate to subscribe to all remote videos. Instead rely on browser logic which drops any layers below around 135p.
- Fixed rare race conditions with simulcast + server side network adaptation on third attendee join.
- Make redundant audio worker code generation script work on Windows
- Do not drop server side network adaptation pauses that happen immediately after SDP negotiation, by pre-emptively creating a tile immediately when applications subscribes to one, and attaching the video track later.
- Add automatic codec degradation logic when CPU usage of software encoder is high or video encoding of encoder fails. This will only occur if
setVideoCodecSendPreferences
is being called by the application. - Added
groupId
toVideoTileState
for mapping metrics other then those fromgetObservableVideoMetrics
when using server side network adaptation. - Added support for Node version 22
- Avoid subscribes when simulcast is enabled but not currently sending, or when using server side network adaptation.
- Made server side network adaptation the default when creating
VideoPriorityBasedPolicy
.
- Fixed reconnections not triggering
audioVideoWasDemotedFromPrimaryMeeting
.
- Fixed packets received check on Safari 17.3 and below
- Simplified simulcast uplink policy to not unnecesarily try to compensate for uplink bandwidth estimation.
- Avoid unnecessary transceiver creation by using no-video policy for content share.
- Fixed unnecessary cropping on some camera capturers when simulcast was enabled.
- Add support for node 20 and drop support for node < 18.
- Add support for H.264 profiles besides Constrained Baseline Profile.
- Fix MeetingReadinessChecker demo by checking for audio
kind
- Fix reconnections when setting audio Attendee Capability to 'None' or 'Send' mid call. The connection health monitor will now look at all packets received on all candidate pairs instead of just audio received media packets.
- Setup passthrough streams for insertable streams case in the redundant audio worker so that passthrough streams do not get blocked on the main thread.
- Disable redundant audio for Chrome 106 and earlier to fix video decoder failure on old Chrome versions with redundant audio turned on.
- Add support for high-definition WebRTC sessions with 1080p webcam video and 4K screen share. Developers can choose video encoding bitrates up to 2.5Mbps, frame rates up to 30fps, and the codec, including new options VP9, AV1, and scalable video coding (SVC).
- Update AWS SDK version to 3.477.0
- Revert: Improve reconnection behavior on signaling disconnection mid call or during join/subscribe. This was leading to unexpected
AudioJoinedFromAnotherDevice
events in certain edge conditions. It will be re-released in a later version.
- Prevent video processing with filters from being throttled when an attendees meeting tab moves into the background.
- Do not allow redundant audio worker to enqueue any audio payloads larger than 1000 bytes to avoid permanently stopping the audio flow.
- Make uplink loss estimation more accurate so that redundant audio does not turn off prematurely.
- Save the redundant audio worker code during build time so that the worker code stays intact and is able to be loaded
- Fixed bug that prevented sending and receiving audio, video, and content share when using Simulcast and Redundant Audio at the same time
- Support sending and receiving redundant audio data to help reduce the effects of packet loss on audio quality. See README for more details.
- Send a few additional metrics to backend
- Fixed audio send failing for the rest of the meeting when writing frames larger than 1000 bytes in Chrome, which could be caused by sending redundant audio
- Allow receiving notification messages from server and print messages received to console
- Add a new meeting event,
deviceLabelTriggerFailed
, for device label trigger failures. By default, the Chime SDK for JavaScript requests access to the microphone and camera in order to retrieve device labels. The SDK will send thedeviceLabelTriggerFailed
event when either the microphone, camera or both requests fail. (Before this PR, the SDK would emitaudioInputFailed
andvideoInputFailed
events simultaneously, which could lead to confusion.) If a custom function is supplied withmeetingSession.audioVideo.setDeviceLabelTrigger
, the SDK will send this event when the custom function is not successful.
-
Resolution constraint for content share
-
Remove unused legacy TURN credentials path.
- Improve reconnection behavior on signaling disconnection mid call or during join/subscribe
- Do not display a warning message when invoking
meetingSession.audioVideo.setVideoCodecSendPreferences
prior to the start of the session.
- Remove max video bandwidth in guide.
- Added recommendations to use server side network adaptation, and clarified support on all browsers. Removed demo features and information on network adaptation configuration that is not used when server side network adaptation is used.
- Set
esModuleInterop
totrue
in tsconfig.json, and update several import statements. - Update documentation reference to chime-sdk.
- Add RTC Speak/Mic Audio Level in proto file
- Add
audioUpstreamLevel
,audioDownstreamLevel
to theClientMetricReport
- Bump protobufjs from 6.11.3 to 7.2.4.
- Fixed usage of
this
inVideoCodecCapability
constructors. - Fixed a race condition error if calling
startContentShare
thenstopContentShare
right after. - Invoke MediaStreamBrokerObservers in the next event loop tick to prevent race conditions with the browser's
RTCRtpSender.replaceTrack
API call.
- Set max bitrate to 1500kbps.
- Add resolution constraint to content share (1080p@30fps).
- Added opt-in server side network adaption enablement flag
ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption
. See this section in the guide for more details. - Content share issue with above change
- Clarify quotas for content-sharing publishing and subscriptions in API Overview.
- Fallback
majorVersion()
to-1
ifversion
isnull
inDefaultBrowserBehavior
.
- Update chime sdk messaging client version.
- Add new guide for
VideoFXProcessor
. - Add Android Chrome support for
VideoFXProcessor
.
- Add fallback value for
DefaultBrowserBehavior.browser
whendetect()
can not parse browser UserAgent.
- Send client utc offset with attendee JOIN frame over signalling channel.
- Add an unified interface (videofx processor) with new implementation for ML features, namely background blur 2.0 and background replacement 2.0. This includes improvement to the underlying model for better segmentation, better image processing algorithms to blur the background, and other miscellanies bug-fixes/features.
- Evaluate
SendingAudioFailureConnectionHealthPolicy
only after getting connected i.e. afteraudioVideoDidStart()
is called. This avoids false positive triggers ofsendingAudioFailed
at the start of a meeting session.
- Refactored various state cleanup to
AudioVideoControllerState.resetConnectionSpecificState
. - Update
supportsCanvasCapturedStreamPlayback
inDefaultBrowserBehavior
to fix background blur and replacement support check failures in iPad.
- Added flag
disablePeriodicKeyframeRequestOnContentSender
toMeetingSessionConfiguration
for applications that would like to experiment with disabling the 10 second keyframe request interval which is default on the backend.
- To support future use case of allowing users to join a meeting without the need for a microphone or empty audio stream, update
checkAudioConnectivity
logic insideDefaultMeetingReadinessChecker
accordingly, to check for audio packets received metrics usingmetricsDidReceive
observer in addition to attendee presence condition. Previously, the audio connectivity check used to implicitly test that audio was being sent out from the client and being received by the server. Now this check will include a test for attendee presence, showing that the signal connection has been established, and audio packets being received, showing that the data connection has been established.
- Fix ES2015 target builds by fixing voicefocus js file.
- Added missing state cleanup for various video components on reconnect to mitigate missing remote or local video.
- Add
destroy()
method toVoiceFocus
class. - Add
destroyVoiceFocus
method toVoiceFocusDeviceTransformer
class. - Add guide to show how to use the
destroyVoiceFocus
method in theVoiceFocusDeviceTransformer
class.
- Update documentation for
MeetingSessionStatusCode
to clarify the origin and meaning of each. Included information on use ofisTerminal
flag to determine if retry will be automatically attempted.
- Fix codec intersection logic to avoid unnecessary renegotiations.
- Add the audio output gain and frequency to the meeting readiness checker's configuration. The readiness checker uses this value to set the "Play Tone" gain and frequency.
- Add support for background filter starting from iOS 16 for major browsers Safari, Chrome, and Firefox (except on iPad).
- Add metric derived from string metric in metric report.
- Send
audioInputFailed
andvideoInputFailed
if there is error getting device labels. - Updated
DefaultVideoFrameProcessorPipeline
to clone audio tracks to the outputMediaStream
instead of dropping them. This allows more straightforward usage of the pipeline on content sharing like file playback.
- Fixed missing videos, or unnecessarily long freezes when switching simulcast streams.
- Add encoder/decoder is in hardware metric and stream dimension to signaling protocol
- Report encode/decode time and if encoder/decoder is in hardware, and add encoder/decoder name as a metric dimension
- Fix a confusing function name from
millisecondsPerSecond
toaverageTimeSpentPerSecondInMilliseconds
. - Move
requiresPlaybackLatencyHintForAudioContext
toExtendedBrowserBehavior
.
MessagingSession
reconnect loop did not break on error past reconnect deadline. Infinite reconnect loop was caused due tofirstConnectionAttemptTimestamp
not being set asstartedConnectionAttempt
was not invoked. Check #2372 for details.MessagingSession
getMessagingSessionEndpoint
call is now backwards compatible with AWS JS SDK v2.- Use a default "playback"
latencyHint
when creating theAudioContext
on Windows. Also adds asetDefaultLatencyHint
API toDefaultDeviceController
to allow for overriding. - Fix behavior of websocket disconnects before a session is connected. Session.start() promise shall fail in the scenario.
- Queue messages before a messaging session is established to avoid dropping them.
- Add support in
MessagingSession
to allow websocket connection for messaging service to select sort by for Prefetch. - Added two new meeting events:
sendingAudioFailed
to indicate a failure in sending audio packets out andsendingAudioRecovered
to indicate recovery after asendingAudioFailed
event. - Added a new
ConnectionHealthPolicy
namedSendingAudioFailureConnectionHealthPolicy
to evaluate and trigger the above events. Also, addedsendingAudioFailureSamplesToConsider
andsendingAudioFailureInitialWaitTimeMs
toConnectionHealthPolicyConfiguration
fields for configuring the new health policy. - Added a new field
consecutiveStatsWithNoAudioPacketsSent
inConnectionHealthData
for evaluating theSendingAudioFailureConnectionHealthPolicy
.
- Update package.json to include Node 18.
- Refactored
connectionHealthDidChange()
inMonitorTask
by creating a newapplyHealthPolicy()
method to reduce redundancy in the health policy evaluation. - Modified
SignalingAndMetricsConnectionMonitor
to updateconsecutiveStatsWithNoAudioPacketsSent
. - Reset
connectionHealthData
on every connect (as opposed to doing it only whensignalingClient
is not initialized). This allows us to honor the cool-down time in bothSendingAudioFailureConnectionHealthPolicy
andUnusableAudioWarningConnectionHealthPolicy
in case when the connection is failing due to an error like "no ice candidates were gathered".
- Fix
AbortError
when turning video ON in Safari. MessagingSession
reconnects with refreshed endpoint and credentials if needed.EndpointUrl
onMessagingSessionConfiguration
is deprecated as it is resolved by callinggetMessagingSessionEndpoint
internally.
- Add a new API
enableSimulcastForContentShare
to enable simulcast for content share so that content share could be shown in network constrained clients. The lower quality layer has 300 kbps max bitrate, resolution scale factor of 2, and 5 max framerate. - Add APIs
setVideoCodecSendPreferences
andsetContentShareVideoCodecPreferences
to allow configuration of codec being used to send. See the JS SDK guide for more details. - Added tracer logs to missing subscribe and unsubscribe methods.
- Added opt-in server side network adaption enablement flag
ServerSideNetworkAdaption.EnableBandwidthProbing
. See this section in the guide for more details.
- Fix issue closing a web worker in Amazon Voice Focus's inline worklet.
- Add a workaround for https://bugs.webkit.org/show_bug.cgi?id=241152 to play a paused video element in Safari.
- Removed deprecated WebRTC constraints
googCpuOveruseDetection
andgoogCombinedAudioVideoBwe
which were being removed or were already no-ops
- Bump
protobufjs
from 6.8.8 to 6.11.3. - Update
DOMBlobMock
to accommodate@types/node
changes.
- Fix issue where Amazon Voice Focus stops working after changing device while muted.
- Remove the
isChanged
flag as it breaks some old muting funtionality causing Amazon Voice Focus to stop working. - Fix issue where Amazon Voice Focus could stop working after changing the mute state of a null device or changing the device shortly after.
- Fix an issue for mute local when there is no audio input.
- Fix trucation of video subscriptions not occuring if the resubscribe was driven by
MonitorTask
. - Fix protobuf generation script for upgrade.
- Optional chain signaling client observer removal to fix issue if
audioVideo.stop()
is called beforeaudioVideo.start()
.
- Add the reserved status code AudioDisconnectAudio.
- Add support in
MessagingSession
to allow websocket connection for messaging service to enable Prefetch feature.
- Add reset function to uplink policy interface, and ignore indexes in nscale policy if the number of published videos did not change.
- Rate limited CPU warnings to at most once a minute in Voice Focus library, so that builder logs are not flooded.
- Add support for hosting meetings in US GovCloud regions.
- Add support for starting live transcription in US GovCloud regions.
- Assume SDP section is sendrecv if no direction is present. This should have no impact on media negotiation.
- Replace
startVideoInput(null)
andstartAudioInput(null)
withstopVideoInput
andstopAudioInput
for video, audio test in meeting readiness checker to stop video, audio input. - Replace the deprecated API
getRTCPeerConnectionStats
withmetricsDidReceive
in meeting readiness checker. - Prevent
realtimeUnsubscribeFromVolumeIndicator
from causing a fatal error when there are no subscriptions for theattendeeId
. - Subscribe to
audioOutputDidChange
in audio mix controller to fix the issue where the audio output is not updated before meeting start.
- Add browser support information to content share guide.
- Readd layers allocation negotiation in Chromium based browsers to avoid resubscribing to preemptively turn off simulcast streams or to switch layers. Avoid duplicate RTP header extension and changing extension id.
- Clean up the HTML video element bounded to
VideoTileState
usingunbindVideoElement
API to fix Safari memory leak. If you do not intend to clean the video element, callunbindVideoElement
API withcleanUpVideoElement
set tofalse
. Check PR#2217 for detailed information.
- Fix issue where video resolution and framerate changes when toggle video transform.
- Add
audioUpstreamRoundTripTimeMs
,audioUpstreamJitterMs
, andaudioDownstreamJitterMs
toobservableMetricSpec
. - Add
videoUpstreamRoundTripTimeMs
,videoUpstreamJitterMs
, andvideoDownstreamJitterMs
, andvideoDownstreamDelayMs
toobservableVideoMetricSpec
.
- No longer stop video stream when calling
stopLocalVideoTile
. This was added as a workaround to prevent crash in old Safari versions but no longer needed.
- Subscribe and unsubscribe to
MediaStreamBrokerObserver
inAudioVideoController
at the end of every connection and disconnection to avoid trying to replace local audio and video during connection. - Update
getMediaType
method to check the propertykind
instead ofmediaType
of aRawMetricReport
.
-
Fixed state not being reset if an
AudioVideoController
is reused afterstop
. -
Fix a bug that
remote-inbound-rtp
RTCStatsReport
andremote-outbound-rtp
RTCStatsReport
of "video"kind
are accidentally filtered. -
Fix the incorrect calculation of aggregation WebRTC metric spec (
audioSpeakerDelayMs
,decoderLoss
).
Amazon Chime SDK for JavaScript v3 is here !! 🎉🎉🎉
Amazon Chime SDK for JavaScript v3 includes major improvements for device management, WebRTC metrics, and the messaging session.
- Device management: Decouple audio and video device management from the meeting sessions. For example, a user can select their preferred devices on a video preview page and continue using the same devices to join the session. After joining the session, a user can instantly switch devices without interrupting the ongoing meeting session.
- WebRTC metrics: Publish the standardized WebRTC metrics for all supported browsers.
- Messaging session: Add support for AWS SDK for JavaScript v3 for messaging session.
- Dropping support: Deprecate Safari 12 support and Plan B in Session Description Protocol (SDP) negotiations.
Below is a list of all changes in the Chime SDK for JavaScript v3. Please refer to the Migraton guide from v2 to v3 for more information.
- Add
rtcStatsReport
property toClientMetricReport
to store rawRTCStatsReport
and expose it viametricsDidReceive
event.
- Remove support for Plan B as well as Safari (and iOS) 12+. The minimum Safari and iOS supported version is now 13.
- Remove legacy (non-promise-based)
getStats
API call inDefaultStatsCollector
. This API was previously used to obtain WebRTC metrics only for Chromium-based browsers. Now SDK obtains WebRTC metrics for all browsers via standardized (promise-based)getStats
API. - Remove all deprecated meeting status code.
- Remove
videoSendHealthDidChange
,videoSendBandwidthDidChange
,videoNotReceivingEnoughData
, andvideoReceiveBandwidthDidChange
. UsemetricsDidReceive
to obtain metrics instead. - Remove
estimatedDownlinkBandwidthLessThanRequired
. - Remove synthesize video APIs such as SMTP.
- Removed SDP interface.
- Remove
StatsCollector
interface. - Remove
ClientMetricReport
interface.
- Rename
DefaultStatsCollector
toStatsCollector
. - Rename
DefaultClientMetricReport
toClientMetricReport
. - Change
chooseAudioInputDevice
to explicit APIsstartAudioInput
andstopAudioInput
. Application will need to callstopVideoInput
at the end of the call to explicitly stop active audio stream. - Change
chooseVideoInputDevice
to explicit APIsstartVideoInput
andstopVideoInput
. Application will need to callstopVideoInput
now to explicitly stop active video stream. - Minor name change to
chooseAudioOutputDevice
tochooseAudioOutput
. startVideoPreviewForVideoInput
andstopVideoPreviewForVideoInput
will no longer turn on and off video stream. This allows applications to join meeting without reselecting video again.- Remove max bandwidth kbps parameter in
chooseVideoInputQuality
as it is not related to device. Applications can set video max bandwidth kbps fromaudioVideo.setVideoMaxBandwidthKbps
. - Extend the
DeviceController
interface to includeDestroyable
- Rename
MeetingSessionPOSTLogger
toPOSTLogger
. - Update
POSTLogger
to implement theLogger
interface. - Remove
MeetingSessionConfiguration
dependency fromMeetingSessionPOSTLogger
. Builders need to addmetadata
toPOSTLogger
if they want to include information such asappName
,meetingId
and so on with the HTTP POST request made byPOSTLogger
when sending logs to builder provided URL. Please check 3.0 migration guide for more information. - Decoupled
EventController
fromAudioVideo
andMeetingSession
.
- Fix a bug where joining without selecting any audio device failed when Web Audio is enabled.
- Fix a minor log info for video input ended event where we say resetting to null device when we just stop the video input.
- Added support for use of replicated meetings to extend meeting sizes to up to 10k view only participants with glareless promotion ability. See the Chime Developer Guide and the JS SDK guide for more details.
- Remove
StatsCollector
interface. - Remove
ClientMetricReport
interface. - Remove
clientMetricReport
parameter fromStatsCollector.start()
API. - Remove synthesize video APIs such as SMTP.
- Rename
DefaultStatsCollector
toStatsCollector
. - Rename
DefaultClientMetricReport
toClientMetricReport
. - Change
chooseAudioInputDevice
to explicit APIsstartAudioInput
andstopAudioInput
. Application will need to callstopVideoInput
at the end of the call to explicitly stop active audio stream. - Change
chooseVideoInputDevice
to explicit APIsstartVideoInput
andstopVideoInput
. Application will need to callstopVideoInput
now to explicitly stop active video stream. - Minor name change to
chooseAudioOutputDevice
tochooseAudioOutput
. startVideoPreviewForVideoInput
andstopVideoPreviewForVideoInput
will no longer turn on and off video stream. This allows applications to join meeting without reselecting video again.- Remove max bandwidth kbps parameter in
chooseVideoInputQuality
as it is not related to device. Applications can set video max bandwidth kbps fromaudioVideo.setVideoMaxBandwidthKbps
. - Rename
MeetingSessionPOSTLogger
toPOSTLogger
. - Update
POSTLogger
to implement theLogger
interface. - Remove
MeetingSessionConfiguration
dependency fromMeetingSessionPOSTLogger
. Builders need to addmetadata
toPOSTLogger
if they want to include information such asappName
,meetingId
and so on with the HTTP POST request made byPOSTLogger
when sending logs to builder provided URL. Please check 3.0 migration guide for more information.
- Add compression support when sending and receiving sdp messages.
- Add automatic language identification support from Amazon Transcribe for live transcription APIs.
- Add
rtcStatsReport
property toDefaultClientMetricReport
to store rawRTCStatsReport
and expose it viametricsDidReceive
event.
- Removed SDP interface.
- Remove legacy (non-promise-based)
getStats
API call inDefaultStatsCollector
. This API was previously used to obtain WebRTC metrics only for Chromium-based browsers. Now SDK obtains WebRTC metrics for all browsers via standardized (promise-based)getStats
API. - Remove
browserBehavior
from the constructor ofDefaultStatsCollector
.
- Change
resolveSpec
andresolveOptions
in BackgroundBlurVideoFrameProcessor and BackgroundReplacementVideoFrameProcessor to clone parameter objects.
- Clone the video preference input in
chooseRemoteVideoSources
API inVideoPriorityBasedPolicy
to avoid mutation that can cause video preferences to not be sorted and lead to wrong video subscription determination by the policy. - Fix a screen share issue by resetting the sdp compression state during join requests.
- Fix a video orientation issue when Background Blur/Background Replacement is enabled.
- Remove support for Plan B as well as Safari (and iOS) 12+. The minimum Safari and iOS supported version is now 13. Also clean up all plan-B code path.
- Remove all deprecated meeting status code.
- Decoupled
EventController
fromAudioVideo
andMeetingSession
. - Add support for pre-release in Versioning.
- Removed upward BWE throttling logic in VideoPriorityBasedPolicyConfig, which was increasing recovery time more then intended, whereas its main focus was towards slowing downturns in BWE when the network is actually stable. We may come back to configuring the recovery delay another time.
- Add support for aws-sdk js v3 for messaging session.
- Fix a worker resource leak with
BackgroundBlurProcessor
andBackgroundReplacementProcessor
.
- Changed
VideoPriorityBasedPolicyConfig
to be dependent on bandwidth fluctuation so thatVideoPriorityBasedPolicy
will not drop/resume video instantly when network bandwidth changes. (#1921). - Adjust the recovery behavior of
VideoPriorityBasedPolicy
to not get stuck at low estimates, not overeact to spurious packet loss when probing, and not let the time between probes raise to 60 seconds (reduced to maximum of 30 seconds).
- Fix the reconnecting issue (#1985) by skipping the "close" event if it does not arrive in two seconds.
- Add a workaround to avoid 480p resolution scale down when there are 5-8 videos for the default video uplink policy for Chromium browsers version 98 on Windows and use 360p instead.
- Made
SimulcastUplinkObserver.encodingSimulcastLayersDidChange
(notAudioVideoObserver.encodingSimulcastLayersDidChange
) synchronous.
- Fixed delays in advertising simulcast stream switches due to asynchronous and out of order checks.
- Fixed Firefox video tiles containing stale frames from previous transceivers by not attempting to reuse inactive transceivers. This switches to using
RTCRtpTransceiver.stop
when possible and may fix other incorrect tile bugs. - Fix the bug that the max bandwidth set by the chooseVideoInputQuality API is ignored when the Chime SDK retries the connection.
- Added additional pausing of
MonitorTask
andReceiveVideoStreamIndexTask
to avoid modifying mutable state mid-subscribe. - Fix the bug that the max bandwidth is ignored if the chooseVideoInputQuality API is called before starting a meeting.
- Use optional chaining to prevent an error from undefined transceiverEncoding in FF.
- Ability to choose remote video sources in
AllHighestVideoBandwidthPolicy
. see guide. - Add
BackgroundReplacementVideoFrameProcessor
that will create aVideoFrameProcessor
to apply a background image to an outgoing video stream.
- Correct the minimum supported Firefox version to
75
to match the official documentation.
- Enforced a video receive limit incase the number of videos shared in the meeting are greater than the limit. The current limit is 25, which can change in future.
- Clarified a comment in
DefaultSimulcastUplinkPolicy
.
- Add
supportDownlinkBandwidthEstimation
API to check whether browsers support downlink bandwidth estimation which requires for priority based downlink policy to work. - Add
keepLastFrameWhenPaused
inDefaultVideoTile
as an option to keep last frame when pausing a video tile. - Add error name for custom device controller error.
- Added pagination option to meeting demo when priority downlink policy is used.
- Add
ApplicationMetadata
to enable builders to send their application name or version to the Amazon Chime backend. This is an opt-in addition. - Add a new
AudioProfile
calledfullbandMusicStereo
which can be passed intosetAudioProfile
to support sending and receiving stereo audio through main audio input and output. This can also be passed intosetContentAudioProfile
to support sending stereo audio as content. - [Demo] Add new checkbox on join screen to select new
fullbandMusicStereo
audio profile. - [Demo] Add new dropdown items in microphone dropdown menu to test sending stereo audio as main audio input.
- [Demo] Add new dropdown items in content share dropdown menu to test sending stereo audio as content.
- Fixed updates to mutable state during subscribe leading to non-existant/frozen video streams.
- Fixed inconsistent default maxBitrate values in the NScaleVideoUplinkBandwithPolicy constructor leading to the default ideal max bitrate not being honored.
- Clarified comment in
DefaultSimulcastUplinkPolicy
.
- Temporararily removed munging of layers allocation extension to mitigate Chrome M97 change which led to
setLocalDescription
failures. This was not yet being negotiated by the remote end, so this will not have any impact on media quality.
- Add support for Echo Reduction when using Voice Focus.
- Switched
DefaultSimulcastUplinkPolicy
non-simulcast mode's enabled stream to mitigate Chromium not reconfiguring encoder on reconnect when using the top stream. This impacts only the non-simulcast mode of the simulcast policy when is when there are 2 or less participants (not 2 or less senders).
- Add documentation in video processor on how to add a customized professor with new image loading.
- Adds support to live transcription for new features including PII content identification and redaction, partial results stabilization, and custom language models for Amazon Transcribe and PHI content identification for Amazon Transcribe Medical.
- Fix priority downlink policy bandwidth estimation metrics to work with Safari.
- Add a workaround to switch to VP8 for iOS 15.1 due to Safari bug that causes crash with H.264 encoding.
- Add a workaround to switch to VP8 for iOS 15.1 due to Safari bug for iOS WebView that causes crash with H.264 encoding.
- Make
tileWillBePausedByDownlinkPolicy
observer update synchronous withoutsetTimeout
.
- Add documentation on how to update a deployment of the serverless demo.
- Update background blur options to allow for skipping frames to improve CPU utilization.
- Take into account portrait video dimension when calculating resolution scaling for NScale video bandwidth uplink policy.
- Change the serverless demo's
deploy.js
script to rebuild the demo on each run. This should remove a manual step of rebuilding the demo. - Disable NScale resolution scaling for Android device due to Android H.264 encoding.
- Minor clean up of code in
BackgroundBlurProcessorProvided
class. - Refactored some video demo components into classes and seperate files.
- Add support for layers allocation negotiation in Chromium based browsers to avoid resubscribing to preemptively turn off simulcast streams or to switch layers.
- Update browser compatibility doc for background blur
- Add a doc to guide builders on managing video quality for different video layouts. See guide.
- Fix disabling of send streams when local video was not enabled by integrating empty encoder params into
VideoStreamIndex
when sending is disabled. - Fix
visibilitychange
typo inInMemoryJSONEventBuffer
.
- Ignore
enableUnifiedPlanForChromiumBasedBrowsers
value (i.e. treat as always equaling the current default value oftrue
) inMeetingSesstionConfiguration
. Chrome is in the processing of deprecating and removing Plan-B which would cause breakage in applications still trying to use it. This will have no effect on SDK behavior` and has been the default since 1.17.0. - Change
appVersionName
andappVersionCode
fields toappName
andappVersion
respectively. - Update similar log messages in
DefaultMessagingSession
andDefaultSignalingClient
.
- Prevent error
'scaleResolutionDownBy' member of RTCRtpEncodingParameters is not a finite floating-point value
thrown by NScale video uplink bandwidth policy when there is no height information from the sending video stream.
- Add background blur video frame processor to enable background blur on streaming video. See guide.
- Add API
isSimulcastSupported
so applications can check whether simulcast can be enabled and pass corresponding policy. - Add
bindToTileController
optional method toVideoDownlinkBandwidthPolicy
. - Add Content Security Policy setup guide for customers who want to secure their application and add CSP headers.
- Add
securitypolicyviolation
event listener to listen for CSP violations. If customers have set up CSP for their app, the event listener will detect violations and print warnings.
- Remove Getting Started documentation guide and use API overview to cover the development in more details.
- Remove interface matching rule for all the components so that it is not required to have an interface of the same name for each component directory.
- Amazon Voice Focus now works in Chrome 95 or later: WebAssembly policy changes required a change in how modules were loaded. This requires additional Content Security Policy changes, which are documented in the CSP guide and the Amazon Voice Focus guide.
- Add safeguard in
ReceivedVideoInputTask
to prevent crashing when video input stream does not contain any video track. - Add missing
captureOutputPrefix
param for SDK demo app in release script. - Add opt-in region
eu-south-1
to meetings demo in deploy-canary-demo script to support media capture canary. - Fix bug: DOMException: The play() request was interrupted by a new load request. https://goo.gl/LdLk22.
- Fix
removeObserver
function inDefaultVideoTransformDevice
. - Fix handling pausing when using default preference for priority-based video bandwidth policy.
- Bind tile controller for any downlink policy that implements
bindToTileController
such asVideoAdaptiveProbePolicy
. - Do not pause streams that do not exist in conference in
VideoPriorityBasedPolicy
.
- Allow passing in custom video simulcast uplink policy that implements the
SimulcastUplinkPolicy
interface. - Change the default video downlink policy to
VideoAdaptiveProbePolicy
to match with documentation. - Move configuration default from meeting session configuration to audio video controller.
- Update the default priority-based video downlink policy to adjust target size based on number of videos in the meeting.
- Add a new section "Known Browser Issues" in FAQ.html.
- Refactor some types to avoid a circular dependency (#1565).
- Update package.json to include npm 8.
- Update mocha to version 9.
- Add events
meetingReconnected
,signalingDropped
andreceivingAudioDropped
toeventDidReceive
by publishing them as stand alone events. Currently, these events were only included in the meeting history attribute when a meeting event is published. - Added support for skipping full SDP renegotiations when switching simulcast streams. This will result in less freezing when switching between layers in response to a network event as done in
VideoPriorityBasedPolicy
. This will have no impact if not using simulcast. - Add link to SIP Media Application examples in README.
- Add safeguard for Nscale policy in case we increase to more than 25 videos.
- Move
toLowerCasePropertyNames
insideUtils.ts
and add test coverage. - Reduced uplink resubscription when only stream encoding is changed by adding bypassing path.
- The browser demo now offers a configuration menu on each video tile. This menu replaces the 'Pin' button, which previously set the priority of the corresponding remote video to 1, and then rest to 2. The new configuration menu allows the user to specify the desired video quality and priority, which will be respected by simulcast and priority downlink policies. This is useful for testing or to demonstrate the behavior of those policies.
- Switched to using Web Components for video tiles in the browser demo.
- Migrate SauceLabs mobile tests to new api.
- Add
audioInputMuteStateChanged
to theDeviceChangeObserver
interface. This is called whenever the device is changed or is muted or unmuted, allowing applications to adapt to OS-level mute state for input devices. - Added Android WebView Sample UI test to workflow.
- Add a new optional API
getVideoTileForAttendeeId
inVideoTileController
and raise thetileWillBePausedByDownlinkPolicy
event for empty video tiles. - Amazon Voice Focus will now trigger the
onCPUWarning
method on theVoiceFocusTransformDeviceDelegate
when using the default inline execution mode. This will be called when the browser fails to schedule the worklet in a timely fashion (e.g., when the meeting code is running in an iframe /subframe) or when changes in the CPU environment (e.g., thermal throttling) cause the worklet to take too long for each audio render quantum. - Amazon Voice Focus will now trigger the
voiceFocusInsufficientResources
method on theVoiceFocusTransformDeviceDelegate
when using the default inline execution mode. This will be called when the browser fails to schedule the worklet in a timely fashion (e.g., when the meeting code is running in an iframe /subframe) or when changes in the CPU environment (e.g., thermal throttling) cause the worklet to take too long for each audio render quantum. - Add retry logic in FAQs.
- The Amazon Voice Focus support check,
VoiceFocusDeviceTransformer.isSupported
, now warns to the logger when run in an iframe, and can be configured to fail in that case. - Add documentation in Video Processing APIs on how to add filters in the preview window.
- Clarify why not use default downlink policy with simulcast.
- Corrected argument
isUnifiedPlan
inwithBandwidthRestriction
toisFirefox
. Also marked as deprecated since we no longer use it. - Update data message limit in the API Overview guide.
- Do not trigger real time attendee presence event for local attendee if they are not appear in audio info frame during reconnection.
- Update
startVideoPreviewForVideoInput
to support filters in the preview window. - Update browser demo to showcase preview filter capability.
- Fix priority-based downlink policy to not unpaused tiles that are not paused by the policy.
- Fix empty video tiles when using priority-based downlink policy.
- Fix simulcast guide that adaptive probe downlink policy is not enabled by default.
- Fix a link format in simulcast guide.
- No longer put useless 'pin' and 'pause' buttons on local tile in demo.
- Choose a null device or media stream without a deviceId without first listing devices no longer logs
Device cache is not populated
.
- Fix default priority downlink policy to update default preference correctly.
- Add
RealtimeSubscribeToAttendeeIdPresenceCallback
type forrealtimeSubscribeToAttendeeIdPresence
callback to document the callback parameters. - Added support for Android WebView
- Add a SignalClientEvent check in
SubscribeAndReceiveSubscribeAckTask
to immediately cancel the task when websocket connection is terminated.
- Update the default behavior of NScale video uplink bandwidth policy to scale down resolution based on the number of videos.
- Fix race condition in Safari when disconnect and connect stream from video element.
- Supports integration with Amazon Transcribe and Amazon Transcribe Medical for live transcription. The Amazon Chime Service uses its active talker algorithm to select the top two active talkers, and sends their audio to Amazon Transcribe (or Amazon Transcribe Medical) in your AWS account. User-attributed transcriptions are then sent directly to every meeting attendee via data messages. Use transcriptions to overlay subtitles, build a transcript, or perform real-time content analysis. For more information, visit the live transcription guide.
- [Demo] Add live transcription functionality. You will need to have a serverless deployment to create new AWS Lambda endpoints for live transcription. Follow the live transcription guide to create necessary service-linked role so that the demo app can call Amazon Transcribe and Amazon Transcribe Medical on your behalf.
- Exposed Amazon Voice Focus model complexity as a type in order to support showcasing complexity limitation in the meeting demo.
- Packet-per-second (PPS) logging is now enabled in the meeting demo by default. If the browser sends an incorrect packet rate, this will be logged as an error in the console.
- Add a warning log in
InMemoryJSONEventBuffer
'ssend
function when retrying starts.
- Update
InMemoryJSONEventBuffer
to retry with backoff.
- Stop
activeDevice
video track before selecting a new device to preventNotReadableError
when callinggetUserMedia
for a new video input device. - Fix priority-based downlink policy default behavior.
- Fix client event ingestion guide rendering in typedoc.
- Added
VideoPriorityBasedPolicyConfig
to control video downlink policy with network event response and recovery delays. Check User Guide for Priority-based Downlink Policy for more information. - Amazon Chime SDK Project Board Overview and Guide.
- Added 25 video tile support for demo app.
- [Documentation] Update priority based downlink policy guide.
- Lookup
groupId
from device cache instead of directly from media stream when selecting input device. - [Documentation] Update documentation for 25 video tiles.
- Improve the meeting event guide.
- Fixed Project Board guide with correct community template link.
- Updated Amazon Voice Focus integration guide to reflect recent Safari versions.
- Import current Amazon Voice Focus code, which ensures that stereo inputs are downmixed to mono.
- Improve the meeting event guide
- Add events ingestion to report meeting events to Amazon Chime backend. Check Client Event Ingestion guide for more information.
- Add
videoUpstreamPacketLossPercent
andvideoDownstreamPacketsReceived
metrics for video streams - [Documentation] Add documentation for view-only mode.
- Use SESSION_ESTABLISH event to indicate success of Chime SDK for Messaging successful websocket connection
- [Documentation] Add documentation for
getObservableVideoMetrics
. - [Documentation] Update FAQ and public documentation to add more information on SignalingBadRequest related error codes.
- [Documentation] Rephrase the terms in the status code documentations.
- Bump maxVideos limit to 25
- Pre-started signaling connections no longer cause a delay in joining if the user takes more than a minute to join the meeting.
- Fix choosing input device API when passing in a media stream.
- Bind tileController during the initialization of DefaultAudioVideoController for VideoPriorityBasedPolicy.
- Add more debug logging for choose input device.
- Add the meeting and device error sections in the meeting-event guide.
- Add a
forceUpdate
parameter to use when listing devices. In some cases, builders need to delay the triggering of permission dialogs, e.g., when joining a meeting in view-only mode, and then later be able to trigger a permission prompt in order to show device labels. This parameter allows cached device labels to be forcibly discarded and recomputed after the device label trigger is run.
- Log error instead of throwing error if the signaling client is not ready to send data message.
- Now when
setDeviceLabelTrigger
is called, if thedeviceInfoCache
contains a device with no label,deviceInfoCache
will be cleared.
- Remove deprecated unwired webrtc constraints from device controller and peer connection construction.
- Removed unnecessary restriction on VideoPriorityBasedPolicy to always subscribe to at least one stream.
- Fixed missing upstream video metrics for Firefox browsers.
- Fix build script to run on Windows by specifying ruby when running ruby scripts and rimraf to remove folder.
- Add new message
MeetingSessionStatusCode
AudioAttendeeRemoved
to handle the new audio server status code 411. - Add support for
WKWebView
on iOS. - Output a warning message when the volume adapter cleans up the self-attendee after reconnection.
- Add FAQ for more information on
AudioJoinFromAnotherDevice
meeting session status code. - Add downstream audio webrtc metrics in
observableMetricSpec
. - Add
getObservableVideoMetrics
and inClientMetricReport
to expose video stream metrics in webrtc. - Update
SignalingProtocol
with optional video metric fields.
- Update guide for priority based downlink policy.
- Bump version for lodash, y18n, and ssri dependencies.
- Mark
getObservableVideoMetrics
optional in ClientMetricReprt andvideoStreamIndex
andselfAttendeeId
optional inDefaultClientMetricReport
.
-
Do not start local video tile if there is no stream for content share.
-
Media streams are no longer discarded during reconnects. This fixes an issue where initial signaling connection failures could cause a client to be unable to join a meeting with audio if Web Audio were enabled.
- Add the Messaging section in FAQs to describe how to receive messages without using the Chime SDK for JavaScript.
DefaultAudioVideoFacade.start
now takes an options argument. You can use this to trigger a signaling socket connection prior to device selection: callaudioVideo.start({ signalingOnly: true })
, and then later callaudioVideo.start()
as usual.- Added a 'abort-on-reconnect' query parameter to demo URL to trigger fatal on reconnection for use in integration tests (default false).
startVideoPreviewForVideoInput
uses the active video input stream instead of callinggetUserMedia
again.- Meeting connections now do more work in parallel, which will improve meeting join times.
- Fix
npm run start:hot
in the browser demo.
- Added new downlink policy
VideoPriorityBasedPolicy
, providing the ability to explicitly request remote video sources to receive and set their respective priorities. See this guide for more details and a code walkthrough of using the new policy. (Note that the exact internal behavior of this policy may slightly change in future releases.) - Add optional header parameter to the
MeetingSessionPOSTLogger
. - Add extra logging for synthesizing an audio stream.
- Add logging for
attendeePresenceReceived
. - Add reconnection configuration in
MeetingSessionConfiguration
. - Add NodeJS 16 to supported engines.
- Disable audio properties on the peer connection if the join information does not include an audio host URL.
package-lock.json
files now use the v2 lockfile format.- Configuration files now live in
/config
.
DefaultDeviceController
recreates theAudioContext
as needed when selecting non-transform devices, and does not do so when theAudioContext
is suspended.- Generated documentation no longer includes private members.
- Include the default error message in "meetingStartFailed" and "meetingFailed" events.
- Fix truncation in bps to kbps conversion that causes stream to stop under low bitrate.
- [Demo] Add Tensorflow BodyPix segmentation demo for
VideoProcessor
. - Added a workaround for a Chrome issue where Bluetooth audio would sound choppy for other participants when Web Audio was enabled. This workaround recreates the Web Audio context each time an input device is selected.
- Update
SignalingProtocol
with optional video metric fields and optional join flags. DefaultDeviceController
andDefaultActiveSpeakerDetector
now conform to a newDestroyable
interface, allowing resources to be explicitly discarded when a meeting is over.MeetingSessionPOSTLogger
conforms toDestroyable
. You should calldestroy
when you are done logging unless you plan to close the window.
- Improve some unit tests.
- Fewer observers are now retained after meetings end. This should reduce leaks.
- Correctly close input streams when ending a call while using a video transform device.
- Calling
realtimeSetLocalAudioInput
as part ofAudioVideoController.restartLocalAudio()
to fix local mute/unmute issue while switching audio devices.
- Fix infinite loop when calling
chooseAudioInputDevice
with aMediaDeviceInfo
instance.
- Add
SingleNodeAudioTransformDevice
to make simple audio transforms easier to write. - Reuse
VoiceFocusAudioNode
instances across transform device operations. - Allow a complete configuration to be retrieved from and passed to a
VoiceFocusDeviceTransformer
, making it easier to instantiate a new transformer in a different scope with the same measured settings. - Add End-to-end Integration test for Video Test App
MeetingSessionPOSTLogger
now matches the regularLogger
API signature.
- Allow device checker APIs to take devices as input, rather than only MediaDeviceInfo objects.
- Enable SIMD autodetection for Amazon Voice Focus in Chrome 90+.
- Clean up task cancel hooks after they cease to be relevant.
- Enable sender-side bandwidth estimation in Safari.
- Clean up usage of audioDeviceInformation in ReceiveAudioInputTask.
- Removed audioDeviceInformation from AudioVideoControllerState.
- Upgrade ua-parser-js package version to latest.
- Don't automatically upgrade dev-dependencies to avoid a breaking typedoc upgrade.
- Safely handle calling logger
debug
methods withundefined
.
- Add GatheringICECandidate Finish Duration to Meeting Event and to demo app.
- Add
attendeePresenceReceived
,audioInputSelected
,videoInputSelected
,audioInputUnselected
, andvideoInputUnselected
meeting events. - Compute and add
meetingStartDurationMs
as part of the attributes of theattendeePresenceReceived
meeting event. - Add the file sharing workaround for Chrome 88 in FAQs.
- Add support for Chrome for iOS and Firefox for iOS.
- [Demo] Set
attendeePresenceTimeoutMs
to use value passed as parameter in the URL.
DefaultDeviceController
now attempts to resume a suspendedAudioContext
when choosing a transform device (#1062).DefaultVideoStreamIndex
now ignores old group IDs from a given attendee ID (#1029).
- Disable reconnecting in AudioVideoControllerFacade's
stop
method. Add documentation for thestop
method. - Fix dropped attendee presence during network reconnects.
- Add back
.play()
call explicitly for Safari browser to prevent video pause issue for local video.
- Add support for Amazon Voice Focus support in Safari Technology Preview for macOS. Builders using an explicit revision or asset group must make sure to use a revision no earlier than this; an error will be thrown in Safari if older revisions are used.
- Corrected
null
type onDefaultVideoFrameProcessorPipeline
andDefaultVideoTransformDevice
. - Amazon Voice Focus now makes better use of available CPU resources, extending support to lower-end devices and improving quality on higher-end devices.
- [Documentation] Corrected name for
voiceFocusInsufficientResources
in documentation. - Allow for
realtimeUnsubscribeFromVolumeIndicator
to unsubscribe from specific callbacks. - Correctly mute video elements when bound, preventing local echo when sharing tabs via content share.
- [Demo] Local content share (e.g., video files) now plays audio through the selected audio
output device, rather than the default device, in browsers that support
setSinkId
.
- Add Samsung Internet browser for Android as a supported browser.
- [Documentation] Add documentation for video processing APIs.
- Add
DefaultVideoTransformDevice
to implementVideoTransformDevice
.VideoFrameProcessor
,VideoFrameProcessorPipeline
andVideoFrameBuffer
interfaces are added to supportDefaultVideoTransformDevice
and allow processing steps to be applied to device. The methodchooseVideoInputDevice
inDefaultDeviceController
can handleVideoTransformDevice
now.
- Binding audio elements will no longer throw an error unless calling code is
trying to choose an output device in a browser that does not support
setSinkId
, and the demo will not log an error in these cases. - [Demo] The meeting readiness checker no longer re-initializes the device output list after the user picks a device.
- [Test] Fix Amazon Voice Focus integration/canary test.
- [Demo] Additional best practices around choosing audio output devices.
- [Documentation] What happens when participants try to
startLocalVideoTile
when local video tile limit reached
- Log error if pass undefined device when calling choose input device
- Doing typecheck for MediaDeviceInfo
- Set automated integ test coverage on recent version of browsers
- Allow Amazon Voice Focus code to load (but not function) in unsupported
browsers that do not define
globalThis
. - Fix uncaught promise exception for bindAudioOutput API
- [Demo] Fix meeting readiness checker speaker test failing in Safari
- [Demo] Validate metrics data while showing video WebRTC stats
- [Documentation] Add demo video stats widget information to the quality and bandwidth guide
- [Documentation] Updated migration document to add more information about
bindAudioDevice()
API behavior - Add APIs to create a messaging session with Amazon Chime SDK for Messaging
- [Test] Remove check for
/v2
in canary URL
- [Script] Update postpublish script to enable termination protection for prod canary stack.
- [Documentation] Update the Amazon Chime SDK Media Regions documentation link in the README
- Reimplement error handling in
DefaultRealtimeController
to generate less garbage. - Add github actions fix to conditionally run integ tests
- [Documentation] Correct docstring for
VoiceFocusTransformDevice
. - [Script] Add prepublish script to verify CDN configuration.
- Add a constructor argument to
DefaultDeviceController
to specify whether Web Audio should be supported. Use this instead ofenableWebAudio
. - Add an
AudioTransformDevice
type that can be supplied tochooseAudioInputDevice
, allowing the injection of custom device constraints and Web Audio nodes as pseudo-devices. - Add
VideoTransformDevice
interface placeholder. This interface mirrorsAudioTransformDevice
. ChoosingVideoTransformDevice
s inDefaultDeviceController
will be implemented in a future release. - Add Amazon Voice Focus, which allows you to create an audio input device that suppresses background noise.
- Add
AudioProfile
for configuring audio quality. - Add
setAudioProfile
andsetContentAudioProfile
audio-video facade methods for setting audio quality. - Added
GetUserMediaError
errors which are thrown forchooseAudioInputDevice
andchooseVideoInputDevice
API failures. - [Demo] Show video WebRTC stats and attendeeId on video tile hover.
- [Demo] Add audio quality settings to meeting demo.
-
The project now produces ES2015 output, rather than ES5 output that refers to ES2015 features. The SDK supports only modern browsers, and is increasingly dependent on ES2015 features. This change leads to more compact bundles and aligns the supported JavaScript language variant with the supported runtime features.
If you need your built application bundle to target browsers that do not support ES2015 syntax, including Internet Explorer, you will need to transpile the SDK code using a transpiler like Babel, or split your application bundle into multiple files that can be conditionally loaded. Note that transpiling some parts of the SDK might result in ES5 code that does not work when run.
-
DeviceController.createAnalyserNodeForAudioInput
now returns aRemovableAnalyserNode
that knows how to unhook its own inputs. This allows you to correctly clean up, which avoids issues with Safari when used with Web Audio. The demo has been adjusted to do so. -
Modify
WebSocketAdapter.send
to accept string parameters. -
Changed
chooseAudioInputDevice
andchooseVideoInputDevice
to return void and reject with a hierarchy of errors instead of either rejecting with an error and otherwise returningDevicePermission
.
- Remove
enableWebAudio
fromDeviceController
and related types. Use the constructor argument instead. - Remove V1 meeting app. The V2 meeting app is now the only meeting app deployed. Do not supply /V2/ paths when loading the app, if you deployed both.
- Remove legacy screen share.
- Remove
DevicePermission
.
- Fix Github Actions CI workflow to include all integ tests.
- Update the clicking sound answer in FAQs.
- [Test] Make sure to remove v2 from URL when trying to create meeting
- Correct import in
NoOpAudioVideoController
.
- Add github actions continuous integration workflow and deploy workflow
- Add simulcast uplink policy layer change notification methods and observer
- Add
getRemoteVideoSources
method andremoteVideoSourcesDidChange
observer - [Documentation] Add question to FAQ about android chrome bluetooth audio devices
- [Documentation] Updated HTTP to HTTPS in README URL links
- [Documentation] Improved documentation for running integration tests locally
- [Test] Updated browserstack URL formation to use HTTPS
- Upgraded eslint to understand modern TypeScript syntax, including
import type
- [Demo] change optional feature selection to be list of input box to allow combination
- [Documentation] Update README to replace deprecated
AudioCallEnded
withMeetingEnded
- [Documentation] Update few
VideoTileController
andVideoTile
APIs documentation - [Documentation] Added deprecation message and log for
enableWebAudio
API in DeviceController - Improve
DefaultEventController
to create less garbage
- Make the event controller optional in the AudioVideoController interface
- Handle undefined attendeeId when calling
realtimeSetAttendeeIdPresence
- Fix
DefaultModality
base check - [Test] Fix a typo in integ tests
- [Demo] Fix serverless deploy script to not print out logs
- [Test] Make sure to error out if failed to grab Sauce Lab sessions
- Fixed deploy github action with correct keys
- Remote video may switch transceivers/videoTiles on simulcast change or camera toggle
- Fix github actions deploy workflow
- Fix issue with calling closeCurrentTest twice when timeout waiting for an attendee in integ test
- [Demo] Add default SSE to meeting notifications queue in CF template
- Add meeting events
- Removed check for
iceGatheringState
to be complete for bypassing gathering ice candidate again
- Allow the build to complete in the absence of a Git checkout
- [Documentation] Update README to add information about
tileState.active
- Update PR template to ask demo testing question
- Reduced sessionId resolution to 32 bits and removed Long dependency
- Handle case where meeting or attendee response properties can accept null or undefined
- Add a Travis check to make sure version update
- Add metrics for Selenium initialization metrics for integration tests
- Create log stream before logging begins
- Make AWS SDK for Java camelCased meeting-attendee response compatible with Chime SDK for JavaScript
- Mark InvalidSequenceTokenExceptions as warning
- Add an optional parameter to the serverless demo deployment script to specify Chime endpoint, and deploy to a new devo stage that talks to gamma Chime endpoint for canary
- Add extended debugging for saucelab sessions
- Add data message throttle limits to documentation
- Add
audioSessionId
to join frame to always drop when reconnecting - Add audioSessionId to join frame to always drop when reconnecting
- Update test results to Sauce Labs before emitting CloudWatch metrics for integration tests
- Mark
AudioInternalServerError
andSignalingInternalServerError
as non-terminal errors - Replace
awesome-typescript-loader
withts-loader
- Alter the API signature for
Logger.debug
to accept strings, not just functions - Update meeting readiness checker demo app with new regions CPT, MXP, BOM and ICN
- Update meeting readiness checker demo app to create meeting after the checker starts
- Alter the versioning script to require less ritual
- Correct TypeScript build to generate correct artifacts in
build/
- Fall back to
null
device if there is any error while acquiring the audio device
- Make sure integration test returns FAILED if there is error
- [Test] Make sure to reset ready status between retries
- No video after connection failure
- Fix video track sometimes being removed and added on simulcast receive stream switch
- Enabled termination protection for serverless demo CloudFormation stack
- Simulcast optimizations
- Correct TypeScript build to generate correct artifacts in
build/
- Correct TypeScript configuration for demo app
- Add MeetingReadinessCheckerConfiguration to allow custom configuration for meeting readiness checker
- Update Travis config to improve PR build speed
- Disable configs in saucelab capabilities
- Use credentials sent via signaling connection JOIN_ACK to improve audio-video startup time.
- [Demo] Adjust demo css to prevent unecessary scrollbars on windows and stretching in video grid
- Update dependencies to TypeScript 4,
ts-loader
, and modern linting - [Demo] Update dependencies, too.
- Remove unnecessary startAudioPreview in meeting demo
- Fix video tile with incorrect bound attendee ID and external User ID
- Revert the "Create log stream before logging begins" commit
- Revert "Fix unbinding video tile bug" commit
- Revert "Fix issue with removeLocalVideoTile not removing video tile for remote attendees" commit
- Remove "./guides/docs.ts" and the composite setting from tsconfig.json
- Reverted " Add continuous integration workflow support for contributions from forked repos"
- Fix Maven installation script
- Fix SIP integration test
- Fixed v1 meeting bug related to bootstrap row class
- Fix meeting readiness checker integration test
- Add meeting readiness checker integ tests to travis config
- Add optional parameter
sourceId
to checkContentShareConnectivity API - Add getVideoInputQualitySettings to retrieve the current video settings
- Add documentation for DefaultActiveSpeakerPolicy constructor
- Use pip to install aws sam cli for deployment script
- Added meetings tags to serverless demo
- Update PR template to add question about protocol and API change
- Add demos/browser package-lock to git, update webpack and jquery versions
- Update integration-watchlist to include demos/browser with no exception for package.json
- Change error to warn for logging Cloudwatch errors
- Update README with use case to handle
realtimeSubscribeToVolumeIndicator
updates efficiently - Change error messaging for getUserMedia error
- Change demo video grid to CSS
- Update new known issues in FAQs and PTSN sample in README
- Fixed bug related to unbinding a video element
- Fix tone does not stop when calling MeetingReadinessChecker.checkAudioOutput multiple times
- Fixed demo css format issue from updating to bootstrap 4.5.1
- Fix a minor syntax in DefaultSessionStateController
- Change default encode resolution back to 960x540
- Add npm login and logout as part of publish script
- Add Meeting Readiness Checker APIs
- Change WebRTC semantics to Unified Plan by default for Chromium-based browsers
- Update video simulcast guide doc
- Update readme to include link to React components repo
- Fixed removeLocalVideoTile so that the video tile is removed correctly for the user and attendees
- Handle timing issue of receiving index during resubscribe
- Mitigate Brew Sam installation issue
- Remove set command in travis awscli installation script
- Add
--no-fail-on-empty-changeset
flag in deploy script to not fail for empty changeset
- Added auth-token based npm login and logout scripts for npm package publishing
- Update demo app with new regions CPT, MXP, BOM and ICN
- Update the dependency version for the singlejs demo
- Remove
device
demo from demos
- Fix and modify simulcast uplink policy to fix freezing and reduce switches
- Exclude self content share video stream index
- Add comments for VideoTileState class and instructions in FAQ document
- Add reference to CreateMeetingWithAttendees in FAQ
- Bump elliptic from 6.5.2 to 6.5.3 in /demos/device
- Log info when stop pinging due to Websocket closed
- Change the demo app to show content share video back to sharer
- Change bootstrap version for meeting demo to 4.5.0
- Change content share video check to use attendee name instead of video element index
- Ensure all simulcast stream resolution are 16-aligned to avoid pixel3(XL) encoder issue
- Fix race condition in Chromium browsers when consecutive audio bind operations take place
- Fix invalid constraints and disable Unified Plan in safari 12.0
- Fix isSupported API in DefaultBrowserBehavior return true for Firefox on Android
- Add content share video test integration test
- Add function to query outbound WebRTC video stats in browser demo
- Add error message for TaskFailed errors
- Return the screen capture media stream for startContentShareFromScreenCapture
- Fix exception thrown in Safari when multiple startVideoPreviewForVideoInput() are made
- Use POST instead of GET for TURN control endpoint
- Fix demo app responsiveness issue
- Fix content share test video in Firefox
- Marking
TURNMeetingEnded
error as terminal to prevent session from reconnecting
- Add device name for mobile integration tests
- Added new FAQs and updated Readme to include new demos for PSTN calling and live events
- Add test report URL for mobile integration tests
- Add Firefox to Travis integration tests
- Add README for integration tests
- Add log to list the set of constraints supported by the browser
- Add device change observer events when the current audio/video input stream ended
- Fix title for FAQ guide
- Change DefaultDeviceController video MediaTrackConstraint parameters to be "ideal" explicitly
- Use a single instance of AudioContext
- Use the SDK default sample rate 48,000 Hz for an AudioBuffer object if the AudioContext sample rate doesn't work
- Fix typo in VideoStreamDescription when stream is disabled by WebRTC
- Fix issue where audio input is not able to switch in Firefox
- Fix handling WebRTC Track event with no associated streams
- Increase log interval to avoid multiple Cloudwatch requests at once
- Fix incorrect log level for terminal error code
- Catch exceptions taking place when putLogEvents fails
- Fix content share test video in Firefox
- Add meeting demo parameter for broadcasting user
- Add simulcast guide link in README and Quality Bandwidth Connectivity doc
- Add a MediaDevices proxy to support the devicechange event in some Android Chrome browsers
- Remove browser demo optional feature HTMLSelectElement multiple attribute
- Fix CloudWatch metrics for Linux and Android integration tests
- Fix create meeting request for audio and video e2e integration tests
- Fix multiple issues with integration tests
- Fix uuidv4 import
- Fix missing uuidv4 import in integration test
- Disable w3c check for Chrome Android webdriver integration tests
- Fix setSinkId() from throwing DOMException in Chromium browsers
- Fixing the ability to choose default input in browsers when default changes
- Add position in frame to attendee updates
- Add stale-issue bot configuration
- Add simulcast support and provides new uplink downlink policies
- Add MultiLogger to support logging to multiple Logger instances
- Add resize listener on HTMLVideoElement in demo
- Add simulcast integration tests
- Add unit tests for source files previously excluded in test coverage
- Use GET instead of POST to obtain TURN credentials
- Move integration tests to use meeting V2 demo
- Update to add ability to run integration tests in mobile devices
- Update cloudwatch log stream ID to have attendee_id
- Fix Firefox 68 codec preference issues
- Fix uplink max bitrate value calculation
- Bump websocket-extensions from 0.1.3 to 0.1.4
- Update SignalingProtocol.proto and use SDK version in JoinFrame
- Fix duplicate tiles and error logs due to external id race condition
- Suppress presence leave when attendee has already joined from another device (#427)
- Add an integration tests to check remote video when reconnecting
- Add device controller tests
- Add option to run integration tests in Sauce Labs headless
- Switch demo DDB table to on demand
- Restart the session if an attendee is not present during initial connection
- Handle user revoking video input permission
- Fix FinishGatheringICECandidatesTask when there are no turn credentials
- Fix log line to print device constraints
- Fix build line to take out duplicate npm install
- Fix video audio preview for mobile devices
- Fix black remote video tiles on reconnect
- Fix LED light issue
- Fix typo in MeetingNotificaionsEvent present in template.yaml
- Add connectionDidBecomeGood callback in AudioVideoObserver
- Add an integration test for Data Message
- Add the device selection to the "Starting a session" example
- Added Bandwidth and connectivity guide
- Add 'dropped' boolean attribute to realtime interface to indicate attendee drop
- Support styling and Markdown for meeting demo chat
- Update signaling protocol
- Fix Firefox version 76 missing/grey tiles
- Fix data message integration tests
- Fix several integration test name
- Mark 403 (Forbidden) for fetching turn credentials as terminal error and avoid retrying.
- Fix Android Pixel3 Chrome Video artifacts on far sites
- Don't throw the "cannot replace" message if the device controller is not bound to any audio-video controller
- Disable audio capture for Electron Screen Capture
- Allow option to skip device selection page in demo app.
- Add demo hook for debugging media connections
- Add github link to getNearestMediaRegion method in README.md
- Add data message APIs
- Allow audio for screen capture in Chrome and Edge browsers
- Decouple the get call request from the UI
- Use getSettings if possible on MediaStream and move some info logs to debug level
- Use innerText instead of innerHTML
- Fix minor coding styles for data message APIs
- Add bandwidth policy to meeting session configuration to allow overriding default policies
- Add more content sharing integration tests
- Add gifs to read me file to show latest npm version and downloads
- Add method to get the nearest media region
- Display meeting and attendee IDs in the demo
- Simplify meeting demos to leverage externalUserId in roster
- Update PR template to add testing information
- Support a mobile-friendly demo
- Increase the size of content share video tile for the demo app in small screen
- Update reconnection parameters in ConnectionHealthPolicyConfiguration
- Remove unused VideoAdaptiveSubscribePolicy
- Fix serverless deploy script to work on Windows
- Clean up and fix serverless package bundling
- Do not mirror local video for rear-facing camera
- Fix sip url for meeting demo
- Fix local video freeze in Safari after toggling off and on
- Fix meeting demo content share turning off on attendee join
- Disable audio sample constraints when not using WebAudio
- Reset Sauce Lab session to make sure clean state
- Fix integration test emit metrics
- Fix the CloudWatch log handler
- Bump package-lock.json jquery to 3.5.0 and yargs-parser to 18.1.3
- Expose an API for GetStats from RTCPeerConnection
- Add BrowserBehavior test for supported video codecs
- Expose ExternalUserID on videoTileDidUpdate
- Use getByteTimeDomainData to support iOS Safari in meeting demo
- Update README to incorporate documentation feedback
- Fix broken link in GitHub main page README
- Enable the use of send-side bandwidth estimation
- Add guide for content sharing
- Display meeting id in the demo app
- Add additional callback in AudioVideoObserver to indicate video downlink pressure
- Add meeting demo parameter for recording user
- Add a script demo to bundle Chime SDK into a single JS file
- Add device demo
- Add base infrastructure for demo app in react
- Add pricing link in README
- Add an overview of API methods
- Add IoT integration to device demo
- Add option to run integration tests locally
- Add the use case guide
- Upgrade dependency aws-iot-device-sdk version
- Add externalUserId to the tile properties
- Add post publish script
- Add feature flag to enable WebRTC Unified Plan for Chromium-based browsers
- Add link to Amazon Chime SDK Security in README
- Prevent prebuild from increase patch number when publishing to NPM
- Change the cloudwatch log message format
- Only run integration tests if files on watchlist were modified
- Temporarily only run test in Chrome for Travis integration tests
- Allow content share frame rate to be configurable
- Move demo guides to demo folders
- Fix the default video resolution comment in DeviceController
- Remove unimplemented callbacks remoteDidMuteAudio and remoteDidUnmuteAudio on AudioVideoObserver
- Remove the minimal demo app
- Remove incomplete demo and component directories
- Fix retry logic for integration test
- Update typedocs to 0.16 and re-generate doc files
- Fix issue in Travis script that prevents integration tests from running
- Fix markdown formatting with backticks in API overview
- Fix an issue that a dev dependnecy @types/dom-mediacapture-record is not getting installed
- Fix typo in README.md file
- Ensure that attendee presence leave and join are ordered correctly
- Fix video element issue in Iphone
- Fix post publish script to also include meeting v1
- Use build:publish for publish script
- Fix Travis deploy failure
- Add BITRATES in SdkSignalFrame Type and regenerate corresponding JS and TS protocol files.
- Add new ContentShareController APIs
- Add Getting Started guide
- Add doc guide generator
- Add basic component library setup
- Add injectable session URL rewrite function to support proxies
- Add POSTLogger for meeting sessions
- Integrate POSTLogger into the demo app
- Add content share integration test
- Enable POSTLogger for the serverless demo app
- Add max-content-share query parameter to allow 2 content share at the same time
- Add an integration test that checks only 2 content share are allowed
- Add observer event for content sharing
- Stop content share if the media stream end
- Trap video sending SSRC change in two consecutive negotiation
- Do not bypass ice gathering based on sdp connection attributes for Safari on iOS
- Show SDK version in the demo meeting app
- Automatically patch a version for each commit
- Allow to specify manual version in publish script
- Automatically deploy meetingV2 to serverless demo
- Expose external user ID in places where attendee ID is present in RealtimeController
- Improve error output in the deploy script
- Do not reconnect if the session has not received monitoring data for a while
- Skip tests when merging to master
- Bump acorn dependency in package-lock.json to 6.4.1 to address CVE-2020-7598
- Use max-bundle RTCRtpPolicy for Firefox
- Throw error in Travis if integration test failed
- Remove line endings in the keyword when searching for connection attributes in SDP
- Fix pause and resume video functionality
- Fix DefaultTransceiverController async function signature
- Make DefaultBrowserBehavior implement BrowserBehavior interface
- Fix publish script to use npm version
- Add stage to saucelabs session name for integration tests
- Fix audio-video session stop to return Left status code
- Fix crash in demo app when click on screen share view
- Fix integration test completion time writer
- Fix the ping pong reconnection issue
- Fix example code in the getting started guide
- Fix browser versions for integration tests
- Fix present npm audit issues and automatically fix during build when possible
- Add browser support for Safari and Opera
- Add CHANGELOG.md
- Allow for pausing screen sharing
- Add GitHub page with API documentation
- Add an alternative to WebAudio device controller and add a flag to disable the use of WebAudio
- Add option to confirm meeting end
- Implement keyframe request handling
- Add deploy step to deploy latest sdk changes
- Add a ConnectionHealthPolicyConfiguration property in the meeting session configuration
- Add support additional media regions
- Add video help desk tutorial
- Enable integration tests for travis builds
- Add ping/pong to screen sharing start code path to ensure socket is viable
- Enable integration tests for safari 12
- Write timestamp for latest canary completion time
- Enforce SDP to have candidates for FinishGatheringICECandidateTask to resolve
- Add event listeners on peer connection to log state change
- Add client metrics for Safari
- Add SIP integration test
- Block screensharing start if the browser is Safari
- Expose extra bitrate estimation metrics
- Improve reconnect callback fidelity
- Update copyright and fix copyright check
- Improve logging for screen sharing
- Add source node to audio graph for silent devices
- Move screen view data connection open and close
- Improve handling of closed signaling connections
- Update README.md to clarify when to use npm install
- Add app quit and meeting leave integration tests and retry for all other tests
- Limit WebSocket reconnect attempts
- Refactor default screen sharing session start to fix state corruption bug
- Update Travis script to separate unit and integration tests into different jobs.
- Validate session Id and disable extendedDebugging flag for SauceLabs
- Fix infinite loop when retrying in audio and video integ tests
- Make sure both participants in audio and video tests reach finish state before retrying
- Trigger videoSendBandwidthDidChange and videoReceiveBandwidthDidChange for Safari
- Do not disconnect video element with different srcObj when destroying video tile
- Make meeting V2 the default demo meeting app
- Remove SDP class withPlanBSimulcast method
- Remove noSignalStatusReceived from ReconnectionHealthPolicy and remove SignalStrengthBarsConnectionHealthPolicy.
- Add cleanup code for failed open screen sharing
- Handle error in screen viewing send echo response
- Fix several error handling issues
- Fix ReconnectingPromisedWebSocket timeout
- Ensure to null webSocket reference on abnormal close
- Use async scheduler for video tile disconnect
- Set device to null when active device unplugged
- Fix mobile safari detection
- Fix chooseVideoInputDevice with null
- Release chosen video stream on stopVideoPreview
- Fix Safari ICE failure issue by set bundle policy to max-bundle
- Fix to ignore error on screen viewing courtesy stop
- Fix meeting leave integration tests
- Reject an unresolved promise when canceling CreateSDPTask
- Fix Firefox keyframing
- Fix screen share integration test
- Fix null or empty device handling
- Fix demo screen share button states
- Fix bug that caused screenview to stay off when screenshare was toggled
- Only set attendee active only if still in roster
- Fix preview not switching issue and stop track during disconnect
- Reset connectionHealthData before (re)connection
- Fix a bug that prevented device change from triggering observers
- Fix serverless demo deployment scripts
- Fix integration test timeout and test sync between runs browsers
- Fix Safari crashes when remote video tiles are added or toggled
- Fix unhandled Promise rejection in DefaultScreenSharingSession#start
- Fix canary deployment script
- Fix SIP call integration test
- Fix Travis deployment script
- Release first version of library