@livekit/rtc-node 0.13.5 → 0.13.7

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 (75) hide show
  1. package/dist/audio_source.cjs +6 -0
  2. package/dist/audio_source.cjs.map +1 -1
  3. package/dist/audio_source.d.cts +2 -0
  4. package/dist/audio_source.d.ts +2 -0
  5. package/dist/audio_source.d.ts.map +1 -1
  6. package/dist/audio_source.js +6 -0
  7. package/dist/audio_source.js.map +1 -1
  8. package/dist/data_streams/index.d.cts +2 -2
  9. package/dist/data_streams/index.d.ts +2 -2
  10. package/dist/data_streams/stream_reader.d.cts +1 -1
  11. package/dist/data_streams/stream_reader.d.ts +1 -1
  12. package/dist/data_streams/stream_writer.d.cts +1 -1
  13. package/dist/data_streams/stream_writer.d.ts +1 -1
  14. package/dist/data_streams/types.d.cts +1 -1
  15. package/dist/data_streams/types.d.ts +1 -1
  16. package/dist/index.cjs +15 -13
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +17 -17
  19. package/dist/index.d.ts +17 -17
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +29 -28
  22. package/dist/index.js.map +1 -1
  23. package/dist/participant.d.cts +2 -2
  24. package/dist/participant.d.ts +2 -2
  25. package/dist/proto/ffi_pb.cjs +2 -0
  26. package/dist/proto/ffi_pb.cjs.map +1 -1
  27. package/dist/proto/ffi_pb.d.cts +13 -1
  28. package/dist/proto/ffi_pb.d.ts +13 -1
  29. package/dist/proto/ffi_pb.d.ts.map +1 -1
  30. package/dist/proto/ffi_pb.js +3 -1
  31. package/dist/proto/ffi_pb.js.map +1 -1
  32. package/dist/proto/room_pb.cjs +2 -1
  33. package/dist/proto/room_pb.cjs.map +1 -1
  34. package/dist/proto/room_pb.d.cts +4 -0
  35. package/dist/proto/room_pb.d.ts +4 -0
  36. package/dist/proto/room_pb.d.ts.map +1 -1
  37. package/dist/proto/room_pb.js +2 -1
  38. package/dist/proto/room_pb.js.map +1 -1
  39. package/dist/proto/track_pb.cjs +90 -0
  40. package/dist/proto/track_pb.cjs.map +1 -1
  41. package/dist/proto/track_pb.d.cts +70 -1
  42. package/dist/proto/track_pb.d.ts +70 -1
  43. package/dist/proto/track_pb.d.ts.map +1 -1
  44. package/dist/proto/track_pb.js +87 -0
  45. package/dist/proto/track_pb.js.map +1 -1
  46. package/dist/proto/video_frame_pb.cjs +1 -1
  47. package/dist/proto/video_frame_pb.cjs.map +1 -1
  48. package/dist/proto/video_frame_pb.d.cts +1 -1
  49. package/dist/proto/video_frame_pb.d.ts +1 -1
  50. package/dist/proto/video_frame_pb.js +1 -1
  51. package/dist/proto/video_frame_pb.js.map +1 -1
  52. package/dist/room.cjs +7 -7
  53. package/dist/room.cjs.map +1 -1
  54. package/dist/room.d.cts +1 -1
  55. package/dist/room.d.ts +1 -1
  56. package/dist/room.d.ts.map +1 -1
  57. package/dist/room.js +2 -4
  58. package/dist/room.js.map +1 -1
  59. package/dist/version.cjs +1 -1
  60. package/dist/version.cjs.map +1 -1
  61. package/dist/version.d.cts +1 -1
  62. package/dist/version.d.ts +1 -1
  63. package/dist/version.js +1 -1
  64. package/dist/version.js.map +1 -1
  65. package/package.json +6 -6
  66. package/src/audio_source.ts +6 -0
  67. package/src/index.ts +33 -33
  68. package/src/proto/ffi_pb.ts +15 -1
  69. package/src/proto/room_pb.ts +6 -0
  70. package/src/proto/track_pb.ts +135 -0
  71. package/src/proto/video_frame_pb.ts +2 -2
  72. package/src/room.ts +7 -8
  73. package/src/version.ts +1 -1
  74. package/dist/{types-BDnbvXeD.d.ts → stream_reader-DWUV4eJB.d.ts} +40 -40
  75. package/dist/{types-B28ZM-Ci.d.cts → stream_reader-a8_oiaOi.d.cts} +40 -40
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/proto/video_frame_pb.ts"],"sourcesContent":["// Copyright 2023 LiveKit, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v1.10.0 with parameter \"target=ts,import_extension=.js\"\n// @generated from file video_frame.proto (package livekit.proto, syntax proto2)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto2 } from \"@bufbuild/protobuf\";\nimport { TrackSource } from \"./track_pb.js\";\nimport { FfiOwnedHandle } from \"./handle_pb.js\";\n\n/**\n * @generated from enum livekit.proto.VideoCodec\n */\nexport enum VideoCodec {\n /**\n * @generated from enum value: VP8 = 0;\n */\n VP8 = 0,\n\n /**\n * @generated from enum value: H264 = 1;\n */\n H264 = 1,\n\n /**\n * @generated from enum value: AV1 = 2;\n */\n AV1 = 2,\n\n /**\n * @generated from enum value: VP9 = 3;\n */\n VP9 = 3,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoCodec)\nproto2.util.setEnumType(VideoCodec, \"livekit.proto.VideoCodec\", [\n { no: 0, name: \"VP8\" },\n { no: 1, name: \"H264\" },\n { no: 2, name: \"AV1\" },\n { no: 3, name: \"VP9\" },\n]);\n\n/**\n * @generated from enum livekit.proto.VideoRotation\n */\nexport enum VideoRotation {\n /**\n * @generated from enum value: VIDEO_ROTATION_0 = 0;\n */\n VIDEO_ROTATION_0 = 0,\n\n /**\n * @generated from enum value: VIDEO_ROTATION_90 = 1;\n */\n VIDEO_ROTATION_90 = 1,\n\n /**\n * @generated from enum value: VIDEO_ROTATION_180 = 2;\n */\n VIDEO_ROTATION_180 = 2,\n\n /**\n * @generated from enum value: VIDEO_ROTATION_270 = 3;\n */\n VIDEO_ROTATION_270 = 3,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoRotation)\nproto2.util.setEnumType(VideoRotation, \"livekit.proto.VideoRotation\", [\n { no: 0, name: \"VIDEO_ROTATION_0\" },\n { no: 1, name: \"VIDEO_ROTATION_90\" },\n { no: 2, name: \"VIDEO_ROTATION_180\" },\n { no: 3, name: \"VIDEO_ROTATION_270\" },\n]);\n\n/**\n * Values of this enum must not be changed\n * It is used to serialize a rtc.VideoFrame on Python\n *\n * @generated from enum livekit.proto.VideoBufferType\n */\nexport enum VideoBufferType {\n /**\n * @generated from enum value: RGBA = 0;\n */\n RGBA = 0,\n\n /**\n * @generated from enum value: ABGR = 1;\n */\n ABGR = 1,\n\n /**\n * @generated from enum value: ARGB = 2;\n */\n ARGB = 2,\n\n /**\n * @generated from enum value: BGRA = 3;\n */\n BGRA = 3,\n\n /**\n * @generated from enum value: RGB24 = 4;\n */\n RGB24 = 4,\n\n /**\n * @generated from enum value: I420 = 5;\n */\n I420 = 5,\n\n /**\n * @generated from enum value: I420A = 6;\n */\n I420A = 6,\n\n /**\n * @generated from enum value: I422 = 7;\n */\n I422 = 7,\n\n /**\n * @generated from enum value: I444 = 8;\n */\n I444 = 8,\n\n /**\n * @generated from enum value: I010 = 9;\n */\n I010 = 9,\n\n /**\n * @generated from enum value: NV12 = 10;\n */\n NV12 = 10,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoBufferType)\nproto2.util.setEnumType(VideoBufferType, \"livekit.proto.VideoBufferType\", [\n { no: 0, name: \"RGBA\" },\n { no: 1, name: \"ABGR\" },\n { no: 2, name: \"ARGB\" },\n { no: 3, name: \"BGRA\" },\n { no: 4, name: \"RGB24\" },\n { no: 5, name: \"I420\" },\n { no: 6, name: \"I420A\" },\n { no: 7, name: \"I422\" },\n { no: 8, name: \"I444\" },\n { no: 9, name: \"I010\" },\n { no: 10, name: \"NV12\" },\n]);\n\n/**\n * @generated from enum livekit.proto.VideoStreamType\n */\nexport enum VideoStreamType {\n /**\n * @generated from enum value: VIDEO_STREAM_NATIVE = 0;\n */\n VIDEO_STREAM_NATIVE = 0,\n\n /**\n * @generated from enum value: VIDEO_STREAM_WEBGL = 1;\n */\n VIDEO_STREAM_WEBGL = 1,\n\n /**\n * @generated from enum value: VIDEO_STREAM_HTML = 2;\n */\n VIDEO_STREAM_HTML = 2,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoStreamType)\nproto2.util.setEnumType(VideoStreamType, \"livekit.proto.VideoStreamType\", [\n { no: 0, name: \"VIDEO_STREAM_NATIVE\" },\n { no: 1, name: \"VIDEO_STREAM_WEBGL\" },\n { no: 2, name: \"VIDEO_STREAM_HTML\" },\n]);\n\n/**\n * @generated from enum livekit.proto.VideoSourceType\n */\nexport enum VideoSourceType {\n /**\n * @generated from enum value: VIDEO_SOURCE_NATIVE = 0;\n */\n VIDEO_SOURCE_NATIVE = 0,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoSourceType)\nproto2.util.setEnumType(VideoSourceType, \"livekit.proto.VideoSourceType\", [\n { no: 0, name: \"VIDEO_SOURCE_NATIVE\" },\n]);\n\n/**\n * Create a new VideoStream\n * VideoStream is used to receive video frames from a track\n *\n * @generated from message livekit.proto.NewVideoStreamRequest\n */\nexport class NewVideoStreamRequest extends Message<NewVideoStreamRequest> {\n /**\n * @generated from field: required uint64 track_handle = 1;\n */\n trackHandle?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoStreamType type = 2;\n */\n type?: VideoStreamType;\n\n /**\n * Get the frame on a specific format\n *\n * @generated from field: optional livekit.proto.VideoBufferType format = 3;\n */\n format?: VideoBufferType;\n\n /**\n * if true, stride will be set to width/chroma_width\n *\n * @generated from field: optional bool normalize_stride = 4;\n */\n normalizeStride?: boolean;\n\n constructor(data?: PartialMessage<NewVideoStreamRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.NewVideoStreamRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoStreamType), req: true },\n { no: 3, name: \"format\", kind: \"enum\", T: proto2.getEnumType(VideoBufferType), opt: true },\n { no: 4, name: \"normalize_stride\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NewVideoStreamRequest {\n return new NewVideoStreamRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NewVideoStreamRequest {\n return new NewVideoStreamRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NewVideoStreamRequest {\n return new NewVideoStreamRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: NewVideoStreamRequest | PlainMessage<NewVideoStreamRequest> | undefined, b: NewVideoStreamRequest | PlainMessage<NewVideoStreamRequest> | undefined): boolean {\n return proto2.util.equals(NewVideoStreamRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.NewVideoStreamResponse\n */\nexport class NewVideoStreamResponse extends Message<NewVideoStreamResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedVideoStream stream = 1;\n */\n stream?: OwnedVideoStream;\n\n constructor(data?: PartialMessage<NewVideoStreamResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.NewVideoStreamResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"stream\", kind: \"message\", T: OwnedVideoStream, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NewVideoStreamResponse {\n return new NewVideoStreamResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NewVideoStreamResponse {\n return new NewVideoStreamResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NewVideoStreamResponse {\n return new NewVideoStreamResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: NewVideoStreamResponse | PlainMessage<NewVideoStreamResponse> | undefined, b: NewVideoStreamResponse | PlainMessage<NewVideoStreamResponse> | undefined): boolean {\n return proto2.util.equals(NewVideoStreamResponse, a, b);\n }\n}\n\n/**\n * Request a video stream from a participant\n *\n * @generated from message livekit.proto.VideoStreamFromParticipantRequest\n */\nexport class VideoStreamFromParticipantRequest extends Message<VideoStreamFromParticipantRequest> {\n /**\n * @generated from field: required uint64 participant_handle = 1;\n */\n participantHandle?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoStreamType type = 2;\n */\n type?: VideoStreamType;\n\n /**\n * @generated from field: required livekit.proto.TrackSource track_source = 3;\n */\n trackSource?: TrackSource;\n\n /**\n * @generated from field: optional livekit.proto.VideoBufferType format = 4;\n */\n format?: VideoBufferType;\n\n /**\n * @generated from field: optional bool normalize_stride = 5;\n */\n normalizeStride?: boolean;\n\n constructor(data?: PartialMessage<VideoStreamFromParticipantRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamFromParticipantRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"participant_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoStreamType), req: true },\n { no: 3, name: \"track_source\", kind: \"enum\", T: proto2.getEnumType(TrackSource), req: true },\n { no: 4, name: \"format\", kind: \"enum\", T: proto2.getEnumType(VideoBufferType), opt: true },\n { no: 5, name: \"normalize_stride\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamFromParticipantRequest {\n return new VideoStreamFromParticipantRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantRequest {\n return new VideoStreamFromParticipantRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantRequest {\n return new VideoStreamFromParticipantRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamFromParticipantRequest | PlainMessage<VideoStreamFromParticipantRequest> | undefined, b: VideoStreamFromParticipantRequest | PlainMessage<VideoStreamFromParticipantRequest> | undefined): boolean {\n return proto2.util.equals(VideoStreamFromParticipantRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoStreamFromParticipantResponse\n */\nexport class VideoStreamFromParticipantResponse extends Message<VideoStreamFromParticipantResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedVideoStream stream = 1;\n */\n stream?: OwnedVideoStream;\n\n constructor(data?: PartialMessage<VideoStreamFromParticipantResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamFromParticipantResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"stream\", kind: \"message\", T: OwnedVideoStream, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamFromParticipantResponse {\n return new VideoStreamFromParticipantResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantResponse {\n return new VideoStreamFromParticipantResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantResponse {\n return new VideoStreamFromParticipantResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamFromParticipantResponse | PlainMessage<VideoStreamFromParticipantResponse> | undefined, b: VideoStreamFromParticipantResponse | PlainMessage<VideoStreamFromParticipantResponse> | undefined): boolean {\n return proto2.util.equals(VideoStreamFromParticipantResponse, a, b);\n }\n}\n\n/**\n * Create a new VideoSource\n * VideoSource is used to send video frame to a track\n *\n * @generated from message livekit.proto.NewVideoSourceRequest\n */\nexport class NewVideoSourceRequest extends Message<NewVideoSourceRequest> {\n /**\n * @generated from field: required livekit.proto.VideoSourceType type = 1;\n */\n type?: VideoSourceType;\n\n /**\n * Used to determine which encodings to use + simulcast layers\n * Most of the time it corresponds to the source resolution \n *\n * @generated from field: required livekit.proto.VideoSourceResolution resolution = 2;\n */\n resolution?: VideoSourceResolution;\n\n constructor(data?: PartialMessage<NewVideoSourceRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.NewVideoSourceRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoSourceType), req: true },\n { no: 2, name: \"resolution\", kind: \"message\", T: VideoSourceResolution, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NewVideoSourceRequest {\n return new NewVideoSourceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NewVideoSourceRequest {\n return new NewVideoSourceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NewVideoSourceRequest {\n return new NewVideoSourceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: NewVideoSourceRequest | PlainMessage<NewVideoSourceRequest> | undefined, b: NewVideoSourceRequest | PlainMessage<NewVideoSourceRequest> | undefined): boolean {\n return proto2.util.equals(NewVideoSourceRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.NewVideoSourceResponse\n */\nexport class NewVideoSourceResponse extends Message<NewVideoSourceResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedVideoSource source = 1;\n */\n source?: OwnedVideoSource;\n\n constructor(data?: PartialMessage<NewVideoSourceResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.NewVideoSourceResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"source\", kind: \"message\", T: OwnedVideoSource, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NewVideoSourceResponse {\n return new NewVideoSourceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NewVideoSourceResponse {\n return new NewVideoSourceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NewVideoSourceResponse {\n return new NewVideoSourceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: NewVideoSourceResponse | PlainMessage<NewVideoSourceResponse> | undefined, b: NewVideoSourceResponse | PlainMessage<NewVideoSourceResponse> | undefined): boolean {\n return proto2.util.equals(NewVideoSourceResponse, a, b);\n }\n}\n\n/**\n * Push a frame to a VideoSource\n *\n * @generated from message livekit.proto.CaptureVideoFrameRequest\n */\nexport class CaptureVideoFrameRequest extends Message<CaptureVideoFrameRequest> {\n /**\n * @generated from field: required uint64 source_handle = 1;\n */\n sourceHandle?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoBufferInfo buffer = 2;\n */\n buffer?: VideoBufferInfo;\n\n /**\n * In microseconds\n *\n * @generated from field: required int64 timestamp_us = 3;\n */\n timestampUs?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoRotation rotation = 4;\n */\n rotation?: VideoRotation;\n\n constructor(data?: PartialMessage<CaptureVideoFrameRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CaptureVideoFrameRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"source_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"buffer\", kind: \"message\", T: VideoBufferInfo, req: true },\n { no: 3, name: \"timestamp_us\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */, req: true },\n { no: 4, name: \"rotation\", kind: \"enum\", T: proto2.getEnumType(VideoRotation), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CaptureVideoFrameRequest {\n return new CaptureVideoFrameRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CaptureVideoFrameRequest {\n return new CaptureVideoFrameRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CaptureVideoFrameRequest {\n return new CaptureVideoFrameRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CaptureVideoFrameRequest | PlainMessage<CaptureVideoFrameRequest> | undefined, b: CaptureVideoFrameRequest | PlainMessage<CaptureVideoFrameRequest> | undefined): boolean {\n return proto2.util.equals(CaptureVideoFrameRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.CaptureVideoFrameResponse\n */\nexport class CaptureVideoFrameResponse extends Message<CaptureVideoFrameResponse> {\n constructor(data?: PartialMessage<CaptureVideoFrameResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CaptureVideoFrameResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CaptureVideoFrameResponse {\n return new CaptureVideoFrameResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CaptureVideoFrameResponse {\n return new CaptureVideoFrameResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CaptureVideoFrameResponse {\n return new CaptureVideoFrameResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CaptureVideoFrameResponse | PlainMessage<CaptureVideoFrameResponse> | undefined, b: CaptureVideoFrameResponse | PlainMessage<CaptureVideoFrameResponse> | undefined): boolean {\n return proto2.util.equals(CaptureVideoFrameResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoConvertRequest\n */\nexport class VideoConvertRequest extends Message<VideoConvertRequest> {\n /**\n * @generated from field: optional bool flip_y = 1;\n */\n flipY?: boolean;\n\n /**\n * @generated from field: required livekit.proto.VideoBufferInfo buffer = 2;\n */\n buffer?: VideoBufferInfo;\n\n /**\n * @generated from field: required livekit.proto.VideoBufferType dst_type = 3;\n */\n dstType?: VideoBufferType;\n\n constructor(data?: PartialMessage<VideoConvertRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoConvertRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"flip_y\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 2, name: \"buffer\", kind: \"message\", T: VideoBufferInfo, req: true },\n { no: 3, name: \"dst_type\", kind: \"enum\", T: proto2.getEnumType(VideoBufferType), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoConvertRequest {\n return new VideoConvertRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoConvertRequest {\n return new VideoConvertRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoConvertRequest {\n return new VideoConvertRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoConvertRequest | PlainMessage<VideoConvertRequest> | undefined, b: VideoConvertRequest | PlainMessage<VideoConvertRequest> | undefined): boolean {\n return proto2.util.equals(VideoConvertRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoConvertResponse\n */\nexport class VideoConvertResponse extends Message<VideoConvertResponse> {\n /**\n * @generated from oneof livekit.proto.VideoConvertResponse.message\n */\n message: {\n /**\n * @generated from field: string error = 1;\n */\n value: string;\n case: \"error\";\n } | {\n /**\n * @generated from field: livekit.proto.OwnedVideoBuffer buffer = 2;\n */\n value: OwnedVideoBuffer;\n case: \"buffer\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage<VideoConvertResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoConvertResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"message\" },\n { no: 2, name: \"buffer\", kind: \"message\", T: OwnedVideoBuffer, oneof: \"message\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoConvertResponse {\n return new VideoConvertResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoConvertResponse {\n return new VideoConvertResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoConvertResponse {\n return new VideoConvertResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoConvertResponse | PlainMessage<VideoConvertResponse> | undefined, b: VideoConvertResponse | PlainMessage<VideoConvertResponse> | undefined): boolean {\n return proto2.util.equals(VideoConvertResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoResolution\n */\nexport class VideoResolution extends Message<VideoResolution> {\n /**\n * @generated from field: required uint32 width = 1;\n */\n width?: number;\n\n /**\n * @generated from field: required uint32 height = 2;\n */\n height?: number;\n\n /**\n * @generated from field: required double frame_rate = 3;\n */\n frameRate?: number;\n\n constructor(data?: PartialMessage<VideoResolution>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoResolution\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"width\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 2, name: \"height\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 3, name: \"frame_rate\", kind: \"scalar\", T: 1 /* ScalarType.DOUBLE */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoResolution {\n return new VideoResolution().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoResolution {\n return new VideoResolution().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoResolution {\n return new VideoResolution().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoResolution | PlainMessage<VideoResolution> | undefined, b: VideoResolution | PlainMessage<VideoResolution> | undefined): boolean {\n return proto2.util.equals(VideoResolution, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoBufferInfo\n */\nexport class VideoBufferInfo extends Message<VideoBufferInfo> {\n /**\n * @generated from field: required livekit.proto.VideoBufferType type = 1;\n */\n type?: VideoBufferType;\n\n /**\n * @generated from field: required uint32 width = 2;\n */\n width?: number;\n\n /**\n * @generated from field: required uint32 height = 3;\n */\n height?: number;\n\n /**\n * @generated from field: required uint64 data_ptr = 4;\n */\n dataPtr?: bigint;\n\n /**\n * only for packed formats\n *\n * @generated from field: required uint32 stride = 6;\n */\n stride?: number;\n\n /**\n * @generated from field: repeated livekit.proto.VideoBufferInfo.ComponentInfo components = 7;\n */\n components: VideoBufferInfo_ComponentInfo[] = [];\n\n constructor(data?: PartialMessage<VideoBufferInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoBufferInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoBufferType), req: true },\n { no: 2, name: \"width\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 3, name: \"height\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 4, name: \"data_ptr\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 6, name: \"stride\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 7, name: \"components\", kind: \"message\", T: VideoBufferInfo_ComponentInfo, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoBufferInfo {\n return new VideoBufferInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoBufferInfo {\n return new VideoBufferInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoBufferInfo {\n return new VideoBufferInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoBufferInfo | PlainMessage<VideoBufferInfo> | undefined, b: VideoBufferInfo | PlainMessage<VideoBufferInfo> | undefined): boolean {\n return proto2.util.equals(VideoBufferInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoBufferInfo.ComponentInfo\n */\nexport class VideoBufferInfo_ComponentInfo extends Message<VideoBufferInfo_ComponentInfo> {\n /**\n * @generated from field: required uint64 data_ptr = 1;\n */\n dataPtr?: bigint;\n\n /**\n * @generated from field: required uint32 stride = 2;\n */\n stride?: number;\n\n /**\n * @generated from field: required uint32 size = 3;\n */\n size?: number;\n\n constructor(data?: PartialMessage<VideoBufferInfo_ComponentInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoBufferInfo.ComponentInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"data_ptr\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"stride\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 3, name: \"size\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoBufferInfo_ComponentInfo {\n return new VideoBufferInfo_ComponentInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoBufferInfo_ComponentInfo {\n return new VideoBufferInfo_ComponentInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoBufferInfo_ComponentInfo {\n return new VideoBufferInfo_ComponentInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoBufferInfo_ComponentInfo | PlainMessage<VideoBufferInfo_ComponentInfo> | undefined, b: VideoBufferInfo_ComponentInfo | PlainMessage<VideoBufferInfo_ComponentInfo> | undefined): boolean {\n return proto2.util.equals(VideoBufferInfo_ComponentInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedVideoBuffer\n */\nexport class OwnedVideoBuffer extends Message<OwnedVideoBuffer> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.VideoBufferInfo info = 2;\n */\n info?: VideoBufferInfo;\n\n constructor(data?: PartialMessage<OwnedVideoBuffer>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedVideoBuffer\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: VideoBufferInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedVideoBuffer {\n return new OwnedVideoBuffer().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedVideoBuffer {\n return new OwnedVideoBuffer().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedVideoBuffer {\n return new OwnedVideoBuffer().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedVideoBuffer | PlainMessage<OwnedVideoBuffer> | undefined, b: OwnedVideoBuffer | PlainMessage<OwnedVideoBuffer> | undefined): boolean {\n return proto2.util.equals(OwnedVideoBuffer, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoStreamInfo\n */\nexport class VideoStreamInfo extends Message<VideoStreamInfo> {\n /**\n * @generated from field: required livekit.proto.VideoStreamType type = 1;\n */\n type?: VideoStreamType;\n\n constructor(data?: PartialMessage<VideoStreamInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoStreamType), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamInfo {\n return new VideoStreamInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamInfo {\n return new VideoStreamInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamInfo {\n return new VideoStreamInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamInfo | PlainMessage<VideoStreamInfo> | undefined, b: VideoStreamInfo | PlainMessage<VideoStreamInfo> | undefined): boolean {\n return proto2.util.equals(VideoStreamInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedVideoStream\n */\nexport class OwnedVideoStream extends Message<OwnedVideoStream> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.VideoStreamInfo info = 2;\n */\n info?: VideoStreamInfo;\n\n constructor(data?: PartialMessage<OwnedVideoStream>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedVideoStream\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: VideoStreamInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedVideoStream {\n return new OwnedVideoStream().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedVideoStream {\n return new OwnedVideoStream().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedVideoStream {\n return new OwnedVideoStream().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedVideoStream | PlainMessage<OwnedVideoStream> | undefined, b: OwnedVideoStream | PlainMessage<OwnedVideoStream> | undefined): boolean {\n return proto2.util.equals(OwnedVideoStream, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoStreamEvent\n */\nexport class VideoStreamEvent extends Message<VideoStreamEvent> {\n /**\n * @generated from field: required uint64 stream_handle = 1;\n */\n streamHandle?: bigint;\n\n /**\n * @generated from oneof livekit.proto.VideoStreamEvent.message\n */\n message: {\n /**\n * @generated from field: livekit.proto.VideoFrameReceived frame_received = 2;\n */\n value: VideoFrameReceived;\n case: \"frameReceived\";\n } | {\n /**\n * @generated from field: livekit.proto.VideoStreamEOS eos = 3;\n */\n value: VideoStreamEOS;\n case: \"eos\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage<VideoStreamEvent>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamEvent\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"stream_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"frame_received\", kind: \"message\", T: VideoFrameReceived, oneof: \"message\" },\n { no: 3, name: \"eos\", kind: \"message\", T: VideoStreamEOS, oneof: \"message\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamEvent {\n return new VideoStreamEvent().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamEvent {\n return new VideoStreamEvent().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamEvent {\n return new VideoStreamEvent().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamEvent | PlainMessage<VideoStreamEvent> | undefined, b: VideoStreamEvent | PlainMessage<VideoStreamEvent> | undefined): boolean {\n return proto2.util.equals(VideoStreamEvent, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoFrameReceived\n */\nexport class VideoFrameReceived extends Message<VideoFrameReceived> {\n /**\n * @generated from field: required livekit.proto.OwnedVideoBuffer buffer = 1;\n */\n buffer?: OwnedVideoBuffer;\n\n /**\n * In microseconds\n *\n * @generated from field: required int64 timestamp_us = 2;\n */\n timestampUs?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoRotation rotation = 3;\n */\n rotation?: VideoRotation;\n\n constructor(data?: PartialMessage<VideoFrameReceived>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoFrameReceived\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"buffer\", kind: \"message\", T: OwnedVideoBuffer, req: true },\n { no: 2, name: \"timestamp_us\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */, req: true },\n { no: 3, name: \"rotation\", kind: \"enum\", T: proto2.getEnumType(VideoRotation), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoFrameReceived {\n return new VideoFrameReceived().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoFrameReceived {\n return new VideoFrameReceived().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoFrameReceived {\n return new VideoFrameReceived().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoFrameReceived | PlainMessage<VideoFrameReceived> | undefined, b: VideoFrameReceived | PlainMessage<VideoFrameReceived> | undefined): boolean {\n return proto2.util.equals(VideoFrameReceived, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoStreamEOS\n */\nexport class VideoStreamEOS extends Message<VideoStreamEOS> {\n constructor(data?: PartialMessage<VideoStreamEOS>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamEOS\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamEOS {\n return new VideoStreamEOS().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamEOS {\n return new VideoStreamEOS().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamEOS {\n return new VideoStreamEOS().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamEOS | PlainMessage<VideoStreamEOS> | undefined, b: VideoStreamEOS | PlainMessage<VideoStreamEOS> | undefined): boolean {\n return proto2.util.equals(VideoStreamEOS, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoSourceResolution\n */\nexport class VideoSourceResolution extends Message<VideoSourceResolution> {\n /**\n * @generated from field: required uint32 width = 1;\n */\n width?: number;\n\n /**\n * @generated from field: required uint32 height = 2;\n */\n height?: number;\n\n constructor(data?: PartialMessage<VideoSourceResolution>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoSourceResolution\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"width\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 2, name: \"height\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoSourceResolution {\n return new VideoSourceResolution().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoSourceResolution {\n return new VideoSourceResolution().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoSourceResolution {\n return new VideoSourceResolution().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoSourceResolution | PlainMessage<VideoSourceResolution> | undefined, b: VideoSourceResolution | PlainMessage<VideoSourceResolution> | undefined): boolean {\n return proto2.util.equals(VideoSourceResolution, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoSourceInfo\n */\nexport class VideoSourceInfo extends Message<VideoSourceInfo> {\n /**\n * @generated from field: required livekit.proto.VideoSourceType type = 1;\n */\n type?: VideoSourceType;\n\n constructor(data?: PartialMessage<VideoSourceInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoSourceInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoSourceType), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoSourceInfo {\n return new VideoSourceInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoSourceInfo {\n return new VideoSourceInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoSourceInfo {\n return new VideoSourceInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoSourceInfo | PlainMessage<VideoSourceInfo> | undefined, b: VideoSourceInfo | PlainMessage<VideoSourceInfo> | undefined): boolean {\n return proto2.util.equals(VideoSourceInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedVideoSource\n */\nexport class OwnedVideoSource extends Message<OwnedVideoSource> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.VideoSourceInfo info = 2;\n */\n info?: VideoSourceInfo;\n\n constructor(data?: PartialMessage<OwnedVideoSource>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedVideoSource\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: VideoSourceInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedVideoSource {\n return new OwnedVideoSource().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedVideoSource {\n return new OwnedVideoSource().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedVideoSource {\n return new OwnedVideoSource().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedVideoSource | PlainMessage<OwnedVideoSource> | undefined, b: OwnedVideoSource | PlainMessage<OwnedVideoSource> | undefined): boolean {\n return proto2.util.equals(OwnedVideoSource, a, b);\n }\n}\n\n"],"mappings":"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","names":["VideoCodec","VideoRotation","VideoBufferType","VideoStreamType","VideoSourceType"]}
1
+ {"version":3,"sources":["../../src/proto/video_frame_pb.ts"],"sourcesContent":["// Copyright 2023 LiveKit, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v1.10.0 with parameter \"target=ts,import_extension=.js\"\n// @generated from file video_frame.proto (package livekit.proto, syntax proto2)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto2 } from \"@bufbuild/protobuf\";\nimport { TrackSource } from \"./track_pb.js\";\nimport { FfiOwnedHandle } from \"./handle_pb.js\";\n\n/**\n * @generated from enum livekit.proto.VideoCodec\n */\nexport enum VideoCodec {\n /**\n * @generated from enum value: VP8 = 0;\n */\n VP8 = 0,\n\n /**\n * @generated from enum value: H264 = 1;\n */\n H264 = 1,\n\n /**\n * @generated from enum value: AV1 = 2;\n */\n AV1 = 2,\n\n /**\n * @generated from enum value: VP9 = 3;\n */\n VP9 = 3,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoCodec)\nproto2.util.setEnumType(VideoCodec, \"livekit.proto.VideoCodec\", [\n { no: 0, name: \"VP8\" },\n { no: 1, name: \"H264\" },\n { no: 2, name: \"AV1\" },\n { no: 3, name: \"VP9\" },\n]);\n\n/**\n * @generated from enum livekit.proto.VideoRotation\n */\nexport enum VideoRotation {\n /**\n * @generated from enum value: VIDEO_ROTATION_0 = 0;\n */\n VIDEO_ROTATION_0 = 0,\n\n /**\n * @generated from enum value: VIDEO_ROTATION_90 = 1;\n */\n VIDEO_ROTATION_90 = 1,\n\n /**\n * @generated from enum value: VIDEO_ROTATION_180 = 2;\n */\n VIDEO_ROTATION_180 = 2,\n\n /**\n * @generated from enum value: VIDEO_ROTATION_270 = 3;\n */\n VIDEO_ROTATION_270 = 3,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoRotation)\nproto2.util.setEnumType(VideoRotation, \"livekit.proto.VideoRotation\", [\n { no: 0, name: \"VIDEO_ROTATION_0\" },\n { no: 1, name: \"VIDEO_ROTATION_90\" },\n { no: 2, name: \"VIDEO_ROTATION_180\" },\n { no: 3, name: \"VIDEO_ROTATION_270\" },\n]);\n\n/**\n * Values of this enum must not be changed\n * It is used to serialize a rtc.VideoFrame on Python\n *\n * @generated from enum livekit.proto.VideoBufferType\n */\nexport enum VideoBufferType {\n /**\n * @generated from enum value: RGBA = 0;\n */\n RGBA = 0,\n\n /**\n * @generated from enum value: ABGR = 1;\n */\n ABGR = 1,\n\n /**\n * @generated from enum value: ARGB = 2;\n */\n ARGB = 2,\n\n /**\n * @generated from enum value: BGRA = 3;\n */\n BGRA = 3,\n\n /**\n * @generated from enum value: RGB24 = 4;\n */\n RGB24 = 4,\n\n /**\n * @generated from enum value: I420 = 5;\n */\n I420 = 5,\n\n /**\n * @generated from enum value: I420A = 6;\n */\n I420A = 6,\n\n /**\n * @generated from enum value: I422 = 7;\n */\n I422 = 7,\n\n /**\n * @generated from enum value: I444 = 8;\n */\n I444 = 8,\n\n /**\n * @generated from enum value: I010 = 9;\n */\n I010 = 9,\n\n /**\n * @generated from enum value: NV12 = 10;\n */\n NV12 = 10,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoBufferType)\nproto2.util.setEnumType(VideoBufferType, \"livekit.proto.VideoBufferType\", [\n { no: 0, name: \"RGBA\" },\n { no: 1, name: \"ABGR\" },\n { no: 2, name: \"ARGB\" },\n { no: 3, name: \"BGRA\" },\n { no: 4, name: \"RGB24\" },\n { no: 5, name: \"I420\" },\n { no: 6, name: \"I420A\" },\n { no: 7, name: \"I422\" },\n { no: 8, name: \"I444\" },\n { no: 9, name: \"I010\" },\n { no: 10, name: \"NV12\" },\n]);\n\n/**\n * @generated from enum livekit.proto.VideoStreamType\n */\nexport enum VideoStreamType {\n /**\n * @generated from enum value: VIDEO_STREAM_NATIVE = 0;\n */\n VIDEO_STREAM_NATIVE = 0,\n\n /**\n * @generated from enum value: VIDEO_STREAM_WEBGL = 1;\n */\n VIDEO_STREAM_WEBGL = 1,\n\n /**\n * @generated from enum value: VIDEO_STREAM_HTML = 2;\n */\n VIDEO_STREAM_HTML = 2,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoStreamType)\nproto2.util.setEnumType(VideoStreamType, \"livekit.proto.VideoStreamType\", [\n { no: 0, name: \"VIDEO_STREAM_NATIVE\" },\n { no: 1, name: \"VIDEO_STREAM_WEBGL\" },\n { no: 2, name: \"VIDEO_STREAM_HTML\" },\n]);\n\n/**\n * @generated from enum livekit.proto.VideoSourceType\n */\nexport enum VideoSourceType {\n /**\n * @generated from enum value: VIDEO_SOURCE_NATIVE = 0;\n */\n VIDEO_SOURCE_NATIVE = 0,\n}\n// Retrieve enum metadata with: proto2.getEnumType(VideoSourceType)\nproto2.util.setEnumType(VideoSourceType, \"livekit.proto.VideoSourceType\", [\n { no: 0, name: \"VIDEO_SOURCE_NATIVE\" },\n]);\n\n/**\n * Create a new VideoStream\n * VideoStream is used to receive video frames from a track\n *\n * @generated from message livekit.proto.NewVideoStreamRequest\n */\nexport class NewVideoStreamRequest extends Message<NewVideoStreamRequest> {\n /**\n * @generated from field: required uint64 track_handle = 1;\n */\n trackHandle?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoStreamType type = 2;\n */\n type?: VideoStreamType;\n\n /**\n * Get the frame on a specific format\n *\n * @generated from field: optional livekit.proto.VideoBufferType format = 3;\n */\n format?: VideoBufferType;\n\n /**\n * if true, stride will be set to width/chroma_width\n *\n * @generated from field: optional bool normalize_stride = 4;\n */\n normalizeStride?: boolean;\n\n constructor(data?: PartialMessage<NewVideoStreamRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.NewVideoStreamRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoStreamType), req: true },\n { no: 3, name: \"format\", kind: \"enum\", T: proto2.getEnumType(VideoBufferType), opt: true },\n { no: 4, name: \"normalize_stride\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NewVideoStreamRequest {\n return new NewVideoStreamRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NewVideoStreamRequest {\n return new NewVideoStreamRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NewVideoStreamRequest {\n return new NewVideoStreamRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: NewVideoStreamRequest | PlainMessage<NewVideoStreamRequest> | undefined, b: NewVideoStreamRequest | PlainMessage<NewVideoStreamRequest> | undefined): boolean {\n return proto2.util.equals(NewVideoStreamRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.NewVideoStreamResponse\n */\nexport class NewVideoStreamResponse extends Message<NewVideoStreamResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedVideoStream stream = 1;\n */\n stream?: OwnedVideoStream;\n\n constructor(data?: PartialMessage<NewVideoStreamResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.NewVideoStreamResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"stream\", kind: \"message\", T: OwnedVideoStream, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NewVideoStreamResponse {\n return new NewVideoStreamResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NewVideoStreamResponse {\n return new NewVideoStreamResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NewVideoStreamResponse {\n return new NewVideoStreamResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: NewVideoStreamResponse | PlainMessage<NewVideoStreamResponse> | undefined, b: NewVideoStreamResponse | PlainMessage<NewVideoStreamResponse> | undefined): boolean {\n return proto2.util.equals(NewVideoStreamResponse, a, b);\n }\n}\n\n/**\n * Request a video stream from a participant\n *\n * @generated from message livekit.proto.VideoStreamFromParticipantRequest\n */\nexport class VideoStreamFromParticipantRequest extends Message<VideoStreamFromParticipantRequest> {\n /**\n * @generated from field: required uint64 participant_handle = 1;\n */\n participantHandle?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoStreamType type = 2;\n */\n type?: VideoStreamType;\n\n /**\n * @generated from field: required livekit.proto.TrackSource track_source = 3;\n */\n trackSource?: TrackSource;\n\n /**\n * @generated from field: optional livekit.proto.VideoBufferType format = 4;\n */\n format?: VideoBufferType;\n\n /**\n * @generated from field: optional bool normalize_stride = 5;\n */\n normalizeStride?: boolean;\n\n constructor(data?: PartialMessage<VideoStreamFromParticipantRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamFromParticipantRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"participant_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoStreamType), req: true },\n { no: 3, name: \"track_source\", kind: \"enum\", T: proto2.getEnumType(TrackSource), req: true },\n { no: 4, name: \"format\", kind: \"enum\", T: proto2.getEnumType(VideoBufferType), opt: true },\n { no: 5, name: \"normalize_stride\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamFromParticipantRequest {\n return new VideoStreamFromParticipantRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantRequest {\n return new VideoStreamFromParticipantRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantRequest {\n return new VideoStreamFromParticipantRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamFromParticipantRequest | PlainMessage<VideoStreamFromParticipantRequest> | undefined, b: VideoStreamFromParticipantRequest | PlainMessage<VideoStreamFromParticipantRequest> | undefined): boolean {\n return proto2.util.equals(VideoStreamFromParticipantRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoStreamFromParticipantResponse\n */\nexport class VideoStreamFromParticipantResponse extends Message<VideoStreamFromParticipantResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedVideoStream stream = 1;\n */\n stream?: OwnedVideoStream;\n\n constructor(data?: PartialMessage<VideoStreamFromParticipantResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamFromParticipantResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"stream\", kind: \"message\", T: OwnedVideoStream, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamFromParticipantResponse {\n return new VideoStreamFromParticipantResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantResponse {\n return new VideoStreamFromParticipantResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantResponse {\n return new VideoStreamFromParticipantResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamFromParticipantResponse | PlainMessage<VideoStreamFromParticipantResponse> | undefined, b: VideoStreamFromParticipantResponse | PlainMessage<VideoStreamFromParticipantResponse> | undefined): boolean {\n return proto2.util.equals(VideoStreamFromParticipantResponse, a, b);\n }\n}\n\n/**\n * Create a new VideoSource\n * VideoSource is used to send video frame to a track\n *\n * @generated from message livekit.proto.NewVideoSourceRequest\n */\nexport class NewVideoSourceRequest extends Message<NewVideoSourceRequest> {\n /**\n * @generated from field: required livekit.proto.VideoSourceType type = 1;\n */\n type?: VideoSourceType;\n\n /**\n * Used to determine which encodings to use + simulcast layers\n * Most of the time it corresponds to the source resolution \n *\n * @generated from field: required livekit.proto.VideoSourceResolution resolution = 2;\n */\n resolution?: VideoSourceResolution;\n\n constructor(data?: PartialMessage<NewVideoSourceRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.NewVideoSourceRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoSourceType), req: true },\n { no: 2, name: \"resolution\", kind: \"message\", T: VideoSourceResolution, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NewVideoSourceRequest {\n return new NewVideoSourceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NewVideoSourceRequest {\n return new NewVideoSourceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NewVideoSourceRequest {\n return new NewVideoSourceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: NewVideoSourceRequest | PlainMessage<NewVideoSourceRequest> | undefined, b: NewVideoSourceRequest | PlainMessage<NewVideoSourceRequest> | undefined): boolean {\n return proto2.util.equals(NewVideoSourceRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.NewVideoSourceResponse\n */\nexport class NewVideoSourceResponse extends Message<NewVideoSourceResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedVideoSource source = 1;\n */\n source?: OwnedVideoSource;\n\n constructor(data?: PartialMessage<NewVideoSourceResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.NewVideoSourceResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"source\", kind: \"message\", T: OwnedVideoSource, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NewVideoSourceResponse {\n return new NewVideoSourceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NewVideoSourceResponse {\n return new NewVideoSourceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NewVideoSourceResponse {\n return new NewVideoSourceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: NewVideoSourceResponse | PlainMessage<NewVideoSourceResponse> | undefined, b: NewVideoSourceResponse | PlainMessage<NewVideoSourceResponse> | undefined): boolean {\n return proto2.util.equals(NewVideoSourceResponse, a, b);\n }\n}\n\n/**\n * Push a frame to a VideoSource\n *\n * @generated from message livekit.proto.CaptureVideoFrameRequest\n */\nexport class CaptureVideoFrameRequest extends Message<CaptureVideoFrameRequest> {\n /**\n * @generated from field: required uint64 source_handle = 1;\n */\n sourceHandle?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoBufferInfo buffer = 2;\n */\n buffer?: VideoBufferInfo;\n\n /**\n * In microseconds\n *\n * @generated from field: required int64 timestamp_us = 3;\n */\n timestampUs?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoRotation rotation = 4;\n */\n rotation?: VideoRotation;\n\n constructor(data?: PartialMessage<CaptureVideoFrameRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CaptureVideoFrameRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"source_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"buffer\", kind: \"message\", T: VideoBufferInfo, req: true },\n { no: 3, name: \"timestamp_us\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */, req: true },\n { no: 4, name: \"rotation\", kind: \"enum\", T: proto2.getEnumType(VideoRotation), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CaptureVideoFrameRequest {\n return new CaptureVideoFrameRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CaptureVideoFrameRequest {\n return new CaptureVideoFrameRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CaptureVideoFrameRequest {\n return new CaptureVideoFrameRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CaptureVideoFrameRequest | PlainMessage<CaptureVideoFrameRequest> | undefined, b: CaptureVideoFrameRequest | PlainMessage<CaptureVideoFrameRequest> | undefined): boolean {\n return proto2.util.equals(CaptureVideoFrameRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.CaptureVideoFrameResponse\n */\nexport class CaptureVideoFrameResponse extends Message<CaptureVideoFrameResponse> {\n constructor(data?: PartialMessage<CaptureVideoFrameResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CaptureVideoFrameResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CaptureVideoFrameResponse {\n return new CaptureVideoFrameResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CaptureVideoFrameResponse {\n return new CaptureVideoFrameResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CaptureVideoFrameResponse {\n return new CaptureVideoFrameResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CaptureVideoFrameResponse | PlainMessage<CaptureVideoFrameResponse> | undefined, b: CaptureVideoFrameResponse | PlainMessage<CaptureVideoFrameResponse> | undefined): boolean {\n return proto2.util.equals(CaptureVideoFrameResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoConvertRequest\n */\nexport class VideoConvertRequest extends Message<VideoConvertRequest> {\n /**\n * @generated from field: optional bool flip_y = 1;\n */\n flipY?: boolean;\n\n /**\n * @generated from field: required livekit.proto.VideoBufferInfo buffer = 2;\n */\n buffer?: VideoBufferInfo;\n\n /**\n * @generated from field: required livekit.proto.VideoBufferType dst_type = 3;\n */\n dstType?: VideoBufferType;\n\n constructor(data?: PartialMessage<VideoConvertRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoConvertRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"flip_y\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 2, name: \"buffer\", kind: \"message\", T: VideoBufferInfo, req: true },\n { no: 3, name: \"dst_type\", kind: \"enum\", T: proto2.getEnumType(VideoBufferType), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoConvertRequest {\n return new VideoConvertRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoConvertRequest {\n return new VideoConvertRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoConvertRequest {\n return new VideoConvertRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoConvertRequest | PlainMessage<VideoConvertRequest> | undefined, b: VideoConvertRequest | PlainMessage<VideoConvertRequest> | undefined): boolean {\n return proto2.util.equals(VideoConvertRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoConvertResponse\n */\nexport class VideoConvertResponse extends Message<VideoConvertResponse> {\n /**\n * @generated from oneof livekit.proto.VideoConvertResponse.message\n */\n message: {\n /**\n * @generated from field: string error = 1;\n */\n value: string;\n case: \"error\";\n } | {\n /**\n * @generated from field: livekit.proto.OwnedVideoBuffer buffer = 2;\n */\n value: OwnedVideoBuffer;\n case: \"buffer\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage<VideoConvertResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoConvertResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"message\" },\n { no: 2, name: \"buffer\", kind: \"message\", T: OwnedVideoBuffer, oneof: \"message\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoConvertResponse {\n return new VideoConvertResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoConvertResponse {\n return new VideoConvertResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoConvertResponse {\n return new VideoConvertResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoConvertResponse | PlainMessage<VideoConvertResponse> | undefined, b: VideoConvertResponse | PlainMessage<VideoConvertResponse> | undefined): boolean {\n return proto2.util.equals(VideoConvertResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoResolution\n */\nexport class VideoResolution extends Message<VideoResolution> {\n /**\n * @generated from field: required uint32 width = 1;\n */\n width?: number;\n\n /**\n * @generated from field: required uint32 height = 2;\n */\n height?: number;\n\n /**\n * @generated from field: required double frame_rate = 3;\n */\n frameRate?: number;\n\n constructor(data?: PartialMessage<VideoResolution>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoResolution\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"width\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 2, name: \"height\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 3, name: \"frame_rate\", kind: \"scalar\", T: 1 /* ScalarType.DOUBLE */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoResolution {\n return new VideoResolution().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoResolution {\n return new VideoResolution().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoResolution {\n return new VideoResolution().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoResolution | PlainMessage<VideoResolution> | undefined, b: VideoResolution | PlainMessage<VideoResolution> | undefined): boolean {\n return proto2.util.equals(VideoResolution, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoBufferInfo\n */\nexport class VideoBufferInfo extends Message<VideoBufferInfo> {\n /**\n * @generated from field: required livekit.proto.VideoBufferType type = 1;\n */\n type?: VideoBufferType;\n\n /**\n * @generated from field: required uint32 width = 2;\n */\n width?: number;\n\n /**\n * @generated from field: required uint32 height = 3;\n */\n height?: number;\n\n /**\n * @generated from field: required uint64 data_ptr = 4;\n */\n dataPtr?: bigint;\n\n /**\n * only for packed formats\n *\n * @generated from field: optional uint32 stride = 6;\n */\n stride?: number;\n\n /**\n * @generated from field: repeated livekit.proto.VideoBufferInfo.ComponentInfo components = 7;\n */\n components: VideoBufferInfo_ComponentInfo[] = [];\n\n constructor(data?: PartialMessage<VideoBufferInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoBufferInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoBufferType), req: true },\n { no: 2, name: \"width\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 3, name: \"height\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 4, name: \"data_ptr\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 6, name: \"stride\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, opt: true },\n { no: 7, name: \"components\", kind: \"message\", T: VideoBufferInfo_ComponentInfo, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoBufferInfo {\n return new VideoBufferInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoBufferInfo {\n return new VideoBufferInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoBufferInfo {\n return new VideoBufferInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoBufferInfo | PlainMessage<VideoBufferInfo> | undefined, b: VideoBufferInfo | PlainMessage<VideoBufferInfo> | undefined): boolean {\n return proto2.util.equals(VideoBufferInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoBufferInfo.ComponentInfo\n */\nexport class VideoBufferInfo_ComponentInfo extends Message<VideoBufferInfo_ComponentInfo> {\n /**\n * @generated from field: required uint64 data_ptr = 1;\n */\n dataPtr?: bigint;\n\n /**\n * @generated from field: required uint32 stride = 2;\n */\n stride?: number;\n\n /**\n * @generated from field: required uint32 size = 3;\n */\n size?: number;\n\n constructor(data?: PartialMessage<VideoBufferInfo_ComponentInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoBufferInfo.ComponentInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"data_ptr\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"stride\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 3, name: \"size\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoBufferInfo_ComponentInfo {\n return new VideoBufferInfo_ComponentInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoBufferInfo_ComponentInfo {\n return new VideoBufferInfo_ComponentInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoBufferInfo_ComponentInfo {\n return new VideoBufferInfo_ComponentInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoBufferInfo_ComponentInfo | PlainMessage<VideoBufferInfo_ComponentInfo> | undefined, b: VideoBufferInfo_ComponentInfo | PlainMessage<VideoBufferInfo_ComponentInfo> | undefined): boolean {\n return proto2.util.equals(VideoBufferInfo_ComponentInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedVideoBuffer\n */\nexport class OwnedVideoBuffer extends Message<OwnedVideoBuffer> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.VideoBufferInfo info = 2;\n */\n info?: VideoBufferInfo;\n\n constructor(data?: PartialMessage<OwnedVideoBuffer>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedVideoBuffer\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: VideoBufferInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedVideoBuffer {\n return new OwnedVideoBuffer().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedVideoBuffer {\n return new OwnedVideoBuffer().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedVideoBuffer {\n return new OwnedVideoBuffer().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedVideoBuffer | PlainMessage<OwnedVideoBuffer> | undefined, b: OwnedVideoBuffer | PlainMessage<OwnedVideoBuffer> | undefined): boolean {\n return proto2.util.equals(OwnedVideoBuffer, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoStreamInfo\n */\nexport class VideoStreamInfo extends Message<VideoStreamInfo> {\n /**\n * @generated from field: required livekit.proto.VideoStreamType type = 1;\n */\n type?: VideoStreamType;\n\n constructor(data?: PartialMessage<VideoStreamInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoStreamType), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamInfo {\n return new VideoStreamInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamInfo {\n return new VideoStreamInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamInfo {\n return new VideoStreamInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamInfo | PlainMessage<VideoStreamInfo> | undefined, b: VideoStreamInfo | PlainMessage<VideoStreamInfo> | undefined): boolean {\n return proto2.util.equals(VideoStreamInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedVideoStream\n */\nexport class OwnedVideoStream extends Message<OwnedVideoStream> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.VideoStreamInfo info = 2;\n */\n info?: VideoStreamInfo;\n\n constructor(data?: PartialMessage<OwnedVideoStream>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedVideoStream\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: VideoStreamInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedVideoStream {\n return new OwnedVideoStream().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedVideoStream {\n return new OwnedVideoStream().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedVideoStream {\n return new OwnedVideoStream().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedVideoStream | PlainMessage<OwnedVideoStream> | undefined, b: OwnedVideoStream | PlainMessage<OwnedVideoStream> | undefined): boolean {\n return proto2.util.equals(OwnedVideoStream, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoStreamEvent\n */\nexport class VideoStreamEvent extends Message<VideoStreamEvent> {\n /**\n * @generated from field: required uint64 stream_handle = 1;\n */\n streamHandle?: bigint;\n\n /**\n * @generated from oneof livekit.proto.VideoStreamEvent.message\n */\n message: {\n /**\n * @generated from field: livekit.proto.VideoFrameReceived frame_received = 2;\n */\n value: VideoFrameReceived;\n case: \"frameReceived\";\n } | {\n /**\n * @generated from field: livekit.proto.VideoStreamEOS eos = 3;\n */\n value: VideoStreamEOS;\n case: \"eos\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage<VideoStreamEvent>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamEvent\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"stream_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"frame_received\", kind: \"message\", T: VideoFrameReceived, oneof: \"message\" },\n { no: 3, name: \"eos\", kind: \"message\", T: VideoStreamEOS, oneof: \"message\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamEvent {\n return new VideoStreamEvent().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamEvent {\n return new VideoStreamEvent().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamEvent {\n return new VideoStreamEvent().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamEvent | PlainMessage<VideoStreamEvent> | undefined, b: VideoStreamEvent | PlainMessage<VideoStreamEvent> | undefined): boolean {\n return proto2.util.equals(VideoStreamEvent, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoFrameReceived\n */\nexport class VideoFrameReceived extends Message<VideoFrameReceived> {\n /**\n * @generated from field: required livekit.proto.OwnedVideoBuffer buffer = 1;\n */\n buffer?: OwnedVideoBuffer;\n\n /**\n * In microseconds\n *\n * @generated from field: required int64 timestamp_us = 2;\n */\n timestampUs?: bigint;\n\n /**\n * @generated from field: required livekit.proto.VideoRotation rotation = 3;\n */\n rotation?: VideoRotation;\n\n constructor(data?: PartialMessage<VideoFrameReceived>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoFrameReceived\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"buffer\", kind: \"message\", T: OwnedVideoBuffer, req: true },\n { no: 2, name: \"timestamp_us\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */, req: true },\n { no: 3, name: \"rotation\", kind: \"enum\", T: proto2.getEnumType(VideoRotation), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoFrameReceived {\n return new VideoFrameReceived().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoFrameReceived {\n return new VideoFrameReceived().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoFrameReceived {\n return new VideoFrameReceived().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoFrameReceived | PlainMessage<VideoFrameReceived> | undefined, b: VideoFrameReceived | PlainMessage<VideoFrameReceived> | undefined): boolean {\n return proto2.util.equals(VideoFrameReceived, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoStreamEOS\n */\nexport class VideoStreamEOS extends Message<VideoStreamEOS> {\n constructor(data?: PartialMessage<VideoStreamEOS>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoStreamEOS\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamEOS {\n return new VideoStreamEOS().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamEOS {\n return new VideoStreamEOS().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamEOS {\n return new VideoStreamEOS().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoStreamEOS | PlainMessage<VideoStreamEOS> | undefined, b: VideoStreamEOS | PlainMessage<VideoStreamEOS> | undefined): boolean {\n return proto2.util.equals(VideoStreamEOS, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoSourceResolution\n */\nexport class VideoSourceResolution extends Message<VideoSourceResolution> {\n /**\n * @generated from field: required uint32 width = 1;\n */\n width?: number;\n\n /**\n * @generated from field: required uint32 height = 2;\n */\n height?: number;\n\n constructor(data?: PartialMessage<VideoSourceResolution>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoSourceResolution\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"width\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 2, name: \"height\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoSourceResolution {\n return new VideoSourceResolution().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoSourceResolution {\n return new VideoSourceResolution().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoSourceResolution {\n return new VideoSourceResolution().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoSourceResolution | PlainMessage<VideoSourceResolution> | undefined, b: VideoSourceResolution | PlainMessage<VideoSourceResolution> | undefined): boolean {\n return proto2.util.equals(VideoSourceResolution, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.VideoSourceInfo\n */\nexport class VideoSourceInfo extends Message<VideoSourceInfo> {\n /**\n * @generated from field: required livekit.proto.VideoSourceType type = 1;\n */\n type?: VideoSourceType;\n\n constructor(data?: PartialMessage<VideoSourceInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.VideoSourceInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto2.getEnumType(VideoSourceType), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoSourceInfo {\n return new VideoSourceInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoSourceInfo {\n return new VideoSourceInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoSourceInfo {\n return new VideoSourceInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: VideoSourceInfo | PlainMessage<VideoSourceInfo> | undefined, b: VideoSourceInfo | PlainMessage<VideoSourceInfo> | undefined): boolean {\n return proto2.util.equals(VideoSourceInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedVideoSource\n */\nexport class OwnedVideoSource extends Message<OwnedVideoSource> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.VideoSourceInfo info = 2;\n */\n info?: VideoSourceInfo;\n\n constructor(data?: PartialMessage<OwnedVideoSource>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedVideoSource\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: VideoSourceInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedVideoSource {\n return new OwnedVideoSource().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedVideoSource {\n return new OwnedVideoSource().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedVideoSource {\n return new OwnedVideoSource().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedVideoSource | PlainMessage<OwnedVideoSource> | undefined, b: OwnedVideoSource | PlainMessage<OwnedVideoSource> | undefined): boolean {\n return proto2.util.equals(OwnedVideoSource, a, b);\n }\n}\n\n"],"mappings":"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","names":["VideoCodec","VideoRotation","VideoBufferType","VideoStreamType","VideoSourceType"]}
package/dist/room.cjs CHANGED
@@ -44,14 +44,13 @@ var import_log = require("./log.cjs");
44
44
  var import_participant = require("./participant.cjs");
