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.
- Added VP8 codec for Windows
- Fix unexpected video scaling at rapid resolution changes on Windows
- Fix a couple of memory leaks
- Make
StartLocalAudio
andStopLocalAudio
idempotent to prevent sending duplicate audio packets
- Fixed memory leak when trying to stop a meeting while it is still starting up
- Fixed video crashes when race condition occurs.
- Disable audio redundancy by default.
- Added
AudioProcessor
interface - Added
NoOpAudioProcessor
- Added
DefaultAudioProcessor
DefaultAudioProcessor
can toggle the high pass filter, echo canceller, noise suppressor, automatic gain controller, and Voice Focus in real-time viaGetConfiguration()
andSetConfiguration()
- Added
AudioContext
interface that replacesAudioDriver
- Added
enable_audio_redundancy
option inAudioConfiguration
to enable redundant audio encoding (as specified in RFC 2198 https://www.rfc-editor.org/rfc/rfc2198). Redundant audio encoding improves packet loss recovery. - Added parsing of remote audio rtc stats inside
VideoClientRtcStatsAdapter
. - (Breaking) Added
codecPreference
inAddLocalVideo
API ofAudioVideoController
- Added
AddInputNode
,AddOutputNode
,RemoveInputNode
,RemoveOutputNode
toAudioContext
- Use implementation of
AudioNode
for sending and receiving data to/from the media server - Move
AudioProcessor
andAudioResampler
intoAudioContext
- Allow
AudioProcessor
injection throughAudioContextFactory
- Added
PrefixLogger
class to add prefixes to logging output
- Remove references to pinpoint.
- Fixed the issue where media client did not stop when server stops.
- Upgraded libwebsockets to fix retry issue.
- (Breaking) Remove
AudioSource
andAudioSink
- (Breaking) Remove
AddLocalAudioSink
,RemoveLocalAudioSink
,AddRemoteAudioSink
,RemoveRemoteAudioSink
- (Breaking) Remove
OnLocalAudioSourceAvailable
andOnRemoteMixedAudioSourceAvailable
fromAudioVideObserver
- Added
size_y_
,size_u_
, andsize_v_
toI420VideoFrameBuffer
- (Breaking) Fixed incorrect values for
I420VideoFrameBuffer
. Previously, values forsize_y_
,size_u_
, andsize_v_
were used as the values forstride_y_
,stride_u_
, andstride_v_
. Anything relying on size values being used for strides now needs to calculate size or use the newly provided fields - Fixed
width_
andheight_
values missing forI420VideoFrameBuffer
- On
AudioVideoController
, addedSetLocalAudioMute
- On
AudioVideoController
, addedAddRemoteAudioSink
andRemoveRemoteAudioSink
. These are additional ways to add audio sinks. One can still add audio sinks withOnRemoteAudioSourceAvailable
. - On
AudioVideoObserver
, addedOnLocalAudioSourceAvailable
CVPixelVideoFrameBuffer
used for iOS and OSX specificVideoFrame
sAudioDriver
and associated classes/structs inaudio_driver.h
. Internally system specific drivers will be used unless custom driver is injected.- Custom
AudioDriver
added toMeetingSessionDependencies
in order to allowAudioDriver
s to be injected kFloat32
added as additional audio sample format type forSampleFormat
PullAudio
method added toRemoteAudioSource
LocalAudioSource
, an implementation ofAudioSource
- (Breaking) On
AudioVideoController
,AddLocalAudioSink
replacesAddLocalAudio
andModality
is passed in directly.AudioSink
replacesAudioSource
as a parameter - (Breaking) On
AudioVideoController
,RemoveLocalAudioSink
replacesRemoveLocalAudio
- (Breaking) On
AudioVideoObserver
,OnLocalAudioSourceAvailable
replacesOnLocalAudioSourceBecameAvailable
- (Breaking) On
AudioVideoObserver
,OnAudioVideoSessionConnecting
replacesAudioVideoSessionDidStartConnecting
- (Breaking) On
AudioVideoObserver
,OnAudioVideoSessionStarted
replacesAudioVideoSessionDidStart
- (Breaking) On
AudioVideoObserver
,OnAudioVideoSessionStopped
replacesAudioVideoSessionDidStop
- (Breaking) On
AudioVideoObserver
,OnRemoteAudioSourceBecameAvailable
replacesOnRemoteMixedAudioSourceAvailable
- (Breaking) Removed
AudioSourceConfiguration
- Removed usage of Unified Plan video client flag which no longer exists.
- Added
DataMessageDispatcher
to help dispatch messages by topic. - Added support for 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.
- Added
RemoteVideoSource
as part of a replacement for removingBindVideoSink
andUnbindVideoSink
fromAudioVideoController
. You can callRemoteVideoSource
'sAddVideoSink
andRemoveVideoSink
instead ofAudioVideoController
'sBindVideoSink
andUnbindVideoSink
. - Added
OnRemoteVideoSourceUnavailable
callback toAudioVideoObserver
. - Added support for receiving stereo audio.
- (Breaking) Changed
OnRemoteVideoSourceAvailable
toOnRemoteVideoSourcesAvailable
. Also changed the parameter from a shared pointer to aRemoteVideoSource
to a vector of shared pointers toRemoteVideoSource
. This is part of the changes to replaceBindVideoSink
andUnbindVideoSink
.
- (Breaking) Removed
BindVideoSink
andUnbindVideoSink
fromAudioVideoController
. See replacementRemoteVideoSource
and changes toOnRemoteVideoSourceAvailable
for details on how the replacement works
- Add media metrics functionality.
- Added active speaker functionality.
- [Breaking] Added MeetingSessionDependencies
- [Breaking] MeetingSessionConfiguration does not take MeetingSessionUrls and MeetingSessionCredentials as unique_ptr, but instead normal struct
- [Breaking] Logger is no longer exposed from
MeetingSessionConfiguration
- [Breaking]
Create
function inMeetingSession
andDefaultAudioVideoController
now takesMeetingSessionDependencies
andMeetingSessionConfiguration
as value. - [Breaking] MeetingSession no longer takes
MeetingSessionConfiguration
as pointer.
- Add turn url rewriter
- Added data message send and receive functionality.
- Added roster events functionality.
- (Breaking) Renamed enum, SampleFormat::kSigned16 to SampleFormat::kInt16.
- (Breaking) Renamed function from ToString to DebugString for MeetingSessionConfiguration, MeetingSessionURLs and MeetingSessionCredentials.
- (Breaking) Renamed struct AttendeeInfo to Attendee.
- Fixed the case when attendee wasn't present if audio source has not been added and was not sending.
- Added windows build with CMake.
- Added audio receive functionality.
- Added audio send functionality.
- Fixed empty frames sending when no content source added.
- [Documentation] Added comments.
- Added content share functionality.
- Added meeting session creation components.
- Added logger functionality.
- Added meeting lifecycle functionality.
- Added video send and receive functionality.
- Fixed video frame timestamps when used causing no video sent beyond first frame.
- Deduplicated OnRemoteVideoSourceAvailable and AudioVideoSessionDidStart callbacks.