Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
16d0294
Upgrade protocol to v1.44.0
ladvoc Jan 31, 2026
cb8f8a8
Integrate
ladvoc Jan 31, 2026
ca66c69
generated protobuf
github-actions[bot] Jan 31, 2026
2ccb534
Data tracks core module
ladvoc Jan 31, 2026
fd1a92e
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-core
ladvoc Feb 2, 2026
7a90118
Use workspace dependencies
ladvoc Feb 2, 2026
afc10b4
Add to workspace
ladvoc Feb 3, 2026
c320670
Format
ladvoc Feb 3, 2026
ab8bb25
Add release-plz configuration
ladvoc Feb 3, 2026
d7b07a5
Used checked add
ladvoc Feb 3, 2026
7fb9c8f
Fix naming typo
ladvoc Feb 3, 2026
e951f4a
Fix inverted logic
ladvoc Feb 3, 2026
9452218
Fix potential integer overflow
ladvoc Feb 3, 2026
5bca4c6
Data tracks integration with livekit crate
ladvoc Feb 3, 2026
b4f2303
Data tracks example
ladvoc Feb 3, 2026
1347840
Add crate as workspace dependency
ladvoc Feb 3, 2026
fae05c9
Merge branch 'ladvoc/data-tracks-core' into ladvoc/data-tracks-integr…
ladvoc Feb 3, 2026
da85847
Fix typo
ladvoc Feb 4, 2026
8239631
Apply Clippy suggestions
ladvoc Feb 4, 2026
39808fe
Merge branch 'ladvoc/data-tracks-core' into ladvoc/data-tracks-integr…
ladvoc Feb 4, 2026
861755c
Integrate
ladvoc Feb 4, 2026
af1781b
Add example to workspace
ladvoc Feb 5, 2026
d2d9817
Handle DC back pressure
ladvoc Feb 5, 2026
f612712
Document DC sender
ladvoc Feb 5, 2026
63f7ed6
Clippy
ladvoc Feb 5, 2026
9e1b6c7
Detect duplicate packets
ladvoc Feb 7, 2026
b4862cf
Compare with >=
ladvoc Feb 7, 2026
5ec6439
Calculate payload length during finalize
ladvoc Feb 7, 2026
01c550a
Cast earlier in expression
ladvoc Feb 7, 2026
8d65bbe
Handle edge case in packet reassembly
ladvoc Feb 7, 2026
c117c1c
Format
ladvoc Feb 7, 2026
b920d42
Refactor extension deserialization
ladvoc Feb 7, 2026
301aedf
Use wrapping add in tests
ladvoc Feb 7, 2026
d2afd21
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-core
ladvoc Feb 9, 2026
8e4f0bc
generated protobuf
github-actions[bot] Feb 9, 2026
d1444af
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-in…
ladvoc Feb 9, 2026
8745150
Merge branch 'ladvoc/data-tracks-core' into ladvoc/data-tracks-integr…
ladvoc Feb 9, 2026
0bf2ee0
generated protobuf
github-actions[bot] Feb 9, 2026
ca40c9f
Address comment
ladvoc Feb 11, 2026
037fafc
Add packet specification
ladvoc Feb 12, 2026
cf1f9be
Format
ladvoc Feb 12, 2026
1438639
Implement drop for manager input
ladvoc Feb 12, 2026
2d7d219
Increment frame number after fallible ops
ladvoc Feb 12, 2026
ddbe67a
Merge remote-tracking branch 'origin/ladvoc/data-tracks-core' into la…
ladvoc Feb 12, 2026
ccdc012
Handle publisher side full reconnect
ladvoc Feb 12, 2026
1522a52
Merge remote-tracking branch 'origin/ladvoc/data-tracks-core' into la…
ladvoc Feb 12, 2026
7e314a8
Test publisher side full reconnect
ladvoc Feb 12, 2026
ad94670
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-core
ladvoc Feb 13, 2026
15f3359
Update protobuf
ladvoc Feb 13, 2026
1ce2601
generated protobuf
github-actions[bot] Feb 13, 2026
d0e7498
Merge remote-tracking branch 'origin/ladvoc/data-tracks-core' into la…
ladvoc Feb 14, 2026
e86ba41
Fix protocol
ladvoc Feb 14, 2026
e2583ab
Add missing clone derive
ladvoc Feb 14, 2026
cc4f741
Rename error reason case
ladvoc Feb 14, 2026
ba3636b
Unpublish on unknown handle
ladvoc Feb 14, 2026
3432333
Update protocol
ladvoc Feb 14, 2026
586dc9d
Format
ladvoc Feb 14, 2026
8529950
generated protobuf
github-actions[bot] Feb 14, 2026
9923c14
Add missing await
ladvoc Feb 14, 2026
e5d9549
Drop guard for manager input
ladvoc Feb 14, 2026
fc7e146
Remove timeout
ladvoc Feb 14, 2026
86924dd
Add doc comment
ladvoc Feb 14, 2026
38eba78
Avoid hardcoded constants
ladvoc Feb 14, 2026
0aa9412
Increase buffer counts
ladvoc Feb 14, 2026
9a85e8a
Merge remote-tracking branch 'origin/ladvoc/data-tracks-core' into la…
ladvoc Feb 14, 2026
d932ff2
Clarify intent
ladvoc Feb 14, 2026
c952b3e
Use workspace deps for example
ladvoc Feb 14, 2026
0cca8ec
Fix typo
ladvoc Feb 14, 2026
e2f3167
Format
ladvoc Feb 14, 2026
39b6bc8
Use workspace deps
ladvoc Feb 14, 2026
f5b667e
Local track support
ladvoc Feb 18, 2026
3f5a181
Remote track protocol
ladvoc Feb 18, 2026
5804054
Remote track support
ladvoc Feb 19, 2026
0cd9343
Address TODOs
ladvoc Feb 19, 2026
ac7d5a8
Docs & rename
ladvoc Feb 19, 2026
45531ef
Merge remote-tracking branch 'origin' into ladvoc/data-tracks-core
ladvoc Feb 19, 2026
dac3f02
Add invalid name error case
ladvoc Feb 20, 2026
ac7b3f8
Ignore extensions with unknown length
ladvoc Feb 20, 2026
bef4a10
Format
ladvoc Feb 20, 2026
5150309
Fix From implementation
ladvoc Feb 24, 2026
211313e
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-core
ladvoc Mar 12, 2026
20439ea
Add knope configuration
ladvoc Mar 12, 2026
a2edfba
Fix stream termination
ladvoc Mar 13, 2026
6d136bc
Merge remote-tracking branch 'origin/ladvoc/data-tracks-core' into la…
ladvoc Mar 13, 2026
e5be06c
Fix doc
ladvoc Mar 13, 2026
6811877
Use constant
ladvoc Mar 13, 2026
d5fd25d
Remove future deprecation note
ladvoc Mar 13, 2026
cca6bd1
Compatible format with JS example
ladvoc Mar 13, 2026
a2cd198
Visualization on subscriber side
ladvoc Mar 13, 2026
c130668
Fill entire tile area
ladvoc Mar 13, 2026
7d83908
Label point
ladvoc Mar 13, 2026
d604d50
Graph on both sides
ladvoc Mar 14, 2026
fee0ac7
Interactive graph on publisher side
ladvoc Mar 14, 2026
1452856
UI tweaks
ladvoc Mar 14, 2026
cba9e40
Reverse orientation
ladvoc Mar 14, 2026
93159dd
Hint when no points
ladvoc Mar 14, 2026
7efd0a8
Two byte TLV packet format
ladvoc Mar 17, 2026
296bfbe
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-core
ladvoc Mar 17, 2026
c513c70
Add changeset
ladvoc Mar 17, 2026
eb1d7d8
Remove comment
ladvoc Mar 17, 2026
920544c
Use workspace props, add description
ladvoc Mar 17, 2026
0784fe8
Merge remote-tracking branch 'origin/ladvoc/data-tracks-core' into la…
ladvoc Mar 17, 2026
4337555
Use actual bytes for extension TLV encoding
ladvoc Mar 17, 2026
0faf7c3
Skip extra bytes for future extension versions
ladvoc Mar 17, 2026
5ba7822
User customizable frame buffer size for subscriptions
ladvoc Mar 18, 2026
61f8f29
Format
ladvoc Mar 18, 2026
a7181f3
Add new method
ladvoc Mar 18, 2026
41b25dd
Additional unit tests for track managers
ladvoc Mar 18, 2026
37030fe
Fix publish/unpublish detection
ladvoc Mar 18, 2026
de06a2d
Concrete stream type for subscription
ladvoc Mar 19, 2026
7fa0bc6
Consistent public type prefixing
ladvoc Mar 19, 2026
66ff49f
Assert key index remains the same
ladvoc Mar 19, 2026
00d1d2b
Changeset
ladvoc Mar 19, 2026
d5339be
Avoid intermediate collect
ladvoc Mar 19, 2026
f615772
Format
ladvoc Mar 19, 2026
fff3d9d
Rename event
ladvoc Mar 19, 2026
ab51dc5
Add track unpublished event
ladvoc Mar 19, 2026
7b07b1d
Test track unpublished event
ladvoc Mar 19, 2026
af97e55
Merge remote-tracking branch 'origin/ladvoc/data-tracks-core' into la…
ladvoc Mar 19, 2026
15a8e53
Integrate core changes
ladvoc Mar 19, 2026
b4550df
Expose data track unpublished event
ladvoc Mar 19, 2026
fc69292
Drop prefix from event names
ladvoc Mar 19, 2026
41edcb2
Expose additional types in prelude
ladvoc Mar 19, 2026
ad19588
Merge remote-tracking branch 'origin/ladvoc/data-tracks-integration' …
ladvoc Mar 19, 2026
7a8ae8d
Integrate changes
ladvoc Mar 19, 2026
b708855
Remove prefix from proto event
ladvoc Mar 19, 2026
50c3dd5
Expose track unpublished event
ladvoc Mar 19, 2026
1d48265
Expose buffer size subscribe option
ladvoc Mar 19, 2026
0ce7049
Format
ladvoc Mar 19, 2026
bb358f3
Clamp invalid buffer size instead of panic
ladvoc Mar 19, 2026
0035a09
Merge remote-tracking branch 'origin/ladvoc/data-tracks-core' into la…
ladvoc Mar 19, 2026
32e76b9
Merge remote-tracking branch 'origin/ladvoc/data-tracks-integration' …
ladvoc Mar 19, 2026
49ed111
Do not consume track on unpublish
ladvoc Mar 20, 2026
8aa877e
Merge remote-tracking branch 'origin/ladvoc/data-tracks-core' into la…
ladvoc Mar 20, 2026
1f8c0da
Integrate changes
ladvoc Mar 20, 2026
d726acf
Merge remote-tracking branch 'origin/ladvoc/data-tracks-integration' …
ladvoc Mar 20, 2026
a8308a0
Backpressure mechanism for subscriptions
ladvoc Mar 21, 2026
79d8ae5
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-in…
ladvoc Mar 23, 2026
be26a5c
Format
ladvoc Mar 23, 2026
132ed05
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-ffi
ladvoc Mar 23, 2026
46e4541
Make data track subscription synchronous
ladvoc Mar 26, 2026
e77b899
generated protobuf
github-actions[bot] Mar 27, 2026
cfec788
DataTrackErrorCode protos
stephen-derosa Mar 31, 2026
181a933
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-in…
ladvoc Mar 31, 2026
519d782
Document timeout error reason
ladvoc Mar 31, 2026
00305b8
Rename
ladvoc Mar 31, 2026
acd4486
Handle incoming packets in single PC path
ladvoc Mar 31, 2026
9320049
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-ffi
ladvoc Mar 31, 2026
a28af33
Fix duplicate field number
ladvoc Mar 31, 2026
53f2c61
Format
ladvoc Mar 31, 2026
34ea096
generated protobuf
github-actions[bot] Mar 31, 2026
ea8dc8c
Integrate with testing util changes
ladvoc Mar 31, 2026
5a7bc95
Rename type
ladvoc Apr 1, 2026
b1493d5
Merge remote-tracking branch 'origin/ladvoc/data-tracks-integration' …
ladvoc Apr 1, 2026
95bfe5e
Rename type (ffi)
ladvoc Apr 1, 2026
3178828
Format
ladvoc Apr 1, 2026
0964a4c
Merge remote-tracking branch 'origin/main' into ladvoc/data-tracks-ffi
ladvoc Apr 2, 2026
ffa632b
Changeset
ladvoc Apr 2, 2026
e811989
generated protobuf
github-actions[bot] Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/initial_support_for_data_tracks_ffi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
livekit-ffi: minor
---

