@livekit/rtc-node 0.13.21 → 0.13.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/async_queue.cjs +80 -0
  2. package/dist/async_queue.cjs.map +1 -0
  3. package/dist/async_queue.d.cts +30 -0
  4. package/dist/async_queue.d.ts +30 -0
  5. package/dist/async_queue.d.ts.map +1 -0
  6. package/dist/async_queue.js +56 -0
  7. package/dist/async_queue.js.map +1 -0
  8. package/dist/audio_frame.cjs +5 -0
  9. package/dist/audio_frame.cjs.map +1 -1
  10. package/dist/audio_frame.d.cts +3 -0
  11. package/dist/audio_frame.d.ts +3 -0
  12. package/dist/audio_frame.d.ts.map +1 -1
  13. package/dist/audio_frame.js +5 -0
  14. package/dist/audio_frame.js.map +1 -1
  15. package/dist/audio_mixer.cjs +281 -0
  16. package/dist/audio_mixer.cjs.map +1 -0
  17. package/dist/audio_mixer.d.cts +121 -0
  18. package/dist/audio_mixer.d.ts +121 -0
  19. package/dist/audio_mixer.d.ts.map +1 -0
  20. package/dist/audio_mixer.js +256 -0
  21. package/dist/audio_mixer.js.map +1 -0
  22. package/dist/audio_stream.cjs +18 -5
  23. package/dist/audio_stream.cjs.map +1 -1
  24. package/dist/audio_stream.d.cts +4 -3
  25. package/dist/audio_stream.d.ts +4 -3
  26. package/dist/audio_stream.d.ts.map +1 -1
  27. package/dist/audio_stream.js +18 -5
  28. package/dist/audio_stream.js.map +1 -1
  29. package/dist/data_streams/stream_reader.cjs.map +1 -1
  30. package/dist/data_streams/stream_reader.js.map +1 -1
  31. package/dist/frame_processor.cjs +38 -0
  32. package/dist/frame_processor.cjs.map +1 -0
  33. package/dist/frame_processor.d.cts +29 -0
  34. package/dist/frame_processor.d.ts +29 -0
  35. package/dist/frame_processor.d.ts.map +1 -0
  36. package/dist/frame_processor.js +14 -0
  37. package/dist/frame_processor.js.map +1 -0
  38. package/dist/index.cjs +6 -0
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.d.cts +3 -0
  41. package/dist/index.d.ts +3 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +6 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/participant.cjs +4 -4
  46. package/dist/participant.cjs.map +1 -1
  47. package/dist/participant.d.cts +2 -2
  48. package/dist/participant.d.ts +2 -2
  49. package/dist/participant.d.ts.map +1 -1
  50. package/dist/participant.js +4 -4
  51. package/dist/participant.js.map +1 -1
  52. package/dist/proto/audio_frame_pb.cjs.map +1 -1
  53. package/dist/proto/audio_frame_pb.js.map +1 -1
  54. package/dist/proto/e2ee_pb.cjs.map +1 -1
  55. package/dist/proto/e2ee_pb.js.map +1 -1
  56. package/dist/proto/ffi_pb.cjs +4 -2
  57. package/dist/proto/ffi_pb.cjs.map +1 -1
  58. package/dist/proto/ffi_pb.d.cts +13 -1
  59. package/dist/proto/ffi_pb.d.ts +13 -1
  60. package/dist/proto/ffi_pb.d.ts.map +1 -1
  61. package/dist/proto/ffi_pb.js +5 -3
  62. package/dist/proto/ffi_pb.js.map +1 -1
  63. package/dist/proto/handle_pb.cjs.map +1 -1
  64. package/dist/proto/handle_pb.js.map +1 -1
  65. package/dist/proto/participant_pb.cjs +26 -4
  66. package/dist/proto/participant_pb.cjs.map +1 -1
  67. package/dist/proto/participant_pb.d.cts +31 -2
  68. package/dist/proto/participant_pb.d.ts +31 -2
  69. package/dist/proto/participant_pb.d.ts.map +1 -1
  70. package/dist/proto/participant_pb.js +24 -3
  71. package/dist/proto/participant_pb.js.map +1 -1
  72. package/dist/proto/room_pb.cjs +29 -2
  73. package/dist/proto/room_pb.cjs.map +1 -1
  74. package/dist/proto/room_pb.d.cts +30 -7
  75. package/dist/proto/room_pb.d.ts +30 -7
  76. package/dist/proto/room_pb.d.ts.map +1 -1
  77. package/dist/proto/room_pb.js +28 -2
  78. package/dist/proto/room_pb.js.map +1 -1
  79. package/dist/proto/rpc_pb.cjs.map +1 -1
  80. package/dist/proto/rpc_pb.js.map +1 -1
  81. package/dist/proto/stats_pb.cjs.map +1 -1
  82. package/dist/proto/stats_pb.js.map +1 -1
  83. package/dist/proto/track_pb.cjs.map +1 -1
  84. package/dist/proto/track_pb.js.map +1 -1
  85. package/dist/proto/track_publication_pb.cjs +66 -2
  86. package/dist/proto/track_publication_pb.cjs.map +1 -1
  87. package/dist/proto/track_publication_pb.d.cts +56 -1
  88. package/dist/proto/track_publication_pb.d.ts +56 -1
  89. package/dist/proto/track_publication_pb.d.ts.map +1 -1
  90. package/dist/proto/track_publication_pb.js +62 -1
  91. package/dist/proto/track_publication_pb.js.map +1 -1
  92. package/dist/proto/video_frame_pb.cjs +3 -1
  93. package/dist/proto/video_frame_pb.cjs.map +1 -1
  94. package/dist/proto/video_frame_pb.d.cts +5 -1
  95. package/dist/proto/video_frame_pb.d.ts +5 -1
  96. package/dist/proto/video_frame_pb.d.ts.map +1 -1
  97. package/dist/proto/video_frame_pb.js +3 -1
  98. package/dist/proto/video_frame_pb.js.map +1 -1
  99. package/dist/room.cjs +286 -288
  100. package/dist/room.cjs.map +1 -1
  101. package/dist/room.d.cts +11 -11
  102. package/dist/room.d.ts +11 -11
  103. package/dist/room.d.ts.map +1 -1
  104. package/dist/room.js +287 -289
  105. package/dist/room.js.map +1 -1
  106. package/dist/version.cjs +1 -1
  107. package/dist/version.cjs.map +1 -1
  108. package/dist/version.d.cts +1 -1
  109. package/dist/version.d.ts +1 -1
  110. package/dist/version.js +1 -1
  111. package/dist/version.js.map +1 -1
  112. package/package.json +9 -8
  113. package/src/async_queue.test.ts +250 -0
  114. package/src/async_queue.ts +80 -0
  115. package/src/audio_frame.ts +7 -0
  116. package/src/audio_mixer.test.ts +167 -0
  117. package/src/audio_mixer.ts +407 -0
  118. package/src/audio_stream.ts +22 -7
  119. package/src/data_streams/stream_reader.ts +4 -4
  120. package/src/frame_processor.ts +29 -0
  121. package/src/index.ts +6 -0
  122. package/src/participant.ts +5 -5
  123. package/src/proto/audio_frame_pb.ts +1 -1
  124. package/src/proto/e2ee_pb.ts +1 -1
  125. package/src/proto/ffi_pb.ts +16 -2
  126. package/src/proto/handle_pb.ts +1 -1
  127. package/src/proto/participant_pb.ts +45 -1
  128. package/src/proto/room_pb.ts +52 -8
  129. package/src/proto/rpc_pb.ts +1 -1
  130. package/src/proto/stats_pb.ts +1 -1
  131. package/src/proto/track_pb.ts +1 -1
  132. package/src/proto/track_publication_pb.ts +105 -1
  133. package/src/proto/video_frame_pb.ts +7 -1
  134. package/src/room.ts +297 -300
  135. package/src/version.ts +1 -1
