diff --git a/.changeset/weak-hounds-help.md b/.changeset/weak-hounds-help.md new file mode 100644 index 00000000..ebbd32d0 --- /dev/null +++ b/.changeset/weak-hounds-help.md @@ -0,0 +1,5 @@ +--- +"@livekit/rtc-node": patch +--- + +update rust ffi to 0.12.43 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b28e0f13..beaa2e50 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: rtc_build: ${{ steps.changes.outputs.rtc_build }} server_sdk_build: ${{ steps.changes.outputs.server_sdk_build }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: dorny/paths-filter@v3 id: paths with: diff --git a/.github/workflows/proto.yaml b/.github/workflows/proto.yaml new file mode 100644 index 00000000..16626131 --- /dev/null +++ b/.github/workflows/proto.yaml @@ -0,0 +1,54 @@ +name: Generate protobuf stubs + +permissions: + contents: write + +on: + pull_request: + branches: + - main + # If rust-sdks is a git submodule, GitHub sees updates as a change to the + # gitlink at the submodule path (not files under it), so include the bare + # path. If it's checked into the repo normally, the ** pattern will match. + paths: + - 'packages/livekit-rtc/rust-sdks' + - 'packages/livekit-rtc/rust-sdks/**' + +jobs: + generate-proto: + name: Regenerate protobuf stubs + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + submodules: recursive + ref: ${{ github.event.pull_request.head.ref }} + + - uses: pnpm/action-setup@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 24 + cache: pnpm + + - name: Install Protoc + uses: arduino/setup-protoc@v3 + with: + version: '25.1' + repo-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Install dependencies + run: pnpm install + + - name: Generate stubs + run: ./generate_proto.sh + working-directory: packages/livekit-rtc + + - name: Add changes + uses: EndBug/add-and-commit@v9 + with: + add: '["packages/livekit-rtc"]' + default_author: github_actions + message: generated protobuf diff --git a/packages/livekit-rtc/rust-sdks b/packages/livekit-rtc/rust-sdks index e4b85105..36caec5a 160000 --- a/packages/livekit-rtc/rust-sdks +++ b/packages/livekit-rtc/rust-sdks @@ -1 +1 @@ -Subproject commit e4b851055aa6c8c83ea3f02a24cae9c8d257de34 +Subproject commit 36caec5a581106e9aa4b7c9b1f4245a5602d761f diff --git a/packages/livekit-rtc/src/proto/audio_frame_pb.ts b/packages/livekit-rtc/src/proto/audio_frame_pb.ts index acbff401..94b0da88 100644 --- a/packages/livekit-rtc/src/proto/audio_frame_pb.ts +++ b/packages/livekit-rtc/src/proto/audio_frame_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/packages/livekit-rtc/src/proto/e2ee_pb.ts b/packages/livekit-rtc/src/proto/e2ee_pb.ts index f2a27bdb..9994f3d6 100644 --- a/packages/livekit-rtc/src/proto/e2ee_pb.ts +++ b/packages/livekit-rtc/src/proto/e2ee_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/packages/livekit-rtc/src/proto/ffi_pb.ts b/packages/livekit-rtc/src/proto/ffi_pb.ts index 5873e6ee..844e3917 100644 --- a/packages/livekit-rtc/src/proto/ffi_pb.ts +++ b/packages/livekit-rtc/src/proto/ffi_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ import { CaptureVideoFrameRequest, CaptureVideoFrameResponse, NewVideoSourceRequ 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"; import { E2eeRequest, E2eeResponse } from "./e2ee_pb.js"; import { PerformRpcCallback, PerformRpcRequest, PerformRpcResponse, RegisterRpcMethodRequest, RegisterRpcMethodResponse, RpcMethodInvocationEvent, RpcMethodInvocationResponseRequest, RpcMethodInvocationResponseResponse, UnregisterRpcMethodRequest, UnregisterRpcMethodResponse } from "./rpc_pb.js"; -import { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } from "./track_publication_pb.js"; +import { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, SetRemoteTrackPublicationQualityRequest, SetRemoteTrackPublicationQualityResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } from "./track_publication_pb.js"; 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"; /** @@ -492,6 +492,12 @@ export class FfiRequest extends Message { */ value: StreamSendBytesRequest; case: "sendBytes"; + } | { + /** + * @generated from field: livekit.proto.SetRemoteTrackPublicationQualityRequest set_remote_track_publication_quality = 68; + */ + value: SetRemoteTrackPublicationQualityRequest; + case: "setRemoteTrackPublicationQuality"; } | { case: undefined; value?: undefined } = { case: undefined }; constructor(data?: PartialMessage) { @@ -568,6 +574,7 @@ export class FfiRequest extends Message { { no: 65, name: "text_stream_write", kind: "message", T: TextStreamWriterWriteRequest, oneof: "message" }, { 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" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): FfiRequest { @@ -1006,6 +1013,12 @@ export class FfiResponse extends Message { */ value: StreamSendBytesResponse; case: "sendBytes"; + } | { + /** + * @generated from field: livekit.proto.SetRemoteTrackPublicationQualityResponse set_remote_track_publication_quality = 67; + */ + value: SetRemoteTrackPublicationQualityResponse; + case: "setRemoteTrackPublicationQuality"; } | { case: undefined; value?: undefined } = { case: undefined }; constructor(data?: PartialMessage) { @@ -1081,6 +1094,7 @@ export class FfiResponse extends Message { { no: 64, name: "text_stream_write", kind: "message", T: TextStreamWriterWriteResponse, oneof: "message" }, { 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" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): FfiResponse { diff --git a/packages/livekit-rtc/src/proto/handle_pb.ts b/packages/livekit-rtc/src/proto/handle_pb.ts index f22a833a..597ad383 100644 --- a/packages/livekit-rtc/src/proto/handle_pb.ts +++ b/packages/livekit-rtc/src/proto/handle_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/packages/livekit-rtc/src/proto/participant_pb.ts b/packages/livekit-rtc/src/proto/participant_pb.ts index 7207dcb3..de89ecc1 100644 --- a/packages/livekit-rtc/src/proto/participant_pb.ts +++ b/packages/livekit-rtc/src/proto/participant_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -49,6 +49,11 @@ export enum ParticipantKind { * @generated from enum value: PARTICIPANT_KIND_AGENT = 4; */ AGENT = 4, + + /** + * @generated from enum value: PARTICIPANT_KIND_CONNECTOR = 5; + */ + CONNECTOR = 5, } // Retrieve enum metadata with: proto2.getEnumType(ParticipantKind) proto2.util.setEnumType(ParticipantKind, "livekit.proto.ParticipantKind", [ @@ -57,6 +62,39 @@ proto2.util.setEnumType(ParticipantKind, "livekit.proto.ParticipantKind", [ { no: 2, name: "PARTICIPANT_KIND_EGRESS" }, { no: 3, name: "PARTICIPANT_KIND_SIP" }, { no: 4, name: "PARTICIPANT_KIND_AGENT" }, + { no: 5, name: "PARTICIPANT_KIND_CONNECTOR" }, +]); + +/** + * @generated from enum livekit.proto.ParticipantKindDetail + */ +export enum ParticipantKindDetail { + /** + * @generated from enum value: PARTICIPANT_KIND_DETAIL_CLOUD_AGENT = 0; + */ + CLOUD_AGENT = 0, + + /** + * @generated from enum value: PARTICIPANT_KIND_DETAIL_FORWARDED = 1; + */ + FORWARDED = 1, + + /** + * @generated from enum value: PARTICIPANT_KIND_DETAIL_CONNECTOR_WHATSAPP = 2; + */ + CONNECTOR_WHATSAPP = 2, + + /** + * @generated from enum value: PARTICIPANT_KIND_DETAIL_CONNECTOR_TWILIO = 3; + */ + CONNECTOR_TWILIO = 3, +} +// Retrieve enum metadata with: proto2.getEnumType(ParticipantKindDetail) +proto2.util.setEnumType(ParticipantKindDetail, "livekit.proto.ParticipantKindDetail", [ + { no: 0, name: "PARTICIPANT_KIND_DETAIL_CLOUD_AGENT" }, + { no: 1, name: "PARTICIPANT_KIND_DETAIL_FORWARDED" }, + { no: 2, name: "PARTICIPANT_KIND_DETAIL_CONNECTOR_WHATSAPP" }, + { no: 3, name: "PARTICIPANT_KIND_DETAIL_CONNECTOR_TWILIO" }, ]); /** @@ -228,6 +266,11 @@ export class ParticipantInfo extends Message { */ disconnectReason?: DisconnectReason; + /** + * @generated from field: repeated livekit.proto.ParticipantKindDetail kind_details = 8; + */ + kindDetails: ParticipantKindDetail[] = []; + constructor(data?: PartialMessage) { super(); proto2.util.initPartial(data, this); @@ -243,6 +286,7 @@ export class ParticipantInfo extends Message { { no: 5, name: "attributes", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, { no: 6, name: "kind", kind: "enum", T: proto2.getEnumType(ParticipantKind), req: true }, { no: 7, name: "disconnect_reason", kind: "enum", T: proto2.getEnumType(DisconnectReason), req: true }, + { no: 8, name: "kind_details", kind: "enum", T: proto2.getEnumType(ParticipantKindDetail), repeated: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): ParticipantInfo { diff --git a/packages/livekit-rtc/src/proto/room_pb.ts b/packages/livekit-rtc/src/proto/room_pb.ts index 010fe32c..2aadcdd7 100644 --- a/packages/livekit-rtc/src/proto/room_pb.ts +++ b/packages/livekit-rtc/src/proto/room_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -2700,12 +2700,6 @@ export class RoomEvent extends Message { */ value: ParticipantAttributesChanged; case: "participantAttributesChanged"; - } | { - /** - * @generated from field: livekit.proto.ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39; - */ - value: ParticipantEncryptionStatusChanged; - case: "participantEncryptionStatusChanged"; } | { /** * @generated from field: livekit.proto.ConnectionQualityChanged connection_quality_changed = 20; @@ -2834,6 +2828,18 @@ export class RoomEvent extends Message { */ value: ParticipantsUpdated; case: "participantsUpdated"; + } | { + /** + * @generated from field: livekit.proto.ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39; + */ + value: ParticipantEncryptionStatusChanged; + case: "participantEncryptionStatusChanged"; + } | { + /** + * @generated from field: livekit.proto.TokenRefreshed token_refreshed = 40; + */ + value: TokenRefreshed; + case: "tokenRefreshed"; } | { case: undefined; value?: undefined } = { case: undefined }; constructor(data?: PartialMessage) { @@ -2863,7 +2869,6 @@ export class RoomEvent extends Message { { no: 17, name: "participant_metadata_changed", kind: "message", T: ParticipantMetadataChanged, oneof: "message" }, { no: 18, name: "participant_name_changed", kind: "message", T: ParticipantNameChanged, oneof: "message" }, { no: 19, name: "participant_attributes_changed", kind: "message", T: ParticipantAttributesChanged, oneof: "message" }, - { no: 39, name: "participant_encryption_status_changed", kind: "message", T: ParticipantEncryptionStatusChanged, oneof: "message" }, { no: 20, name: "connection_quality_changed", kind: "message", T: ConnectionQualityChanged, oneof: "message" }, { no: 21, name: "connection_state_changed", kind: "message", T: ConnectionStateChanged, oneof: "message" }, { no: 22, name: "disconnected", kind: "message", T: Disconnected, oneof: "message" }, @@ -2883,6 +2888,8 @@ export class RoomEvent extends Message { { no: 36, name: "room_updated", kind: "message", T: RoomInfo, oneof: "message" }, { no: 37, name: "moved", kind: "message", T: RoomInfo, oneof: "message" }, { no: 38, name: "participants_updated", kind: "message", T: ParticipantsUpdated, oneof: "message" }, + { no: 39, name: "participant_encryption_status_changed", kind: "message", T: ParticipantEncryptionStatusChanged, oneof: "message" }, + { no: 40, name: "token_refreshed", kind: "message", T: TokenRefreshed, oneof: "message" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): RoomEvent { @@ -4444,6 +4451,43 @@ export class Reconnected extends Message { } } +/** + * @generated from message livekit.proto.TokenRefreshed + */ +export class TokenRefreshed extends Message { + /** + * @generated from field: required string token = 1; + */ + token?: string; + + constructor(data?: PartialMessage) { + super(); + proto2.util.initPartial(data, this); + } + + static readonly runtime: typeof proto2 = proto2; + static readonly typeName = "livekit.proto.TokenRefreshed"; + static readonly fields: FieldList = proto2.util.newFieldList(() => [ + { no: 1, name: "token", kind: "scalar", T: 9 /* ScalarType.STRING */, req: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): TokenRefreshed { + return new TokenRefreshed().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): TokenRefreshed { + return new TokenRefreshed().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): TokenRefreshed { + return new TokenRefreshed().fromJsonString(jsonString, options); + } + + static equals(a: TokenRefreshed | PlainMessage | undefined, b: TokenRefreshed | PlainMessage | undefined): boolean { + return proto2.util.equals(TokenRefreshed, a, b); + } +} + /** * @generated from message livekit.proto.RoomEOS */ diff --git a/packages/livekit-rtc/src/proto/rpc_pb.ts b/packages/livekit-rtc/src/proto/rpc_pb.ts index 9e2d242f..92277841 100644 --- a/packages/livekit-rtc/src/proto/rpc_pb.ts +++ b/packages/livekit-rtc/src/proto/rpc_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/packages/livekit-rtc/src/proto/stats_pb.ts b/packages/livekit-rtc/src/proto/stats_pb.ts index 25b214e5..3315e83b 100644 --- a/packages/livekit-rtc/src/proto/stats_pb.ts +++ b/packages/livekit-rtc/src/proto/stats_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/packages/livekit-rtc/src/proto/track_pb.ts b/packages/livekit-rtc/src/proto/track_pb.ts index 11c8ee5a..a2f2267c 100644 --- a/packages/livekit-rtc/src/proto/track_pb.ts +++ b/packages/livekit-rtc/src/proto/track_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/packages/livekit-rtc/src/proto/track_publication_pb.ts b/packages/livekit-rtc/src/proto/track_publication_pb.ts index c59b1181..327ebbc9 100644 --- a/packages/livekit-rtc/src/proto/track_publication_pb.ts +++ b/packages/livekit-rtc/src/proto/track_publication_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,6 +20,34 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto2 } from "@bufbuild/protobuf"; +/** + * Video quality for simulcasted tracks. + * + * @generated from enum livekit.proto.VideoQuality + */ +export enum VideoQuality { + /** + * @generated from enum value: VIDEO_QUALITY_LOW = 0; + */ + LOW = 0, + + /** + * @generated from enum value: VIDEO_QUALITY_MEDIUM = 1; + */ + MEDIUM = 1, + + /** + * @generated from enum value: VIDEO_QUALITY_HIGH = 2; + */ + HIGH = 2, +} +// Retrieve enum metadata with: proto2.getEnumType(VideoQuality) +proto2.util.setEnumType(VideoQuality, "livekit.proto.VideoQuality", [ + { no: 0, name: "VIDEO_QUALITY_LOW" }, + { no: 1, name: "VIDEO_QUALITY_MEDIUM" }, + { no: 2, name: "VIDEO_QUALITY_HIGH" }, +]); + /** * Enable/Disable a remote track publication * @@ -178,3 +206,79 @@ export class UpdateRemoteTrackPublicationDimensionResponse extends Message { + /** + * @generated from field: required uint64 track_publication_handle = 1; + */ + trackPublicationHandle?: bigint; + + /** + * @generated from field: required livekit.proto.VideoQuality quality = 2; + */ + quality?: VideoQuality; + + constructor(data?: PartialMessage) { + super(); + proto2.util.initPartial(data, this); + } + + static readonly runtime: typeof proto2 = proto2; + static readonly typeName = "livekit.proto.SetRemoteTrackPublicationQualityRequest"; + static readonly fields: FieldList = proto2.util.newFieldList(() => [ + { no: 1, name: "track_publication_handle", kind: "scalar", T: 4 /* ScalarType.UINT64 */, req: true }, + { no: 2, name: "quality", kind: "enum", T: proto2.getEnumType(VideoQuality), req: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SetRemoteTrackPublicationQualityRequest { + return new SetRemoteTrackPublicationQualityRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SetRemoteTrackPublicationQualityRequest { + return new SetRemoteTrackPublicationQualityRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SetRemoteTrackPublicationQualityRequest { + return new SetRemoteTrackPublicationQualityRequest().fromJsonString(jsonString, options); + } + + static equals(a: SetRemoteTrackPublicationQualityRequest | PlainMessage | undefined, b: SetRemoteTrackPublicationQualityRequest | PlainMessage | undefined): boolean { + return proto2.util.equals(SetRemoteTrackPublicationQualityRequest, a, b); + } +} + +/** + * @generated from message livekit.proto.SetRemoteTrackPublicationQualityResponse + */ +export class SetRemoteTrackPublicationQualityResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto2.util.initPartial(data, this); + } + + static readonly runtime: typeof proto2 = proto2; + static readonly typeName = "livekit.proto.SetRemoteTrackPublicationQualityResponse"; + static readonly fields: FieldList = proto2.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SetRemoteTrackPublicationQualityResponse { + return new SetRemoteTrackPublicationQualityResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SetRemoteTrackPublicationQualityResponse { + return new SetRemoteTrackPublicationQualityResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SetRemoteTrackPublicationQualityResponse { + return new SetRemoteTrackPublicationQualityResponse().fromJsonString(jsonString, options); + } + + static equals(a: SetRemoteTrackPublicationQualityResponse | PlainMessage | undefined, b: SetRemoteTrackPublicationQualityResponse | PlainMessage | undefined): boolean { + return proto2.util.equals(SetRemoteTrackPublicationQualityResponse, a, b); + } +} + diff --git a/packages/livekit-rtc/src/proto/video_frame_pb.ts b/packages/livekit-rtc/src/proto/video_frame_pb.ts index e51c0db7..87f433b3 100644 --- a/packages/livekit-rtc/src/proto/video_frame_pb.ts +++ b/packages/livekit-rtc/src/proto/video_frame_pb.ts @@ -1,4 +1,4 @@ -// Copyright 2023 LiveKit, Inc. +// Copyright 2025 LiveKit, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -45,6 +45,11 @@ export enum VideoCodec { * @generated from enum value: VP9 = 3; */ VP9 = 3, + + /** + * @generated from enum value: H265 = 4; + */ + H265 = 4, } // Retrieve enum metadata with: proto2.getEnumType(VideoCodec) proto2.util.setEnumType(VideoCodec, "livekit.proto.VideoCodec", [ @@ -52,6 +57,7 @@ proto2.util.setEnumType(VideoCodec, "livekit.proto.VideoCodec", [ { no: 1, name: "H264" }, { no: 2, name: "AV1" }, { no: 3, name: "VP9" }, + { no: 4, name: "H265" }, ]); /**