45
45
  var import_e2ee_pb = require("./proto/e2ee_pb.cjs");
46
46
  var import_room_pb = require("./proto/room_pb.cjs");
47
- var import_room_pb2 = require("./proto/room_pb.cjs");
48
47
  var import_track_pb = require("./proto/track_pb.cjs");
49
48
  var import_track = require("./track.cjs");
50
49
  var import_track_publication = require("./track_publication.cjs");
51
50
  var import_utils = require("./utils.cjs");
52
51
  const defaultRtcConfiguration = {
53
- iceTransportType: import_room_pb2.IceTransportType.TRANSPORT_ALL,
54
- continualGatheringPolicy: import_room_pb2.ContinualGatheringPolicy.GATHER_CONTINUALLY,
52
+ iceTransportType: import_room_pb.IceTransportType.TRANSPORT_ALL,
53
+ continualGatheringPolicy: import_room_pb.ContinualGatheringPolicy.GATHER_CONTINUALLY,
55
54
  iceServers: []
56
55
  };
57
56
  const defaultRoomOptions = new import_room_pb.RoomOptions({
@@ -69,7 +68,7 @@ class Room extends import_events.default {
69
68
  this.textStreamControllers = /* @__PURE__ */ new Map();
70
69
  this.byteStreamHandlers = /* @__PURE__ */ new Map();
71
70
  this.textStreamHandlers = /* @__PURE__ */ new Map();
72
- this.connectionState = import_room_pb2.ConnectionState.CONN_DISCONNECTED;
71
+ this.connectionState = import_room_pb.ConnectionState.CONN_DISCONNECTED;
73
72
  this.remoteParticipants = /* @__PURE__ */ new Map();
74
73
  this.onFfiEvent = (ffiEvent) => {
75
74
  if (!this.localParticipant || !this.ffiHandle || !this.info) {
@@ -98,6 +97,7 @@ class Room extends import_events.default {
98
97
  } else if (ev.case == "participantDisconnected") {
99
98
  const participant = this.remoteParticipants.get(ev.value.participantIdentity);
100
99
  this.remoteParticipants.delete(participant.identity);
100
+ participant.info.disconnectReason = ev.value.disconnectReason;
101
101
  this.emit("participantDisconnected" /* ParticipantDisconnected */, participant);
102
102
  } else if (ev.case == "localTrackPublished") {
103
103
  const publication = this.localParticipant.trackPublications.get(ev.value.trackSid);
@@ -275,7 +275,7 @@ class Room extends import_events.default {
275
275
  return (_a = this.info) == null ? void 0 : _a.metadata;
276
276
  }
277
277
  get isConnected() {
278
- return this.ffiHandle != void 0 && this.connectionState != import_room_pb2.ConnectionState.CONN_DISCONNECTED;
278
+ return this.ffiHandle != void 0 && this.connectionState != import_room_pb.ConnectionState.CONN_DISCONNECTED;
279
279
  }
280
280
  async getSid() {
281
281
  var _a;
@@ -302,7 +302,7 @@ class Room extends import_events.default {
302
302
  async connect(url, token, opts) {
303
303
  const options = { ...defaultRoomOptions, ...opts };
304
304
  const e2eeOptions = { ...import_e2ee.defaultE2EEOptions, ...options.e2ee };
305
- const req = new import_room_pb2.ConnectRequest({
305
+ const req = new import_room_pb.ConnectRequest({
306
306
  url,
307
307
  token,
308
308
  options
@@ -321,7 +321,7 @@ class Room extends import_events.default {
321
321
  this.ffiHandle = new import_ffi_client.FfiHandle(cb.message.value.room.handle.id);
322
322
  this.e2eeManager = options.e2ee && new import_e2ee.E2EEManager(this.ffiHandle.handle, e2eeOptions);
323
323
  this.info = cb.message.value.room.info;
324
- this.connectionState = import_room_pb2.ConnectionState.CONN_CONNECTED;
324
+ this.connectionState = import_room_pb.ConnectionState.CONN_CONNECTED;
325
325
  this.localParticipant = new import_participant.LocalParticipant(cb.message.value.localParticipant);
326
326
  for (const pt of cb.message.value.participants) {
327
327
  const rp = this.createRemoteParticipant(pt.participant);
package/dist/room.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/room.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';\nimport EventEmitter from 'events';\nimport { ReadableStream } from 'node:stream/web';\nimport { ByteStreamReader, TextStreamReader } from './data_streams/stream_reader.js';\nimport type {\n ByteStreamHandler,\n ByteStreamInfo,\n StreamController,\n TextStreamHandler,\n TextStreamInfo,\n} from './data_streams/types.js';\nimport type { E2EEOptions } from './e2ee.js';\nimport { E2EEManager, defaultE2EEOptions } from './e2ee.js';\nimport { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';\nimport { log } from './log.js';\nimport type { Participant } from './participant.js';\nimport { LocalParticipant, RemoteParticipant } from './participant.js';\nimport { EncryptionState } from './proto/e2ee_pb.js';\nimport type { FfiEvent } from './proto/ffi_pb.js';\nimport type { DisconnectReason, OwnedParticipant } from './proto/participant_pb.js';\nimport {\n type ConnectCallback,\n type ConnectResponse,\n type ConnectionQuality,\n type DataPacketKind,\n type DataStream_Chunk,\n type DataStream_Header,\n DataStream_Trailer,\n type DisconnectResponse,\n RoomOptions as FfiRoomOptions,\n type IceServer,\n type RoomInfo,\n} from './proto/room_pb.js';\nimport {\n ConnectRequest,\n ConnectionState,\n ContinualGatheringPolicy,\n IceTransportType,\n} from './proto/room_pb.js';\nimport { TrackKind } from './proto/track_pb.js';\nimport type { LocalTrack, RemoteTrack } from './track.js';\nimport { RemoteAudioTrack, RemoteVideoTrack } from './track.js';\nimport type { LocalTrackPublication, TrackPublication } from './track_publication.js';\nimport { RemoteTrackPublication } from './track_publication.js';\nimport type { ChatMessage } from './types.js';\nimport { bigIntToNumber } from './utils.js';\n\nexport interface RtcConfiguration {\n iceTransportType: IceTransportType;\n continualGatheringPolicy: ContinualGatheringPolicy;\n iceServers: IceServer[];\n}\n\nexport const defaultRtcConfiguration: RtcConfiguration = {\n iceTransportType: IceTransportType.TRANSPORT_ALL,\n continualGatheringPolicy: ContinualGatheringPolicy.GATHER_CONTINUALLY,\n iceServers: [],\n};\n\nexport interface RoomOptions {\n autoSubscribe: boolean;\n dynacast: boolean;\n e2ee?: E2EEOptions;\n rtcConfig?: RtcConfiguration;\n}\n\nexport const defaultRoomOptions = new FfiRoomOptions({\n autoSubscribe: true,\n dynacast: false,\n e2ee: undefined,\n rtcConfig: undefined,\n adaptiveStream: false,\n joinRetries: 1,\n});\n\nexport class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>) {\n private info?: RoomInfo;\n private ffiHandle?: FfiHandle;\n\n private byteStreamControllers = new Map<string, StreamController<DataStream_Chunk>>();\n private textStreamControllers = new Map<string, StreamController<DataStream_Chunk>>();\n private byteStreamHandlers = new Map<string, ByteStreamHandler>();\n private textStreamHandlers = new Map<string, TextStreamHandler>();\n\n e2eeManager?: E2EEManager;\n connectionState: ConnectionState = ConnectionState.CONN_DISCONNECTED;\n\n remoteParticipants: Map<string, RemoteParticipant> = new Map();\n localParticipant?: LocalParticipant;\n\n constructor() {\n super();\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get metadata(): string | undefined {\n return this.info?.metadata;\n }\n\n get isConnected(): boolean {\n return this.ffiHandle != undefined && this.connectionState != ConnectionState.CONN_DISCONNECTED;\n }\n\n async getSid(): Promise<string> {\n if (!this.isConnected) {\n return '';\n }\n if (this.info?.sid && this.info.sid !== '') {\n return this.info.sid;\n }\n return new Promise((resolve, reject) => {\n const handleRoomUpdate = (sid: string) => {\n if (sid !== '') {\n this.off(RoomEvent.RoomSidChanged, handleRoomUpdate);\n resolve(sid);\n }\n };\n this.on(RoomEvent.RoomSidChanged, handleRoomUpdate);\n this.once(RoomEvent.Disconnected, () => {\n this.off(RoomEvent.RoomSidChanged, handleRoomUpdate);\n reject('Room disconnected before room server id was available');\n });\n });\n }\n\n async connect(url: string, token: string, opts?: RoomOptions) {\n const options = { ...defaultRoomOptions, ...opts };\n const e2eeOptions = { ...defaultE2EEOptions, ...options.e2ee };\n\n const req = new ConnectRequest({\n url: url,\n token: token,\n options,\n });\n\n const res = FfiClient.instance.request<ConnectResponse>({\n message: {\n case: 'connect',\n value: req,\n },\n });\n\n const cb = await FfiClient.instance.waitFor<ConnectCallback>((ev: FfiEvent) => {\n return ev.message.case == 'connect' && ev.message.value.asyncId == res.asyncId;\n });\n\n switch (cb.message.case) {\n case 'result':\n this.ffiHandle = new FfiHandle(cb.message.value.room!.handle!.id!);\n this.e2eeManager = options.e2ee && new E2EEManager(this.ffiHandle.handle, e2eeOptions);\n\n this.info = cb.message.value.room!.info;\n this.connectionState = ConnectionState.CONN_CONNECTED;\n this.localParticipant = new LocalParticipant(cb.message.value.localParticipant!);\n\n for (const pt of cb.message.value.participants) {\n const rp = this.createRemoteParticipant(pt.participant!);\n\n for (const pub of pt.publications) {\n const publication = new RemoteTrackPublication(pub);\n rp.trackPublications.set(publication.sid!, publication);\n }\n }\n\n FfiClient.instance.on(FfiClientEvent.FfiEvent, this.onFfiEvent);\n break;\n case 'error':\n default:\n throw new ConnectError(cb.message.value || '');\n }\n }\n\n async disconnect() {\n if (!this.isConnected) {\n return;\n }\n\n FfiClient.instance.request<DisconnectResponse>({\n message: {\n case: 'disconnect',\n value: {\n roomHandle: this.ffiHandle?.handle,\n },\n },\n });\n\n FfiClient.instance.removeListener(FfiClientEvent.FfiEvent, this.onFfiEvent);\n this.removeAllListeners();\n }\n\n registerTextStreamHandler(topic: string, callback: TextStreamHandler) {\n if (this.textStreamHandlers.has(topic)) {\n throw new Error(`A text stream handler for topic \"${topic}\" has already been set.`);\n }\n this.textStreamHandlers.set(topic, callback);\n }\n\n unregisterTextStreamHandler(topic: string) {\n this.textStreamHandlers.delete(topic);\n }\n\n registerByteStreamHandler(topic: string, callback: ByteStreamHandler) {\n if (this.byteStreamHandlers.has(topic)) {\n throw new Error(`A byte stream handler for topic \"${topic}\" has already been set.`);\n }\n this.byteStreamHandlers.set(topic, callback);\n }\n\n unregisterByteStreamHandler(topic: string) {\n this.byteStreamHandlers.delete(topic);\n }\n\n private onFfiEvent = (ffiEvent: FfiEvent) => {\n if (!this.localParticipant || !this.ffiHandle || !this.info) {\n throw TypeError('cannot handle ffi events before connectCallback');\n }\n\n if (ffiEvent.message.case == 'rpcMethodInvocation') {\n if (\n ffiEvent.message.value.localParticipantHandle == this.localParticipant.ffi_handle.handle\n ) {\n this.localParticipant.handleRpcMethodInvocation(\n ffiEvent.message.value.invocationId!,\n ffiEvent.message.value.method!,\n ffiEvent.message.value.requestId!,\n ffiEvent.message.value.callerIdentity!,\n ffiEvent.message.value.payload!,\n ffiEvent.message.value.responseTimeoutMs!,\n );\n }\n return;\n } else if (\n ffiEvent.message.case != 'roomEvent' ||\n ffiEvent.message.value.roomHandle != this.ffiHandle.handle\n ) {\n return;\n }\n\n const ev = ffiEvent.message.value.message;\n if (ev.case == 'participantConnected') {\n const participant = this.createRemoteParticipant(ev.value.info!);\n this.remoteParticipants.set(participant.identity!, participant);\n this.emit(RoomEvent.ParticipantConnected, participant);\n } else if (ev.case == 'participantDisconnected') {\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n this.remoteParticipants.delete(participant!.identity!);\n this.emit(RoomEvent.ParticipantDisconnected, participant!);\n } else if (ev.case == 'localTrackPublished') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.trackSid!);\n this.emit(RoomEvent.LocalTrackPublished, publication!, this.localParticipant!);\n } else if (ev.case == 'localTrackUnpublished') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.publicationSid!);\n this.localParticipant!.trackPublications.delete(ev.value.publicationSid!);\n this.emit(RoomEvent.LocalTrackUnpublished, publication!, this.localParticipant!);\n } else if (ev.case == 'localTrackSubscribed') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.trackSid!);\n publication!.resolveFirstSubscription();\n this.emit(RoomEvent.LocalTrackSubscribed, publication!.track!);\n } else if (ev.case == 'trackPublished') {\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n const publication = new RemoteTrackPublication(ev.value.publication!);\n participant!.trackPublications.set(publication.sid!, publication);\n this.emit(RoomEvent.TrackPublished, publication, participant!);\n } else if (ev.case == 'trackUnpublished') {\n const participant = this.requireRemoteParticipant(ev.value.participantIdentity!);\n const publication = participant.trackPublications.get(ev.value.publicationSid!);\n participant.trackPublications.delete(ev.value.publicationSid!);\n if (publication) {\n this.emit(RoomEvent.TrackUnpublished, publication, participant);\n }\n } else if (ev.case == 'trackSubscribed') {\n const ownedTrack = ev.value.track!;\n const trackInfo = ownedTrack.info!;\n const { participant, publication } = this.requirePublicationOfRemoteParticipant(\n ev.value.participantIdentity!,\n trackInfo.sid!,\n );\n publication.subscribed = true;\n if (trackInfo.kind == TrackKind.KIND_VIDEO) {\n publication.track = new RemoteVideoTrack(ownedTrack);\n } else if (trackInfo.kind == TrackKind.KIND_AUDIO) {\n publication.track = new RemoteAudioTrack(ownedTrack);\n }\n\n this.emit(RoomEvent.TrackSubscribed, publication.track!, publication, participant);\n } else if (ev.case == 'trackUnsubscribed') {\n const { participant, publication } = this.requirePublicationOfRemoteParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n const track = publication.track!;\n publication.track = undefined;\n publication.subscribed = false;\n this.emit(RoomEvent.TrackUnsubscribed, track, publication, participant);\n } else if (ev.case == 'trackSubscriptionFailed') {\n const participant = this.requireRemoteParticipant(ev.value.participantIdentity!);\n this.emit(RoomEvent.TrackSubscriptionFailed, ev.value.trackSid!, participant, ev.value.error);\n } else if (ev.case == 'trackMuted') {\n const { participant, publication } = this.requirePublicationOfParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n publication.info!.muted = true;\n if (publication.track) {\n publication.track.info!.muted = true;\n }\n this.emit(RoomEvent.TrackMuted, publication, participant);\n } else if (ev.case == 'trackUnmuted') {\n const { participant, publication } = this.requirePublicationOfParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n publication.info!.muted = false;\n if (publication.track) {\n publication.track.info!.muted = false;\n }\n this.emit(RoomEvent.TrackUnmuted, publication, participant);\n } else if (ev.case == 'activeSpeakersChanged') {\n const activeSpeakers = ev.value.participantIdentities.map((identity) =>\n this.requireParticipantByIdentity(identity),\n );\n this.emit(RoomEvent.ActiveSpeakersChanged, activeSpeakers);\n } else if (ev.case == 'roomMetadataChanged') {\n this.info!.metadata = ev.value.metadata;\n this.emit(RoomEvent.RoomMetadataChanged, this.info!.metadata!);\n } else if (ev.case == 'participantMetadataChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.metadata = ev.value.metadata;\n this.emit(RoomEvent.ParticipantMetadataChanged, participant.metadata, participant);\n } else if (ev.case == 'participantNameChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.name = ev.value.name;\n this.emit(RoomEvent.ParticipantNameChanged, participant.name!, participant);\n } else if (ev.case == 'participantAttributesChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.attributes = ev.value.attributes.reduce(\n (acc, value) => {\n acc[value.key!] = value.value!;\n return acc;\n },\n {} as Record<string, string>,\n );\n if (Object.keys(ev.value.changedAttributes).length > 0) {\n const changedAttributes = ev.value.changedAttributes.reduce(\n (acc, value) => {\n acc[value.key!] = value.value!;\n return acc;\n },\n {} as Record<string, string>,\n );\n this.emit(RoomEvent.ParticipantAttributesChanged, changedAttributes, participant);\n }\n } else if (ev.case == 'connectionQualityChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n this.emit(RoomEvent.ConnectionQualityChanged, ev.value.quality!, participant);\n } else if (ev.case == 'chatMessage') {\n const participant = this.retrieveParticipantByIdentity(ev.value.participantIdentity!);\n const { id, message: messageText, timestamp, editTimestamp, generated } = ev.value.message!;\n const message: ChatMessage = {\n id: id!,\n message: messageText!,\n timestamp: Number(timestamp),\n editTimestamp: Number(editTimestamp),\n generated,\n };\n this.emit(RoomEvent.ChatMessage, message, participant);\n } else if (ev.case == 'dataPacketReceived') {\n // Can be undefined if the data is sent from a Server SDK\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n const dataPacket = ev.value.value;\n switch (dataPacket.case) {\n case 'user':\n const buffer = FfiClient.instance.copyBuffer(\n dataPacket.value.data!.data!.dataPtr!,\n Number(dataPacket.value.data!.data!.dataLen),\n );\n new FfiHandle(dataPacket.value.data!.handle!.id!).dispose();\n this.emit(\n RoomEvent.DataReceived,\n buffer,\n participant,\n ev.value.kind,\n dataPacket.value.topic,\n );\n break;\n case 'sipDtmf':\n const { code, digit } = dataPacket.value;\n this.emit(RoomEvent.DtmfReceived, code!, digit!, participant!);\n break;\n default:\n break;\n }\n } else if (ev.case == 'e2eeStateChanged') {\n if (ev.value.state == EncryptionState.INTERNAL_ERROR) {\n // throw generic error until Rust SDK is updated to supply the error alongside INTERNAL_ERROR\n this.emit(RoomEvent.EncryptionError, new Error('internal server error'));\n }\n } else if (ev.case == 'connectionStateChanged') {\n this.connectionState = ev.value.state!;\n this.emit(RoomEvent.ConnectionStateChanged, this.connectionState);\n /*} else if (ev.case == 'connected') {\n this.emit(RoomEvent.Connected);*/\n } else if (ev.case == 'disconnected') {\n this.emit(RoomEvent.Disconnected, ev.value.reason!);\n } else if (ev.case == 'reconnecting') {\n this.emit(RoomEvent.Reconnecting);\n } else if (ev.case == 'reconnected') {\n this.emit(RoomEvent.Reconnected);\n } else if (ev.case == 'roomSidChanged') {\n this.emit(RoomEvent.RoomSidChanged, ev.value.sid!);\n } else if (ev.case === 'streamHeaderReceived' && ev.value.header) {\n this.handleStreamHeader(ev.value.header, ev.value.participantIdentity!);\n } else if (ev.case === 'streamChunkReceived' && ev.value.chunk) {\n this.handleStreamChunk(ev.value.chunk);\n } else if (ev.case === 'streamTrailerReceived' && ev.value.trailer) {\n this.handleStreamTrailer(ev.value.trailer);\n }\n };\n\n private retrieveParticipantByIdentity(identity: string): Participant | undefined {\n if (this.localParticipant?.identity === identity) {\n return this.localParticipant;\n } else {\n return this.remoteParticipants.get(identity);\n }\n }\n\n private requireParticipantByIdentity(identity: string): Participant {\n if (this.localParticipant?.identity === identity) {\n return this.localParticipant;\n } else if (this.remoteParticipants.has(identity)) {\n return this.remoteParticipants.get(identity)!;\n } else {\n throw new TypeError(`participant ${identity} not found`);\n }\n }\n\n private requireRemoteParticipant(identity: string) {\n const participant = this.remoteParticipants.get(identity);\n if (!participant) {\n throw new TypeError(`participant ${identity} not found`);\n }\n return participant;\n }\n\n private requirePublicationOfParticipant(identity: string, trackSid: string) {\n const participant = this.requireParticipantByIdentity(identity);\n const publication = participant.trackPublications.get(trackSid);\n if (!publication) {\n throw new TypeError(`publication ${trackSid} not found`);\n }\n return { participant, publication };\n }\n\n private requirePublicationOfRemoteParticipant(identity: string, trackSid: string) {\n const participant = this.requireRemoteParticipant(identity);\n const publication = participant.trackPublications.get(trackSid);\n if (!publication) {\n throw new TypeError(`publication ${trackSid} not found`);\n }\n return { participant, publication };\n }\n\n private createRemoteParticipant(ownedInfo: OwnedParticipant) {\n if (this.remoteParticipants.has(ownedInfo.info!.identity!)) {\n throw new Error('Participant already exists');\n }\n\n const participant = new RemoteParticipant(ownedInfo);\n this.remoteParticipants.set(ownedInfo.info!.identity!, participant);\n return participant;\n }\n\n private handleStreamHeader(streamHeader: DataStream_Header, participantIdentity: string) {\n if (streamHeader.contentHeader.case === 'byteHeader') {\n const streamHandlerCallback = this.byteStreamHandlers.get(streamHeader.topic ?? '');\n\n if (!streamHandlerCallback) {\n log.debug('ignoring incoming byte stream due to no handler for topic', streamHeader.topic);\n return;\n }\n let streamController: ReadableStreamDefaultController<DataStream_Chunk>;\n const stream = new ReadableStream({\n start: (controller) => {\n streamController = controller;\n this.byteStreamControllers.set(streamHeader.streamId!, {\n header: streamHeader,\n controller: streamController,\n startTime: Date.now(),\n });\n },\n });\n const info: ByteStreamInfo = {\n streamId: streamHeader.streamId!,\n name: streamHeader.contentHeader.value.name ?? 'unknown',\n mimeType: streamHeader.mimeType!,\n totalSize: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,\n topic: streamHeader.topic!,\n timestamp: bigIntToNumber(streamHeader.timestamp!),\n attributes: streamHeader.attributes,\n };\n streamHandlerCallback(\n new ByteStreamReader(info, stream, bigIntToNumber(streamHeader.totalLength)),\n { identity: participantIdentity },\n );\n } else if (streamHeader.contentHeader.case === 'textHeader') {\n const streamHandlerCallback = this.textStreamHandlers.get(streamHeader.topic ?? '');\n\n if (!streamHandlerCallback) {\n log.debug('ignoring incoming text stream due to no handler for topic', streamHeader.topic);\n return;\n }\n let streamController: ReadableStreamDefaultController<DataStream_Chunk>;\n const stream = new ReadableStream<DataStream_Chunk>({\n start: (controller) => {\n streamController = controller;\n this.textStreamControllers.set(streamHeader.streamId!, {\n header: streamHeader,\n controller: streamController,\n startTime: Date.now(),\n });\n },\n });\n const info: TextStreamInfo = {\n streamId: streamHeader.streamId!,\n mimeType: streamHeader.mimeType!,\n totalSize: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,\n topic: streamHeader.topic!,\n timestamp: Number(streamHeader.timestamp),\n attributes: streamHeader.attributes,\n };\n streamHandlerCallback(\n new TextStreamReader(info, stream, bigIntToNumber(streamHeader.totalLength)),\n { identity: participantIdentity },\n );\n }\n }\n\n private handleStreamChunk(chunk: DataStream_Chunk) {\n const fileBuffer = this.byteStreamControllers.get(chunk.streamId!);\n if (fileBuffer) {\n if (chunk.content!.length > 0) {\n fileBuffer.controller.enqueue(chunk);\n }\n }\n const textBuffer = this.textStreamControllers.get(chunk.streamId!);\n if (textBuffer) {\n if (chunk.content!.length > 0) {\n textBuffer.controller.enqueue(chunk);\n }\n }\n }\n\n private handleStreamTrailer(trailer: DataStream_Trailer) {\n const streamId = trailer.streamId!;\n const fileBuffer = this.byteStreamControllers.get(streamId);\n if (fileBuffer) {\n fileBuffer.controller.close();\n this.byteStreamControllers.delete(streamId);\n }\n const textBuffer = this.textStreamControllers.get(streamId);\n if (textBuffer) {\n textBuffer.controller.close();\n this.byteStreamControllers.delete(streamId);\n }\n }\n}\n\nexport class ConnectError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport type RoomCallbacks = {\n participantConnected: (participant: RemoteParticipant) => void;\n participantDisconnected: (participant: RemoteParticipant) => void;\n localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;\n localTrackUnpublished: (\n publication: LocalTrackPublication,\n participant: LocalParticipant,\n ) => void;\n localTrackSubscribed: (track: LocalTrack) => void;\n trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackSubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackUnsubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackSubscriptionFailed: (\n trackSid: string,\n participant: RemoteParticipant,\n reason?: string,\n ) => void;\n trackMuted: (publication: TrackPublication, participant: Participant) => void;\n trackUnmuted: (publication: TrackPublication, participant: Participant) => void;\n activeSpeakersChanged: (speakers: Participant[]) => void;\n roomMetadataChanged: (metadata: string) => void;\n roomInfoUpdated: (info: RoomInfo) => void;\n participantMetadataChanged: (metadata: string | undefined, participant: Participant) => void;\n participantNameChanged: (name: string, participant: Participant) => void;\n participantAttributesChanged: (\n changedAttributes: Record<string, string>,\n participant: Participant,\n ) => void;\n connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;\n dataReceived: (\n payload: Uint8Array,\n participant?: RemoteParticipant,\n kind?: DataPacketKind,\n topic?: string,\n ) => void;\n chatMessage: (message: ChatMessage, participant?: Participant) => void;\n dtmfReceived: (code: number, digit: string, participant: RemoteParticipant) => void;\n encryptionError: (error: Error) => void;\n connectionStateChanged: (state: ConnectionState) => void;\n connected: () => void;\n disconnected: (reason: DisconnectReason) => void;\n reconnecting: () => void;\n reconnected: () => void;\n roomSidChanged: (sid: string) => void;\n};\n\nexport enum RoomEvent {\n ParticipantConnected = 'participantConnected',\n ParticipantDisconnected = 'participantDisconnected',\n LocalTrackPublished = 'localTrackPublished',\n LocalTrackUnpublished = 'localTrackUnpublished',\n LocalTrackSubscribed = 'localTrackSubscribed',\n TrackPublished = 'trackPublished',\n TrackUnpublished = 'trackUnpublished',\n TrackSubscribed = 'trackSubscribed',\n TrackUnsubscribed = 'trackUnsubscribed',\n TrackSubscriptionFailed = 'trackSubscriptionFailed',\n TrackMuted = 'trackMuted',\n TrackUnmuted = 'trackUnmuted',\n ActiveSpeakersChanged = 'activeSpeakersChanged',\n RoomMetadataChanged = 'roomMetadataChanged',\n RoomSidChanged = 'roomSidChanged',\n ParticipantMetadataChanged = 'participantMetadataChanged',\n ParticipantNameChanged = 'participantNameChanged',\n ParticipantAttributesChanged = 'participantAttributesChanged',\n ConnectionQualityChanged = 'connectionQualityChanged',\n DataReceived = 'dataReceived',\n ChatMessage = 'chatMessage',\n DtmfReceived = 'dtmfReceived',\n EncryptionError = 'encryptionError',\n ConnectionStateChanged = 'connectionStateChanged',\n Connected = 'connected',\n Disconnected = 'disconnected',\n Reconnecting = 'reconnecting',\n Reconnected = 'reconnected',\n}\n"],"mappings":"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","names":["import_room_pb","FfiRoomOptions","EventEmitter","RoomEvent"]}
1
+ {"version":3,"sources":["../src/room.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';\nimport EventEmitter from 'events';\nimport { ReadableStream } from 'node:stream/web';\nimport { ByteStreamReader, TextStreamReader } from './data_streams/stream_reader.js';\nimport type {\n ByteStreamHandler,\n ByteStreamInfo,\n StreamController,\n TextStreamHandler,\n TextStreamInfo,\n} from './data_streams/types.js';\nimport type { E2EEOptions } from './e2ee.js';\nimport { E2EEManager, defaultE2EEOptions } from './e2ee.js';\nimport { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';\nimport { log } from './log.js';\nimport type { Participant } from './participant.js';\nimport { LocalParticipant, RemoteParticipant } from './participant.js';\nimport { EncryptionState } from './proto/e2ee_pb.js';\nimport type { FfiEvent } from './proto/ffi_pb.js';\nimport type { DisconnectReason, OwnedParticipant } from './proto/participant_pb.js';\nimport type { DataStream_Trailer } from './proto/room_pb.js';\nimport {\n type ConnectCallback,\n ConnectRequest,\n type ConnectResponse,\n type ConnectionQuality,\n ConnectionState,\n ContinualGatheringPolicy,\n type DataPacketKind,\n type DataStream_Chunk,\n type DataStream_Header,\n type DisconnectResponse,\n RoomOptions as FfiRoomOptions,\n type IceServer,\n IceTransportType,\n type RoomInfo,\n} from './proto/room_pb.js';\nimport { TrackKind } from './proto/track_pb.js';\nimport type { LocalTrack, RemoteTrack } from './track.js';\nimport { RemoteAudioTrack, RemoteVideoTrack } from './track.js';\nimport type { LocalTrackPublication, TrackPublication } from './track_publication.js';\nimport { RemoteTrackPublication } from './track_publication.js';\nimport type { ChatMessage } from './types.js';\nimport { bigIntToNumber } from './utils.js';\n\nexport interface RtcConfiguration {\n iceTransportType: IceTransportType;\n continualGatheringPolicy: ContinualGatheringPolicy;\n iceServers: IceServer[];\n}\n\nexport const defaultRtcConfiguration: RtcConfiguration = {\n iceTransportType: IceTransportType.TRANSPORT_ALL,\n continualGatheringPolicy: ContinualGatheringPolicy.GATHER_CONTINUALLY,\n iceServers: [],\n};\n\nexport interface RoomOptions {\n autoSubscribe: boolean;\n dynacast: boolean;\n e2ee?: E2EEOptions;\n rtcConfig?: RtcConfiguration;\n}\n\nexport const defaultRoomOptions = new FfiRoomOptions({\n autoSubscribe: true,\n dynacast: false,\n e2ee: undefined,\n rtcConfig: undefined,\n adaptiveStream: false,\n joinRetries: 1,\n});\n\nexport class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>) {\n private info?: RoomInfo;\n private ffiHandle?: FfiHandle;\n\n private byteStreamControllers = new Map<string, StreamController<DataStream_Chunk>>();\n private textStreamControllers = new Map<string, StreamController<DataStream_Chunk>>();\n private byteStreamHandlers = new Map<string, ByteStreamHandler>();\n private textStreamHandlers = new Map<string, TextStreamHandler>();\n\n e2eeManager?: E2EEManager;\n connectionState: ConnectionState = ConnectionState.CONN_DISCONNECTED;\n\n remoteParticipants: Map<string, RemoteParticipant> = new Map();\n localParticipant?: LocalParticipant;\n\n constructor() {\n super();\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get metadata(): string | undefined {\n return this.info?.metadata;\n }\n\n get isConnected(): boolean {\n return this.ffiHandle != undefined && this.connectionState != ConnectionState.CONN_DISCONNECTED;\n }\n\n async getSid(): Promise<string> {\n if (!this.isConnected) {\n return '';\n }\n if (this.info?.sid && this.info.sid !== '') {\n return this.info.sid;\n }\n return new Promise((resolve, reject) => {\n const handleRoomUpdate = (sid: string) => {\n if (sid !== '') {\n this.off(RoomEvent.RoomSidChanged, handleRoomUpdate);\n resolve(sid);\n }\n };\n this.on(RoomEvent.RoomSidChanged, handleRoomUpdate);\n this.once(RoomEvent.Disconnected, () => {\n this.off(RoomEvent.RoomSidChanged, handleRoomUpdate);\n reject('Room disconnected before room server id was available');\n });\n });\n }\n\n async connect(url: string, token: string, opts?: RoomOptions) {\n const options = { ...defaultRoomOptions, ...opts };\n const e2eeOptions = { ...defaultE2EEOptions, ...options.e2ee };\n\n const req = new ConnectRequest({\n url: url,\n token: token,\n options,\n });\n\n const res = FfiClient.instance.request<ConnectResponse>({\n message: {\n case: 'connect',\n value: req,\n },\n });\n\n const cb = await FfiClient.instance.waitFor<ConnectCallback>((ev: FfiEvent) => {\n return ev.message.case == 'connect' && ev.message.value.asyncId == res.asyncId;\n });\n\n switch (cb.message.case) {\n case 'result':\n this.ffiHandle = new FfiHandle(cb.message.value.room!.handle!.id!);\n this.e2eeManager = options.e2ee && new E2EEManager(this.ffiHandle.handle, e2eeOptions);\n\n this.info = cb.message.value.room!.info;\n this.connectionState = ConnectionState.CONN_CONNECTED;\n this.localParticipant = new LocalParticipant(cb.message.value.localParticipant!);\n\n for (const pt of cb.message.value.participants) {\n const rp = this.createRemoteParticipant(pt.participant!);\n\n for (const pub of pt.publications) {\n const publication = new RemoteTrackPublication(pub);\n rp.trackPublications.set(publication.sid!, publication);\n }\n }\n\n FfiClient.instance.on(FfiClientEvent.FfiEvent, this.onFfiEvent);\n break;\n case 'error':\n default:\n throw new ConnectError(cb.message.value || '');\n }\n }\n\n async disconnect() {\n if (!this.isConnected) {\n return;\n }\n\n FfiClient.instance.request<DisconnectResponse>({\n message: {\n case: 'disconnect',\n value: {\n roomHandle: this.ffiHandle?.handle,\n },\n },\n });\n\n FfiClient.instance.removeListener(FfiClientEvent.FfiEvent, this.onFfiEvent);\n this.removeAllListeners();\n }\n\n registerTextStreamHandler(topic: string, callback: TextStreamHandler) {\n if (this.textStreamHandlers.has(topic)) {\n throw new Error(`A text stream handler for topic \"${topic}\" has already been set.`);\n }\n this.textStreamHandlers.set(topic, callback);\n }\n\n unregisterTextStreamHandler(topic: string) {\n this.textStreamHandlers.delete(topic);\n }\n\n registerByteStreamHandler(topic: string, callback: ByteStreamHandler) {\n if (this.byteStreamHandlers.has(topic)) {\n throw new Error(`A byte stream handler for topic \"${topic}\" has already been set.`);\n }\n this.byteStreamHandlers.set(topic, callback);\n }\n\n unregisterByteStreamHandler(topic: string) {\n this.byteStreamHandlers.delete(topic);\n }\n\n private onFfiEvent = (ffiEvent: FfiEvent) => {\n if (!this.localParticipant || !this.ffiHandle || !this.info) {\n throw TypeError('cannot handle ffi events before connectCallback');\n }\n\n if (ffiEvent.message.case == 'rpcMethodInvocation') {\n if (\n ffiEvent.message.value.localParticipantHandle == this.localParticipant.ffi_handle.handle\n ) {\n this.localParticipant.handleRpcMethodInvocation(\n ffiEvent.message.value.invocationId!,\n ffiEvent.message.value.method!,\n ffiEvent.message.value.requestId!,\n ffiEvent.message.value.callerIdentity!,\n ffiEvent.message.value.payload!,\n ffiEvent.message.value.responseTimeoutMs!,\n );\n }\n return;\n } else if (\n ffiEvent.message.case != 'roomEvent' ||\n ffiEvent.message.value.roomHandle != this.ffiHandle.handle\n ) {\n return;\n }\n\n const ev = ffiEvent.message.value.message;\n if (ev.case == 'participantConnected') {\n const participant = this.createRemoteParticipant(ev.value.info!);\n this.remoteParticipants.set(participant.identity!, participant);\n this.emit(RoomEvent.ParticipantConnected, participant);\n } else if (ev.case == 'participantDisconnected') {\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n this.remoteParticipants.delete(participant!.identity);\n participant!.info.disconnectReason = ev.value.disconnectReason;\n this.emit(RoomEvent.ParticipantDisconnected, participant!);\n } else if (ev.case == 'localTrackPublished') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.trackSid!);\n this.emit(RoomEvent.LocalTrackPublished, publication!, this.localParticipant!);\n } else if (ev.case == 'localTrackUnpublished') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.publicationSid!);\n this.localParticipant!.trackPublications.delete(ev.value.publicationSid!);\n this.emit(RoomEvent.LocalTrackUnpublished, publication!, this.localParticipant!);\n } else if (ev.case == 'localTrackSubscribed') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.trackSid!);\n publication!.resolveFirstSubscription();\n this.emit(RoomEvent.LocalTrackSubscribed, publication!.track!);\n } else if (ev.case == 'trackPublished') {\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n const publication = new RemoteTrackPublication(ev.value.publication!);\n participant!.trackPublications.set(publication.sid!, publication);\n this.emit(RoomEvent.TrackPublished, publication, participant!);\n } else if (ev.case == 'trackUnpublished') {\n const participant = this.requireRemoteParticipant(ev.value.participantIdentity!);\n const publication = participant.trackPublications.get(ev.value.publicationSid!);\n participant.trackPublications.delete(ev.value.publicationSid!);\n if (publication) {\n this.emit(RoomEvent.TrackUnpublished, publication, participant);\n }\n } else if (ev.case == 'trackSubscribed') {\n const ownedTrack = ev.value.track!;\n const trackInfo = ownedTrack.info!;\n const { participant, publication } = this.requirePublicationOfRemoteParticipant(\n ev.value.participantIdentity!,\n trackInfo.sid!,\n );\n publication.subscribed = true;\n if (trackInfo.kind == TrackKind.KIND_VIDEO) {\n publication.track = new RemoteVideoTrack(ownedTrack);\n } else if (trackInfo.kind == TrackKind.KIND_AUDIO) {\n publication.track = new RemoteAudioTrack(ownedTrack);\n }\n\n this.emit(RoomEvent.TrackSubscribed, publication.track!, publication, participant);\n } else if (ev.case == 'trackUnsubscribed') {\n const { participant, publication } = this.requirePublicationOfRemoteParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n const track = publication.track!;\n publication.track = undefined;\n publication.subscribed = false;\n this.emit(RoomEvent.TrackUnsubscribed, track, publication, participant);\n } else if (ev.case == 'trackSubscriptionFailed') {\n const participant = this.requireRemoteParticipant(ev.value.participantIdentity!);\n this.emit(RoomEvent.TrackSubscriptionFailed, ev.value.trackSid!, participant, ev.value.error);\n } else if (ev.case == 'trackMuted') {\n const { participant, publication } = this.requirePublicationOfParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n publication.info!.muted = true;\n if (publication.track) {\n publication.track.info!.muted = true;\n }\n this.emit(RoomEvent.TrackMuted, publication, participant);\n } else if (ev.case == 'trackUnmuted') {\n const { participant, publication } = this.requirePublicationOfParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n publication.info!.muted = false;\n if (publication.track) {\n publication.track.info!.muted = false;\n }\n this.emit(RoomEvent.TrackUnmuted, publication, participant);\n } else if (ev.case == 'activeSpeakersChanged') {\n const activeSpeakers = ev.value.participantIdentities.map((identity) =>\n this.requireParticipantByIdentity(identity),\n );\n this.emit(RoomEvent.ActiveSpeakersChanged, activeSpeakers);\n } else if (ev.case == 'roomMetadataChanged') {\n this.info!.metadata = ev.value.metadata;\n this.emit(RoomEvent.RoomMetadataChanged, this.info!.metadata!);\n } else if (ev.case == 'participantMetadataChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.metadata = ev.value.metadata;\n this.emit(RoomEvent.ParticipantMetadataChanged, participant.metadata, participant);\n } else if (ev.case == 'participantNameChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.name = ev.value.name;\n this.emit(RoomEvent.ParticipantNameChanged, participant.name!, participant);\n } else if (ev.case == 'participantAttributesChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.attributes = ev.value.attributes.reduce(\n (acc, value) => {\n acc[value.key!] = value.value!;\n return acc;\n },\n {} as Record<string, string>,\n );\n if (Object.keys(ev.value.changedAttributes).length > 0) {\n const changedAttributes = ev.value.changedAttributes.reduce(\n (acc, value) => {\n acc[value.key!] = value.value!;\n return acc;\n },\n {} as Record<string, string>,\n );\n this.emit(RoomEvent.ParticipantAttributesChanged, changedAttributes, participant);\n }\n } else if (ev.case == 'connectionQualityChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n this.emit(RoomEvent.ConnectionQualityChanged, ev.value.quality!, participant);\n } else if (ev.case == 'chatMessage') {\n const participant = this.retrieveParticipantByIdentity(ev.value.participantIdentity!);\n const { id, message: messageText, timestamp, editTimestamp, generated } = ev.value.message!;\n const message: ChatMessage = {\n id: id!,\n message: messageText!,\n timestamp: Number(timestamp),\n editTimestamp: Number(editTimestamp),\n generated,\n };\n this.emit(RoomEvent.ChatMessage, message, participant);\n } else if (ev.case == 'dataPacketReceived') {\n // Can be undefined if the data is sent from a Server SDK\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n const dataPacket = ev.value.value;\n switch (dataPacket.case) {\n case 'user':\n const buffer = FfiClient.instance.copyBuffer(\n dataPacket.value.data!.data!.dataPtr!,\n Number(dataPacket.value.data!.data!.dataLen),\n );\n new FfiHandle(dataPacket.value.data!.handle!.id!).dispose();\n this.emit(\n RoomEvent.DataReceived,\n buffer,\n participant,\n ev.value.kind,\n dataPacket.value.topic,\n );\n break;\n case 'sipDtmf':\n const { code, digit } = dataPacket.value;\n this.emit(RoomEvent.DtmfReceived, code!, digit!, participant!);\n break;\n default:\n break;\n }\n } else if (ev.case == 'e2eeStateChanged') {\n if (ev.value.state == EncryptionState.INTERNAL_ERROR) {\n // throw generic error until Rust SDK is updated to supply the error alongside INTERNAL_ERROR\n this.emit(RoomEvent.EncryptionError, new Error('internal server error'));\n }\n } else if (ev.case == 'connectionStateChanged') {\n this.connectionState = ev.value.state!;\n this.emit(RoomEvent.ConnectionStateChanged, this.connectionState);\n /*} else if (ev.case == 'connected') {\n this.emit(RoomEvent.Connected);*/\n } else if (ev.case == 'disconnected') {\n this.emit(RoomEvent.Disconnected, ev.value.reason!);\n } else if (ev.case == 'reconnecting') {\n this.emit(RoomEvent.Reconnecting);\n } else if (ev.case == 'reconnected') {\n this.emit(RoomEvent.Reconnected);\n } else if (ev.case == 'roomSidChanged') {\n this.emit(RoomEvent.RoomSidChanged, ev.value.sid!);\n } else if (ev.case === 'streamHeaderReceived' && ev.value.header) {\n this.handleStreamHeader(ev.value.header, ev.value.participantIdentity!);\n } else if (ev.case === 'streamChunkReceived' && ev.value.chunk) {\n this.handleStreamChunk(ev.value.chunk);\n } else if (ev.case === 'streamTrailerReceived' && ev.value.trailer) {\n this.handleStreamTrailer(ev.value.trailer);\n }\n };\n\n private retrieveParticipantByIdentity(identity: string): Participant | undefined {\n if (this.localParticipant?.identity === identity) {\n return this.localParticipant;\n } else {\n return this.remoteParticipants.get(identity);\n }\n }\n\n private requireParticipantByIdentity(identity: string): Participant {\n if (this.localParticipant?.identity === identity) {\n return this.localParticipant;\n } else if (this.remoteParticipants.has(identity)) {\n return this.remoteParticipants.get(identity)!;\n } else {\n throw new TypeError(`participant ${identity} not found`);\n }\n }\n\n private requireRemoteParticipant(identity: string) {\n const participant = this.remoteParticipants.get(identity);\n if (!participant) {\n throw new TypeError(`participant ${identity} not found`);\n }\n return participant;\n }\n\n private requirePublicationOfParticipant(identity: string, trackSid: string) {\n const participant = this.requireParticipantByIdentity(identity);\n const publication = participant.trackPublications.get(trackSid);\n if (!publication) {\n throw new TypeError(`publication ${trackSid} not found`);\n }\n return { participant, publication };\n }\n\n private requirePublicationOfRemoteParticipant(identity: string, trackSid: string) {\n const participant = this.requireRemoteParticipant(identity);\n const publication = participant.trackPublications.get(trackSid);\n if (!publication) {\n throw new TypeError(`publication ${trackSid} not found`);\n }\n return { participant, publication };\n }\n\n private createRemoteParticipant(ownedInfo: OwnedParticipant) {\n if (this.remoteParticipants.has(ownedInfo.info!.identity!)) {\n throw new Error('Participant already exists');\n }\n\n const participant = new RemoteParticipant(ownedInfo);\n this.remoteParticipants.set(ownedInfo.info!.identity!, participant);\n return participant;\n }\n\n private handleStreamHeader(streamHeader: DataStream_Header, participantIdentity: string) {\n if (streamHeader.contentHeader.case === 'byteHeader') {\n const streamHandlerCallback = this.byteStreamHandlers.get(streamHeader.topic ?? '');\n\n if (!streamHandlerCallback) {\n log.debug('ignoring incoming byte stream due to no handler for topic', streamHeader.topic);\n return;\n }\n let streamController: ReadableStreamDefaultController<DataStream_Chunk>;\n const stream = new ReadableStream({\n start: (controller) => {\n streamController = controller;\n this.byteStreamControllers.set(streamHeader.streamId!, {\n header: streamHeader,\n controller: streamController,\n startTime: Date.now(),\n });\n },\n });\n const info: ByteStreamInfo = {\n streamId: streamHeader.streamId!,\n name: streamHeader.contentHeader.value.name ?? 'unknown',\n mimeType: streamHeader.mimeType!,\n totalSize: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,\n topic: streamHeader.topic!,\n timestamp: bigIntToNumber(streamHeader.timestamp!),\n attributes: streamHeader.attributes,\n };\n streamHandlerCallback(\n new ByteStreamReader(info, stream, bigIntToNumber(streamHeader.totalLength)),\n { identity: participantIdentity },\n );\n } else if (streamHeader.contentHeader.case === 'textHeader') {\n const streamHandlerCallback = this.textStreamHandlers.get(streamHeader.topic ?? '');\n\n if (!streamHandlerCallback) {\n log.debug('ignoring incoming text stream due to no handler for topic', streamHeader.topic);\n return;\n }\n let streamController: ReadableStreamDefaultController<DataStream_Chunk>;\n const stream = new ReadableStream<DataStream_Chunk>({\n start: (controller) => {\n streamController = controller;\n this.textStreamControllers.set(streamHeader.streamId!, {\n header: streamHeader,\n controller: streamController,\n startTime: Date.now(),\n });\n },\n });\n const info: TextStreamInfo = {\n streamId: streamHeader.streamId!,\n mimeType: streamHeader.mimeType!,\n totalSize: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,\n topic: streamHeader.topic!,\n timestamp: Number(streamHeader.timestamp),\n attributes: streamHeader.attributes,\n };\n streamHandlerCallback(\n new TextStreamReader(info, stream, bigIntToNumber(streamHeader.totalLength)),\n { identity: participantIdentity },\n );\n }\n }\n\n private handleStreamChunk(chunk: DataStream_Chunk) {\n const fileBuffer = this.byteStreamControllers.get(chunk.streamId!);\n if (fileBuffer) {\n if (chunk.content!.length > 0) {\n fileBuffer.controller.enqueue(chunk);\n }\n }\n const textBuffer = this.textStreamControllers.get(chunk.streamId!);\n if (textBuffer) {\n if (chunk.content!.length > 0) {\n textBuffer.controller.enqueue(chunk);\n }\n }\n }\n\n private handleStreamTrailer(trailer: DataStream_Trailer) {\n const streamId = trailer.streamId!;\n const fileBuffer = this.byteStreamControllers.get(streamId);\n if (fileBuffer) {\n fileBuffer.controller.close();\n this.byteStreamControllers.delete(streamId);\n }\n const textBuffer = this.textStreamControllers.get(streamId);\n if (textBuffer) {\n textBuffer.controller.close();\n this.byteStreamControllers.delete(streamId);\n }\n }\n}\n\nexport class ConnectError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport type RoomCallbacks = {\n participantConnected: (participant: RemoteParticipant) => void;\n participantDisconnected: (participant: RemoteParticipant) => void;\n localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;\n localTrackUnpublished: (\n publication: LocalTrackPublication,\n participant: LocalParticipant,\n ) => void;\n localTrackSubscribed: (track: LocalTrack) => void;\n trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackSubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackUnsubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackSubscriptionFailed: (\n trackSid: string,\n participant: RemoteParticipant,\n reason?: string,\n ) => void;\n trackMuted: (publication: TrackPublication, participant: Participant) => void;\n trackUnmuted: (publication: TrackPublication, participant: Participant) => void;\n activeSpeakersChanged: (speakers: Participant[]) => void;\n roomMetadataChanged: (metadata: string) => void;\n roomInfoUpdated: (info: RoomInfo) => void;\n participantMetadataChanged: (metadata: string | undefined, participant: Participant) => void;\n participantNameChanged: (name: string, participant: Participant) => void;\n participantAttributesChanged: (\n changedAttributes: Record<string, string>,\n participant: Participant,\n ) => void;\n connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;\n dataReceived: (\n payload: Uint8Array,\n participant?: RemoteParticipant,\n kind?: DataPacketKind,\n topic?: string,\n ) => void;\n chatMessage: (message: ChatMessage, participant?: Participant) => void;\n dtmfReceived: (code: number, digit: string, participant: RemoteParticipant) => void;\n encryptionError: (error: Error) => void;\n connectionStateChanged: (state: ConnectionState) => void;\n connected: () => void;\n disconnected: (reason: DisconnectReason) => void;\n reconnecting: () => void;\n reconnected: () => void;\n roomSidChanged: (sid: string) => void;\n};\n\nexport enum RoomEvent {\n ParticipantConnected = 'participantConnected',\n ParticipantDisconnected = 'participantDisconnected',\n LocalTrackPublished = 'localTrackPublished',\n LocalTrackUnpublished = 'localTrackUnpublished',\n LocalTrackSubscribed = 'localTrackSubscribed',\n TrackPublished = 'trackPublished',\n TrackUnpublished = 'trackUnpublished',\n TrackSubscribed = 'trackSubscribed',\n TrackUnsubscribed = 'trackUnsubscribed',\n TrackSubscriptionFailed = 'trackSubscriptionFailed',\n TrackMuted = 'trackMuted',\n TrackUnmuted = 'trackUnmuted',\n ActiveSpeakersChanged = 'activeSpeakersChanged',\n RoomMetadataChanged = 'roomMetadataChanged',\n RoomSidChanged = 'roomSidChanged',\n ParticipantMetadataChanged = 'participantMetadataChanged',\n ParticipantNameChanged = 'participantNameChanged',\n ParticipantAttributesChanged = 'participantAttributesChanged',\n ConnectionQualityChanged = 'connectionQualityChanged',\n DataReceived = 'dataReceived',\n ChatMessage = 'chatMessage',\n DtmfReceived = 'dtmfReceived',\n EncryptionError = 'encryptionError',\n ConnectionStateChanged = 'connectionStateChanged',\n Connected = 'connected',\n Disconnected = 'disconnected',\n Reconnecting = 'reconnecting',\n Reconnected = 'reconnected',\n}\n"],"mappings":"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","names":["FfiRoomOptions","EventEmitter","RoomEvent"]}
package/dist/room.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { TypedEventEmitter } from '@livekit/typed-emitter';
2
- import { g as TextStreamHandler, f as ByteStreamHandler } from './types-B28ZM-Ci.cjs';
2
+ import { g as TextStreamHandler, f as ByteStreamHandler } from './stream_reader-a8_oiaOi.cjs';
3
3
  import { E2EEManager, E2EEOptions } from './e2ee.cjs';
4
4
  import { RemoteParticipant, LocalParticipant, Participant } from './participant.cjs';
5
5
  import { DisconnectReason } from './proto/participant_pb.cjs';
package/dist/room.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { TypedEventEmitter } from '@livekit/typed-emitter';
2
- import { g as TextStreamHandler, f as ByteStreamHandler } from './types-BDnbvXeD.js';
2
+ import { g as TextStreamHandler, f as ByteStreamHandler } from './stream_reader-DWUV4eJB.js';
3
3
  import { E2EEManager, E2EEOptions } from './e2ee.js';
4
4
  import { RemoteParticipant, LocalParticipant, Participant } from './participant.js';
5
5
  import { DisconnectReason } from './proto/participant_pb.js';