Repository navigation
feat: Data Tracks - #1004
Merged
Merged
feat: Data Tracks#1004
Conversation
🦋 Changeset detectedLatest commit: d4c5e7a The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
davidliu
marked this pull request as draft
August 20, 2026 16:39
davidliu
marked this pull request as ready for review
August 26, 2026 18:40
Contributor
|
Compared this against the Swift (#975), JS (#1994) and Rust implementations, looking for behavior diffs. Before merge
Public surface — cheaper to settle now
Small
|
pblazej
approved these changes
Sep 11, 2026
pblazej
left a comment
Contributor
There was a problem hiding this comment.
LGTM, added 2 non-blockers above
Contributor
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Devin Review found 1 new potential issue.
2 flags not posted on this PR by your GitHub settings — view them in Devin Review. (Configure)
Merged
davidliu
added a commit
that referenced
this pull request
Sep 20, 2026
Brings in the data tracks work (#1004) and its follow-ups. Conflict resolutions: - gradle/libs.versions.toml -- kept the jna entry (main has none); dropped the duplicate livekit-uniffi [libraries] entry both sides added at different positions, keeping the placement next to jna-desktop. - Room.kt / RoomTest.kt -- kept both sides' constructor params and test setup; data streams and data tracks are independent managers. - SignalClient.kt -- took main's data-blob response handling over the TODO stubs. - protocol -- kept this branch's pointer, which already contains main's.
sabahattinseven
added a commit
to sabahattinseven/client-sdk-android-fast-match
that referenced
this pull request
Oct 3, 2026
Fork-local follow-up to livekit#1031 and a one-line extract from upstream livekit#1004. - `connectStartedAtMs` is written on the IO dispatcher in joinImpl and read and cleared on the RTC thread from the PeerConnectionStateListener, so mark it @volatile like the engine's other cross-thread flags. - close() clears the stamp alongside hasPublished so a cancelled attempt does not leave a stale start time behind. - joinImpl also negotiates the publisher when hasPublished is still set. The flag survives a full reconnect (closeResources does not reset it), and the reconnect loop then waits on publisher ICE; without fastPublish nothing produced a publisher offer before that wait, so it stalled for the ICE timeout and retried. Upstream fixed this inside the Data Tracks commit (livekit#1004), which the fork does not take. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
davidliu
added a commit
that referenced
this pull request
Oct 20, 2026
Brings in the data tracks work (#1004) and its follow-ups. Conflict resolutions: - gradle/libs.versions.toml -- kept the jna entry (main has none); dropped the duplicate livekit-uniffi [libraries] entry both sides added at different positions, keeping the placement next to jna-desktop. - Room.kt / RoomTest.kt -- kept both sides' constructor params and test setup; data streams and data tracks are independent managers. - SignalClient.kt -- took main's data-blob response handling over the TODO stubs. - protocol -- kept this branch's pointer, which already contains main's. - livekit-android-test/build.gradle -- dropped this branch's own `implementation libs.livekit.uniffi`, which the merge left duplicating the one main added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds data track support, sharing the Rust UniFFI core (
livekit-uniffi-android) with the other SDKs.Most of
room/datatrack/is a thin wrapper around that core. The Android-specific work is the WebRTC, signaling, and reconnect glue.Actual changes
RTCEngine/DataTrackFrameSender—_data_trackchannel, send backpressure, wait-for-open, reconnectSignalClient— publish / unpublish / subscriber-handle / request-response forwardingRoom,LocalParticipant,RemoteParticipant— public API, attach/park remote tracks, eventsIncomingDataTrackManager/OutgoingDataTrackManager— bridge UniFFI managers to the engineDataTrackCryptor/E2EEManager— E2EE via the existing data-packet cryptorDataChannelManager,RTCModule, test DI — channel metering and injectable factoriesSimple wrappers (FFI type/API mapping, little Android-specific logic)
LocalDataTrack,RemoteDataTrack,DataTrackStreamDataTrackFrame,DataTrackInfo,DataTrackSid,DataTrackSchema,DataTrackPublishOptions,DataTrackExceptionDataTrackManagerFactory,IncomingDataTrackEventE2E tests: https://github.com/livekit/e2e-android/pull/13