# Initial support for data tracks
10 changes: 10 additions & 0 deletions livekit-ffi-node-bindings/proto/audio_frame_pb.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,11 @@ export declare class NewAudioStreamRequest extends Message<NewAudioStreamRequest
* default bounded queue size of 10 frames. Set it to 0 to request unbounded
* buffering.
*
* If your application consumes both audio and video, keep the queue sizing
* strategy coordinated across both streams. Using a much larger queue, or
* unbounded buffering, for only one of them can increase end-to-end latency
* for that stream and cause audio/video drift.
*
* @generated from field: optional uint32 queue_size_frames = 8;
*/
queueSizeFrames?: number;
Expand Down Expand Up @@ -284,6 +289,11 @@ export declare class AudioStreamFromParticipantRequest extends Message<AudioStre
* default bounded queue size of 10 frames. Set it to 0 to request unbounded
* buffering.
*
* If your application consumes both audio and video, keep the queue sizing
* strategy coordinated across both streams. Using a much larger queue, or
* unbounded buffering, for only one of them can increase end-to-end latency
* for that stream and cause audio/video drift.
*
* @generated from field: optional uint32 queue_size_frames = 10;
*/
queueSizeFrames?: number;
Expand Down
109 changes: 109 additions & 0 deletions livekit-ffi-node-bindings/proto/ffi_pb.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import type { E2eeRequest, E2eeResponse } from "./e2ee_pb.js";
import type { PerformRpcCallback, PerformRpcRequest, PerformRpcResponse, RegisterRpcMethodRequest, RegisterRpcMethodResponse, RpcMethodInvocationEvent, RpcMethodInvocationResponseRequest, RpcMethodInvocationResponseResponse, UnregisterRpcMethodRequest, UnregisterRpcMethodResponse } from "./rpc_pb.js";
import type { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, SetRemoteTrackPublicationQualityRequest, SetRemoteTrackPublicationQualityResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } from "./track_publication_pb.js";
import type { ByteStreamOpenCallback, ByteStreamOpenRequest, ByteStreamOpenResponse, ByteStreamReaderEvent, ByteStreamReaderReadAllCallback, ByteStreamReaderReadAllRequest, ByteStreamReaderReadAllResponse, ByteStreamReaderReadIncrementalRequest, ByteStreamReaderReadIncrementalResponse, ByteStreamReaderWriteToFileCallback, ByteStreamReaderWriteToFileRequest, ByteStreamReaderWriteToFileResponse, ByteStreamWriterCloseCallback, ByteStreamWriterCloseRequest, ByteStreamWriterCloseResponse, ByteStreamWriterWriteCallback, ByteStreamWriterWriteRequest, ByteStreamWriterWriteResponse, StreamSendBytesCallback, StreamSendBytesRequest, StreamSendBytesResponse, StreamSendFileCallback, StreamSendFileRequest, StreamSendFileResponse, StreamSendTextCallback, StreamSendTextRequest, StreamSendTextResponse, TextStreamOpenCallback, TextStreamOpenRequest, TextStreamOpenResponse, TextStreamReaderEvent, TextStreamReaderReadAllCallback, TextStreamReaderReadAllRequest, TextStreamReaderReadAllResponse, TextStreamReaderReadIncrementalRequest, TextStreamReaderReadIncrementalResponse, TextStreamWriterCloseCallback, TextStreamWriterCloseRequest, TextStreamWriterCloseResponse, TextStreamWriterWriteCallback, TextStreamWriterWriteRequest, TextStreamWriterWriteResponse } from "./data_stream_pb.js";
import type { DataTrackStreamEvent, DataTrackStreamReadRequest, DataTrackStreamReadResponse, LocalDataTrackIsPublishedRequest, LocalDataTrackIsPublishedResponse, LocalDataTrackTryPushRequest, LocalDataTrackTryPushResponse, LocalDataTrackUnpublishRequest, LocalDataTrackUnpublishResponse, PublishDataTrackCallback, PublishDataTrackRequest, PublishDataTrackResponse, RemoteDataTrackIsPublishedRequest, RemoteDataTrackIsPublishedResponse, SubscribeDataTrackRequest, SubscribeDataTrackResponse } from "./data_track_pb.js";