@@ -0,0 +1,29 @@
1
+ // SPDX-FileCopyrightText: 2025 LiveKit, Inc.
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import { type AudioFrame } from './audio_frame.js';
5
+ import { type VideoFrame } from './video_frame.js';
6
+
7
+ export type FrameProcessorStreamInfo = {
8
+ roomName: string;
9
+ participantIdentity: string;
10
+ publicationSid: string;
11
+ };
12
+
13
+ export type FrameProcessorCredentials = {
14
+ token: string;
15
+ url: string;
16
+ };
17
+
18
+ export abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {
19
+ abstract isEnabled(): boolean;
20
+ abstract setEnabled(enabled: boolean): void;
21
+
22
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ onStreamInfoUpdated(_info: FrameProcessorStreamInfo): void {}
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
+ onCredentialsUpdated(_credentials: FrameProcessorCredentials): void {}
26
+
27
+ abstract process(frame: Frame): Frame;
28
+ abstract close(): void;
29
+ }
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@ export { AudioSource } from './audio_source.js';
8
8
  export { AudioStream } from './audio_stream.js';
9
9
  export type { NoiseCancellationOptions } from './audio_stream.js';
10
10
  export { AudioFilter } from './audio_filter.js';
11
+ export { AudioMixer, type AudioMixerOptions } from './audio_mixer.js';
11
12
  export * from './data_streams/index.js';
