feat: Data Tracks - #1004
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 |
|
Compared this against the Swift (#975), JS (#1994) and Rust implementations, looking for behavior diffs. Before merge
Public surface — cheaper to settle now
Small
|
| private var reliableDataChannelSub: DataChannel? = null | ||
| private var lossyDataChannel: DataChannel? = null | ||
| private var lossyDataChannelSub: DataChannel? = null | ||
| private var dataTrackDataChannelSub: DataChannel? = null |
There was a problem hiding this comment.
is this dataTrackDataChannelSub needed ? I don't see how it is used rather than assign and clear, is it intentional ?
There was a problem hiding this comment.
Hmm, looks like all of the sub channels may need DataChannelManager handling, will handle in a follow up PR.
pblazej
left a comment
There was a problem hiding this comment.
LGTM, added 2 non-blockers above
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
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)
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