/**
* @generated from enum livekit.proto.LogLevel
Expand Down Expand Up @@ -490,6 +491,52 @@ export declare class FfiRequest extends Message<FfiRequest> {
*/
value: SetRemoteTrackPublicationQualityRequest;
case: "setRemoteTrackPublicationQuality";
} | {
/**
* Data Track (local)
*
* @generated from field: livekit.proto.PublishDataTrackRequest publish_data_track = 69;
*/
value: PublishDataTrackRequest;
case: "publishDataTrack";
} | {
/**
* @generated from field: livekit.proto.LocalDataTrackTryPushRequest local_data_track_try_push = 70;
*/
value: LocalDataTrackTryPushRequest;
case: "localDataTrackTryPush";
} | {
/**
* @generated from field: livekit.proto.LocalDataTrackUnpublishRequest local_data_track_unpublish = 71;
*/
value: LocalDataTrackUnpublishRequest;
case: "localDataTrackUnpublish";
} | {
/**
* @generated from field: livekit.proto.LocalDataTrackIsPublishedRequest local_data_track_is_published = 72;
*/
value: LocalDataTrackIsPublishedRequest;
case: "localDataTrackIsPublished";
} | {
/**
* Data Track (remote)
*
* @generated from field: livekit.proto.SubscribeDataTrackRequest subscribe_data_track = 73;
*/
value: SubscribeDataTrackRequest;
case: "subscribeDataTrack";
} | {
/**
* @generated from field: livekit.proto.RemoteDataTrackIsPublishedRequest remote_data_track_is_published = 74;
*/
value: RemoteDataTrackIsPublishedRequest;
case: "remoteDataTrackIsPublished";
} | {
/**
* @generated from field: livekit.proto.DataTrackStreamReadRequest data_track_stream_read = 75;
*/
value: DataTrackStreamReadRequest;
case: "dataTrackStreamRead";
} | { case: undefined; value?: undefined };

