-
Ensure child jobs are cleaned up on ICE reconnect timeout - #870 (@davidliu)
-
Cancel websocket when join coroutine is cancelled - #871 (@davidliu)
-
Concurrency fixes for SignalClient connection - #871 (@davidliu)
-
Fixed ScreenCaptureConnection suspending forever when bindService fails and crashing when resuming canceled continuations. - #838 (@adrian-niculescu)
-
Migrate from Klaxon decoding to kotlinx-serialization for AgentAttribute deserialization - #851 (@davidliu)
-
perf: Skip Klaxon parsing for empty agent attribute maps - #849 (@YashJainSC)
-
Fix exception when parsing AgentAttribute inputs and outputs - #847 (@davidliu)
-
Properly reset network callback manager after disconnect - #841 (@davidliu)
-
Fixed audio focus not being abandoned on pre-O devices due to mismatched listener instance. - #837 (@adrian-niculescu)
-
Fixed file descriptor leak in ByteStreamSender where Source was not closed after reading. - #839 (@adrian-niculescu)
-
Fixed data race in
CameraEventsDispatchHandlerby usingCopyOnWriteArraySetfor thread-safe iteration. - #822 (@adrian-niculescu) -
Fixed Room getting stuck in CONNECTING state after failed connect attempts. - #836 (@adrian-niculescu)
-
Fix thread visibility issues in SignalClient that could cause messages to be silently dropped. - #819 (@adrian-niculescu)
-
Fix race condition when sending sync state before tracks are subscribed - #831 (@davidliu)
-
Don't throw on invalid values for Agent enum types - #847 (@davidliu)
-
Add overload for TokenSource.fromEndpoint that accepts a string for the url - #844 (@davidliu)
-
Fixed non-local return in
onConnectionQualitythat caused lost connection quality updates for remaining participants when one participant was not found in the list. - #817 (@adrian-niculescu) -
Fixed impossible empty streams check in Room.onAddTrack that could crash if WebRTC called onAddTrack with an empty streams array. - #816 (@adrian-niculescu)
-
Improve thread-safety and reconnection reliability for hasPublished flag. - #814 (@adrian-niculescu)
-
Fixed
ConcurrentModificationExceptioninLocalAudioTrack.dispose()when sinks are registered. - #820 (@adrian-niculescu) -
Fix LocalParticipant jobs map clean-up when unpublishing tracks. - #807 (@adrian-niculescu)
-
Fixed PeerConnectionTransport coroutine scope not being cancelled on close. - #818 (@adrian-niculescu)
-
Improve reconnection reliability by hardening state flags and synchronizing data channel receive state. - #806 (@adrian-niculescu)
-
Remove reference to internal OkHttp method - #811 (@davidliu)
-
Increase RTC negotiation reliability by dropping outdated sdp answers and forwarding offer ids - #813 (@davidliu)
-
Fixed ProGuard/R8 minification crash in release builds when using AgentAttributes. Added @Keep annotations to Klaxon-based data classes and updated ProGuard rules to prevent obfuscation of reflection-based JSON parsing classes. #808 - #809 (@adrian-niculescu)
-
Update WebRTC-SDK to 137.7151.05. - #824 (@davidliu)
- Fixes echo cancellation and noise suppression failing to enable.
- Fixes microphone not shutting off when muted.
-
Change TokenSource.fetch methods to return Result to explicitly handle exceptions - #802 (@davidliu)
-
Add support for multiple listeners on AudioSwitchHandler - #802 (@davidliu)
-
Deprecate Room.withPreconnectAudio method. - #802 (@davidliu)
- Set AudioTrackPublishDefaults.preconnect = true on the RoomOptions instead to use the preconnect buffer.
-
Expose agentAttributes as a value on Participant - #802 (@davidliu)
-
Expose the server info of the currently connected server on Room - #802 (@davidliu)
-
Fix crash when cleaning up local participant - #802 (@davidliu)
-
Fix crash when creating audio track for communication mode workaround - #805 (@davidliu)
- Fixed camera indicator remaining on after network disconnection by disposing orphaned tracks from failed reconnection attempts (#296) - #798 (@adrian-niculescu)
- Extract CameraXProvider and expose it. - #754 (@KasemJaffer)
- Fix camera lookup to check physicalId - #792 (@KasemJaffer)
- #721 Fixed publisher negotiation race condition causing ICE timeouts. - #789 (@adrian-niculescu)
-
End to end encryption for data channels option - #762 (@davidliu)
- Added EncryptionType fields to DataReceived events and StreamInfo objects to indicate the encryption status.
-
Add TokenSource implementation for use with token servers - #769 (@davidliu)
-
Remove unneeded suspend modifier from registerRpcMethod - #757 (@davidliu)
-
Fix crash when publishing disposed tracks - #758 (@davidliu)
-
Fix race condition when releasing Room object - #756 (@davidliu)
-
Fix VirtualBackgroundVideoProcessor not responding to changes in backgroundImage - #752 (@davidliu)
-
Ensure room is disconnected before releasing resources - #756 (@davidliu)
-
Fix crash caused by extra simulcast layers equal to original resolution - #749 (@davidliu)
-
Wrap exceptions thrown in sendText and sendFile into Result - #749 (@davidliu)
-
Return streamInfo from datastream send helper methods - #741 (@davidliu)
-
Add simulcastLayers to VideoTrackPublishOptions for directly specifying the resolutions to use - #746 (@davidliu)
-
E2E reliability for data channels with resending after reconnects - #738 (@davidliu)
-
Fix default simulcast layers using a lower than intended resolution - #746 (@davidliu)
-
Properly use screenShareTrackPublishDefaults when manually publishing a screenshare track - #746 (@davidliu)
- Fixed ProGuard rules to keep JniInit class for WebRTC native registration (#735) - #736 (@adrian-niculescu)
-
Fix IllegalStateException when switchCamera of localVideoTrack - #725 (@binkos)
-
Make blurRadius in the VirtualBackgroundTransformer variable to allow for dynamically changing the value. - #731 (@binkos)
-
Add sendText and sendFile helper methods to LocalParticipant for ease of use - #732 (@davidliu)
-
Add default name of "unknown" for StreamByteOptions to allow for no-arg construction - #732 (@davidliu)
- Refactor some internal data message sending methods to use Result instead of throwing Exceptions to - #703 (@davidliu) fix crashes.
-
Avoid a crash on reconnection when a track is disposed - #691 (@jeankruger)
- Change isMicrophoneEnabled, isCameraEnabled, isScreenshareEnabled to FlowObservable variables - #685 (@davidliu)
-
Fix switchCamera not working if the camera id is physical id - #676 (@KasemJaffer)
-
Fix sending pre-connect audio data when byte buffer has backing array - #678 (@davidliu)
-
Specify default values for StreamTextOptions and streamText - #688 (@davidliu)
-
Add pre-connect audio for use with agents - #666 (@davidliu)
See Room.withPreconnectAudio for details.
-
CameraX: support for selecting cameras by their physical id - #668 (@KasemJaffer)
-
Add rpc handler methods to Room class for convenience. - #663 (@davidliu)
-
Fix outgoing datastreams incorrectly padding data - #666 (@davidliu)
- Fixes disconnect issue - #656 (@jeankruger)
-
Fix CameraXSession not setting the target capture format correctly - #652 (@davidliu)
-
Improved handling of track publication failures by introducing a new TrackPublicationFailed event and fixing a broken state issue where the track remained active but inaccessible, causing the microphone or camera to stay on without a published track and leading to unreliable republishing. - #637 (@jeankruger)
-
Fix ConcurrentModificationException in IncomingDataStreamManager - #642 (@davidliu)
-
Dedupe supported codecs to provide valid SDP - #643 (@davidliu)
- Unpublish the screen sharing track on stop and introduce ScreenCaptureParams to be able to define the notification and set a callback for onStop - #626 (@jeankruger)
-
Fix publish deadlock when no response from server - #618 (@davidliu)
-
Add SCREEN_SHARE_AUDIO as a Track.Source.Type - #610 (@davidliu)
-
Surface canPublishSources, canUpdateMetadata, and canSubscribeMetrics on ParticipantPermission - #610 (@davidliu)
-
Fast fail attempts to publish without permissions - #618 (@davidliu)
- Fixes deadlock on publish track - #604 (@jeankruger)
-
Fix documented default of preferredDeviceList in AudioSwitchHandler - #584 (@davidliu)
-
Allow access to participant field in ParticipantAttributesChanged event - #591 (@binkos)
-
Default prioritizing speaker over earpiece - #579 (@davidliu)
-
Explicitly expose AudioSwitchHandler from Room for easier audio handling - #579 (@davidliu)
-
Add use cases to CameraX createCameraProvider - #536 (@KasemJaffer)
-
Default to scaling and cropping camera output to fit desired dimensions - #558 (@davidliu)
- This behavior may be turned off through the
VideoCaptureParams.adaptOutputToDimensions
- This behavior may be turned off through the
-
Add separate default capture/publish options for screenshare tracks - #552 (@davidliu)
-
Add AudioPresets and increase default audio max bitrate to 48kbps - #551 (@davidliu)
-
Added VideoFrameCapturer for pushing video frames directly - #538 (@davidliu)
-
Fix surface causing null pointer exception on some devices - #544 (@KasemJaffer)
-
Properly dispose peer connection on RTC thread - #506 (@davidliu)
-
Documentation updates for LocalParticipant methods - #510 (@davidliu)
-
Fix local video tracks not rendering processed frames - #495 (@davidliu)
-
Add utility class NoDropVideoProcessor to force video processing while not connected - #495 (@davidliu)
-
More fixes for crashes caused by using disposed track - #497 (@davidliu)