diff --git a/livekit-protocol/generate_proto.sh b/livekit-protocol/generate_proto.sh index 26fed685..6fe99749 100755 --- a/livekit-protocol/generate_proto.sh +++ b/livekit-protocol/generate_proto.sh @@ -38,6 +38,7 @@ protoc \ $API_PROTOCOL/livekit_analytics.proto \ $API_PROTOCOL/livekit_rtc.proto \ $API_PROTOCOL/agent/livekit_agent_session.proto \ + $API_PROTOCOL/agent/livekit_agent_inference.proto \ $API_PROTOCOL/agent/livekit_agent_text.proto \ $API_PROTOCOL/agent/livekit_agent_dev.proto \ $API_PROTOCOL/logger/options.proto \ @@ -87,6 +88,8 @@ mv "$API_OUT_PYTHON/livekit_connector_pb2.py" "$API_OUT_PYTHON/connector.py" mv "$API_OUT_PYTHON/livekit_connector_pb2.pyi" "$API_OUT_PYTHON/connector.pyi" mkdir -p "$API_OUT_PYTHON/agent_pb" +mv "$API_OUT_PYTHON/agent/livekit_agent_inference_pb2.py" "$API_OUT_PYTHON/agent_pb/agent_inference.py" +mv "$API_OUT_PYTHON/agent/livekit_agent_inference_pb2.pyi" "$API_OUT_PYTHON/agent_pb/agent_inference.pyi" mv "$API_OUT_PYTHON/agent/livekit_agent_session_pb2.py" "$API_OUT_PYTHON/agent_pb/agent_session.py" mv "$API_OUT_PYTHON/agent/livekit_agent_session_pb2.pyi" "$API_OUT_PYTHON/agent_pb/agent_session.pyi" mv "$API_OUT_PYTHON/agent/livekit_agent_text_pb2.py" "$API_OUT_PYTHON/agent_pb/agent_text.py" @@ -98,7 +101,7 @@ mkdir -p "$API_OUT_PYTHON/logger_pb" mv "$API_OUT_PYTHON/logger/options_pb2.py" "$API_OUT_PYTHON/logger_pb/options.py" mv "$API_OUT_PYTHON/logger/options_pb2.pyi" "$API_OUT_PYTHON/logger_pb/options.pyi" -find "$API_OUT_PYTHON" -name '*.py' -o -name '*.pyi' | xargs perl -i -pe 's|^(import (livekit_egress_pb2\|livekit_room_pb2\|livekit_webhook_pb2\|livekit_ingress_pb2\|livekit_models_pb2\|livekit_agent_pb2\|livekit_agent_dispatch_pb2\|livekit_analytics_pb2\|livekit_sip_pb2\|livekit_metrics_pb2\|livekit_rtc_pb2\|livekit_connector_whatsapp_pb2\|livekit_connector_twilio_pb2\|livekit_connector_pb2\|livekit_agent_session_pb2\|livekit_agent_dev_pb2\|options_pb2))|from . $1|g' +find "$API_OUT_PYTHON" -name '*.py' -o -name '*.pyi' | xargs perl -i -pe 's|^(import (livekit_egress_pb2\|livekit_room_pb2\|livekit_webhook_pb2\|livekit_ingress_pb2\|livekit_models_pb2\|livekit_agent_pb2\|livekit_agent_dispatch_pb2\|livekit_analytics_pb2\|livekit_sip_pb2\|livekit_metrics_pb2\|livekit_rtc_pb2\|livekit_connector_whatsapp_pb2\|livekit_connector_twilio_pb2\|livekit_connector_pb2\|livekit_agent_session_pb2\|livekit_agent_inference_pb2\|livekit_agent_dev_pb2\|livekit_agent_text_pb2\|options_pb2))|from . $1|g' find "$API_OUT_PYTHON" -name '*.py' -o -name '*.pyi' | xargs perl -i -pe 's|livekit_(\w+)_pb2|${1}|g' @@ -112,4 +115,4 @@ find "$API_OUT_PYTHON" -mindepth 2 -name '*.py' -o -name '*.pyi' | xargs perl -i find "$API_OUT_PYTHON"/agent_pb -name '*.py' -o -name '*.pyi' | xargs perl -i -pe 's|from agent import (agent_\w+) as ([^ ]+)|from . import $1 as $2|g' # fixes - error: ClassVar can only be used for assignments in class body [misc] -perl -i -pe 's|^(\w+_FIELD_NUMBER): _ClassVar\[int\]|$1: int|g' "$API_OUT_PYTHON/logger_pb/options.pyi" \ No newline at end of file +perl -i -pe 's|^(\w+_FIELD_NUMBER): _ClassVar\[int\]|$1: int|g' "$API_OUT_PYTHON/logger_pb/options.pyi" diff --git a/livekit-protocol/livekit/protocol/agent_pb/__init__.py b/livekit-protocol/livekit/protocol/agent_pb/__init__.py index 1bb98552..a2404969 100644 --- a/livekit-protocol/livekit/protocol/agent_pb/__init__.py +++ b/livekit-protocol/livekit/protocol/agent_pb/__init__.py @@ -1 +1 @@ -from . import agent_dev, agent_session, agent_text \ No newline at end of file +from . import agent_dev, agent_session, agent_text, agent_inference diff --git a/livekit-protocol/livekit/protocol/agent_pb/agent_inference.py b/livekit-protocol/livekit/protocol/agent_pb/agent_inference.py new file mode 100644 index 00000000..e07eaf2d --- /dev/null +++ b/livekit-protocol/livekit/protocol/agent_pb/agent_inference.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: agent/livekit_agent_inference.proto +# Protobuf Python Version: 4.25.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from . import agent_session as agent_dot__agent__session_ +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#agent/livekit_agent_inference.proto\x12\rlivekit.agent\x1a!agent/livekit_agent_session.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe1\x01\n\x0fSessionSettings\x12\x13\n\x0bsample_rate\x18\x01 \x01(\r\x12.\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\x1c.livekit.agent.AudioEncoding\x12\x32\n\x0c\x65ot_settings\x18\x03 \x01(\x0b\x32\x1a.livekit.agent.EotSettingsH\x00\x12\x44\n\x15interruption_settings\x18\x04 \x01(\x0b\x32#.livekit.agent.InterruptionSettingsH\x00\x42\x0f\n\rtype_settings\"/\n\x0eInferenceError\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0c\n\x04\x63ode\x18\x02 \x01(\r\"D\n\x0b\x45otSettings\x12\x35\n\x12\x64\x65tection_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xe5\x01\n\x14InterruptionSettings\x12\x11\n\tthreshold\x18\x01 \x01(\x02\x12\x12\n\nmin_frames\x18\x02 \x01(\r\x12\x35\n\x12max_audio_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15\x61udio_prefix_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x12\x64\x65tection_interval\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\"A\n\rSessionCreate\x12\x30\n\x08settings\x18\x01 \x01(\x0b\x32\x1e.livekit.agent.SessionSettings\"`\n\nInputAudio\x12\r\n\x05\x61udio\x18\x01 \x01(\x0c\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0bnum_samples\x18\x03 \x01(\r\"C\n\x13\x45otInputChatContext\x12,\n\x08messages\x18\x01 \x03(\x0b\x32\x1a.livekit.agent.ChatMessage\"\x0e\n\x0cSessionFlush\"\x0e\n\x0cSessionClose\"$\n\x0eInferenceStart\x12\x12\n\nrequest_id\x18\x01 \x01(\t\"#\n\rInferenceStop\x12\x12\n\nrequest_id\x18\x01 \x01(\t\"\r\n\x0b\x42ufferStart\"\x0c\n\nBufferStop\"\xbe\x04\n\rClientMessage\x12.\n\ncreated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x36\n\x0esession_create\x18\x02 \x01(\x0b\x32\x1c.livekit.agent.SessionCreateH\x00\x12\x30\n\x0binput_audio\x18\x03 \x01(\x0b\x32\x19.livekit.agent.InputAudioH\x00\x12\x34\n\rsession_flush\x18\x04 \x01(\x0b\x32\x1b.livekit.agent.SessionFlushH\x00\x12\x34\n\rsession_close\x18\x05 \x01(\x0b\x32\x1b.livekit.agent.SessionCloseH\x00\x12\x38\n\x0finference_start\x18\x06 \x01(\x0b\x32\x1d.livekit.agent.InferenceStartH\x00\x12\x36\n\x0einference_stop\x18\x07 \x01(\x0b\x32\x1c.livekit.agent.InferenceStopH\x00\x12\x32\n\x0c\x62uffer_start\x18\x08 \x01(\x0b\x32\x1a.livekit.agent.BufferStartH\x00\x12\x30\n\x0b\x62uffer_stop\x18\t \x01(\x0b\x32\x19.livekit.agent.BufferStopH\x00\x12\x44\n\x16\x65ot_input_chat_context\x18\n \x01(\x0b\x32\".livekit.agent.EotInputChatContextH\x00\x42\t\n\x07message\"\x81\x01\n\x13\x45otInferenceRequest\x12\r\n\x05\x61udio\x18\x01 \x01(\x0c\x12\x16\n\x0e\x61ssistant_text\x18\x02 \x01(\t\x12.\n\x08\x65ncoding\x18\x03 \x01(\x0e\x32\x1c.livekit.agent.AudioEncoding\x12\x13\n\x0bsample_rate\x18\x04 \x01(\r\"r\n\x1cInterruptionInferenceRequest\x12\r\n\x05\x61udio\x18\x01 \x01(\x0c\x12.\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\x1c.livekit.agent.AudioEncoding\x12\x13\n\x0bsample_rate\x18\x03 \x01(\r\"\xb9\x01\n\x10InferenceRequest\x12\x43\n\x15\x65ot_inference_request\x18\x01 \x01(\x0b\x32\".livekit.agent.EotInferenceRequestH\x00\x12U\n\x1einterruption_inference_request\x18\x02 \x01(\x0b\x32+.livekit.agent.InterruptionInferenceRequestH\x00\x42\t\n\x07request\"\xd0\x03\n\x0eInferenceStats\x12\x43\n\x1a\x65\x61rliest_client_created_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x88\x01\x01\x12\x41\n\x18latest_client_created_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x12:\n\x12\x63lient_e2e_latency\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x02\x88\x01\x01\x12\x35\n\x12server_e2e_latency\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16preprocessing_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x12inference_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\x1d\n\x1b_earliest_client_created_atB\x1b\n\x19_latest_client_created_atB\x15\n\x13_client_e2e_latency\"Y\n\x14\x45otInferenceResponse\x12\x13\n\x0bprobability\x18\x01 \x01(\x02\x12,\n\x05stats\x18\x02 \x01(\x0b\x32\x1d.livekit.agent.InferenceStats\"}\n\x1dInterruptionInferenceResponse\x12\x17\n\x0fis_interruption\x18\x01 \x01(\x08\x12\x15\n\rprobabilities\x18\x02 \x03(\x02\x12,\n\x05stats\x18\x03 \x01(\x0b\x32\x1d.livekit.agent.InferenceStats\"\xbf\x01\n\x11InferenceResponse\x12\x45\n\x16\x65ot_inference_response\x18\x01 \x01(\x0b\x32#.livekit.agent.EotInferenceResponseH\x00\x12W\n\x1finterruption_inference_response\x18\x02 \x01(\x0b\x32,.livekit.agent.InterruptionInferenceResponseH\x00\x42\n\n\x08response\"\x10\n\x0eSessionCreated\"\x12\n\x10InferenceStarted\"\x12\n\x10InferenceStopped\"\x0f\n\rSessionClosed\"\xef\x01\n\rEotPrediction\x12\x13\n\x0bprobability\x18\x01 \x01(\x02\x12\x36\n\x0finference_stats\x18\x02 \x01(\x0b\x32\x1d.livekit.agent.InferenceStats\x12\x38\n\x07\x62\x61\x63kend\x18\x03 \x01(\x0e\x32\'.livekit.agent.EotPrediction.EotBackend\"W\n\nEotBackend\x12\x17\n\x13\x45OT_BACKEND_UNKNOWN\x10\x00\x12\x1a\n\x16\x45OT_BACKEND_MULTIMODAL\x10\x01\x12\x14\n\x10\x45OT_BACKEND_TEXT\x10\x02\"\x80\x01\n\x16InterruptionPrediction\x12\x17\n\x0fis_interruption\x18\x01 \x01(\x08\x12\x15\n\rprobabilities\x18\x02 \x03(\x02\x12\x36\n\x0finference_stats\x18\x03 \x01(\x0b\x32\x1d.livekit.agent.InferenceStats\"\xeb\x04\n\rServerMessage\x12\x35\n\x11server_created_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x17\n\nrequest_id\x18\x02 \x01(\tH\x01\x88\x01\x01\x12:\n\x11\x63lient_created_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x38\n\x0fsession_created\x18\x04 \x01(\x0b\x32\x1d.livekit.agent.SessionCreatedH\x00\x12<\n\x11inference_started\x18\x05 \x01(\x0b\x32\x1f.livekit.agent.InferenceStartedH\x00\x12<\n\x11inference_stopped\x18\x06 \x01(\x0b\x32\x1f.livekit.agent.InferenceStoppedH\x00\x12\x36\n\x0esession_closed\x18\x07 \x01(\x0b\x32\x1c.livekit.agent.SessionClosedH\x00\x12.\n\x05\x65rror\x18\x08 \x01(\x0b\x32\x1d.livekit.agent.InferenceErrorH\x00\x12\x36\n\x0e\x65ot_prediction\x18\t \x01(\x0b\x32\x1c.livekit.agent.EotPredictionH\x00\x12H\n\x17interruption_prediction\x18\n \x01(\x0b\x32%.livekit.agent.InterruptionPredictionH\x00\x42\t\n\x07messageB\r\n\x0b_request_idB\x14\n\x12_client_created_at*F\n\rAudioEncoding\x12\x1c\n\x18\x41UDIO_ENCODING_PCM_S16LE\x10\x00\x12\x17\n\x13\x41UDIO_ENCODING_OPUS\x10\x01\x42NH\x01Z)github.com/livekit/protocol/livekit/agent\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'agent.agent_inference', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._options = None + _globals['DESCRIPTOR']._serialized_options = b'H\001Z)github.com/livekit/protocol/livekit/agent\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _globals['_AUDIOENCODING']._serialized_start=4065 + _globals['_AUDIOENCODING']._serialized_end=4135 + _globals['_SESSIONSETTINGS']._serialized_start=155 + _globals['_SESSIONSETTINGS']._serialized_end=380 + _globals['_INFERENCEERROR']._serialized_start=382 + _globals['_INFERENCEERROR']._serialized_end=429 + _globals['_EOTSETTINGS']._serialized_start=431 + _globals['_EOTSETTINGS']._serialized_end=499 + _globals['_INTERRUPTIONSETTINGS']._serialized_start=502 + _globals['_INTERRUPTIONSETTINGS']._serialized_end=731 + _globals['_SESSIONCREATE']._serialized_start=733 + _globals['_SESSIONCREATE']._serialized_end=798 + _globals['_INPUTAUDIO']._serialized_start=800 + _globals['_INPUTAUDIO']._serialized_end=896 + _globals['_EOTINPUTCHATCONTEXT']._serialized_start=898 + _globals['_EOTINPUTCHATCONTEXT']._serialized_end=965 + _globals['_SESSIONFLUSH']._serialized_start=967 + _globals['_SESSIONFLUSH']._serialized_end=981 + _globals['_SESSIONCLOSE']._serialized_start=983 + _globals['_SESSIONCLOSE']._serialized_end=997 + _globals['_INFERENCESTART']._serialized_start=999 + _globals['_INFERENCESTART']._serialized_end=1035 + _globals['_INFERENCESTOP']._serialized_start=1037 + _globals['_INFERENCESTOP']._serialized_end=1072 + _globals['_BUFFERSTART']._serialized_start=1074 + _globals['_BUFFERSTART']._serialized_end=1087 + _globals['_BUFFERSTOP']._serialized_start=1089 + _globals['_BUFFERSTOP']._serialized_end=1101 + _globals['_CLIENTMESSAGE']._serialized_start=1104 + _globals['_CLIENTMESSAGE']._serialized_end=1678 + _globals['_EOTINFERENCEREQUEST']._serialized_start=1681 + _globals['_EOTINFERENCEREQUEST']._serialized_end=1810 + _globals['_INTERRUPTIONINFERENCEREQUEST']._serialized_start=1812 + _globals['_INTERRUPTIONINFERENCEREQUEST']._serialized_end=1926 + _globals['_INFERENCEREQUEST']._serialized_start=1929 + _globals['_INFERENCEREQUEST']._serialized_end=2114 + _globals['_INFERENCESTATS']._serialized_start=2117 + _globals['_INFERENCESTATS']._serialized_end=2581 + _globals['_EOTINFERENCERESPONSE']._serialized_start=2583 + _globals['_EOTINFERENCERESPONSE']._serialized_end=2672 + _globals['_INTERRUPTIONINFERENCERESPONSE']._serialized_start=2674 + _globals['_INTERRUPTIONINFERENCERESPONSE']._serialized_end=2799 + _globals['_INFERENCERESPONSE']._serialized_start=2802 + _globals['_INFERENCERESPONSE']._serialized_end=2993 + _globals['_SESSIONCREATED']._serialized_start=2995 + _globals['_SESSIONCREATED']._serialized_end=3011 + _globals['_INFERENCESTARTED']._serialized_start=3013 + _globals['_INFERENCESTARTED']._serialized_end=3031 + _globals['_INFERENCESTOPPED']._serialized_start=3033 + _globals['_INFERENCESTOPPED']._serialized_end=3051 + _globals['_SESSIONCLOSED']._serialized_start=3053 + _globals['_SESSIONCLOSED']._serialized_end=3068 + _globals['_EOTPREDICTION']._serialized_start=3071 + _globals['_EOTPREDICTION']._serialized_end=3310 + _globals['_EOTPREDICTION_EOTBACKEND']._serialized_start=3223 + _globals['_EOTPREDICTION_EOTBACKEND']._serialized_end=3310 + _globals['_INTERRUPTIONPREDICTION']._serialized_start=3313 + _globals['_INTERRUPTIONPREDICTION']._serialized_end=3441 + _globals['_SERVERMESSAGE']._serialized_start=3444 + _globals['_SERVERMESSAGE']._serialized_end=4063 +# @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/agent_pb/agent_inference.pyi b/livekit-protocol/livekit/protocol/agent_pb/agent_inference.pyi new file mode 100644 index 00000000..19fe0f84 --- /dev/null +++ b/livekit-protocol/livekit/protocol/agent_pb/agent_inference.pyi @@ -0,0 +1,271 @@ +from . import agent_session as _agent_session +from google.protobuf import duration_pb2 as _duration_pb2 +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 AudioEncoding(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + AUDIO_ENCODING_PCM_S16LE: _ClassVar[AudioEncoding] + AUDIO_ENCODING_OPUS: _ClassVar[AudioEncoding] +AUDIO_ENCODING_PCM_S16LE: AudioEncoding +AUDIO_ENCODING_OPUS: AudioEncoding + +class SessionSettings(_message.Message): + __slots__ = ("sample_rate", "encoding", "eot_settings", "interruption_settings") + SAMPLE_RATE_FIELD_NUMBER: _ClassVar[int] + ENCODING_FIELD_NUMBER: _ClassVar[int] + EOT_SETTINGS_FIELD_NUMBER: _ClassVar[int] + INTERRUPTION_SETTINGS_FIELD_NUMBER: _ClassVar[int] + sample_rate: int + encoding: AudioEncoding + eot_settings: EotSettings + interruption_settings: InterruptionSettings + def __init__(self, sample_rate: _Optional[int] = ..., encoding: _Optional[_Union[AudioEncoding, str]] = ..., eot_settings: _Optional[_Union[EotSettings, _Mapping]] = ..., interruption_settings: _Optional[_Union[InterruptionSettings, _Mapping]] = ...) -> None: ... + +class InferenceError(_message.Message): + __slots__ = ("message", "code") + MESSAGE_FIELD_NUMBER: _ClassVar[int] + CODE_FIELD_NUMBER: _ClassVar[int] + message: str + code: int + def __init__(self, message: _Optional[str] = ..., code: _Optional[int] = ...) -> None: ... + +class EotSettings(_message.Message): + __slots__ = ("detection_interval",) + DETECTION_INTERVAL_FIELD_NUMBER: _ClassVar[int] + detection_interval: _duration_pb2.Duration + def __init__(self, detection_interval: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + +class InterruptionSettings(_message.Message): + __slots__ = ("threshold", "min_frames", "max_audio_duration", "audio_prefix_duration", "detection_interval") + THRESHOLD_FIELD_NUMBER: _ClassVar[int] + MIN_FRAMES_FIELD_NUMBER: _ClassVar[int] + MAX_AUDIO_DURATION_FIELD_NUMBER: _ClassVar[int] + AUDIO_PREFIX_DURATION_FIELD_NUMBER: _ClassVar[int] + DETECTION_INTERVAL_FIELD_NUMBER: _ClassVar[int] + threshold: float + min_frames: int + max_audio_duration: _duration_pb2.Duration + audio_prefix_duration: _duration_pb2.Duration + detection_interval: _duration_pb2.Duration + def __init__(self, threshold: _Optional[float] = ..., min_frames: _Optional[int] = ..., max_audio_duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., audio_prefix_duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., detection_interval: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + +class SessionCreate(_message.Message): + __slots__ = ("settings",) + SETTINGS_FIELD_NUMBER: _ClassVar[int] + settings: SessionSettings + def __init__(self, settings: _Optional[_Union[SessionSettings, _Mapping]] = ...) -> None: ... + +class InputAudio(_message.Message): + __slots__ = ("audio", "created_at", "num_samples") + AUDIO_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + NUM_SAMPLES_FIELD_NUMBER: _ClassVar[int] + audio: bytes + created_at: _timestamp_pb2.Timestamp + num_samples: int + def __init__(self, audio: _Optional[bytes] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., num_samples: _Optional[int] = ...) -> None: ... + +class EotInputChatContext(_message.Message): + __slots__ = ("messages",) + MESSAGES_FIELD_NUMBER: _ClassVar[int] + messages: _containers.RepeatedCompositeFieldContainer[_agent_session.ChatMessage] + def __init__(self, messages: _Optional[_Iterable[_Union[_agent_session.ChatMessage, _Mapping]]] = ...) -> None: ... + +class SessionFlush(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class SessionClose(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class InferenceStart(_message.Message): + __slots__ = ("request_id",) + REQUEST_ID_FIELD_NUMBER: _ClassVar[int] + request_id: str + def __init__(self, request_id: _Optional[str] = ...) -> None: ... + +class InferenceStop(_message.Message): + __slots__ = ("request_id",) + REQUEST_ID_FIELD_NUMBER: _ClassVar[int] + request_id: str + def __init__(self, request_id: _Optional[str] = ...) -> None: ... + +class BufferStart(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class BufferStop(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ClientMessage(_message.Message): + __slots__ = ("created_at", "session_create", "input_audio", "session_flush", "session_close", "inference_start", "inference_stop", "buffer_start", "buffer_stop", "eot_input_chat_context") + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + SESSION_CREATE_FIELD_NUMBER: _ClassVar[int] + INPUT_AUDIO_FIELD_NUMBER: _ClassVar[int] + SESSION_FLUSH_FIELD_NUMBER: _ClassVar[int] + SESSION_CLOSE_FIELD_NUMBER: _ClassVar[int] + INFERENCE_START_FIELD_NUMBER: _ClassVar[int] + INFERENCE_STOP_FIELD_NUMBER: _ClassVar[int] + BUFFER_START_FIELD_NUMBER: _ClassVar[int] + BUFFER_STOP_FIELD_NUMBER: _ClassVar[int] + EOT_INPUT_CHAT_CONTEXT_FIELD_NUMBER: _ClassVar[int] + created_at: _timestamp_pb2.Timestamp + session_create: SessionCreate + input_audio: InputAudio + session_flush: SessionFlush + session_close: SessionClose + inference_start: InferenceStart + inference_stop: InferenceStop + buffer_start: BufferStart + buffer_stop: BufferStop + eot_input_chat_context: EotInputChatContext + def __init__(self, created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., session_create: _Optional[_Union[SessionCreate, _Mapping]] = ..., input_audio: _Optional[_Union[InputAudio, _Mapping]] = ..., session_flush: _Optional[_Union[SessionFlush, _Mapping]] = ..., session_close: _Optional[_Union[SessionClose, _Mapping]] = ..., inference_start: _Optional[_Union[InferenceStart, _Mapping]] = ..., inference_stop: _Optional[_Union[InferenceStop, _Mapping]] = ..., buffer_start: _Optional[_Union[BufferStart, _Mapping]] = ..., buffer_stop: _Optional[_Union[BufferStop, _Mapping]] = ..., eot_input_chat_context: _Optional[_Union[EotInputChatContext, _Mapping]] = ...) -> None: ... + +class EotInferenceRequest(_message.Message): + __slots__ = ("audio", "assistant_text", "encoding", "sample_rate") + AUDIO_FIELD_NUMBER: _ClassVar[int] + ASSISTANT_TEXT_FIELD_NUMBER: _ClassVar[int] + ENCODING_FIELD_NUMBER: _ClassVar[int] + SAMPLE_RATE_FIELD_NUMBER: _ClassVar[int] + audio: bytes + assistant_text: str + encoding: AudioEncoding + sample_rate: int + def __init__(self, audio: _Optional[bytes] = ..., assistant_text: _Optional[str] = ..., encoding: _Optional[_Union[AudioEncoding, str]] = ..., sample_rate: _Optional[int] = ...) -> None: ... + +class InterruptionInferenceRequest(_message.Message): + __slots__ = ("audio", "encoding", "sample_rate") + AUDIO_FIELD_NUMBER: _ClassVar[int] + ENCODING_FIELD_NUMBER: _ClassVar[int] + SAMPLE_RATE_FIELD_NUMBER: _ClassVar[int] + audio: bytes + encoding: AudioEncoding + sample_rate: int + def __init__(self, audio: _Optional[bytes] = ..., encoding: _Optional[_Union[AudioEncoding, str]] = ..., sample_rate: _Optional[int] = ...) -> None: ... + +class InferenceRequest(_message.Message): + __slots__ = ("eot_inference_request", "interruption_inference_request") + EOT_INFERENCE_REQUEST_FIELD_NUMBER: _ClassVar[int] + INTERRUPTION_INFERENCE_REQUEST_FIELD_NUMBER: _ClassVar[int] + eot_inference_request: EotInferenceRequest + interruption_inference_request: InterruptionInferenceRequest + def __init__(self, eot_inference_request: _Optional[_Union[EotInferenceRequest, _Mapping]] = ..., interruption_inference_request: _Optional[_Union[InterruptionInferenceRequest, _Mapping]] = ...) -> None: ... + +class InferenceStats(_message.Message): + __slots__ = ("earliest_client_created_at", "latest_client_created_at", "client_e2e_latency", "server_e2e_latency", "preprocessing_duration", "inference_duration") + EARLIEST_CLIENT_CREATED_AT_FIELD_NUMBER: _ClassVar[int] + LATEST_CLIENT_CREATED_AT_FIELD_NUMBER: _ClassVar[int] + CLIENT_E2E_LATENCY_FIELD_NUMBER: _ClassVar[int] + SERVER_E2E_LATENCY_FIELD_NUMBER: _ClassVar[int] + PREPROCESSING_DURATION_FIELD_NUMBER: _ClassVar[int] + INFERENCE_DURATION_FIELD_NUMBER: _ClassVar[int] + earliest_client_created_at: _timestamp_pb2.Timestamp + latest_client_created_at: _timestamp_pb2.Timestamp + client_e2e_latency: _duration_pb2.Duration + server_e2e_latency: _duration_pb2.Duration + preprocessing_duration: _duration_pb2.Duration + inference_duration: _duration_pb2.Duration + def __init__(self, earliest_client_created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., latest_client_created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., client_e2e_latency: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., server_e2e_latency: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., preprocessing_duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., inference_duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + +class EotInferenceResponse(_message.Message): + __slots__ = ("probability", "stats") + PROBABILITY_FIELD_NUMBER: _ClassVar[int] + STATS_FIELD_NUMBER: _ClassVar[int] + probability: float + stats: InferenceStats + def __init__(self, probability: _Optional[float] = ..., stats: _Optional[_Union[InferenceStats, _Mapping]] = ...) -> None: ... + +class InterruptionInferenceResponse(_message.Message): + __slots__ = ("is_interruption", "probabilities", "stats") + IS_INTERRUPTION_FIELD_NUMBER: _ClassVar[int] + PROBABILITIES_FIELD_NUMBER: _ClassVar[int] + STATS_FIELD_NUMBER: _ClassVar[int] + is_interruption: bool + probabilities: _containers.RepeatedScalarFieldContainer[float] + stats: InferenceStats + def __init__(self, is_interruption: bool = ..., probabilities: _Optional[_Iterable[float]] = ..., stats: _Optional[_Union[InferenceStats, _Mapping]] = ...) -> None: ... + +class InferenceResponse(_message.Message): + __slots__ = ("eot_inference_response", "interruption_inference_response") + EOT_INFERENCE_RESPONSE_FIELD_NUMBER: _ClassVar[int] + INTERRUPTION_INFERENCE_RESPONSE_FIELD_NUMBER: _ClassVar[int] + eot_inference_response: EotInferenceResponse + interruption_inference_response: InterruptionInferenceResponse + def __init__(self, eot_inference_response: _Optional[_Union[EotInferenceResponse, _Mapping]] = ..., interruption_inference_response: _Optional[_Union[InterruptionInferenceResponse, _Mapping]] = ...) -> None: ... + +class SessionCreated(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class InferenceStarted(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class InferenceStopped(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class SessionClosed(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class EotPrediction(_message.Message): + __slots__ = ("probability", "inference_stats", "backend") + class EotBackend(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + EOT_BACKEND_UNKNOWN: _ClassVar[EotPrediction.EotBackend] + EOT_BACKEND_MULTIMODAL: _ClassVar[EotPrediction.EotBackend] + EOT_BACKEND_TEXT: _ClassVar[EotPrediction.EotBackend] + EOT_BACKEND_UNKNOWN: EotPrediction.EotBackend + EOT_BACKEND_MULTIMODAL: EotPrediction.EotBackend + EOT_BACKEND_TEXT: EotPrediction.EotBackend + PROBABILITY_FIELD_NUMBER: _ClassVar[int] + INFERENCE_STATS_FIELD_NUMBER: _ClassVar[int] + BACKEND_FIELD_NUMBER: _ClassVar[int] + probability: float + inference_stats: InferenceStats + backend: EotPrediction.EotBackend + def __init__(self, probability: _Optional[float] = ..., inference_stats: _Optional[_Union[InferenceStats, _Mapping]] = ..., backend: _Optional[_Union[EotPrediction.EotBackend, str]] = ...) -> None: ... + +class InterruptionPrediction(_message.Message): + __slots__ = ("is_interruption", "probabilities", "inference_stats") + IS_INTERRUPTION_FIELD_NUMBER: _ClassVar[int] + PROBABILITIES_FIELD_NUMBER: _ClassVar[int] + INFERENCE_STATS_FIELD_NUMBER: _ClassVar[int] + is_interruption: bool + probabilities: _containers.RepeatedScalarFieldContainer[float] + inference_stats: InferenceStats + def __init__(self, is_interruption: bool = ..., probabilities: _Optional[_Iterable[float]] = ..., inference_stats: _Optional[_Union[InferenceStats, _Mapping]] = ...) -> None: ... + +class ServerMessage(_message.Message): + __slots__ = ("server_created_at", "request_id", "client_created_at", "session_created", "inference_started", "inference_stopped", "session_closed", "error", "eot_prediction", "interruption_prediction") + SERVER_CREATED_AT_FIELD_NUMBER: _ClassVar[int] + REQUEST_ID_FIELD_NUMBER: _ClassVar[int] + CLIENT_CREATED_AT_FIELD_NUMBER: _ClassVar[int] + SESSION_CREATED_FIELD_NUMBER: _ClassVar[int] + INFERENCE_STARTED_FIELD_NUMBER: _ClassVar[int] + INFERENCE_STOPPED_FIELD_NUMBER: _ClassVar[int] + SESSION_CLOSED_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + EOT_PREDICTION_FIELD_NUMBER: _ClassVar[int] + INTERRUPTION_PREDICTION_FIELD_NUMBER: _ClassVar[int] + server_created_at: _timestamp_pb2.Timestamp + request_id: str + client_created_at: _timestamp_pb2.Timestamp + session_created: SessionCreated + inference_started: InferenceStarted + inference_stopped: InferenceStopped + session_closed: SessionClosed + error: InferenceError + eot_prediction: EotPrediction + interruption_prediction: InterruptionPrediction + def __init__(self, server_created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., request_id: _Optional[str] = ..., client_created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., session_created: _Optional[_Union[SessionCreated, _Mapping]] = ..., inference_started: _Optional[_Union[InferenceStarted, _Mapping]] = ..., inference_stopped: _Optional[_Union[InferenceStopped, _Mapping]] = ..., session_closed: _Optional[_Union[SessionClosed, _Mapping]] = ..., error: _Optional[_Union[InferenceError, _Mapping]] = ..., eot_prediction: _Optional[_Union[EotPrediction, _Mapping]] = ..., interruption_prediction: _Optional[_Union[InterruptionPrediction, _Mapping]] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/models.py b/livekit-protocol/livekit/protocol/models.py index 10b466e7..71eb11c8 100644 --- a/livekit-protocol/livekit/protocol/models.py +++ b/livekit-protocol/livekit/protocol/models.py @@ -17,7 +17,7 @@ from .logger_pb import options as logger_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14livekit_models.proto\x12\x07livekit\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x15livekit_metrics.proto\x1a\x14logger/options.proto\"9\n\nPagination\x12\x1c\n\x08\x61\x66ter_id\x18\x01 \x01(\tB\n\xbaP\x07\x61\x66terID\x12\r\n\x05limit\x18\x02 \x01(\x05\" \n\x0fTokenPagination\x12\r\n\x05token\x18\x01 \x01(\t\"E\n\nListUpdate\x12\x0b\n\x03set\x18\x01 \x03(\t\x12\x0b\n\x03\x61\x64\x64\x18\x02 \x03(\t\x12\x0e\n\x06remove\x18\x03 \x03(\t\x12\r\n\x05\x63lear\x18\x04 \x01(\x08\"\x89\x03\n\x04Room\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rempty_timeout\x18\x03 \x01(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\x0e \x01(\r\x12\x18\n\x10max_participants\x18\x04 \x01(\r\x12\x15\n\rcreation_time\x18\x05 \x01(\x03\x12\x18\n\x10\x63reation_time_ms\x18\x0f \x01(\x03\x12\x15\n\rturn_password\x18\x06 \x01(\t\x12&\n\x0e\x65nabled_codecs\x18\x07 \x03(\x0b\x32\x0e.livekit.Codec\x12\x36\n\x08metadata\x18\x08 \x01(\tB$\xa8P\x01\xb2P\x1e\x12\x18\n\x10num_participants\x18\t \x01(\r\x12\x16\n\x0enum_publishers\x18\x0b \x01(\r\x12\x18\n\x10\x61\x63tive_recording\x18\n \x01(\x08\x12&\n\x07version\x18\r \x01(\x0b\x32\x15.livekit.TimedVersion\"(\n\x05\x43odec\x12\x0c\n\x04mime\x18\x01 \x01(\t\x12\x11\n\tfmtp_line\x18\x02 \x01(\t\"9\n\x0cPlayoutDelay\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03min\x18\x02 \x01(\r\x12\x0b\n\x03max\x18\x03 \x01(\r\"\xa7\x02\n\x15ParticipantPermission\x12\x15\n\rcan_subscribe\x18\x01 \x01(\x08\x12\x13\n\x0b\x63\x61n_publish\x18\x02 \x01(\x08\x12\x18\n\x10\x63\x61n_publish_data\x18\x03 \x01(\x08\x12\x31\n\x13\x63\x61n_publish_sources\x18\t \x03(\x0e\x32\x14.livekit.TrackSource\x12\x0e\n\x06hidden\x18\x07 \x01(\x08\x12\x14\n\x08recorder\x18\x08 \x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13\x63\x61n_update_metadata\x18\n \x01(\x08\x12\x11\n\x05\x61gent\x18\x0b \x01(\x08\x42\x02\x18\x01\x12\x1d\n\x15\x63\x61n_subscribe_metrics\x18\x0c \x01(\x08\x12 \n\x18\x63\x61n_manage_agent_session\x18\r \x01(\x08\"\xe8\x07\n\x0fParticipantInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12-\n\x05state\x18\x03 \x01(\x0e\x32\x1e.livekit.ParticipantInfo.State\x12\"\n\x06tracks\x18\x04 \x03(\x0b\x32\x12.livekit.TrackInfo\x12\x36\n\x08metadata\x18\x05 \x01(\tB$\xa8P\x01\xb2P\x1e\x12\x11\n\tjoined_at\x18\x06 \x01(\x03\x12\x14\n\x0cjoined_at_ms\x18\x11 \x01(\x03\x12\x11\n\x04name\x18\t \x01(\tB\x03\xa8P\x01\x12\x0f\n\x07version\x18\n \x01(\r\x12\x32\n\npermission\x18\x0b \x01(\x0b\x32\x1e.livekit.ParticipantPermission\x12\x0e\n\x06region\x18\x0c \x01(\t\x12\x14\n\x0cis_publisher\x18\r \x01(\x08\x12+\n\x04kind\x18\x0e \x01(\x0e\x32\x1d.livekit.ParticipantInfo.Kind\x12\x62\n\nattributes\x18\x0f \x03(\x0b\x32(.livekit.ParticipantInfo.AttributesEntryB$\xa8P\x01\xb2P\x1e\x12\x34\n\x11\x64isconnect_reason\x18\x10 \x01(\x0e\x32\x19.livekit.DisconnectReason\x12\x39\n\x0ckind_details\x18\x12 \x03(\x0e\x32#.livekit.ParticipantInfo.KindDetail\x12+\n\x0b\x64\x61ta_tracks\x18\x13 \x03(\x0b\x32\x16.livekit.DataTrackInfo\x12\x17\n\x0f\x63lient_protocol\x18\x14 \x01(\x05\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\">\n\x05State\x12\x0b\n\x07JOINING\x10\x00\x12\n\n\x06JOINED\x10\x01\x12\n\n\x06\x41\x43TIVE\x10\x02\x12\x10\n\x0c\x44ISCONNECTED\x10\x03\"\\\n\x04Kind\x12\x0c\n\x08STANDARD\x10\x00\x12\x0b\n\x07INGRESS\x10\x01\x12\n\n\x06\x45GRESS\x10\x02\x12\x07\n\x03SIP\x10\x03\x12\t\n\x05\x41GENT\x10\x04\x12\r\n\tCONNECTOR\x10\x07\x12\n\n\x06\x42RIDGE\x10\x08\"k\n\nKindDetail\x12\x0f\n\x0b\x43LOUD_AGENT\x10\x00\x12\r\n\tFORWARDED\x10\x01\x12\x16\n\x12\x43ONNECTOR_WHATSAPP\x10\x02\x12\x14\n\x10\x43ONNECTOR_TWILIO\x10\x03\x12\x0f\n\x0b\x42RIDGE_RTSP\x10\x04\"3\n\nEncryption\"%\n\x04Type\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03GCM\x10\x01\x12\n\n\x06\x43USTOM\x10\x02\"\xab\x01\n\x12SimulcastCodecInfo\x12\x11\n\tmime_type\x18\x01 \x01(\t\x12\x0b\n\x03mid\x18\x02 \x01(\t\x12\x0b\n\x03\x63id\x18\x03 \x01(\t\x12#\n\x06layers\x18\x04 \x03(\x0b\x32\x13.livekit.VideoLayer\x12\x32\n\x10video_layer_mode\x18\x05 \x01(\x0e\x32\x18.livekit.VideoLayer.Mode\x12\x0f\n\x07sdp_cid\x18\x06 \x01(\t\"\x83\x05\n\tTrackInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12 \n\x04type\x18\x02 \x01(\x0e\x32\x12.livekit.TrackType\x12\x11\n\x04name\x18\x03 \x01(\tB\x03\xa8P\x01\x12\r\n\x05muted\x18\x04 \x01(\x08\x12\r\n\x05width\x18\x05 \x01(\r\x12\x0e\n\x06height\x18\x06 \x01(\r\x12\x15\n\tsimulcast\x18\x07 \x01(\x08\x42\x02\x18\x01\x12\x17\n\x0b\x64isable_dtx\x18\x08 \x01(\x08\x42\x02\x18\x01\x12$\n\x06source\x18\t \x01(\x0e\x32\x14.livekit.TrackSource\x12\'\n\x06layers\x18\n \x03(\x0b\x32\x13.livekit.VideoLayerB\x02\x18\x01\x12\x11\n\tmime_type\x18\x0b \x01(\t\x12\x0b\n\x03mid\x18\x0c \x01(\t\x12+\n\x06\x63odecs\x18\r \x03(\x0b\x32\x1b.livekit.SimulcastCodecInfo\x12\x12\n\x06stereo\x18\x0e \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0b\x64isable_red\x18\x0f \x01(\x08\x12,\n\nencryption\x18\x10 \x01(\x0e\x32\x18.livekit.Encryption.Type\x12\x0e\n\x06stream\x18\x11 \x01(\t\x12&\n\x07version\x18\x12 \x01(\x0b\x32\x15.livekit.TimedVersion\x12\x32\n\x0e\x61udio_features\x18\x13 \x03(\x0e\x32\x1a.livekit.AudioTrackFeature\x12\x37\n\x13\x62\x61\x63kup_codec_policy\x18\x14 \x01(\x0e\x32\x1a.livekit.BackupCodecPolicy\x12>\n\x17packet_trailer_features\x18\x15 \x03(\x0e\x32\x1d.livekit.PacketTrailerFeature\"l\n\rDataTrackInfo\x12\x12\n\npub_handle\x18\x01 \x01(\r\x12\x0b\n\x03sid\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12,\n\nencryption\x18\x04 \x01(\x0e\x32\x18.livekit.Encryption.Type\"f\n DataTrackExtensionParticipantSid\x12)\n\x02id\x18\x01 \x01(\x0e\x32\x1d.livekit.DataTrackExtensionID\x12\x17\n\x0fparticipant_sid\x18\x02 \x01(\t\"F\n\x1c\x44\x61taTrackSubscriptionOptions\x12\x17\n\ntarget_fps\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\r\n\x0b_target_fps\"\xc4\x02\n\nVideoLayer\x12&\n\x07quality\x18\x01 \x01(\x0e\x32\x15.livekit.VideoQuality\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x0f\n\x07\x62itrate\x18\x04 \x01(\r\x12\x0c\n\x04ssrc\x18\x05 \x01(\r\x12\x15\n\rspatial_layer\x18\x06 \x01(\x05\x12\x0b\n\x03rid\x18\x07 \x01(\t\x12\x13\n\x0brepair_ssrc\x18\x08 \x01(\r\"\x96\x01\n\x04Mode\x12\x0f\n\x0bMODE_UNUSED\x10\x00\x12 \n\x1cONE_SPATIAL_LAYER_PER_STREAM\x10\x01\x12&\n\"MULTIPLE_SPATIAL_LAYERS_PER_STREAM\x10\x02\x12\x33\n/ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR\x10\x03\"\xa7\x06\n\nDataPacket\x12*\n\x04kind\x18\x01 \x01(\x0e\x32\x18.livekit.DataPacket.KindB\x02\x18\x01\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x05 \x03(\t\x12#\n\x04user\x18\x02 \x01(\x0b\x32\x13.livekit.UserPacketH\x00\x12\x33\n\x07speaker\x18\x03 \x01(\x0b\x32\x1c.livekit.ActiveSpeakerUpdateB\x02\x18\x01H\x00\x12$\n\x08sip_dtmf\x18\x06 \x01(\x0b\x32\x10.livekit.SipDTMFH\x00\x12/\n\rtranscription\x18\x07 \x01(\x0b\x32\x16.livekit.TranscriptionH\x00\x12(\n\x07metrics\x18\x08 \x01(\x0b\x32\x15.livekit.MetricsBatchH\x00\x12,\n\x0c\x63hat_message\x18\t \x01(\x0b\x32\x14.livekit.ChatMessageH\x00\x12*\n\x0brpc_request\x18\n \x01(\x0b\x32\x13.livekit.RpcRequestH\x00\x12\"\n\x07rpc_ack\x18\x0b \x01(\x0b\x32\x0f.livekit.RpcAckH\x00\x12,\n\x0crpc_response\x18\x0c \x01(\x0b\x32\x14.livekit.RpcResponseH\x00\x12\x33\n\rstream_header\x18\r \x01(\x0b\x32\x1a.livekit.DataStream.HeaderH\x00\x12\x31\n\x0cstream_chunk\x18\x0e \x01(\x0b\x32\x19.livekit.DataStream.ChunkH\x00\x12\x35\n\x0estream_trailer\x18\x0f \x01(\x0b\x32\x1b.livekit.DataStream.TrailerH\x00\x12\x34\n\x10\x65ncrypted_packet\x18\x12 \x01(\x0b\x32\x18.livekit.EncryptedPacketH\x00\x12\x10\n\x08sequence\x18\x10 \x01(\r\x12\x17\n\x0fparticipant_sid\x18\x11 \x01(\t\"\x1f\n\x04Kind\x12\x0c\n\x08RELIABLE\x10\x00\x12\t\n\x05LOSSY\x10\x01\x42\x07\n\x05value\"|\n\x0f\x45ncryptedPacket\x12\x31\n\x0f\x65ncryption_type\x18\x01 \x01(\x0e\x32\x18.livekit.Encryption.Type\x12\n\n\x02iv\x18\x02 \x01(\x0c\x12\x11\n\tkey_index\x18\x03 \x01(\r\x12\x17\n\x0f\x65ncrypted_value\x18\x04 \x01(\x0c\"\x91\x03\n\x16\x45ncryptedPacketPayload\x12#\n\x04user\x18\x01 \x01(\x0b\x32\x13.livekit.UserPacketH\x00\x12,\n\x0c\x63hat_message\x18\x03 \x01(\x0b\x32\x14.livekit.ChatMessageH\x00\x12*\n\x0brpc_request\x18\x04 \x01(\x0b\x32\x13.livekit.RpcRequestH\x00\x12\"\n\x07rpc_ack\x18\x05 \x01(\x0b\x32\x0f.livekit.RpcAckH\x00\x12,\n\x0crpc_response\x18\x06 \x01(\x0b\x32\x14.livekit.RpcResponseH\x00\x12\x33\n\rstream_header\x18\x07 \x01(\x0b\x32\x1a.livekit.DataStream.HeaderH\x00\x12\x31\n\x0cstream_chunk\x18\x08 \x01(\x0b\x32\x19.livekit.DataStream.ChunkH\x00\x12\x35\n\x0estream_trailer\x18\t \x01(\x0b\x32\x1b.livekit.DataStream.TrailerH\x00\x42\x07\n\x05value\"A\n\x13\x41\x63tiveSpeakerUpdate\x12&\n\x08speakers\x18\x01 \x03(\x0b\x32\x14.livekit.SpeakerInfo:\x02\x18\x01\"9\n\x0bSpeakerInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\r\n\x05level\x18\x02 \x01(\x02\x12\x0e\n\x06\x61\x63tive\x18\x03 \x01(\x08\"\xaf\x02\n\nUserPacket\x12\x1b\n\x0fparticipant_sid\x18\x01 \x01(\tB\x02\x18\x01\x12 \n\x14participant_identity\x18\x05 \x01(\tB\x02\x18\x01\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x1c\n\x10\x64\x65stination_sids\x18\x03 \x03(\tB\x02\x18\x01\x12\"\n\x16\x64\x65stination_identities\x18\x06 \x03(\tB\x02\x18\x01\x12\x12\n\x05topic\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x02id\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nstart_time\x18\t \x01(\x04H\x02\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\n \x01(\x04H\x03\x88\x01\x01\x12\r\n\x05nonce\x18\x0b \x01(\x0c\x42\x08\n\x06_topicB\x05\n\x03_idB\r\n\x0b_start_timeB\x0b\n\t_end_time\"&\n\x07SipDTMF\x12\x0c\n\x04\x63ode\x18\x03 \x01(\r\x12\r\n\x05\x64igit\x18\x04 \x01(\t\"\x88\x01\n\rTranscription\x12(\n transcribed_participant_identity\x18\x02 \x01(\t\x12\x1c\n\x08track_id\x18\x03 \x01(\tB\n\xbaP\x07trackID\x12/\n\x08segments\x18\x04 \x03(\x0b\x32\x1d.livekit.TranscriptionSegment\"w\n\x14TranscriptionSegment\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x04 \x01(\x04\x12\r\n\x05\x66inal\x18\x05 \x01(\x08\x12\x10\n\x08language\x18\x06 \x01(\t\"\x91\x01\n\x0b\x43hatMessage\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\x12\x1b\n\x0e\x65\x64it_timestamp\x18\x03 \x01(\x03H\x00\x88\x01\x01\x12\x0f\n\x07message\x18\x04 \x01(\t\x12\x0f\n\x07\x64\x65leted\x18\x05 \x01(\x08\x12\x11\n\tgenerated\x18\x06 \x01(\x08\x42\x11\n\x0f_edit_timestamp\"\x83\x01\n\nRpcRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06method\x18\x02 \x01(\t\x12\x0f\n\x07payload\x18\x03 \x01(\t\x12\x1b\n\x13response_timeout_ms\x18\x04 \x01(\r\x12\x0f\n\x07version\x18\x05 \x01(\r\x12\x1a\n\x12\x63ompressed_payload\x18\x06 \x01(\x0c\"*\n\x06RpcAck\x12 \n\nrequest_id\x18\x01 \x01(\tB\x0c\xbaP\trequestID\"\x8d\x01\n\x0bRpcResponse\x12 \n\nrequest_id\x18\x01 \x01(\tB\x0c\xbaP\trequestID\x12\x11\n\x07payload\x18\x02 \x01(\tH\x00\x12\"\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.livekit.RpcErrorH\x00\x12\x1c\n\x12\x63ompressed_payload\x18\x04 \x01(\x0cH\x00\x42\x07\n\x05value\"7\n\x08RpcError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\t\"@\n\x11ParticipantTracks\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x12\n\ntrack_sids\x18\x02 \x03(\t\"\xd9\x01\n\nServerInfo\x12,\n\x07\x65\x64ition\x18\x01 \x01(\x0e\x32\x1b.livekit.ServerInfo.Edition\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x10\n\x08protocol\x18\x03 \x01(\x05\x12\x0e\n\x06region\x18\x04 \x01(\t\x12\x1a\n\x07node_id\x18\x05 \x01(\tB\t\xbaP\x06nodeID\x12\x12\n\ndebug_info\x18\x06 \x01(\t\x12\x16\n\x0e\x61gent_protocol\x18\x07 \x01(\x05\"\"\n\x07\x45\x64ition\x12\x0c\n\x08Standard\x10\x00\x12\t\n\x05\x43loud\x10\x01\"\xba\x03\n\nClientInfo\x12$\n\x03sdk\x18\x01 \x01(\x0e\x32\x17.livekit.ClientInfo.SDK\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x10\n\x08protocol\x18\x03 \x01(\x05\x12\n\n\x02os\x18\x04 \x01(\t\x12\x12\n\nos_version\x18\x05 \x01(\t\x12\x14\n\x0c\x64\x65vice_model\x18\x06 \x01(\t\x12\x0f\n\x07\x62rowser\x18\x07 \x01(\t\x12\x17\n\x0f\x62rowser_version\x18\x08 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\t \x01(\t\x12\x0f\n\x07network\x18\n \x01(\t\x12\x12\n\nother_sdks\x18\x0b \x01(\t\x12\x17\n\x0f\x63lient_protocol\x18\x0c \x01(\x05\"\xb3\x01\n\x03SDK\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x06\n\x02JS\x10\x01\x12\t\n\x05SWIFT\x10\x02\x12\x0b\n\x07\x41NDROID\x10\x03\x12\x0b\n\x07\x46LUTTER\x10\x04\x12\x06\n\x02GO\x10\x05\x12\t\n\x05UNITY\x10\x06\x12\x10\n\x0cREACT_NATIVE\x10\x07\x12\x08\n\x04RUST\x10\x08\x12\n\n\x06PYTHON\x10\t\x12\x07\n\x03\x43PP\x10\n\x12\r\n\tUNITY_WEB\x10\x0b\x12\x08\n\x04NODE\x10\x0c\x12\n\n\x06UNREAL\x10\r\x12\t\n\x05\x45SP32\x10\x0e\"\x8c\x02\n\x13\x43lientConfiguration\x12*\n\x05video\x18\x01 \x01(\x0b\x32\x1b.livekit.VideoConfiguration\x12+\n\x06screen\x18\x02 \x01(\x0b\x32\x1b.livekit.VideoConfiguration\x12\x37\n\x11resume_connection\x18\x03 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\x12\x30\n\x0f\x64isabled_codecs\x18\x04 \x01(\x0b\x32\x17.livekit.DisabledCodecs\x12\x31\n\x0b\x66orce_relay\x18\x05 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\"L\n\x12VideoConfiguration\x12\x36\n\x10hardware_encoder\x18\x01 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\"Q\n\x0e\x44isabledCodecs\x12\x1e\n\x06\x63odecs\x18\x01 \x03(\x0b\x32\x0e.livekit.Codec\x12\x1f\n\x07publish\x18\x02 \x03(\x0b\x32\x0e.livekit.Codec\"\x80\x02\n\x08RTPDrift\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x01\x12\x17\n\x0fstart_timestamp\x18\x04 \x01(\x04\x12\x15\n\rend_timestamp\x18\x05 \x01(\x04\x12\x17\n\x0frtp_clock_ticks\x18\x06 \x01(\x04\x12\x15\n\rdrift_samples\x18\x07 \x01(\x03\x12\x10\n\x08\x64rift_ms\x18\x08 \x01(\x01\x12\x12\n\nclock_rate\x18\t \x01(\x01\"\xd6\n\n\x08RTPStats\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x01\x12\x0f\n\x07packets\x18\x04 \x01(\r\x12\x13\n\x0bpacket_rate\x18\x05 \x01(\x01\x12\r\n\x05\x62ytes\x18\x06 \x01(\x04\x12\x14\n\x0cheader_bytes\x18\' \x01(\x04\x12\x0f\n\x07\x62itrate\x18\x07 \x01(\x01\x12\x14\n\x0cpackets_lost\x18\x08 \x01(\r\x12\x18\n\x10packet_loss_rate\x18\t \x01(\x01\x12\x1e\n\x16packet_loss_percentage\x18\n \x01(\x02\x12\x19\n\x11packets_duplicate\x18\x0b \x01(\r\x12\x1d\n\x15packet_duplicate_rate\x18\x0c \x01(\x01\x12\x17\n\x0f\x62ytes_duplicate\x18\r \x01(\x04\x12\x1e\n\x16header_bytes_duplicate\x18( \x01(\x04\x12\x19\n\x11\x62itrate_duplicate\x18\x0e \x01(\x01\x12\x17\n\x0fpackets_padding\x18\x0f \x01(\r\x12\x1b\n\x13packet_padding_rate\x18\x10 \x01(\x01\x12\x15\n\rbytes_padding\x18\x11 \x01(\x04\x12\x1c\n\x14header_bytes_padding\x18) \x01(\x04\x12\x17\n\x0f\x62itrate_padding\x18\x12 \x01(\x01\x12\x1c\n\x14packets_out_of_order\x18\x13 \x01(\r\x12\x0e\n\x06\x66rames\x18\x14 \x01(\r\x12\x12\n\nframe_rate\x18\x15 \x01(\x01\x12\x16\n\x0ejitter_current\x18\x16 \x01(\x01\x12\x12\n\njitter_max\x18\x17 \x01(\x01\x12:\n\rgap_histogram\x18\x18 \x03(\x0b\x32#.livekit.RTPStats.GapHistogramEntry\x12\r\n\x05nacks\x18\x19 \x01(\r\x12\x11\n\tnack_acks\x18% \x01(\r\x12\x13\n\x0bnack_misses\x18\x1a \x01(\r\x12\x15\n\rnack_repeated\x18& \x01(\r\x12\x0c\n\x04plis\x18\x1b \x01(\r\x12,\n\x08last_pli\x18\x1c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04\x66irs\x18\x1d \x01(\r\x12,\n\x08last_fir\x18\x1e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0brtt_current\x18\x1f \x01(\r\x12\x0f\n\x07rtt_max\x18 \x01(\r\x12\x12\n\nkey_frames\x18! \x01(\r\x12\x32\n\x0elast_key_frame\x18\" \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x17\n\x0flayer_lock_plis\x18# \x01(\r\x12\x37\n\x13last_layer_lock_pli\x18$ \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x0cpacket_drift\x18, \x01(\x0b\x32\x11.livekit.RTPDrift\x12+\n\x10ntp_report_drift\x18- \x01(\x0b\x32\x11.livekit.RTPDrift\x12/\n\x14rebased_report_drift\x18. \x01(\x0b\x32\x11.livekit.RTPDrift\x12\x30\n\x15received_report_drift\x18/ \x01(\x0b\x32\x11.livekit.RTPDrift\x1a\x33\n\x11GapHistogramEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\xa2\x01\n\x15RTCPSenderReportState\x12\x15\n\rrtp_timestamp\x18\x01 \x01(\r\x12\x19\n\x11rtp_timestamp_ext\x18\x02 \x01(\x04\x12\x15\n\rntp_timestamp\x18\x03 \x01(\x04\x12\n\n\x02\x61t\x18\x04 \x01(\x03\x12\x13\n\x0b\x61t_adjusted\x18\x05 \x01(\x03\x12\x0f\n\x07packets\x18\x06 \x01(\r\x12\x0e\n\x06octets\x18\x07 \x01(\x04\"\xc9\x02\n\x11RTPForwarderState\x12\x0f\n\x07started\x18\x01 \x01(\x08\x12\x1f\n\x17reference_layer_spatial\x18\x02 \x01(\x05\x12\x16\n\x0epre_start_time\x18\x03 \x01(\x03\x12\x1b\n\x13\x65xt_first_timestamp\x18\x04 \x01(\x04\x12$\n\x1c\x64ummy_start_timestamp_offset\x18\x05 \x01(\x04\x12+\n\nrtp_munger\x18\x06 \x01(\x0b\x32\x17.livekit.RTPMungerState\x12-\n\nvp8_munger\x18\x07 \x01(\x0b\x32\x17.livekit.VP8MungerStateH\x00\x12;\n\x13sender_report_state\x18\x08 \x03(\x0b\x32\x1e.livekit.RTCPSenderReportStateB\x0e\n\x0c\x63odec_munger\"\xcb\x01\n\x0eRTPMungerState\x12 \n\x18\x65xt_last_sequence_number\x18\x01 \x01(\x04\x12\'\n\x1f\x65xt_second_last_sequence_number\x18\x02 \x01(\x04\x12\x1a\n\x12\x65xt_last_timestamp\x18\x03 \x01(\x04\x12!\n\x19\x65xt_second_last_timestamp\x18\x04 \x01(\x04\x12\x13\n\x0blast_marker\x18\x05 \x01(\x08\x12\x1a\n\x12second_last_marker\x18\x06 \x01(\x08\"\xcd\x01\n\x0eVP8MungerState\x12\x30\n\x13\x65xt_last_picture_id\x18\x01 \x01(\x05\x42\x13\xbaP\x10\x65xtLastPictureID\x12\x17\n\x0fpicture_id_used\x18\x02 \x01(\x08\x12\x18\n\x10last_tl0_pic_idx\x18\x03 \x01(\r\x12\x18\n\x10tl0_pic_idx_used\x18\x04 \x01(\x08\x12\x10\n\x08tid_used\x18\x05 \x01(\x08\x12\x14\n\x0clast_key_idx\x18\x06 \x01(\r\x12\x14\n\x0ckey_idx_used\x18\x07 \x01(\x08\"1\n\x0cTimedVersion\x12\x12\n\nunix_micro\x18\x01 \x01(\x03\x12\r\n\x05ticks\x18\x02 \x01(\x05\"\x88\x08\n\nDataStream\x1a\xb8\x01\n\nTextHeader\x12\x39\n\x0eoperation_type\x18\x01 \x01(\x0e\x32!.livekit.DataStream.OperationType\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12.\n\x12reply_to_stream_id\x18\x03 \x01(\tB\x12\xbaP\x0freplyToStreamID\x12\x1b\n\x13\x61ttached_stream_ids\x18\x04 \x03(\t\x12\x11\n\tgenerated\x18\x05 \x01(\x08\x1a\x1a\n\nByteHeader\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a\xb3\x03\n\x06Header\x12\x1e\n\tstream_id\x18\x01 \x01(\tB\x0b\xbaP\x08streamID\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\x12\r\n\x05topic\x18\x03 \x01(\t\x12\x11\n\tmime_type\x18\x04 \x01(\t\x12\x19\n\x0ctotal_length\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\x35\n\x0f\x65ncryption_type\x18\x07 \x01(\x0e\x32\x18.livekit.Encryption.TypeB\x02\x18\x01\x12>\n\nattributes\x18\x08 \x03(\x0b\x32*.livekit.DataStream.Header.AttributesEntry\x12\x35\n\x0btext_header\x18\t \x01(\x0b\x32\x1e.livekit.DataStream.TextHeaderH\x00\x12\x35\n\x0b\x62yte_header\x18\n \x01(\x0b\x32\x1e.livekit.DataStream.ByteHeaderH\x00\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x10\n\x0e\x63ontent_headerB\x0f\n\r_total_length\x1az\n\x05\x43hunk\x12\x1e\n\tstream_id\x18\x01 \x01(\tB\x0b\xbaP\x08streamID\x12\x13\n\x0b\x63hunk_index\x18\x02 \x01(\x04\x12\x0f\n\x07\x63ontent\x18\x03 \x01(\x0c\x12\x0f\n\x07version\x18\x04 \x01(\x05\x12\x13\n\x02iv\x18\x05 \x01(\x0c\x42\x02\x18\x01H\x00\x88\x01\x01\x42\x05\n\x03_iv\x1a\xad\x01\n\x07Trailer\x12\x1e\n\tstream_id\x18\x01 \x01(\tB\x0b\xbaP\x08streamID\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12?\n\nattributes\x18\x03 \x03(\x0b\x32+.livekit.DataStream.Trailer.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"A\n\rOperationType\x12\n\n\x06\x43REATE\x10\x00\x12\n\n\x06UPDATE\x10\x01\x12\n\n\x06\x44\x45LETE\x10\x02\x12\x0c\n\x08REACTION\x10\x03\">\n\x0c\x46ilterParams\x12\x16\n\x0einclude_events\x18\x01 \x03(\t\x12\x16\n\x0e\x65xclude_events\x18\x02 \x03(\t\"_\n\rWebhookConfig\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x0bsigning_key\x18\x02 \x01(\t\x12,\n\rfilter_params\x18\x03 \x01(\x0b\x32\x15.livekit.FilterParams\"6\n\x14SubscribedAudioCodec\x12\r\n\x05\x63odec\x18\x01 \x01(\t\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08*;\n\nAudioCodec\x12\x0e\n\nDEFAULT_AC\x10\x00\x12\x08\n\x04OPUS\x10\x01\x12\x07\n\x03\x41\x41\x43\x10\x02\x12\n\n\x06\x41\x43_MP3\x10\x03*V\n\nVideoCodec\x12\x0e\n\nDEFAULT_VC\x10\x00\x12\x11\n\rH264_BASELINE\x10\x01\x12\r\n\tH264_MAIN\x10\x02\x12\r\n\tH264_HIGH\x10\x03\x12\x07\n\x03VP8\x10\x04*)\n\nImageCodec\x12\x0e\n\nIC_DEFAULT\x10\x00\x12\x0b\n\x07IC_JPEG\x10\x01*I\n\x11\x42\x61\x63kupCodecPolicy\x12\x15\n\x11PREFER_REGRESSION\x10\x00\x12\r\n\tSIMULCAST\x10\x01\x12\x0e\n\nREGRESSION\x10\x02*+\n\tTrackType\x12\t\n\x05\x41UDIO\x10\x00\x12\t\n\x05VIDEO\x10\x01\x12\x08\n\x04\x44\x41TA\x10\x02*`\n\x0bTrackSource\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x43\x41MERA\x10\x01\x12\x0e\n\nMICROPHONE\x10\x02\x12\x10\n\x0cSCREEN_SHARE\x10\x03\x12\x16\n\x12SCREEN_SHARE_AUDIO\x10\x04*B\n\x14\x44\x61taTrackExtensionID\x12\x10\n\x0c\x44TEI_INVALID\x10\x00\x12\x18\n\x14\x44TEI_PARTICIPANT_SID\x10\x01*6\n\x0cVideoQuality\x12\x07\n\x03LOW\x10\x00\x12\n\n\x06MEDIUM\x10\x01\x12\x08\n\x04HIGH\x10\x02\x12\x07\n\x03OFF\x10\x03*@\n\x11\x43onnectionQuality\x12\x08\n\x04POOR\x10\x00\x12\x08\n\x04GOOD\x10\x01\x12\r\n\tEXCELLENT\x10\x02\x12\x08\n\x04LOST\x10\x03*;\n\x13\x43lientConfigSetting\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x0b\n\x07\x45NABLED\x10\x02*\xe8\x02\n\x10\x44isconnectReason\x12\x12\n\x0eUNKNOWN_REASON\x10\x00\x12\x14\n\x10\x43LIENT_INITIATED\x10\x01\x12\x16\n\x12\x44UPLICATE_IDENTITY\x10\x02\x12\x13\n\x0fSERVER_SHUTDOWN\x10\x03\x12\x17\n\x13PARTICIPANT_REMOVED\x10\x04\x12\x10\n\x0cROOM_DELETED\x10\x05\x12\x12\n\x0eSTATE_MISMATCH\x10\x06\x12\x10\n\x0cJOIN_FAILURE\x10\x07\x12\r\n\tMIGRATION\x10\x08\x12\x10\n\x0cSIGNAL_CLOSE\x10\t\x12\x0f\n\x0bROOM_CLOSED\x10\n\x12\x14\n\x10USER_UNAVAILABLE\x10\x0b\x12\x11\n\rUSER_REJECTED\x10\x0c\x12\x15\n\x11SIP_TRUNK_FAILURE\x10\r\x12\x16\n\x12\x43ONNECTION_TIMEOUT\x10\x0e\x12\x11\n\rMEDIA_FAILURE\x10\x0f\x12\x0f\n\x0b\x41GENT_ERROR\x10\x10*\x89\x01\n\x0fReconnectReason\x12\x0e\n\nRR_UNKNOWN\x10\x00\x12\x1a\n\x16RR_SIGNAL_DISCONNECTED\x10\x01\x12\x17\n\x13RR_PUBLISHER_FAILED\x10\x02\x12\x18\n\x14RR_SUBSCRIBER_FAILED\x10\x03\x12\x17\n\x13RR_SWITCH_CANDIDATE\x10\x04*T\n\x11SubscriptionError\x12\x0e\n\nSE_UNKNOWN\x10\x00\x12\x18\n\x14SE_CODEC_UNSUPPORTED\x10\x01\x12\x15\n\x11SE_TRACK_NOTFOUND\x10\x02*\xbd\x01\n\x11\x41udioTrackFeature\x12\r\n\tTF_STEREO\x10\x00\x12\r\n\tTF_NO_DTX\x10\x01\x12\x18\n\x14TF_AUTO_GAIN_CONTROL\x10\x02\x12\x18\n\x14TF_ECHO_CANCELLATION\x10\x03\x12\x18\n\x14TF_NOISE_SUPPRESSION\x10\x04\x12\"\n\x1eTF_ENHANCED_NOISE_CANCELLATION\x10\x05\x12\x18\n\x14TF_PRECONNECT_BUFFER\x10\x06*@\n\x14PacketTrailerFeature\x12\x16\n\x12PTF_USER_TIMESTAMP\x10\x00\x12\x10\n\x0cPTF_FRAME_ID\x10\x01\x42\x46Z#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14livekit_models.proto\x12\x07livekit\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x15livekit_metrics.proto\x1a\x14logger/options.proto\"9\n\nPagination\x12\x1c\n\x08\x61\x66ter_id\x18\x01 \x01(\tB\n\xbaP\x07\x61\x66terID\x12\r\n\x05limit\x18\x02 \x01(\x05\" \n\x0fTokenPagination\x12\r\n\x05token\x18\x01 \x01(\t\"E\n\nListUpdate\x12\x0b\n\x03set\x18\x01 \x03(\t\x12\x0b\n\x03\x61\x64\x64\x18\x02 \x03(\t\x12\x0e\n\x06remove\x18\x03 \x03(\t\x12\r\n\x05\x63lear\x18\x04 \x01(\x08\"\x89\x03\n\x04Room\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rempty_timeout\x18\x03 \x01(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\x0e \x01(\r\x12\x18\n\x10max_participants\x18\x04 \x01(\r\x12\x15\n\rcreation_time\x18\x05 \x01(\x03\x12\x18\n\x10\x63reation_time_ms\x18\x0f \x01(\x03\x12\x15\n\rturn_password\x18\x06 \x01(\t\x12&\n\x0e\x65nabled_codecs\x18\x07 \x03(\x0b\x32\x0e.livekit.Codec\x12\x36\n\x08metadata\x18\x08 \x01(\tB$\xa8P\x01\xb2P\x1e\x12\x18\n\x10num_participants\x18\t \x01(\r\x12\x16\n\x0enum_publishers\x18\x0b \x01(\r\x12\x18\n\x10\x61\x63tive_recording\x18\n \x01(\x08\x12&\n\x07version\x18\r \x01(\x0b\x32\x15.livekit.TimedVersion\"(\n\x05\x43odec\x12\x0c\n\x04mime\x18\x01 \x01(\t\x12\x11\n\tfmtp_line\x18\x02 \x01(\t\"9\n\x0cPlayoutDelay\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03min\x18\x02 \x01(\r\x12\x0b\n\x03max\x18\x03 \x01(\r\"\xa7\x02\n\x15ParticipantPermission\x12\x15\n\rcan_subscribe\x18\x01 \x01(\x08\x12\x13\n\x0b\x63\x61n_publish\x18\x02 \x01(\x08\x12\x18\n\x10\x63\x61n_publish_data\x18\x03 \x01(\x08\x12\x31\n\x13\x63\x61n_publish_sources\x18\t \x03(\x0e\x32\x14.livekit.TrackSource\x12\x0e\n\x06hidden\x18\x07 \x01(\x08\x12\x14\n\x08recorder\x18\x08 \x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13\x63\x61n_update_metadata\x18\n \x01(\x08\x12\x11\n\x05\x61gent\x18\x0b \x01(\x08\x42\x02\x18\x01\x12\x1d\n\x15\x63\x61n_subscribe_metrics\x18\x0c \x01(\x08\x12 \n\x18\x63\x61n_manage_agent_session\x18\r \x01(\x08\"\xe8\x07\n\x0fParticipantInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12-\n\x05state\x18\x03 \x01(\x0e\x32\x1e.livekit.ParticipantInfo.State\x12\"\n\x06tracks\x18\x04 \x03(\x0b\x32\x12.livekit.TrackInfo\x12\x36\n\x08metadata\x18\x05 \x01(\tB$\xa8P\x01\xb2P\x1e\x12\x11\n\tjoined_at\x18\x06 \x01(\x03\x12\x14\n\x0cjoined_at_ms\x18\x11 \x01(\x03\x12\x11\n\x04name\x18\t \x01(\tB\x03\xa8P\x01\x12\x0f\n\x07version\x18\n \x01(\r\x12\x32\n\npermission\x18\x0b \x01(\x0b\x32\x1e.livekit.ParticipantPermission\x12\x0e\n\x06region\x18\x0c \x01(\t\x12\x14\n\x0cis_publisher\x18\r \x01(\x08\x12+\n\x04kind\x18\x0e \x01(\x0e\x32\x1d.livekit.ParticipantInfo.Kind\x12\x62\n\nattributes\x18\x0f \x03(\x0b\x32(.livekit.ParticipantInfo.AttributesEntryB$\xa8P\x01\xb2P\x1e\x12\x34\n\x11\x64isconnect_reason\x18\x10 \x01(\x0e\x32\x19.livekit.DisconnectReason\x12\x39\n\x0ckind_details\x18\x12 \x03(\x0e\x32#.livekit.ParticipantInfo.KindDetail\x12+\n\x0b\x64\x61ta_tracks\x18\x13 \x03(\x0b\x32\x16.livekit.DataTrackInfo\x12\x17\n\x0f\x63lient_protocol\x18\x14 \x01(\x05\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\">\n\x05State\x12\x0b\n\x07JOINING\x10\x00\x12\n\n\x06JOINED\x10\x01\x12\n\n\x06\x41\x43TIVE\x10\x02\x12\x10\n\x0c\x44ISCONNECTED\x10\x03\"\\\n\x04Kind\x12\x0c\n\x08STANDARD\x10\x00\x12\x0b\n\x07INGRESS\x10\x01\x12\n\n\x06\x45GRESS\x10\x02\x12\x07\n\x03SIP\x10\x03\x12\t\n\x05\x41GENT\x10\x04\x12\r\n\tCONNECTOR\x10\x07\x12\n\n\x06\x42RIDGE\x10\x08\"k\n\nKindDetail\x12\x0f\n\x0b\x43LOUD_AGENT\x10\x00\x12\r\n\tFORWARDED\x10\x01\x12\x16\n\x12\x43ONNECTOR_WHATSAPP\x10\x02\x12\x14\n\x10\x43ONNECTOR_TWILIO\x10\x03\x12\x0f\n\x0b\x42RIDGE_RTSP\x10\x04\"3\n\nEncryption\"%\n\x04Type\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03GCM\x10\x01\x12\n\n\x06\x43USTOM\x10\x02\"\xab\x01\n\x12SimulcastCodecInfo\x12\x11\n\tmime_type\x18\x01 \x01(\t\x12\x0b\n\x03mid\x18\x02 \x01(\t\x12\x0b\n\x03\x63id\x18\x03 \x01(\t\x12#\n\x06layers\x18\x04 \x03(\x0b\x32\x13.livekit.VideoLayer\x12\x32\n\x10video_layer_mode\x18\x05 \x01(\x0e\x32\x18.livekit.VideoLayer.Mode\x12\x0f\n\x07sdp_cid\x18\x06 \x01(\t\"\x83\x05\n\tTrackInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12 \n\x04type\x18\x02 \x01(\x0e\x32\x12.livekit.TrackType\x12\x11\n\x04name\x18\x03 \x01(\tB\x03\xa8P\x01\x12\r\n\x05muted\x18\x04 \x01(\x08\x12\r\n\x05width\x18\x05 \x01(\r\x12\x0e\n\x06height\x18\x06 \x01(\r\x12\x15\n\tsimulcast\x18\x07 \x01(\x08\x42\x02\x18\x01\x12\x17\n\x0b\x64isable_dtx\x18\x08 \x01(\x08\x42\x02\x18\x01\x12$\n\x06source\x18\t \x01(\x0e\x32\x14.livekit.TrackSource\x12\'\n\x06layers\x18\n \x03(\x0b\x32\x13.livekit.VideoLayerB\x02\x18\x01\x12\x11\n\tmime_type\x18\x0b \x01(\t\x12\x0b\n\x03mid\x18\x0c \x01(\t\x12+\n\x06\x63odecs\x18\r \x03(\x0b\x32\x1b.livekit.SimulcastCodecInfo\x12\x12\n\x06stereo\x18\x0e \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0b\x64isable_red\x18\x0f \x01(\x08\x12,\n\nencryption\x18\x10 \x01(\x0e\x32\x18.livekit.Encryption.Type\x12\x0e\n\x06stream\x18\x11 \x01(\t\x12&\n\x07version\x18\x12 \x01(\x0b\x32\x15.livekit.TimedVersion\x12\x32\n\x0e\x61udio_features\x18\x13 \x03(\x0e\x32\x1a.livekit.AudioTrackFeature\x12\x37\n\x13\x62\x61\x63kup_codec_policy\x18\x14 \x01(\x0e\x32\x1a.livekit.BackupCodecPolicy\x12>\n\x17packet_trailer_features\x18\x15 \x03(\x0e\x32\x1d.livekit.PacketTrailerFeature\"l\n\rDataTrackInfo\x12\x12\n\npub_handle\x18\x01 \x01(\r\x12\x0b\n\x03sid\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12,\n\nencryption\x18\x04 \x01(\x0e\x32\x18.livekit.Encryption.Type\"f\n DataTrackExtensionParticipantSid\x12)\n\x02id\x18\x01 \x01(\x0e\x32\x1d.livekit.DataTrackExtensionID\x12\x17\n\x0fparticipant_sid\x18\x02 \x01(\t\"F\n\x1c\x44\x61taTrackSubscriptionOptions\x12\x17\n\ntarget_fps\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\r\n\x0b_target_fps\"\xc4\x02\n\nVideoLayer\x12&\n\x07quality\x18\x01 \x01(\x0e\x32\x15.livekit.VideoQuality\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x0f\n\x07\x62itrate\x18\x04 \x01(\r\x12\x0c\n\x04ssrc\x18\x05 \x01(\r\x12\x15\n\rspatial_layer\x18\x06 \x01(\x05\x12\x0b\n\x03rid\x18\x07 \x01(\t\x12\x13\n\x0brepair_ssrc\x18\x08 \x01(\r\"\x96\x01\n\x04Mode\x12\x0f\n\x0bMODE_UNUSED\x10\x00\x12 \n\x1cONE_SPATIAL_LAYER_PER_STREAM\x10\x01\x12&\n\"MULTIPLE_SPATIAL_LAYERS_PER_STREAM\x10\x02\x12\x33\n/ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR\x10\x03\"\xa7\x06\n\nDataPacket\x12*\n\x04kind\x18\x01 \x01(\x0e\x32\x18.livekit.DataPacket.KindB\x02\x18\x01\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x05 \x03(\t\x12#\n\x04user\x18\x02 \x01(\x0b\x32\x13.livekit.UserPacketH\x00\x12\x33\n\x07speaker\x18\x03 \x01(\x0b\x32\x1c.livekit.ActiveSpeakerUpdateB\x02\x18\x01H\x00\x12$\n\x08sip_dtmf\x18\x06 \x01(\x0b\x32\x10.livekit.SipDTMFH\x00\x12/\n\rtranscription\x18\x07 \x01(\x0b\x32\x16.livekit.TranscriptionH\x00\x12(\n\x07metrics\x18\x08 \x01(\x0b\x32\x15.livekit.MetricsBatchH\x00\x12,\n\x0c\x63hat_message\x18\t \x01(\x0b\x32\x14.livekit.ChatMessageH\x00\x12*\n\x0brpc_request\x18\n \x01(\x0b\x32\x13.livekit.RpcRequestH\x00\x12\"\n\x07rpc_ack\x18\x0b \x01(\x0b\x32\x0f.livekit.RpcAckH\x00\x12,\n\x0crpc_response\x18\x0c \x01(\x0b\x32\x14.livekit.RpcResponseH\x00\x12\x33\n\rstream_header\x18\r \x01(\x0b\x32\x1a.livekit.DataStream.HeaderH\x00\x12\x31\n\x0cstream_chunk\x18\x0e \x01(\x0b\x32\x19.livekit.DataStream.ChunkH\x00\x12\x35\n\x0estream_trailer\x18\x0f \x01(\x0b\x32\x1b.livekit.DataStream.TrailerH\x00\x12\x34\n\x10\x65ncrypted_packet\x18\x12 \x01(\x0b\x32\x18.livekit.EncryptedPacketH\x00\x12\x10\n\x08sequence\x18\x10 \x01(\r\x12\x17\n\x0fparticipant_sid\x18\x11 \x01(\t\"\x1f\n\x04Kind\x12\x0c\n\x08RELIABLE\x10\x00\x12\t\n\x05LOSSY\x10\x01\x42\x07\n\x05value\"|\n\x0f\x45ncryptedPacket\x12\x31\n\x0f\x65ncryption_type\x18\x01 \x01(\x0e\x32\x18.livekit.Encryption.Type\x12\n\n\x02iv\x18\x02 \x01(\x0c\x12\x11\n\tkey_index\x18\x03 \x01(\r\x12\x17\n\x0f\x65ncrypted_value\x18\x04 \x01(\x0c\"\x91\x03\n\x16\x45ncryptedPacketPayload\x12#\n\x04user\x18\x01 \x01(\x0b\x32\x13.livekit.UserPacketH\x00\x12,\n\x0c\x63hat_message\x18\x03 \x01(\x0b\x32\x14.livekit.ChatMessageH\x00\x12*\n\x0brpc_request\x18\x04 \x01(\x0b\x32\x13.livekit.RpcRequestH\x00\x12\"\n\x07rpc_ack\x18\x05 \x01(\x0b\x32\x0f.livekit.RpcAckH\x00\x12,\n\x0crpc_response\x18\x06 \x01(\x0b\x32\x14.livekit.RpcResponseH\x00\x12\x33\n\rstream_header\x18\x07 \x01(\x0b\x32\x1a.livekit.DataStream.HeaderH\x00\x12\x31\n\x0cstream_chunk\x18\x08 \x01(\x0b\x32\x19.livekit.DataStream.ChunkH\x00\x12\x35\n\x0estream_trailer\x18\t \x01(\x0b\x32\x1b.livekit.DataStream.TrailerH\x00\x42\x07\n\x05value\"A\n\x13\x41\x63tiveSpeakerUpdate\x12&\n\x08speakers\x18\x01 \x03(\x0b\x32\x14.livekit.SpeakerInfo:\x02\x18\x01\"9\n\x0bSpeakerInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\r\n\x05level\x18\x02 \x01(\x02\x12\x0e\n\x06\x61\x63tive\x18\x03 \x01(\x08\"\xaf\x02\n\nUserPacket\x12\x1b\n\x0fparticipant_sid\x18\x01 \x01(\tB\x02\x18\x01\x12 \n\x14participant_identity\x18\x05 \x01(\tB\x02\x18\x01\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x1c\n\x10\x64\x65stination_sids\x18\x03 \x03(\tB\x02\x18\x01\x12\"\n\x16\x64\x65stination_identities\x18\x06 \x03(\tB\x02\x18\x01\x12\x12\n\x05topic\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x02id\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nstart_time\x18\t \x01(\x04H\x02\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\n \x01(\x04H\x03\x88\x01\x01\x12\r\n\x05nonce\x18\x0b \x01(\x0c\x42\x08\n\x06_topicB\x05\n\x03_idB\r\n\x0b_start_timeB\x0b\n\t_end_time\"&\n\x07SipDTMF\x12\x0c\n\x04\x63ode\x18\x03 \x01(\r\x12\r\n\x05\x64igit\x18\x04 \x01(\t\"\x88\x01\n\rTranscription\x12(\n transcribed_participant_identity\x18\x02 \x01(\t\x12\x1c\n\x08track_id\x18\x03 \x01(\tB\n\xbaP\x07trackID\x12/\n\x08segments\x18\x04 \x03(\x0b\x32\x1d.livekit.TranscriptionSegment\"w\n\x14TranscriptionSegment\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x04 \x01(\x04\x12\r\n\x05\x66inal\x18\x05 \x01(\x08\x12\x10\n\x08language\x18\x06 \x01(\t\"\x91\x01\n\x0b\x43hatMessage\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\x12\x1b\n\x0e\x65\x64it_timestamp\x18\x03 \x01(\x03H\x00\x88\x01\x01\x12\x0f\n\x07message\x18\x04 \x01(\t\x12\x0f\n\x07\x64\x65leted\x18\x05 \x01(\x08\x12\x11\n\tgenerated\x18\x06 \x01(\x08\x42\x11\n\x0f_edit_timestamp\"\x83\x01\n\nRpcRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06method\x18\x02 \x01(\t\x12\x0f\n\x07payload\x18\x03 \x01(\t\x12\x1b\n\x13response_timeout_ms\x18\x04 \x01(\r\x12\x0f\n\x07version\x18\x05 \x01(\r\x12\x1a\n\x12\x63ompressed_payload\x18\x06 \x01(\x0c\"*\n\x06RpcAck\x12 \n\nrequest_id\x18\x01 \x01(\tB\x0c\xbaP\trequestID\"\x8d\x01\n\x0bRpcResponse\x12 \n\nrequest_id\x18\x01 \x01(\tB\x0c\xbaP\trequestID\x12\x11\n\x07payload\x18\x02 \x01(\tH\x00\x12\"\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.livekit.RpcErrorH\x00\x12\x1c\n\x12\x63ompressed_payload\x18\x04 \x01(\x0cH\x00\x42\x07\n\x05value\"7\n\x08RpcError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\t\"@\n\x11ParticipantTracks\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x12\n\ntrack_sids\x18\x02 \x03(\t\"\xd9\x01\n\nServerInfo\x12,\n\x07\x65\x64ition\x18\x01 \x01(\x0e\x32\x1b.livekit.ServerInfo.Edition\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x10\n\x08protocol\x18\x03 \x01(\x05\x12\x0e\n\x06region\x18\x04 \x01(\t\x12\x1a\n\x07node_id\x18\x05 \x01(\tB\t\xbaP\x06nodeID\x12\x12\n\ndebug_info\x18\x06 \x01(\t\x12\x16\n\x0e\x61gent_protocol\x18\x07 \x01(\x05\"\"\n\x07\x45\x64ition\x12\x0c\n\x08Standard\x10\x00\x12\t\n\x05\x43loud\x10\x01\"\xa6\x04\n\nClientInfo\x12$\n\x03sdk\x18\x01 \x01(\x0e\x32\x17.livekit.ClientInfo.SDK\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x10\n\x08protocol\x18\x03 \x01(\x05\x12\n\n\x02os\x18\x04 \x01(\t\x12\x12\n\nos_version\x18\x05 \x01(\t\x12\x14\n\x0c\x64\x65vice_model\x18\x06 \x01(\t\x12\x0f\n\x07\x62rowser\x18\x07 \x01(\t\x12\x17\n\x0f\x62rowser_version\x18\x08 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\t \x01(\t\x12\x0f\n\x07network\x18\n \x01(\t\x12\x12\n\nother_sdks\x18\x0b \x01(\t\x12\x17\n\x0f\x63lient_protocol\x18\x0c \x01(\x05\x12\x34\n\x0c\x63\x61pabilities\x18\r \x03(\x0e\x32\x1e.livekit.ClientInfo.Capability\"\xb3\x01\n\x03SDK\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x06\n\x02JS\x10\x01\x12\t\n\x05SWIFT\x10\x02\x12\x0b\n\x07\x41NDROID\x10\x03\x12\x0b\n\x07\x46LUTTER\x10\x04\x12\x06\n\x02GO\x10\x05\x12\t\n\x05UNITY\x10\x06\x12\x10\n\x0cREACT_NATIVE\x10\x07\x12\x08\n\x04RUST\x10\x08\x12\n\n\x06PYTHON\x10\t\x12\x07\n\x03\x43PP\x10\n\x12\r\n\tUNITY_WEB\x10\x0b\x12\x08\n\x04NODE\x10\x0c\x12\n\n\x06UNREAL\x10\r\x12\t\n\x05\x45SP32\x10\x0e\"4\n\nCapability\x12\x0e\n\nCAP_UNUSED\x10\x00\x12\x16\n\x12\x43\x41P_PACKET_TRAILER\x10\x01\"\x8c\x02\n\x13\x43lientConfiguration\x12*\n\x05video\x18\x01 \x01(\x0b\x32\x1b.livekit.VideoConfiguration\x12+\n\x06screen\x18\x02 \x01(\x0b\x32\x1b.livekit.VideoConfiguration\x12\x37\n\x11resume_connection\x18\x03 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\x12\x30\n\x0f\x64isabled_codecs\x18\x04 \x01(\x0b\x32\x17.livekit.DisabledCodecs\x12\x31\n\x0b\x66orce_relay\x18\x05 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\"L\n\x12VideoConfiguration\x12\x36\n\x10hardware_encoder\x18\x01 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\"Q\n\x0e\x44isabledCodecs\x12\x1e\n\x06\x63odecs\x18\x01 \x03(\x0b\x32\x0e.livekit.Codec\x12\x1f\n\x07publish\x18\x02 \x03(\x0b\x32\x0e.livekit.Codec\"\x80\x02\n\x08RTPDrift\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x01\x12\x17\n\x0fstart_timestamp\x18\x04 \x01(\x04\x12\x15\n\rend_timestamp\x18\x05 \x01(\x04\x12\x17\n\x0frtp_clock_ticks\x18\x06 \x01(\x04\x12\x15\n\rdrift_samples\x18\x07 \x01(\x03\x12\x10\n\x08\x64rift_ms\x18\x08 \x01(\x01\x12\x12\n\nclock_rate\x18\t \x01(\x01\"\xd6\n\n\x08RTPStats\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x01\x12\x0f\n\x07packets\x18\x04 \x01(\r\x12\x13\n\x0bpacket_rate\x18\x05 \x01(\x01\x12\r\n\x05\x62ytes\x18\x06 \x01(\x04\x12\x14\n\x0cheader_bytes\x18\' \x01(\x04\x12\x0f\n\x07\x62itrate\x18\x07 \x01(\x01\x12\x14\n\x0cpackets_lost\x18\x08 \x01(\r\x12\x18\n\x10packet_loss_rate\x18\t \x01(\x01\x12\x1e\n\x16packet_loss_percentage\x18\n \x01(\x02\x12\x19\n\x11packets_duplicate\x18\x0b \x01(\r\x12\x1d\n\x15packet_duplicate_rate\x18\x0c \x01(\x01\x12\x17\n\x0f\x62ytes_duplicate\x18\r \x01(\x04\x12\x1e\n\x16header_bytes_duplicate\x18( \x01(\x04\x12\x19\n\x11\x62itrate_duplicate\x18\x0e \x01(\x01\x12\x17\n\x0fpackets_padding\x18\x0f \x01(\r\x12\x1b\n\x13packet_padding_rate\x18\x10 \x01(\x01\x12\x15\n\rbytes_padding\x18\x11 \x01(\x04\x12\x1c\n\x14header_bytes_padding\x18) \x01(\x04\x12\x17\n\x0f\x62itrate_padding\x18\x12 \x01(\x01\x12\x1c\n\x14packets_out_of_order\x18\x13 \x01(\r\x12\x0e\n\x06\x66rames\x18\x14 \x01(\r\x12\x12\n\nframe_rate\x18\x15 \x01(\x01\x12\x16\n\x0ejitter_current\x18\x16 \x01(\x01\x12\x12\n\njitter_max\x18\x17 \x01(\x01\x12:\n\rgap_histogram\x18\x18 \x03(\x0b\x32#.livekit.RTPStats.GapHistogramEntry\x12\r\n\x05nacks\x18\x19 \x01(\r\x12\x11\n\tnack_acks\x18% \x01(\r\x12\x13\n\x0bnack_misses\x18\x1a \x01(\r\x12\x15\n\rnack_repeated\x18& \x01(\r\x12\x0c\n\x04plis\x18\x1b \x01(\r\x12,\n\x08last_pli\x18\x1c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04\x66irs\x18\x1d \x01(\r\x12,\n\x08last_fir\x18\x1e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0brtt_current\x18\x1f \x01(\r\x12\x0f\n\x07rtt_max\x18 \x01(\r\x12\x12\n\nkey_frames\x18! \x01(\r\x12\x32\n\x0elast_key_frame\x18\" \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x17\n\x0flayer_lock_plis\x18# \x01(\r\x12\x37\n\x13last_layer_lock_pli\x18$ \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x0cpacket_drift\x18, \x01(\x0b\x32\x11.livekit.RTPDrift\x12+\n\x10ntp_report_drift\x18- \x01(\x0b\x32\x11.livekit.RTPDrift\x12/\n\x14rebased_report_drift\x18. \x01(\x0b\x32\x11.livekit.RTPDrift\x12\x30\n\x15received_report_drift\x18/ \x01(\x0b\x32\x11.livekit.RTPDrift\x1a\x33\n\x11GapHistogramEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\xa2\x01\n\x15RTCPSenderReportState\x12\x15\n\rrtp_timestamp\x18\x01 \x01(\r\x12\x19\n\x11rtp_timestamp_ext\x18\x02 \x01(\x04\x12\x15\n\rntp_timestamp\x18\x03 \x01(\x04\x12\n\n\x02\x61t\x18\x04 \x01(\x03\x12\x13\n\x0b\x61t_adjusted\x18\x05 \x01(\x03\x12\x0f\n\x07packets\x18\x06 \x01(\r\x12\x0e\n\x06octets\x18\x07 \x01(\x04\"\xc9\x02\n\x11RTPForwarderState\x12\x0f\n\x07started\x18\x01 \x01(\x08\x12\x1f\n\x17reference_layer_spatial\x18\x02 \x01(\x05\x12\x16\n\x0epre_start_time\x18\x03 \x01(\x03\x12\x1b\n\x13\x65xt_first_timestamp\x18\x04 \x01(\x04\x12$\n\x1c\x64ummy_start_timestamp_offset\x18\x05 \x01(\x04\x12+\n\nrtp_munger\x18\x06 \x01(\x0b\x32\x17.livekit.RTPMungerState\x12-\n\nvp8_munger\x18\x07 \x01(\x0b\x32\x17.livekit.VP8MungerStateH\x00\x12;\n\x13sender_report_state\x18\x08 \x03(\x0b\x32\x1e.livekit.RTCPSenderReportStateB\x0e\n\x0c\x63odec_munger\"\xcb\x01\n\x0eRTPMungerState\x12 \n\x18\x65xt_last_sequence_number\x18\x01 \x01(\x04\x12\'\n\x1f\x65xt_second_last_sequence_number\x18\x02 \x01(\x04\x12\x1a\n\x12\x65xt_last_timestamp\x18\x03 \x01(\x04\x12!\n\x19\x65xt_second_last_timestamp\x18\x04 \x01(\x04\x12\x13\n\x0blast_marker\x18\x05 \x01(\x08\x12\x1a\n\x12second_last_marker\x18\x06 \x01(\x08\"\xcd\x01\n\x0eVP8MungerState\x12\x30\n\x13\x65xt_last_picture_id\x18\x01 \x01(\x05\x42\x13\xbaP\x10\x65xtLastPictureID\x12\x17\n\x0fpicture_id_used\x18\x02 \x01(\x08\x12\x18\n\x10last_tl0_pic_idx\x18\x03 \x01(\r\x12\x18\n\x10tl0_pic_idx_used\x18\x04 \x01(\x08\x12\x10\n\x08tid_used\x18\x05 \x01(\x08\x12\x14\n\x0clast_key_idx\x18\x06 \x01(\r\x12\x14\n\x0ckey_idx_used\x18\x07 \x01(\x08\"1\n\x0cTimedVersion\x12\x12\n\nunix_micro\x18\x01 \x01(\x03\x12\r\n\x05ticks\x18\x02 \x01(\x05\"\x88\x08\n\nDataStream\x1a\xb8\x01\n\nTextHeader\x12\x39\n\x0eoperation_type\x18\x01 \x01(\x0e\x32!.livekit.DataStream.OperationType\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12.\n\x12reply_to_stream_id\x18\x03 \x01(\tB\x12\xbaP\x0freplyToStreamID\x12\x1b\n\x13\x61ttached_stream_ids\x18\x04 \x03(\t\x12\x11\n\tgenerated\x18\x05 \x01(\x08\x1a\x1a\n\nByteHeader\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a\xb3\x03\n\x06Header\x12\x1e\n\tstream_id\x18\x01 \x01(\tB\x0b\xbaP\x08streamID\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\x12\r\n\x05topic\x18\x03 \x01(\t\x12\x11\n\tmime_type\x18\x04 \x01(\t\x12\x19\n\x0ctotal_length\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\x35\n\x0f\x65ncryption_type\x18\x07 \x01(\x0e\x32\x18.livekit.Encryption.TypeB\x02\x18\x01\x12>\n\nattributes\x18\x08 \x03(\x0b\x32*.livekit.DataStream.Header.AttributesEntry\x12\x35\n\x0btext_header\x18\t \x01(\x0b\x32\x1e.livekit.DataStream.TextHeaderH\x00\x12\x35\n\x0b\x62yte_header\x18\n \x01(\x0b\x32\x1e.livekit.DataStream.ByteHeaderH\x00\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x10\n\x0e\x63ontent_headerB\x0f\n\r_total_length\x1az\n\x05\x43hunk\x12\x1e\n\tstream_id\x18\x01 \x01(\tB\x0b\xbaP\x08streamID\x12\x13\n\x0b\x63hunk_index\x18\x02 \x01(\x04\x12\x0f\n\x07\x63ontent\x18\x03 \x01(\x0c\x12\x0f\n\x07version\x18\x04 \x01(\x05\x12\x13\n\x02iv\x18\x05 \x01(\x0c\x42\x02\x18\x01H\x00\x88\x01\x01\x42\x05\n\x03_iv\x1a\xad\x01\n\x07Trailer\x12\x1e\n\tstream_id\x18\x01 \x01(\tB\x0b\xbaP\x08streamID\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12?\n\nattributes\x18\x03 \x03(\x0b\x32+.livekit.DataStream.Trailer.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"A\n\rOperationType\x12\n\n\x06\x43REATE\x10\x00\x12\n\n\x06UPDATE\x10\x01\x12\n\n\x06\x44\x45LETE\x10\x02\x12\x0c\n\x08REACTION\x10\x03\">\n\x0c\x46ilterParams\x12\x16\n\x0einclude_events\x18\x01 \x03(\t\x12\x16\n\x0e\x65xclude_events\x18\x02 \x03(\t\"_\n\rWebhookConfig\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x0bsigning_key\x18\x02 \x01(\t\x12,\n\rfilter_params\x18\x03 \x01(\x0b\x32\x15.livekit.FilterParams\"6\n\x14SubscribedAudioCodec\x12\r\n\x05\x63odec\x18\x01 \x01(\t\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08*;\n\nAudioCodec\x12\x0e\n\nDEFAULT_AC\x10\x00\x12\x08\n\x04OPUS\x10\x01\x12\x07\n\x03\x41\x41\x43\x10\x02\x12\n\n\x06\x41\x43_MP3\x10\x03*V\n\nVideoCodec\x12\x0e\n\nDEFAULT_VC\x10\x00\x12\x11\n\rH264_BASELINE\x10\x01\x12\r\n\tH264_MAIN\x10\x02\x12\r\n\tH264_HIGH\x10\x03\x12\x07\n\x03VP8\x10\x04*)\n\nImageCodec\x12\x0e\n\nIC_DEFAULT\x10\x00\x12\x0b\n\x07IC_JPEG\x10\x01*I\n\x11\x42\x61\x63kupCodecPolicy\x12\x15\n\x11PREFER_REGRESSION\x10\x00\x12\r\n\tSIMULCAST\x10\x01\x12\x0e\n\nREGRESSION\x10\x02*+\n\tTrackType\x12\t\n\x05\x41UDIO\x10\x00\x12\t\n\x05VIDEO\x10\x01\x12\x08\n\x04\x44\x41TA\x10\x02*`\n\x0bTrackSource\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x43\x41MERA\x10\x01\x12\x0e\n\nMICROPHONE\x10\x02\x12\x10\n\x0cSCREEN_SHARE\x10\x03\x12\x16\n\x12SCREEN_SHARE_AUDIO\x10\x04*B\n\x14\x44\x61taTrackExtensionID\x12\x10\n\x0c\x44TEI_INVALID\x10\x00\x12\x18\n\x14\x44TEI_PARTICIPANT_SID\x10\x01*6\n\x0cVideoQuality\x12\x07\n\x03LOW\x10\x00\x12\n\n\x06MEDIUM\x10\x01\x12\x08\n\x04HIGH\x10\x02\x12\x07\n\x03OFF\x10\x03*@\n\x11\x43onnectionQuality\x12\x08\n\x04POOR\x10\x00\x12\x08\n\x04GOOD\x10\x01\x12\r\n\tEXCELLENT\x10\x02\x12\x08\n\x04LOST\x10\x03*;\n\x13\x43lientConfigSetting\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x0b\n\x07\x45NABLED\x10\x02*\xe8\x02\n\x10\x44isconnectReason\x12\x12\n\x0eUNKNOWN_REASON\x10\x00\x12\x14\n\x10\x43LIENT_INITIATED\x10\x01\x12\x16\n\x12\x44UPLICATE_IDENTITY\x10\x02\x12\x13\n\x0fSERVER_SHUTDOWN\x10\x03\x12\x17\n\x13PARTICIPANT_REMOVED\x10\x04\x12\x10\n\x0cROOM_DELETED\x10\x05\x12\x12\n\x0eSTATE_MISMATCH\x10\x06\x12\x10\n\x0cJOIN_FAILURE\x10\x07\x12\r\n\tMIGRATION\x10\x08\x12\x10\n\x0cSIGNAL_CLOSE\x10\t\x12\x0f\n\x0bROOM_CLOSED\x10\n\x12\x14\n\x10USER_UNAVAILABLE\x10\x0b\x12\x11\n\rUSER_REJECTED\x10\x0c\x12\x15\n\x11SIP_TRUNK_FAILURE\x10\r\x12\x16\n\x12\x43ONNECTION_TIMEOUT\x10\x0e\x12\x11\n\rMEDIA_FAILURE\x10\x0f\x12\x0f\n\x0b\x41GENT_ERROR\x10\x10*\x89\x01\n\x0fReconnectReason\x12\x0e\n\nRR_UNKNOWN\x10\x00\x12\x1a\n\x16RR_SIGNAL_DISCONNECTED\x10\x01\x12\x17\n\x13RR_PUBLISHER_FAILED\x10\x02\x12\x18\n\x14RR_SUBSCRIBER_FAILED\x10\x03\x12\x17\n\x13RR_SWITCH_CANDIDATE\x10\x04*T\n\x11SubscriptionError\x12\x0e\n\nSE_UNKNOWN\x10\x00\x12\x18\n\x14SE_CODEC_UNSUPPORTED\x10\x01\x12\x15\n\x11SE_TRACK_NOTFOUND\x10\x02*\xbd\x01\n\x11\x41udioTrackFeature\x12\r\n\tTF_STEREO\x10\x00\x12\r\n\tTF_NO_DTX\x10\x01\x12\x18\n\x14TF_AUTO_GAIN_CONTROL\x10\x02\x12\x18\n\x14TF_ECHO_CANCELLATION\x10\x03\x12\x18\n\x14TF_NOISE_SUPPRESSION\x10\x04\x12\"\n\x1eTF_ENHANCED_NOISE_CANCELLATION\x10\x05\x12\x18\n\x14TF_PRECONNECT_BUFFER\x10\x06*@\n\x14PacketTrailerFeature\x12\x16\n\x12PTF_USER_TIMESTAMP\x10\x00\x12\x10\n\x0cPTF_FRAME_ID\x10\x01\x42\x46Z#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -93,36 +93,36 @@ _globals['_DATASTREAM_TRAILER_ATTRIBUTESENTRY']._serialized_options = b'8\001' _globals['_DATASTREAM_TRAILER'].fields_by_name['stream_id']._options = None _globals['_DATASTREAM_TRAILER'].fields_by_name['stream_id']._serialized_options = b'\272P\010streamID' - _globals['_AUDIOCODEC']._serialized_start=11163 - _globals['_AUDIOCODEC']._serialized_end=11222 - _globals['_VIDEOCODEC']._serialized_start=11224 - _globals['_VIDEOCODEC']._serialized_end=11310 - _globals['_IMAGECODEC']._serialized_start=11312 - _globals['_IMAGECODEC']._serialized_end=11353 - _globals['_BACKUPCODECPOLICY']._serialized_start=11355 - _globals['_BACKUPCODECPOLICY']._serialized_end=11428 - _globals['_TRACKTYPE']._serialized_start=11430 - _globals['_TRACKTYPE']._serialized_end=11473 - _globals['_TRACKSOURCE']._serialized_start=11475 - _globals['_TRACKSOURCE']._serialized_end=11571 - _globals['_DATATRACKEXTENSIONID']._serialized_start=11573 - _globals['_DATATRACKEXTENSIONID']._serialized_end=11639 - _globals['_VIDEOQUALITY']._serialized_start=11641 - _globals['_VIDEOQUALITY']._serialized_end=11695 - _globals['_CONNECTIONQUALITY']._serialized_start=11697 - _globals['_CONNECTIONQUALITY']._serialized_end=11761 - _globals['_CLIENTCONFIGSETTING']._serialized_start=11763 - _globals['_CLIENTCONFIGSETTING']._serialized_end=11822 - _globals['_DISCONNECTREASON']._serialized_start=11825 - _globals['_DISCONNECTREASON']._serialized_end=12185 - _globals['_RECONNECTREASON']._serialized_start=12188 - _globals['_RECONNECTREASON']._serialized_end=12325 - _globals['_SUBSCRIPTIONERROR']._serialized_start=12327 - _globals['_SUBSCRIPTIONERROR']._serialized_end=12411 - _globals['_AUDIOTRACKFEATURE']._serialized_start=12414 - _globals['_AUDIOTRACKFEATURE']._serialized_end=12603 - _globals['_PACKETTRAILERFEATURE']._serialized_start=12605 - _globals['_PACKETTRAILERFEATURE']._serialized_end=12669 + _globals['_AUDIOCODEC']._serialized_start=11271 + _globals['_AUDIOCODEC']._serialized_end=11330 + _globals['_VIDEOCODEC']._serialized_start=11332 + _globals['_VIDEOCODEC']._serialized_end=11418 + _globals['_IMAGECODEC']._serialized_start=11420 + _globals['_IMAGECODEC']._serialized_end=11461 + _globals['_BACKUPCODECPOLICY']._serialized_start=11463 + _globals['_BACKUPCODECPOLICY']._serialized_end=11536 + _globals['_TRACKTYPE']._serialized_start=11538 + _globals['_TRACKTYPE']._serialized_end=11581 + _globals['_TRACKSOURCE']._serialized_start=11583 + _globals['_TRACKSOURCE']._serialized_end=11679 + _globals['_DATATRACKEXTENSIONID']._serialized_start=11681 + _globals['_DATATRACKEXTENSIONID']._serialized_end=11747 + _globals['_VIDEOQUALITY']._serialized_start=11749 + _globals['_VIDEOQUALITY']._serialized_end=11803 + _globals['_CONNECTIONQUALITY']._serialized_start=11805 + _globals['_CONNECTIONQUALITY']._serialized_end=11869 + _globals['_CLIENTCONFIGSETTING']._serialized_start=11871 + _globals['_CLIENTCONFIGSETTING']._serialized_end=11930 + _globals['_DISCONNECTREASON']._serialized_start=11933 + _globals['_DISCONNECTREASON']._serialized_end=12293 + _globals['_RECONNECTREASON']._serialized_start=12296 + _globals['_RECONNECTREASON']._serialized_end=12433 + _globals['_SUBSCRIPTIONERROR']._serialized_start=12435 + _globals['_SUBSCRIPTIONERROR']._serialized_end=12519 + _globals['_AUDIOTRACKFEATURE']._serialized_start=12522 + _globals['_AUDIOTRACKFEATURE']._serialized_end=12711 + _globals['_PACKETTRAILERFEATURE']._serialized_start=12713 + _globals['_PACKETTRAILERFEATURE']._serialized_end=12777 _globals['_PAGINATION']._serialized_start=111 _globals['_PAGINATION']._serialized_end=168 _globals['_TOKENPAGINATION']._serialized_start=170 @@ -202,53 +202,55 @@ _globals['_SERVERINFO_EDITION']._serialized_start=6408 _globals['_SERVERINFO_EDITION']._serialized_end=6442 _globals['_CLIENTINFO']._serialized_start=6445 - _globals['_CLIENTINFO']._serialized_end=6887 - _globals['_CLIENTINFO_SDK']._serialized_start=6708 - _globals['_CLIENTINFO_SDK']._serialized_end=6887 - _globals['_CLIENTCONFIGURATION']._serialized_start=6890 - _globals['_CLIENTCONFIGURATION']._serialized_end=7158 - _globals['_VIDEOCONFIGURATION']._serialized_start=7160 - _globals['_VIDEOCONFIGURATION']._serialized_end=7236 - _globals['_DISABLEDCODECS']._serialized_start=7238 - _globals['_DISABLEDCODECS']._serialized_end=7319 - _globals['_RTPDRIFT']._serialized_start=7322 - _globals['_RTPDRIFT']._serialized_end=7578 - _globals['_RTPSTATS']._serialized_start=7581 - _globals['_RTPSTATS']._serialized_end=8947 - _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_start=8896 - _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_end=8947 - _globals['_RTCPSENDERREPORTSTATE']._serialized_start=8950 - _globals['_RTCPSENDERREPORTSTATE']._serialized_end=9112 - _globals['_RTPFORWARDERSTATE']._serialized_start=9115 - _globals['_RTPFORWARDERSTATE']._serialized_end=9444 - _globals['_RTPMUNGERSTATE']._serialized_start=9447 - _globals['_RTPMUNGERSTATE']._serialized_end=9650 - _globals['_VP8MUNGERSTATE']._serialized_start=9653 - _globals['_VP8MUNGERSTATE']._serialized_end=9858 - _globals['_TIMEDVERSION']._serialized_start=9860 - _globals['_TIMEDVERSION']._serialized_end=9909 - _globals['_DATASTREAM']._serialized_start=9912 - _globals['_DATASTREAM']._serialized_end=10944 - _globals['_DATASTREAM_TEXTHEADER']._serialized_start=9927 - _globals['_DATASTREAM_TEXTHEADER']._serialized_end=10111 - _globals['_DATASTREAM_BYTEHEADER']._serialized_start=10113 - _globals['_DATASTREAM_BYTEHEADER']._serialized_end=10139 - _globals['_DATASTREAM_HEADER']._serialized_start=10142 - _globals['_DATASTREAM_HEADER']._serialized_end=10577 + _globals['_CLIENTINFO']._serialized_end=6995 + _globals['_CLIENTINFO_SDK']._serialized_start=6762 + _globals['_CLIENTINFO_SDK']._serialized_end=6941 + _globals['_CLIENTINFO_CAPABILITY']._serialized_start=6943 + _globals['_CLIENTINFO_CAPABILITY']._serialized_end=6995 + _globals['_CLIENTCONFIGURATION']._serialized_start=6998 + _globals['_CLIENTCONFIGURATION']._serialized_end=7266 + _globals['_VIDEOCONFIGURATION']._serialized_start=7268 + _globals['_VIDEOCONFIGURATION']._serialized_end=7344 + _globals['_DISABLEDCODECS']._serialized_start=7346 + _globals['_DISABLEDCODECS']._serialized_end=7427 + _globals['_RTPDRIFT']._serialized_start=7430 + _globals['_RTPDRIFT']._serialized_end=7686 + _globals['_RTPSTATS']._serialized_start=7689 + _globals['_RTPSTATS']._serialized_end=9055 + _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_start=9004 + _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_end=9055 + _globals['_RTCPSENDERREPORTSTATE']._serialized_start=9058 + _globals['_RTCPSENDERREPORTSTATE']._serialized_end=9220 + _globals['_RTPFORWARDERSTATE']._serialized_start=9223 + _globals['_RTPFORWARDERSTATE']._serialized_end=9552 + _globals['_RTPMUNGERSTATE']._serialized_start=9555 + _globals['_RTPMUNGERSTATE']._serialized_end=9758 + _globals['_VP8MUNGERSTATE']._serialized_start=9761 + _globals['_VP8MUNGERSTATE']._serialized_end=9966 + _globals['_TIMEDVERSION']._serialized_start=9968 + _globals['_TIMEDVERSION']._serialized_end=10017 + _globals['_DATASTREAM']._serialized_start=10020 + _globals['_DATASTREAM']._serialized_end=11052 + _globals['_DATASTREAM_TEXTHEADER']._serialized_start=10035 + _globals['_DATASTREAM_TEXTHEADER']._serialized_end=10219 + _globals['_DATASTREAM_BYTEHEADER']._serialized_start=10221 + _globals['_DATASTREAM_BYTEHEADER']._serialized_end=10247 + _globals['_DATASTREAM_HEADER']._serialized_start=10250 + _globals['_DATASTREAM_HEADER']._serialized_end=10685 _globals['_DATASTREAM_HEADER_ATTRIBUTESENTRY']._serialized_start=1755 _globals['_DATASTREAM_HEADER_ATTRIBUTESENTRY']._serialized_end=1804 - _globals['_DATASTREAM_CHUNK']._serialized_start=10579 - _globals['_DATASTREAM_CHUNK']._serialized_end=10701 - _globals['_DATASTREAM_TRAILER']._serialized_start=10704 - _globals['_DATASTREAM_TRAILER']._serialized_end=10877 + _globals['_DATASTREAM_CHUNK']._serialized_start=10687 + _globals['_DATASTREAM_CHUNK']._serialized_end=10809 + _globals['_DATASTREAM_TRAILER']._serialized_start=10812 + _globals['_DATASTREAM_TRAILER']._serialized_end=10985 _globals['_DATASTREAM_TRAILER_ATTRIBUTESENTRY']._serialized_start=1755 _globals['_DATASTREAM_TRAILER_ATTRIBUTESENTRY']._serialized_end=1804 - _globals['_DATASTREAM_OPERATIONTYPE']._serialized_start=10879 - _globals['_DATASTREAM_OPERATIONTYPE']._serialized_end=10944 - _globals['_FILTERPARAMS']._serialized_start=10946 - _globals['_FILTERPARAMS']._serialized_end=11008 - _globals['_WEBHOOKCONFIG']._serialized_start=11010 - _globals['_WEBHOOKCONFIG']._serialized_end=11105 - _globals['_SUBSCRIBEDAUDIOCODEC']._serialized_start=11107 - _globals['_SUBSCRIBEDAUDIOCODEC']._serialized_end=11161 + _globals['_DATASTREAM_OPERATIONTYPE']._serialized_start=10987 + _globals['_DATASTREAM_OPERATIONTYPE']._serialized_end=11052 + _globals['_FILTERPARAMS']._serialized_start=11054 + _globals['_FILTERPARAMS']._serialized_end=11116 + _globals['_WEBHOOKCONFIG']._serialized_start=11118 + _globals['_WEBHOOKCONFIG']._serialized_end=11213 + _globals['_SUBSCRIBEDAUDIOCODEC']._serialized_start=11215 + _globals['_SUBSCRIBEDAUDIOCODEC']._serialized_end=11269 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/models.pyi b/livekit-protocol/livekit/protocol/models.pyi index a563c530..35ce8a95 100644 --- a/livekit-protocol/livekit/protocol/models.pyi +++ b/livekit-protocol/livekit/protocol/models.pyi @@ -752,7 +752,7 @@ class ServerInfo(_message.Message): 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] = ..., agent_protocol: _Optional[int] = ...) -> None: ... class ClientInfo(_message.Message): - __slots__ = ("sdk", "version", "protocol", "os", "os_version", "device_model", "browser", "browser_version", "address", "network", "other_sdks", "client_protocol") + __slots__ = ("sdk", "version", "protocol", "os", "os_version", "device_model", "browser", "browser_version", "address", "network", "other_sdks", "client_protocol", "capabilities") class SDK(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () UNKNOWN: _ClassVar[ClientInfo.SDK] @@ -785,6 +785,12 @@ class ClientInfo(_message.Message): NODE: ClientInfo.SDK UNREAL: ClientInfo.SDK ESP32: ClientInfo.SDK + class Capability(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CAP_UNUSED: _ClassVar[ClientInfo.Capability] + CAP_PACKET_TRAILER: _ClassVar[ClientInfo.Capability] + CAP_UNUSED: ClientInfo.Capability + CAP_PACKET_TRAILER: ClientInfo.Capability SDK_FIELD_NUMBER: _ClassVar[int] VERSION_FIELD_NUMBER: _ClassVar[int] PROTOCOL_FIELD_NUMBER: _ClassVar[int] @@ -797,6 +803,7 @@ class ClientInfo(_message.Message): NETWORK_FIELD_NUMBER: _ClassVar[int] OTHER_SDKS_FIELD_NUMBER: _ClassVar[int] CLIENT_PROTOCOL_FIELD_NUMBER: _ClassVar[int] + CAPABILITIES_FIELD_NUMBER: _ClassVar[int] sdk: ClientInfo.SDK version: str protocol: int @@ -809,7 +816,8 @@ class ClientInfo(_message.Message): network: str other_sdks: str client_protocol: int - 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] = ..., other_sdks: _Optional[str] = ..., client_protocol: _Optional[int] = ...) -> None: ... + capabilities: _containers.RepeatedScalarFieldContainer[ClientInfo.Capability] + 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] = ..., other_sdks: _Optional[str] = ..., client_protocol: _Optional[int] = ..., capabilities: _Optional[_Iterable[_Union[ClientInfo.Capability, str]]] = ...) -> None: ... class ClientConfiguration(_message.Message): __slots__ = ("video", "screen", "resume_connection", "disabled_codecs", "force_relay") diff --git a/livekit-protocol/protocol b/livekit-protocol/protocol index a8feb8c8..a4ac2627 160000 --- a/livekit-protocol/protocol +++ b/livekit-protocol/protocol @@ -1 +1 @@ -Subproject commit a8feb8c80be8437425bc3e825606b2e49f924f3e +Subproject commit a4ac2627b46a7d515005db589a4eda3100dc1b8a