constructor(data?: PartialMessage<FfiRequest>);
Expand Down Expand Up @@ -932,6 +979,52 @@ export declare class FfiResponse extends Message<FfiResponse> {
*/
value: SetRemoteTrackPublicationQualityResponse;
case: "setRemoteTrackPublicationQuality";
} | {
/**
* Data Track (local)
*
* @generated from field: livekit.proto.PublishDataTrackResponse publish_data_track = 68;
*/
value: PublishDataTrackResponse;
case: "publishDataTrack";
} | {
/**
* @generated from field: livekit.proto.LocalDataTrackTryPushResponse local_data_track_try_push = 69;
*/
value: LocalDataTrackTryPushResponse;
case: "localDataTrackTryPush";
} | {
/**
* @generated from field: livekit.proto.LocalDataTrackUnpublishResponse local_data_track_unpublish = 70;
*/
value: LocalDataTrackUnpublishResponse;
case: "localDataTrackUnpublish";
} | {
/**
* @generated from field: livekit.proto.LocalDataTrackIsPublishedResponse local_data_track_is_published = 71;
*/
value: LocalDataTrackIsPublishedResponse;
case: "localDataTrackIsPublished";
} | {
/**
* Data Track (remote)
*
* @generated from field: livekit.proto.SubscribeDataTrackResponse subscribe_data_track = 72;
*/
value: SubscribeDataTrackResponse;
case: "subscribeDataTrack";
} | {
/**
* @generated from field: livekit.proto.RemoteDataTrackIsPublishedResponse remote_data_track_is_published = 73;
*/
value: RemoteDataTrackIsPublishedResponse;
case: "remoteDataTrackIsPublished";
} | {
/**
* @generated from field: livekit.proto.DataTrackStreamReadResponse data_track_stream_read = 74;
*/
value: DataTrackStreamReadResponse;
case: "dataTrackStreamRead";
} | { case: undefined; value?: undefined };