12
13
  export { E2EEManager, FrameCryptor, KeyProvider } from './e2ee.js';
13
14
  export type { E2EEOptions, KeyProviderOptions } from './e2ee.js';
@@ -49,3 +50,8 @@ export type { ChatMessage } from './types.js';
49
50
  export { VideoFrame } from './video_frame.js';
50
51
  export { VideoSource } from './video_source.js';
51
52
  export { VideoStream, type VideoFrameEvent } from './video_stream.js';
53
+ export {
54
+ FrameProcessor,
55
+ type FrameProcessorStreamInfo,
56
+ type FrameProcessorCredentials,
57
+ } from './frame_processor.js';
@@ -155,13 +155,13 @@ export type DataPublishOptions = {
155
155
  export class LocalParticipant extends Participant {
156
156
  private rpcHandlers: Map<string, (data: RpcInvocationData) => Promise<string>> = new Map();
157
157
 
158
- private roomEventLock: Mutex;
158
+ private ffiEventLock: Mutex;
159
159
 
160
160
  trackPublications: Map<string, LocalTrackPublication> = new Map();
161
161
 
162
- constructor(info: OwnedParticipant, roomEventLock: Mutex) {
162
+ constructor(info: OwnedParticipant, ffiEventLock: Mutex) {
163
163
  super(info);
164
- this.roomEventLock = roomEventLock;
164
+ this.ffiEventLock = ffiEventLock;
165
165
  }
166
166
 
167
167
  async publishData(data: Uint8Array, options: DataPublishOptions) {
@@ -662,7 +662,7 @@ export class LocalParticipant extends Participant {
662
662
  options: options,
663
663
  });
664
664
 
665
- const unlock = await this.roomEventLock.lock();
665
+ const unlock = await this.ffiEventLock.lock();
666
666
 
667
667
  const res = FfiClient.instance.request<PublishTrackResponse>({
668
668
  message: { case: 'publishTrack', value: req },
@@ -690,7 +690,7 @@ export class LocalParticipant extends Participant {
690
690
  }
691
691
 
692
692
  async unpublishTrack(trackSid: string, stopOnUnpublish?: boolean) {
693
- const unlock = await this.roomEventLock.lock();
693
+ const unlock = await this.ffiEventLock.lock();
694
694
  try {
695
695
  const req = new UnpublishTrackRequest({
696
696
  localParticipantHandle: this.ffi_handle.handle,
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -25,7 +25,7 @@ import { CaptureVideoFrameRequest, CaptureVideoFrameResponse, NewVideoSourceRequ
25
25
  import { ApmProcessReverseStreamRequest, ApmProcessReverseStreamResponse, ApmProcessStreamRequest, ApmProcessStreamResponse, ApmSetStreamDelayRequest, ApmSetStreamDelayResponse, AudioStreamEvent, AudioStreamFromParticipantRequest, AudioStreamFromParticipantResponse, CaptureAudioFrameCallback, CaptureAudioFrameRequest, CaptureAudioFrameResponse, ClearAudioBufferRequest, ClearAudioBufferResponse, FlushSoxResamplerRequest, FlushSoxResamplerResponse, LoadAudioFilterPluginRequest, LoadAudioFilterPluginResponse, NewApmRequest, NewApmResponse, NewAudioResamplerRequest, NewAudioResamplerResponse, NewAudioSourceRequest, NewAudioSourceResponse, NewAudioStreamRequest, NewAudioStreamResponse, NewSoxResamplerRequest, NewSoxResamplerResponse, PushSoxResamplerRequest, PushSoxResamplerResponse, RemixAndResampleRequest, RemixAndResampleResponse } from "./audio_frame_pb.js";
26
26
  import { E2eeRequest, E2eeResponse } from "./e2ee_pb.js";
27
27
  import { PerformRpcCallback, PerformRpcRequest, PerformRpcResponse, RegisterRpcMethodRequest, RegisterRpcMethodResponse, RpcMethodInvocationEvent, RpcMethodInvocationResponseRequest, RpcMethodInvocationResponseResponse, UnregisterRpcMethodRequest, UnregisterRpcMethodResponse } from "./rpc_pb.js";
28
- import { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } from "./track_publication_pb.js";
28
+ import { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, SetRemoteTrackPublicationQualityRequest, SetRemoteTrackPublicationQualityResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } from "./track_publication_pb.js";
29
29
  import { 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";
30
30
 
31
31
  /**
@@ -492,6 +492,12 @@ export class FfiRequest extends Message<FfiRequest> {
492
492
  */
493
493
  value: StreamSendBytesRequest;
494
494
  case: "sendBytes";
495
+ } | {
496
+ /**
497
+ * @generated from field: livekit.proto.SetRemoteTrackPublicationQualityRequest set_remote_track_publication_quality = 68;
498
+ */
499
+ value: SetRemoteTrackPublicationQualityRequest;
500
+ case: "setRemoteTrackPublicationQuality";
495
501
  } | { case: undefined; value?: undefined } = { case: undefined };
496
502
 
497
503
  constructor(data?: PartialMessage<FfiRequest>) {
@@ -568,6 +574,7 @@ export class FfiRequest extends Message<FfiRequest> {
568
574
  { no: 65, name: "text_stream_write", kind: "message", T: TextStreamWriterWriteRequest, oneof: "message" },
569
575
  { no: 66, name: "text_stream_close", kind: "message", T: TextStreamWriterCloseRequest, oneof: "message" },
570
576
  { no: 67, name: "send_bytes", kind: "message", T: StreamSendBytesRequest, oneof: "message" },
577
+ { no: 68, name: "set_remote_track_publication_quality", kind: "message", T: SetRemoteTrackPublicationQualityRequest, oneof: "message" },
571
578
  ]);
572
579
 
573
580
  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FfiRequest {
@@ -1006,6 +1013,12 @@ export class FfiResponse extends Message<FfiResponse> {
1006
1013
  */
1007
1014
  value: StreamSendBytesResponse;
1008
1015
  case: "sendBytes";
1016
+ } | {
1017
+ /**
1018
+ * @generated from field: livekit.proto.SetRemoteTrackPublicationQualityResponse set_remote_track_publication_quality = 67;
1019
+ */
1020
+ value: SetRemoteTrackPublicationQualityResponse;
1021
+ case: "setRemoteTrackPublicationQuality";
1009
1022
  } | { case: undefined; value?: undefined } = { case: undefined };
1010
1023
 
1011
1024
  constructor(data?: PartialMessage<FfiResponse>) {
@@ -1081,6 +1094,7 @@ export class FfiResponse extends Message<FfiResponse> {
1081
1094
  { no: 64, name: "text_stream_write", kind: "message", T: TextStreamWriterWriteResponse, oneof: "message" },
1082
1095
  { no: 65, name: "text_stream_close", kind: "message", T: TextStreamWriterCloseResponse, oneof: "message" },
1083
1096
  { no: 66, name: "send_bytes", kind: "message", T: StreamSendBytesResponse, oneof: "message" },
1097
+ { no: 67, name: "set_remote_track_publication_quality", kind: "message", T: SetRemoteTrackPublicationQualityResponse, oneof: "message" },
1084
1098
  ]);
1085
1099
 
1086
1100
  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FfiResponse {
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -49,6 +49,11 @@ export enum ParticipantKind {
49
49
  * @generated from enum value: PARTICIPANT_KIND_AGENT = 4;
50
50
  */
51
51
  AGENT = 4,
52
+
53
+ /**
54
+ * @generated from enum value: PARTICIPANT_KIND_CONNECTOR = 5;
55
+ */
56
+ CONNECTOR = 5,
52
57
  }
53
58
  // Retrieve enum metadata with: proto2.getEnumType(ParticipantKind)
54
59
  proto2.util.setEnumType(ParticipantKind, "livekit.proto.ParticipantKind", [
@@ -57,6 +62,39 @@ proto2.util.setEnumType(ParticipantKind, "livekit.proto.ParticipantKind", [
57
62
  { no: 2, name: "PARTICIPANT_KIND_EGRESS" },
58
63
  { no: 3, name: "PARTICIPANT_KIND_SIP" },
59
64
  { no: 4, name: "PARTICIPANT_KIND_AGENT" },
65
+ { no: 5, name: "PARTICIPANT_KIND_CONNECTOR" },
66
+ ]);
67
+
68
+ /**
69
+ * @generated from enum livekit.proto.ParticipantKindDetail
70
+ */
71
+ export enum ParticipantKindDetail {
72
+ /**
73
+ * @generated from enum value: PARTICIPANT_KIND_DETAIL_CLOUD_AGENT = 0;
74
+ */
75
+ CLOUD_AGENT = 0,
76
+
77
+ /**
78
+ * @generated from enum value: PARTICIPANT_KIND_DETAIL_FORWARDED = 1;
79
+ */
80
+ FORWARDED = 1,
81
+
82
+ /**
83
+ * @generated from enum value: PARTICIPANT_KIND_DETAIL_CONNECTOR_WHATSAPP = 2;
84
+ */
85
+ CONNECTOR_WHATSAPP = 2,
86
+
87
+ /**
88
+ * @generated from enum value: PARTICIPANT_KIND_DETAIL_CONNECTOR_TWILIO = 3;
89
+ */
90
+ CONNECTOR_TWILIO = 3,
91
+ }
92
+ // Retrieve enum metadata with: proto2.getEnumType(ParticipantKindDetail)
93
+ proto2.util.setEnumType(ParticipantKindDetail, "livekit.proto.ParticipantKindDetail", [
94
+ { no: 0, name: "PARTICIPANT_KIND_DETAIL_CLOUD_AGENT" },
95
+ { no: 1, name: "PARTICIPANT_KIND_DETAIL_FORWARDED" },
96
+ { no: 2, name: "PARTICIPANT_KIND_DETAIL_CONNECTOR_WHATSAPP" },
97
+ { no: 3, name: "PARTICIPANT_KIND_DETAIL_CONNECTOR_TWILIO" },
60
98
  ]);
61
99
 
62
100
  /**
@@ -228,6 +266,11 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
228
266
  */
229
267
  disconnectReason?: DisconnectReason;
230
268
 
269
+ /**
270
+ * @generated from field: repeated livekit.proto.ParticipantKindDetail kind_details = 8;
271
+ */
272
+ kindDetails: ParticipantKindDetail[] = [];
273
+
231
274
  constructor(data?: PartialMessage<ParticipantInfo>) {
232
275
  super();
233
276
  proto2.util.initPartial(data, this);
@@ -243,6 +286,7 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
243
286
  { no: 5, name: "attributes", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} },
244
287
  { no: 6, name: "kind", kind: "enum", T: proto2.getEnumType(ParticipantKind), req: true },
245
288
  { no: 7, name: "disconnect_reason", kind: "enum", T: proto2.getEnumType(DisconnectReason), req: true },
289
+ { no: 8, name: "kind_details", kind: "enum", T: proto2.getEnumType(ParticipantKindDetail), repeated: true },
246
290
  ]);
247
291
 
248
292
  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ParticipantInfo {
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -2700,12 +2700,6 @@ export class RoomEvent extends Message<RoomEvent> {
2700
2700
  */
2701
2701
  value: ParticipantAttributesChanged;
2702
2702
  case: "participantAttributesChanged";
2703
- } | {
2704
- /**
2705
- * @generated from field: livekit.proto.ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39;
2706
- */
2707
- value: ParticipantEncryptionStatusChanged;
2708
- case: "participantEncryptionStatusChanged";
2709
2703
  } | {
2710
2704
  /**
2711
2705
  * @generated from field: livekit.proto.ConnectionQualityChanged connection_quality_changed = 20;
@@ -2834,6 +2828,18 @@ export class RoomEvent extends Message<RoomEvent> {
2834
2828
  */
2835
2829
  value: ParticipantsUpdated;
2836
2830
  case: "participantsUpdated";
2831
+ } | {
2832
+ /**
2833
+ * @generated from field: livekit.proto.ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39;
2834
+ */
2835
+ value: ParticipantEncryptionStatusChanged;
2836
+ case: "participantEncryptionStatusChanged";
2837
+ } | {
2838
+ /**
2839
+ * @generated from field: livekit.proto.TokenRefreshed token_refreshed = 40;
2840
+ */
2841
+ value: TokenRefreshed;
2842
+ case: "tokenRefreshed";
2837
2843
  } | { case: undefined; value?: undefined } = { case: undefined };
2838
2844
 
2839
2845
  constructor(data?: PartialMessage<RoomEvent>) {
@@ -2863,7 +2869,6 @@ export class RoomEvent extends Message<RoomEvent> {
2863
2869
  { no: 17, name: "participant_metadata_changed", kind: "message", T: ParticipantMetadataChanged, oneof: "message" },
2864
2870
  { no: 18, name: "participant_name_changed", kind: "message", T: ParticipantNameChanged, oneof: "message" },
2865
2871
  { no: 19, name: "participant_attributes_changed", kind: "message", T: ParticipantAttributesChanged, oneof: "message" },
2866
- { no: 39, name: "participant_encryption_status_changed", kind: "message", T: ParticipantEncryptionStatusChanged, oneof: "message" },
2867
2872
  { no: 20, name: "connection_quality_changed", kind: "message", T: ConnectionQualityChanged, oneof: "message" },
2868
2873
  { no: 21, name: "connection_state_changed", kind: "message", T: ConnectionStateChanged, oneof: "message" },
2869
2874
  { no: 22, name: "disconnected", kind: "message", T: Disconnected, oneof: "message" },
@@ -2883,6 +2888,8 @@ export class RoomEvent extends Message<RoomEvent> {
2883
2888
  { no: 36, name: "room_updated", kind: "message", T: RoomInfo, oneof: "message" },
2884
2889
  { no: 37, name: "moved", kind: "message", T: RoomInfo, oneof: "message" },
2885
2890
  { no: 38, name: "participants_updated", kind: "message", T: ParticipantsUpdated, oneof: "message" },
2891
+ { no: 39, name: "participant_encryption_status_changed", kind: "message", T: ParticipantEncryptionStatusChanged, oneof: "message" },
2892
+ { no: 40, name: "token_refreshed", kind: "message", T: TokenRefreshed, oneof: "message" },
2886
2893
  ]);
2887
2894
 
2888
2895
  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RoomEvent {
@@ -4444,6 +4451,43 @@ export class Reconnected extends Message<Reconnected> {
4444
4451
  }
4445
4452
  }
4446
4453
 
4454
+ /**
4455
+ * @generated from message livekit.proto.TokenRefreshed
4456
+ */
4457
+ export class TokenRefreshed extends Message<TokenRefreshed> {
4458
+ /**
4459
+ * @generated from field: required string token = 1;
4460
+ */
4461
+ token?: string;
4462
+
4463
+ constructor(data?: PartialMessage<TokenRefreshed>) {
4464
+ super();
4465
+ proto2.util.initPartial(data, this);
4466
+ }
4467
+
4468
+ static readonly runtime: typeof proto2 = proto2;
4469
+ static readonly typeName = "livekit.proto.TokenRefreshed";
4470
+ static readonly fields: FieldList = proto2.util.newFieldList(() => [
4471
+ { no: 1, name: "token", kind: "scalar", T: 9 /* ScalarType.STRING */, req: true },
4472
+ ]);
4473
+
4474
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TokenRefreshed {
4475
+ return new TokenRefreshed().fromBinary(bytes, options);
4476
+ }
4477
+
4478
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TokenRefreshed {
4479
+ return new TokenRefreshed().fromJson(jsonValue, options);
4480
+ }
4481
+
4482
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TokenRefreshed {
4483
+ return new TokenRefreshed().fromJsonString(jsonString, options);
4484
+ }
4485
+
4486
+ static equals(a: TokenRefreshed | PlainMessage<TokenRefreshed> | undefined, b: TokenRefreshed | PlainMessage<TokenRefreshed> | undefined): boolean {
4487
+ return proto2.util.equals(TokenRefreshed, a, b);
4488
+ }
4489
+ }
4490
+
4447
4491
  /**
4448
4492
  * @generated from message livekit.proto.RoomEOS
4449
4493
  */
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -20,6 +20,34 @@
20
20
  import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
21
21
  import { Message, proto2 } from "@bufbuild/protobuf";
22
22
 
23
+ /**
24
+ * Video quality for simulcasted tracks.
25
+ *
26
+ * @generated from enum livekit.proto.VideoQuality
27
+ */
28
+ export enum VideoQuality {
29
+ /**
30
+ * @generated from enum value: VIDEO_QUALITY_LOW = 0;
31
+ */
32
+ LOW = 0,
33
+
34
+ /**
35
+ * @generated from enum value: VIDEO_QUALITY_MEDIUM = 1;
36
+ */
37
+ MEDIUM = 1,
38
+
39
+ /**
40
+ * @generated from enum value: VIDEO_QUALITY_HIGH = 2;
41
+ */
42
+ HIGH = 2,
43
+ }
44
+ // Retrieve enum metadata with: proto2.getEnumType(VideoQuality)
45
+ proto2.util.setEnumType(VideoQuality, "livekit.proto.VideoQuality", [
46
+ { no: 0, name: "VIDEO_QUALITY_LOW" },
47
+ { no: 1, name: "VIDEO_QUALITY_MEDIUM" },
48
+ { no: 2, name: "VIDEO_QUALITY_HIGH" },
49
+ ]);
50
+
23
51
  /**
24
52
  * Enable/Disable a remote track publication
25
53
  *
@@ -178,3 +206,79 @@ export class UpdateRemoteTrackPublicationDimensionResponse extends Message<Updat
178
206
  }
179
207
  }
180
208
 
209
+ /**
210
+ * For tracks that support simulcasting, adjust subscribed quality.
211
+ *
212
+ * @generated from message livekit.proto.SetRemoteTrackPublicationQualityRequest
213
+ */
214
+ export class SetRemoteTrackPublicationQualityRequest extends Message<SetRemoteTrackPublicationQualityRequest> {
215
+ /**
216
+ * @generated from field: required uint64 track_publication_handle = 1;
217
+ */
218
+ trackPublicationHandle?: bigint;
219
+
220
+ /**
221
+ * @generated from field: required livekit.proto.VideoQuality quality = 2;
222
+ */
223
+ quality?: VideoQuality;
224
+
225
+ constructor(data?: PartialMessage<SetRemoteTrackPublicationQualityRequest>) {
226
+ super();
227
+ proto2.util.initPartial(data, this);
228
+ }
229
+
230
+ static readonly runtime: typeof proto2 = proto2;
231
+ static readonly typeName = "livekit.proto.SetRemoteTrackPublicationQualityRequest";
232
+ static readonly fields: FieldList = proto2.util.newFieldList(() => [
233
+ { no: 1, name: "track_publication_handle", kind: "scalar", T: 4 /* ScalarType.UINT64 */, req: true },
234
+ { no: 2, name: "quality", kind: "enum", T: proto2.getEnumType(VideoQuality), req: true },
235
+ ]);
236
+
237
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetRemoteTrackPublicationQualityRequest {
238
+ return new SetRemoteTrackPublicationQualityRequest().fromBinary(bytes, options);
239
+ }
240
+
241
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetRemoteTrackPublicationQualityRequest {
242
+ return new SetRemoteTrackPublicationQualityRequest().fromJson(jsonValue, options);
243
+ }
244
+
245
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetRemoteTrackPublicationQualityRequest {
246
+ return new SetRemoteTrackPublicationQualityRequest().fromJsonString(jsonString, options);
247
+ }
248
+
249
+ static equals(a: SetRemoteTrackPublicationQualityRequest | PlainMessage<SetRemoteTrackPublicationQualityRequest> | undefined, b: SetRemoteTrackPublicationQualityRequest | PlainMessage<SetRemoteTrackPublicationQualityRequest> | undefined): boolean {
250
+ return proto2.util.equals(SetRemoteTrackPublicationQualityRequest, a, b);
251
+ }
252
+ }
253
+
254
+ /**
255
+ * @generated from message livekit.proto.SetRemoteTrackPublicationQualityResponse
256
+ */
257
+ export class SetRemoteTrackPublicationQualityResponse extends Message<SetRemoteTrackPublicationQualityResponse> {
258
+ constructor(data?: PartialMessage<SetRemoteTrackPublicationQualityResponse>) {
259
+ super();
260
+ proto2.util.initPartial(data, this);
261
+ }
262
+
263
+ static readonly runtime: typeof proto2 = proto2;
264
+ static readonly typeName = "livekit.proto.SetRemoteTrackPublicationQualityResponse";
265
+ static readonly fields: FieldList = proto2.util.newFieldList(() => [
266
+ ]);
267
+
268
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetRemoteTrackPublicationQualityResponse {
269
+ return new SetRemoteTrackPublicationQualityResponse().fromBinary(bytes, options);
270
+ }
271
+
272
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetRemoteTrackPublicationQualityResponse {
273
+ return new SetRemoteTrackPublicationQualityResponse().fromJson(jsonValue, options);
274
+ }
275
+
276
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetRemoteTrackPublicationQualityResponse {
277
+ return new SetRemoteTrackPublicationQualityResponse().fromJsonString(jsonString, options);
278
+ }
279
+
280
+ static equals(a: SetRemoteTrackPublicationQualityResponse | PlainMessage<SetRemoteTrackPublicationQualityResponse> | undefined, b: SetRemoteTrackPublicationQualityResponse | PlainMessage<SetRemoteTrackPublicationQualityResponse> | undefined): boolean {
281
+ return proto2.util.equals(SetRemoteTrackPublicationQualityResponse, a, b);
282
+ }
283
+ }
284
+
@@ -1,4 +1,4 @@
1
- // Copyright 2023 LiveKit, Inc.
1
+ // Copyright 2025 LiveKit, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -45,6 +45,11 @@ export enum VideoCodec {
45
45
  * @generated from enum value: VP9 = 3;
46
46
  */
47
47
  VP9 = 3,
48
+
49
+ /**
50
+ * @generated from enum value: H265 = 4;
51
+ */
52
+ H265 = 4,
48
53
  }
49
54
  // Retrieve enum metadata with: proto2.getEnumType(VideoCodec)
50
55
  proto2.util.setEnumType(VideoCodec, "livekit.proto.VideoCodec", [
@@ -52,6 +57,7 @@ proto2.util.setEnumType(VideoCodec, "livekit.proto.VideoCodec", [
52
57
  { no: 1, name: "H264" },
53
58
  { no: 2, name: "AV1" },
54
59
  { no: 3, name: "VP9" },
60
+ { no: 4, name: "H265" },
55
61
  ]);
56
62
 
57
63
  /**