diff --git a/.github/workflows/build-protocol.yml b/.github/workflows/build-protocol.yml index 0a0e51ec..23ff014f 100644 --- a/.github/workflows/build-protocol.yml +++ b/.github/workflows/build-protocol.yml @@ -38,12 +38,9 @@ jobs: - name: Install Protoc uses: arduino/setup-protoc@v2 with: - version: "25.2" + version: "25.3" repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: install mypy-protobuf - run: pip3 install mypy-protobuf - - name: generate python stubs run: ./generate_proto.sh diff --git a/.github/workflows/check-types.yml b/.github/workflows/check-types.yml new file mode 100644 index 00000000..2ebfa830 --- /dev/null +++ b/.github/workflows/check-types.yml @@ -0,0 +1,35 @@ +name: Check Types + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + type-check: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + + - name: Download ffi + run: python -m pip install requests && python livekit-rtc/rust-sdks/download_ffi.py --output $(python -m site --user-site)/livekit/rtc/resources + + - name: Install mypy + run: python -m pip install --upgrade mypy + + - name: Install packages + run: python -m pip install ./livekit-api ./livekit-protocol ./livekit-rtc + + - name: Check Types + run: python -m mypy --install-type --non-interactive -p 'livekit-protocol' -p 'livekit-api' -p 'livekit-rtc' \ No newline at end of file diff --git a/livekit-api/livekit/api/__init__.py b/livekit-api/livekit/api/__init__.py index 709a142e..ad035c0b 100644 --- a/livekit-api/livekit/api/__init__.py +++ b/livekit-api/livekit/api/__init__.py @@ -12,16 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""LiveKit API SDK -""" +"""LiveKit API SDK""" # flake8: noqa # re-export packages from protocol -from livekit.protocol.egress import * # type: ignore -from livekit.protocol.ingress import * # type: ignore -from livekit.protocol.models import * # type: ignore -from livekit.protocol.room import * # type: ignore -from livekit.protocol.webhook import * # type: ignore +from livekit.protocol.egress import * +from livekit.protocol.ingress import * +from livekit.protocol.models import * +from livekit.protocol.room import * +from livekit.protocol.webhook import * from .twirp_client import TwirpError, TwirpErrorCode from .livekit_api import LiveKitAPI diff --git a/livekit-api/livekit/api/py.typed b/livekit-api/livekit/api/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/livekit-api/setup.py b/livekit-api/setup.py index 45241deb..3cbfa9ce 100644 --- a/livekit-api/setup.py +++ b/livekit-api/setup.py @@ -14,11 +14,12 @@ import os import pathlib +from typing import Any, Dict -import setuptools +import setuptools # type: ignore here = pathlib.Path(__file__).parent.resolve() -about = {} +about: Dict[Any, Any] = {} with open(os.path.join(here, "livekit", "api", "version.py"), "r") as f: exec(f.read(), about) diff --git a/livekit-api/tests/test_access_token.py b/livekit-api/tests/test_access_token.py index 56ffcd31..91871844 100644 --- a/livekit-api/tests/test_access_token.py +++ b/livekit-api/tests/test_access_token.py @@ -1,5 +1,6 @@ -import pytest import datetime + +import pytest # type: ignore from livekit.api import AccessToken, TokenVerifier, VideoGrants TEST_API_KEY = "myapikey" diff --git a/livekit-api/tests/test_webhook.py b/livekit-api/tests/test_webhook.py index 3dbef831..fc8828e5 100644 --- a/livekit-api/tests/test_webhook.py +++ b/livekit-api/tests/test_webhook.py @@ -1,7 +1,8 @@ -import pytest -from livekit.api import WebhookReceiver, TokenVerifier, AccessToken -import hashlib import base64 +import hashlib + +import pytest # type: ignore +from livekit.api import AccessToken, TokenVerifier, WebhookReceiver TEST_API_KEY = "myapikey" TEST_API_SECRET = "thiskeyistotallyunsafe" diff --git a/livekit-protocol/generate_proto.sh b/livekit-protocol/generate_proto.sh index 0345fef4..ba8d47e3 100755 --- a/livekit-protocol/generate_proto.sh +++ b/livekit-protocol/generate_proto.sh @@ -24,7 +24,7 @@ API_OUT_PYTHON=./livekit/protocol protoc \ -I=$API_PROTOCOL \ --python_out=$API_OUT_PYTHON \ - --mypy_out=$API_OUT_PYTHON \ + --pyi_out=$API_OUT_PYTHON \ $API_PROTOCOL/livekit_egress.proto \ $API_PROTOCOL/livekit_room.proto \ $API_PROTOCOL/livekit_webhook.proto \ diff --git a/livekit-protocol/livekit/protocol/__init__.py b/livekit-protocol/livekit/protocol/__init__.py index affb6ce5..aeb26522 100644 --- a/livekit-protocol/livekit/protocol/__init__.py +++ b/livekit-protocol/livekit/protocol/__init__.py @@ -5,4 +5,4 @@ from . import models from . import room from . import webhook -from .version import __version__ +from .version import __version__ \ No newline at end of file diff --git a/livekit-protocol/livekit/protocol/agent.py b/livekit-protocol/livekit/protocol/agent.py index 29079831..efa56c33 100644 --- a/livekit-protocol/livekit/protocol/agent.py +++ b/livekit-protocol/livekit/protocol/agent.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_agent.proto -# Protobuf Python Version: 4.25.2 +# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool diff --git a/livekit-protocol/livekit/protocol/agent.pyi b/livekit-protocol/livekit/protocol/agent.pyi index eda112f7..1ff0e30b 100644 --- a/livekit-protocol/livekit/protocol/agent.pyi +++ b/livekit-protocol/livekit/protocol/agent.pyi @@ -1,325 +1,132 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2023 LiveKit, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -from . import models -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _JobType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _JobTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_JobType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - JT_ROOM: _JobType.ValueType # 0 - JT_PUBLISHER: _JobType.ValueType # 1 - -class JobType(_JobType, metaclass=_JobTypeEnumTypeWrapper): ... - -JT_ROOM: JobType.ValueType # 0 -JT_PUBLISHER: JobType.ValueType # 1 -global___JobType = JobType - -class _WorkerStatus: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _WorkerStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_WorkerStatus.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - WS_AVAILABLE: _WorkerStatus.ValueType # 0 - WS_FULL: _WorkerStatus.ValueType # 1 - -class WorkerStatus(_WorkerStatus, metaclass=_WorkerStatusEnumTypeWrapper): ... - -WS_AVAILABLE: WorkerStatus.ValueType # 0 -WS_FULL: WorkerStatus.ValueType # 1 -global___WorkerStatus = WorkerStatus - -class _JobStatus: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _JobStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_JobStatus.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - JS_UNKNOWN: _JobStatus.ValueType # 0 - JS_SUCCESS: _JobStatus.ValueType # 1 - JS_FAILED: _JobStatus.ValueType # 2 - -class JobStatus(_JobStatus, metaclass=_JobStatusEnumTypeWrapper): ... - -JS_UNKNOWN: JobStatus.ValueType # 0 -JS_SUCCESS: JobStatus.ValueType # 1 -JS_FAILED: JobStatus.ValueType # 2 -global___JobStatus = JobStatus - -@typing_extensions.final -class AgentInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - version: builtins.str - def __init__( - self, - *, - id: builtins.str = ..., - name: builtins.str = ..., - version: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "name", b"name", "version", b"version"]) -> None: ... - -global___AgentInfo = AgentInfo - -@typing_extensions.final -class Job(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ID_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - ROOM_FIELD_NUMBER: builtins.int - PARTICIPANT_FIELD_NUMBER: builtins.int - id: builtins.str - type: global___JobType.ValueType - @property - def room(self) -> models.Room: ... - @property - def participant(self) -> models.ParticipantInfo: ... - def __init__( - self, - *, - id: builtins.str = ..., - type: global___JobType.ValueType = ..., - room: models.Room | None = ..., - participant: models.ParticipantInfo | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_participant", b"_participant", "participant", b"participant", "room", b"room"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_participant", b"_participant", "id", b"id", "participant", b"participant", "room", b"room", "type", b"type"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["_participant", b"_participant"]) -> typing_extensions.Literal["participant"] | None: ... - -global___Job = Job - -@typing_extensions.final -class WorkerMessage(google.protobuf.message.Message): - """from Worker to Server""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - REGISTER_FIELD_NUMBER: builtins.int - AVAILABILITY_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - JOB_UPDATE_FIELD_NUMBER: builtins.int - @property - def register(self) -> global___RegisterWorkerRequest: - """agent workers need to register themselves with the server first""" - @property - def availability(self) -> global___AvailabilityResponse: - """worker confirms to server that it's available for a job, or declines it""" - @property - def status(self) -> global___UpdateWorkerStatus: - """worker can update its status to the server, including taking itself out of the pool""" - @property - def job_update(self) -> global___JobStatusUpdate: ... - def __init__( - self, - *, - register: global___RegisterWorkerRequest | None = ..., - availability: global___AvailabilityResponse | None = ..., - status: global___UpdateWorkerStatus | None = ..., - job_update: global___JobStatusUpdate | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["availability", b"availability", "job_update", b"job_update", "message", b"message", "register", b"register", "status", b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["availability", b"availability", "job_update", b"job_update", "message", b"message", "register", b"register", "status", b"status"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["register", "availability", "status", "job_update"] | None: ... - -global___WorkerMessage = WorkerMessage - -@typing_extensions.final -class ServerMessage(google.protobuf.message.Message): - """from Server to Worker""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - REGISTER_FIELD_NUMBER: builtins.int - AVAILABILITY_FIELD_NUMBER: builtins.int - ASSIGNMENT_FIELD_NUMBER: builtins.int - @property - def register(self) -> global___RegisterWorkerResponse: - """server confirms the registration, from this moment on, the worker is considered active""" - @property - def availability(self) -> global___AvailabilityRequest: - """server asks worker to confirm availability for a job""" - @property - def assignment(self) -> global___JobAssignment: ... - def __init__( - self, - *, - register: global___RegisterWorkerResponse | None = ..., - availability: global___AvailabilityRequest | None = ..., - assignment: global___JobAssignment | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["assignment", b"assignment", "availability", b"availability", "message", b"message", "register", b"register"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["assignment", b"assignment", "availability", b"availability", "message", b"message", "register", b"register"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["register", "availability", "assignment"] | None: ... - -global___ServerMessage = ServerMessage - -@typing_extensions.final -class RegisterWorkerRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - TYPE_FIELD_NUMBER: builtins.int - WORKER_ID_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - type: global___JobType.ValueType - worker_id: builtins.str - version: builtins.str - name: builtins.str - def __init__( - self, - *, - type: global___JobType.ValueType = ..., - worker_id: builtins.str = ..., - version: builtins.str = ..., - name: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "type", b"type", "version", b"version", "worker_id", b"worker_id"]) -> None: ... - -global___RegisterWorkerRequest = RegisterWorkerRequest - -@typing_extensions.final -class RegisterWorkerResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - WORKER_ID_FIELD_NUMBER: builtins.int - SERVER_VERSION_FIELD_NUMBER: builtins.int - worker_id: builtins.str - server_version: builtins.str - def __init__( - self, - *, - worker_id: builtins.str = ..., - server_version: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["server_version", b"server_version", "worker_id", b"worker_id"]) -> None: ... - -global___RegisterWorkerResponse = RegisterWorkerResponse - -@typing_extensions.final -class AvailabilityRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - JOB_FIELD_NUMBER: builtins.int - @property - def job(self) -> global___Job: ... - def __init__( - self, - *, - job: global___Job | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["job", b"job"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["job", b"job"]) -> None: ... - -global___AvailabilityRequest = AvailabilityRequest - -@typing_extensions.final -class AvailabilityResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - JOB_ID_FIELD_NUMBER: builtins.int - AVAILABLE_FIELD_NUMBER: builtins.int - job_id: builtins.str - available: builtins.bool - def __init__( - self, - *, - job_id: builtins.str = ..., - available: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["available", b"available", "job_id", b"job_id"]) -> None: ... - -global___AvailabilityResponse = AvailabilityResponse - -@typing_extensions.final -class JobStatusUpdate(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - JOB_ID_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - USER_DATA_FIELD_NUMBER: builtins.int - job_id: builtins.str - status: global___JobStatus.ValueType - error: builtins.str - user_data: builtins.str - def __init__( - self, - *, - job_id: builtins.str = ..., - status: global___JobStatus.ValueType = ..., - error: builtins.str = ..., - user_data: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["error", b"error", "job_id", b"job_id", "status", b"status", "user_data", b"user_data"]) -> None: ... - -global___JobStatusUpdate = JobStatusUpdate - -@typing_extensions.final -class JobAssignment(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - JOB_FIELD_NUMBER: builtins.int - @property - def job(self) -> global___Job: ... - def __init__( - self, - *, - job: global___Job | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["job", b"job"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["job", b"job"]) -> None: ... - -global___JobAssignment = JobAssignment - -@typing_extensions.final -class UpdateWorkerStatus(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - STATUS_FIELD_NUMBER: builtins.int - status: global___WorkerStatus.ValueType - def __init__( - self, - *, - status: global___WorkerStatus.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ... - -global___UpdateWorkerStatus = UpdateWorkerStatus +from . import models as _models +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class JobType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + JT_ROOM: _ClassVar[JobType] + JT_PUBLISHER: _ClassVar[JobType] + +class WorkerStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + WS_AVAILABLE: _ClassVar[WorkerStatus] + WS_FULL: _ClassVar[WorkerStatus] + +class JobStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + JS_UNKNOWN: _ClassVar[JobStatus] + JS_SUCCESS: _ClassVar[JobStatus] + JS_FAILED: _ClassVar[JobStatus] +JT_ROOM: JobType +JT_PUBLISHER: JobType +WS_AVAILABLE: WorkerStatus +WS_FULL: WorkerStatus +JS_UNKNOWN: JobStatus +JS_SUCCESS: JobStatus +JS_FAILED: JobStatus + +class AgentInfo(_message.Message): + __slots__ = ("id", "name", "version") + ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + id: str + name: str + version: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., version: _Optional[str] = ...) -> None: ... + +class Job(_message.Message): + __slots__ = ("id", "type", "room", "participant") + ID_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + ROOM_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_FIELD_NUMBER: _ClassVar[int] + id: str + type: JobType + room: _models.Room + participant: _models.ParticipantInfo + def __init__(self, id: _Optional[str] = ..., type: _Optional[_Union[JobType, str]] = ..., room: _Optional[_Union[_models.Room, _Mapping]] = ..., participant: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ...) -> None: ... + +class WorkerMessage(_message.Message): + __slots__ = ("register", "availability", "status", "job_update") + REGISTER_FIELD_NUMBER: _ClassVar[int] + AVAILABILITY_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + JOB_UPDATE_FIELD_NUMBER: _ClassVar[int] + register: RegisterWorkerRequest + availability: AvailabilityResponse + status: UpdateWorkerStatus + job_update: JobStatusUpdate + def __init__(self, register: _Optional[_Union[RegisterWorkerRequest, _Mapping]] = ..., availability: _Optional[_Union[AvailabilityResponse, _Mapping]] = ..., status: _Optional[_Union[UpdateWorkerStatus, _Mapping]] = ..., job_update: _Optional[_Union[JobStatusUpdate, _Mapping]] = ...) -> None: ... + +class ServerMessage(_message.Message): + __slots__ = ("register", "availability", "assignment") + REGISTER_FIELD_NUMBER: _ClassVar[int] + AVAILABILITY_FIELD_NUMBER: _ClassVar[int] + ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + register: RegisterWorkerResponse + availability: AvailabilityRequest + assignment: JobAssignment + def __init__(self, register: _Optional[_Union[RegisterWorkerResponse, _Mapping]] = ..., availability: _Optional[_Union[AvailabilityRequest, _Mapping]] = ..., assignment: _Optional[_Union[JobAssignment, _Mapping]] = ...) -> None: ... + +class RegisterWorkerRequest(_message.Message): + __slots__ = ("type", "worker_id", "version", "name") + TYPE_FIELD_NUMBER: _ClassVar[int] + WORKER_ID_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + type: JobType + worker_id: str + version: str + name: str + def __init__(self, type: _Optional[_Union[JobType, str]] = ..., worker_id: _Optional[str] = ..., version: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ... + +class RegisterWorkerResponse(_message.Message): + __slots__ = ("worker_id", "server_version") + WORKER_ID_FIELD_NUMBER: _ClassVar[int] + SERVER_VERSION_FIELD_NUMBER: _ClassVar[int] + worker_id: str + server_version: str + def __init__(self, worker_id: _Optional[str] = ..., server_version: _Optional[str] = ...) -> None: ... + +class AvailabilityRequest(_message.Message): + __slots__ = ("job",) + JOB_FIELD_NUMBER: _ClassVar[int] + job: Job + def __init__(self, job: _Optional[_Union[Job, _Mapping]] = ...) -> None: ... + +class AvailabilityResponse(_message.Message): + __slots__ = ("job_id", "available") + JOB_ID_FIELD_NUMBER: _ClassVar[int] + AVAILABLE_FIELD_NUMBER: _ClassVar[int] + job_id: str + available: bool + def __init__(self, job_id: _Optional[str] = ..., available: bool = ...) -> None: ... + +class JobStatusUpdate(_message.Message): + __slots__ = ("job_id", "status", "error", "user_data") + JOB_ID_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + USER_DATA_FIELD_NUMBER: _ClassVar[int] + job_id: str + status: JobStatus + error: str + user_data: str + def __init__(self, job_id: _Optional[str] = ..., status: _Optional[_Union[JobStatus, str]] = ..., error: _Optional[str] = ..., user_data: _Optional[str] = ...) -> None: ... + +class JobAssignment(_message.Message): + __slots__ = ("job",) + JOB_FIELD_NUMBER: _ClassVar[int] + job: Job + def __init__(self, job: _Optional[_Union[Job, _Mapping]] = ...) -> None: ... + +class UpdateWorkerStatus(_message.Message): + __slots__ = ("status",) + STATUS_FIELD_NUMBER: _ClassVar[int] + status: WorkerStatus + def __init__(self, status: _Optional[_Union[WorkerStatus, str]] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/analytics.py b/livekit-protocol/livekit/protocol/analytics.py index fca137cd..9105e0b2 100644 --- a/livekit-protocol/livekit/protocol/analytics.py +++ b/livekit-protocol/livekit/protocol/analytics.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_analytics.proto -# Protobuf Python Version: 4.25.2 +# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool diff --git a/livekit-protocol/livekit/protocol/analytics.pyi b/livekit-protocol/livekit/protocol/analytics.pyi index f6e57775..e5c577cb 100644 --- a/livekit-protocol/livekit/protocol/analytics.pyi +++ b/livekit-protocol/livekit/protocol/analytics.pyi @@ -1,493 +1,270 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2023 LiveKit, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.timestamp_pb2 -from . import egress -from . import ingress -from . import models -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _StreamType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _StreamTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_StreamType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UPSTREAM: _StreamType.ValueType # 0 - DOWNSTREAM: _StreamType.ValueType # 1 - -class StreamType(_StreamType, metaclass=_StreamTypeEnumTypeWrapper): ... - -UPSTREAM: StreamType.ValueType # 0 -DOWNSTREAM: StreamType.ValueType # 1 -global___StreamType = StreamType - -class _AnalyticsEventType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _AnalyticsEventTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AnalyticsEventType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - ROOM_CREATED: _AnalyticsEventType.ValueType # 0 - ROOM_ENDED: _AnalyticsEventType.ValueType # 1 - PARTICIPANT_JOINED: _AnalyticsEventType.ValueType # 2 - PARTICIPANT_LEFT: _AnalyticsEventType.ValueType # 3 - TRACK_PUBLISHED: _AnalyticsEventType.ValueType # 4 - TRACK_PUBLISH_REQUESTED: _AnalyticsEventType.ValueType # 20 - TRACK_UNPUBLISHED: _AnalyticsEventType.ValueType # 5 - TRACK_SUBSCRIBED: _AnalyticsEventType.ValueType # 6 - TRACK_SUBSCRIBE_REQUESTED: _AnalyticsEventType.ValueType # 21 - TRACK_SUBSCRIBE_FAILED: _AnalyticsEventType.ValueType # 25 - TRACK_UNSUBSCRIBED: _AnalyticsEventType.ValueType # 7 - TRACK_PUBLISHED_UPDATE: _AnalyticsEventType.ValueType # 10 - TRACK_MUTED: _AnalyticsEventType.ValueType # 23 - TRACK_UNMUTED: _AnalyticsEventType.ValueType # 24 - TRACK_PUBLISH_STATS: _AnalyticsEventType.ValueType # 26 - TRACK_SUBSCRIBE_STATS: _AnalyticsEventType.ValueType # 27 - PARTICIPANT_ACTIVE: _AnalyticsEventType.ValueType # 11 - PARTICIPANT_RESUMED: _AnalyticsEventType.ValueType # 22 - EGRESS_STARTED: _AnalyticsEventType.ValueType # 12 - EGRESS_ENDED: _AnalyticsEventType.ValueType # 13 - EGRESS_UPDATED: _AnalyticsEventType.ValueType # 28 - TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY: _AnalyticsEventType.ValueType # 14 - RECONNECTED: _AnalyticsEventType.ValueType # 15 - INGRESS_CREATED: _AnalyticsEventType.ValueType # 18 - INGRESS_DELETED: _AnalyticsEventType.ValueType # 19 - INGRESS_STARTED: _AnalyticsEventType.ValueType # 16 - INGRESS_ENDED: _AnalyticsEventType.ValueType # 17 - INGRESS_UPDATED: _AnalyticsEventType.ValueType # 29 - -class AnalyticsEventType(_AnalyticsEventType, metaclass=_AnalyticsEventTypeEnumTypeWrapper): ... - -ROOM_CREATED: AnalyticsEventType.ValueType # 0 -ROOM_ENDED: AnalyticsEventType.ValueType # 1 -PARTICIPANT_JOINED: AnalyticsEventType.ValueType # 2 -PARTICIPANT_LEFT: AnalyticsEventType.ValueType # 3 -TRACK_PUBLISHED: AnalyticsEventType.ValueType # 4 -TRACK_PUBLISH_REQUESTED: AnalyticsEventType.ValueType # 20 -TRACK_UNPUBLISHED: AnalyticsEventType.ValueType # 5 -TRACK_SUBSCRIBED: AnalyticsEventType.ValueType # 6 -TRACK_SUBSCRIBE_REQUESTED: AnalyticsEventType.ValueType # 21 -TRACK_SUBSCRIBE_FAILED: AnalyticsEventType.ValueType # 25 -TRACK_UNSUBSCRIBED: AnalyticsEventType.ValueType # 7 -TRACK_PUBLISHED_UPDATE: AnalyticsEventType.ValueType # 10 -TRACK_MUTED: AnalyticsEventType.ValueType # 23 -TRACK_UNMUTED: AnalyticsEventType.ValueType # 24 -TRACK_PUBLISH_STATS: AnalyticsEventType.ValueType # 26 -TRACK_SUBSCRIBE_STATS: AnalyticsEventType.ValueType # 27 -PARTICIPANT_ACTIVE: AnalyticsEventType.ValueType # 11 -PARTICIPANT_RESUMED: AnalyticsEventType.ValueType # 22 -EGRESS_STARTED: AnalyticsEventType.ValueType # 12 -EGRESS_ENDED: AnalyticsEventType.ValueType # 13 -EGRESS_UPDATED: AnalyticsEventType.ValueType # 28 -TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY: AnalyticsEventType.ValueType # 14 -RECONNECTED: AnalyticsEventType.ValueType # 15 -INGRESS_CREATED: AnalyticsEventType.ValueType # 18 -INGRESS_DELETED: AnalyticsEventType.ValueType # 19 -INGRESS_STARTED: AnalyticsEventType.ValueType # 16 -INGRESS_ENDED: AnalyticsEventType.ValueType # 17 -INGRESS_UPDATED: AnalyticsEventType.ValueType # 29 -global___AnalyticsEventType = AnalyticsEventType - -@typing_extensions.final -class AnalyticsVideoLayer(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - LAYER_FIELD_NUMBER: builtins.int - PACKETS_FIELD_NUMBER: builtins.int - BYTES_FIELD_NUMBER: builtins.int - FRAMES_FIELD_NUMBER: builtins.int - layer: builtins.int - packets: builtins.int - bytes: builtins.int - frames: builtins.int - def __init__( - self, - *, - layer: builtins.int = ..., - packets: builtins.int = ..., - bytes: builtins.int = ..., - frames: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["bytes", b"bytes", "frames", b"frames", "layer", b"layer", "packets", b"packets"]) -> None: ... - -global___AnalyticsVideoLayer = AnalyticsVideoLayer - -@typing_extensions.final -class AnalyticsStream(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - SSRC_FIELD_NUMBER: builtins.int - PRIMARY_PACKETS_FIELD_NUMBER: builtins.int - PRIMARY_BYTES_FIELD_NUMBER: builtins.int - RETRANSMIT_PACKETS_FIELD_NUMBER: builtins.int - RETRANSMIT_BYTES_FIELD_NUMBER: builtins.int - PADDING_PACKETS_FIELD_NUMBER: builtins.int - PADDING_BYTES_FIELD_NUMBER: builtins.int - PACKETS_LOST_FIELD_NUMBER: builtins.int - FRAMES_FIELD_NUMBER: builtins.int - RTT_FIELD_NUMBER: builtins.int - JITTER_FIELD_NUMBER: builtins.int - NACKS_FIELD_NUMBER: builtins.int - PLIS_FIELD_NUMBER: builtins.int - FIRS_FIELD_NUMBER: builtins.int - VIDEO_LAYERS_FIELD_NUMBER: builtins.int - ssrc: builtins.int - primary_packets: builtins.int - primary_bytes: builtins.int - retransmit_packets: builtins.int - retransmit_bytes: builtins.int - padding_packets: builtins.int - padding_bytes: builtins.int - packets_lost: builtins.int - frames: builtins.int - rtt: builtins.int - jitter: builtins.int - nacks: builtins.int - plis: builtins.int - firs: builtins.int - @property - def video_layers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsVideoLayer]: ... - def __init__( - self, - *, - ssrc: builtins.int = ..., - primary_packets: builtins.int = ..., - primary_bytes: builtins.int = ..., - retransmit_packets: builtins.int = ..., - retransmit_bytes: builtins.int = ..., - padding_packets: builtins.int = ..., - padding_bytes: builtins.int = ..., - packets_lost: builtins.int = ..., - frames: builtins.int = ..., - rtt: builtins.int = ..., - jitter: builtins.int = ..., - nacks: builtins.int = ..., - plis: builtins.int = ..., - firs: builtins.int = ..., - video_layers: collections.abc.Iterable[global___AnalyticsVideoLayer] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["firs", b"firs", "frames", b"frames", "jitter", b"jitter", "nacks", b"nacks", "packets_lost", b"packets_lost", "padding_bytes", b"padding_bytes", "padding_packets", b"padding_packets", "plis", b"plis", "primary_bytes", b"primary_bytes", "primary_packets", b"primary_packets", "retransmit_bytes", b"retransmit_bytes", "retransmit_packets", b"retransmit_packets", "rtt", b"rtt", "ssrc", b"ssrc", "video_layers", b"video_layers"]) -> None: ... - -global___AnalyticsStream = AnalyticsStream - -@typing_extensions.final -class AnalyticsStat(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ANALYTICS_KEY_FIELD_NUMBER: builtins.int - KIND_FIELD_NUMBER: builtins.int - TIME_STAMP_FIELD_NUMBER: builtins.int - NODE_FIELD_NUMBER: builtins.int - ROOM_ID_FIELD_NUMBER: builtins.int - ROOM_NAME_FIELD_NUMBER: builtins.int - PARTICIPANT_ID_FIELD_NUMBER: builtins.int - TRACK_ID_FIELD_NUMBER: builtins.int - SCORE_FIELD_NUMBER: builtins.int - STREAMS_FIELD_NUMBER: builtins.int - MIME_FIELD_NUMBER: builtins.int - MIN_SCORE_FIELD_NUMBER: builtins.int - MEDIAN_SCORE_FIELD_NUMBER: builtins.int - PROJECT_ID_FIELD_NUMBER: builtins.int - analytics_key: builtins.str - kind: global___StreamType.ValueType - @property - def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - node: builtins.str - room_id: builtins.str - room_name: builtins.str - participant_id: builtins.str - track_id: builtins.str - score: builtins.float - """average score""" - @property - def streams(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsStream]: ... - mime: builtins.str - min_score: builtins.float - median_score: builtins.float - project_id: builtins.str - def __init__( - self, - *, - analytics_key: builtins.str = ..., - kind: global___StreamType.ValueType = ..., - time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., - node: builtins.str = ..., - room_id: builtins.str = ..., - room_name: builtins.str = ..., - participant_id: builtins.str = ..., - track_id: builtins.str = ..., - score: builtins.float = ..., - streams: collections.abc.Iterable[global___AnalyticsStream] | None = ..., - mime: builtins.str = ..., - min_score: builtins.float = ..., - median_score: builtins.float = ..., - project_id: builtins.str = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["time_stamp", b"time_stamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["analytics_key", b"analytics_key", "kind", b"kind", "median_score", b"median_score", "mime", b"mime", "min_score", b"min_score", "node", b"node", "participant_id", b"participant_id", "project_id", b"project_id", "room_id", b"room_id", "room_name", b"room_name", "score", b"score", "streams", b"streams", "time_stamp", b"time_stamp", "track_id", b"track_id"]) -> None: ... - -global___AnalyticsStat = AnalyticsStat - -@typing_extensions.final -class AnalyticsStats(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - STATS_FIELD_NUMBER: builtins.int - @property - def stats(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsStat]: ... - def __init__( - self, - *, - stats: collections.abc.Iterable[global___AnalyticsStat] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["stats", b"stats"]) -> None: ... - -global___AnalyticsStats = AnalyticsStats - -@typing_extensions.final -class AnalyticsClientMeta(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - REGION_FIELD_NUMBER: builtins.int - NODE_FIELD_NUMBER: builtins.int - CLIENT_ADDR_FIELD_NUMBER: builtins.int - CLIENT_CONNECT_TIME_FIELD_NUMBER: builtins.int - CONNECTION_TYPE_FIELD_NUMBER: builtins.int - RECONNECT_REASON_FIELD_NUMBER: builtins.int - region: builtins.str - node: builtins.str - client_addr: builtins.str - client_connect_time: builtins.int - connection_type: builtins.str - """udp, tcp, turn""" - reconnect_reason: models.ReconnectReason.ValueType - def __init__( - self, - *, - region: builtins.str = ..., - node: builtins.str = ..., - client_addr: builtins.str = ..., - client_connect_time: builtins.int = ..., - connection_type: builtins.str = ..., - reconnect_reason: models.ReconnectReason.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["client_addr", b"client_addr", "client_connect_time", b"client_connect_time", "connection_type", b"connection_type", "node", b"node", "reconnect_reason", b"reconnect_reason", "region", b"region"]) -> None: ... - -global___AnalyticsClientMeta = AnalyticsClientMeta - -@typing_extensions.final -class AnalyticsEvent(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - TYPE_FIELD_NUMBER: builtins.int - TIMESTAMP_FIELD_NUMBER: builtins.int - ROOM_ID_FIELD_NUMBER: builtins.int - ROOM_FIELD_NUMBER: builtins.int - PARTICIPANT_ID_FIELD_NUMBER: builtins.int - PARTICIPANT_FIELD_NUMBER: builtins.int - TRACK_ID_FIELD_NUMBER: builtins.int - TRACK_FIELD_NUMBER: builtins.int - ANALYTICS_KEY_FIELD_NUMBER: builtins.int - CLIENT_INFO_FIELD_NUMBER: builtins.int - CLIENT_META_FIELD_NUMBER: builtins.int - EGRESS_ID_FIELD_NUMBER: builtins.int - INGRESS_ID_FIELD_NUMBER: builtins.int - MAX_SUBSCRIBED_VIDEO_QUALITY_FIELD_NUMBER: builtins.int - PUBLISHER_FIELD_NUMBER: builtins.int - MIME_FIELD_NUMBER: builtins.int - EGRESS_FIELD_NUMBER: builtins.int - INGRESS_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - RTP_STATS_FIELD_NUMBER: builtins.int - VIDEO_LAYER_FIELD_NUMBER: builtins.int - PROJECT_ID_FIELD_NUMBER: builtins.int - type: global___AnalyticsEventType.ValueType - @property - def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - room_id: builtins.str - @property - def room(self) -> models.Room: ... - participant_id: builtins.str - @property - def participant(self) -> models.ParticipantInfo: ... - track_id: builtins.str - @property - def track(self) -> models.TrackInfo: ... - analytics_key: builtins.str - @property - def client_info(self) -> models.ClientInfo: ... - @property - def client_meta(self) -> global___AnalyticsClientMeta: ... - egress_id: builtins.str - ingress_id: builtins.str - max_subscribed_video_quality: models.VideoQuality.ValueType - @property - def publisher(self) -> models.ParticipantInfo: ... - mime: builtins.str - @property - def egress(self) -> egress.EgressInfo: ... - @property - def ingress(self) -> ingress.IngressInfo: ... - error: builtins.str - @property - def rtp_stats(self) -> models.RTPStats: ... - video_layer: builtins.int - project_id: builtins.str - def __init__( - self, - *, - type: global___AnalyticsEventType.ValueType = ..., - timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., - room_id: builtins.str = ..., - room: models.Room | None = ..., - participant_id: builtins.str = ..., - participant: models.ParticipantInfo | None = ..., - track_id: builtins.str = ..., - track: models.TrackInfo | None = ..., - analytics_key: builtins.str = ..., - client_info: models.ClientInfo | None = ..., - client_meta: global___AnalyticsClientMeta | None = ..., - egress_id: builtins.str = ..., - ingress_id: builtins.str = ..., - max_subscribed_video_quality: models.VideoQuality.ValueType = ..., - publisher: models.ParticipantInfo | None = ..., - mime: builtins.str = ..., - egress: egress.EgressInfo | None = ..., - ingress: ingress.IngressInfo | None = ..., - error: builtins.str = ..., - rtp_stats: models.RTPStats | None = ..., - video_layer: builtins.int = ..., - project_id: builtins.str = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["client_info", b"client_info", "client_meta", b"client_meta", "egress", b"egress", "ingress", b"ingress", "participant", b"participant", "publisher", b"publisher", "room", b"room", "rtp_stats", b"rtp_stats", "timestamp", b"timestamp", "track", b"track"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["analytics_key", b"analytics_key", "client_info", b"client_info", "client_meta", b"client_meta", "egress", b"egress", "egress_id", b"egress_id", "error", b"error", "ingress", b"ingress", "ingress_id", b"ingress_id", "max_subscribed_video_quality", b"max_subscribed_video_quality", "mime", b"mime", "participant", b"participant", "participant_id", b"participant_id", "project_id", b"project_id", "publisher", b"publisher", "room", b"room", "room_id", b"room_id", "rtp_stats", b"rtp_stats", "timestamp", b"timestamp", "track", b"track", "track_id", b"track_id", "type", b"type", "video_layer", b"video_layer"]) -> None: ... - -global___AnalyticsEvent = AnalyticsEvent - -@typing_extensions.final -class AnalyticsEvents(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - EVENTS_FIELD_NUMBER: builtins.int - @property - def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsEvent]: ... - def __init__( - self, - *, - events: collections.abc.Iterable[global___AnalyticsEvent] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["events", b"events"]) -> None: ... - -global___AnalyticsEvents = AnalyticsEvents - -@typing_extensions.final -class AnalyticsRoomParticipant(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ID_FIELD_NUMBER: builtins.int - IDENTITY_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - STATE_FIELD_NUMBER: builtins.int - JOINED_AT_FIELD_NUMBER: builtins.int - id: builtins.str - identity: builtins.str - name: builtins.str - state: models.ParticipantInfo.State.ValueType - @property - def joined_at(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - def __init__( - self, - *, - id: builtins.str = ..., - identity: builtins.str = ..., - name: builtins.str = ..., - state: models.ParticipantInfo.State.ValueType = ..., - joined_at: google.protobuf.timestamp_pb2.Timestamp | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["joined_at", b"joined_at"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "identity", b"identity", "joined_at", b"joined_at", "name", b"name", "state", b"state"]) -> None: ... - -global___AnalyticsRoomParticipant = AnalyticsRoomParticipant - -@typing_extensions.final -class AnalyticsRoom(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - CREATED_AT_FIELD_NUMBER: builtins.int - PARTICIPANTS_FIELD_NUMBER: builtins.int - id: builtins.str - name: builtins.str - @property - def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - @property - def participants(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsRoomParticipant]: ... - def __init__( - self, - *, - id: builtins.str = ..., - name: builtins.str = ..., - created_at: google.protobuf.timestamp_pb2.Timestamp | None = ..., - participants: collections.abc.Iterable[global___AnalyticsRoomParticipant] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_at", b"created_at"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_at", b"created_at", "id", b"id", "name", b"name", "participants", b"participants"]) -> None: ... - -global___AnalyticsRoom = AnalyticsRoom - -@typing_extensions.final -class AnalyticsNodeRooms(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NODE_ID_FIELD_NUMBER: builtins.int - SEQUENCE_NUMBER_FIELD_NUMBER: builtins.int - TIMESTAMP_FIELD_NUMBER: builtins.int - ROOMS_FIELD_NUMBER: builtins.int - node_id: builtins.str - sequence_number: builtins.int - @property - def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - @property - def rooms(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsRoom]: ... - def __init__( - self, - *, - node_id: builtins.str = ..., - sequence_number: builtins.int = ..., - timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., - rooms: collections.abc.Iterable[global___AnalyticsRoom] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["timestamp", b"timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["node_id", b"node_id", "rooms", b"rooms", "sequence_number", b"sequence_number", "timestamp", b"timestamp"]) -> None: ... - -global___AnalyticsNodeRooms = AnalyticsNodeRooms +from google.protobuf import empty_pb2 as _empty_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from . import models as _models +from . import egress as _egress +from . import ingress as _ingress +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class StreamType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UPSTREAM: _ClassVar[StreamType] + DOWNSTREAM: _ClassVar[StreamType] + +class AnalyticsEventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ROOM_CREATED: _ClassVar[AnalyticsEventType] + ROOM_ENDED: _ClassVar[AnalyticsEventType] + PARTICIPANT_JOINED: _ClassVar[AnalyticsEventType] + PARTICIPANT_LEFT: _ClassVar[AnalyticsEventType] + TRACK_PUBLISHED: _ClassVar[AnalyticsEventType] + TRACK_PUBLISH_REQUESTED: _ClassVar[AnalyticsEventType] + TRACK_UNPUBLISHED: _ClassVar[AnalyticsEventType] + TRACK_SUBSCRIBED: _ClassVar[AnalyticsEventType] + TRACK_SUBSCRIBE_REQUESTED: _ClassVar[AnalyticsEventType] + TRACK_SUBSCRIBE_FAILED: _ClassVar[AnalyticsEventType] + TRACK_UNSUBSCRIBED: _ClassVar[AnalyticsEventType] + TRACK_PUBLISHED_UPDATE: _ClassVar[AnalyticsEventType] + TRACK_MUTED: _ClassVar[AnalyticsEventType] + TRACK_UNMUTED: _ClassVar[AnalyticsEventType] + TRACK_PUBLISH_STATS: _ClassVar[AnalyticsEventType] + TRACK_SUBSCRIBE_STATS: _ClassVar[AnalyticsEventType] + PARTICIPANT_ACTIVE: _ClassVar[AnalyticsEventType] + PARTICIPANT_RESUMED: _ClassVar[AnalyticsEventType] + EGRESS_STARTED: _ClassVar[AnalyticsEventType] + EGRESS_ENDED: _ClassVar[AnalyticsEventType] + EGRESS_UPDATED: _ClassVar[AnalyticsEventType] + TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY: _ClassVar[AnalyticsEventType] + RECONNECTED: _ClassVar[AnalyticsEventType] + INGRESS_CREATED: _ClassVar[AnalyticsEventType] + INGRESS_DELETED: _ClassVar[AnalyticsEventType] + INGRESS_STARTED: _ClassVar[AnalyticsEventType] + INGRESS_ENDED: _ClassVar[AnalyticsEventType] + INGRESS_UPDATED: _ClassVar[AnalyticsEventType] +UPSTREAM: StreamType +DOWNSTREAM: StreamType +ROOM_CREATED: AnalyticsEventType +ROOM_ENDED: AnalyticsEventType +PARTICIPANT_JOINED: AnalyticsEventType +PARTICIPANT_LEFT: AnalyticsEventType +TRACK_PUBLISHED: AnalyticsEventType +TRACK_PUBLISH_REQUESTED: AnalyticsEventType +TRACK_UNPUBLISHED: AnalyticsEventType +TRACK_SUBSCRIBED: AnalyticsEventType +TRACK_SUBSCRIBE_REQUESTED: AnalyticsEventType +TRACK_SUBSCRIBE_FAILED: AnalyticsEventType +TRACK_UNSUBSCRIBED: AnalyticsEventType +TRACK_PUBLISHED_UPDATE: AnalyticsEventType +TRACK_MUTED: AnalyticsEventType +TRACK_UNMUTED: AnalyticsEventType +TRACK_PUBLISH_STATS: AnalyticsEventType +TRACK_SUBSCRIBE_STATS: AnalyticsEventType +PARTICIPANT_ACTIVE: AnalyticsEventType +PARTICIPANT_RESUMED: AnalyticsEventType +EGRESS_STARTED: AnalyticsEventType +EGRESS_ENDED: AnalyticsEventType +EGRESS_UPDATED: AnalyticsEventType +TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY: AnalyticsEventType +RECONNECTED: AnalyticsEventType +INGRESS_CREATED: AnalyticsEventType +INGRESS_DELETED: AnalyticsEventType +INGRESS_STARTED: AnalyticsEventType +INGRESS_ENDED: AnalyticsEventType +INGRESS_UPDATED: AnalyticsEventType + +class AnalyticsVideoLayer(_message.Message): + __slots__ = ("layer", "packets", "bytes", "frames") + LAYER_FIELD_NUMBER: _ClassVar[int] + PACKETS_FIELD_NUMBER: _ClassVar[int] + BYTES_FIELD_NUMBER: _ClassVar[int] + FRAMES_FIELD_NUMBER: _ClassVar[int] + layer: int + packets: int + bytes: int + frames: int + def __init__(self, layer: _Optional[int] = ..., packets: _Optional[int] = ..., bytes: _Optional[int] = ..., frames: _Optional[int] = ...) -> None: ... + +class AnalyticsStream(_message.Message): + __slots__ = ("ssrc", "primary_packets", "primary_bytes", "retransmit_packets", "retransmit_bytes", "padding_packets", "padding_bytes", "packets_lost", "frames", "rtt", "jitter", "nacks", "plis", "firs", "video_layers") + SSRC_FIELD_NUMBER: _ClassVar[int] + PRIMARY_PACKETS_FIELD_NUMBER: _ClassVar[int] + PRIMARY_BYTES_FIELD_NUMBER: _ClassVar[int] + RETRANSMIT_PACKETS_FIELD_NUMBER: _ClassVar[int] + RETRANSMIT_BYTES_FIELD_NUMBER: _ClassVar[int] + PADDING_PACKETS_FIELD_NUMBER: _ClassVar[int] + PADDING_BYTES_FIELD_NUMBER: _ClassVar[int] + PACKETS_LOST_FIELD_NUMBER: _ClassVar[int] + FRAMES_FIELD_NUMBER: _ClassVar[int] + RTT_FIELD_NUMBER: _ClassVar[int] + JITTER_FIELD_NUMBER: _ClassVar[int] + NACKS_FIELD_NUMBER: _ClassVar[int] + PLIS_FIELD_NUMBER: _ClassVar[int] + FIRS_FIELD_NUMBER: _ClassVar[int] + VIDEO_LAYERS_FIELD_NUMBER: _ClassVar[int] + ssrc: int + primary_packets: int + primary_bytes: int + retransmit_packets: int + retransmit_bytes: int + padding_packets: int + padding_bytes: int + packets_lost: int + frames: int + rtt: int + jitter: int + nacks: int + plis: int + firs: int + video_layers: _containers.RepeatedCompositeFieldContainer[AnalyticsVideoLayer] + def __init__(self, ssrc: _Optional[int] = ..., primary_packets: _Optional[int] = ..., primary_bytes: _Optional[int] = ..., retransmit_packets: _Optional[int] = ..., retransmit_bytes: _Optional[int] = ..., padding_packets: _Optional[int] = ..., padding_bytes: _Optional[int] = ..., packets_lost: _Optional[int] = ..., frames: _Optional[int] = ..., rtt: _Optional[int] = ..., jitter: _Optional[int] = ..., nacks: _Optional[int] = ..., plis: _Optional[int] = ..., firs: _Optional[int] = ..., video_layers: _Optional[_Iterable[_Union[AnalyticsVideoLayer, _Mapping]]] = ...) -> None: ... + +class AnalyticsStat(_message.Message): + __slots__ = ("analytics_key", "kind", "time_stamp", "node", "room_id", "room_name", "participant_id", "track_id", "score", "streams", "mime", "min_score", "median_score", "project_id") + ANALYTICS_KEY_FIELD_NUMBER: _ClassVar[int] + KIND_FIELD_NUMBER: _ClassVar[int] + TIME_STAMP_FIELD_NUMBER: _ClassVar[int] + NODE_FIELD_NUMBER: _ClassVar[int] + ROOM_ID_FIELD_NUMBER: _ClassVar[int] + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_ID_FIELD_NUMBER: _ClassVar[int] + TRACK_ID_FIELD_NUMBER: _ClassVar[int] + SCORE_FIELD_NUMBER: _ClassVar[int] + STREAMS_FIELD_NUMBER: _ClassVar[int] + MIME_FIELD_NUMBER: _ClassVar[int] + MIN_SCORE_FIELD_NUMBER: _ClassVar[int] + MEDIAN_SCORE_FIELD_NUMBER: _ClassVar[int] + PROJECT_ID_FIELD_NUMBER: _ClassVar[int] + analytics_key: str + kind: StreamType + time_stamp: _timestamp_pb2.Timestamp + node: str + room_id: str + room_name: str + participant_id: str + track_id: str + score: float + streams: _containers.RepeatedCompositeFieldContainer[AnalyticsStream] + mime: str + min_score: float + median_score: float + project_id: str + def __init__(self, analytics_key: _Optional[str] = ..., kind: _Optional[_Union[StreamType, str]] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., node: _Optional[str] = ..., room_id: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_id: _Optional[str] = ..., track_id: _Optional[str] = ..., score: _Optional[float] = ..., streams: _Optional[_Iterable[_Union[AnalyticsStream, _Mapping]]] = ..., mime: _Optional[str] = ..., min_score: _Optional[float] = ..., median_score: _Optional[float] = ..., project_id: _Optional[str] = ...) -> None: ... + +class AnalyticsStats(_message.Message): + __slots__ = ("stats",) + STATS_FIELD_NUMBER: _ClassVar[int] + stats: _containers.RepeatedCompositeFieldContainer[AnalyticsStat] + def __init__(self, stats: _Optional[_Iterable[_Union[AnalyticsStat, _Mapping]]] = ...) -> None: ... + +class AnalyticsClientMeta(_message.Message): + __slots__ = ("region", "node", "client_addr", "client_connect_time", "connection_type", "reconnect_reason") + REGION_FIELD_NUMBER: _ClassVar[int] + NODE_FIELD_NUMBER: _ClassVar[int] + CLIENT_ADDR_FIELD_NUMBER: _ClassVar[int] + CLIENT_CONNECT_TIME_FIELD_NUMBER: _ClassVar[int] + CONNECTION_TYPE_FIELD_NUMBER: _ClassVar[int] + RECONNECT_REASON_FIELD_NUMBER: _ClassVar[int] + region: str + node: str + client_addr: str + client_connect_time: int + connection_type: str + reconnect_reason: _models.ReconnectReason + def __init__(self, region: _Optional[str] = ..., node: _Optional[str] = ..., client_addr: _Optional[str] = ..., client_connect_time: _Optional[int] = ..., connection_type: _Optional[str] = ..., reconnect_reason: _Optional[_Union[_models.ReconnectReason, str]] = ...) -> None: ... + +class AnalyticsEvent(_message.Message): + __slots__ = ("type", "timestamp", "room_id", "room", "participant_id", "participant", "track_id", "track", "analytics_key", "client_info", "client_meta", "egress_id", "ingress_id", "max_subscribed_video_quality", "publisher", "mime", "egress", "ingress", "error", "rtp_stats", "video_layer", "project_id") + TYPE_FIELD_NUMBER: _ClassVar[int] + TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + ROOM_ID_FIELD_NUMBER: _ClassVar[int] + ROOM_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_ID_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_FIELD_NUMBER: _ClassVar[int] + TRACK_ID_FIELD_NUMBER: _ClassVar[int] + TRACK_FIELD_NUMBER: _ClassVar[int] + ANALYTICS_KEY_FIELD_NUMBER: _ClassVar[int] + CLIENT_INFO_FIELD_NUMBER: _ClassVar[int] + CLIENT_META_FIELD_NUMBER: _ClassVar[int] + EGRESS_ID_FIELD_NUMBER: _ClassVar[int] + INGRESS_ID_FIELD_NUMBER: _ClassVar[int] + MAX_SUBSCRIBED_VIDEO_QUALITY_FIELD_NUMBER: _ClassVar[int] + PUBLISHER_FIELD_NUMBER: _ClassVar[int] + MIME_FIELD_NUMBER: _ClassVar[int] + EGRESS_FIELD_NUMBER: _ClassVar[int] + INGRESS_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + RTP_STATS_FIELD_NUMBER: _ClassVar[int] + VIDEO_LAYER_FIELD_NUMBER: _ClassVar[int] + PROJECT_ID_FIELD_NUMBER: _ClassVar[int] + type: AnalyticsEventType + timestamp: _timestamp_pb2.Timestamp + room_id: str + room: _models.Room + participant_id: str + participant: _models.ParticipantInfo + track_id: str + track: _models.TrackInfo + analytics_key: str + client_info: _models.ClientInfo + client_meta: AnalyticsClientMeta + egress_id: str + ingress_id: str + max_subscribed_video_quality: _models.VideoQuality + publisher: _models.ParticipantInfo + mime: str + egress: _egress.EgressInfo + ingress: _ingress.IngressInfo + error: str + rtp_stats: _models.RTPStats + video_layer: int + project_id: str + def __init__(self, type: _Optional[_Union[AnalyticsEventType, str]] = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., room_id: _Optional[str] = ..., room: _Optional[_Union[_models.Room, _Mapping]] = ..., participant_id: _Optional[str] = ..., participant: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., track_id: _Optional[str] = ..., track: _Optional[_Union[_models.TrackInfo, _Mapping]] = ..., analytics_key: _Optional[str] = ..., client_info: _Optional[_Union[_models.ClientInfo, _Mapping]] = ..., client_meta: _Optional[_Union[AnalyticsClientMeta, _Mapping]] = ..., egress_id: _Optional[str] = ..., ingress_id: _Optional[str] = ..., max_subscribed_video_quality: _Optional[_Union[_models.VideoQuality, str]] = ..., publisher: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., mime: _Optional[str] = ..., egress: _Optional[_Union[_egress.EgressInfo, _Mapping]] = ..., ingress: _Optional[_Union[_ingress.IngressInfo, _Mapping]] = ..., error: _Optional[str] = ..., rtp_stats: _Optional[_Union[_models.RTPStats, _Mapping]] = ..., video_layer: _Optional[int] = ..., project_id: _Optional[str] = ...) -> None: ... + +class AnalyticsEvents(_message.Message): + __slots__ = ("events",) + EVENTS_FIELD_NUMBER: _ClassVar[int] + events: _containers.RepeatedCompositeFieldContainer[AnalyticsEvent] + def __init__(self, events: _Optional[_Iterable[_Union[AnalyticsEvent, _Mapping]]] = ...) -> None: ... + +class AnalyticsRoomParticipant(_message.Message): + __slots__ = ("id", "identity", "name", "state", "joined_at") + ID_FIELD_NUMBER: _ClassVar[int] + IDENTITY_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + JOINED_AT_FIELD_NUMBER: _ClassVar[int] + id: str + identity: str + name: str + state: _models.ParticipantInfo.State + joined_at: _timestamp_pb2.Timestamp + def __init__(self, id: _Optional[str] = ..., identity: _Optional[str] = ..., name: _Optional[str] = ..., state: _Optional[_Union[_models.ParticipantInfo.State, str]] = ..., joined_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class AnalyticsRoom(_message.Message): + __slots__ = ("id", "name", "created_at", "participants") + ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + PARTICIPANTS_FIELD_NUMBER: _ClassVar[int] + id: str + name: str + created_at: _timestamp_pb2.Timestamp + participants: _containers.RepeatedCompositeFieldContainer[AnalyticsRoomParticipant] + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., participants: _Optional[_Iterable[_Union[AnalyticsRoomParticipant, _Mapping]]] = ...) -> None: ... + +class AnalyticsNodeRooms(_message.Message): + __slots__ = ("node_id", "sequence_number", "timestamp", "rooms") + NODE_ID_FIELD_NUMBER: _ClassVar[int] + SEQUENCE_NUMBER_FIELD_NUMBER: _ClassVar[int] + TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + ROOMS_FIELD_NUMBER: _ClassVar[int] + node_id: str + sequence_number: int + timestamp: _timestamp_pb2.Timestamp + rooms: _containers.RepeatedCompositeFieldContainer[AnalyticsRoom] + def __init__(self, node_id: _Optional[str] = ..., sequence_number: _Optional[int] = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., rooms: _Optional[_Iterable[_Union[AnalyticsRoom, _Mapping]]] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/egress.py b/livekit-protocol/livekit/protocol/egress.py index f3dfa4c5..1bb4c380 100644 --- a/livekit-protocol/livekit/protocol/egress.py +++ b/livekit-protocol/livekit/protocol/egress.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_egress.proto -# Protobuf Python Version: 4.25.2 +# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool diff --git a/livekit-protocol/livekit/protocol/egress.pyi b/livekit-protocol/livekit/protocol/egress.pyi index 57ecdf07..56731b2d 100644 --- a/livekit-protocol/livekit/protocol/egress.pyi +++ b/livekit-protocol/livekit/protocol/egress.pyi @@ -1,1280 +1,576 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2023 LiveKit, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -from . import models -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _EncodedFileType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _EncodedFileTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_EncodedFileType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEFAULT_FILETYPE: _EncodedFileType.ValueType # 0 - """file type chosen based on codecs""" - MP4: _EncodedFileType.ValueType # 1 - OGG: _EncodedFileType.ValueType # 2 - -class EncodedFileType(_EncodedFileType, metaclass=_EncodedFileTypeEnumTypeWrapper): ... - -DEFAULT_FILETYPE: EncodedFileType.ValueType # 0 -"""file type chosen based on codecs""" -MP4: EncodedFileType.ValueType # 1 -OGG: EncodedFileType.ValueType # 2 -global___EncodedFileType = EncodedFileType - -class _SegmentedFileProtocol: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _SegmentedFileProtocolEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SegmentedFileProtocol.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEFAULT_SEGMENTED_FILE_PROTOCOL: _SegmentedFileProtocol.ValueType # 0 - HLS_PROTOCOL: _SegmentedFileProtocol.ValueType # 1 - -class SegmentedFileProtocol(_SegmentedFileProtocol, metaclass=_SegmentedFileProtocolEnumTypeWrapper): ... - -DEFAULT_SEGMENTED_FILE_PROTOCOL: SegmentedFileProtocol.ValueType # 0 -HLS_PROTOCOL: SegmentedFileProtocol.ValueType # 1 -global___SegmentedFileProtocol = SegmentedFileProtocol - -class _SegmentedFileSuffix: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _SegmentedFileSuffixEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SegmentedFileSuffix.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - INDEX: _SegmentedFileSuffix.ValueType # 0 - TIMESTAMP: _SegmentedFileSuffix.ValueType # 1 - -class SegmentedFileSuffix(_SegmentedFileSuffix, metaclass=_SegmentedFileSuffixEnumTypeWrapper): ... - -INDEX: SegmentedFileSuffix.ValueType # 0 -TIMESTAMP: SegmentedFileSuffix.ValueType # 1 -global___SegmentedFileSuffix = SegmentedFileSuffix - -class _ImageFileSuffix: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _ImageFileSuffixEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ImageFileSuffix.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - IMAGE_SUFFIX_INDEX: _ImageFileSuffix.ValueType # 0 - IMAGE_SUFFIX_TIMESTAMP: _ImageFileSuffix.ValueType # 1 - -class ImageFileSuffix(_ImageFileSuffix, metaclass=_ImageFileSuffixEnumTypeWrapper): ... - -IMAGE_SUFFIX_INDEX: ImageFileSuffix.ValueType # 0 -IMAGE_SUFFIX_TIMESTAMP: ImageFileSuffix.ValueType # 1 -global___ImageFileSuffix = ImageFileSuffix - -class _StreamProtocol: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _StreamProtocolEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_StreamProtocol.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEFAULT_PROTOCOL: _StreamProtocol.ValueType # 0 - """protocol chosen based on urls""" - RTMP: _StreamProtocol.ValueType # 1 - -class StreamProtocol(_StreamProtocol, metaclass=_StreamProtocolEnumTypeWrapper): ... - -DEFAULT_PROTOCOL: StreamProtocol.ValueType # 0 -"""protocol chosen based on urls""" -RTMP: StreamProtocol.ValueType # 1 -global___StreamProtocol = StreamProtocol - -class _EncodingOptionsPreset: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _EncodingOptionsPresetEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_EncodingOptionsPreset.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - H264_720P_30: _EncodingOptionsPreset.ValueType # 0 - """ 1280x720, 30fps, 3000kpbs, H.264_MAIN / OPUS""" - H264_720P_60: _EncodingOptionsPreset.ValueType # 1 - """ 1280x720, 60fps, 4500kbps, H.264_MAIN / OPUS""" - H264_1080P_30: _EncodingOptionsPreset.ValueType # 2 - """1920x1080, 30fps, 4500kbps, H.264_MAIN / OPUS""" - H264_1080P_60: _EncodingOptionsPreset.ValueType # 3 - """1920x1080, 60fps, 6000kbps, H.264_MAIN / OPUS""" - PORTRAIT_H264_720P_30: _EncodingOptionsPreset.ValueType # 4 - """ 720x1280, 30fps, 3000kpbs, H.264_MAIN / OPUS""" - PORTRAIT_H264_720P_60: _EncodingOptionsPreset.ValueType # 5 - """ 720x1280, 60fps, 4500kbps, H.264_MAIN / OPUS""" - PORTRAIT_H264_1080P_30: _EncodingOptionsPreset.ValueType # 6 - """1080x1920, 30fps, 4500kbps, H.264_MAIN / OPUS""" - PORTRAIT_H264_1080P_60: _EncodingOptionsPreset.ValueType # 7 - """1080x1920, 60fps, 6000kbps, H.264_MAIN / OPUS""" - -class EncodingOptionsPreset(_EncodingOptionsPreset, metaclass=_EncodingOptionsPresetEnumTypeWrapper): ... - -H264_720P_30: EncodingOptionsPreset.ValueType # 0 -""" 1280x720, 30fps, 3000kpbs, H.264_MAIN / OPUS""" -H264_720P_60: EncodingOptionsPreset.ValueType # 1 -""" 1280x720, 60fps, 4500kbps, H.264_MAIN / OPUS""" -H264_1080P_30: EncodingOptionsPreset.ValueType # 2 -"""1920x1080, 30fps, 4500kbps, H.264_MAIN / OPUS""" -H264_1080P_60: EncodingOptionsPreset.ValueType # 3 -"""1920x1080, 60fps, 6000kbps, H.264_MAIN / OPUS""" -PORTRAIT_H264_720P_30: EncodingOptionsPreset.ValueType # 4 -""" 720x1280, 30fps, 3000kpbs, H.264_MAIN / OPUS""" -PORTRAIT_H264_720P_60: EncodingOptionsPreset.ValueType # 5 -""" 720x1280, 60fps, 4500kbps, H.264_MAIN / OPUS""" -PORTRAIT_H264_1080P_30: EncodingOptionsPreset.ValueType # 6 -"""1080x1920, 30fps, 4500kbps, H.264_MAIN / OPUS""" -PORTRAIT_H264_1080P_60: EncodingOptionsPreset.ValueType # 7 -"""1080x1920, 60fps, 6000kbps, H.264_MAIN / OPUS""" -global___EncodingOptionsPreset = EncodingOptionsPreset - -class _EgressStatus: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _EgressStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_EgressStatus.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - EGRESS_STARTING: _EgressStatus.ValueType # 0 - EGRESS_ACTIVE: _EgressStatus.ValueType # 1 - EGRESS_ENDING: _EgressStatus.ValueType # 2 - EGRESS_COMPLETE: _EgressStatus.ValueType # 3 - EGRESS_FAILED: _EgressStatus.ValueType # 4 - EGRESS_ABORTED: _EgressStatus.ValueType # 5 - EGRESS_LIMIT_REACHED: _EgressStatus.ValueType # 6 - -class EgressStatus(_EgressStatus, metaclass=_EgressStatusEnumTypeWrapper): ... - -EGRESS_STARTING: EgressStatus.ValueType # 0 -EGRESS_ACTIVE: EgressStatus.ValueType # 1 -EGRESS_ENDING: EgressStatus.ValueType # 2 -EGRESS_COMPLETE: EgressStatus.ValueType # 3 -EGRESS_FAILED: EgressStatus.ValueType # 4 -EGRESS_ABORTED: EgressStatus.ValueType # 5 -EGRESS_LIMIT_REACHED: EgressStatus.ValueType # 6 -global___EgressStatus = EgressStatus - -@typing_extensions.final -class RoomCompositeEgressRequest(google.protobuf.message.Message): - """composite using a web browser""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_NAME_FIELD_NUMBER: builtins.int - LAYOUT_FIELD_NUMBER: builtins.int - AUDIO_ONLY_FIELD_NUMBER: builtins.int - VIDEO_ONLY_FIELD_NUMBER: builtins.int - CUSTOM_BASE_URL_FIELD_NUMBER: builtins.int - FILE_FIELD_NUMBER: builtins.int - STREAM_FIELD_NUMBER: builtins.int - SEGMENTS_FIELD_NUMBER: builtins.int - PRESET_FIELD_NUMBER: builtins.int - ADVANCED_FIELD_NUMBER: builtins.int - FILE_OUTPUTS_FIELD_NUMBER: builtins.int - STREAM_OUTPUTS_FIELD_NUMBER: builtins.int - SEGMENT_OUTPUTS_FIELD_NUMBER: builtins.int - IMAGE_OUTPUTS_FIELD_NUMBER: builtins.int - room_name: builtins.str - """required""" - layout: builtins.str - """(optional)""" - audio_only: builtins.bool - """(default false)""" - video_only: builtins.bool - """(default false)""" - custom_base_url: builtins.str - """template base url (default https://recorder.livekit.io)""" - @property - def file(self) -> global___EncodedFileOutput: ... - @property - def stream(self) -> global___StreamOutput: ... - @property - def segments(self) -> global___SegmentedFileOutput: ... - preset: global___EncodingOptionsPreset.ValueType - """(default H264_720P_30)""" - @property - def advanced(self) -> global___EncodingOptions: - """(optional)""" - @property - def file_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___EncodedFileOutput]: ... - @property - def stream_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StreamOutput]: ... - @property - def segment_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SegmentedFileOutput]: ... - @property - def image_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ImageOutput]: ... - def __init__( - self, - *, - room_name: builtins.str = ..., - layout: builtins.str = ..., - audio_only: builtins.bool = ..., - video_only: builtins.bool = ..., - custom_base_url: builtins.str = ..., - file: global___EncodedFileOutput | None = ..., - stream: global___StreamOutput | None = ..., - segments: global___SegmentedFileOutput | None = ..., - preset: global___EncodingOptionsPreset.ValueType = ..., - advanced: global___EncodingOptions | None = ..., - file_outputs: collections.abc.Iterable[global___EncodedFileOutput] | None = ..., - stream_outputs: collections.abc.Iterable[global___StreamOutput] | None = ..., - segment_outputs: collections.abc.Iterable[global___SegmentedFileOutput] | None = ..., - image_outputs: collections.abc.Iterable[global___ImageOutput] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "file", b"file", "options", b"options", "output", b"output", "preset", b"preset", "segments", b"segments", "stream", b"stream"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "audio_only", b"audio_only", "custom_base_url", b"custom_base_url", "file", b"file", "file_outputs", b"file_outputs", "image_outputs", b"image_outputs", "layout", b"layout", "options", b"options", "output", b"output", "preset", b"preset", "room_name", b"room_name", "segment_outputs", b"segment_outputs", "segments", b"segments", "stream", b"stream", "stream_outputs", b"stream_outputs", "video_only", b"video_only"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["options", b"options"]) -> typing_extensions.Literal["preset", "advanced"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["output", b"output"]) -> typing_extensions.Literal["file", "stream", "segments"] | None: ... - -global___RoomCompositeEgressRequest = RoomCompositeEgressRequest - -@typing_extensions.final -class WebEgressRequest(google.protobuf.message.Message): - """record any website""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - URL_FIELD_NUMBER: builtins.int - AUDIO_ONLY_FIELD_NUMBER: builtins.int - VIDEO_ONLY_FIELD_NUMBER: builtins.int - AWAIT_START_SIGNAL_FIELD_NUMBER: builtins.int - FILE_FIELD_NUMBER: builtins.int - STREAM_FIELD_NUMBER: builtins.int - SEGMENTS_FIELD_NUMBER: builtins.int - PRESET_FIELD_NUMBER: builtins.int - ADVANCED_FIELD_NUMBER: builtins.int - FILE_OUTPUTS_FIELD_NUMBER: builtins.int - STREAM_OUTPUTS_FIELD_NUMBER: builtins.int - SEGMENT_OUTPUTS_FIELD_NUMBER: builtins.int - IMAGE_OUTPUTS_FIELD_NUMBER: builtins.int - url: builtins.str - audio_only: builtins.bool - video_only: builtins.bool - await_start_signal: builtins.bool - @property - def file(self) -> global___EncodedFileOutput: ... - @property - def stream(self) -> global___StreamOutput: ... - @property - def segments(self) -> global___SegmentedFileOutput: ... - preset: global___EncodingOptionsPreset.ValueType - @property - def advanced(self) -> global___EncodingOptions: ... - @property - def file_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___EncodedFileOutput]: ... - @property - def stream_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StreamOutput]: ... - @property - def segment_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SegmentedFileOutput]: ... - @property - def image_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ImageOutput]: ... - def __init__( - self, - *, - url: builtins.str = ..., - audio_only: builtins.bool = ..., - video_only: builtins.bool = ..., - await_start_signal: builtins.bool = ..., - file: global___EncodedFileOutput | None = ..., - stream: global___StreamOutput | None = ..., - segments: global___SegmentedFileOutput | None = ..., - preset: global___EncodingOptionsPreset.ValueType = ..., - advanced: global___EncodingOptions | None = ..., - file_outputs: collections.abc.Iterable[global___EncodedFileOutput] | None = ..., - stream_outputs: collections.abc.Iterable[global___StreamOutput] | None = ..., - segment_outputs: collections.abc.Iterable[global___SegmentedFileOutput] | None = ..., - image_outputs: collections.abc.Iterable[global___ImageOutput] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "file", b"file", "options", b"options", "output", b"output", "preset", b"preset", "segments", b"segments", "stream", b"stream"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "audio_only", b"audio_only", "await_start_signal", b"await_start_signal", "file", b"file", "file_outputs", b"file_outputs", "image_outputs", b"image_outputs", "options", b"options", "output", b"output", "preset", b"preset", "segment_outputs", b"segment_outputs", "segments", b"segments", "stream", b"stream", "stream_outputs", b"stream_outputs", "url", b"url", "video_only", b"video_only"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["options", b"options"]) -> typing_extensions.Literal["preset", "advanced"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["output", b"output"]) -> typing_extensions.Literal["file", "stream", "segments"] | None: ... - -global___WebEgressRequest = WebEgressRequest - -@typing_extensions.final -class ParticipantEgressRequest(google.protobuf.message.Message): - """record audio and video from a single participant""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_NAME_FIELD_NUMBER: builtins.int - IDENTITY_FIELD_NUMBER: builtins.int - SCREEN_SHARE_FIELD_NUMBER: builtins.int - PRESET_FIELD_NUMBER: builtins.int - ADVANCED_FIELD_NUMBER: builtins.int - FILE_OUTPUTS_FIELD_NUMBER: builtins.int - STREAM_OUTPUTS_FIELD_NUMBER: builtins.int - SEGMENT_OUTPUTS_FIELD_NUMBER: builtins.int - IMAGE_OUTPUTS_FIELD_NUMBER: builtins.int - room_name: builtins.str - """required""" - identity: builtins.str - """required""" - screen_share: builtins.bool - """(default false)""" - preset: global___EncodingOptionsPreset.ValueType - """(default H264_720P_30)""" - @property - def advanced(self) -> global___EncodingOptions: - """(optional)""" - @property - def file_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___EncodedFileOutput]: ... - @property - def stream_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StreamOutput]: ... - @property - def segment_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SegmentedFileOutput]: ... - @property - def image_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ImageOutput]: ... - def __init__( - self, - *, - room_name: builtins.str = ..., - identity: builtins.str = ..., - screen_share: builtins.bool = ..., - preset: global___EncodingOptionsPreset.ValueType = ..., - advanced: global___EncodingOptions | None = ..., - file_outputs: collections.abc.Iterable[global___EncodedFileOutput] | None = ..., - stream_outputs: collections.abc.Iterable[global___StreamOutput] | None = ..., - segment_outputs: collections.abc.Iterable[global___SegmentedFileOutput] | None = ..., - image_outputs: collections.abc.Iterable[global___ImageOutput] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "options", b"options", "preset", b"preset"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "file_outputs", b"file_outputs", "identity", b"identity", "image_outputs", b"image_outputs", "options", b"options", "preset", b"preset", "room_name", b"room_name", "screen_share", b"screen_share", "segment_outputs", b"segment_outputs", "stream_outputs", b"stream_outputs"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["options", b"options"]) -> typing_extensions.Literal["preset", "advanced"] | None: ... - -global___ParticipantEgressRequest = ParticipantEgressRequest - -@typing_extensions.final -class TrackCompositeEgressRequest(google.protobuf.message.Message): - """containerize up to one audio and one video track""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_NAME_FIELD_NUMBER: builtins.int - AUDIO_TRACK_ID_FIELD_NUMBER: builtins.int - VIDEO_TRACK_ID_FIELD_NUMBER: builtins.int - FILE_FIELD_NUMBER: builtins.int - STREAM_FIELD_NUMBER: builtins.int - SEGMENTS_FIELD_NUMBER: builtins.int - PRESET_FIELD_NUMBER: builtins.int - ADVANCED_FIELD_NUMBER: builtins.int - FILE_OUTPUTS_FIELD_NUMBER: builtins.int - STREAM_OUTPUTS_FIELD_NUMBER: builtins.int - SEGMENT_OUTPUTS_FIELD_NUMBER: builtins.int - IMAGE_OUTPUTS_FIELD_NUMBER: builtins.int - room_name: builtins.str - """required""" - audio_track_id: builtins.str - """(optional)""" - video_track_id: builtins.str - """(optional)""" - @property - def file(self) -> global___EncodedFileOutput: ... - @property - def stream(self) -> global___StreamOutput: ... - @property - def segments(self) -> global___SegmentedFileOutput: ... - preset: global___EncodingOptionsPreset.ValueType - """(default H264_720P_30)""" - @property - def advanced(self) -> global___EncodingOptions: - """(optional)""" - @property - def file_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___EncodedFileOutput]: ... - @property - def stream_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StreamOutput]: ... - @property - def segment_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SegmentedFileOutput]: ... - @property - def image_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ImageOutput]: ... - def __init__( - self, - *, - room_name: builtins.str = ..., - audio_track_id: builtins.str = ..., - video_track_id: builtins.str = ..., - file: global___EncodedFileOutput | None = ..., - stream: global___StreamOutput | None = ..., - segments: global___SegmentedFileOutput | None = ..., - preset: global___EncodingOptionsPreset.ValueType = ..., - advanced: global___EncodingOptions | None = ..., - file_outputs: collections.abc.Iterable[global___EncodedFileOutput] | None = ..., - stream_outputs: collections.abc.Iterable[global___StreamOutput] | None = ..., - segment_outputs: collections.abc.Iterable[global___SegmentedFileOutput] | None = ..., - image_outputs: collections.abc.Iterable[global___ImageOutput] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "file", b"file", "options", b"options", "output", b"output", "preset", b"preset", "segments", b"segments", "stream", b"stream"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "audio_track_id", b"audio_track_id", "file", b"file", "file_outputs", b"file_outputs", "image_outputs", b"image_outputs", "options", b"options", "output", b"output", "preset", b"preset", "room_name", b"room_name", "segment_outputs", b"segment_outputs", "segments", b"segments", "stream", b"stream", "stream_outputs", b"stream_outputs", "video_track_id", b"video_track_id"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["options", b"options"]) -> typing_extensions.Literal["preset", "advanced"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["output", b"output"]) -> typing_extensions.Literal["file", "stream", "segments"] | None: ... - -global___TrackCompositeEgressRequest = TrackCompositeEgressRequest - -@typing_extensions.final -class TrackEgressRequest(google.protobuf.message.Message): - """record tracks individually, without transcoding""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_NAME_FIELD_NUMBER: builtins.int - TRACK_ID_FIELD_NUMBER: builtins.int - FILE_FIELD_NUMBER: builtins.int - WEBSOCKET_URL_FIELD_NUMBER: builtins.int - room_name: builtins.str - """required""" - track_id: builtins.str - """required""" - @property - def file(self) -> global___DirectFileOutput: ... - websocket_url: builtins.str - def __init__( - self, - *, - room_name: builtins.str = ..., - track_id: builtins.str = ..., - file: global___DirectFileOutput | None = ..., - websocket_url: builtins.str = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["file", b"file", "output", b"output", "websocket_url", b"websocket_url"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["file", b"file", "output", b"output", "room_name", b"room_name", "track_id", b"track_id", "websocket_url", b"websocket_url"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["output", b"output"]) -> typing_extensions.Literal["file", "websocket_url"] | None: ... - -global___TrackEgressRequest = TrackEgressRequest - -@typing_extensions.final -class EncodedFileOutput(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FILE_TYPE_FIELD_NUMBER: builtins.int - FILEPATH_FIELD_NUMBER: builtins.int - DISABLE_MANIFEST_FIELD_NUMBER: builtins.int - S3_FIELD_NUMBER: builtins.int - GCP_FIELD_NUMBER: builtins.int - AZURE_FIELD_NUMBER: builtins.int - ALIOSS_FIELD_NUMBER: builtins.int - file_type: global___EncodedFileType.ValueType - """(optional)""" - filepath: builtins.str - """see egress docs for templating (default {room_name}-{time})""" - disable_manifest: builtins.bool - """disable upload of manifest file (default false)""" - @property - def s3(self) -> global___S3Upload: ... - @property - def gcp(self) -> global___GCPUpload: ... - @property - def azure(self) -> global___AzureBlobUpload: ... - @property - def aliOSS(self) -> global___AliOSSUpload: ... - def __init__( - self, - *, - file_type: global___EncodedFileType.ValueType = ..., - filepath: builtins.str = ..., - disable_manifest: builtins.bool = ..., - s3: global___S3Upload | None = ..., - gcp: global___GCPUpload | None = ..., - azure: global___AzureBlobUpload | None = ..., - aliOSS: global___AliOSSUpload | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["aliOSS", b"aliOSS", "azure", b"azure", "gcp", b"gcp", "output", b"output", "s3", b"s3"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["aliOSS", b"aliOSS", "azure", b"azure", "disable_manifest", b"disable_manifest", "file_type", b"file_type", "filepath", b"filepath", "gcp", b"gcp", "output", b"output", "s3", b"s3"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["output", b"output"]) -> typing_extensions.Literal["s3", "gcp", "azure", "aliOSS"] | None: ... - -global___EncodedFileOutput = EncodedFileOutput - -@typing_extensions.final -class SegmentedFileOutput(google.protobuf.message.Message): - """Used to generate HLS segments or other kind of segmented output""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PROTOCOL_FIELD_NUMBER: builtins.int - FILENAME_PREFIX_FIELD_NUMBER: builtins.int - PLAYLIST_NAME_FIELD_NUMBER: builtins.int - LIVE_PLAYLIST_NAME_FIELD_NUMBER: builtins.int - SEGMENT_DURATION_FIELD_NUMBER: builtins.int - FILENAME_SUFFIX_FIELD_NUMBER: builtins.int - DISABLE_MANIFEST_FIELD_NUMBER: builtins.int - S3_FIELD_NUMBER: builtins.int - GCP_FIELD_NUMBER: builtins.int - AZURE_FIELD_NUMBER: builtins.int - ALIOSS_FIELD_NUMBER: builtins.int - protocol: global___SegmentedFileProtocol.ValueType - """(optional)""" - filename_prefix: builtins.str - """(optional)""" - playlist_name: builtins.str - """(optional)""" - live_playlist_name: builtins.str - """(optional, disabled if not provided). Path of a live playlist""" - segment_duration: builtins.int - """in seconds (optional)""" - filename_suffix: global___SegmentedFileSuffix.ValueType - """(optional, default INDEX)""" - disable_manifest: builtins.bool - """disable upload of manifest file (default false)""" - @property - def s3(self) -> global___S3Upload: ... - @property - def gcp(self) -> global___GCPUpload: ... - @property - def azure(self) -> global___AzureBlobUpload: ... - @property - def aliOSS(self) -> global___AliOSSUpload: ... - def __init__( - self, - *, - protocol: global___SegmentedFileProtocol.ValueType = ..., - filename_prefix: builtins.str = ..., - playlist_name: builtins.str = ..., - live_playlist_name: builtins.str = ..., - segment_duration: builtins.int = ..., - filename_suffix: global___SegmentedFileSuffix.ValueType = ..., - disable_manifest: builtins.bool = ..., - s3: global___S3Upload | None = ..., - gcp: global___GCPUpload | None = ..., - azure: global___AzureBlobUpload | None = ..., - aliOSS: global___AliOSSUpload | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["aliOSS", b"aliOSS", "azure", b"azure", "gcp", b"gcp", "output", b"output", "s3", b"s3"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["aliOSS", b"aliOSS", "azure", b"azure", "disable_manifest", b"disable_manifest", "filename_prefix", b"filename_prefix", "filename_suffix", b"filename_suffix", "gcp", b"gcp", "live_playlist_name", b"live_playlist_name", "output", b"output", "playlist_name", b"playlist_name", "protocol", b"protocol", "s3", b"s3", "segment_duration", b"segment_duration"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["output", b"output"]) -> typing_extensions.Literal["s3", "gcp", "azure", "aliOSS"] | None: ... - -global___SegmentedFileOutput = SegmentedFileOutput - -@typing_extensions.final -class DirectFileOutput(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FILEPATH_FIELD_NUMBER: builtins.int - DISABLE_MANIFEST_FIELD_NUMBER: builtins.int - S3_FIELD_NUMBER: builtins.int - GCP_FIELD_NUMBER: builtins.int - AZURE_FIELD_NUMBER: builtins.int - ALIOSS_FIELD_NUMBER: builtins.int - filepath: builtins.str - """see egress docs for templating (default {track_id}-{time})""" - disable_manifest: builtins.bool - """disable upload of manifest file (default false)""" - @property - def s3(self) -> global___S3Upload: ... - @property - def gcp(self) -> global___GCPUpload: ... - @property - def azure(self) -> global___AzureBlobUpload: ... - @property - def aliOSS(self) -> global___AliOSSUpload: ... - def __init__( - self, - *, - filepath: builtins.str = ..., - disable_manifest: builtins.bool = ..., - s3: global___S3Upload | None = ..., - gcp: global___GCPUpload | None = ..., - azure: global___AzureBlobUpload | None = ..., - aliOSS: global___AliOSSUpload | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["aliOSS", b"aliOSS", "azure", b"azure", "gcp", b"gcp", "output", b"output", "s3", b"s3"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["aliOSS", b"aliOSS", "azure", b"azure", "disable_manifest", b"disable_manifest", "filepath", b"filepath", "gcp", b"gcp", "output", b"output", "s3", b"s3"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["output", b"output"]) -> typing_extensions.Literal["s3", "gcp", "azure", "aliOSS"] | None: ... - -global___DirectFileOutput = DirectFileOutput - -@typing_extensions.final -class ImageOutput(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CAPTURE_INTERVAL_FIELD_NUMBER: builtins.int - WIDTH_FIELD_NUMBER: builtins.int - HEIGHT_FIELD_NUMBER: builtins.int - FILENAME_PREFIX_FIELD_NUMBER: builtins.int - FILENAME_SUFFIX_FIELD_NUMBER: builtins.int - IMAGE_CODEC_FIELD_NUMBER: builtins.int - DISABLE_MANIFEST_FIELD_NUMBER: builtins.int - S3_FIELD_NUMBER: builtins.int - GCP_FIELD_NUMBER: builtins.int - AZURE_FIELD_NUMBER: builtins.int - ALIOSS_FIELD_NUMBER: builtins.int - capture_interval: builtins.int - """in seconds (required)""" - width: builtins.int - """(optional, defaults to track width)""" - height: builtins.int - """(optional, defaults to track height)""" - filename_prefix: builtins.str - """(optional)""" - filename_suffix: global___ImageFileSuffix.ValueType - """(optional, default INDEX)""" - image_codec: models.ImageCodec.ValueType - """(optional)""" - disable_manifest: builtins.bool - """disable upload of manifest file (default false)""" - @property - def s3(self) -> global___S3Upload: ... - @property - def gcp(self) -> global___GCPUpload: ... - @property - def azure(self) -> global___AzureBlobUpload: ... - @property - def aliOSS(self) -> global___AliOSSUpload: ... - def __init__( - self, - *, - capture_interval: builtins.int = ..., - width: builtins.int = ..., - height: builtins.int = ..., - filename_prefix: builtins.str = ..., - filename_suffix: global___ImageFileSuffix.ValueType = ..., - image_codec: models.ImageCodec.ValueType = ..., - disable_manifest: builtins.bool = ..., - s3: global___S3Upload | None = ..., - gcp: global___GCPUpload | None = ..., - azure: global___AzureBlobUpload | None = ..., - aliOSS: global___AliOSSUpload | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["aliOSS", b"aliOSS", "azure", b"azure", "gcp", b"gcp", "output", b"output", "s3", b"s3"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["aliOSS", b"aliOSS", "azure", b"azure", "capture_interval", b"capture_interval", "disable_manifest", b"disable_manifest", "filename_prefix", b"filename_prefix", "filename_suffix", b"filename_suffix", "gcp", b"gcp", "height", b"height", "image_codec", b"image_codec", "output", b"output", "s3", b"s3", "width", b"width"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["output", b"output"]) -> typing_extensions.Literal["s3", "gcp", "azure", "aliOSS"] | None: ... - -global___ImageOutput = ImageOutput - -@typing_extensions.final -class S3Upload(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - @typing_extensions.final - class MetadataEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.str - value: builtins.str - def __init__( - self, - *, - key: builtins.str = ..., - value: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... - - ACCESS_KEY_FIELD_NUMBER: builtins.int - SECRET_FIELD_NUMBER: builtins.int - REGION_FIELD_NUMBER: builtins.int - ENDPOINT_FIELD_NUMBER: builtins.int - BUCKET_FIELD_NUMBER: builtins.int - FORCE_PATH_STYLE_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - TAGGING_FIELD_NUMBER: builtins.int - CONTENT_DISPOSITION_FIELD_NUMBER: builtins.int - access_key: builtins.str - secret: builtins.str - region: builtins.str - endpoint: builtins.str - bucket: builtins.str - force_path_style: builtins.bool - @property - def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... - tagging: builtins.str - content_disposition: builtins.str - """Content-Disposition header""" - def __init__( - self, - *, - access_key: builtins.str = ..., - secret: builtins.str = ..., - region: builtins.str = ..., - endpoint: builtins.str = ..., - bucket: builtins.str = ..., - force_path_style: builtins.bool = ..., - metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., - tagging: builtins.str = ..., - content_disposition: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["access_key", b"access_key", "bucket", b"bucket", "content_disposition", b"content_disposition", "endpoint", b"endpoint", "force_path_style", b"force_path_style", "metadata", b"metadata", "region", b"region", "secret", b"secret", "tagging", b"tagging"]) -> None: ... - -global___S3Upload = S3Upload - -@typing_extensions.final -class GCPUpload(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CREDENTIALS_FIELD_NUMBER: builtins.int - BUCKET_FIELD_NUMBER: builtins.int - credentials: builtins.str - """service account credentials serialized in JSON "credentials.json" """ - bucket: builtins.str - def __init__( - self, - *, - credentials: builtins.str = ..., - bucket: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["bucket", b"bucket", "credentials", b"credentials"]) -> None: ... - -global___GCPUpload = GCPUpload - -@typing_extensions.final -class AzureBlobUpload(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ACCOUNT_NAME_FIELD_NUMBER: builtins.int - ACCOUNT_KEY_FIELD_NUMBER: builtins.int - CONTAINER_NAME_FIELD_NUMBER: builtins.int - account_name: builtins.str - account_key: builtins.str - container_name: builtins.str - def __init__( - self, - *, - account_name: builtins.str = ..., - account_key: builtins.str = ..., - container_name: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["account_key", b"account_key", "account_name", b"account_name", "container_name", b"container_name"]) -> None: ... - -global___AzureBlobUpload = AzureBlobUpload - -@typing_extensions.final -class AliOSSUpload(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ACCESS_KEY_FIELD_NUMBER: builtins.int - SECRET_FIELD_NUMBER: builtins.int - REGION_FIELD_NUMBER: builtins.int - ENDPOINT_FIELD_NUMBER: builtins.int - BUCKET_FIELD_NUMBER: builtins.int - access_key: builtins.str - secret: builtins.str - region: builtins.str - endpoint: builtins.str - bucket: builtins.str - def __init__( - self, - *, - access_key: builtins.str = ..., - secret: builtins.str = ..., - region: builtins.str = ..., - endpoint: builtins.str = ..., - bucket: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["access_key", b"access_key", "bucket", b"bucket", "endpoint", b"endpoint", "region", b"region", "secret", b"secret"]) -> None: ... - -global___AliOSSUpload = AliOSSUpload - -@typing_extensions.final -class StreamOutput(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PROTOCOL_FIELD_NUMBER: builtins.int - URLS_FIELD_NUMBER: builtins.int - protocol: global___StreamProtocol.ValueType - """required""" - @property - def urls(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """required""" - def __init__( - self, - *, - protocol: global___StreamProtocol.ValueType = ..., - urls: collections.abc.Iterable[builtins.str] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["protocol", b"protocol", "urls", b"urls"]) -> None: ... - -global___StreamOutput = StreamOutput - -@typing_extensions.final -class EncodingOptions(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - WIDTH_FIELD_NUMBER: builtins.int - HEIGHT_FIELD_NUMBER: builtins.int - DEPTH_FIELD_NUMBER: builtins.int - FRAMERATE_FIELD_NUMBER: builtins.int - AUDIO_CODEC_FIELD_NUMBER: builtins.int - AUDIO_BITRATE_FIELD_NUMBER: builtins.int - AUDIO_QUALITY_FIELD_NUMBER: builtins.int - AUDIO_FREQUENCY_FIELD_NUMBER: builtins.int - VIDEO_CODEC_FIELD_NUMBER: builtins.int - VIDEO_BITRATE_FIELD_NUMBER: builtins.int - VIDEO_QUALITY_FIELD_NUMBER: builtins.int - KEY_FRAME_INTERVAL_FIELD_NUMBER: builtins.int - width: builtins.int - """(default 1920)""" - height: builtins.int - """(default 1080)""" - depth: builtins.int - """(default 24)""" - framerate: builtins.int - """(default 30)""" - audio_codec: models.AudioCodec.ValueType - """(default OPUS)""" - audio_bitrate: builtins.int - """(default 128)""" - audio_quality: builtins.int - """quality setting on audio encoder""" - audio_frequency: builtins.int - """(default 44100)""" - video_codec: models.VideoCodec.ValueType - """(default H264_MAIN)""" - video_bitrate: builtins.int - """(default 4500)""" - video_quality: builtins.int - """quality setting on video encoder""" - key_frame_interval: builtins.float - """in seconds (default 4s for streaming, segment duration for segmented output, encoder default for files)""" - def __init__( - self, - *, - width: builtins.int = ..., - height: builtins.int = ..., - depth: builtins.int = ..., - framerate: builtins.int = ..., - audio_codec: models.AudioCodec.ValueType = ..., - audio_bitrate: builtins.int = ..., - audio_quality: builtins.int = ..., - audio_frequency: builtins.int = ..., - video_codec: models.VideoCodec.ValueType = ..., - video_bitrate: builtins.int = ..., - video_quality: builtins.int = ..., - key_frame_interval: builtins.float = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["audio_bitrate", b"audio_bitrate", "audio_codec", b"audio_codec", "audio_frequency", b"audio_frequency", "audio_quality", b"audio_quality", "depth", b"depth", "framerate", b"framerate", "height", b"height", "key_frame_interval", b"key_frame_interval", "video_bitrate", b"video_bitrate", "video_codec", b"video_codec", "video_quality", b"video_quality", "width", b"width"]) -> None: ... - -global___EncodingOptions = EncodingOptions - -@typing_extensions.final -class UpdateLayoutRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - EGRESS_ID_FIELD_NUMBER: builtins.int - LAYOUT_FIELD_NUMBER: builtins.int - egress_id: builtins.str - layout: builtins.str - def __init__( - self, - *, - egress_id: builtins.str = ..., - layout: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["egress_id", b"egress_id", "layout", b"layout"]) -> None: ... - -global___UpdateLayoutRequest = UpdateLayoutRequest - -@typing_extensions.final -class UpdateStreamRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - EGRESS_ID_FIELD_NUMBER: builtins.int - ADD_OUTPUT_URLS_FIELD_NUMBER: builtins.int - REMOVE_OUTPUT_URLS_FIELD_NUMBER: builtins.int - egress_id: builtins.str - @property - def add_output_urls(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... - @property - def remove_output_urls(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... - def __init__( - self, - *, - egress_id: builtins.str = ..., - add_output_urls: collections.abc.Iterable[builtins.str] | None = ..., - remove_output_urls: collections.abc.Iterable[builtins.str] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["add_output_urls", b"add_output_urls", "egress_id", b"egress_id", "remove_output_urls", b"remove_output_urls"]) -> None: ... - -global___UpdateStreamRequest = UpdateStreamRequest - -@typing_extensions.final -class ListEgressRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_NAME_FIELD_NUMBER: builtins.int - EGRESS_ID_FIELD_NUMBER: builtins.int - ACTIVE_FIELD_NUMBER: builtins.int - room_name: builtins.str - """(optional, filter by room name)""" - egress_id: builtins.str - """(optional, filter by egress ID)""" - active: builtins.bool - """(optional, list active egress only)""" - def __init__( - self, - *, - room_name: builtins.str = ..., - egress_id: builtins.str = ..., - active: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["active", b"active", "egress_id", b"egress_id", "room_name", b"room_name"]) -> None: ... - -global___ListEgressRequest = ListEgressRequest - -@typing_extensions.final -class ListEgressResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ITEMS_FIELD_NUMBER: builtins.int - @property - def items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___EgressInfo]: ... - def __init__( - self, - *, - items: collections.abc.Iterable[global___EgressInfo] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["items", b"items"]) -> None: ... - -global___ListEgressResponse = ListEgressResponse - -@typing_extensions.final -class StopEgressRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - EGRESS_ID_FIELD_NUMBER: builtins.int - egress_id: builtins.str - def __init__( - self, - *, - egress_id: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["egress_id", b"egress_id"]) -> None: ... - -global___StopEgressRequest = StopEgressRequest - -@typing_extensions.final -class EgressInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - EGRESS_ID_FIELD_NUMBER: builtins.int - ROOM_ID_FIELD_NUMBER: builtins.int - ROOM_NAME_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - STARTED_AT_FIELD_NUMBER: builtins.int - ENDED_AT_FIELD_NUMBER: builtins.int - UPDATED_AT_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - ROOM_COMPOSITE_FIELD_NUMBER: builtins.int - WEB_FIELD_NUMBER: builtins.int - PARTICIPANT_FIELD_NUMBER: builtins.int - TRACK_COMPOSITE_FIELD_NUMBER: builtins.int - TRACK_FIELD_NUMBER: builtins.int - STREAM_FIELD_NUMBER: builtins.int - FILE_FIELD_NUMBER: builtins.int - SEGMENTS_FIELD_NUMBER: builtins.int - STREAM_RESULTS_FIELD_NUMBER: builtins.int - FILE_RESULTS_FIELD_NUMBER: builtins.int - SEGMENT_RESULTS_FIELD_NUMBER: builtins.int - IMAGE_RESULTS_FIELD_NUMBER: builtins.int - egress_id: builtins.str - room_id: builtins.str - room_name: builtins.str - status: global___EgressStatus.ValueType - started_at: builtins.int - ended_at: builtins.int - updated_at: builtins.int - error: builtins.str - @property - def room_composite(self) -> global___RoomCompositeEgressRequest: ... - @property - def web(self) -> global___WebEgressRequest: ... - @property - def participant(self) -> global___ParticipantEgressRequest: ... - @property - def track_composite(self) -> global___TrackCompositeEgressRequest: ... - @property - def track(self) -> global___TrackEgressRequest: ... - @property - def stream(self) -> global___StreamInfoList: ... - @property - def file(self) -> global___FileInfo: ... - @property - def segments(self) -> global___SegmentsInfo: ... - @property - def stream_results(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StreamInfo]: ... - @property - def file_results(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FileInfo]: ... - @property - def segment_results(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SegmentsInfo]: ... - @property - def image_results(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ImagesInfo]: ... - def __init__( - self, - *, - egress_id: builtins.str = ..., - room_id: builtins.str = ..., - room_name: builtins.str = ..., - status: global___EgressStatus.ValueType = ..., - started_at: builtins.int = ..., - ended_at: builtins.int = ..., - updated_at: builtins.int = ..., - error: builtins.str = ..., - room_composite: global___RoomCompositeEgressRequest | None = ..., - web: global___WebEgressRequest | None = ..., - participant: global___ParticipantEgressRequest | None = ..., - track_composite: global___TrackCompositeEgressRequest | None = ..., - track: global___TrackEgressRequest | None = ..., - stream: global___StreamInfoList | None = ..., - file: global___FileInfo | None = ..., - segments: global___SegmentsInfo | None = ..., - stream_results: collections.abc.Iterable[global___StreamInfo] | None = ..., - file_results: collections.abc.Iterable[global___FileInfo] | None = ..., - segment_results: collections.abc.Iterable[global___SegmentsInfo] | None = ..., - image_results: collections.abc.Iterable[global___ImagesInfo] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["file", b"file", "participant", b"participant", "request", b"request", "result", b"result", "room_composite", b"room_composite", "segments", b"segments", "stream", b"stream", "track", b"track", "track_composite", b"track_composite", "web", b"web"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["egress_id", b"egress_id", "ended_at", b"ended_at", "error", b"error", "file", b"file", "file_results", b"file_results", "image_results", b"image_results", "participant", b"participant", "request", b"request", "result", b"result", "room_composite", b"room_composite", "room_id", b"room_id", "room_name", b"room_name", "segment_results", b"segment_results", "segments", b"segments", "started_at", b"started_at", "status", b"status", "stream", b"stream", "stream_results", b"stream_results", "track", b"track", "track_composite", b"track_composite", "updated_at", b"updated_at", "web", b"web"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["request", b"request"]) -> typing_extensions.Literal["room_composite", "web", "participant", "track_composite", "track"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["result", b"result"]) -> typing_extensions.Literal["stream", "file", "segments"] | None: ... - -global___EgressInfo = EgressInfo - -@typing_extensions.final -class StreamInfoList(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - INFO_FIELD_NUMBER: builtins.int - @property - def info(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StreamInfo]: ... - def __init__( - self, - *, - info: collections.abc.Iterable[global___StreamInfo] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["info", b"info"]) -> None: ... - -global___StreamInfoList = StreamInfoList - -@typing_extensions.final -class StreamInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Status: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _StatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[StreamInfo._Status.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - ACTIVE: StreamInfo._Status.ValueType # 0 - FINISHED: StreamInfo._Status.ValueType # 1 - FAILED: StreamInfo._Status.ValueType # 2 - - class Status(_Status, metaclass=_StatusEnumTypeWrapper): ... - ACTIVE: StreamInfo.Status.ValueType # 0 - FINISHED: StreamInfo.Status.ValueType # 1 - FAILED: StreamInfo.Status.ValueType # 2 - - URL_FIELD_NUMBER: builtins.int - STARTED_AT_FIELD_NUMBER: builtins.int - ENDED_AT_FIELD_NUMBER: builtins.int - DURATION_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - url: builtins.str - started_at: builtins.int - ended_at: builtins.int - duration: builtins.int - status: global___StreamInfo.Status.ValueType - error: builtins.str - def __init__( - self, - *, - url: builtins.str = ..., - started_at: builtins.int = ..., - ended_at: builtins.int = ..., - duration: builtins.int = ..., - status: global___StreamInfo.Status.ValueType = ..., - error: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["duration", b"duration", "ended_at", b"ended_at", "error", b"error", "started_at", b"started_at", "status", b"status", "url", b"url"]) -> None: ... - -global___StreamInfo = StreamInfo - -@typing_extensions.final -class FileInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FILENAME_FIELD_NUMBER: builtins.int - STARTED_AT_FIELD_NUMBER: builtins.int - ENDED_AT_FIELD_NUMBER: builtins.int - DURATION_FIELD_NUMBER: builtins.int - SIZE_FIELD_NUMBER: builtins.int - LOCATION_FIELD_NUMBER: builtins.int - filename: builtins.str - started_at: builtins.int - ended_at: builtins.int - duration: builtins.int - size: builtins.int - location: builtins.str - def __init__( - self, - *, - filename: builtins.str = ..., - started_at: builtins.int = ..., - ended_at: builtins.int = ..., - duration: builtins.int = ..., - size: builtins.int = ..., - location: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["duration", b"duration", "ended_at", b"ended_at", "filename", b"filename", "location", b"location", "size", b"size", "started_at", b"started_at"]) -> None: ... - -global___FileInfo = FileInfo - -@typing_extensions.final -class SegmentsInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PLAYLIST_NAME_FIELD_NUMBER: builtins.int - LIVE_PLAYLIST_NAME_FIELD_NUMBER: builtins.int - DURATION_FIELD_NUMBER: builtins.int - SIZE_FIELD_NUMBER: builtins.int - PLAYLIST_LOCATION_FIELD_NUMBER: builtins.int - LIVE_PLAYLIST_LOCATION_FIELD_NUMBER: builtins.int - SEGMENT_COUNT_FIELD_NUMBER: builtins.int - STARTED_AT_FIELD_NUMBER: builtins.int - ENDED_AT_FIELD_NUMBER: builtins.int - playlist_name: builtins.str - live_playlist_name: builtins.str - duration: builtins.int - size: builtins.int - playlist_location: builtins.str - live_playlist_location: builtins.str - segment_count: builtins.int - started_at: builtins.int - ended_at: builtins.int - def __init__( - self, - *, - playlist_name: builtins.str = ..., - live_playlist_name: builtins.str = ..., - duration: builtins.int = ..., - size: builtins.int = ..., - playlist_location: builtins.str = ..., - live_playlist_location: builtins.str = ..., - segment_count: builtins.int = ..., - started_at: builtins.int = ..., - ended_at: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["duration", b"duration", "ended_at", b"ended_at", "live_playlist_location", b"live_playlist_location", "live_playlist_name", b"live_playlist_name", "playlist_location", b"playlist_location", "playlist_name", b"playlist_name", "segment_count", b"segment_count", "size", b"size", "started_at", b"started_at"]) -> None: ... - -global___SegmentsInfo = SegmentsInfo - -@typing_extensions.final -class ImagesInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - IMAGE_COUNT_FIELD_NUMBER: builtins.int - STARTED_AT_FIELD_NUMBER: builtins.int - ENDED_AT_FIELD_NUMBER: builtins.int - image_count: builtins.int - started_at: builtins.int - ended_at: builtins.int - def __init__( - self, - *, - image_count: builtins.int = ..., - started_at: builtins.int = ..., - ended_at: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ended_at", b"ended_at", "image_count", b"image_count", "started_at", b"started_at"]) -> None: ... - -global___ImagesInfo = ImagesInfo - -@typing_extensions.final -class AutoParticipantEgress(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PRESET_FIELD_NUMBER: builtins.int - ADVANCED_FIELD_NUMBER: builtins.int - FILE_OUTPUTS_FIELD_NUMBER: builtins.int - SEGMENT_OUTPUTS_FIELD_NUMBER: builtins.int - preset: global___EncodingOptionsPreset.ValueType - """(default H264_720P_30)""" - @property - def advanced(self) -> global___EncodingOptions: - """(optional)""" - @property - def file_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___EncodedFileOutput]: ... - @property - def segment_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SegmentedFileOutput]: ... - def __init__( - self, - *, - preset: global___EncodingOptionsPreset.ValueType = ..., - advanced: global___EncodingOptions | None = ..., - file_outputs: collections.abc.Iterable[global___EncodedFileOutput] | None = ..., - segment_outputs: collections.abc.Iterable[global___SegmentedFileOutput] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "options", b"options", "preset", b"preset"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["advanced", b"advanced", "file_outputs", b"file_outputs", "options", b"options", "preset", b"preset", "segment_outputs", b"segment_outputs"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["options", b"options"]) -> typing_extensions.Literal["preset", "advanced"] | None: ... - -global___AutoParticipantEgress = AutoParticipantEgress - -@typing_extensions.final -class AutoTrackEgress(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FILEPATH_FIELD_NUMBER: builtins.int - DISABLE_MANIFEST_FIELD_NUMBER: builtins.int - S3_FIELD_NUMBER: builtins.int - GCP_FIELD_NUMBER: builtins.int - AZURE_FIELD_NUMBER: builtins.int - filepath: builtins.str - """see docs for templating (default {track_id}-{time})""" - disable_manifest: builtins.bool - """disables upload of json manifest file (default false)""" - @property - def s3(self) -> global___S3Upload: ... - @property - def gcp(self) -> global___GCPUpload: ... - @property - def azure(self) -> global___AzureBlobUpload: ... - def __init__( - self, - *, - filepath: builtins.str = ..., - disable_manifest: builtins.bool = ..., - s3: global___S3Upload | None = ..., - gcp: global___GCPUpload | None = ..., - azure: global___AzureBlobUpload | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["azure", b"azure", "gcp", b"gcp", "output", b"output", "s3", b"s3"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["azure", b"azure", "disable_manifest", b"disable_manifest", "filepath", b"filepath", "gcp", b"gcp", "output", b"output", "s3", b"s3"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["output", b"output"]) -> typing_extensions.Literal["s3", "gcp", "azure"] | None: ... - -global___AutoTrackEgress = AutoTrackEgress +from . import models as _models +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class EncodedFileType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DEFAULT_FILETYPE: _ClassVar[EncodedFileType] + MP4: _ClassVar[EncodedFileType] + OGG: _ClassVar[EncodedFileType] + +class SegmentedFileProtocol(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DEFAULT_SEGMENTED_FILE_PROTOCOL: _ClassVar[SegmentedFileProtocol] + HLS_PROTOCOL: _ClassVar[SegmentedFileProtocol] + +class SegmentedFileSuffix(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + INDEX: _ClassVar[SegmentedFileSuffix] + TIMESTAMP: _ClassVar[SegmentedFileSuffix] + +class ImageFileSuffix(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + IMAGE_SUFFIX_INDEX: _ClassVar[ImageFileSuffix] + IMAGE_SUFFIX_TIMESTAMP: _ClassVar[ImageFileSuffix] + +class StreamProtocol(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DEFAULT_PROTOCOL: _ClassVar[StreamProtocol] + RTMP: _ClassVar[StreamProtocol] + +class EncodingOptionsPreset(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + H264_720P_30: _ClassVar[EncodingOptionsPreset] + H264_720P_60: _ClassVar[EncodingOptionsPreset] + H264_1080P_30: _ClassVar[EncodingOptionsPreset] + H264_1080P_60: _ClassVar[EncodingOptionsPreset] + PORTRAIT_H264_720P_30: _ClassVar[EncodingOptionsPreset] + PORTRAIT_H264_720P_60: _ClassVar[EncodingOptionsPreset] + PORTRAIT_H264_1080P_30: _ClassVar[EncodingOptionsPreset] + PORTRAIT_H264_1080P_60: _ClassVar[EncodingOptionsPreset] + +class EgressStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + EGRESS_STARTING: _ClassVar[EgressStatus] + EGRESS_ACTIVE: _ClassVar[EgressStatus] + EGRESS_ENDING: _ClassVar[EgressStatus] + EGRESS_COMPLETE: _ClassVar[EgressStatus] + EGRESS_FAILED: _ClassVar[EgressStatus] + EGRESS_ABORTED: _ClassVar[EgressStatus] + EGRESS_LIMIT_REACHED: _ClassVar[EgressStatus] +DEFAULT_FILETYPE: EncodedFileType +MP4: EncodedFileType +OGG: EncodedFileType +DEFAULT_SEGMENTED_FILE_PROTOCOL: SegmentedFileProtocol +HLS_PROTOCOL: SegmentedFileProtocol +INDEX: SegmentedFileSuffix +TIMESTAMP: SegmentedFileSuffix +IMAGE_SUFFIX_INDEX: ImageFileSuffix +IMAGE_SUFFIX_TIMESTAMP: ImageFileSuffix +DEFAULT_PROTOCOL: StreamProtocol +RTMP: StreamProtocol +H264_720P_30: EncodingOptionsPreset +H264_720P_60: EncodingOptionsPreset +H264_1080P_30: EncodingOptionsPreset +H264_1080P_60: EncodingOptionsPreset +PORTRAIT_H264_720P_30: EncodingOptionsPreset +PORTRAIT_H264_720P_60: EncodingOptionsPreset +PORTRAIT_H264_1080P_30: EncodingOptionsPreset +PORTRAIT_H264_1080P_60: EncodingOptionsPreset +EGRESS_STARTING: EgressStatus +EGRESS_ACTIVE: EgressStatus +EGRESS_ENDING: EgressStatus +EGRESS_COMPLETE: EgressStatus +EGRESS_FAILED: EgressStatus +EGRESS_ABORTED: EgressStatus +EGRESS_LIMIT_REACHED: EgressStatus + +class RoomCompositeEgressRequest(_message.Message): + __slots__ = ("room_name", "layout", "audio_only", "video_only", "custom_base_url", "file", "stream", "segments", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs") + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + LAYOUT_FIELD_NUMBER: _ClassVar[int] + AUDIO_ONLY_FIELD_NUMBER: _ClassVar[int] + VIDEO_ONLY_FIELD_NUMBER: _ClassVar[int] + CUSTOM_BASE_URL_FIELD_NUMBER: _ClassVar[int] + FILE_FIELD_NUMBER: _ClassVar[int] + STREAM_FIELD_NUMBER: _ClassVar[int] + SEGMENTS_FIELD_NUMBER: _ClassVar[int] + PRESET_FIELD_NUMBER: _ClassVar[int] + ADVANCED_FIELD_NUMBER: _ClassVar[int] + FILE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + STREAM_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + SEGMENT_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + IMAGE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + room_name: str + layout: str + audio_only: bool + video_only: bool + custom_base_url: str + file: EncodedFileOutput + stream: StreamOutput + segments: SegmentedFileOutput + preset: EncodingOptionsPreset + advanced: EncodingOptions + file_outputs: _containers.RepeatedCompositeFieldContainer[EncodedFileOutput] + stream_outputs: _containers.RepeatedCompositeFieldContainer[StreamOutput] + segment_outputs: _containers.RepeatedCompositeFieldContainer[SegmentedFileOutput] + image_outputs: _containers.RepeatedCompositeFieldContainer[ImageOutput] + def __init__(self, room_name: _Optional[str] = ..., layout: _Optional[str] = ..., audio_only: bool = ..., video_only: bool = ..., custom_base_url: _Optional[str] = ..., file: _Optional[_Union[EncodedFileOutput, _Mapping]] = ..., stream: _Optional[_Union[StreamOutput, _Mapping]] = ..., segments: _Optional[_Union[SegmentedFileOutput, _Mapping]] = ..., preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., stream_outputs: _Optional[_Iterable[_Union[StreamOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ..., image_outputs: _Optional[_Iterable[_Union[ImageOutput, _Mapping]]] = ...) -> None: ... + +class WebEgressRequest(_message.Message): + __slots__ = ("url", "audio_only", "video_only", "await_start_signal", "file", "stream", "segments", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs") + URL_FIELD_NUMBER: _ClassVar[int] + AUDIO_ONLY_FIELD_NUMBER: _ClassVar[int] + VIDEO_ONLY_FIELD_NUMBER: _ClassVar[int] + AWAIT_START_SIGNAL_FIELD_NUMBER: _ClassVar[int] + FILE_FIELD_NUMBER: _ClassVar[int] + STREAM_FIELD_NUMBER: _ClassVar[int] + SEGMENTS_FIELD_NUMBER: _ClassVar[int] + PRESET_FIELD_NUMBER: _ClassVar[int] + ADVANCED_FIELD_NUMBER: _ClassVar[int] + FILE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + STREAM_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + SEGMENT_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + IMAGE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + url: str + audio_only: bool + video_only: bool + await_start_signal: bool + file: EncodedFileOutput + stream: StreamOutput + segments: SegmentedFileOutput + preset: EncodingOptionsPreset + advanced: EncodingOptions + file_outputs: _containers.RepeatedCompositeFieldContainer[EncodedFileOutput] + stream_outputs: _containers.RepeatedCompositeFieldContainer[StreamOutput] + segment_outputs: _containers.RepeatedCompositeFieldContainer[SegmentedFileOutput] + image_outputs: _containers.RepeatedCompositeFieldContainer[ImageOutput] + def __init__(self, url: _Optional[str] = ..., audio_only: bool = ..., video_only: bool = ..., await_start_signal: bool = ..., file: _Optional[_Union[EncodedFileOutput, _Mapping]] = ..., stream: _Optional[_Union[StreamOutput, _Mapping]] = ..., segments: _Optional[_Union[SegmentedFileOutput, _Mapping]] = ..., preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., stream_outputs: _Optional[_Iterable[_Union[StreamOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ..., image_outputs: _Optional[_Iterable[_Union[ImageOutput, _Mapping]]] = ...) -> None: ... + +class ParticipantEgressRequest(_message.Message): + __slots__ = ("room_name", "identity", "screen_share", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs") + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + IDENTITY_FIELD_NUMBER: _ClassVar[int] + SCREEN_SHARE_FIELD_NUMBER: _ClassVar[int] + PRESET_FIELD_NUMBER: _ClassVar[int] + ADVANCED_FIELD_NUMBER: _ClassVar[int] + FILE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + STREAM_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + SEGMENT_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + IMAGE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + room_name: str + identity: str + screen_share: bool + preset: EncodingOptionsPreset + advanced: EncodingOptions + file_outputs: _containers.RepeatedCompositeFieldContainer[EncodedFileOutput] + stream_outputs: _containers.RepeatedCompositeFieldContainer[StreamOutput] + segment_outputs: _containers.RepeatedCompositeFieldContainer[SegmentedFileOutput] + image_outputs: _containers.RepeatedCompositeFieldContainer[ImageOutput] + def __init__(self, room_name: _Optional[str] = ..., identity: _Optional[str] = ..., screen_share: bool = ..., preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., stream_outputs: _Optional[_Iterable[_Union[StreamOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ..., image_outputs: _Optional[_Iterable[_Union[ImageOutput, _Mapping]]] = ...) -> None: ... + +class TrackCompositeEgressRequest(_message.Message): + __slots__ = ("room_name", "audio_track_id", "video_track_id", "file", "stream", "segments", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs") + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + AUDIO_TRACK_ID_FIELD_NUMBER: _ClassVar[int] + VIDEO_TRACK_ID_FIELD_NUMBER: _ClassVar[int] + FILE_FIELD_NUMBER: _ClassVar[int] + STREAM_FIELD_NUMBER: _ClassVar[int] + SEGMENTS_FIELD_NUMBER: _ClassVar[int] + PRESET_FIELD_NUMBER: _ClassVar[int] + ADVANCED_FIELD_NUMBER: _ClassVar[int] + FILE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + STREAM_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + SEGMENT_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + IMAGE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + room_name: str + audio_track_id: str + video_track_id: str + file: EncodedFileOutput + stream: StreamOutput + segments: SegmentedFileOutput + preset: EncodingOptionsPreset + advanced: EncodingOptions + file_outputs: _containers.RepeatedCompositeFieldContainer[EncodedFileOutput] + stream_outputs: _containers.RepeatedCompositeFieldContainer[StreamOutput] + segment_outputs: _containers.RepeatedCompositeFieldContainer[SegmentedFileOutput] + image_outputs: _containers.RepeatedCompositeFieldContainer[ImageOutput] + def __init__(self, room_name: _Optional[str] = ..., audio_track_id: _Optional[str] = ..., video_track_id: _Optional[str] = ..., file: _Optional[_Union[EncodedFileOutput, _Mapping]] = ..., stream: _Optional[_Union[StreamOutput, _Mapping]] = ..., segments: _Optional[_Union[SegmentedFileOutput, _Mapping]] = ..., preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., stream_outputs: _Optional[_Iterable[_Union[StreamOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ..., image_outputs: _Optional[_Iterable[_Union[ImageOutput, _Mapping]]] = ...) -> None: ... + +class TrackEgressRequest(_message.Message): + __slots__ = ("room_name", "track_id", "file", "websocket_url") + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + TRACK_ID_FIELD_NUMBER: _ClassVar[int] + FILE_FIELD_NUMBER: _ClassVar[int] + WEBSOCKET_URL_FIELD_NUMBER: _ClassVar[int] + room_name: str + track_id: str + file: DirectFileOutput + websocket_url: str + def __init__(self, room_name: _Optional[str] = ..., track_id: _Optional[str] = ..., file: _Optional[_Union[DirectFileOutput, _Mapping]] = ..., websocket_url: _Optional[str] = ...) -> None: ... + +class EncodedFileOutput(_message.Message): + __slots__ = ("file_type", "filepath", "disable_manifest", "s3", "gcp", "azure", "aliOSS") + FILE_TYPE_FIELD_NUMBER: _ClassVar[int] + FILEPATH_FIELD_NUMBER: _ClassVar[int] + DISABLE_MANIFEST_FIELD_NUMBER: _ClassVar[int] + S3_FIELD_NUMBER: _ClassVar[int] + GCP_FIELD_NUMBER: _ClassVar[int] + AZURE_FIELD_NUMBER: _ClassVar[int] + ALIOSS_FIELD_NUMBER: _ClassVar[int] + file_type: EncodedFileType + filepath: str + disable_manifest: bool + s3: S3Upload + gcp: GCPUpload + azure: AzureBlobUpload + aliOSS: AliOSSUpload + def __init__(self, file_type: _Optional[_Union[EncodedFileType, str]] = ..., filepath: _Optional[str] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ..., aliOSS: _Optional[_Union[AliOSSUpload, _Mapping]] = ...) -> None: ... + +class SegmentedFileOutput(_message.Message): + __slots__ = ("protocol", "filename_prefix", "playlist_name", "live_playlist_name", "segment_duration", "filename_suffix", "disable_manifest", "s3", "gcp", "azure", "aliOSS") + PROTOCOL_FIELD_NUMBER: _ClassVar[int] + FILENAME_PREFIX_FIELD_NUMBER: _ClassVar[int] + PLAYLIST_NAME_FIELD_NUMBER: _ClassVar[int] + LIVE_PLAYLIST_NAME_FIELD_NUMBER: _ClassVar[int] + SEGMENT_DURATION_FIELD_NUMBER: _ClassVar[int] + FILENAME_SUFFIX_FIELD_NUMBER: _ClassVar[int] + DISABLE_MANIFEST_FIELD_NUMBER: _ClassVar[int] + S3_FIELD_NUMBER: _ClassVar[int] + GCP_FIELD_NUMBER: _ClassVar[int] + AZURE_FIELD_NUMBER: _ClassVar[int] + ALIOSS_FIELD_NUMBER: _ClassVar[int] + protocol: SegmentedFileProtocol + filename_prefix: str + playlist_name: str + live_playlist_name: str + segment_duration: int + filename_suffix: SegmentedFileSuffix + disable_manifest: bool + s3: S3Upload + gcp: GCPUpload + azure: AzureBlobUpload + aliOSS: AliOSSUpload + def __init__(self, protocol: _Optional[_Union[SegmentedFileProtocol, str]] = ..., filename_prefix: _Optional[str] = ..., playlist_name: _Optional[str] = ..., live_playlist_name: _Optional[str] = ..., segment_duration: _Optional[int] = ..., filename_suffix: _Optional[_Union[SegmentedFileSuffix, str]] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ..., aliOSS: _Optional[_Union[AliOSSUpload, _Mapping]] = ...) -> None: ... + +class DirectFileOutput(_message.Message): + __slots__ = ("filepath", "disable_manifest", "s3", "gcp", "azure", "aliOSS") + FILEPATH_FIELD_NUMBER: _ClassVar[int] + DISABLE_MANIFEST_FIELD_NUMBER: _ClassVar[int] + S3_FIELD_NUMBER: _ClassVar[int] + GCP_FIELD_NUMBER: _ClassVar[int] + AZURE_FIELD_NUMBER: _ClassVar[int] + ALIOSS_FIELD_NUMBER: _ClassVar[int] + filepath: str + disable_manifest: bool + s3: S3Upload + gcp: GCPUpload + azure: AzureBlobUpload + aliOSS: AliOSSUpload + def __init__(self, filepath: _Optional[str] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ..., aliOSS: _Optional[_Union[AliOSSUpload, _Mapping]] = ...) -> None: ... + +class ImageOutput(_message.Message): + __slots__ = ("capture_interval", "width", "height", "filename_prefix", "filename_suffix", "image_codec", "disable_manifest", "s3", "gcp", "azure", "aliOSS") + CAPTURE_INTERVAL_FIELD_NUMBER: _ClassVar[int] + WIDTH_FIELD_NUMBER: _ClassVar[int] + HEIGHT_FIELD_NUMBER: _ClassVar[int] + FILENAME_PREFIX_FIELD_NUMBER: _ClassVar[int] + FILENAME_SUFFIX_FIELD_NUMBER: _ClassVar[int] + IMAGE_CODEC_FIELD_NUMBER: _ClassVar[int] + DISABLE_MANIFEST_FIELD_NUMBER: _ClassVar[int] + S3_FIELD_NUMBER: _ClassVar[int] + GCP_FIELD_NUMBER: _ClassVar[int] + AZURE_FIELD_NUMBER: _ClassVar[int] + ALIOSS_FIELD_NUMBER: _ClassVar[int] + capture_interval: int + width: int + height: int + filename_prefix: str + filename_suffix: ImageFileSuffix + image_codec: _models.ImageCodec + disable_manifest: bool + s3: S3Upload + gcp: GCPUpload + azure: AzureBlobUpload + aliOSS: AliOSSUpload + def __init__(self, capture_interval: _Optional[int] = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., filename_prefix: _Optional[str] = ..., filename_suffix: _Optional[_Union[ImageFileSuffix, str]] = ..., image_codec: _Optional[_Union[_models.ImageCodec, str]] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ..., aliOSS: _Optional[_Union[AliOSSUpload, _Mapping]] = ...) -> None: ... + +class S3Upload(_message.Message): + __slots__ = ("access_key", "secret", "region", "endpoint", "bucket", "force_path_style", "metadata", "tagging", "content_disposition") + class MetadataEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + ACCESS_KEY_FIELD_NUMBER: _ClassVar[int] + SECRET_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_FIELD_NUMBER: _ClassVar[int] + BUCKET_FIELD_NUMBER: _ClassVar[int] + FORCE_PATH_STYLE_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + TAGGING_FIELD_NUMBER: _ClassVar[int] + CONTENT_DISPOSITION_FIELD_NUMBER: _ClassVar[int] + access_key: str + secret: str + region: str + endpoint: str + bucket: str + force_path_style: bool + metadata: _containers.ScalarMap[str, str] + tagging: str + content_disposition: str + def __init__(self, access_key: _Optional[str] = ..., secret: _Optional[str] = ..., region: _Optional[str] = ..., endpoint: _Optional[str] = ..., bucket: _Optional[str] = ..., force_path_style: bool = ..., metadata: _Optional[_Mapping[str, str]] = ..., tagging: _Optional[str] = ..., content_disposition: _Optional[str] = ...) -> None: ... + +class GCPUpload(_message.Message): + __slots__ = ("credentials", "bucket") + CREDENTIALS_FIELD_NUMBER: _ClassVar[int] + BUCKET_FIELD_NUMBER: _ClassVar[int] + credentials: str + bucket: str + def __init__(self, credentials: _Optional[str] = ..., bucket: _Optional[str] = ...) -> None: ... + +class AzureBlobUpload(_message.Message): + __slots__ = ("account_name", "account_key", "container_name") + ACCOUNT_NAME_FIELD_NUMBER: _ClassVar[int] + ACCOUNT_KEY_FIELD_NUMBER: _ClassVar[int] + CONTAINER_NAME_FIELD_NUMBER: _ClassVar[int] + account_name: str + account_key: str + container_name: str + def __init__(self, account_name: _Optional[str] = ..., account_key: _Optional[str] = ..., container_name: _Optional[str] = ...) -> None: ... + +class AliOSSUpload(_message.Message): + __slots__ = ("access_key", "secret", "region", "endpoint", "bucket") + ACCESS_KEY_FIELD_NUMBER: _ClassVar[int] + SECRET_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_FIELD_NUMBER: _ClassVar[int] + BUCKET_FIELD_NUMBER: _ClassVar[int] + access_key: str + secret: str + region: str + endpoint: str + bucket: str + def __init__(self, access_key: _Optional[str] = ..., secret: _Optional[str] = ..., region: _Optional[str] = ..., endpoint: _Optional[str] = ..., bucket: _Optional[str] = ...) -> None: ... + +class StreamOutput(_message.Message): + __slots__ = ("protocol", "urls") + PROTOCOL_FIELD_NUMBER: _ClassVar[int] + URLS_FIELD_NUMBER: _ClassVar[int] + protocol: StreamProtocol + urls: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, protocol: _Optional[_Union[StreamProtocol, str]] = ..., urls: _Optional[_Iterable[str]] = ...) -> None: ... + +class EncodingOptions(_message.Message): + __slots__ = ("width", "height", "depth", "framerate", "audio_codec", "audio_bitrate", "audio_quality", "audio_frequency", "video_codec", "video_bitrate", "video_quality", "key_frame_interval") + WIDTH_FIELD_NUMBER: _ClassVar[int] + HEIGHT_FIELD_NUMBER: _ClassVar[int] + DEPTH_FIELD_NUMBER: _ClassVar[int] + FRAMERATE_FIELD_NUMBER: _ClassVar[int] + AUDIO_CODEC_FIELD_NUMBER: _ClassVar[int] + AUDIO_BITRATE_FIELD_NUMBER: _ClassVar[int] + AUDIO_QUALITY_FIELD_NUMBER: _ClassVar[int] + AUDIO_FREQUENCY_FIELD_NUMBER: _ClassVar[int] + VIDEO_CODEC_FIELD_NUMBER: _ClassVar[int] + VIDEO_BITRATE_FIELD_NUMBER: _ClassVar[int] + VIDEO_QUALITY_FIELD_NUMBER: _ClassVar[int] + KEY_FRAME_INTERVAL_FIELD_NUMBER: _ClassVar[int] + width: int + height: int + depth: int + framerate: int + audio_codec: _models.AudioCodec + audio_bitrate: int + audio_quality: int + audio_frequency: int + video_codec: _models.VideoCodec + video_bitrate: int + video_quality: int + key_frame_interval: float + def __init__(self, width: _Optional[int] = ..., height: _Optional[int] = ..., depth: _Optional[int] = ..., framerate: _Optional[int] = ..., audio_codec: _Optional[_Union[_models.AudioCodec, str]] = ..., audio_bitrate: _Optional[int] = ..., audio_quality: _Optional[int] = ..., audio_frequency: _Optional[int] = ..., video_codec: _Optional[_Union[_models.VideoCodec, str]] = ..., video_bitrate: _Optional[int] = ..., video_quality: _Optional[int] = ..., key_frame_interval: _Optional[float] = ...) -> None: ... + +class UpdateLayoutRequest(_message.Message): + __slots__ = ("egress_id", "layout") + EGRESS_ID_FIELD_NUMBER: _ClassVar[int] + LAYOUT_FIELD_NUMBER: _ClassVar[int] + egress_id: str + layout: str + def __init__(self, egress_id: _Optional[str] = ..., layout: _Optional[str] = ...) -> None: ... + +class UpdateStreamRequest(_message.Message): + __slots__ = ("egress_id", "add_output_urls", "remove_output_urls") + EGRESS_ID_FIELD_NUMBER: _ClassVar[int] + ADD_OUTPUT_URLS_FIELD_NUMBER: _ClassVar[int] + REMOVE_OUTPUT_URLS_FIELD_NUMBER: _ClassVar[int] + egress_id: str + add_output_urls: _containers.RepeatedScalarFieldContainer[str] + remove_output_urls: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, egress_id: _Optional[str] = ..., add_output_urls: _Optional[_Iterable[str]] = ..., remove_output_urls: _Optional[_Iterable[str]] = ...) -> None: ... + +class ListEgressRequest(_message.Message): + __slots__ = ("room_name", "egress_id", "active") + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + EGRESS_ID_FIELD_NUMBER: _ClassVar[int] + ACTIVE_FIELD_NUMBER: _ClassVar[int] + room_name: str + egress_id: str + active: bool + def __init__(self, room_name: _Optional[str] = ..., egress_id: _Optional[str] = ..., active: bool = ...) -> None: ... + +class ListEgressResponse(_message.Message): + __slots__ = ("items",) + ITEMS_FIELD_NUMBER: _ClassVar[int] + items: _containers.RepeatedCompositeFieldContainer[EgressInfo] + def __init__(self, items: _Optional[_Iterable[_Union[EgressInfo, _Mapping]]] = ...) -> None: ... + +class StopEgressRequest(_message.Message): + __slots__ = ("egress_id",) + EGRESS_ID_FIELD_NUMBER: _ClassVar[int] + egress_id: str + def __init__(self, egress_id: _Optional[str] = ...) -> None: ... + +class EgressInfo(_message.Message): + __slots__ = ("egress_id", "room_id", "room_name", "status", "started_at", "ended_at", "updated_at", "error", "room_composite", "web", "participant", "track_composite", "track", "stream", "file", "segments", "stream_results", "file_results", "segment_results", "image_results") + EGRESS_ID_FIELD_NUMBER: _ClassVar[int] + ROOM_ID_FIELD_NUMBER: _ClassVar[int] + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + ENDED_AT_FIELD_NUMBER: _ClassVar[int] + UPDATED_AT_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + ROOM_COMPOSITE_FIELD_NUMBER: _ClassVar[int] + WEB_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_FIELD_NUMBER: _ClassVar[int] + TRACK_COMPOSITE_FIELD_NUMBER: _ClassVar[int] + TRACK_FIELD_NUMBER: _ClassVar[int] + STREAM_FIELD_NUMBER: _ClassVar[int] + FILE_FIELD_NUMBER: _ClassVar[int] + SEGMENTS_FIELD_NUMBER: _ClassVar[int] + STREAM_RESULTS_FIELD_NUMBER: _ClassVar[int] + FILE_RESULTS_FIELD_NUMBER: _ClassVar[int] + SEGMENT_RESULTS_FIELD_NUMBER: _ClassVar[int] + IMAGE_RESULTS_FIELD_NUMBER: _ClassVar[int] + egress_id: str + room_id: str + room_name: str + status: EgressStatus + started_at: int + ended_at: int + updated_at: int + error: str + room_composite: RoomCompositeEgressRequest + web: WebEgressRequest + participant: ParticipantEgressRequest + track_composite: TrackCompositeEgressRequest + track: TrackEgressRequest + stream: StreamInfoList + file: FileInfo + segments: SegmentsInfo + stream_results: _containers.RepeatedCompositeFieldContainer[StreamInfo] + file_results: _containers.RepeatedCompositeFieldContainer[FileInfo] + segment_results: _containers.RepeatedCompositeFieldContainer[SegmentsInfo] + image_results: _containers.RepeatedCompositeFieldContainer[ImagesInfo] + def __init__(self, egress_id: _Optional[str] = ..., room_id: _Optional[str] = ..., room_name: _Optional[str] = ..., status: _Optional[_Union[EgressStatus, str]] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., updated_at: _Optional[int] = ..., error: _Optional[str] = ..., room_composite: _Optional[_Union[RoomCompositeEgressRequest, _Mapping]] = ..., web: _Optional[_Union[WebEgressRequest, _Mapping]] = ..., participant: _Optional[_Union[ParticipantEgressRequest, _Mapping]] = ..., track_composite: _Optional[_Union[TrackCompositeEgressRequest, _Mapping]] = ..., track: _Optional[_Union[TrackEgressRequest, _Mapping]] = ..., stream: _Optional[_Union[StreamInfoList, _Mapping]] = ..., file: _Optional[_Union[FileInfo, _Mapping]] = ..., segments: _Optional[_Union[SegmentsInfo, _Mapping]] = ..., stream_results: _Optional[_Iterable[_Union[StreamInfo, _Mapping]]] = ..., file_results: _Optional[_Iterable[_Union[FileInfo, _Mapping]]] = ..., segment_results: _Optional[_Iterable[_Union[SegmentsInfo, _Mapping]]] = ..., image_results: _Optional[_Iterable[_Union[ImagesInfo, _Mapping]]] = ...) -> None: ... + +class StreamInfoList(_message.Message): + __slots__ = ("info",) + INFO_FIELD_NUMBER: _ClassVar[int] + info: _containers.RepeatedCompositeFieldContainer[StreamInfo] + def __init__(self, info: _Optional[_Iterable[_Union[StreamInfo, _Mapping]]] = ...) -> None: ... + +class StreamInfo(_message.Message): + __slots__ = ("url", "started_at", "ended_at", "duration", "status", "error") + class Status(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ACTIVE: _ClassVar[StreamInfo.Status] + FINISHED: _ClassVar[StreamInfo.Status] + FAILED: _ClassVar[StreamInfo.Status] + ACTIVE: StreamInfo.Status + FINISHED: StreamInfo.Status + FAILED: StreamInfo.Status + URL_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + ENDED_AT_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + url: str + started_at: int + ended_at: int + duration: int + status: StreamInfo.Status + error: str + def __init__(self, url: _Optional[str] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., duration: _Optional[int] = ..., status: _Optional[_Union[StreamInfo.Status, str]] = ..., error: _Optional[str] = ...) -> None: ... + +class FileInfo(_message.Message): + __slots__ = ("filename", "started_at", "ended_at", "duration", "size", "location") + FILENAME_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + ENDED_AT_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + SIZE_FIELD_NUMBER: _ClassVar[int] + LOCATION_FIELD_NUMBER: _ClassVar[int] + filename: str + started_at: int + ended_at: int + duration: int + size: int + location: str + def __init__(self, filename: _Optional[str] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., duration: _Optional[int] = ..., size: _Optional[int] = ..., location: _Optional[str] = ...) -> None: ... + +class SegmentsInfo(_message.Message): + __slots__ = ("playlist_name", "live_playlist_name", "duration", "size", "playlist_location", "live_playlist_location", "segment_count", "started_at", "ended_at") + PLAYLIST_NAME_FIELD_NUMBER: _ClassVar[int] + LIVE_PLAYLIST_NAME_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + SIZE_FIELD_NUMBER: _ClassVar[int] + PLAYLIST_LOCATION_FIELD_NUMBER: _ClassVar[int] + LIVE_PLAYLIST_LOCATION_FIELD_NUMBER: _ClassVar[int] + SEGMENT_COUNT_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + ENDED_AT_FIELD_NUMBER: _ClassVar[int] + playlist_name: str + live_playlist_name: str + duration: int + size: int + playlist_location: str + live_playlist_location: str + segment_count: int + started_at: int + ended_at: int + def __init__(self, playlist_name: _Optional[str] = ..., live_playlist_name: _Optional[str] = ..., duration: _Optional[int] = ..., size: _Optional[int] = ..., playlist_location: _Optional[str] = ..., live_playlist_location: _Optional[str] = ..., segment_count: _Optional[int] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ...) -> None: ... + +class ImagesInfo(_message.Message): + __slots__ = ("image_count", "started_at", "ended_at") + IMAGE_COUNT_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + ENDED_AT_FIELD_NUMBER: _ClassVar[int] + image_count: int + started_at: int + ended_at: int + def __init__(self, image_count: _Optional[int] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ...) -> None: ... + +class AutoParticipantEgress(_message.Message): + __slots__ = ("preset", "advanced", "file_outputs", "segment_outputs") + PRESET_FIELD_NUMBER: _ClassVar[int] + ADVANCED_FIELD_NUMBER: _ClassVar[int] + FILE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + SEGMENT_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + preset: EncodingOptionsPreset + advanced: EncodingOptions + file_outputs: _containers.RepeatedCompositeFieldContainer[EncodedFileOutput] + segment_outputs: _containers.RepeatedCompositeFieldContainer[SegmentedFileOutput] + def __init__(self, preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ...) -> None: ... + +class AutoTrackEgress(_message.Message): + __slots__ = ("filepath", "disable_manifest", "s3", "gcp", "azure") + FILEPATH_FIELD_NUMBER: _ClassVar[int] + DISABLE_MANIFEST_FIELD_NUMBER: _ClassVar[int] + S3_FIELD_NUMBER: _ClassVar[int] + GCP_FIELD_NUMBER: _ClassVar[int] + AZURE_FIELD_NUMBER: _ClassVar[int] + filepath: str + disable_manifest: bool + s3: S3Upload + gcp: GCPUpload + azure: AzureBlobUpload + def __init__(self, filepath: _Optional[str] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/ingress.py b/livekit-protocol/livekit/protocol/ingress.py index 695dff70..e4dc58b5 100644 --- a/livekit-protocol/livekit/protocol/ingress.py +++ b/livekit-protocol/livekit/protocol/ingress.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_ingress.proto -# Protobuf Python Version: 4.25.2 +# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool diff --git a/livekit-protocol/livekit/protocol/ingress.pyi b/livekit-protocol/livekit/protocol/ingress.pyi index 314e1b73..0be423ce 100644 --- a/livekit-protocol/livekit/protocol/ingress.pyi +++ b/livekit-protocol/livekit/protocol/ingress.pyi @@ -1,542 +1,245 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2023 LiveKit, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -from . import models -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _IngressInput: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _IngressInputEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IngressInput.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - RTMP_INPUT: _IngressInput.ValueType # 0 - WHIP_INPUT: _IngressInput.ValueType # 1 - URL_INPUT: _IngressInput.ValueType # 2 - """Pull from the provided URL. Only HTTP url are supported, serving either a single media file or a HLS stream""" - -class IngressInput(_IngressInput, metaclass=_IngressInputEnumTypeWrapper): ... - -RTMP_INPUT: IngressInput.ValueType # 0 -WHIP_INPUT: IngressInput.ValueType # 1 -URL_INPUT: IngressInput.ValueType # 2 -"""Pull from the provided URL. Only HTTP url are supported, serving either a single media file or a HLS stream""" -global___IngressInput = IngressInput - -class _IngressAudioEncodingPreset: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _IngressAudioEncodingPresetEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IngressAudioEncodingPreset.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - OPUS_STEREO_96KBPS: _IngressAudioEncodingPreset.ValueType # 0 - """OPUS, 2 channels, 96kbps""" - OPUS_MONO_64KBS: _IngressAudioEncodingPreset.ValueType # 1 - """OPUS, 1 channel, 64kbps""" - -class IngressAudioEncodingPreset(_IngressAudioEncodingPreset, metaclass=_IngressAudioEncodingPresetEnumTypeWrapper): ... - -OPUS_STEREO_96KBPS: IngressAudioEncodingPreset.ValueType # 0 -"""OPUS, 2 channels, 96kbps""" -OPUS_MONO_64KBS: IngressAudioEncodingPreset.ValueType # 1 -"""OPUS, 1 channel, 64kbps""" -global___IngressAudioEncodingPreset = IngressAudioEncodingPreset - -class _IngressVideoEncodingPreset: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _IngressVideoEncodingPresetEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IngressVideoEncodingPreset.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - H264_720P_30FPS_3_LAYERS: _IngressVideoEncodingPreset.ValueType # 0 - """1280x720, 30fps, 1900kbps main layer, 3 layers total""" - H264_1080P_30FPS_3_LAYERS: _IngressVideoEncodingPreset.ValueType # 1 - """1980x1080, 30fps, 3500kbps main layer, 3 layers total""" - H264_540P_25FPS_2_LAYERS: _IngressVideoEncodingPreset.ValueType # 2 - """ 960x540, 25fps, 1000kbps main layer, 2 layers total""" - H264_720P_30FPS_1_LAYER: _IngressVideoEncodingPreset.ValueType # 3 - """1280x720, 30fps, 1900kbps, no simulcast""" - H264_1080P_30FPS_1_LAYER: _IngressVideoEncodingPreset.ValueType # 4 - """1980x1080, 30fps, 3500kbps, no simulcast""" - H264_720P_30FPS_3_LAYERS_HIGH_MOTION: _IngressVideoEncodingPreset.ValueType # 5 - """1280x720, 30fps, 2500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content""" - H264_1080P_30FPS_3_LAYERS_HIGH_MOTION: _IngressVideoEncodingPreset.ValueType # 6 - """1980x1080, 30fps, 4500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content""" - H264_540P_25FPS_2_LAYERS_HIGH_MOTION: _IngressVideoEncodingPreset.ValueType # 7 - """ 960x540, 25fps, 1300kbps main layer, 2 layers total, higher bitrate for high motion, harder to encode content""" - H264_720P_30FPS_1_LAYER_HIGH_MOTION: _IngressVideoEncodingPreset.ValueType # 8 - """1280x720, 30fps, 2500kbps, no simulcast, higher bitrate for high motion, harder to encode content""" - H264_1080P_30FPS_1_LAYER_HIGH_MOTION: _IngressVideoEncodingPreset.ValueType # 9 - """1980x1080, 30fps, 4500kbps, no simulcast, higher bitrate for high motion, harder to encode content""" - -class IngressVideoEncodingPreset(_IngressVideoEncodingPreset, metaclass=_IngressVideoEncodingPresetEnumTypeWrapper): ... - -H264_720P_30FPS_3_LAYERS: IngressVideoEncodingPreset.ValueType # 0 -"""1280x720, 30fps, 1900kbps main layer, 3 layers total""" -H264_1080P_30FPS_3_LAYERS: IngressVideoEncodingPreset.ValueType # 1 -"""1980x1080, 30fps, 3500kbps main layer, 3 layers total""" -H264_540P_25FPS_2_LAYERS: IngressVideoEncodingPreset.ValueType # 2 -""" 960x540, 25fps, 1000kbps main layer, 2 layers total""" -H264_720P_30FPS_1_LAYER: IngressVideoEncodingPreset.ValueType # 3 -"""1280x720, 30fps, 1900kbps, no simulcast""" -H264_1080P_30FPS_1_LAYER: IngressVideoEncodingPreset.ValueType # 4 -"""1980x1080, 30fps, 3500kbps, no simulcast""" -H264_720P_30FPS_3_LAYERS_HIGH_MOTION: IngressVideoEncodingPreset.ValueType # 5 -"""1280x720, 30fps, 2500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content""" -H264_1080P_30FPS_3_LAYERS_HIGH_MOTION: IngressVideoEncodingPreset.ValueType # 6 -"""1980x1080, 30fps, 4500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content""" -H264_540P_25FPS_2_LAYERS_HIGH_MOTION: IngressVideoEncodingPreset.ValueType # 7 -""" 960x540, 25fps, 1300kbps main layer, 2 layers total, higher bitrate for high motion, harder to encode content""" -H264_720P_30FPS_1_LAYER_HIGH_MOTION: IngressVideoEncodingPreset.ValueType # 8 -"""1280x720, 30fps, 2500kbps, no simulcast, higher bitrate for high motion, harder to encode content""" -H264_1080P_30FPS_1_LAYER_HIGH_MOTION: IngressVideoEncodingPreset.ValueType # 9 -"""1980x1080, 30fps, 4500kbps, no simulcast, higher bitrate for high motion, harder to encode content""" -global___IngressVideoEncodingPreset = IngressVideoEncodingPreset - -@typing_extensions.final -class CreateIngressRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - INPUT_TYPE_FIELD_NUMBER: builtins.int - URL_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - ROOM_NAME_FIELD_NUMBER: builtins.int - PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int - PARTICIPANT_NAME_FIELD_NUMBER: builtins.int - BYPASS_TRANSCODING_FIELD_NUMBER: builtins.int - AUDIO_FIELD_NUMBER: builtins.int - VIDEO_FIELD_NUMBER: builtins.int - input_type: global___IngressInput.ValueType - url: builtins.str - """Where to pull media from, only for URL input type""" - name: builtins.str - """User provided identifier for the ingress""" - room_name: builtins.str - """room to publish to""" - participant_identity: builtins.str - """publish as participant""" - participant_name: builtins.str - """name of publishing participant (used for display only)""" - bypass_transcoding: builtins.bool - """whether to pass through the incoming media without transcoding, only compatible with some input types""" - @property - def audio(self) -> global___IngressAudioOptions: ... - @property - def video(self) -> global___IngressVideoOptions: ... - def __init__( - self, - *, - input_type: global___IngressInput.ValueType = ..., - url: builtins.str = ..., - name: builtins.str = ..., - room_name: builtins.str = ..., - participant_identity: builtins.str = ..., - participant_name: builtins.str = ..., - bypass_transcoding: builtins.bool = ..., - audio: global___IngressAudioOptions | None = ..., - video: global___IngressVideoOptions | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["audio", b"audio", "video", b"video"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["audio", b"audio", "bypass_transcoding", b"bypass_transcoding", "input_type", b"input_type", "name", b"name", "participant_identity", b"participant_identity", "participant_name", b"participant_name", "room_name", b"room_name", "url", b"url", "video", b"video"]) -> None: ... - -global___CreateIngressRequest = CreateIngressRequest - -@typing_extensions.final -class IngressAudioOptions(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NAME_FIELD_NUMBER: builtins.int - SOURCE_FIELD_NUMBER: builtins.int - PRESET_FIELD_NUMBER: builtins.int - OPTIONS_FIELD_NUMBER: builtins.int - name: builtins.str - source: models.TrackSource.ValueType - preset: global___IngressAudioEncodingPreset.ValueType - @property - def options(self) -> global___IngressAudioEncodingOptions: ... - def __init__( - self, - *, - name: builtins.str = ..., - source: models.TrackSource.ValueType = ..., - preset: global___IngressAudioEncodingPreset.ValueType = ..., - options: global___IngressAudioEncodingOptions | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["encoding_options", b"encoding_options", "options", b"options", "preset", b"preset"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["encoding_options", b"encoding_options", "name", b"name", "options", b"options", "preset", b"preset", "source", b"source"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["encoding_options", b"encoding_options"]) -> typing_extensions.Literal["preset", "options"] | None: ... - -global___IngressAudioOptions = IngressAudioOptions - -@typing_extensions.final -class IngressVideoOptions(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NAME_FIELD_NUMBER: builtins.int - SOURCE_FIELD_NUMBER: builtins.int - PRESET_FIELD_NUMBER: builtins.int - OPTIONS_FIELD_NUMBER: builtins.int - name: builtins.str - source: models.TrackSource.ValueType - preset: global___IngressVideoEncodingPreset.ValueType - @property - def options(self) -> global___IngressVideoEncodingOptions: ... - def __init__( - self, - *, - name: builtins.str = ..., - source: models.TrackSource.ValueType = ..., - preset: global___IngressVideoEncodingPreset.ValueType = ..., - options: global___IngressVideoEncodingOptions | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["encoding_options", b"encoding_options", "options", b"options", "preset", b"preset"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["encoding_options", b"encoding_options", "name", b"name", "options", b"options", "preset", b"preset", "source", b"source"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["encoding_options", b"encoding_options"]) -> typing_extensions.Literal["preset", "options"] | None: ... - -global___IngressVideoOptions = IngressVideoOptions - -@typing_extensions.final -class IngressAudioEncodingOptions(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - AUDIO_CODEC_FIELD_NUMBER: builtins.int - BITRATE_FIELD_NUMBER: builtins.int - DISABLE_DTX_FIELD_NUMBER: builtins.int - CHANNELS_FIELD_NUMBER: builtins.int - audio_codec: models.AudioCodec.ValueType - """desired audio codec to publish to room""" - bitrate: builtins.int - disable_dtx: builtins.bool - channels: builtins.int - def __init__( - self, - *, - audio_codec: models.AudioCodec.ValueType = ..., - bitrate: builtins.int = ..., - disable_dtx: builtins.bool = ..., - channels: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["audio_codec", b"audio_codec", "bitrate", b"bitrate", "channels", b"channels", "disable_dtx", b"disable_dtx"]) -> None: ... - -global___IngressAudioEncodingOptions = IngressAudioEncodingOptions - -@typing_extensions.final -class IngressVideoEncodingOptions(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - VIDEO_CODEC_FIELD_NUMBER: builtins.int - FRAME_RATE_FIELD_NUMBER: builtins.int - LAYERS_FIELD_NUMBER: builtins.int - video_codec: models.VideoCodec.ValueType - """desired codec to publish to room""" - frame_rate: builtins.float - @property - def layers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[models.VideoLayer]: - """simulcast layers to publish, when empty, should usually be set to layers at 1/2 and 1/4 of the dimensions""" - def __init__( - self, - *, - video_codec: models.VideoCodec.ValueType = ..., - frame_rate: builtins.float = ..., - layers: collections.abc.Iterable[models.VideoLayer] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["frame_rate", b"frame_rate", "layers", b"layers", "video_codec", b"video_codec"]) -> None: ... - -global___IngressVideoEncodingOptions = IngressVideoEncodingOptions - -@typing_extensions.final -class IngressInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - INGRESS_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - STREAM_KEY_FIELD_NUMBER: builtins.int - URL_FIELD_NUMBER: builtins.int - INPUT_TYPE_FIELD_NUMBER: builtins.int - BYPASS_TRANSCODING_FIELD_NUMBER: builtins.int - AUDIO_FIELD_NUMBER: builtins.int - VIDEO_FIELD_NUMBER: builtins.int - ROOM_NAME_FIELD_NUMBER: builtins.int - PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int - PARTICIPANT_NAME_FIELD_NUMBER: builtins.int - REUSABLE_FIELD_NUMBER: builtins.int - STATE_FIELD_NUMBER: builtins.int - ingress_id: builtins.str - name: builtins.str - stream_key: builtins.str - url: builtins.str - """URL to point the encoder to for push (RTMP, WHIP), or location to pull media from for pull (URL)""" - input_type: global___IngressInput.ValueType - """for RTMP input, it'll be a rtmp:// URL - for FILE input, it'll be a http:// URL - for SRT input, it'll be a srt:// URL - """ - bypass_transcoding: builtins.bool - @property - def audio(self) -> global___IngressAudioOptions: ... - @property - def video(self) -> global___IngressVideoOptions: ... - room_name: builtins.str - participant_identity: builtins.str - participant_name: builtins.str - reusable: builtins.bool - @property - def state(self) -> global___IngressState: - """Description of error/stream non compliance and debug info for publisher otherwise (received bitrate, resolution, bandwidth)""" - def __init__( - self, - *, - ingress_id: builtins.str = ..., - name: builtins.str = ..., - stream_key: builtins.str = ..., - url: builtins.str = ..., - input_type: global___IngressInput.ValueType = ..., - bypass_transcoding: builtins.bool = ..., - audio: global___IngressAudioOptions | None = ..., - video: global___IngressVideoOptions | None = ..., - room_name: builtins.str = ..., - participant_identity: builtins.str = ..., - participant_name: builtins.str = ..., - reusable: builtins.bool = ..., - state: global___IngressState | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["audio", b"audio", "state", b"state", "video", b"video"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["audio", b"audio", "bypass_transcoding", b"bypass_transcoding", "ingress_id", b"ingress_id", "input_type", b"input_type", "name", b"name", "participant_identity", b"participant_identity", "participant_name", b"participant_name", "reusable", b"reusable", "room_name", b"room_name", "state", b"state", "stream_key", b"stream_key", "url", b"url", "video", b"video"]) -> None: ... - -global___IngressInfo = IngressInfo - -@typing_extensions.final -class IngressState(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Status: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _StatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[IngressState._Status.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - ENDPOINT_INACTIVE: IngressState._Status.ValueType # 0 - ENDPOINT_BUFFERING: IngressState._Status.ValueType # 1 - ENDPOINT_PUBLISHING: IngressState._Status.ValueType # 2 - ENDPOINT_ERROR: IngressState._Status.ValueType # 3 - ENDPOINT_COMPLETE: IngressState._Status.ValueType # 4 - - class Status(_Status, metaclass=_StatusEnumTypeWrapper): ... - ENDPOINT_INACTIVE: IngressState.Status.ValueType # 0 - ENDPOINT_BUFFERING: IngressState.Status.ValueType # 1 - ENDPOINT_PUBLISHING: IngressState.Status.ValueType # 2 - ENDPOINT_ERROR: IngressState.Status.ValueType # 3 - ENDPOINT_COMPLETE: IngressState.Status.ValueType # 4 - - STATUS_FIELD_NUMBER: builtins.int - ERROR_FIELD_NUMBER: builtins.int - VIDEO_FIELD_NUMBER: builtins.int - AUDIO_FIELD_NUMBER: builtins.int - ROOM_ID_FIELD_NUMBER: builtins.int - STARTED_AT_FIELD_NUMBER: builtins.int - ENDED_AT_FIELD_NUMBER: builtins.int - RESOURCE_ID_FIELD_NUMBER: builtins.int - TRACKS_FIELD_NUMBER: builtins.int - status: global___IngressState.Status.ValueType - error: builtins.str - """Error/non compliance description if any""" - @property - def video(self) -> global___InputVideoState: ... - @property - def audio(self) -> global___InputAudioState: ... - room_id: builtins.str - """ID of the current/previous room published to""" - started_at: builtins.int - ended_at: builtins.int - resource_id: builtins.str - @property - def tracks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[models.TrackInfo]: ... - def __init__( - self, - *, - status: global___IngressState.Status.ValueType = ..., - error: builtins.str = ..., - video: global___InputVideoState | None = ..., - audio: global___InputAudioState | None = ..., - room_id: builtins.str = ..., - started_at: builtins.int = ..., - ended_at: builtins.int = ..., - resource_id: builtins.str = ..., - tracks: collections.abc.Iterable[models.TrackInfo] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["audio", b"audio", "video", b"video"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["audio", b"audio", "ended_at", b"ended_at", "error", b"error", "resource_id", b"resource_id", "room_id", b"room_id", "started_at", b"started_at", "status", b"status", "tracks", b"tracks", "video", b"video"]) -> None: ... - -global___IngressState = IngressState - -@typing_extensions.final -class InputVideoState(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MIME_TYPE_FIELD_NUMBER: builtins.int - AVERAGE_BITRATE_FIELD_NUMBER: builtins.int - WIDTH_FIELD_NUMBER: builtins.int - HEIGHT_FIELD_NUMBER: builtins.int - FRAMERATE_FIELD_NUMBER: builtins.int - mime_type: builtins.str - average_bitrate: builtins.int - width: builtins.int - height: builtins.int - framerate: builtins.float - def __init__( - self, - *, - mime_type: builtins.str = ..., - average_bitrate: builtins.int = ..., - width: builtins.int = ..., - height: builtins.int = ..., - framerate: builtins.float = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["average_bitrate", b"average_bitrate", "framerate", b"framerate", "height", b"height", "mime_type", b"mime_type", "width", b"width"]) -> None: ... - -global___InputVideoState = InputVideoState - -@typing_extensions.final -class InputAudioState(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MIME_TYPE_FIELD_NUMBER: builtins.int - AVERAGE_BITRATE_FIELD_NUMBER: builtins.int - CHANNELS_FIELD_NUMBER: builtins.int - SAMPLE_RATE_FIELD_NUMBER: builtins.int - mime_type: builtins.str - average_bitrate: builtins.int - channels: builtins.int - sample_rate: builtins.int - def __init__( - self, - *, - mime_type: builtins.str = ..., - average_bitrate: builtins.int = ..., - channels: builtins.int = ..., - sample_rate: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["average_bitrate", b"average_bitrate", "channels", b"channels", "mime_type", b"mime_type", "sample_rate", b"sample_rate"]) -> None: ... - -global___InputAudioState = InputAudioState - -@typing_extensions.final -class UpdateIngressRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - INGRESS_ID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - ROOM_NAME_FIELD_NUMBER: builtins.int - PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int - PARTICIPANT_NAME_FIELD_NUMBER: builtins.int - BYPASS_TRANSCODING_FIELD_NUMBER: builtins.int - AUDIO_FIELD_NUMBER: builtins.int - VIDEO_FIELD_NUMBER: builtins.int - ingress_id: builtins.str - name: builtins.str - room_name: builtins.str - participant_identity: builtins.str - participant_name: builtins.str - bypass_transcoding: builtins.bool - @property - def audio(self) -> global___IngressAudioOptions: ... - @property - def video(self) -> global___IngressVideoOptions: ... - def __init__( - self, - *, - ingress_id: builtins.str = ..., - name: builtins.str = ..., - room_name: builtins.str = ..., - participant_identity: builtins.str = ..., - participant_name: builtins.str = ..., - bypass_transcoding: builtins.bool | None = ..., - audio: global___IngressAudioOptions | None = ..., - video: global___IngressVideoOptions | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_bypass_transcoding", b"_bypass_transcoding", "audio", b"audio", "bypass_transcoding", b"bypass_transcoding", "video", b"video"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_bypass_transcoding", b"_bypass_transcoding", "audio", b"audio", "bypass_transcoding", b"bypass_transcoding", "ingress_id", b"ingress_id", "name", b"name", "participant_identity", b"participant_identity", "participant_name", b"participant_name", "room_name", b"room_name", "video", b"video"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["_bypass_transcoding", b"_bypass_transcoding"]) -> typing_extensions.Literal["bypass_transcoding"] | None: ... - -global___UpdateIngressRequest = UpdateIngressRequest - -@typing_extensions.final -class ListIngressRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_NAME_FIELD_NUMBER: builtins.int - INGRESS_ID_FIELD_NUMBER: builtins.int - room_name: builtins.str - """when blank, lists all ingress endpoints - (optional, filter by room name) - """ - ingress_id: builtins.str - """(optional, filter by ingress ID)""" - def __init__( - self, - *, - room_name: builtins.str = ..., - ingress_id: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ingress_id", b"ingress_id", "room_name", b"room_name"]) -> None: ... - -global___ListIngressRequest = ListIngressRequest - -@typing_extensions.final -class ListIngressResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ITEMS_FIELD_NUMBER: builtins.int - @property - def items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___IngressInfo]: ... - def __init__( - self, - *, - items: collections.abc.Iterable[global___IngressInfo] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["items", b"items"]) -> None: ... - -global___ListIngressResponse = ListIngressResponse - -@typing_extensions.final -class DeleteIngressRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - INGRESS_ID_FIELD_NUMBER: builtins.int - ingress_id: builtins.str - def __init__( - self, - *, - ingress_id: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ingress_id", b"ingress_id"]) -> None: ... - -global___DeleteIngressRequest = DeleteIngressRequest +from . import models as _models +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class IngressInput(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + RTMP_INPUT: _ClassVar[IngressInput] + WHIP_INPUT: _ClassVar[IngressInput] + URL_INPUT: _ClassVar[IngressInput] + +class IngressAudioEncodingPreset(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + OPUS_STEREO_96KBPS: _ClassVar[IngressAudioEncodingPreset] + OPUS_MONO_64KBS: _ClassVar[IngressAudioEncodingPreset] + +class IngressVideoEncodingPreset(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + H264_720P_30FPS_3_LAYERS: _ClassVar[IngressVideoEncodingPreset] + H264_1080P_30FPS_3_LAYERS: _ClassVar[IngressVideoEncodingPreset] + H264_540P_25FPS_2_LAYERS: _ClassVar[IngressVideoEncodingPreset] + H264_720P_30FPS_1_LAYER: _ClassVar[IngressVideoEncodingPreset] + H264_1080P_30FPS_1_LAYER: _ClassVar[IngressVideoEncodingPreset] + H264_720P_30FPS_3_LAYERS_HIGH_MOTION: _ClassVar[IngressVideoEncodingPreset] + H264_1080P_30FPS_3_LAYERS_HIGH_MOTION: _ClassVar[IngressVideoEncodingPreset] + H264_540P_25FPS_2_LAYERS_HIGH_MOTION: _ClassVar[IngressVideoEncodingPreset] + H264_720P_30FPS_1_LAYER_HIGH_MOTION: _ClassVar[IngressVideoEncodingPreset] + H264_1080P_30FPS_1_LAYER_HIGH_MOTION: _ClassVar[IngressVideoEncodingPreset] +RTMP_INPUT: IngressInput +WHIP_INPUT: IngressInput +URL_INPUT: IngressInput +OPUS_STEREO_96KBPS: IngressAudioEncodingPreset +OPUS_MONO_64KBS: IngressAudioEncodingPreset +H264_720P_30FPS_3_LAYERS: IngressVideoEncodingPreset +H264_1080P_30FPS_3_LAYERS: IngressVideoEncodingPreset +H264_540P_25FPS_2_LAYERS: IngressVideoEncodingPreset +H264_720P_30FPS_1_LAYER: IngressVideoEncodingPreset +H264_1080P_30FPS_1_LAYER: IngressVideoEncodingPreset +H264_720P_30FPS_3_LAYERS_HIGH_MOTION: IngressVideoEncodingPreset +H264_1080P_30FPS_3_LAYERS_HIGH_MOTION: IngressVideoEncodingPreset +H264_540P_25FPS_2_LAYERS_HIGH_MOTION: IngressVideoEncodingPreset +H264_720P_30FPS_1_LAYER_HIGH_MOTION: IngressVideoEncodingPreset +H264_1080P_30FPS_1_LAYER_HIGH_MOTION: IngressVideoEncodingPreset + +class CreateIngressRequest(_message.Message): + __slots__ = ("input_type", "url", "name", "room_name", "participant_identity", "participant_name", "bypass_transcoding", "audio", "video") + INPUT_TYPE_FIELD_NUMBER: _ClassVar[int] + URL_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_IDENTITY_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_NAME_FIELD_NUMBER: _ClassVar[int] + BYPASS_TRANSCODING_FIELD_NUMBER: _ClassVar[int] + AUDIO_FIELD_NUMBER: _ClassVar[int] + VIDEO_FIELD_NUMBER: _ClassVar[int] + input_type: IngressInput + url: str + name: str + room_name: str + participant_identity: str + participant_name: str + bypass_transcoding: bool + audio: IngressAudioOptions + video: IngressVideoOptions + def __init__(self, input_type: _Optional[_Union[IngressInput, str]] = ..., url: _Optional[str] = ..., name: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., bypass_transcoding: bool = ..., audio: _Optional[_Union[IngressAudioOptions, _Mapping]] = ..., video: _Optional[_Union[IngressVideoOptions, _Mapping]] = ...) -> None: ... + +class IngressAudioOptions(_message.Message): + __slots__ = ("name", "source", "preset", "options") + NAME_FIELD_NUMBER: _ClassVar[int] + SOURCE_FIELD_NUMBER: _ClassVar[int] + PRESET_FIELD_NUMBER: _ClassVar[int] + OPTIONS_FIELD_NUMBER: _ClassVar[int] + name: str + source: _models.TrackSource + preset: IngressAudioEncodingPreset + options: IngressAudioEncodingOptions + def __init__(self, name: _Optional[str] = ..., source: _Optional[_Union[_models.TrackSource, str]] = ..., preset: _Optional[_Union[IngressAudioEncodingPreset, str]] = ..., options: _Optional[_Union[IngressAudioEncodingOptions, _Mapping]] = ...) -> None: ... + +class IngressVideoOptions(_message.Message): + __slots__ = ("name", "source", "preset", "options") + NAME_FIELD_NUMBER: _ClassVar[int] + SOURCE_FIELD_NUMBER: _ClassVar[int] + PRESET_FIELD_NUMBER: _ClassVar[int] + OPTIONS_FIELD_NUMBER: _ClassVar[int] + name: str + source: _models.TrackSource + preset: IngressVideoEncodingPreset + options: IngressVideoEncodingOptions + def __init__(self, name: _Optional[str] = ..., source: _Optional[_Union[_models.TrackSource, str]] = ..., preset: _Optional[_Union[IngressVideoEncodingPreset, str]] = ..., options: _Optional[_Union[IngressVideoEncodingOptions, _Mapping]] = ...) -> None: ... + +class IngressAudioEncodingOptions(_message.Message): + __slots__ = ("audio_codec", "bitrate", "disable_dtx", "channels") + AUDIO_CODEC_FIELD_NUMBER: _ClassVar[int] + BITRATE_FIELD_NUMBER: _ClassVar[int] + DISABLE_DTX_FIELD_NUMBER: _ClassVar[int] + CHANNELS_FIELD_NUMBER: _ClassVar[int] + audio_codec: _models.AudioCodec + bitrate: int + disable_dtx: bool + channels: int + def __init__(self, audio_codec: _Optional[_Union[_models.AudioCodec, str]] = ..., bitrate: _Optional[int] = ..., disable_dtx: bool = ..., channels: _Optional[int] = ...) -> None: ... + +class IngressVideoEncodingOptions(_message.Message): + __slots__ = ("video_codec", "frame_rate", "layers") + VIDEO_CODEC_FIELD_NUMBER: _ClassVar[int] + FRAME_RATE_FIELD_NUMBER: _ClassVar[int] + LAYERS_FIELD_NUMBER: _ClassVar[int] + video_codec: _models.VideoCodec + frame_rate: float + layers: _containers.RepeatedCompositeFieldContainer[_models.VideoLayer] + def __init__(self, video_codec: _Optional[_Union[_models.VideoCodec, str]] = ..., frame_rate: _Optional[float] = ..., layers: _Optional[_Iterable[_Union[_models.VideoLayer, _Mapping]]] = ...) -> None: ... + +class IngressInfo(_message.Message): + __slots__ = ("ingress_id", "name", "stream_key", "url", "input_type", "bypass_transcoding", "audio", "video", "room_name", "participant_identity", "participant_name", "reusable", "state") + INGRESS_ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + STREAM_KEY_FIELD_NUMBER: _ClassVar[int] + URL_FIELD_NUMBER: _ClassVar[int] + INPUT_TYPE_FIELD_NUMBER: _ClassVar[int] + BYPASS_TRANSCODING_FIELD_NUMBER: _ClassVar[int] + AUDIO_FIELD_NUMBER: _ClassVar[int] + VIDEO_FIELD_NUMBER: _ClassVar[int] + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_IDENTITY_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_NAME_FIELD_NUMBER: _ClassVar[int] + REUSABLE_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + ingress_id: str + name: str + stream_key: str + url: str + input_type: IngressInput + bypass_transcoding: bool + audio: IngressAudioOptions + video: IngressVideoOptions + room_name: str + participant_identity: str + participant_name: str + reusable: bool + state: IngressState + def __init__(self, ingress_id: _Optional[str] = ..., name: _Optional[str] = ..., stream_key: _Optional[str] = ..., url: _Optional[str] = ..., input_type: _Optional[_Union[IngressInput, str]] = ..., bypass_transcoding: bool = ..., audio: _Optional[_Union[IngressAudioOptions, _Mapping]] = ..., video: _Optional[_Union[IngressVideoOptions, _Mapping]] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., reusable: bool = ..., state: _Optional[_Union[IngressState, _Mapping]] = ...) -> None: ... + +class IngressState(_message.Message): + __slots__ = ("status", "error", "video", "audio", "room_id", "started_at", "ended_at", "resource_id", "tracks") + class Status(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ENDPOINT_INACTIVE: _ClassVar[IngressState.Status] + ENDPOINT_BUFFERING: _ClassVar[IngressState.Status] + ENDPOINT_PUBLISHING: _ClassVar[IngressState.Status] + ENDPOINT_ERROR: _ClassVar[IngressState.Status] + ENDPOINT_COMPLETE: _ClassVar[IngressState.Status] + ENDPOINT_INACTIVE: IngressState.Status + ENDPOINT_BUFFERING: IngressState.Status + ENDPOINT_PUBLISHING: IngressState.Status + ENDPOINT_ERROR: IngressState.Status + ENDPOINT_COMPLETE: IngressState.Status + STATUS_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + VIDEO_FIELD_NUMBER: _ClassVar[int] + AUDIO_FIELD_NUMBER: _ClassVar[int] + ROOM_ID_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + ENDED_AT_FIELD_NUMBER: _ClassVar[int] + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] + TRACKS_FIELD_NUMBER: _ClassVar[int] + status: IngressState.Status + error: str + video: InputVideoState + audio: InputAudioState + room_id: str + started_at: int + ended_at: int + resource_id: str + tracks: _containers.RepeatedCompositeFieldContainer[_models.TrackInfo] + def __init__(self, status: _Optional[_Union[IngressState.Status, str]] = ..., error: _Optional[str] = ..., video: _Optional[_Union[InputVideoState, _Mapping]] = ..., audio: _Optional[_Union[InputAudioState, _Mapping]] = ..., room_id: _Optional[str] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., resource_id: _Optional[str] = ..., tracks: _Optional[_Iterable[_Union[_models.TrackInfo, _Mapping]]] = ...) -> None: ... + +class InputVideoState(_message.Message): + __slots__ = ("mime_type", "average_bitrate", "width", "height", "framerate") + MIME_TYPE_FIELD_NUMBER: _ClassVar[int] + AVERAGE_BITRATE_FIELD_NUMBER: _ClassVar[int] + WIDTH_FIELD_NUMBER: _ClassVar[int] + HEIGHT_FIELD_NUMBER: _ClassVar[int] + FRAMERATE_FIELD_NUMBER: _ClassVar[int] + mime_type: str + average_bitrate: int + width: int + height: int + framerate: float + def __init__(self, mime_type: _Optional[str] = ..., average_bitrate: _Optional[int] = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., framerate: _Optional[float] = ...) -> None: ... + +class InputAudioState(_message.Message): + __slots__ = ("mime_type", "average_bitrate", "channels", "sample_rate") + MIME_TYPE_FIELD_NUMBER: _ClassVar[int] + AVERAGE_BITRATE_FIELD_NUMBER: _ClassVar[int] + CHANNELS_FIELD_NUMBER: _ClassVar[int] + SAMPLE_RATE_FIELD_NUMBER: _ClassVar[int] + mime_type: str + average_bitrate: int + channels: int + sample_rate: int + def __init__(self, mime_type: _Optional[str] = ..., average_bitrate: _Optional[int] = ..., channels: _Optional[int] = ..., sample_rate: _Optional[int] = ...) -> None: ... + +class UpdateIngressRequest(_message.Message): + __slots__ = ("ingress_id", "name", "room_name", "participant_identity", "participant_name", "bypass_transcoding", "audio", "video") + INGRESS_ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_IDENTITY_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_NAME_FIELD_NUMBER: _ClassVar[int] + BYPASS_TRANSCODING_FIELD_NUMBER: _ClassVar[int] + AUDIO_FIELD_NUMBER: _ClassVar[int] + VIDEO_FIELD_NUMBER: _ClassVar[int] + ingress_id: str + name: str + room_name: str + participant_identity: str + participant_name: str + bypass_transcoding: bool + audio: IngressAudioOptions + video: IngressVideoOptions + def __init__(self, ingress_id: _Optional[str] = ..., name: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., bypass_transcoding: bool = ..., audio: _Optional[_Union[IngressAudioOptions, _Mapping]] = ..., video: _Optional[_Union[IngressVideoOptions, _Mapping]] = ...) -> None: ... + +class ListIngressRequest(_message.Message): + __slots__ = ("room_name", "ingress_id") + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + INGRESS_ID_FIELD_NUMBER: _ClassVar[int] + room_name: str + ingress_id: str + def __init__(self, room_name: _Optional[str] = ..., ingress_id: _Optional[str] = ...) -> None: ... + +class ListIngressResponse(_message.Message): + __slots__ = ("items",) + ITEMS_FIELD_NUMBER: _ClassVar[int] + items: _containers.RepeatedCompositeFieldContainer[IngressInfo] + def __init__(self, items: _Optional[_Iterable[_Union[IngressInfo, _Mapping]]] = ...) -> None: ... + +class DeleteIngressRequest(_message.Message): + __slots__ = ("ingress_id",) + INGRESS_ID_FIELD_NUMBER: _ClassVar[int] + ingress_id: str + def __init__(self, ingress_id: _Optional[str] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/models.py b/livekit-protocol/livekit/protocol/models.py index cd7a264b..1bcd91d2 100644 --- a/livekit-protocol/livekit/protocol/models.py +++ b/livekit-protocol/livekit/protocol/models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_models.proto -# Protobuf Python Version: 4.25.2 +# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool diff --git a/livekit-protocol/livekit/protocol/models.pyi b/livekit-protocol/livekit/protocol/models.pyi index 4d660bbe..56dcfd23 100644 --- a/livekit-protocol/livekit/protocol/models.pyi +++ b/livekit-protocol/livekit/protocol/models.pyi @@ -1,1206 +1,606 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2023 LiveKit, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import google.protobuf.timestamp_pb2 -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _AudioCodec: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _AudioCodecEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AudioCodec.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEFAULT_AC: _AudioCodec.ValueType # 0 - OPUS: _AudioCodec.ValueType # 1 - AAC: _AudioCodec.ValueType # 2 - -class AudioCodec(_AudioCodec, metaclass=_AudioCodecEnumTypeWrapper): ... - -DEFAULT_AC: AudioCodec.ValueType # 0 -OPUS: AudioCodec.ValueType # 1 -AAC: AudioCodec.ValueType # 2 -global___AudioCodec = AudioCodec - -class _VideoCodec: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _VideoCodecEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_VideoCodec.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEFAULT_VC: _VideoCodec.ValueType # 0 - H264_BASELINE: _VideoCodec.ValueType # 1 - H264_MAIN: _VideoCodec.ValueType # 2 - H264_HIGH: _VideoCodec.ValueType # 3 - VP8: _VideoCodec.ValueType # 4 - -class VideoCodec(_VideoCodec, metaclass=_VideoCodecEnumTypeWrapper): ... - -DEFAULT_VC: VideoCodec.ValueType # 0 -H264_BASELINE: VideoCodec.ValueType # 1 -H264_MAIN: VideoCodec.ValueType # 2 -H264_HIGH: VideoCodec.ValueType # 3 -VP8: VideoCodec.ValueType # 4 -global___VideoCodec = VideoCodec - -class _ImageCodec: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _ImageCodecEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ImageCodec.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - IC_DEFAULT: _ImageCodec.ValueType # 0 - IC_JPEG: _ImageCodec.ValueType # 1 - -class ImageCodec(_ImageCodec, metaclass=_ImageCodecEnumTypeWrapper): ... - -IC_DEFAULT: ImageCodec.ValueType # 0 -IC_JPEG: ImageCodec.ValueType # 1 -global___ImageCodec = ImageCodec - -class _TrackType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _TrackTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TrackType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - AUDIO: _TrackType.ValueType # 0 - VIDEO: _TrackType.ValueType # 1 - DATA: _TrackType.ValueType # 2 - -class TrackType(_TrackType, metaclass=_TrackTypeEnumTypeWrapper): ... - -AUDIO: TrackType.ValueType # 0 -VIDEO: TrackType.ValueType # 1 -DATA: TrackType.ValueType # 2 -global___TrackType = TrackType - -class _TrackSource: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _TrackSourceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TrackSource.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNKNOWN: _TrackSource.ValueType # 0 - CAMERA: _TrackSource.ValueType # 1 - MICROPHONE: _TrackSource.ValueType # 2 - SCREEN_SHARE: _TrackSource.ValueType # 3 - SCREEN_SHARE_AUDIO: _TrackSource.ValueType # 4 - -class TrackSource(_TrackSource, metaclass=_TrackSourceEnumTypeWrapper): ... - -UNKNOWN: TrackSource.ValueType # 0 -CAMERA: TrackSource.ValueType # 1 -MICROPHONE: TrackSource.ValueType # 2 -SCREEN_SHARE: TrackSource.ValueType # 3 -SCREEN_SHARE_AUDIO: TrackSource.ValueType # 4 -global___TrackSource = TrackSource - -class _VideoQuality: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _VideoQualityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_VideoQuality.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - LOW: _VideoQuality.ValueType # 0 - MEDIUM: _VideoQuality.ValueType # 1 - HIGH: _VideoQuality.ValueType # 2 - OFF: _VideoQuality.ValueType # 3 - -class VideoQuality(_VideoQuality, metaclass=_VideoQualityEnumTypeWrapper): ... - -LOW: VideoQuality.ValueType # 0 -MEDIUM: VideoQuality.ValueType # 1 -HIGH: VideoQuality.ValueType # 2 -OFF: VideoQuality.ValueType # 3 -global___VideoQuality = VideoQuality - -class _ConnectionQuality: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _ConnectionQualityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ConnectionQuality.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - POOR: _ConnectionQuality.ValueType # 0 - GOOD: _ConnectionQuality.ValueType # 1 - EXCELLENT: _ConnectionQuality.ValueType # 2 - LOST: _ConnectionQuality.ValueType # 3 - -class ConnectionQuality(_ConnectionQuality, metaclass=_ConnectionQualityEnumTypeWrapper): ... - -POOR: ConnectionQuality.ValueType # 0 -GOOD: ConnectionQuality.ValueType # 1 -EXCELLENT: ConnectionQuality.ValueType # 2 -LOST: ConnectionQuality.ValueType # 3 -global___ConnectionQuality = ConnectionQuality - -class _ClientConfigSetting: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _ClientConfigSettingEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ClientConfigSetting.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNSET: _ClientConfigSetting.ValueType # 0 - DISABLED: _ClientConfigSetting.ValueType # 1 - ENABLED: _ClientConfigSetting.ValueType # 2 - -class ClientConfigSetting(_ClientConfigSetting, metaclass=_ClientConfigSettingEnumTypeWrapper): ... - -UNSET: ClientConfigSetting.ValueType # 0 -DISABLED: ClientConfigSetting.ValueType # 1 -ENABLED: ClientConfigSetting.ValueType # 2 -global___ClientConfigSetting = ClientConfigSetting - -class _DisconnectReason: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _DisconnectReasonEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DisconnectReason.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNKNOWN_REASON: _DisconnectReason.ValueType # 0 - CLIENT_INITIATED: _DisconnectReason.ValueType # 1 - DUPLICATE_IDENTITY: _DisconnectReason.ValueType # 2 - SERVER_SHUTDOWN: _DisconnectReason.ValueType # 3 - PARTICIPANT_REMOVED: _DisconnectReason.ValueType # 4 - ROOM_DELETED: _DisconnectReason.ValueType # 5 - STATE_MISMATCH: _DisconnectReason.ValueType # 6 - JOIN_FAILURE: _DisconnectReason.ValueType # 7 - -class DisconnectReason(_DisconnectReason, metaclass=_DisconnectReasonEnumTypeWrapper): ... - -UNKNOWN_REASON: DisconnectReason.ValueType # 0 -CLIENT_INITIATED: DisconnectReason.ValueType # 1 -DUPLICATE_IDENTITY: DisconnectReason.ValueType # 2 -SERVER_SHUTDOWN: DisconnectReason.ValueType # 3 -PARTICIPANT_REMOVED: DisconnectReason.ValueType # 4 -ROOM_DELETED: DisconnectReason.ValueType # 5 -STATE_MISMATCH: DisconnectReason.ValueType # 6 -JOIN_FAILURE: DisconnectReason.ValueType # 7 -global___DisconnectReason = DisconnectReason - -class _ReconnectReason: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _ReconnectReasonEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ReconnectReason.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - RR_UNKNOWN: _ReconnectReason.ValueType # 0 - RR_SIGNAL_DISCONNECTED: _ReconnectReason.ValueType # 1 - RR_PUBLISHER_FAILED: _ReconnectReason.ValueType # 2 - RR_SUBSCRIBER_FAILED: _ReconnectReason.ValueType # 3 - RR_SWITCH_CANDIDATE: _ReconnectReason.ValueType # 4 - -class ReconnectReason(_ReconnectReason, metaclass=_ReconnectReasonEnumTypeWrapper): ... - -RR_UNKNOWN: ReconnectReason.ValueType # 0 -RR_SIGNAL_DISCONNECTED: ReconnectReason.ValueType # 1 -RR_PUBLISHER_FAILED: ReconnectReason.ValueType # 2 -RR_SUBSCRIBER_FAILED: ReconnectReason.ValueType # 3 -RR_SWITCH_CANDIDATE: ReconnectReason.ValueType # 4 -global___ReconnectReason = ReconnectReason - -class _SubscriptionError: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _SubscriptionErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SubscriptionError.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - SE_UNKNOWN: _SubscriptionError.ValueType # 0 - SE_CODEC_UNSUPPORTED: _SubscriptionError.ValueType # 1 - SE_TRACK_NOTFOUND: _SubscriptionError.ValueType # 2 - -class SubscriptionError(_SubscriptionError, metaclass=_SubscriptionErrorEnumTypeWrapper): ... - -SE_UNKNOWN: SubscriptionError.ValueType # 0 -SE_CODEC_UNSUPPORTED: SubscriptionError.ValueType # 1 -SE_TRACK_NOTFOUND: SubscriptionError.ValueType # 2 -global___SubscriptionError = SubscriptionError - -@typing_extensions.final -class Room(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - SID_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - EMPTY_TIMEOUT_FIELD_NUMBER: builtins.int - MAX_PARTICIPANTS_FIELD_NUMBER: builtins.int - CREATION_TIME_FIELD_NUMBER: builtins.int - TURN_PASSWORD_FIELD_NUMBER: builtins.int - ENABLED_CODECS_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - NUM_PARTICIPANTS_FIELD_NUMBER: builtins.int - NUM_PUBLISHERS_FIELD_NUMBER: builtins.int - ACTIVE_RECORDING_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - sid: builtins.str - name: builtins.str - empty_timeout: builtins.int - max_participants: builtins.int - creation_time: builtins.int - turn_password: builtins.str - @property - def enabled_codecs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Codec]: ... - metadata: builtins.str - num_participants: builtins.int - num_publishers: builtins.int - active_recording: builtins.bool - @property - def version(self) -> global___TimedVersion: ... - def __init__( - self, - *, - sid: builtins.str = ..., - name: builtins.str = ..., - empty_timeout: builtins.int = ..., - max_participants: builtins.int = ..., - creation_time: builtins.int = ..., - turn_password: builtins.str = ..., - enabled_codecs: collections.abc.Iterable[global___Codec] | None = ..., - metadata: builtins.str = ..., - num_participants: builtins.int = ..., - num_publishers: builtins.int = ..., - active_recording: builtins.bool = ..., - version: global___TimedVersion | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["version", b"version"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["active_recording", b"active_recording", "creation_time", b"creation_time", "empty_timeout", b"empty_timeout", "enabled_codecs", b"enabled_codecs", "max_participants", b"max_participants", "metadata", b"metadata", "name", b"name", "num_participants", b"num_participants", "num_publishers", b"num_publishers", "sid", b"sid", "turn_password", b"turn_password", "version", b"version"]) -> None: ... - -global___Room = Room - -@typing_extensions.final -class Codec(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MIME_FIELD_NUMBER: builtins.int - FMTP_LINE_FIELD_NUMBER: builtins.int - mime: builtins.str - fmtp_line: builtins.str - def __init__( - self, - *, - mime: builtins.str = ..., - fmtp_line: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["fmtp_line", b"fmtp_line", "mime", b"mime"]) -> None: ... - -global___Codec = Codec - -@typing_extensions.final -class PlayoutDelay(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ENABLED_FIELD_NUMBER: builtins.int - MIN_FIELD_NUMBER: builtins.int - MAX_FIELD_NUMBER: builtins.int - enabled: builtins.bool - min: builtins.int - max: builtins.int - def __init__( - self, - *, - enabled: builtins.bool = ..., - min: builtins.int = ..., - max: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["enabled", b"enabled", "max", b"max", "min", b"min"]) -> None: ... - -global___PlayoutDelay = PlayoutDelay - -@typing_extensions.final -class ParticipantPermission(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CAN_SUBSCRIBE_FIELD_NUMBER: builtins.int - CAN_PUBLISH_FIELD_NUMBER: builtins.int - CAN_PUBLISH_DATA_FIELD_NUMBER: builtins.int - CAN_PUBLISH_SOURCES_FIELD_NUMBER: builtins.int - HIDDEN_FIELD_NUMBER: builtins.int - RECORDER_FIELD_NUMBER: builtins.int - CAN_UPDATE_METADATA_FIELD_NUMBER: builtins.int - AGENT_FIELD_NUMBER: builtins.int - can_subscribe: builtins.bool - """allow participant to subscribe to other tracks in the room""" - can_publish: builtins.bool - """allow participant to publish new tracks to room""" - can_publish_data: builtins.bool - """allow participant to publish data""" - @property - def can_publish_sources(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___TrackSource.ValueType]: - """sources that are allowed to be published""" - hidden: builtins.bool - """indicates that it's hidden to others""" - recorder: builtins.bool - """indicates it's a recorder instance""" - can_update_metadata: builtins.bool - """indicates that participant can update own metadata""" - agent: builtins.bool - """indicates that participant is an agent""" - def __init__( - self, - *, - can_subscribe: builtins.bool = ..., - can_publish: builtins.bool = ..., - can_publish_data: builtins.bool = ..., - can_publish_sources: collections.abc.Iterable[global___TrackSource.ValueType] | None = ..., - hidden: builtins.bool = ..., - recorder: builtins.bool = ..., - can_update_metadata: builtins.bool = ..., - agent: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["agent", b"agent", "can_publish", b"can_publish", "can_publish_data", b"can_publish_data", "can_publish_sources", b"can_publish_sources", "can_subscribe", b"can_subscribe", "can_update_metadata", b"can_update_metadata", "hidden", b"hidden", "recorder", b"recorder"]) -> None: ... - -global___ParticipantPermission = ParticipantPermission - -@typing_extensions.final -class ParticipantInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _State: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _StateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ParticipantInfo._State.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - JOINING: ParticipantInfo._State.ValueType # 0 - """websocket' connected, but not offered yet""" - JOINED: ParticipantInfo._State.ValueType # 1 - """server received client offer""" - ACTIVE: ParticipantInfo._State.ValueType # 2 - """ICE connectivity established""" - DISCONNECTED: ParticipantInfo._State.ValueType # 3 - """WS disconnected""" - - class State(_State, metaclass=_StateEnumTypeWrapper): ... - JOINING: ParticipantInfo.State.ValueType # 0 - """websocket' connected, but not offered yet""" - JOINED: ParticipantInfo.State.ValueType # 1 - """server received client offer""" - ACTIVE: ParticipantInfo.State.ValueType # 2 - """ICE connectivity established""" - DISCONNECTED: ParticipantInfo.State.ValueType # 3 - """WS disconnected""" - - class _Kind: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _KindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ParticipantInfo._Kind.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - STANDARD: ParticipantInfo._Kind.ValueType # 0 - """standard participants, e.g. web clients""" - INGRESS: ParticipantInfo._Kind.ValueType # 1 - """only ingests streams""" - EGRESS: ParticipantInfo._Kind.ValueType # 2 - """only consumes streams""" - SIP: ParticipantInfo._Kind.ValueType # 3 - """SIP participants""" - AGENT: ParticipantInfo._Kind.ValueType # 4 - """LiveKit agents""" - - class Kind(_Kind, metaclass=_KindEnumTypeWrapper): ... - STANDARD: ParticipantInfo.Kind.ValueType # 0 - """standard participants, e.g. web clients""" - INGRESS: ParticipantInfo.Kind.ValueType # 1 - """only ingests streams""" - EGRESS: ParticipantInfo.Kind.ValueType # 2 - """only consumes streams""" - SIP: ParticipantInfo.Kind.ValueType # 3 - """SIP participants""" - AGENT: ParticipantInfo.Kind.ValueType # 4 - """LiveKit agents""" - - SID_FIELD_NUMBER: builtins.int - IDENTITY_FIELD_NUMBER: builtins.int - STATE_FIELD_NUMBER: builtins.int - TRACKS_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - JOINED_AT_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - PERMISSION_FIELD_NUMBER: builtins.int - REGION_FIELD_NUMBER: builtins.int - IS_PUBLISHER_FIELD_NUMBER: builtins.int - KIND_FIELD_NUMBER: builtins.int - sid: builtins.str - identity: builtins.str - state: global___ParticipantInfo.State.ValueType - @property - def tracks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TrackInfo]: ... - metadata: builtins.str - joined_at: builtins.int - """timestamp when participant joined room, in seconds""" - name: builtins.str - version: builtins.int - @property - def permission(self) -> global___ParticipantPermission: ... - region: builtins.str - is_publisher: builtins.bool - """indicates the participant has an active publisher connection - and can publish to the server - """ - kind: global___ParticipantInfo.Kind.ValueType - def __init__( - self, - *, - sid: builtins.str = ..., - identity: builtins.str = ..., - state: global___ParticipantInfo.State.ValueType = ..., - tracks: collections.abc.Iterable[global___TrackInfo] | None = ..., - metadata: builtins.str = ..., - joined_at: builtins.int = ..., - name: builtins.str = ..., - version: builtins.int = ..., - permission: global___ParticipantPermission | None = ..., - region: builtins.str = ..., - is_publisher: builtins.bool = ..., - kind: global___ParticipantInfo.Kind.ValueType = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["permission", b"permission"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["identity", b"identity", "is_publisher", b"is_publisher", "joined_at", b"joined_at", "kind", b"kind", "metadata", b"metadata", "name", b"name", "permission", b"permission", "region", b"region", "sid", b"sid", "state", b"state", "tracks", b"tracks", "version", b"version"]) -> None: ... - -global___ParticipantInfo = ParticipantInfo - -@typing_extensions.final -class Encryption(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Type: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Encryption._Type.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - NONE: Encryption._Type.ValueType # 0 - GCM: Encryption._Type.ValueType # 1 - CUSTOM: Encryption._Type.ValueType # 2 - - class Type(_Type, metaclass=_TypeEnumTypeWrapper): ... - NONE: Encryption.Type.ValueType # 0 - GCM: Encryption.Type.ValueType # 1 - CUSTOM: Encryption.Type.ValueType # 2 - - def __init__( - self, - ) -> None: ... - -global___Encryption = Encryption - -@typing_extensions.final -class SimulcastCodecInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MIME_TYPE_FIELD_NUMBER: builtins.int - MID_FIELD_NUMBER: builtins.int - CID_FIELD_NUMBER: builtins.int - LAYERS_FIELD_NUMBER: builtins.int - mime_type: builtins.str - mid: builtins.str - cid: builtins.str - @property - def layers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___VideoLayer]: ... - def __init__( - self, - *, - mime_type: builtins.str = ..., - mid: builtins.str = ..., - cid: builtins.str = ..., - layers: collections.abc.Iterable[global___VideoLayer] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["cid", b"cid", "layers", b"layers", "mid", b"mid", "mime_type", b"mime_type"]) -> None: ... - -global___SimulcastCodecInfo = SimulcastCodecInfo - -@typing_extensions.final -class TrackInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - SID_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - MUTED_FIELD_NUMBER: builtins.int - WIDTH_FIELD_NUMBER: builtins.int - HEIGHT_FIELD_NUMBER: builtins.int - SIMULCAST_FIELD_NUMBER: builtins.int - DISABLE_DTX_FIELD_NUMBER: builtins.int - SOURCE_FIELD_NUMBER: builtins.int - LAYERS_FIELD_NUMBER: builtins.int - MIME_TYPE_FIELD_NUMBER: builtins.int - MID_FIELD_NUMBER: builtins.int - CODECS_FIELD_NUMBER: builtins.int - STEREO_FIELD_NUMBER: builtins.int - DISABLE_RED_FIELD_NUMBER: builtins.int - ENCRYPTION_FIELD_NUMBER: builtins.int - STREAM_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - sid: builtins.str - type: global___TrackType.ValueType - name: builtins.str - muted: builtins.bool - width: builtins.int - """original width of video (unset for audio) - clients may receive a lower resolution version with simulcast - """ - height: builtins.int - """original height of video (unset for audio)""" - simulcast: builtins.bool - """true if track is simulcasted""" - disable_dtx: builtins.bool - """true if DTX (Discontinuous Transmission) is disabled for audio""" - source: global___TrackSource.ValueType - """source of media""" - @property - def layers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___VideoLayer]: ... - mime_type: builtins.str - """mime type of codec""" - mid: builtins.str - @property - def codecs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SimulcastCodecInfo]: ... - stereo: builtins.bool - disable_red: builtins.bool - """true if RED (Redundant Encoding) is disabled for audio""" - encryption: global___Encryption.Type.ValueType - stream: builtins.str - @property - def version(self) -> global___TimedVersion: ... - def __init__( - self, - *, - sid: builtins.str = ..., - type: global___TrackType.ValueType = ..., - name: builtins.str = ..., - muted: builtins.bool = ..., - width: builtins.int = ..., - height: builtins.int = ..., - simulcast: builtins.bool = ..., - disable_dtx: builtins.bool = ..., - source: global___TrackSource.ValueType = ..., - layers: collections.abc.Iterable[global___VideoLayer] | None = ..., - mime_type: builtins.str = ..., - mid: builtins.str = ..., - codecs: collections.abc.Iterable[global___SimulcastCodecInfo] | None = ..., - stereo: builtins.bool = ..., - disable_red: builtins.bool = ..., - encryption: global___Encryption.Type.ValueType = ..., - stream: builtins.str = ..., - version: global___TimedVersion | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["version", b"version"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["codecs", b"codecs", "disable_dtx", b"disable_dtx", "disable_red", b"disable_red", "encryption", b"encryption", "height", b"height", "layers", b"layers", "mid", b"mid", "mime_type", b"mime_type", "muted", b"muted", "name", b"name", "sid", b"sid", "simulcast", b"simulcast", "source", b"source", "stereo", b"stereo", "stream", b"stream", "type", b"type", "version", b"version", "width", b"width"]) -> None: ... - -global___TrackInfo = TrackInfo - -@typing_extensions.final -class VideoLayer(google.protobuf.message.Message): - """provide information about available spatial layers""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - QUALITY_FIELD_NUMBER: builtins.int - WIDTH_FIELD_NUMBER: builtins.int - HEIGHT_FIELD_NUMBER: builtins.int - BITRATE_FIELD_NUMBER: builtins.int - SSRC_FIELD_NUMBER: builtins.int - quality: global___VideoQuality.ValueType - """for tracks with a single layer, this should be HIGH""" - width: builtins.int - height: builtins.int - bitrate: builtins.int - """target bitrate in bit per second (bps), server will measure actual""" - ssrc: builtins.int - def __init__( - self, - *, - quality: global___VideoQuality.ValueType = ..., - width: builtins.int = ..., - height: builtins.int = ..., - bitrate: builtins.int = ..., - ssrc: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["bitrate", b"bitrate", "height", b"height", "quality", b"quality", "ssrc", b"ssrc", "width", b"width"]) -> None: ... - -global___VideoLayer = VideoLayer - -@typing_extensions.final -class DataPacket(google.protobuf.message.Message): - """new DataPacket API""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Kind: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _KindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DataPacket._Kind.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - RELIABLE: DataPacket._Kind.ValueType # 0 - LOSSY: DataPacket._Kind.ValueType # 1 - - class Kind(_Kind, metaclass=_KindEnumTypeWrapper): ... - RELIABLE: DataPacket.Kind.ValueType # 0 - LOSSY: DataPacket.Kind.ValueType # 1 - - KIND_FIELD_NUMBER: builtins.int - USER_FIELD_NUMBER: builtins.int - SPEAKER_FIELD_NUMBER: builtins.int - kind: global___DataPacket.Kind.ValueType - @property - def user(self) -> global___UserPacket: ... - @property - def speaker(self) -> global___ActiveSpeakerUpdate: ... - def __init__( - self, - *, - kind: global___DataPacket.Kind.ValueType = ..., - user: global___UserPacket | None = ..., - speaker: global___ActiveSpeakerUpdate | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["speaker", b"speaker", "user", b"user", "value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["kind", b"kind", "speaker", b"speaker", "user", b"user", "value", b"value"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["value", b"value"]) -> typing_extensions.Literal["user", "speaker"] | None: ... - -global___DataPacket = DataPacket - -@typing_extensions.final -class ActiveSpeakerUpdate(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - SPEAKERS_FIELD_NUMBER: builtins.int - @property - def speakers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpeakerInfo]: ... - def __init__( - self, - *, - speakers: collections.abc.Iterable[global___SpeakerInfo] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["speakers", b"speakers"]) -> None: ... - -global___ActiveSpeakerUpdate = ActiveSpeakerUpdate - -@typing_extensions.final -class SpeakerInfo(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - SID_FIELD_NUMBER: builtins.int - LEVEL_FIELD_NUMBER: builtins.int - ACTIVE_FIELD_NUMBER: builtins.int - sid: builtins.str - level: builtins.float - """audio level, 0-1.0, 1 is loudest""" - active: builtins.bool - """true if speaker is currently active""" - def __init__( - self, - *, - sid: builtins.str = ..., - level: builtins.float = ..., - active: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["active", b"active", "level", b"level", "sid", b"sid"]) -> None: ... - -global___SpeakerInfo = SpeakerInfo - -@typing_extensions.final -class UserPacket(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PARTICIPANT_SID_FIELD_NUMBER: builtins.int - PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int - PAYLOAD_FIELD_NUMBER: builtins.int - DESTINATION_SIDS_FIELD_NUMBER: builtins.int - DESTINATION_IDENTITIES_FIELD_NUMBER: builtins.int - TOPIC_FIELD_NUMBER: builtins.int - participant_sid: builtins.str - """participant ID of user that sent the message""" - participant_identity: builtins.str - payload: builtins.bytes - """user defined payload""" - @property - def destination_sids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """the ID of the participants who will receive the message (sent to all by default)""" - @property - def destination_identities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """identities of participants who will receive the message (sent to all by default)""" - topic: builtins.str - """topic under which the message was published""" - def __init__( - self, - *, - participant_sid: builtins.str = ..., - participant_identity: builtins.str = ..., - payload: builtins.bytes = ..., - destination_sids: collections.abc.Iterable[builtins.str] | None = ..., - destination_identities: collections.abc.Iterable[builtins.str] | None = ..., - topic: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_topic", b"_topic", "topic", b"topic"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_topic", b"_topic", "destination_identities", b"destination_identities", "destination_sids", b"destination_sids", "participant_identity", b"participant_identity", "participant_sid", b"participant_sid", "payload", b"payload", "topic", b"topic"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["_topic", b"_topic"]) -> typing_extensions.Literal["topic"] | None: ... - -global___UserPacket = UserPacket - -@typing_extensions.final -class ParticipantTracks(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PARTICIPANT_SID_FIELD_NUMBER: builtins.int - TRACK_SIDS_FIELD_NUMBER: builtins.int - participant_sid: builtins.str - """participant ID of participant to whom the tracks belong""" - @property - def track_sids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... - def __init__( - self, - *, - participant_sid: builtins.str = ..., - track_sids: collections.abc.Iterable[builtins.str] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid", "track_sids", b"track_sids"]) -> None: ... - -global___ParticipantTracks = ParticipantTracks - -@typing_extensions.final -class ServerInfo(google.protobuf.message.Message): - """details about the server""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Edition: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _EditionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ServerInfo._Edition.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - Standard: ServerInfo._Edition.ValueType # 0 - Cloud: ServerInfo._Edition.ValueType # 1 - - class Edition(_Edition, metaclass=_EditionEnumTypeWrapper): ... - Standard: ServerInfo.Edition.ValueType # 0 - Cloud: ServerInfo.Edition.ValueType # 1 - - EDITION_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - PROTOCOL_FIELD_NUMBER: builtins.int - REGION_FIELD_NUMBER: builtins.int - NODE_ID_FIELD_NUMBER: builtins.int - DEBUG_INFO_FIELD_NUMBER: builtins.int - edition: global___ServerInfo.Edition.ValueType - version: builtins.str - protocol: builtins.int - region: builtins.str - node_id: builtins.str - debug_info: builtins.str - """additional debugging information. sent only if server is in development mode""" - def __init__( - self, - *, - edition: global___ServerInfo.Edition.ValueType = ..., - version: builtins.str = ..., - protocol: builtins.int = ..., - region: builtins.str = ..., - node_id: builtins.str = ..., - debug_info: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["debug_info", b"debug_info", "edition", b"edition", "node_id", b"node_id", "protocol", b"protocol", "region", b"region", "version", b"version"]) -> None: ... - -global___ServerInfo = ServerInfo - -@typing_extensions.final -class ClientInfo(google.protobuf.message.Message): - """details about the client""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _SDK: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _SDKEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ClientInfo._SDK.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNKNOWN: ClientInfo._SDK.ValueType # 0 - JS: ClientInfo._SDK.ValueType # 1 - SWIFT: ClientInfo._SDK.ValueType # 2 - ANDROID: ClientInfo._SDK.ValueType # 3 - FLUTTER: ClientInfo._SDK.ValueType # 4 - GO: ClientInfo._SDK.ValueType # 5 - UNITY: ClientInfo._SDK.ValueType # 6 - REACT_NATIVE: ClientInfo._SDK.ValueType # 7 - RUST: ClientInfo._SDK.ValueType # 8 - PYTHON: ClientInfo._SDK.ValueType # 9 - CPP: ClientInfo._SDK.ValueType # 10 - - class SDK(_SDK, metaclass=_SDKEnumTypeWrapper): ... - UNKNOWN: ClientInfo.SDK.ValueType # 0 - JS: ClientInfo.SDK.ValueType # 1 - SWIFT: ClientInfo.SDK.ValueType # 2 - ANDROID: ClientInfo.SDK.ValueType # 3 - FLUTTER: ClientInfo.SDK.ValueType # 4 - GO: ClientInfo.SDK.ValueType # 5 - UNITY: ClientInfo.SDK.ValueType # 6 - REACT_NATIVE: ClientInfo.SDK.ValueType # 7 - RUST: ClientInfo.SDK.ValueType # 8 - PYTHON: ClientInfo.SDK.ValueType # 9 - CPP: ClientInfo.SDK.ValueType # 10 - - SDK_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - PROTOCOL_FIELD_NUMBER: builtins.int - OS_FIELD_NUMBER: builtins.int - OS_VERSION_FIELD_NUMBER: builtins.int - DEVICE_MODEL_FIELD_NUMBER: builtins.int - BROWSER_FIELD_NUMBER: builtins.int - BROWSER_VERSION_FIELD_NUMBER: builtins.int - ADDRESS_FIELD_NUMBER: builtins.int - NETWORK_FIELD_NUMBER: builtins.int - sdk: global___ClientInfo.SDK.ValueType - version: builtins.str - protocol: builtins.int - os: builtins.str - os_version: builtins.str - device_model: builtins.str - browser: builtins.str - browser_version: builtins.str - address: builtins.str - network: builtins.str - """wifi, wired, cellular, vpn, empty if not known""" - def __init__( - self, - *, - sdk: global___ClientInfo.SDK.ValueType = ..., - version: builtins.str = ..., - protocol: builtins.int = ..., - os: builtins.str = ..., - os_version: builtins.str = ..., - device_model: builtins.str = ..., - browser: builtins.str = ..., - browser_version: builtins.str = ..., - address: builtins.str = ..., - network: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["address", b"address", "browser", b"browser", "browser_version", b"browser_version", "device_model", b"device_model", "network", b"network", "os", b"os", "os_version", b"os_version", "protocol", b"protocol", "sdk", b"sdk", "version", b"version"]) -> None: ... - -global___ClientInfo = ClientInfo - -@typing_extensions.final -class ClientConfiguration(google.protobuf.message.Message): - """server provided client configuration""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - VIDEO_FIELD_NUMBER: builtins.int - SCREEN_FIELD_NUMBER: builtins.int - RESUME_CONNECTION_FIELD_NUMBER: builtins.int - DISABLED_CODECS_FIELD_NUMBER: builtins.int - FORCE_RELAY_FIELD_NUMBER: builtins.int - @property - def video(self) -> global___VideoConfiguration: ... - @property - def screen(self) -> global___VideoConfiguration: ... - resume_connection: global___ClientConfigSetting.ValueType - @property - def disabled_codecs(self) -> global___DisabledCodecs: ... - force_relay: global___ClientConfigSetting.ValueType - def __init__( - self, - *, - video: global___VideoConfiguration | None = ..., - screen: global___VideoConfiguration | None = ..., - resume_connection: global___ClientConfigSetting.ValueType = ..., - disabled_codecs: global___DisabledCodecs | None = ..., - force_relay: global___ClientConfigSetting.ValueType = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["disabled_codecs", b"disabled_codecs", "screen", b"screen", "video", b"video"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["disabled_codecs", b"disabled_codecs", "force_relay", b"force_relay", "resume_connection", b"resume_connection", "screen", b"screen", "video", b"video"]) -> None: ... - -global___ClientConfiguration = ClientConfiguration - -@typing_extensions.final -class VideoConfiguration(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - HARDWARE_ENCODER_FIELD_NUMBER: builtins.int - hardware_encoder: global___ClientConfigSetting.ValueType - def __init__( - self, - *, - hardware_encoder: global___ClientConfigSetting.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["hardware_encoder", b"hardware_encoder"]) -> None: ... - -global___VideoConfiguration = VideoConfiguration - -@typing_extensions.final -class DisabledCodecs(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CODECS_FIELD_NUMBER: builtins.int - PUBLISH_FIELD_NUMBER: builtins.int - @property - def codecs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Codec]: - """disabled for both publish and subscribe""" - @property - def publish(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Codec]: - """only disable for publish""" - def __init__( - self, - *, - codecs: collections.abc.Iterable[global___Codec] | None = ..., - publish: collections.abc.Iterable[global___Codec] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["codecs", b"codecs", "publish", b"publish"]) -> None: ... - -global___DisabledCodecs = DisabledCodecs - -@typing_extensions.final -class RTPDrift(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - START_TIME_FIELD_NUMBER: builtins.int - END_TIME_FIELD_NUMBER: builtins.int - DURATION_FIELD_NUMBER: builtins.int - START_TIMESTAMP_FIELD_NUMBER: builtins.int - END_TIMESTAMP_FIELD_NUMBER: builtins.int - RTP_CLOCK_TICKS_FIELD_NUMBER: builtins.int - DRIFT_SAMPLES_FIELD_NUMBER: builtins.int - DRIFT_MS_FIELD_NUMBER: builtins.int - CLOCK_RATE_FIELD_NUMBER: builtins.int - @property - def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - @property - def end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - duration: builtins.float - start_timestamp: builtins.int - end_timestamp: builtins.int - rtp_clock_ticks: builtins.int - drift_samples: builtins.int - drift_ms: builtins.float - clock_rate: builtins.float - def __init__( - self, - *, - start_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., - end_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., - duration: builtins.float = ..., - start_timestamp: builtins.int = ..., - end_timestamp: builtins.int = ..., - rtp_clock_ticks: builtins.int = ..., - drift_samples: builtins.int = ..., - drift_ms: builtins.float = ..., - clock_rate: builtins.float = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["end_time", b"end_time", "start_time", b"start_time"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["clock_rate", b"clock_rate", "drift_ms", b"drift_ms", "drift_samples", b"drift_samples", "duration", b"duration", "end_time", b"end_time", "end_timestamp", b"end_timestamp", "rtp_clock_ticks", b"rtp_clock_ticks", "start_time", b"start_time", "start_timestamp", b"start_timestamp"]) -> None: ... - -global___RTPDrift = RTPDrift - -@typing_extensions.final -class RTPStats(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - @typing_extensions.final - class GapHistogramEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.int - value: builtins.int - def __init__( - self, - *, - key: builtins.int = ..., - value: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... - - START_TIME_FIELD_NUMBER: builtins.int - END_TIME_FIELD_NUMBER: builtins.int - DURATION_FIELD_NUMBER: builtins.int - PACKETS_FIELD_NUMBER: builtins.int - PACKET_RATE_FIELD_NUMBER: builtins.int - BYTES_FIELD_NUMBER: builtins.int - HEADER_BYTES_FIELD_NUMBER: builtins.int - BITRATE_FIELD_NUMBER: builtins.int - PACKETS_LOST_FIELD_NUMBER: builtins.int - PACKET_LOSS_RATE_FIELD_NUMBER: builtins.int - PACKET_LOSS_PERCENTAGE_FIELD_NUMBER: builtins.int - PACKETS_DUPLICATE_FIELD_NUMBER: builtins.int - PACKET_DUPLICATE_RATE_FIELD_NUMBER: builtins.int - BYTES_DUPLICATE_FIELD_NUMBER: builtins.int - HEADER_BYTES_DUPLICATE_FIELD_NUMBER: builtins.int - BITRATE_DUPLICATE_FIELD_NUMBER: builtins.int - PACKETS_PADDING_FIELD_NUMBER: builtins.int - PACKET_PADDING_RATE_FIELD_NUMBER: builtins.int - BYTES_PADDING_FIELD_NUMBER: builtins.int - HEADER_BYTES_PADDING_FIELD_NUMBER: builtins.int - BITRATE_PADDING_FIELD_NUMBER: builtins.int - PACKETS_OUT_OF_ORDER_FIELD_NUMBER: builtins.int - FRAMES_FIELD_NUMBER: builtins.int - FRAME_RATE_FIELD_NUMBER: builtins.int - JITTER_CURRENT_FIELD_NUMBER: builtins.int - JITTER_MAX_FIELD_NUMBER: builtins.int - GAP_HISTOGRAM_FIELD_NUMBER: builtins.int - NACKS_FIELD_NUMBER: builtins.int - NACK_ACKS_FIELD_NUMBER: builtins.int - NACK_MISSES_FIELD_NUMBER: builtins.int - NACK_REPEATED_FIELD_NUMBER: builtins.int - PLIS_FIELD_NUMBER: builtins.int - LAST_PLI_FIELD_NUMBER: builtins.int - FIRS_FIELD_NUMBER: builtins.int - LAST_FIR_FIELD_NUMBER: builtins.int - RTT_CURRENT_FIELD_NUMBER: builtins.int - RTT_MAX_FIELD_NUMBER: builtins.int - KEY_FRAMES_FIELD_NUMBER: builtins.int - LAST_KEY_FRAME_FIELD_NUMBER: builtins.int - LAYER_LOCK_PLIS_FIELD_NUMBER: builtins.int - LAST_LAYER_LOCK_PLI_FIELD_NUMBER: builtins.int - PACKET_DRIFT_FIELD_NUMBER: builtins.int - REPORT_DRIFT_FIELD_NUMBER: builtins.int - @property - def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - @property - def end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - duration: builtins.float - packets: builtins.int - packet_rate: builtins.float - bytes: builtins.int - header_bytes: builtins.int - bitrate: builtins.float - packets_lost: builtins.int - packet_loss_rate: builtins.float - packet_loss_percentage: builtins.float - packets_duplicate: builtins.int - packet_duplicate_rate: builtins.float - bytes_duplicate: builtins.int - header_bytes_duplicate: builtins.int - bitrate_duplicate: builtins.float - packets_padding: builtins.int - packet_padding_rate: builtins.float - bytes_padding: builtins.int - header_bytes_padding: builtins.int - bitrate_padding: builtins.float - packets_out_of_order: builtins.int - frames: builtins.int - frame_rate: builtins.float - jitter_current: builtins.float - jitter_max: builtins.float - @property - def gap_histogram(self) -> google.protobuf.internal.containers.ScalarMap[builtins.int, builtins.int]: ... - nacks: builtins.int - nack_acks: builtins.int - nack_misses: builtins.int - nack_repeated: builtins.int - plis: builtins.int - @property - def last_pli(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - firs: builtins.int - @property - def last_fir(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - rtt_current: builtins.int - rtt_max: builtins.int - key_frames: builtins.int - @property - def last_key_frame(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - layer_lock_plis: builtins.int - @property - def last_layer_lock_pli(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - @property - def packet_drift(self) -> global___RTPDrift: ... - @property - def report_drift(self) -> global___RTPDrift: - """NEXT_ID: 46""" - def __init__( - self, - *, - start_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., - end_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., - duration: builtins.float = ..., - packets: builtins.int = ..., - packet_rate: builtins.float = ..., - bytes: builtins.int = ..., - header_bytes: builtins.int = ..., - bitrate: builtins.float = ..., - packets_lost: builtins.int = ..., - packet_loss_rate: builtins.float = ..., - packet_loss_percentage: builtins.float = ..., - packets_duplicate: builtins.int = ..., - packet_duplicate_rate: builtins.float = ..., - bytes_duplicate: builtins.int = ..., - header_bytes_duplicate: builtins.int = ..., - bitrate_duplicate: builtins.float = ..., - packets_padding: builtins.int = ..., - packet_padding_rate: builtins.float = ..., - bytes_padding: builtins.int = ..., - header_bytes_padding: builtins.int = ..., - bitrate_padding: builtins.float = ..., - packets_out_of_order: builtins.int = ..., - frames: builtins.int = ..., - frame_rate: builtins.float = ..., - jitter_current: builtins.float = ..., - jitter_max: builtins.float = ..., - gap_histogram: collections.abc.Mapping[builtins.int, builtins.int] | None = ..., - nacks: builtins.int = ..., - nack_acks: builtins.int = ..., - nack_misses: builtins.int = ..., - nack_repeated: builtins.int = ..., - plis: builtins.int = ..., - last_pli: google.protobuf.timestamp_pb2.Timestamp | None = ..., - firs: builtins.int = ..., - last_fir: google.protobuf.timestamp_pb2.Timestamp | None = ..., - rtt_current: builtins.int = ..., - rtt_max: builtins.int = ..., - key_frames: builtins.int = ..., - last_key_frame: google.protobuf.timestamp_pb2.Timestamp | None = ..., - layer_lock_plis: builtins.int = ..., - last_layer_lock_pli: google.protobuf.timestamp_pb2.Timestamp | None = ..., - packet_drift: global___RTPDrift | None = ..., - report_drift: global___RTPDrift | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["end_time", b"end_time", "last_fir", b"last_fir", "last_key_frame", b"last_key_frame", "last_layer_lock_pli", b"last_layer_lock_pli", "last_pli", b"last_pli", "packet_drift", b"packet_drift", "report_drift", b"report_drift", "start_time", b"start_time"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["bitrate", b"bitrate", "bitrate_duplicate", b"bitrate_duplicate", "bitrate_padding", b"bitrate_padding", "bytes", b"bytes", "bytes_duplicate", b"bytes_duplicate", "bytes_padding", b"bytes_padding", "duration", b"duration", "end_time", b"end_time", "firs", b"firs", "frame_rate", b"frame_rate", "frames", b"frames", "gap_histogram", b"gap_histogram", "header_bytes", b"header_bytes", "header_bytes_duplicate", b"header_bytes_duplicate", "header_bytes_padding", b"header_bytes_padding", "jitter_current", b"jitter_current", "jitter_max", b"jitter_max", "key_frames", b"key_frames", "last_fir", b"last_fir", "last_key_frame", b"last_key_frame", "last_layer_lock_pli", b"last_layer_lock_pli", "last_pli", b"last_pli", "layer_lock_plis", b"layer_lock_plis", "nack_acks", b"nack_acks", "nack_misses", b"nack_misses", "nack_repeated", b"nack_repeated", "nacks", b"nacks", "packet_drift", b"packet_drift", "packet_duplicate_rate", b"packet_duplicate_rate", "packet_loss_percentage", b"packet_loss_percentage", "packet_loss_rate", b"packet_loss_rate", "packet_padding_rate", b"packet_padding_rate", "packet_rate", b"packet_rate", "packets", b"packets", "packets_duplicate", b"packets_duplicate", "packets_lost", b"packets_lost", "packets_out_of_order", b"packets_out_of_order", "packets_padding", b"packets_padding", "plis", b"plis", "report_drift", b"report_drift", "rtt_current", b"rtt_current", "rtt_max", b"rtt_max", "start_time", b"start_time"]) -> None: ... - -global___RTPStats = RTPStats - -@typing_extensions.final -class TimedVersion(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - UNIX_MICRO_FIELD_NUMBER: builtins.int - TICKS_FIELD_NUMBER: builtins.int - unix_micro: builtins.int - ticks: builtins.int - def __init__( - self, - *, - unix_micro: builtins.int = ..., - ticks: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ticks", b"ticks", "unix_micro", b"unix_micro"]) -> None: ... - -global___TimedVersion = TimedVersion +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class AudioCodec(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DEFAULT_AC: _ClassVar[AudioCodec] + OPUS: _ClassVar[AudioCodec] + AAC: _ClassVar[AudioCodec] + +class VideoCodec(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DEFAULT_VC: _ClassVar[VideoCodec] + H264_BASELINE: _ClassVar[VideoCodec] + H264_MAIN: _ClassVar[VideoCodec] + H264_HIGH: _ClassVar[VideoCodec] + VP8: _ClassVar[VideoCodec] + +class ImageCodec(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + IC_DEFAULT: _ClassVar[ImageCodec] + IC_JPEG: _ClassVar[ImageCodec] + +class TrackType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + AUDIO: _ClassVar[TrackType] + VIDEO: _ClassVar[TrackType] + DATA: _ClassVar[TrackType] + +class TrackSource(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[TrackSource] + CAMERA: _ClassVar[TrackSource] + MICROPHONE: _ClassVar[TrackSource] + SCREEN_SHARE: _ClassVar[TrackSource] + SCREEN_SHARE_AUDIO: _ClassVar[TrackSource] + +class VideoQuality(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + LOW: _ClassVar[VideoQuality] + MEDIUM: _ClassVar[VideoQuality] + HIGH: _ClassVar[VideoQuality] + OFF: _ClassVar[VideoQuality] + +class ConnectionQuality(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + POOR: _ClassVar[ConnectionQuality] + GOOD: _ClassVar[ConnectionQuality] + EXCELLENT: _ClassVar[ConnectionQuality] + LOST: _ClassVar[ConnectionQuality] + +class ClientConfigSetting(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNSET: _ClassVar[ClientConfigSetting] + DISABLED: _ClassVar[ClientConfigSetting] + ENABLED: _ClassVar[ClientConfigSetting] + +class DisconnectReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_REASON: _ClassVar[DisconnectReason] + CLIENT_INITIATED: _ClassVar[DisconnectReason] + DUPLICATE_IDENTITY: _ClassVar[DisconnectReason] + SERVER_SHUTDOWN: _ClassVar[DisconnectReason] + PARTICIPANT_REMOVED: _ClassVar[DisconnectReason] + ROOM_DELETED: _ClassVar[DisconnectReason] + STATE_MISMATCH: _ClassVar[DisconnectReason] + JOIN_FAILURE: _ClassVar[DisconnectReason] + +class ReconnectReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + RR_UNKNOWN: _ClassVar[ReconnectReason] + RR_SIGNAL_DISCONNECTED: _ClassVar[ReconnectReason] + RR_PUBLISHER_FAILED: _ClassVar[ReconnectReason] + RR_SUBSCRIBER_FAILED: _ClassVar[ReconnectReason] + RR_SWITCH_CANDIDATE: _ClassVar[ReconnectReason] + +class SubscriptionError(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SE_UNKNOWN: _ClassVar[SubscriptionError] + SE_CODEC_UNSUPPORTED: _ClassVar[SubscriptionError] + SE_TRACK_NOTFOUND: _ClassVar[SubscriptionError] +DEFAULT_AC: AudioCodec +OPUS: AudioCodec +AAC: AudioCodec +DEFAULT_VC: VideoCodec +H264_BASELINE: VideoCodec +H264_MAIN: VideoCodec +H264_HIGH: VideoCodec +VP8: VideoCodec +IC_DEFAULT: ImageCodec +IC_JPEG: ImageCodec +AUDIO: TrackType +VIDEO: TrackType +DATA: TrackType +UNKNOWN: TrackSource +CAMERA: TrackSource +MICROPHONE: TrackSource +SCREEN_SHARE: TrackSource +SCREEN_SHARE_AUDIO: TrackSource +LOW: VideoQuality +MEDIUM: VideoQuality +HIGH: VideoQuality +OFF: VideoQuality +POOR: ConnectionQuality +GOOD: ConnectionQuality +EXCELLENT: ConnectionQuality +LOST: ConnectionQuality +UNSET: ClientConfigSetting +DISABLED: ClientConfigSetting +ENABLED: ClientConfigSetting +UNKNOWN_REASON: DisconnectReason +CLIENT_INITIATED: DisconnectReason +DUPLICATE_IDENTITY: DisconnectReason +SERVER_SHUTDOWN: DisconnectReason +PARTICIPANT_REMOVED: DisconnectReason +ROOM_DELETED: DisconnectReason +STATE_MISMATCH: DisconnectReason +JOIN_FAILURE: DisconnectReason +RR_UNKNOWN: ReconnectReason +RR_SIGNAL_DISCONNECTED: ReconnectReason +RR_PUBLISHER_FAILED: ReconnectReason +RR_SUBSCRIBER_FAILED: ReconnectReason +RR_SWITCH_CANDIDATE: ReconnectReason +SE_UNKNOWN: SubscriptionError +SE_CODEC_UNSUPPORTED: SubscriptionError +SE_TRACK_NOTFOUND: SubscriptionError + +class Room(_message.Message): + __slots__ = ("sid", "name", "empty_timeout", "max_participants", "creation_time", "turn_password", "enabled_codecs", "metadata", "num_participants", "num_publishers", "active_recording", "version") + SID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + EMPTY_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + MAX_PARTICIPANTS_FIELD_NUMBER: _ClassVar[int] + CREATION_TIME_FIELD_NUMBER: _ClassVar[int] + TURN_PASSWORD_FIELD_NUMBER: _ClassVar[int] + ENABLED_CODECS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + NUM_PARTICIPANTS_FIELD_NUMBER: _ClassVar[int] + NUM_PUBLISHERS_FIELD_NUMBER: _ClassVar[int] + ACTIVE_RECORDING_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + sid: str + name: str + empty_timeout: int + max_participants: int + creation_time: int + turn_password: str + enabled_codecs: _containers.RepeatedCompositeFieldContainer[Codec] + metadata: str + num_participants: int + num_publishers: int + active_recording: bool + version: TimedVersion + def __init__(self, sid: _Optional[str] = ..., name: _Optional[str] = ..., empty_timeout: _Optional[int] = ..., max_participants: _Optional[int] = ..., creation_time: _Optional[int] = ..., turn_password: _Optional[str] = ..., enabled_codecs: _Optional[_Iterable[_Union[Codec, _Mapping]]] = ..., metadata: _Optional[str] = ..., num_participants: _Optional[int] = ..., num_publishers: _Optional[int] = ..., active_recording: bool = ..., version: _Optional[_Union[TimedVersion, _Mapping]] = ...) -> None: ... + +class Codec(_message.Message): + __slots__ = ("mime", "fmtp_line") + MIME_FIELD_NUMBER: _ClassVar[int] + FMTP_LINE_FIELD_NUMBER: _ClassVar[int] + mime: str + fmtp_line: str + def __init__(self, mime: _Optional[str] = ..., fmtp_line: _Optional[str] = ...) -> None: ... + +class PlayoutDelay(_message.Message): + __slots__ = ("enabled", "min", "max") + ENABLED_FIELD_NUMBER: _ClassVar[int] + MIN_FIELD_NUMBER: _ClassVar[int] + MAX_FIELD_NUMBER: _ClassVar[int] + enabled: bool + min: int + max: int + def __init__(self, enabled: bool = ..., min: _Optional[int] = ..., max: _Optional[int] = ...) -> None: ... + +class ParticipantPermission(_message.Message): + __slots__ = ("can_subscribe", "can_publish", "can_publish_data", "can_publish_sources", "hidden", "recorder", "can_update_metadata", "agent") + CAN_SUBSCRIBE_FIELD_NUMBER: _ClassVar[int] + CAN_PUBLISH_FIELD_NUMBER: _ClassVar[int] + CAN_PUBLISH_DATA_FIELD_NUMBER: _ClassVar[int] + CAN_PUBLISH_SOURCES_FIELD_NUMBER: _ClassVar[int] + HIDDEN_FIELD_NUMBER: _ClassVar[int] + RECORDER_FIELD_NUMBER: _ClassVar[int] + CAN_UPDATE_METADATA_FIELD_NUMBER: _ClassVar[int] + AGENT_FIELD_NUMBER: _ClassVar[int] + can_subscribe: bool + can_publish: bool + can_publish_data: bool + can_publish_sources: _containers.RepeatedScalarFieldContainer[TrackSource] + hidden: bool + recorder: bool + can_update_metadata: bool + agent: bool + def __init__(self, can_subscribe: bool = ..., can_publish: bool = ..., can_publish_data: bool = ..., can_publish_sources: _Optional[_Iterable[_Union[TrackSource, str]]] = ..., hidden: bool = ..., recorder: bool = ..., can_update_metadata: bool = ..., agent: bool = ...) -> None: ... + +class ParticipantInfo(_message.Message): + __slots__ = ("sid", "identity", "state", "tracks", "metadata", "joined_at", "name", "version", "permission", "region", "is_publisher", "kind") + class State(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + JOINING: _ClassVar[ParticipantInfo.State] + JOINED: _ClassVar[ParticipantInfo.State] + ACTIVE: _ClassVar[ParticipantInfo.State] + DISCONNECTED: _ClassVar[ParticipantInfo.State] + JOINING: ParticipantInfo.State + JOINED: ParticipantInfo.State + ACTIVE: ParticipantInfo.State + DISCONNECTED: ParticipantInfo.State + class Kind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + STANDARD: _ClassVar[ParticipantInfo.Kind] + INGRESS: _ClassVar[ParticipantInfo.Kind] + EGRESS: _ClassVar[ParticipantInfo.Kind] + SIP: _ClassVar[ParticipantInfo.Kind] + AGENT: _ClassVar[ParticipantInfo.Kind] + STANDARD: ParticipantInfo.Kind + INGRESS: ParticipantInfo.Kind + EGRESS: ParticipantInfo.Kind + SIP: ParticipantInfo.Kind + AGENT: ParticipantInfo.Kind + SID_FIELD_NUMBER: _ClassVar[int] + IDENTITY_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + TRACKS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + JOINED_AT_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + PERMISSION_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] + IS_PUBLISHER_FIELD_NUMBER: _ClassVar[int] + KIND_FIELD_NUMBER: _ClassVar[int] + sid: str + identity: str + state: ParticipantInfo.State + tracks: _containers.RepeatedCompositeFieldContainer[TrackInfo] + metadata: str + joined_at: int + name: str + version: int + permission: ParticipantPermission + region: str + is_publisher: bool + kind: ParticipantInfo.Kind + def __init__(self, sid: _Optional[str] = ..., identity: _Optional[str] = ..., state: _Optional[_Union[ParticipantInfo.State, str]] = ..., tracks: _Optional[_Iterable[_Union[TrackInfo, _Mapping]]] = ..., metadata: _Optional[str] = ..., joined_at: _Optional[int] = ..., name: _Optional[str] = ..., version: _Optional[int] = ..., permission: _Optional[_Union[ParticipantPermission, _Mapping]] = ..., region: _Optional[str] = ..., is_publisher: bool = ..., kind: _Optional[_Union[ParticipantInfo.Kind, str]] = ...) -> None: ... + +class Encryption(_message.Message): + __slots__ = () + class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + NONE: _ClassVar[Encryption.Type] + GCM: _ClassVar[Encryption.Type] + CUSTOM: _ClassVar[Encryption.Type] + NONE: Encryption.Type + GCM: Encryption.Type + CUSTOM: Encryption.Type + def __init__(self) -> None: ... + +class SimulcastCodecInfo(_message.Message): + __slots__ = ("mime_type", "mid", "cid", "layers") + MIME_TYPE_FIELD_NUMBER: _ClassVar[int] + MID_FIELD_NUMBER: _ClassVar[int] + CID_FIELD_NUMBER: _ClassVar[int] + LAYERS_FIELD_NUMBER: _ClassVar[int] + mime_type: str + mid: str + cid: str + layers: _containers.RepeatedCompositeFieldContainer[VideoLayer] + def __init__(self, mime_type: _Optional[str] = ..., mid: _Optional[str] = ..., cid: _Optional[str] = ..., layers: _Optional[_Iterable[_Union[VideoLayer, _Mapping]]] = ...) -> None: ... + +class TrackInfo(_message.Message): + __slots__ = ("sid", "type", "name", "muted", "width", "height", "simulcast", "disable_dtx", "source", "layers", "mime_type", "mid", "codecs", "stereo", "disable_red", "encryption", "stream", "version") + SID_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + MUTED_FIELD_NUMBER: _ClassVar[int] + WIDTH_FIELD_NUMBER: _ClassVar[int] + HEIGHT_FIELD_NUMBER: _ClassVar[int] + SIMULCAST_FIELD_NUMBER: _ClassVar[int] + DISABLE_DTX_FIELD_NUMBER: _ClassVar[int] + SOURCE_FIELD_NUMBER: _ClassVar[int] + LAYERS_FIELD_NUMBER: _ClassVar[int] + MIME_TYPE_FIELD_NUMBER: _ClassVar[int] + MID_FIELD_NUMBER: _ClassVar[int] + CODECS_FIELD_NUMBER: _ClassVar[int] + STEREO_FIELD_NUMBER: _ClassVar[int] + DISABLE_RED_FIELD_NUMBER: _ClassVar[int] + ENCRYPTION_FIELD_NUMBER: _ClassVar[int] + STREAM_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + sid: str + type: TrackType + name: str + muted: bool + width: int + height: int + simulcast: bool + disable_dtx: bool + source: TrackSource + layers: _containers.RepeatedCompositeFieldContainer[VideoLayer] + mime_type: str + mid: str + codecs: _containers.RepeatedCompositeFieldContainer[SimulcastCodecInfo] + stereo: bool + disable_red: bool + encryption: Encryption.Type + stream: str + version: TimedVersion + def __init__(self, sid: _Optional[str] = ..., type: _Optional[_Union[TrackType, str]] = ..., name: _Optional[str] = ..., muted: bool = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., simulcast: bool = ..., disable_dtx: bool = ..., source: _Optional[_Union[TrackSource, str]] = ..., layers: _Optional[_Iterable[_Union[VideoLayer, _Mapping]]] = ..., mime_type: _Optional[str] = ..., mid: _Optional[str] = ..., codecs: _Optional[_Iterable[_Union[SimulcastCodecInfo, _Mapping]]] = ..., stereo: bool = ..., disable_red: bool = ..., encryption: _Optional[_Union[Encryption.Type, str]] = ..., stream: _Optional[str] = ..., version: _Optional[_Union[TimedVersion, _Mapping]] = ...) -> None: ... + +class VideoLayer(_message.Message): + __slots__ = ("quality", "width", "height", "bitrate", "ssrc") + QUALITY_FIELD_NUMBER: _ClassVar[int] + WIDTH_FIELD_NUMBER: _ClassVar[int] + HEIGHT_FIELD_NUMBER: _ClassVar[int] + BITRATE_FIELD_NUMBER: _ClassVar[int] + SSRC_FIELD_NUMBER: _ClassVar[int] + quality: VideoQuality + width: int + height: int + bitrate: int + ssrc: int + def __init__(self, quality: _Optional[_Union[VideoQuality, str]] = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., bitrate: _Optional[int] = ..., ssrc: _Optional[int] = ...) -> None: ... + +class DataPacket(_message.Message): + __slots__ = ("kind", "user", "speaker") + class Kind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + RELIABLE: _ClassVar[DataPacket.Kind] + LOSSY: _ClassVar[DataPacket.Kind] + RELIABLE: DataPacket.Kind + LOSSY: DataPacket.Kind + KIND_FIELD_NUMBER: _ClassVar[int] + USER_FIELD_NUMBER: _ClassVar[int] + SPEAKER_FIELD_NUMBER: _ClassVar[int] + kind: DataPacket.Kind + user: UserPacket + speaker: ActiveSpeakerUpdate + def __init__(self, kind: _Optional[_Union[DataPacket.Kind, str]] = ..., user: _Optional[_Union[UserPacket, _Mapping]] = ..., speaker: _Optional[_Union[ActiveSpeakerUpdate, _Mapping]] = ...) -> None: ... + +class ActiveSpeakerUpdate(_message.Message): + __slots__ = ("speakers",) + SPEAKERS_FIELD_NUMBER: _ClassVar[int] + speakers: _containers.RepeatedCompositeFieldContainer[SpeakerInfo] + def __init__(self, speakers: _Optional[_Iterable[_Union[SpeakerInfo, _Mapping]]] = ...) -> None: ... + +class SpeakerInfo(_message.Message): + __slots__ = ("sid", "level", "active") + SID_FIELD_NUMBER: _ClassVar[int] + LEVEL_FIELD_NUMBER: _ClassVar[int] + ACTIVE_FIELD_NUMBER: _ClassVar[int] + sid: str + level: float + active: bool + def __init__(self, sid: _Optional[str] = ..., level: _Optional[float] = ..., active: bool = ...) -> None: ... + +class UserPacket(_message.Message): + __slots__ = ("participant_sid", "participant_identity", "payload", "destination_sids", "destination_identities", "topic") + PARTICIPANT_SID_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_IDENTITY_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_FIELD_NUMBER: _ClassVar[int] + DESTINATION_SIDS_FIELD_NUMBER: _ClassVar[int] + DESTINATION_IDENTITIES_FIELD_NUMBER: _ClassVar[int] + TOPIC_FIELD_NUMBER: _ClassVar[int] + participant_sid: str + participant_identity: str + payload: bytes + destination_sids: _containers.RepeatedScalarFieldContainer[str] + destination_identities: _containers.RepeatedScalarFieldContainer[str] + topic: str + def __init__(self, participant_sid: _Optional[str] = ..., participant_identity: _Optional[str] = ..., payload: _Optional[bytes] = ..., destination_sids: _Optional[_Iterable[str]] = ..., destination_identities: _Optional[_Iterable[str]] = ..., topic: _Optional[str] = ...) -> None: ... + +class ParticipantTracks(_message.Message): + __slots__ = ("participant_sid", "track_sids") + PARTICIPANT_SID_FIELD_NUMBER: _ClassVar[int] + TRACK_SIDS_FIELD_NUMBER: _ClassVar[int] + participant_sid: str + track_sids: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, participant_sid: _Optional[str] = ..., track_sids: _Optional[_Iterable[str]] = ...) -> None: ... + +class ServerInfo(_message.Message): + __slots__ = ("edition", "version", "protocol", "region", "node_id", "debug_info") + class Edition(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + Standard: _ClassVar[ServerInfo.Edition] + Cloud: _ClassVar[ServerInfo.Edition] + Standard: ServerInfo.Edition + Cloud: ServerInfo.Edition + EDITION_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + PROTOCOL_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] + NODE_ID_FIELD_NUMBER: _ClassVar[int] + DEBUG_INFO_FIELD_NUMBER: _ClassVar[int] + edition: ServerInfo.Edition + version: str + protocol: int + region: str + node_id: str + debug_info: str + def __init__(self, edition: _Optional[_Union[ServerInfo.Edition, str]] = ..., version: _Optional[str] = ..., protocol: _Optional[int] = ..., region: _Optional[str] = ..., node_id: _Optional[str] = ..., debug_info: _Optional[str] = ...) -> None: ... + +class ClientInfo(_message.Message): + __slots__ = ("sdk", "version", "protocol", "os", "os_version", "device_model", "browser", "browser_version", "address", "network") + class SDK(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[ClientInfo.SDK] + JS: _ClassVar[ClientInfo.SDK] + SWIFT: _ClassVar[ClientInfo.SDK] + ANDROID: _ClassVar[ClientInfo.SDK] + FLUTTER: _ClassVar[ClientInfo.SDK] + GO: _ClassVar[ClientInfo.SDK] + UNITY: _ClassVar[ClientInfo.SDK] + REACT_NATIVE: _ClassVar[ClientInfo.SDK] + RUST: _ClassVar[ClientInfo.SDK] + PYTHON: _ClassVar[ClientInfo.SDK] + CPP: _ClassVar[ClientInfo.SDK] + UNKNOWN: ClientInfo.SDK + JS: ClientInfo.SDK + SWIFT: ClientInfo.SDK + ANDROID: ClientInfo.SDK + FLUTTER: ClientInfo.SDK + GO: ClientInfo.SDK + UNITY: ClientInfo.SDK + REACT_NATIVE: ClientInfo.SDK + RUST: ClientInfo.SDK + PYTHON: ClientInfo.SDK + CPP: ClientInfo.SDK + SDK_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + PROTOCOL_FIELD_NUMBER: _ClassVar[int] + OS_FIELD_NUMBER: _ClassVar[int] + OS_VERSION_FIELD_NUMBER: _ClassVar[int] + DEVICE_MODEL_FIELD_NUMBER: _ClassVar[int] + BROWSER_FIELD_NUMBER: _ClassVar[int] + BROWSER_VERSION_FIELD_NUMBER: _ClassVar[int] + ADDRESS_FIELD_NUMBER: _ClassVar[int] + NETWORK_FIELD_NUMBER: _ClassVar[int] + sdk: ClientInfo.SDK + version: str + protocol: int + os: str + os_version: str + device_model: str + browser: str + browser_version: str + address: str + network: str + def __init__(self, sdk: _Optional[_Union[ClientInfo.SDK, str]] = ..., version: _Optional[str] = ..., protocol: _Optional[int] = ..., os: _Optional[str] = ..., os_version: _Optional[str] = ..., device_model: _Optional[str] = ..., browser: _Optional[str] = ..., browser_version: _Optional[str] = ..., address: _Optional[str] = ..., network: _Optional[str] = ...) -> None: ... + +class ClientConfiguration(_message.Message): + __slots__ = ("video", "screen", "resume_connection", "disabled_codecs", "force_relay") + VIDEO_FIELD_NUMBER: _ClassVar[int] + SCREEN_FIELD_NUMBER: _ClassVar[int] + RESUME_CONNECTION_FIELD_NUMBER: _ClassVar[int] + DISABLED_CODECS_FIELD_NUMBER: _ClassVar[int] + FORCE_RELAY_FIELD_NUMBER: _ClassVar[int] + video: VideoConfiguration + screen: VideoConfiguration + resume_connection: ClientConfigSetting + disabled_codecs: DisabledCodecs + force_relay: ClientConfigSetting + def __init__(self, video: _Optional[_Union[VideoConfiguration, _Mapping]] = ..., screen: _Optional[_Union[VideoConfiguration, _Mapping]] = ..., resume_connection: _Optional[_Union[ClientConfigSetting, str]] = ..., disabled_codecs: _Optional[_Union[DisabledCodecs, _Mapping]] = ..., force_relay: _Optional[_Union[ClientConfigSetting, str]] = ...) -> None: ... + +class VideoConfiguration(_message.Message): + __slots__ = ("hardware_encoder",) + HARDWARE_ENCODER_FIELD_NUMBER: _ClassVar[int] + hardware_encoder: ClientConfigSetting + def __init__(self, hardware_encoder: _Optional[_Union[ClientConfigSetting, str]] = ...) -> None: ... + +class DisabledCodecs(_message.Message): + __slots__ = ("codecs", "publish") + CODECS_FIELD_NUMBER: _ClassVar[int] + PUBLISH_FIELD_NUMBER: _ClassVar[int] + codecs: _containers.RepeatedCompositeFieldContainer[Codec] + publish: _containers.RepeatedCompositeFieldContainer[Codec] + def __init__(self, codecs: _Optional[_Iterable[_Union[Codec, _Mapping]]] = ..., publish: _Optional[_Iterable[_Union[Codec, _Mapping]]] = ...) -> None: ... + +class RTPDrift(_message.Message): + __slots__ = ("start_time", "end_time", "duration", "start_timestamp", "end_timestamp", "rtp_clock_ticks", "drift_samples", "drift_ms", "clock_rate") + START_TIME_FIELD_NUMBER: _ClassVar[int] + END_TIME_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + START_TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + END_TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + RTP_CLOCK_TICKS_FIELD_NUMBER: _ClassVar[int] + DRIFT_SAMPLES_FIELD_NUMBER: _ClassVar[int] + DRIFT_MS_FIELD_NUMBER: _ClassVar[int] + CLOCK_RATE_FIELD_NUMBER: _ClassVar[int] + start_time: _timestamp_pb2.Timestamp + end_time: _timestamp_pb2.Timestamp + duration: float + start_timestamp: int + end_timestamp: int + rtp_clock_ticks: int + drift_samples: int + drift_ms: float + clock_rate: float + def __init__(self, start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[float] = ..., start_timestamp: _Optional[int] = ..., end_timestamp: _Optional[int] = ..., rtp_clock_ticks: _Optional[int] = ..., drift_samples: _Optional[int] = ..., drift_ms: _Optional[float] = ..., clock_rate: _Optional[float] = ...) -> None: ... + +class RTPStats(_message.Message): + __slots__ = ("start_time", "end_time", "duration", "packets", "packet_rate", "bytes", "header_bytes", "bitrate", "packets_lost", "packet_loss_rate", "packet_loss_percentage", "packets_duplicate", "packet_duplicate_rate", "bytes_duplicate", "header_bytes_duplicate", "bitrate_duplicate", "packets_padding", "packet_padding_rate", "bytes_padding", "header_bytes_padding", "bitrate_padding", "packets_out_of_order", "frames", "frame_rate", "jitter_current", "jitter_max", "gap_histogram", "nacks", "nack_acks", "nack_misses", "nack_repeated", "plis", "last_pli", "firs", "last_fir", "rtt_current", "rtt_max", "key_frames", "last_key_frame", "layer_lock_plis", "last_layer_lock_pli", "packet_drift", "report_drift") + class GapHistogramEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: int + value: int + def __init__(self, key: _Optional[int] = ..., value: _Optional[int] = ...) -> None: ... + START_TIME_FIELD_NUMBER: _ClassVar[int] + END_TIME_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + PACKETS_FIELD_NUMBER: _ClassVar[int] + PACKET_RATE_FIELD_NUMBER: _ClassVar[int] + BYTES_FIELD_NUMBER: _ClassVar[int] + HEADER_BYTES_FIELD_NUMBER: _ClassVar[int] + BITRATE_FIELD_NUMBER: _ClassVar[int] + PACKETS_LOST_FIELD_NUMBER: _ClassVar[int] + PACKET_LOSS_RATE_FIELD_NUMBER: _ClassVar[int] + PACKET_LOSS_PERCENTAGE_FIELD_NUMBER: _ClassVar[int] + PACKETS_DUPLICATE_FIELD_NUMBER: _ClassVar[int] + PACKET_DUPLICATE_RATE_FIELD_NUMBER: _ClassVar[int] + BYTES_DUPLICATE_FIELD_NUMBER: _ClassVar[int] + HEADER_BYTES_DUPLICATE_FIELD_NUMBER: _ClassVar[int] + BITRATE_DUPLICATE_FIELD_NUMBER: _ClassVar[int] + PACKETS_PADDING_FIELD_NUMBER: _ClassVar[int] + PACKET_PADDING_RATE_FIELD_NUMBER: _ClassVar[int] + BYTES_PADDING_FIELD_NUMBER: _ClassVar[int] + HEADER_BYTES_PADDING_FIELD_NUMBER: _ClassVar[int] + BITRATE_PADDING_FIELD_NUMBER: _ClassVar[int] + PACKETS_OUT_OF_ORDER_FIELD_NUMBER: _ClassVar[int] + FRAMES_FIELD_NUMBER: _ClassVar[int] + FRAME_RATE_FIELD_NUMBER: _ClassVar[int] + JITTER_CURRENT_FIELD_NUMBER: _ClassVar[int] + JITTER_MAX_FIELD_NUMBER: _ClassVar[int] + GAP_HISTOGRAM_FIELD_NUMBER: _ClassVar[int] + NACKS_FIELD_NUMBER: _ClassVar[int] + NACK_ACKS_FIELD_NUMBER: _ClassVar[int] + NACK_MISSES_FIELD_NUMBER: _ClassVar[int] + NACK_REPEATED_FIELD_NUMBER: _ClassVar[int] + PLIS_FIELD_NUMBER: _ClassVar[int] + LAST_PLI_FIELD_NUMBER: _ClassVar[int] + FIRS_FIELD_NUMBER: _ClassVar[int] + LAST_FIR_FIELD_NUMBER: _ClassVar[int] + RTT_CURRENT_FIELD_NUMBER: _ClassVar[int] + RTT_MAX_FIELD_NUMBER: _ClassVar[int] + KEY_FRAMES_FIELD_NUMBER: _ClassVar[int] + LAST_KEY_FRAME_FIELD_NUMBER: _ClassVar[int] + LAYER_LOCK_PLIS_FIELD_NUMBER: _ClassVar[int] + LAST_LAYER_LOCK_PLI_FIELD_NUMBER: _ClassVar[int] + PACKET_DRIFT_FIELD_NUMBER: _ClassVar[int] + REPORT_DRIFT_FIELD_NUMBER: _ClassVar[int] + start_time: _timestamp_pb2.Timestamp + end_time: _timestamp_pb2.Timestamp + duration: float + packets: int + packet_rate: float + bytes: int + header_bytes: int + bitrate: float + packets_lost: int + packet_loss_rate: float + packet_loss_percentage: float + packets_duplicate: int + packet_duplicate_rate: float + bytes_duplicate: int + header_bytes_duplicate: int + bitrate_duplicate: float + packets_padding: int + packet_padding_rate: float + bytes_padding: int + header_bytes_padding: int + bitrate_padding: float + packets_out_of_order: int + frames: int + frame_rate: float + jitter_current: float + jitter_max: float + gap_histogram: _containers.ScalarMap[int, int] + nacks: int + nack_acks: int + nack_misses: int + nack_repeated: int + plis: int + last_pli: _timestamp_pb2.Timestamp + firs: int + last_fir: _timestamp_pb2.Timestamp + rtt_current: int + rtt_max: int + key_frames: int + last_key_frame: _timestamp_pb2.Timestamp + layer_lock_plis: int + last_layer_lock_pli: _timestamp_pb2.Timestamp + packet_drift: RTPDrift + report_drift: RTPDrift + def __init__(self, start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[float] = ..., packets: _Optional[int] = ..., packet_rate: _Optional[float] = ..., bytes: _Optional[int] = ..., header_bytes: _Optional[int] = ..., bitrate: _Optional[float] = ..., packets_lost: _Optional[int] = ..., packet_loss_rate: _Optional[float] = ..., packet_loss_percentage: _Optional[float] = ..., packets_duplicate: _Optional[int] = ..., packet_duplicate_rate: _Optional[float] = ..., bytes_duplicate: _Optional[int] = ..., header_bytes_duplicate: _Optional[int] = ..., bitrate_duplicate: _Optional[float] = ..., packets_padding: _Optional[int] = ..., packet_padding_rate: _Optional[float] = ..., bytes_padding: _Optional[int] = ..., header_bytes_padding: _Optional[int] = ..., bitrate_padding: _Optional[float] = ..., packets_out_of_order: _Optional[int] = ..., frames: _Optional[int] = ..., frame_rate: _Optional[float] = ..., jitter_current: _Optional[float] = ..., jitter_max: _Optional[float] = ..., gap_histogram: _Optional[_Mapping[int, int]] = ..., nacks: _Optional[int] = ..., nack_acks: _Optional[int] = ..., nack_misses: _Optional[int] = ..., nack_repeated: _Optional[int] = ..., plis: _Optional[int] = ..., last_pli: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., firs: _Optional[int] = ..., last_fir: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., rtt_current: _Optional[int] = ..., rtt_max: _Optional[int] = ..., key_frames: _Optional[int] = ..., last_key_frame: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., layer_lock_plis: _Optional[int] = ..., last_layer_lock_pli: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., packet_drift: _Optional[_Union[RTPDrift, _Mapping]] = ..., report_drift: _Optional[_Union[RTPDrift, _Mapping]] = ...) -> None: ... + +class TimedVersion(_message.Message): + __slots__ = ("unix_micro", "ticks") + UNIX_MICRO_FIELD_NUMBER: _ClassVar[int] + TICKS_FIELD_NUMBER: _ClassVar[int] + unix_micro: int + ticks: int + def __init__(self, unix_micro: _Optional[int] = ..., ticks: _Optional[int] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/py.typed b/livekit-protocol/livekit/protocol/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/livekit-protocol/livekit/protocol/room.py b/livekit-protocol/livekit/protocol/room.py index 8c0b6769..aad09f7e 100644 --- a/livekit-protocol/livekit/protocol/room.py +++ b/livekit-protocol/livekit/protocol/room.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_room.proto -# Protobuf Python Version: 4.25.2 +# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool diff --git a/livekit-protocol/livekit/protocol/room.pyi b/livekit-protocol/livekit/protocol/room.pyi index 94e56906..5e9daa17 100644 --- a/livekit-protocol/livekit/protocol/room.pyi +++ b/livekit-protocol/livekit/protocol/room.pyi @@ -1,416 +1,164 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2023 LiveKit, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -from . import egress -from . import models -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class CreateRoomRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NAME_FIELD_NUMBER: builtins.int - EMPTY_TIMEOUT_FIELD_NUMBER: builtins.int - MAX_PARTICIPANTS_FIELD_NUMBER: builtins.int - NODE_ID_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - EGRESS_FIELD_NUMBER: builtins.int - MIN_PLAYOUT_DELAY_FIELD_NUMBER: builtins.int - MAX_PLAYOUT_DELAY_FIELD_NUMBER: builtins.int - SYNC_STREAMS_FIELD_NUMBER: builtins.int - name: builtins.str - """name of the room""" - empty_timeout: builtins.int - """number of seconds to keep the room open if no one joins""" - max_participants: builtins.int - """limit number of participants that can be in a room""" - node_id: builtins.str - """override the node room is allocated to, for debugging""" - metadata: builtins.str - """metadata of room""" - @property - def egress(self) -> global___RoomEgress: - """egress""" - min_playout_delay: builtins.int - """playout delay of subscriber""" - max_playout_delay: builtins.int - sync_streams: builtins.bool - """improves A/V sync when playout_delay set to a value larger than 200ms. It will disables transceiver re-use - so not recommended for rooms with frequent subscription changes - """ - def __init__( - self, - *, - name: builtins.str = ..., - empty_timeout: builtins.int = ..., - max_participants: builtins.int = ..., - node_id: builtins.str = ..., - metadata: builtins.str = ..., - egress: global___RoomEgress | None = ..., - min_playout_delay: builtins.int = ..., - max_playout_delay: builtins.int = ..., - sync_streams: builtins.bool = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["egress", b"egress"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["egress", b"egress", "empty_timeout", b"empty_timeout", "max_participants", b"max_participants", "max_playout_delay", b"max_playout_delay", "metadata", b"metadata", "min_playout_delay", b"min_playout_delay", "name", b"name", "node_id", b"node_id", "sync_streams", b"sync_streams"]) -> None: ... - -global___CreateRoomRequest = CreateRoomRequest - -@typing_extensions.final -class RoomEgress(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_FIELD_NUMBER: builtins.int - PARTICIPANT_FIELD_NUMBER: builtins.int - TRACKS_FIELD_NUMBER: builtins.int - @property - def room(self) -> egress.RoomCompositeEgressRequest: ... - @property - def participant(self) -> egress.AutoParticipantEgress: ... - @property - def tracks(self) -> egress.AutoTrackEgress: ... - def __init__( - self, - *, - room: egress.RoomCompositeEgressRequest | None = ..., - participant: egress.AutoParticipantEgress | None = ..., - tracks: egress.AutoTrackEgress | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["participant", b"participant", "room", b"room", "tracks", b"tracks"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["participant", b"participant", "room", b"room", "tracks", b"tracks"]) -> None: ... - -global___RoomEgress = RoomEgress - -@typing_extensions.final -class ListRoomsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NAMES_FIELD_NUMBER: builtins.int - @property - def names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """when set, will only return rooms with name match""" - def __init__( - self, - *, - names: collections.abc.Iterable[builtins.str] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["names", b"names"]) -> None: ... - -global___ListRoomsRequest = ListRoomsRequest - -@typing_extensions.final -class ListRoomsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOMS_FIELD_NUMBER: builtins.int - @property - def rooms(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[models.Room]: ... - def __init__( - self, - *, - rooms: collections.abc.Iterable[models.Room] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["rooms", b"rooms"]) -> None: ... - -global___ListRoomsResponse = ListRoomsResponse - -@typing_extensions.final -class DeleteRoomRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_FIELD_NUMBER: builtins.int - room: builtins.str - """name of the room""" - def __init__( - self, - *, - room: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["room", b"room"]) -> None: ... - -global___DeleteRoomRequest = DeleteRoomRequest - -@typing_extensions.final -class DeleteRoomResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -global___DeleteRoomResponse = DeleteRoomResponse - -@typing_extensions.final -class ListParticipantsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_FIELD_NUMBER: builtins.int - room: builtins.str - """name of the room""" - def __init__( - self, - *, - room: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["room", b"room"]) -> None: ... - -global___ListParticipantsRequest = ListParticipantsRequest - -@typing_extensions.final -class ListParticipantsResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PARTICIPANTS_FIELD_NUMBER: builtins.int - @property - def participants(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[models.ParticipantInfo]: ... - def __init__( - self, - *, - participants: collections.abc.Iterable[models.ParticipantInfo] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participants", b"participants"]) -> None: ... - -global___ListParticipantsResponse = ListParticipantsResponse - -@typing_extensions.final -class RoomParticipantIdentity(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_FIELD_NUMBER: builtins.int - IDENTITY_FIELD_NUMBER: builtins.int - room: builtins.str - """name of the room""" - identity: builtins.str - """identity of the participant""" - def __init__( - self, - *, - room: builtins.str = ..., - identity: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["identity", b"identity", "room", b"room"]) -> None: ... - -global___RoomParticipantIdentity = RoomParticipantIdentity - -@typing_extensions.final -class RemoveParticipantResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -global___RemoveParticipantResponse = RemoveParticipantResponse - -@typing_extensions.final -class MuteRoomTrackRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_FIELD_NUMBER: builtins.int - IDENTITY_FIELD_NUMBER: builtins.int - TRACK_SID_FIELD_NUMBER: builtins.int - MUTED_FIELD_NUMBER: builtins.int - room: builtins.str - """name of the room""" - identity: builtins.str - track_sid: builtins.str - """sid of the track to mute""" - muted: builtins.bool - """set to true to mute, false to unmute""" - def __init__( - self, - *, - room: builtins.str = ..., - identity: builtins.str = ..., - track_sid: builtins.str = ..., - muted: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["identity", b"identity", "muted", b"muted", "room", b"room", "track_sid", b"track_sid"]) -> None: ... - -global___MuteRoomTrackRequest = MuteRoomTrackRequest - -@typing_extensions.final -class MuteRoomTrackResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - TRACK_FIELD_NUMBER: builtins.int - @property - def track(self) -> models.TrackInfo: ... - def __init__( - self, - *, - track: models.TrackInfo | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["track", b"track"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["track", b"track"]) -> None: ... - -global___MuteRoomTrackResponse = MuteRoomTrackResponse - -@typing_extensions.final -class UpdateParticipantRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_FIELD_NUMBER: builtins.int - IDENTITY_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - PERMISSION_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - room: builtins.str - identity: builtins.str - metadata: builtins.str - """metadata to update. skipping updates if left empty""" - @property - def permission(self) -> models.ParticipantPermission: - """set to update the participant's permissions""" - name: builtins.str - """display name to update""" - def __init__( - self, - *, - room: builtins.str = ..., - identity: builtins.str = ..., - metadata: builtins.str = ..., - permission: models.ParticipantPermission | None = ..., - name: builtins.str = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["permission", b"permission"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["identity", b"identity", "metadata", b"metadata", "name", b"name", "permission", b"permission", "room", b"room"]) -> None: ... - -global___UpdateParticipantRequest = UpdateParticipantRequest - -@typing_extensions.final -class UpdateSubscriptionsRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_FIELD_NUMBER: builtins.int - IDENTITY_FIELD_NUMBER: builtins.int - TRACK_SIDS_FIELD_NUMBER: builtins.int - SUBSCRIBE_FIELD_NUMBER: builtins.int - PARTICIPANT_TRACKS_FIELD_NUMBER: builtins.int - room: builtins.str - identity: builtins.str - @property - def track_sids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """list of sids of tracks""" - subscribe: builtins.bool - """set to true to subscribe, false to unsubscribe from tracks""" - @property - def participant_tracks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[models.ParticipantTracks]: - """list of participants and their tracks""" - def __init__( - self, - *, - room: builtins.str = ..., - identity: builtins.str = ..., - track_sids: collections.abc.Iterable[builtins.str] | None = ..., - subscribe: builtins.bool = ..., - participant_tracks: collections.abc.Iterable[models.ParticipantTracks] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["identity", b"identity", "participant_tracks", b"participant_tracks", "room", b"room", "subscribe", b"subscribe", "track_sids", b"track_sids"]) -> None: ... - -global___UpdateSubscriptionsRequest = UpdateSubscriptionsRequest - -@typing_extensions.final -class UpdateSubscriptionsResponse(google.protobuf.message.Message): - """empty for now""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -global___UpdateSubscriptionsResponse = UpdateSubscriptionsResponse - -@typing_extensions.final -class SendDataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - KIND_FIELD_NUMBER: builtins.int - DESTINATION_SIDS_FIELD_NUMBER: builtins.int - DESTINATION_IDENTITIES_FIELD_NUMBER: builtins.int - TOPIC_FIELD_NUMBER: builtins.int - room: builtins.str - data: builtins.bytes - kind: models.DataPacket.Kind.ValueType - @property - def destination_sids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """mark deprecated""" - @property - def destination_identities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """when set, only forward to these identities""" - topic: builtins.str - def __init__( - self, - *, - room: builtins.str = ..., - data: builtins.bytes = ..., - kind: models.DataPacket.Kind.ValueType = ..., - destination_sids: collections.abc.Iterable[builtins.str] | None = ..., - destination_identities: collections.abc.Iterable[builtins.str] | None = ..., - topic: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_topic", b"_topic", "topic", b"topic"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_topic", b"_topic", "data", b"data", "destination_identities", b"destination_identities", "destination_sids", b"destination_sids", "kind", b"kind", "room", b"room", "topic", b"topic"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["_topic", b"_topic"]) -> typing_extensions.Literal["topic"] | None: ... - -global___SendDataRequest = SendDataRequest - -@typing_extensions.final -class SendDataResponse(google.protobuf.message.Message): - """""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -global___SendDataResponse = SendDataResponse - -@typing_extensions.final -class UpdateRoomMetadataRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROOM_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - room: builtins.str - metadata: builtins.str - """metadata to update. skipping updates if left empty""" - def __init__( - self, - *, - room: builtins.str = ..., - metadata: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "room", b"room"]) -> None: ... - -global___UpdateRoomMetadataRequest = UpdateRoomMetadataRequest +from . import models as _models +from . import egress as _egress +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class CreateRoomRequest(_message.Message): + __slots__ = ("name", "empty_timeout", "max_participants", "node_id", "metadata", "egress", "min_playout_delay", "max_playout_delay", "sync_streams") + NAME_FIELD_NUMBER: _ClassVar[int] + EMPTY_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + MAX_PARTICIPANTS_FIELD_NUMBER: _ClassVar[int] + NODE_ID_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + EGRESS_FIELD_NUMBER: _ClassVar[int] + MIN_PLAYOUT_DELAY_FIELD_NUMBER: _ClassVar[int] + MAX_PLAYOUT_DELAY_FIELD_NUMBER: _ClassVar[int] + SYNC_STREAMS_FIELD_NUMBER: _ClassVar[int] + name: str + empty_timeout: int + max_participants: int + node_id: str + metadata: str + egress: RoomEgress + min_playout_delay: int + max_playout_delay: int + sync_streams: bool + def __init__(self, name: _Optional[str] = ..., empty_timeout: _Optional[int] = ..., max_participants: _Optional[int] = ..., node_id: _Optional[str] = ..., metadata: _Optional[str] = ..., egress: _Optional[_Union[RoomEgress, _Mapping]] = ..., min_playout_delay: _Optional[int] = ..., max_playout_delay: _Optional[int] = ..., sync_streams: bool = ...) -> None: ... + +class RoomEgress(_message.Message): + __slots__ = ("room", "participant", "tracks") + ROOM_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_FIELD_NUMBER: _ClassVar[int] + TRACKS_FIELD_NUMBER: _ClassVar[int] + room: _egress.RoomCompositeEgressRequest + participant: _egress.AutoParticipantEgress + tracks: _egress.AutoTrackEgress + def __init__(self, room: _Optional[_Union[_egress.RoomCompositeEgressRequest, _Mapping]] = ..., participant: _Optional[_Union[_egress.AutoParticipantEgress, _Mapping]] = ..., tracks: _Optional[_Union[_egress.AutoTrackEgress, _Mapping]] = ...) -> None: ... + +class ListRoomsRequest(_message.Message): + __slots__ = ("names",) + NAMES_FIELD_NUMBER: _ClassVar[int] + names: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, names: _Optional[_Iterable[str]] = ...) -> None: ... + +class ListRoomsResponse(_message.Message): + __slots__ = ("rooms",) + ROOMS_FIELD_NUMBER: _ClassVar[int] + rooms: _containers.RepeatedCompositeFieldContainer[_models.Room] + def __init__(self, rooms: _Optional[_Iterable[_Union[_models.Room, _Mapping]]] = ...) -> None: ... + +class DeleteRoomRequest(_message.Message): + __slots__ = ("room",) + ROOM_FIELD_NUMBER: _ClassVar[int] + room: str + def __init__(self, room: _Optional[str] = ...) -> None: ... + +class DeleteRoomResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ListParticipantsRequest(_message.Message): + __slots__ = ("room",) + ROOM_FIELD_NUMBER: _ClassVar[int] + room: str + def __init__(self, room: _Optional[str] = ...) -> None: ... + +class ListParticipantsResponse(_message.Message): + __slots__ = ("participants",) + PARTICIPANTS_FIELD_NUMBER: _ClassVar[int] + participants: _containers.RepeatedCompositeFieldContainer[_models.ParticipantInfo] + def __init__(self, participants: _Optional[_Iterable[_Union[_models.ParticipantInfo, _Mapping]]] = ...) -> None: ... + +class RoomParticipantIdentity(_message.Message): + __slots__ = ("room", "identity") + ROOM_FIELD_NUMBER: _ClassVar[int] + IDENTITY_FIELD_NUMBER: _ClassVar[int] + room: str + identity: str + def __init__(self, room: _Optional[str] = ..., identity: _Optional[str] = ...) -> None: ... + +class RemoveParticipantResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class MuteRoomTrackRequest(_message.Message): + __slots__ = ("room", "identity", "track_sid", "muted") + ROOM_FIELD_NUMBER: _ClassVar[int] + IDENTITY_FIELD_NUMBER: _ClassVar[int] + TRACK_SID_FIELD_NUMBER: _ClassVar[int] + MUTED_FIELD_NUMBER: _ClassVar[int] + room: str + identity: str + track_sid: str + muted: bool + def __init__(self, room: _Optional[str] = ..., identity: _Optional[str] = ..., track_sid: _Optional[str] = ..., muted: bool = ...) -> None: ... + +class MuteRoomTrackResponse(_message.Message): + __slots__ = ("track",) + TRACK_FIELD_NUMBER: _ClassVar[int] + track: _models.TrackInfo + def __init__(self, track: _Optional[_Union[_models.TrackInfo, _Mapping]] = ...) -> None: ... + +class UpdateParticipantRequest(_message.Message): + __slots__ = ("room", "identity", "metadata", "permission", "name") + ROOM_FIELD_NUMBER: _ClassVar[int] + IDENTITY_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + PERMISSION_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + room: str + identity: str + metadata: str + permission: _models.ParticipantPermission + name: str + def __init__(self, room: _Optional[str] = ..., identity: _Optional[str] = ..., metadata: _Optional[str] = ..., permission: _Optional[_Union[_models.ParticipantPermission, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ... + +class UpdateSubscriptionsRequest(_message.Message): + __slots__ = ("room", "identity", "track_sids", "subscribe", "participant_tracks") + ROOM_FIELD_NUMBER: _ClassVar[int] + IDENTITY_FIELD_NUMBER: _ClassVar[int] + TRACK_SIDS_FIELD_NUMBER: _ClassVar[int] + SUBSCRIBE_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_TRACKS_FIELD_NUMBER: _ClassVar[int] + room: str + identity: str + track_sids: _containers.RepeatedScalarFieldContainer[str] + subscribe: bool + participant_tracks: _containers.RepeatedCompositeFieldContainer[_models.ParticipantTracks] + def __init__(self, room: _Optional[str] = ..., identity: _Optional[str] = ..., track_sids: _Optional[_Iterable[str]] = ..., subscribe: bool = ..., participant_tracks: _Optional[_Iterable[_Union[_models.ParticipantTracks, _Mapping]]] = ...) -> None: ... + +class UpdateSubscriptionsResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class SendDataRequest(_message.Message): + __slots__ = ("room", "data", "kind", "destination_sids", "destination_identities", "topic") + ROOM_FIELD_NUMBER: _ClassVar[int] + DATA_FIELD_NUMBER: _ClassVar[int] + KIND_FIELD_NUMBER: _ClassVar[int] + DESTINATION_SIDS_FIELD_NUMBER: _ClassVar[int] + DESTINATION_IDENTITIES_FIELD_NUMBER: _ClassVar[int] + TOPIC_FIELD_NUMBER: _ClassVar[int] + room: str + data: bytes + kind: _models.DataPacket.Kind + destination_sids: _containers.RepeatedScalarFieldContainer[str] + destination_identities: _containers.RepeatedScalarFieldContainer[str] + topic: str + def __init__(self, room: _Optional[str] = ..., data: _Optional[bytes] = ..., kind: _Optional[_Union[_models.DataPacket.Kind, str]] = ..., destination_sids: _Optional[_Iterable[str]] = ..., destination_identities: _Optional[_Iterable[str]] = ..., topic: _Optional[str] = ...) -> None: ... + +class SendDataResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class UpdateRoomMetadataRequest(_message.Message): + __slots__ = ("room", "metadata") + ROOM_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + room: str + metadata: str + def __init__(self, room: _Optional[str] = ..., metadata: _Optional[str] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/webhook.py b/livekit-protocol/livekit/protocol/webhook.py index d2305be8..7c9f12c4 100644 --- a/livekit-protocol/livekit/protocol/webhook.py +++ b/livekit-protocol/livekit/protocol/webhook.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_webhook.proto -# Protobuf Python Version: 4.25.2 +# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool diff --git a/livekit-protocol/livekit/protocol/webhook.pyi b/livekit-protocol/livekit/protocol/webhook.pyi index 2d62d609..443a24dc 100644 --- a/livekit-protocol/livekit/protocol/webhook.pyi +++ b/livekit-protocol/livekit/protocol/webhook.pyi @@ -1,86 +1,30 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Copyright 2023 LiveKit, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.message -from . import egress -from . import ingress -from . import models -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class WebhookEvent(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - EVENT_FIELD_NUMBER: builtins.int - ROOM_FIELD_NUMBER: builtins.int - PARTICIPANT_FIELD_NUMBER: builtins.int - EGRESS_INFO_FIELD_NUMBER: builtins.int - INGRESS_INFO_FIELD_NUMBER: builtins.int - TRACK_FIELD_NUMBER: builtins.int - ID_FIELD_NUMBER: builtins.int - CREATED_AT_FIELD_NUMBER: builtins.int - NUM_DROPPED_FIELD_NUMBER: builtins.int - event: builtins.str - """one of room_started, room_finished, participant_joined, participant_left, - track_published, track_unpublished, egress_started, egress_updated, egress_ended, - ingress_started, ingress_ended - """ - @property - def room(self) -> models.Room: ... - @property - def participant(self) -> models.ParticipantInfo: - """set when event is participant_* or track_*""" - @property - def egress_info(self) -> egress.EgressInfo: - """set when event is egress_*""" - @property - def ingress_info(self) -> ingress.IngressInfo: - """set when event is ingress_*""" - @property - def track(self) -> models.TrackInfo: - """set when event is track_*""" - id: builtins.str - """unique event uuid""" - created_at: builtins.int - """timestamp in seconds""" - num_dropped: builtins.int - def __init__( - self, - *, - event: builtins.str = ..., - room: models.Room | None = ..., - participant: models.ParticipantInfo | None = ..., - egress_info: egress.EgressInfo | None = ..., - ingress_info: ingress.IngressInfo | None = ..., - track: models.TrackInfo | None = ..., - id: builtins.str = ..., - created_at: builtins.int = ..., - num_dropped: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["egress_info", b"egress_info", "ingress_info", b"ingress_info", "participant", b"participant", "room", b"room", "track", b"track"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_at", b"created_at", "egress_info", b"egress_info", "event", b"event", "id", b"id", "ingress_info", b"ingress_info", "num_dropped", b"num_dropped", "participant", b"participant", "room", b"room", "track", b"track"]) -> None: ... - -global___WebhookEvent = WebhookEvent +from . import models as _models +from . import egress as _egress +from . import ingress as _ingress +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class WebhookEvent(_message.Message): + __slots__ = ("event", "room", "participant", "egress_info", "ingress_info", "track", "id", "created_at", "num_dropped") + EVENT_FIELD_NUMBER: _ClassVar[int] + ROOM_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_FIELD_NUMBER: _ClassVar[int] + EGRESS_INFO_FIELD_NUMBER: _ClassVar[int] + INGRESS_INFO_FIELD_NUMBER: _ClassVar[int] + TRACK_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + NUM_DROPPED_FIELD_NUMBER: _ClassVar[int] + event: str + room: _models.Room + participant: _models.ParticipantInfo + egress_info: _egress.EgressInfo + ingress_info: _ingress.IngressInfo + track: _models.TrackInfo + id: str + created_at: int + num_dropped: int + def __init__(self, event: _Optional[str] = ..., room: _Optional[_Union[_models.Room, _Mapping]] = ..., participant: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., egress_info: _Optional[_Union[_egress.EgressInfo, _Mapping]] = ..., ingress_info: _Optional[_Union[_ingress.IngressInfo, _Mapping]] = ..., track: _Optional[_Union[_models.TrackInfo, _Mapping]] = ..., id: _Optional[str] = ..., created_at: _Optional[int] = ..., num_dropped: _Optional[int] = ...) -> None: ... diff --git a/livekit-protocol/setup.py b/livekit-protocol/setup.py index 6152191a..9bec5035 100644 --- a/livekit-protocol/setup.py +++ b/livekit-protocol/setup.py @@ -14,11 +14,12 @@ import os import pathlib +from typing import Any, Dict -import setuptools +import setuptools # type: ignore here = pathlib.Path(__file__).parent.resolve() -about = {} +about: Dict[Any, Any] = {} with open(os.path.join(here, "livekit", "protocol", "version.py"), "r") as f: exec(f.read(), about) @@ -48,7 +49,7 @@ "types-protobuf>=4,<5", ], package_data={ - "livekit.protocol": ["*.pyi", "**/*.pyi"], + "livekit.protocol": ["*.pyi", "**/*.pyi", "py.typed"], }, project_urls={ "Documentation": "https://docs.livekit.io", diff --git a/livekit-rtc/livekit/rtc/__init__.py b/livekit-rtc/livekit/rtc/__init__.py index 4a467570..5242cf8c 100644 --- a/livekit-rtc/livekit/rtc/__init__.py +++ b/livekit-rtc/livekit/rtc/__init__.py @@ -12,58 +12,56 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""LiveKit RTC SDK -""" +"""LiveKit RTC SDK""" +from ._proto import stats_pb2 as stats +from ._proto.e2ee_pb2 import EncryptionState, EncryptionType from ._proto.room_pb2 import ( ConnectionQuality, ConnectionState, - DataPacketKind, - TrackPublishOptions, - IceTransportType, ContinualGatheringPolicy, + DataPacketKind, IceServer, + IceTransportType, + TrackPublishOptions, ) -from ._proto.e2ee_pb2 import EncryptionType, EncryptionState from ._proto.track_pb2 import StreamState, TrackKind, TrackSource from ._proto.video_frame_pb2 import VideoBufferType, VideoRotation -from ._proto import stats_pb2 as stats from .audio_frame import AudioFrame from .audio_source import AudioSource -from .audio_stream import AudioStream, AudioFrameEvent +from .audio_stream import AudioFrameEvent, AudioStream +from .chat import ChatManager, ChatMessage +from .e2ee import ( + E2EEManager, + E2EEOptions, + FrameCryptor, + KeyProvider, + KeyProviderOptions, +) from .participant import LocalParticipant, Participant, RemoteParticipant -from .room import ConnectError, Room, RoomOptions, RtcConfiguration, DataPacket +from .room import ConnectError, DataPacket, Room, RoomOptions, RtcConfiguration from .track import ( + AudioTrack, LocalAudioTrack, + LocalTrack, LocalVideoTrack, RemoteAudioTrack, + RemoteTrack, RemoteVideoTrack, Track, - LocalTrack, - RemoteTrack, - AudioTrack, VideoTrack, ) -from .e2ee import ( - E2EEManager, - E2EEOptions, - KeyProviderOptions, - KeyProvider, - FrameCryptor, -) from .track_publication import ( LocalTrackPublication, RemoteTrackPublication, TrackPublication, ) +from .version import __version__ from .video_frame import ( VideoFrame, ) from .video_source import VideoSource -from .video_stream import VideoStream, VideoFrameEvent -from .chat import ChatManager, ChatMessage - -from .version import __version__ +from .video_stream import VideoFrameEvent, VideoStream __all__ = [ "ConnectionQuality", diff --git a/livekit-rtc/livekit/rtc/py.typed b/livekit-rtc/livekit/rtc/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/livekit-rtc/livekit/rtc/resources/__init__.py b/livekit-rtc/livekit/rtc/resources/__init__.py index 806a592d..2133c643 100644 --- a/livekit-rtc/livekit/rtc/resources/__init__.py +++ b/livekit-rtc/livekit/rtc/resources/__init__.py @@ -1 +1 @@ -""" Used by importlib.resources and setuptools """ +"""Used by importlib.resources and setuptools""" diff --git a/livekit-rtc/livekit/rtc/room.py b/livekit-rtc/livekit/rtc/room.py index be9f8400..cda92c17 100644 --- a/livekit-rtc/livekit/rtc/room.py +++ b/livekit-rtc/livekit/rtc/room.py @@ -16,15 +16,16 @@ import ctypes import logging from dataclasses import dataclass, field -from typing import Dict, Optional, Literal -from ._ffi_client import FfiHandle, FfiClient +from typing import Dict, Literal, Optional + +from ._event_emitter import EventEmitter +from ._ffi_client import FfiClient, FfiHandle from ._proto import ffi_pb2 as proto_ffi from ._proto import participant_pb2 as proto_participant from ._proto import room_pb2 as proto_room from ._proto.room_pb2 import ConnectionState from ._proto.track_pb2 import TrackKind from ._utils import BroadcastQueue -from ._event_emitter import EventEmitter from .e2ee import E2EEManager, E2EEOptions from .participant import LocalParticipant, Participant, RemoteParticipant from .track import RemoteAudioTrack, RemoteVideoTrack @@ -80,9 +81,9 @@ class RoomOptions: class DataPacket: data: bytes kind: proto_room.DataPacketKind.ValueType - participant: Optional[ - RemoteParticipant - ] = None # None when the data has been sent by a server SDK + participant: Optional[RemoteParticipant] = ( + None # None when the data has been sent by a server SDK + ) topic: Optional[str] = None diff --git a/livekit-rtc/setup.py b/livekit-rtc/setup.py index 6b413113..8c5e8d44 100644 --- a/livekit-rtc/setup.py +++ b/livekit-rtc/setup.py @@ -14,13 +14,15 @@ import os import pathlib -import setuptools -import setuptools.command.build_py -from wheel.bdist_wheel import bdist_wheel as _bdist_wheel -from wheel.bdist_wheel import get_platform +from typing import Any, Dict + +import setuptools # type: ignore +import setuptools.command.build_py # type: ignore +from wheel.bdist_wheel import bdist_wheel as _bdist_wheel # type: ignore +from wheel.bdist_wheel import get_platform # type: ignore here = pathlib.Path(__file__).parent.resolve() -about = {} +about: Dict[Any, Any] = {} with open(os.path.join(here, "livekit", "rtc", "version.py"), "r") as f: exec(f.read(), about)