constructor(data?: PartialMessage<FfiResponse>);
Expand Down Expand Up @@ -1204,6 +1297,22 @@ export declare class FfiEvent extends Message<FfiEvent> {
*/
value: StreamSendBytesCallback;
case: "sendBytes";
} | {
/**
* Data Track (local)
*
* @generated from field: livekit.proto.PublishDataTrackCallback publish_data_track = 42;
*/
value: PublishDataTrackCallback;
case: "publishDataTrack";
} | {
/**
* Data Track (remote)
*
* @generated from field: livekit.proto.DataTrackStreamEvent data_track_stream_event = 43;
*/
value: DataTrackStreamEvent;
case: "dataTrackStreamEvent";
} | { case: undefined; value?: undefined };

constructor(data?: PartialMessage<FfiEvent>);
Expand Down
17 changes: 17 additions & 0 deletions livekit-ffi-node-bindings/proto/ffi_pb.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ const { E2eeRequest, E2eeResponse } = require("./e2ee_pb.js");
const { PerformRpcCallback, PerformRpcRequest, PerformRpcResponse, RegisterRpcMethodRequest, RegisterRpcMethodResponse, RpcMethodInvocationEvent, RpcMethodInvocationResponseRequest, RpcMethodInvocationResponseResponse, UnregisterRpcMethodRequest, UnregisterRpcMethodResponse } = require("./rpc_pb.js");
const { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, SetRemoteTrackPublicationQualityRequest, SetRemoteTrackPublicationQualityResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } = require("./track_publication_pb.js");
const { ByteStreamOpenCallback, ByteStreamOpenRequest, ByteStreamOpenResponse, ByteStreamReaderEvent, ByteStreamReaderReadAllCallback, ByteStreamReaderReadAllRequest, ByteStreamReaderReadAllResponse, ByteStreamReaderReadIncrementalRequest, ByteStreamReaderReadIncrementalResponse, ByteStreamReaderWriteToFileCallback, ByteStreamReaderWriteToFileRequest, ByteStreamReaderWriteToFileResponse, ByteStreamWriterCloseCallback, ByteStreamWriterCloseRequest, ByteStreamWriterCloseResponse, ByteStreamWriterWriteCallback, ByteStreamWriterWriteRequest, ByteStreamWriterWriteResponse, StreamSendBytesCallback, StreamSendBytesRequest, StreamSendBytesResponse, StreamSendFileCallback, StreamSendFileRequest, StreamSendFileResponse, StreamSendTextCallback, StreamSendTextRequest, StreamSendTextResponse, TextStreamOpenCallback, TextStreamOpenRequest, TextStreamOpenResponse, TextStreamReaderEvent, TextStreamReaderReadAllCallback, TextStreamReaderReadAllRequest, TextStreamReaderReadAllResponse, TextStreamReaderReadIncrementalRequest, TextStreamReaderReadIncrementalResponse, TextStreamWriterCloseCallback, TextStreamWriterCloseRequest, TextStreamWriterCloseResponse, TextStreamWriterWriteCallback, TextStreamWriterWriteRequest, TextStreamWriterWriteResponse } = require("./data_stream_pb.js");
const { DataTrackStreamEvent, DataTrackStreamReadRequest, DataTrackStreamReadResponse, LocalDataTrackIsPublishedRequest, LocalDataTrackIsPublishedResponse, LocalDataTrackTryPushRequest, LocalDataTrackTryPushResponse, LocalDataTrackUnpublishRequest, LocalDataTrackUnpublishResponse, PublishDataTrackCallback, PublishDataTrackRequest, PublishDataTrackResponse, RemoteDataTrackIsPublishedRequest, RemoteDataTrackIsPublishedResponse, SubscribeDataTrackRequest, SubscribeDataTrackResponse } = require("./data_track_pb.js");

/**
* @generated from enum livekit.proto.LogLevel
Expand Down Expand Up @@ -120,6 +121,13 @@ const FfiRequest = /*@__PURE__*/ proto2.makeMessageType(
{ no: 66, name: "text_stream_close", kind: "message", T: TextStreamWriterCloseRequest, oneof: "message" },
{ no: 67, name: "send_bytes", kind: "message", T: StreamSendBytesRequest, oneof: "message" },
{ no: 68, name: "set_remote_track_publication_quality", kind: "message", T: SetRemoteTrackPublicationQualityRequest, oneof: "message" },
{ no: 69, name: "publish_data_track", kind: "message", T: PublishDataTrackRequest, oneof: "message" },
{ no: 70, name: "local_data_track_try_push", kind: "message", T: LocalDataTrackTryPushRequest, oneof: "message" },
{ no: 71, name: "local_data_track_unpublish", kind: "message", T: LocalDataTrackUnpublishRequest, oneof: "message" },
{ no: 72, name: "local_data_track_is_published", kind: "message", T: LocalDataTrackIsPublishedRequest, oneof: "message" },
{ no: 73, name: "subscribe_data_track", kind: "message", T: SubscribeDataTrackRequest, oneof: "message" },
{ no: 74, name: "remote_data_track_is_published", kind: "message", T: RemoteDataTrackIsPublishedRequest, oneof: "message" },
{ no: 75, name: "data_track_stream_read", kind: "message", T: DataTrackStreamReadRequest, oneof: "message" },
],
);

Expand Down Expand Up @@ -197,6 +205,13 @@ const FfiResponse = /*@__PURE__*/ proto2.makeMessageType(
{ no: 65, name: "text_stream_close", kind: "message", T: TextStreamWriterCloseResponse, oneof: "message" },
{ no: 66, name: "send_bytes", kind: "message", T: StreamSendBytesResponse, oneof: "message" },
{ no: 67, name: "set_remote_track_publication_quality", kind: "message", T: SetRemoteTrackPublicationQualityResponse, oneof: "message" },
{ no: 68, name: "publish_data_track", kind: "message", T: PublishDataTrackResponse, oneof: "message" },
{ no: 69, name: "local_data_track_try_push", kind: "message", T: LocalDataTrackTryPushResponse, oneof: "message" },
{ no: 70, name: "local_data_track_unpublish", kind: "message", T: LocalDataTrackUnpublishResponse, oneof: "message" },
{ no: 71, name: "local_data_track_is_published", kind: "message", T: LocalDataTrackIsPublishedResponse, oneof: "message" },
{ no: 72, name: "subscribe_data_track", kind: "message", T: SubscribeDataTrackResponse, oneof: "message" },
{ no: 73, name: "remote_data_track_is_published", kind: "message", T: RemoteDataTrackIsPublishedResponse, oneof: "message" },
{ no: 74, name: "data_track_stream_read", kind: "message", T: DataTrackStreamReadResponse, oneof: "message" },
],
);

Expand Down Expand Up @@ -250,6 +265,8 @@ const FfiEvent = /*@__PURE__*/ proto2.makeMessageType(
{ no: 39, name: "text_stream_writer_close", kind: "message", T: TextStreamWriterCloseCallback, oneof: "message" },
{ no: 40, name: "send_text", kind: "message", T: StreamSendTextCallback, oneof: "message" },
{ no: 41, name: "send_bytes", kind: "message", T: StreamSendBytesCallback, oneof: "message" },
{ no: 42, name: "publish_data_track", kind: "message", T: PublishDataTrackCallback, oneof: "message" },
{ no: 43, name: "data_track_stream_event", kind: "message", T: DataTrackStreamEvent, oneof: "message" },
],
);

Expand Down
67 changes: 67 additions & 0 deletions livekit-ffi-node-bindings/proto/room_pb.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import type { VideoCodec } from "./video_frame_pb.js";
import type { E2eeOptions, EncryptionState } from "./e2ee_pb.js";
import type { FfiOwnedHandle } from "./handle_pb.js";
import type { OwnedByteStreamReader, OwnedTextStreamReader } from "./data_stream_pb.js";
import type { OwnedRemoteDataTrack } from "./data_track_pb.js";

/**
* @generated from enum livekit.proto.IceTransportType
Expand Down Expand Up @@ -2157,6 +2158,18 @@ export declare class RoomEvent extends Message<RoomEvent> {
*/
value: ParticipantActive;
case: "participantActive";
} | {
/**
* @generated from field: livekit.proto.DataTrackPublished data_track_published = 43;
*/
value: DataTrackPublished;
case: "dataTrackPublished";
} | {
/**
* @generated from field: livekit.proto.DataTrackUnpublished data_track_unpublished = 44;
*/
value: DataTrackUnpublished;
case: "dataTrackUnpublished";
} | { case: undefined; value?: undefined };

constructor(data?: PartialMessage<RoomEvent>);
Expand Down Expand Up @@ -4133,3 +4146,57 @@ export declare class TextStreamOpened extends Message<TextStreamOpened> {
static equals(a: TextStreamOpened | PlainMessage<TextStreamOpened> | undefined, b: TextStreamOpened | PlainMessage<TextStreamOpened> | undefined): boolean;
}

/**
* A remote participant published a data track.
*
* @generated from message livekit.proto.DataTrackPublished
*/
export declare class DataTrackPublished extends Message<DataTrackPublished> {
/**
* @generated from field: required livekit.proto.OwnedRemoteDataTrack track = 1;
*/
track?: OwnedRemoteDataTrack;

constructor(data?: PartialMessage<DataTrackPublished>);

static readonly runtime: typeof proto2;
static readonly typeName = "livekit.proto.DataTrackPublished";
static readonly fields: FieldList;

static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DataTrackPublished;

static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DataTrackPublished;

static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DataTrackPublished;

static equals(a: DataTrackPublished | PlainMessage<DataTrackPublished> | undefined, b: DataTrackPublished | PlainMessage<DataTrackPublished> | undefined): boolean;
}

/**
* A remote participant unpublished a data track.
*
* @generated from message livekit.proto.DataTrackUnpublished
*/
export declare class DataTrackUnpublished extends Message<DataTrackUnpublished> {
/**
* SID of the track that was unpublished.
*
* @generated from field: required string sid = 1;
*/
sid?: string;

constructor(data?: PartialMessage<DataTrackUnpublished>);

static readonly runtime: typeof proto2;
static readonly typeName = "livekit.proto.DataTrackUnpublished";
static readonly fields: FieldList;

static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DataTrackUnpublished;

static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DataTrackUnpublished;

static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DataTrackUnpublished;

static equals(a: DataTrackUnpublished | PlainMessage<DataTrackUnpublished> | undefined, b: DataTrackUnpublished | PlainMessage<DataTrackUnpublished> | undefined): boolean;
}

29 changes: 29 additions & 0 deletions livekit-ffi-node-bindings/proto/room_pb.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const { VideoCodec } = require("./video_frame_pb.js");
const { E2eeOptions, EncryptionState } = require("./e2ee_pb.js");
const { FfiOwnedHandle } = require("./handle_pb.js");
const { OwnedByteStreamReader, OwnedTextStreamReader } = require("./data_stream_pb.js");
const { OwnedRemoteDataTrack } = require("./data_track_pb.js");

/**
* @generated from enum livekit.proto.IceTransportType
Expand Down Expand Up @@ -770,6 +771,8 @@ const RoomEvent = /*@__PURE__*/ proto2.makeMessageType(
{ no: 41, name: "participant_permission_changed", kind: "message", T: ParticipantPermissionChanged, oneof: "message" },
{ no: 40, name: "token_refreshed", kind: "message", T: TokenRefreshed, oneof: "message" },
{ no: 42, name: "participant_active", kind: "message", T: ParticipantActive, oneof: "message" },
{ no: 43, name: "data_track_published", kind: "message", T: DataTrackPublished, oneof: "message" },
{ no: 44, name: "data_track_unpublished", kind: "message", T: DataTrackUnpublished, oneof: "message" },
],
);

Expand Down Expand Up @@ -1492,6 +1495,30 @@ const TextStreamOpened = /*@__PURE__*/ proto2.makeMessageType(
],
);

/**
* A remote participant published a data track.
*
* @generated from message livekit.proto.DataTrackPublished
*/
const DataTrackPublished = /*@__PURE__*/ proto2.makeMessageType(
"livekit.proto.DataTrackPublished",
() => [
{ no: 1, name: "track", kind: "message", T: OwnedRemoteDataTrack, req: true },
],
);

/**
* A remote participant unpublished a data track.
*
* @generated from message livekit.proto.DataTrackUnpublished
*/
const DataTrackUnpublished = /*@__PURE__*/ proto2.makeMessageType(
"livekit.proto.DataTrackUnpublished",
() => [
{ no: 1, name: "sid", kind: "scalar", T: 9 /* ScalarType.STRING */, req: true },
],
);


exports.IceTransportType = IceTransportType;
exports.ContinualGatheringPolicy = ContinualGatheringPolicy;
Expand Down Expand Up @@ -1614,3 +1641,5 @@ exports.SetDataChannelBufferedAmountLowThresholdResponse = SetDataChannelBuffere
exports.DataChannelBufferedAmountLowThresholdChanged = DataChannelBufferedAmountLowThresholdChanged;
exports.ByteStreamOpened = ByteStreamOpened;
exports.TextStreamOpened = TextStreamOpened;
exports.DataTrackPublished = DataTrackPublished;
exports.DataTrackUnpublished = DataTrackUnpublished;
Loading
Loading