diff --git a/README.md b/README.md index 5dcc36ed..28421ba0 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ async def main(): # participants and tracks that are already available in the room # participant_connected and track_published events will *not* be emitted for them for participant in room.participants.items(): - for publication in participant.tracks.items(): + for publication in participant.track_publications.items(): print("track publication: %s", publication.sid) ``` diff --git a/examples/basic_room.py b/examples/basic_room.py index 7d1544b5..bf5a8dde 100644 --- a/examples/basic_room.py +++ b/examples/basic_room.py @@ -139,7 +139,7 @@ def on_reconnected() -> None: ) await room.connect(os.getenv("LIVEKIT_URL"), token) logging.info("connected to room %s", room.name) - logging.info("participants: %s", room.participants) + logging.info("participants: %s", room.remote_participants) await asyncio.sleep(2) await room.local_participant.publish_data("hello world") diff --git a/examples/participant_attributes.py b/examples/participant_attributes.py new file mode 100644 index 00000000..cf203948 --- /dev/null +++ b/examples/participant_attributes.py @@ -0,0 +1,71 @@ +import asyncio +import logging +from signal import SIGINT, SIGTERM +import os + +from livekit import api, rtc + +# ensure LIVEKIT_URL, LIVEKIT_API_KEY, and LIVEKIT_API_SECRET are set + + +async def main(room: rtc.Room) -> None: + token = ( + api.AccessToken() + .with_identity("python-bot") + .with_name("Python Bot") + .with_grants( + api.VideoGrants( + room_join=True, + room="my-room", + can_update_own_metadata=True, + ) + ) + .to_jwt() + ) + + @room.on("participant_attributes_changed") + def on_participant_attributes_changed( + changed_attributes: dict[str, str], participant: rtc.Participant + ): + logging.info( + "participant attributes changed: %s %s", + participant.attributes, + changed_attributes, + ) + + await room.connect(os.getenv("LIVEKIT_URL"), token) + logging.info("connected to room %s", room.name) + + # Create an attribute + await room.local_participant.set_attributes({"foo": "bar"}) + # Delete an attribute + await room.local_participant.set_attributes({"foo": ""}) + + # Create another attribute + await room.local_participant.set_attributes({"baz": "qux"}) + + # Update an attribute + await room.local_participant.set_attributes({"baz": "biz"}) + + +if __name__ == "__main__": + logging.basicConfig( + level=logging.INFO, + handlers=[logging.FileHandler("basic_room.log"), logging.StreamHandler()], + ) + + loop = asyncio.get_event_loop() + room = rtc.Room(loop=loop) + + async def cleanup(): + await room.disconnect() + loop.stop() + + asyncio.ensure_future(main(room)) + for signal in [SIGINT, SIGTERM]: + loop.add_signal_handler(signal, lambda: asyncio.ensure_future(cleanup())) + + try: + loop.run_forever() + finally: + loop.close() diff --git a/livekit-protocol/generate_proto.sh b/livekit-protocol/generate_proto.sh index 692ec7a5..8781ec22 100755 --- a/livekit-protocol/generate_proto.sh +++ b/livekit-protocol/generate_proto.sh @@ -31,6 +31,7 @@ protoc \ $API_PROTOCOL/livekit_ingress.proto \ $API_PROTOCOL/livekit_models.proto \ $API_PROTOCOL/livekit_agent.proto \ + $API_PROTOCOL/livekit_agent_dispatch.proto \ $API_PROTOCOL/livekit_sip.proto \ $API_PROTOCOL/livekit_analytics.proto @@ -58,11 +59,13 @@ mv "$API_OUT_PYTHON/livekit_models_pb2.py" "$API_OUT_PYTHON/models.py" mv "$API_OUT_PYTHON/livekit_models_pb2.pyi" "$API_OUT_PYTHON/models.pyi" mv "$API_OUT_PYTHON/livekit_agent_pb2.py" "$API_OUT_PYTHON/agent.py" mv "$API_OUT_PYTHON/livekit_agent_pb2.pyi" "$API_OUT_PYTHON/agent.pyi" +mv "$API_OUT_PYTHON/livekit_agent_dispatch_pb2.py" "$API_OUT_PYTHON/agent_dispatch.py" +mv "$API_OUT_PYTHON/livekit_agent_dispatch_pb2.pyi" "$API_OUT_PYTHON/agent_dispatch.pyi" mv "$API_OUT_PYTHON/livekit_analytics_pb2.py" "$API_OUT_PYTHON/analytics.py" mv "$API_OUT_PYTHON/livekit_analytics_pb2.pyi" "$API_OUT_PYTHON/analytics.pyi" mv "$API_OUT_PYTHON/livekit_sip_pb2.py" "$API_OUT_PYTHON/sip.py" mv "$API_OUT_PYTHON/livekit_sip_pb2.pyi" "$API_OUT_PYTHON/sip.pyi" -perl -i -pe 's|^(import (livekit_egress_pb2\|livekit_room_pb2\|livekit_webhook_pb2\|livekit_ingress_pb2\|livekit_models_pb2\|livekit_agent_pb2\|livekit_analytics_pb2\|livekit_sip_pb2))|from . $1|g' "$API_OUT_PYTHON"/*.py "$API_OUT_PYTHON"/*.pyi +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))|from . $1|g' "$API_OUT_PYTHON"/*.py "$API_OUT_PYTHON"/*.pyi perl -i -pe 's|livekit_(\w+)_pb2|${1}|g' "$API_OUT_PYTHON"/*.py "$API_OUT_PYTHON"/*.pyi diff --git a/livekit-protocol/livekit/protocol/agent.py b/livekit-protocol/livekit/protocol/agent.py index b83ff034..df9f9718 100644 --- a/livekit-protocol/livekit/protocol/agent.py +++ b/livekit-protocol/livekit/protocol/agent.py @@ -15,7 +15,7 @@ from . import models as _models_ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13livekit_agent.proto\x12\x07livekit\x1a\x14livekit_models.proto\"\xa7\x01\n\nWorkerInfo\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x1e\n\x04type\x18\x05 \x01(\x0e\x32\x10.livekit.JobType\x12;\n\x13\x61llowed_permissions\x18\x06 \x01(\x0b\x32\x1e.livekit.ParticipantPermission\"6\n\tAgentInfo\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"\xa5\x01\n\x03Job\x12\n\n\x02id\x18\x01 \x01(\t\x12\x1e\n\x04type\x18\x02 \x01(\x0e\x32\x10.livekit.JobType\x12\x1b\n\x04room\x18\x03 \x01(\x0b\x32\r.livekit.Room\x12\x32\n\x0bparticipant\x18\x04 \x01(\x0b\x32\x18.livekit.ParticipantInfoH\x00\x88\x01\x01\x12\x11\n\tnamespace\x18\x05 \x01(\tB\x0e\n\x0c_participant\"\xf8\x02\n\rWorkerMessage\x12\x32\n\x08register\x18\x01 \x01(\x0b\x32\x1e.livekit.RegisterWorkerRequestH\x00\x12\x35\n\x0c\x61vailability\x18\x02 \x01(\x0b\x32\x1d.livekit.AvailabilityResponseH\x00\x12\x34\n\rupdate_worker\x18\x03 \x01(\x0b\x32\x1b.livekit.UpdateWorkerStatusH\x00\x12.\n\nupdate_job\x18\x04 \x01(\x0b\x32\x18.livekit.UpdateJobStatusH\x00\x12#\n\x04ping\x18\x05 \x01(\x0b\x32\x13.livekit.WorkerPingH\x00\x12\x33\n\x0csimulate_job\x18\x06 \x01(\x0b\x32\x1b.livekit.SimulateJobRequestH\x00\x12\x31\n\x0bmigrate_job\x18\x07 \x01(\x0b\x32\x1a.livekit.MigrateJobRequestH\x00\x42\t\n\x07message\"\xd8\x01\n\rServerMessage\x12\x33\n\x08register\x18\x01 \x01(\x0b\x32\x1f.livekit.RegisterWorkerResponseH\x00\x12\x34\n\x0c\x61vailability\x18\x02 \x01(\x0b\x32\x1c.livekit.AvailabilityRequestH\x00\x12,\n\nassignment\x18\x03 \x01(\x0b\x32\x16.livekit.JobAssignmentH\x00\x12#\n\x04pong\x18\x04 \x01(\x0b\x32\x13.livekit.WorkerPongH\x00\x42\t\n\x07message\"\x80\x01\n\x12SimulateJobRequest\x12\x1e\n\x04type\x18\x01 \x01(\x0e\x32\x10.livekit.JobType\x12\x1b\n\x04room\x18\x02 \x01(\x0b\x32\r.livekit.Room\x12-\n\x0bparticipant\x18\x03 \x01(\x0b\x32\x18.livekit.ParticipantInfo\"\x1f\n\nWorkerPing\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\"7\n\nWorkerPong\x12\x16\n\x0elast_timestamp\x18\x01 \x01(\x03\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\"\xd0\x01\n\x15RegisterWorkerRequest\x12\x1e\n\x04type\x18\x01 \x01(\x0e\x32\x10.livekit.JobType\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x15\n\rping_interval\x18\x05 \x01(\r\x12\x16\n\tnamespace\x18\x06 \x01(\tH\x00\x88\x01\x01\x12;\n\x13\x61llowed_permissions\x18\x07 \x01(\x0b\x32\x1e.livekit.ParticipantPermissionB\x0c\n\n_namespace\"U\n\x16RegisterWorkerResponse\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12(\n\x0bserver_info\x18\x03 \x01(\x0b\x32\x13.livekit.ServerInfo\"#\n\x11MigrateJobRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\t\"B\n\x13\x41vailabilityRequest\x12\x19\n\x03job\x18\x01 \x01(\x0b\x32\x0c.livekit.Job\x12\x10\n\x08resuming\x18\x02 \x01(\x08\"\xa8\x01\n\x14\x41vailabilityResponse\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\x11\n\tavailable\x18\x02 \x01(\x08\x12\x17\n\x0fsupports_resume\x18\x03 \x01(\x08\x12\x18\n\x10participant_name\x18\x04 \x01(\t\x12\x1c\n\x14participant_identity\x18\x05 \x01(\t\x12\x1c\n\x14participant_metadata\x18\x06 \x01(\t\"\x96\x01\n\x0fUpdateJobStatus\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\'\n\x06status\x18\x02 \x01(\x0e\x32\x12.livekit.JobStatusH\x00\x88\x01\x01\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12\x15\n\x08metadata\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x0c\n\x04load\x18\x05 \x01(\x02\x42\t\n\x07_statusB\x0b\n\t_metadata\"}\n\x12UpdateWorkerStatus\x12*\n\x06status\x18\x01 \x01(\x0e\x32\x15.livekit.WorkerStatusH\x00\x88\x01\x01\x12\x15\n\x08metadata\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0c\n\x04load\x18\x03 \x01(\x02\x42\t\n\x07_statusB\x0b\n\t_metadata\"S\n\rJobAssignment\x12\x19\n\x03job\x18\x01 \x01(\x0b\x32\x0c.livekit.Job\x12\x10\n\x03url\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\r\n\x05token\x18\x03 \x01(\tB\x06\n\x04_url*(\n\x07JobType\x12\x0b\n\x07JT_ROOM\x10\x00\x12\x10\n\x0cJT_PUBLISHER\x10\x01*-\n\x0cWorkerStatus\x12\x10\n\x0cWS_AVAILABLE\x10\x00\x12\x0b\n\x07WS_FULL\x10\x01*:\n\tJobStatus\x12\x0e\n\nJS_UNKNOWN\x10\x00\x12\x0e\n\nJS_SUCCESS\x10\x01\x12\r\n\tJS_FAILED\x10\x02\x42\x46Z#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13livekit_agent.proto\x12\x07livekit\x1a\x14livekit_models.proto\"\x86\x02\n\x03Job\x12\n\n\x02id\x18\x01 \x01(\t\x12\x13\n\x0b\x64ispatch_id\x18\t \x01(\t\x12\x1e\n\x04type\x18\x02 \x01(\x0e\x32\x10.livekit.JobType\x12\x1b\n\x04room\x18\x03 \x01(\x0b\x32\r.livekit.Room\x12\x32\n\x0bparticipant\x18\x04 \x01(\x0b\x32\x18.livekit.ParticipantInfoH\x00\x88\x01\x01\x12\x15\n\tnamespace\x18\x05 \x01(\tB\x02\x18\x01\x12\x10\n\x08metadata\x18\x06 \x01(\t\x12\x12\n\nagent_name\x18\x07 \x01(\t\x12 \n\x05state\x18\x08 \x01(\x0b\x32\x11.livekit.JobStateB\x0e\n\x0c_participant\"w\n\x08JobState\x12\"\n\x06status\x18\x01 \x01(\x0e\x32\x12.livekit.JobStatus\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12\x12\n\nstarted_at\x18\x03 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x04 \x01(\x03\x12\x12\n\nupdated_at\x18\x05 \x01(\x03\"\xf8\x02\n\rWorkerMessage\x12\x32\n\x08register\x18\x01 \x01(\x0b\x32\x1e.livekit.RegisterWorkerRequestH\x00\x12\x35\n\x0c\x61vailability\x18\x02 \x01(\x0b\x32\x1d.livekit.AvailabilityResponseH\x00\x12\x34\n\rupdate_worker\x18\x03 \x01(\x0b\x32\x1b.livekit.UpdateWorkerStatusH\x00\x12.\n\nupdate_job\x18\x04 \x01(\x0b\x32\x18.livekit.UpdateJobStatusH\x00\x12#\n\x04ping\x18\x05 \x01(\x0b\x32\x13.livekit.WorkerPingH\x00\x12\x33\n\x0csimulate_job\x18\x06 \x01(\x0b\x32\x1b.livekit.SimulateJobRequestH\x00\x12\x31\n\x0bmigrate_job\x18\x07 \x01(\x0b\x32\x1a.livekit.MigrateJobRequestH\x00\x42\t\n\x07message\"\x88\x02\n\rServerMessage\x12\x33\n\x08register\x18\x01 \x01(\x0b\x32\x1f.livekit.RegisterWorkerResponseH\x00\x12\x34\n\x0c\x61vailability\x18\x02 \x01(\x0b\x32\x1c.livekit.AvailabilityRequestH\x00\x12,\n\nassignment\x18\x03 \x01(\x0b\x32\x16.livekit.JobAssignmentH\x00\x12.\n\x0btermination\x18\x05 \x01(\x0b\x32\x17.livekit.JobTerminationH\x00\x12#\n\x04pong\x18\x04 \x01(\x0b\x32\x13.livekit.WorkerPongH\x00\x42\t\n\x07message\"\x80\x01\n\x12SimulateJobRequest\x12\x1e\n\x04type\x18\x01 \x01(\x0e\x32\x10.livekit.JobType\x12\x1b\n\x04room\x18\x02 \x01(\x0b\x32\r.livekit.Room\x12-\n\x0bparticipant\x18\x03 \x01(\x0b\x32\x18.livekit.ParticipantInfo\"\x1f\n\nWorkerPing\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\"7\n\nWorkerPong\x12\x16\n\x0elast_timestamp\x18\x01 \x01(\x03\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\"\xd6\x01\n\x15RegisterWorkerRequest\x12\x1e\n\x04type\x18\x01 \x01(\x0e\x32\x10.livekit.JobType\x12\x12\n\nagent_name\x18\x08 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x15\n\rping_interval\x18\x05 \x01(\r\x12\x16\n\tnamespace\x18\x06 \x01(\tH\x00\x88\x01\x01\x12;\n\x13\x61llowed_permissions\x18\x07 \x01(\x0b\x32\x1e.livekit.ParticipantPermissionB\x0c\n\n_namespace\"U\n\x16RegisterWorkerResponse\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12(\n\x0bserver_info\x18\x03 \x01(\x0b\x32\x13.livekit.ServerInfo\"$\n\x11MigrateJobRequest\x12\x0f\n\x07job_ids\x18\x02 \x03(\t\"B\n\x13\x41vailabilityRequest\x12\x19\n\x03job\x18\x01 \x01(\x0b\x32\x0c.livekit.Job\x12\x10\n\x08resuming\x18\x02 \x01(\x08\"\xa8\x01\n\x14\x41vailabilityResponse\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\x11\n\tavailable\x18\x02 \x01(\x08\x12\x17\n\x0fsupports_resume\x18\x03 \x01(\x08\x12\x18\n\x10participant_name\x18\x04 \x01(\t\x12\x1c\n\x14participant_identity\x18\x05 \x01(\t\x12\x1c\n\x14participant_metadata\x18\x06 \x01(\t\"T\n\x0fUpdateJobStatus\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\"\n\x06status\x18\x02 \x01(\x0e\x32\x12.livekit.JobStatus\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"l\n\x12UpdateWorkerStatus\x12*\n\x06status\x18\x01 \x01(\x0e\x32\x15.livekit.WorkerStatusH\x00\x88\x01\x01\x12\x0c\n\x04load\x18\x03 \x01(\x02\x12\x11\n\tjob_count\x18\x04 \x01(\x05\x42\t\n\x07_status\"S\n\rJobAssignment\x12\x19\n\x03job\x18\x01 \x01(\x0b\x32\x0c.livekit.Job\x12\x10\n\x03url\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\r\n\x05token\x18\x03 \x01(\tB\x06\n\x04_url\" \n\x0eJobTermination\x12\x0e\n\x06job_id\x18\x01 \x01(\t*(\n\x07JobType\x12\x0b\n\x07JT_ROOM\x10\x00\x12\x10\n\x0cJT_PUBLISHER\x10\x01*-\n\x0cWorkerStatus\x12\x10\n\x0cWS_AVAILABLE\x10\x00\x12\x0b\n\x07WS_FULL\x10\x01*J\n\tJobStatus\x12\x0e\n\nJS_PENDING\x10\x00\x12\x0e\n\nJS_RUNNING\x10\x01\x12\x0e\n\nJS_SUCCESS\x10\x02\x12\r\n\tJS_FAILED\x10\x03\x42\x46Z#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -23,42 +23,44 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals['DESCRIPTOR']._options = None _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' - _globals['_JOBTYPE']._serialized_start=2206 - _globals['_JOBTYPE']._serialized_end=2246 - _globals['_WORKERSTATUS']._serialized_start=2248 - _globals['_WORKERSTATUS']._serialized_end=2293 - _globals['_JOBSTATUS']._serialized_start=2295 - _globals['_JOBSTATUS']._serialized_end=2353 - _globals['_WORKERINFO']._serialized_start=55 - _globals['_WORKERINFO']._serialized_end=222 - _globals['_AGENTINFO']._serialized_start=224 - _globals['_AGENTINFO']._serialized_end=278 - _globals['_JOB']._serialized_start=281 - _globals['_JOB']._serialized_end=446 - _globals['_WORKERMESSAGE']._serialized_start=449 - _globals['_WORKERMESSAGE']._serialized_end=825 - _globals['_SERVERMESSAGE']._serialized_start=828 - _globals['_SERVERMESSAGE']._serialized_end=1044 - _globals['_SIMULATEJOBREQUEST']._serialized_start=1047 - _globals['_SIMULATEJOBREQUEST']._serialized_end=1175 - _globals['_WORKERPING']._serialized_start=1177 - _globals['_WORKERPING']._serialized_end=1208 - _globals['_WORKERPONG']._serialized_start=1210 - _globals['_WORKERPONG']._serialized_end=1265 - _globals['_REGISTERWORKERREQUEST']._serialized_start=1268 - _globals['_REGISTERWORKERREQUEST']._serialized_end=1476 - _globals['_REGISTERWORKERRESPONSE']._serialized_start=1478 - _globals['_REGISTERWORKERRESPONSE']._serialized_end=1563 - _globals['_MIGRATEJOBREQUEST']._serialized_start=1565 - _globals['_MIGRATEJOBREQUEST']._serialized_end=1600 - _globals['_AVAILABILITYREQUEST']._serialized_start=1602 - _globals['_AVAILABILITYREQUEST']._serialized_end=1668 - _globals['_AVAILABILITYRESPONSE']._serialized_start=1671 - _globals['_AVAILABILITYRESPONSE']._serialized_end=1839 - _globals['_UPDATEJOBSTATUS']._serialized_start=1842 - _globals['_UPDATEJOBSTATUS']._serialized_end=1992 - _globals['_UPDATEWORKERSTATUS']._serialized_start=1994 - _globals['_UPDATEWORKERSTATUS']._serialized_end=2119 - _globals['_JOBASSIGNMENT']._serialized_start=2121 - _globals['_JOBASSIGNMENT']._serialized_end=2204 + _globals['_JOB'].fields_by_name['namespace']._options = None + _globals['_JOB'].fields_by_name['namespace']._serialized_options = b'\030\001' + _globals['_JOBTYPE']._serialized_start=2203 + _globals['_JOBTYPE']._serialized_end=2243 + _globals['_WORKERSTATUS']._serialized_start=2245 + _globals['_WORKERSTATUS']._serialized_end=2290 + _globals['_JOBSTATUS']._serialized_start=2292 + _globals['_JOBSTATUS']._serialized_end=2366 + _globals['_JOB']._serialized_start=55 + _globals['_JOB']._serialized_end=317 + _globals['_JOBSTATE']._serialized_start=319 + _globals['_JOBSTATE']._serialized_end=438 + _globals['_WORKERMESSAGE']._serialized_start=441 + _globals['_WORKERMESSAGE']._serialized_end=817 + _globals['_SERVERMESSAGE']._serialized_start=820 + _globals['_SERVERMESSAGE']._serialized_end=1084 + _globals['_SIMULATEJOBREQUEST']._serialized_start=1087 + _globals['_SIMULATEJOBREQUEST']._serialized_end=1215 + _globals['_WORKERPING']._serialized_start=1217 + _globals['_WORKERPING']._serialized_end=1248 + _globals['_WORKERPONG']._serialized_start=1250 + _globals['_WORKERPONG']._serialized_end=1305 + _globals['_REGISTERWORKERREQUEST']._serialized_start=1308 + _globals['_REGISTERWORKERREQUEST']._serialized_end=1522 + _globals['_REGISTERWORKERRESPONSE']._serialized_start=1524 + _globals['_REGISTERWORKERRESPONSE']._serialized_end=1609 + _globals['_MIGRATEJOBREQUEST']._serialized_start=1611 + _globals['_MIGRATEJOBREQUEST']._serialized_end=1647 + _globals['_AVAILABILITYREQUEST']._serialized_start=1649 + _globals['_AVAILABILITYREQUEST']._serialized_end=1715 + _globals['_AVAILABILITYRESPONSE']._serialized_start=1718 + _globals['_AVAILABILITYRESPONSE']._serialized_end=1886 + _globals['_UPDATEJOBSTATUS']._serialized_start=1888 + _globals['_UPDATEJOBSTATUS']._serialized_end=1972 + _globals['_UPDATEWORKERSTATUS']._serialized_start=1974 + _globals['_UPDATEWORKERSTATUS']._serialized_end=2082 + _globals['_JOBASSIGNMENT']._serialized_start=2084 + _globals['_JOBASSIGNMENT']._serialized_end=2167 + _globals['_JOBTERMINATION']._serialized_start=2169 + _globals['_JOBTERMINATION']._serialized_end=2201 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/agent.pyi b/livekit-protocol/livekit/protocol/agent.pyi index 502f695b..4d7cdf46 100644 --- a/livekit-protocol/livekit/protocol/agent.pyi +++ b/livekit-protocol/livekit/protocol/agent.pyi @@ -1,8 +1,9 @@ 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, Mapping as _Mapping, Optional as _Optional, Union as _Union +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union DESCRIPTOR: _descriptor.FileDescriptor @@ -18,56 +19,54 @@ class WorkerStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): class JobStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () - JS_UNKNOWN: _ClassVar[JobStatus] + JS_PENDING: _ClassVar[JobStatus] + JS_RUNNING: _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_PENDING: JobStatus +JS_RUNNING: JobStatus JS_SUCCESS: JobStatus JS_FAILED: JobStatus -class WorkerInfo(_message.Message): - __slots__ = ("id", "namespace", "version", "name", "type", "allowed_permissions") - ID_FIELD_NUMBER: _ClassVar[int] - NAMESPACE_FIELD_NUMBER: _ClassVar[int] - VERSION_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - ALLOWED_PERMISSIONS_FIELD_NUMBER: _ClassVar[int] - id: str - namespace: str - version: str - name: str - type: JobType - allowed_permissions: _models.ParticipantPermission - def __init__(self, id: _Optional[str] = ..., namespace: _Optional[str] = ..., version: _Optional[str] = ..., name: _Optional[str] = ..., type: _Optional[_Union[JobType, str]] = ..., allowed_permissions: _Optional[_Union[_models.ParticipantPermission, _Mapping]] = ...) -> None: ... - -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", "namespace") + __slots__ = ("id", "dispatch_id", "type", "room", "participant", "namespace", "metadata", "agent_name", "state") ID_FIELD_NUMBER: _ClassVar[int] + DISPATCH_ID_FIELD_NUMBER: _ClassVar[int] TYPE_FIELD_NUMBER: _ClassVar[int] ROOM_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_FIELD_NUMBER: _ClassVar[int] NAMESPACE_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + AGENT_NAME_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] id: str + dispatch_id: str type: JobType room: _models.Room participant: _models.ParticipantInfo namespace: str - def __init__(self, id: _Optional[str] = ..., type: _Optional[_Union[JobType, str]] = ..., room: _Optional[_Union[_models.Room, _Mapping]] = ..., participant: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., namespace: _Optional[str] = ...) -> None: ... + metadata: str + agent_name: str + state: JobState + def __init__(self, id: _Optional[str] = ..., dispatch_id: _Optional[str] = ..., type: _Optional[_Union[JobType, str]] = ..., room: _Optional[_Union[_models.Room, _Mapping]] = ..., participant: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., namespace: _Optional[str] = ..., metadata: _Optional[str] = ..., agent_name: _Optional[str] = ..., state: _Optional[_Union[JobState, _Mapping]] = ...) -> None: ... + +class JobState(_message.Message): + __slots__ = ("status", "error", "started_at", "ended_at", "updated_at") + STATUS_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + ENDED_AT_FIELD_NUMBER: _ClassVar[int] + UPDATED_AT_FIELD_NUMBER: _ClassVar[int] + status: JobStatus + error: str + started_at: int + ended_at: int + updated_at: int + def __init__(self, status: _Optional[_Union[JobStatus, str]] = ..., error: _Optional[str] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., updated_at: _Optional[int] = ...) -> None: ... class WorkerMessage(_message.Message): __slots__ = ("register", "availability", "update_worker", "update_job", "ping", "simulate_job", "migrate_job") @@ -88,16 +87,18 @@ class WorkerMessage(_message.Message): def __init__(self, register: _Optional[_Union[RegisterWorkerRequest, _Mapping]] = ..., availability: _Optional[_Union[AvailabilityResponse, _Mapping]] = ..., update_worker: _Optional[_Union[UpdateWorkerStatus, _Mapping]] = ..., update_job: _Optional[_Union[UpdateJobStatus, _Mapping]] = ..., ping: _Optional[_Union[WorkerPing, _Mapping]] = ..., simulate_job: _Optional[_Union[SimulateJobRequest, _Mapping]] = ..., migrate_job: _Optional[_Union[MigrateJobRequest, _Mapping]] = ...) -> None: ... class ServerMessage(_message.Message): - __slots__ = ("register", "availability", "assignment", "pong") + __slots__ = ("register", "availability", "assignment", "termination", "pong") REGISTER_FIELD_NUMBER: _ClassVar[int] AVAILABILITY_FIELD_NUMBER: _ClassVar[int] ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_FIELD_NUMBER: _ClassVar[int] PONG_FIELD_NUMBER: _ClassVar[int] register: RegisterWorkerResponse availability: AvailabilityRequest assignment: JobAssignment + termination: JobTermination pong: WorkerPong - def __init__(self, register: _Optional[_Union[RegisterWorkerResponse, _Mapping]] = ..., availability: _Optional[_Union[AvailabilityRequest, _Mapping]] = ..., assignment: _Optional[_Union[JobAssignment, _Mapping]] = ..., pong: _Optional[_Union[WorkerPong, _Mapping]] = ...) -> None: ... + def __init__(self, register: _Optional[_Union[RegisterWorkerResponse, _Mapping]] = ..., availability: _Optional[_Union[AvailabilityRequest, _Mapping]] = ..., assignment: _Optional[_Union[JobAssignment, _Mapping]] = ..., termination: _Optional[_Union[JobTermination, _Mapping]] = ..., pong: _Optional[_Union[WorkerPong, _Mapping]] = ...) -> None: ... class SimulateJobRequest(_message.Message): __slots__ = ("type", "room", "participant") @@ -124,20 +125,20 @@ class WorkerPong(_message.Message): def __init__(self, last_timestamp: _Optional[int] = ..., timestamp: _Optional[int] = ...) -> None: ... class RegisterWorkerRequest(_message.Message): - __slots__ = ("type", "version", "name", "ping_interval", "namespace", "allowed_permissions") + __slots__ = ("type", "agent_name", "version", "ping_interval", "namespace", "allowed_permissions") TYPE_FIELD_NUMBER: _ClassVar[int] + AGENT_NAME_FIELD_NUMBER: _ClassVar[int] VERSION_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] PING_INTERVAL_FIELD_NUMBER: _ClassVar[int] NAMESPACE_FIELD_NUMBER: _ClassVar[int] ALLOWED_PERMISSIONS_FIELD_NUMBER: _ClassVar[int] type: JobType + agent_name: str version: str - name: str ping_interval: int namespace: str allowed_permissions: _models.ParticipantPermission - def __init__(self, type: _Optional[_Union[JobType, str]] = ..., version: _Optional[str] = ..., name: _Optional[str] = ..., ping_interval: _Optional[int] = ..., namespace: _Optional[str] = ..., allowed_permissions: _Optional[_Union[_models.ParticipantPermission, _Mapping]] = ...) -> None: ... + def __init__(self, type: _Optional[_Union[JobType, str]] = ..., agent_name: _Optional[str] = ..., version: _Optional[str] = ..., ping_interval: _Optional[int] = ..., namespace: _Optional[str] = ..., allowed_permissions: _Optional[_Union[_models.ParticipantPermission, _Mapping]] = ...) -> None: ... class RegisterWorkerResponse(_message.Message): __slots__ = ("worker_id", "server_info") @@ -148,10 +149,10 @@ class RegisterWorkerResponse(_message.Message): def __init__(self, worker_id: _Optional[str] = ..., server_info: _Optional[_Union[_models.ServerInfo, _Mapping]] = ...) -> None: ... class MigrateJobRequest(_message.Message): - __slots__ = ("job_id",) - JOB_ID_FIELD_NUMBER: _ClassVar[int] - job_id: str - def __init__(self, job_id: _Optional[str] = ...) -> None: ... + __slots__ = ("job_ids",) + JOB_IDS_FIELD_NUMBER: _ClassVar[int] + job_ids: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, job_ids: _Optional[_Iterable[str]] = ...) -> None: ... class AvailabilityRequest(_message.Message): __slots__ = ("job", "resuming") @@ -178,28 +179,24 @@ class AvailabilityResponse(_message.Message): def __init__(self, job_id: _Optional[str] = ..., available: bool = ..., supports_resume: bool = ..., participant_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_metadata: _Optional[str] = ...) -> None: ... class UpdateJobStatus(_message.Message): - __slots__ = ("job_id", "status", "error", "metadata", "load") + __slots__ = ("job_id", "status", "error") JOB_ID_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] - METADATA_FIELD_NUMBER: _ClassVar[int] - LOAD_FIELD_NUMBER: _ClassVar[int] job_id: str status: JobStatus error: str - metadata: str - load: float - def __init__(self, job_id: _Optional[str] = ..., status: _Optional[_Union[JobStatus, str]] = ..., error: _Optional[str] = ..., metadata: _Optional[str] = ..., load: _Optional[float] = ...) -> None: ... + def __init__(self, job_id: _Optional[str] = ..., status: _Optional[_Union[JobStatus, str]] = ..., error: _Optional[str] = ...) -> None: ... class UpdateWorkerStatus(_message.Message): - __slots__ = ("status", "metadata", "load") + __slots__ = ("status", "load", "job_count") STATUS_FIELD_NUMBER: _ClassVar[int] - METADATA_FIELD_NUMBER: _ClassVar[int] LOAD_FIELD_NUMBER: _ClassVar[int] + JOB_COUNT_FIELD_NUMBER: _ClassVar[int] status: WorkerStatus - metadata: str load: float - def __init__(self, status: _Optional[_Union[WorkerStatus, str]] = ..., metadata: _Optional[str] = ..., load: _Optional[float] = ...) -> None: ... + job_count: int + def __init__(self, status: _Optional[_Union[WorkerStatus, str]] = ..., load: _Optional[float] = ..., job_count: _Optional[int] = ...) -> None: ... class JobAssignment(_message.Message): __slots__ = ("job", "url", "token") @@ -210,3 +207,9 @@ class JobAssignment(_message.Message): url: str token: str def __init__(self, job: _Optional[_Union[Job, _Mapping]] = ..., url: _Optional[str] = ..., token: _Optional[str] = ...) -> None: ... + +class JobTermination(_message.Message): + __slots__ = ("job_id",) + JOB_ID_FIELD_NUMBER: _ClassVar[int] + job_id: str + def __init__(self, job_id: _Optional[str] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/agent_dispatch.py b/livekit-protocol/livekit/protocol/agent_dispatch.py new file mode 100644 index 00000000..d4daa6a1 --- /dev/null +++ b/livekit-protocol/livekit/protocol/agent_dispatch.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: livekit_agent_dispatch.proto +# 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 +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 as _agent_ + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1clivekit_agent_dispatch.proto\x12\x07livekit\x1a\x13livekit_agent.proto\"P\n\x1a\x43reateAgentDispatchRequest\x12\x12\n\nagent_name\x18\x01 \x01(\t\x12\x0c\n\x04room\x18\x02 \x01(\t\x12\x10\n\x08metadata\x18\x03 \x01(\t\"9\n\x11RoomAgentDispatch\x12\x12\n\nagent_name\x18\x01 \x01(\t\x12\x10\n\x08metadata\x18\x02 \x01(\t\"1\n\x1a\x44\x65leteAgentDispatchRequest\x12\x13\n\x0b\x64ispatch_id\x18\x01 \x01(\t\">\n\x19ListAgentDispatchRequesst\x12\x13\n\x0b\x64ispatch_id\x18\x01 \x01(\t\x12\x0c\n\x04room\x18\x02 \x01(\t\"M\n\x19ListAgentDispatchResponse\x12\x30\n\x10\x61gent_dispatches\x18\x01 \x03(\x0b\x32\x16.livekit.AgentDispatch\"{\n\rAgentDispatch\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\nagent_name\x18\x02 \x01(\t\x12\x0c\n\x04room\x18\x03 \x01(\t\x12\x10\n\x08metadata\x18\x04 \x01(\t\x12*\n\x05state\x18\x05 \x01(\x0b\x32\x1b.livekit.AgentDispatchState\"X\n\x12\x41gentDispatchState\x12\x1a\n\x04jobs\x18\x01 \x03(\x0b\x32\x0c.livekit.Job\x12\x12\n\ncreated_at\x18\x02 \x01(\x03\x12\x12\n\ndeleted_at\x18\x03 \x01(\x03\x32\x8c\x02\n\x14\x41gentDispatchService\x12M\n\x0e\x43reateDispatch\x12#.livekit.CreateAgentDispatchRequest\x1a\x16.livekit.AgentDispatch\x12M\n\x0e\x44\x65leteDispatch\x12#.livekit.DeleteAgentDispatchRequest\x1a\x16.livekit.AgentDispatch\x12V\n\x0cListDispatch\x12\".livekit.ListAgentDispatchRequesst\x1a\".livekit.ListAgentDispatchResponseBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'agent_dispatch', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._options = None + _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _globals['_CREATEAGENTDISPATCHREQUEST']._serialized_start=62 + _globals['_CREATEAGENTDISPATCHREQUEST']._serialized_end=142 + _globals['_ROOMAGENTDISPATCH']._serialized_start=144 + _globals['_ROOMAGENTDISPATCH']._serialized_end=201 + _globals['_DELETEAGENTDISPATCHREQUEST']._serialized_start=203 + _globals['_DELETEAGENTDISPATCHREQUEST']._serialized_end=252 + _globals['_LISTAGENTDISPATCHREQUESST']._serialized_start=254 + _globals['_LISTAGENTDISPATCHREQUESST']._serialized_end=316 + _globals['_LISTAGENTDISPATCHRESPONSE']._serialized_start=318 + _globals['_LISTAGENTDISPATCHRESPONSE']._serialized_end=395 + _globals['_AGENTDISPATCH']._serialized_start=397 + _globals['_AGENTDISPATCH']._serialized_end=520 + _globals['_AGENTDISPATCHSTATE']._serialized_start=522 + _globals['_AGENTDISPATCHSTATE']._serialized_end=610 + _globals['_AGENTDISPATCHSERVICE']._serialized_start=613 + _globals['_AGENTDISPATCHSERVICE']._serialized_end=881 +# @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/agent_dispatch.pyi b/livekit-protocol/livekit/protocol/agent_dispatch.pyi new file mode 100644 index 00000000..a1d463e4 --- /dev/null +++ b/livekit-protocol/livekit/protocol/agent_dispatch.pyi @@ -0,0 +1,69 @@ +from . import agent as _agent +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 CreateAgentDispatchRequest(_message.Message): + __slots__ = ("agent_name", "room", "metadata") + AGENT_NAME_FIELD_NUMBER: _ClassVar[int] + ROOM_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + agent_name: str + room: str + metadata: str + def __init__(self, agent_name: _Optional[str] = ..., room: _Optional[str] = ..., metadata: _Optional[str] = ...) -> None: ... + +class RoomAgentDispatch(_message.Message): + __slots__ = ("agent_name", "metadata") + AGENT_NAME_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + agent_name: str + metadata: str + def __init__(self, agent_name: _Optional[str] = ..., metadata: _Optional[str] = ...) -> None: ... + +class DeleteAgentDispatchRequest(_message.Message): + __slots__ = ("dispatch_id",) + DISPATCH_ID_FIELD_NUMBER: _ClassVar[int] + dispatch_id: str + def __init__(self, dispatch_id: _Optional[str] = ...) -> None: ... + +class ListAgentDispatchRequesst(_message.Message): + __slots__ = ("dispatch_id", "room") + DISPATCH_ID_FIELD_NUMBER: _ClassVar[int] + ROOM_FIELD_NUMBER: _ClassVar[int] + dispatch_id: str + room: str + def __init__(self, dispatch_id: _Optional[str] = ..., room: _Optional[str] = ...) -> None: ... + +class ListAgentDispatchResponse(_message.Message): + __slots__ = ("agent_dispatches",) + AGENT_DISPATCHES_FIELD_NUMBER: _ClassVar[int] + agent_dispatches: _containers.RepeatedCompositeFieldContainer[AgentDispatch] + def __init__(self, agent_dispatches: _Optional[_Iterable[_Union[AgentDispatch, _Mapping]]] = ...) -> None: ... + +class AgentDispatch(_message.Message): + __slots__ = ("id", "agent_name", "room", "metadata", "state") + ID_FIELD_NUMBER: _ClassVar[int] + AGENT_NAME_FIELD_NUMBER: _ClassVar[int] + ROOM_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + id: str + agent_name: str + room: str + metadata: str + state: AgentDispatchState + def __init__(self, id: _Optional[str] = ..., agent_name: _Optional[str] = ..., room: _Optional[str] = ..., metadata: _Optional[str] = ..., state: _Optional[_Union[AgentDispatchState, _Mapping]] = ...) -> None: ... + +class AgentDispatchState(_message.Message): + __slots__ = ("jobs", "created_at", "deleted_at") + JOBS_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + DELETED_AT_FIELD_NUMBER: _ClassVar[int] + jobs: _containers.RepeatedCompositeFieldContainer[_agent.Job] + created_at: int + deleted_at: int + def __init__(self, jobs: _Optional[_Iterable[_Union[_agent.Job, _Mapping]]] = ..., created_at: _Optional[int] = ..., deleted_at: _Optional[int] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/egress.py b/livekit-protocol/livekit/protocol/egress.py index 1fc90211..4ae32165 100644 --- a/livekit-protocol/livekit/protocol/egress.py +++ b/livekit-protocol/livekit/protocol/egress.py @@ -15,7 +15,7 @@ from . import models as _models_ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14livekit_egress.proto\x12\x07livekit\x1a\x14livekit_models.proto\"\xcd\x04\n\x1aRoomCompositeEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x0e\n\x06layout\x18\x02 \x01(\t\x12\x12\n\naudio_only\x18\x03 \x01(\x08\x12\x12\n\nvideo_only\x18\x04 \x01(\x08\x12\x17\n\x0f\x63ustom_base_url\x18\x05 \x01(\t\x12.\n\x04\x66ile\x18\x06 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x07 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\n \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x08 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\t \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\x0b \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x0c \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\r \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\x0e \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\xb0\x04\n\x10WebEgressRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\naudio_only\x18\x02 \x01(\x08\x12\x12\n\nvideo_only\x18\x03 \x01(\x08\x12\x1a\n\x12\x61wait_start_signal\x18\x0c \x01(\x08\x12.\n\x04\x66ile\x18\x04 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x05 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\x06 \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x07 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\x08 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\t \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\n \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\x0b \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\r \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\x85\x03\n\x18ParticipantEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x14\n\x0cscreen_share\x18\x03 \x01(\x08\x12\x30\n\x06preset\x18\x04 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x00\x12,\n\x08\x61\x64vanced\x18\x05 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x00\x12\x30\n\x0c\x66ile_outputs\x18\x06 \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x07 \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\x08 \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\t \x03(\x0b\x32\x14.livekit.ImageOutputB\t\n\x07options\"\xad\x04\n\x1bTrackCompositeEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x16\n\x0e\x61udio_track_id\x18\x02 \x01(\t\x12\x16\n\x0evideo_track_id\x18\x03 \x01(\t\x12.\n\x04\x66ile\x18\x04 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x05 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\x08 \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x06 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\x07 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\x0b \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x0c \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\r \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\x0e \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\x87\x01\n\x12TrackEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x10\n\x08track_id\x18\x02 \x01(\t\x12)\n\x04\x66ile\x18\x03 \x01(\x0b\x32\x19.livekit.DirectFileOutputH\x00\x12\x17\n\rwebsocket_url\x18\x04 \x01(\tH\x00\x42\x08\n\x06output\"\x8e\x02\n\x11\x45ncodedFileOutput\x12+\n\tfile_type\x18\x01 \x01(\x0e\x32\x18.livekit.EncodedFileType\x12\x10\n\x08\x66ilepath\x18\x02 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x06 \x01(\x08\x12\x1f\n\x02s3\x18\x03 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x04 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x05 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x07 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xa0\x03\n\x13SegmentedFileOutput\x12\x30\n\x08protocol\x18\x01 \x01(\x0e\x32\x1e.livekit.SegmentedFileProtocol\x12\x17\n\x0f\x66ilename_prefix\x18\x02 \x01(\t\x12\x15\n\rplaylist_name\x18\x03 \x01(\t\x12\x1a\n\x12live_playlist_name\x18\x0b \x01(\t\x12\x18\n\x10segment_duration\x18\x04 \x01(\r\x12\x35\n\x0f\x66ilename_suffix\x18\n \x01(\x0e\x32\x1c.livekit.SegmentedFileSuffix\x12\x18\n\x10\x64isable_manifest\x18\x08 \x01(\x08\x12\x1f\n\x02s3\x18\x05 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x06 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x07 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\t \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xe0\x01\n\x10\x44irectFileOutput\x12\x10\n\x08\x66ilepath\x18\x01 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x05 \x01(\x08\x12\x1f\n\x02s3\x18\x02 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x03 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x04 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x06 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xf8\x02\n\x0bImageOutput\x12\x18\n\x10\x63\x61pture_interval\x18\x01 \x01(\r\x12\r\n\x05width\x18\x02 \x01(\x05\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\x17\n\x0f\x66ilename_prefix\x18\x04 \x01(\t\x12\x31\n\x0f\x66ilename_suffix\x18\x05 \x01(\x0e\x32\x18.livekit.ImageFileSuffix\x12(\n\x0bimage_codec\x18\x06 \x01(\x0e\x32\x13.livekit.ImageCodec\x12\x18\n\x10\x64isable_manifest\x18\x07 \x01(\x08\x12\x1f\n\x02s3\x18\x08 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\t \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\n \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x0b \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xc8\x02\n\x08S3Upload\x12\x12\n\naccess_key\x18\x01 \x01(\t\x12\x0e\n\x06secret\x18\x02 \x01(\t\x12\x15\n\rsession_token\x18\x0b \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x04 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x05 \x01(\t\x12\x18\n\x10\x66orce_path_style\x18\x06 \x01(\x08\x12\x31\n\x08metadata\x18\x07 \x03(\x0b\x32\x1f.livekit.S3Upload.MetadataEntry\x12\x0f\n\x07tagging\x18\x08 \x01(\t\x12\x1b\n\x13\x63ontent_disposition\x18\t \x01(\t\x12#\n\x05proxy\x18\n \x01(\x0b\x32\x14.livekit.ProxyConfig\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"U\n\tGCPUpload\x12\x13\n\x0b\x63redentials\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12#\n\x05proxy\x18\x03 \x01(\x0b\x32\x14.livekit.ProxyConfig\"T\n\x0f\x41zureBlobUpload\x12\x14\n\x0c\x61\x63\x63ount_name\x18\x01 \x01(\t\x12\x13\n\x0b\x61\x63\x63ount_key\x18\x02 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x03 \x01(\t\"d\n\x0c\x41liOSSUpload\x12\x12\n\naccess_key\x18\x01 \x01(\t\x12\x0e\n\x06secret\x18\x02 \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x04 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x05 \x01(\t\">\n\x0bProxyConfig\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"G\n\x0cStreamOutput\x12)\n\x08protocol\x18\x01 \x01(\x0e\x32\x17.livekit.StreamProtocol\x12\x0c\n\x04urls\x18\x02 \x03(\t\"\xb7\x02\n\x0f\x45ncodingOptions\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\x12\r\n\x05\x64\x65pth\x18\x03 \x01(\x05\x12\x11\n\tframerate\x18\x04 \x01(\x05\x12(\n\x0b\x61udio_codec\x18\x05 \x01(\x0e\x32\x13.livekit.AudioCodec\x12\x15\n\raudio_bitrate\x18\x06 \x01(\x05\x12\x15\n\raudio_quality\x18\x0b \x01(\x05\x12\x17\n\x0f\x61udio_frequency\x18\x07 \x01(\x05\x12(\n\x0bvideo_codec\x18\x08 \x01(\x0e\x32\x13.livekit.VideoCodec\x12\x15\n\rvideo_bitrate\x18\t \x01(\x05\x12\x15\n\rvideo_quality\x18\x0c \x01(\x05\x12\x1a\n\x12key_frame_interval\x18\n \x01(\x01\"8\n\x13UpdateLayoutRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x0e\n\x06layout\x18\x02 \x01(\t\"]\n\x13UpdateStreamRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x17\n\x0f\x61\x64\x64_output_urls\x18\x02 \x03(\t\x12\x1a\n\x12remove_output_urls\x18\x03 \x03(\t\"I\n\x11ListEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x11\n\tegress_id\x18\x02 \x01(\t\x12\x0e\n\x06\x61\x63tive\x18\x03 \x01(\x08\"8\n\x12ListEgressResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.livekit.EgressInfo\"&\n\x11StopEgressRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\"\xb6\x06\n\nEgressInfo\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x0f\n\x07room_id\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\r \x01(\t\x12%\n\x06status\x18\x03 \x01(\x0e\x32\x15.livekit.EgressStatus\x12\x12\n\nstarted_at\x18\n \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x0b \x01(\x03\x12\x12\n\nupdated_at\x18\x12 \x01(\x03\x12\x0f\n\x07\x64\x65tails\x18\x15 \x01(\t\x12\r\n\x05\x65rror\x18\t \x01(\t\x12\x12\n\nerror_code\x18\x16 \x01(\x05\x12=\n\x0eroom_composite\x18\x04 \x01(\x0b\x32#.livekit.RoomCompositeEgressRequestH\x00\x12(\n\x03web\x18\x0e \x01(\x0b\x32\x19.livekit.WebEgressRequestH\x00\x12\x38\n\x0bparticipant\x18\x13 \x01(\x0b\x32!.livekit.ParticipantEgressRequestH\x00\x12?\n\x0ftrack_composite\x18\x05 \x01(\x0b\x32$.livekit.TrackCompositeEgressRequestH\x00\x12,\n\x05track\x18\x06 \x01(\x0b\x32\x1b.livekit.TrackEgressRequestH\x00\x12-\n\x06stream\x18\x07 \x01(\x0b\x32\x17.livekit.StreamInfoListB\x02\x18\x01H\x01\x12%\n\x04\x66ile\x18\x08 \x01(\x0b\x32\x11.livekit.FileInfoB\x02\x18\x01H\x01\x12-\n\x08segments\x18\x0c \x01(\x0b\x32\x15.livekit.SegmentsInfoB\x02\x18\x01H\x01\x12+\n\x0estream_results\x18\x0f \x03(\x0b\x32\x13.livekit.StreamInfo\x12\'\n\x0c\x66ile_results\x18\x10 \x03(\x0b\x32\x11.livekit.FileInfo\x12.\n\x0fsegment_results\x18\x11 \x03(\x0b\x32\x15.livekit.SegmentsInfo\x12*\n\rimage_results\x18\x14 \x03(\x0b\x32\x13.livekit.ImagesInfoB\t\n\x07requestB\x08\n\x06result\"7\n\x0eStreamInfoList\x12!\n\x04info\x18\x01 \x03(\x0b\x32\x13.livekit.StreamInfo:\x02\x18\x01\"\xbc\x01\n\nStreamInfo\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\x12\x10\n\x08\x64uration\x18\x04 \x01(\x03\x12*\n\x06status\x18\x05 \x01(\x0e\x32\x1a.livekit.StreamInfo.Status\x12\r\n\x05\x65rror\x18\x06 \x01(\t\".\n\x06Status\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08\x46INISHED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\"t\n\x08\x46ileInfo\x12\x10\n\x08\x66ilename\x18\x01 \x01(\t\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\x12\x10\n\x08\x64uration\x18\x06 \x01(\x03\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x10\n\x08location\x18\x05 \x01(\t\"\xd9\x01\n\x0cSegmentsInfo\x12\x15\n\rplaylist_name\x18\x01 \x01(\t\x12\x1a\n\x12live_playlist_name\x18\x08 \x01(\t\x12\x10\n\x08\x64uration\x18\x02 \x01(\x03\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x19\n\x11playlist_location\x18\x04 \x01(\t\x12\x1e\n\x16live_playlist_location\x18\t \x01(\t\x12\x15\n\rsegment_count\x18\x05 \x01(\x03\x12\x12\n\nstarted_at\x18\x06 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x07 \x01(\x03\"G\n\nImagesInfo\x12\x13\n\x0bimage_count\x18\x01 \x01(\x03\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\"\xeb\x01\n\x15\x41utoParticipantEgress\x12\x30\n\x06preset\x18\x01 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x00\x12,\n\x08\x61\x64vanced\x18\x02 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x00\x12\x30\n\x0c\x66ile_outputs\x18\x03 \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12\x35\n\x0fsegment_outputs\x18\x04 \x03(\x0b\x32\x1c.livekit.SegmentedFileOutputB\t\n\x07options\"\xdf\x01\n\x0f\x41utoTrackEgress\x12\x10\n\x08\x66ilepath\x18\x01 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x05 \x01(\x08\x12\x1f\n\x02s3\x18\x02 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x03 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x04 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x06 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output*9\n\x0f\x45ncodedFileType\x12\x14\n\x10\x44\x45\x46\x41ULT_FILETYPE\x10\x00\x12\x07\n\x03MP4\x10\x01\x12\x07\n\x03OGG\x10\x02*N\n\x15SegmentedFileProtocol\x12#\n\x1f\x44\x45\x46\x41ULT_SEGMENTED_FILE_PROTOCOL\x10\x00\x12\x10\n\x0cHLS_PROTOCOL\x10\x01*/\n\x13SegmentedFileSuffix\x12\t\n\x05INDEX\x10\x00\x12\r\n\tTIMESTAMP\x10\x01*E\n\x0fImageFileSuffix\x12\x16\n\x12IMAGE_SUFFIX_INDEX\x10\x00\x12\x1a\n\x16IMAGE_SUFFIX_TIMESTAMP\x10\x01*0\n\x0eStreamProtocol\x12\x14\n\x10\x44\x45\x46\x41ULT_PROTOCOL\x10\x00\x12\x08\n\x04RTMP\x10\x01*\xcf\x01\n\x15\x45ncodingOptionsPreset\x12\x10\n\x0cH264_720P_30\x10\x00\x12\x10\n\x0cH264_720P_60\x10\x01\x12\x11\n\rH264_1080P_30\x10\x02\x12\x11\n\rH264_1080P_60\x10\x03\x12\x19\n\x15PORTRAIT_H264_720P_30\x10\x04\x12\x19\n\x15PORTRAIT_H264_720P_60\x10\x05\x12\x1a\n\x16PORTRAIT_H264_1080P_30\x10\x06\x12\x1a\n\x16PORTRAIT_H264_1080P_60\x10\x07*\x9f\x01\n\x0c\x45gressStatus\x12\x13\n\x0f\x45GRESS_STARTING\x10\x00\x12\x11\n\rEGRESS_ACTIVE\x10\x01\x12\x11\n\rEGRESS_ENDING\x10\x02\x12\x13\n\x0f\x45GRESS_COMPLETE\x10\x03\x12\x11\n\rEGRESS_FAILED\x10\x04\x12\x12\n\x0e\x45GRESS_ABORTED\x10\x05\x12\x18\n\x14\x45GRESS_LIMIT_REACHED\x10\x06\x32\x9c\x05\n\x06\x45gress\x12T\n\x18StartRoomCompositeEgress\x12#.livekit.RoomCompositeEgressRequest\x1a\x13.livekit.EgressInfo\x12@\n\x0eStartWebEgress\x12\x19.livekit.WebEgressRequest\x1a\x13.livekit.EgressInfo\x12P\n\x16StartParticipantEgress\x12!.livekit.ParticipantEgressRequest\x1a\x13.livekit.EgressInfo\x12V\n\x19StartTrackCompositeEgress\x12$.livekit.TrackCompositeEgressRequest\x1a\x13.livekit.EgressInfo\x12\x44\n\x10StartTrackEgress\x12\x1b.livekit.TrackEgressRequest\x1a\x13.livekit.EgressInfo\x12\x41\n\x0cUpdateLayout\x12\x1c.livekit.UpdateLayoutRequest\x1a\x13.livekit.EgressInfo\x12\x41\n\x0cUpdateStream\x12\x1c.livekit.UpdateStreamRequest\x1a\x13.livekit.EgressInfo\x12\x45\n\nListEgress\x12\x1a.livekit.ListEgressRequest\x1a\x1b.livekit.ListEgressResponse\x12=\n\nStopEgress\x12\x1a.livekit.StopEgressRequest\x1a\x13.livekit.EgressInfoBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14livekit_egress.proto\x12\x07livekit\x1a\x14livekit_models.proto\"\xcd\x04\n\x1aRoomCompositeEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x0e\n\x06layout\x18\x02 \x01(\t\x12\x12\n\naudio_only\x18\x03 \x01(\x08\x12\x12\n\nvideo_only\x18\x04 \x01(\x08\x12\x17\n\x0f\x63ustom_base_url\x18\x05 \x01(\t\x12.\n\x04\x66ile\x18\x06 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x07 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\n \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x08 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\t \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\x0b \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x0c \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\r \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\x0e \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\xb0\x04\n\x10WebEgressRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\naudio_only\x18\x02 \x01(\x08\x12\x12\n\nvideo_only\x18\x03 \x01(\x08\x12\x1a\n\x12\x61wait_start_signal\x18\x0c \x01(\x08\x12.\n\x04\x66ile\x18\x04 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x05 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\x06 \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x07 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\x08 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\t \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\n \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\x0b \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\r \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\x85\x03\n\x18ParticipantEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x14\n\x0cscreen_share\x18\x03 \x01(\x08\x12\x30\n\x06preset\x18\x04 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x00\x12,\n\x08\x61\x64vanced\x18\x05 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x00\x12\x30\n\x0c\x66ile_outputs\x18\x06 \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x07 \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\x08 \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\t \x03(\x0b\x32\x14.livekit.ImageOutputB\t\n\x07options\"\xad\x04\n\x1bTrackCompositeEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x16\n\x0e\x61udio_track_id\x18\x02 \x01(\t\x12\x16\n\x0evideo_track_id\x18\x03 \x01(\t\x12.\n\x04\x66ile\x18\x04 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x05 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\x08 \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x06 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\x07 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\x0b \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x0c \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\r \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\x0e \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\x87\x01\n\x12TrackEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x10\n\x08track_id\x18\x02 \x01(\t\x12)\n\x04\x66ile\x18\x03 \x01(\x0b\x32\x19.livekit.DirectFileOutputH\x00\x12\x17\n\rwebsocket_url\x18\x04 \x01(\tH\x00\x42\x08\n\x06output\"\x8e\x02\n\x11\x45ncodedFileOutput\x12+\n\tfile_type\x18\x01 \x01(\x0e\x32\x18.livekit.EncodedFileType\x12\x10\n\x08\x66ilepath\x18\x02 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x06 \x01(\x08\x12\x1f\n\x02s3\x18\x03 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x04 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x05 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x07 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xa0\x03\n\x13SegmentedFileOutput\x12\x30\n\x08protocol\x18\x01 \x01(\x0e\x32\x1e.livekit.SegmentedFileProtocol\x12\x17\n\x0f\x66ilename_prefix\x18\x02 \x01(\t\x12\x15\n\rplaylist_name\x18\x03 \x01(\t\x12\x1a\n\x12live_playlist_name\x18\x0b \x01(\t\x12\x18\n\x10segment_duration\x18\x04 \x01(\r\x12\x35\n\x0f\x66ilename_suffix\x18\n \x01(\x0e\x32\x1c.livekit.SegmentedFileSuffix\x12\x18\n\x10\x64isable_manifest\x18\x08 \x01(\x08\x12\x1f\n\x02s3\x18\x05 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x06 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x07 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\t \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xe0\x01\n\x10\x44irectFileOutput\x12\x10\n\x08\x66ilepath\x18\x01 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x05 \x01(\x08\x12\x1f\n\x02s3\x18\x02 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x03 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x04 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x06 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xf8\x02\n\x0bImageOutput\x12\x18\n\x10\x63\x61pture_interval\x18\x01 \x01(\r\x12\r\n\x05width\x18\x02 \x01(\x05\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\x17\n\x0f\x66ilename_prefix\x18\x04 \x01(\t\x12\x31\n\x0f\x66ilename_suffix\x18\x05 \x01(\x0e\x32\x18.livekit.ImageFileSuffix\x12(\n\x0bimage_codec\x18\x06 \x01(\x0e\x32\x13.livekit.ImageCodec\x12\x18\n\x10\x64isable_manifest\x18\x07 \x01(\x08\x12\x1f\n\x02s3\x18\x08 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\t \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\n \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x0b \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xc8\x02\n\x08S3Upload\x12\x12\n\naccess_key\x18\x01 \x01(\t\x12\x0e\n\x06secret\x18\x02 \x01(\t\x12\x15\n\rsession_token\x18\x0b \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x04 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x05 \x01(\t\x12\x18\n\x10\x66orce_path_style\x18\x06 \x01(\x08\x12\x31\n\x08metadata\x18\x07 \x03(\x0b\x32\x1f.livekit.S3Upload.MetadataEntry\x12\x0f\n\x07tagging\x18\x08 \x01(\t\x12\x1b\n\x13\x63ontent_disposition\x18\t \x01(\t\x12#\n\x05proxy\x18\n \x01(\x0b\x32\x14.livekit.ProxyConfig\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"U\n\tGCPUpload\x12\x13\n\x0b\x63redentials\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12#\n\x05proxy\x18\x03 \x01(\x0b\x32\x14.livekit.ProxyConfig\"T\n\x0f\x41zureBlobUpload\x12\x14\n\x0c\x61\x63\x63ount_name\x18\x01 \x01(\t\x12\x13\n\x0b\x61\x63\x63ount_key\x18\x02 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x03 \x01(\t\"d\n\x0c\x41liOSSUpload\x12\x12\n\naccess_key\x18\x01 \x01(\t\x12\x0e\n\x06secret\x18\x02 \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x04 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x05 \x01(\t\">\n\x0bProxyConfig\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"G\n\x0cStreamOutput\x12)\n\x08protocol\x18\x01 \x01(\x0e\x32\x17.livekit.StreamProtocol\x12\x0c\n\x04urls\x18\x02 \x03(\t\"\xb7\x02\n\x0f\x45ncodingOptions\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\x12\r\n\x05\x64\x65pth\x18\x03 \x01(\x05\x12\x11\n\tframerate\x18\x04 \x01(\x05\x12(\n\x0b\x61udio_codec\x18\x05 \x01(\x0e\x32\x13.livekit.AudioCodec\x12\x15\n\raudio_bitrate\x18\x06 \x01(\x05\x12\x15\n\raudio_quality\x18\x0b \x01(\x05\x12\x17\n\x0f\x61udio_frequency\x18\x07 \x01(\x05\x12(\n\x0bvideo_codec\x18\x08 \x01(\x0e\x32\x13.livekit.VideoCodec\x12\x15\n\rvideo_bitrate\x18\t \x01(\x05\x12\x15\n\rvideo_quality\x18\x0c \x01(\x05\x12\x1a\n\x12key_frame_interval\x18\n \x01(\x01\"8\n\x13UpdateLayoutRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x0e\n\x06layout\x18\x02 \x01(\t\"]\n\x13UpdateStreamRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x17\n\x0f\x61\x64\x64_output_urls\x18\x02 \x03(\t\x12\x1a\n\x12remove_output_urls\x18\x03 \x03(\t\"I\n\x11ListEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x11\n\tegress_id\x18\x02 \x01(\t\x12\x0e\n\x06\x61\x63tive\x18\x03 \x01(\x08\"8\n\x12ListEgressResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.livekit.EgressInfo\"&\n\x11StopEgressRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\"\xb6\x06\n\nEgressInfo\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x0f\n\x07room_id\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\r \x01(\t\x12%\n\x06status\x18\x03 \x01(\x0e\x32\x15.livekit.EgressStatus\x12\x12\n\nstarted_at\x18\n \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x0b \x01(\x03\x12\x12\n\nupdated_at\x18\x12 \x01(\x03\x12\x0f\n\x07\x64\x65tails\x18\x15 \x01(\t\x12\r\n\x05\x65rror\x18\t \x01(\t\x12\x12\n\nerror_code\x18\x16 \x01(\x05\x12=\n\x0eroom_composite\x18\x04 \x01(\x0b\x32#.livekit.RoomCompositeEgressRequestH\x00\x12(\n\x03web\x18\x0e \x01(\x0b\x32\x19.livekit.WebEgressRequestH\x00\x12\x38\n\x0bparticipant\x18\x13 \x01(\x0b\x32!.livekit.ParticipantEgressRequestH\x00\x12?\n\x0ftrack_composite\x18\x05 \x01(\x0b\x32$.livekit.TrackCompositeEgressRequestH\x00\x12,\n\x05track\x18\x06 \x01(\x0b\x32\x1b.livekit.TrackEgressRequestH\x00\x12-\n\x06stream\x18\x07 \x01(\x0b\x32\x17.livekit.StreamInfoListB\x02\x18\x01H\x01\x12%\n\x04\x66ile\x18\x08 \x01(\x0b\x32\x11.livekit.FileInfoB\x02\x18\x01H\x01\x12-\n\x08segments\x18\x0c \x01(\x0b\x32\x15.livekit.SegmentsInfoB\x02\x18\x01H\x01\x12+\n\x0estream_results\x18\x0f \x03(\x0b\x32\x13.livekit.StreamInfo\x12\'\n\x0c\x66ile_results\x18\x10 \x03(\x0b\x32\x11.livekit.FileInfo\x12.\n\x0fsegment_results\x18\x11 \x03(\x0b\x32\x15.livekit.SegmentsInfo\x12*\n\rimage_results\x18\x14 \x03(\x0b\x32\x13.livekit.ImagesInfoB\t\n\x07requestB\x08\n\x06result\"7\n\x0eStreamInfoList\x12!\n\x04info\x18\x01 \x03(\x0b\x32\x13.livekit.StreamInfo:\x02\x18\x01\"\xbc\x01\n\nStreamInfo\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\x12\x10\n\x08\x64uration\x18\x04 \x01(\x03\x12*\n\x06status\x18\x05 \x01(\x0e\x32\x1a.livekit.StreamInfo.Status\x12\r\n\x05\x65rror\x18\x06 \x01(\t\".\n\x06Status\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08\x46INISHED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\"t\n\x08\x46ileInfo\x12\x10\n\x08\x66ilename\x18\x01 \x01(\t\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\x12\x10\n\x08\x64uration\x18\x06 \x01(\x03\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x10\n\x08location\x18\x05 \x01(\t\"\xd9\x01\n\x0cSegmentsInfo\x12\x15\n\rplaylist_name\x18\x01 \x01(\t\x12\x1a\n\x12live_playlist_name\x18\x08 \x01(\t\x12\x10\n\x08\x64uration\x18\x02 \x01(\x03\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x19\n\x11playlist_location\x18\x04 \x01(\t\x12\x1e\n\x16live_playlist_location\x18\t \x01(\t\x12\x15\n\rsegment_count\x18\x05 \x01(\x03\x12\x12\n\nstarted_at\x18\x06 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x07 \x01(\x03\"`\n\nImagesInfo\x12\x17\n\x0f\x66ilename_prefix\x18\x04 \x01(\t\x12\x13\n\x0bimage_count\x18\x01 \x01(\x03\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\"\xeb\x01\n\x15\x41utoParticipantEgress\x12\x30\n\x06preset\x18\x01 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x00\x12,\n\x08\x61\x64vanced\x18\x02 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x00\x12\x30\n\x0c\x66ile_outputs\x18\x03 \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12\x35\n\x0fsegment_outputs\x18\x04 \x03(\x0b\x32\x1c.livekit.SegmentedFileOutputB\t\n\x07options\"\xdf\x01\n\x0f\x41utoTrackEgress\x12\x10\n\x08\x66ilepath\x18\x01 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x05 \x01(\x08\x12\x1f\n\x02s3\x18\x02 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x03 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x04 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x06 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output*9\n\x0f\x45ncodedFileType\x12\x14\n\x10\x44\x45\x46\x41ULT_FILETYPE\x10\x00\x12\x07\n\x03MP4\x10\x01\x12\x07\n\x03OGG\x10\x02*N\n\x15SegmentedFileProtocol\x12#\n\x1f\x44\x45\x46\x41ULT_SEGMENTED_FILE_PROTOCOL\x10\x00\x12\x10\n\x0cHLS_PROTOCOL\x10\x01*/\n\x13SegmentedFileSuffix\x12\t\n\x05INDEX\x10\x00\x12\r\n\tTIMESTAMP\x10\x01*E\n\x0fImageFileSuffix\x12\x16\n\x12IMAGE_SUFFIX_INDEX\x10\x00\x12\x1a\n\x16IMAGE_SUFFIX_TIMESTAMP\x10\x01*0\n\x0eStreamProtocol\x12\x14\n\x10\x44\x45\x46\x41ULT_PROTOCOL\x10\x00\x12\x08\n\x04RTMP\x10\x01*\xcf\x01\n\x15\x45ncodingOptionsPreset\x12\x10\n\x0cH264_720P_30\x10\x00\x12\x10\n\x0cH264_720P_60\x10\x01\x12\x11\n\rH264_1080P_30\x10\x02\x12\x11\n\rH264_1080P_60\x10\x03\x12\x19\n\x15PORTRAIT_H264_720P_30\x10\x04\x12\x19\n\x15PORTRAIT_H264_720P_60\x10\x05\x12\x1a\n\x16PORTRAIT_H264_1080P_30\x10\x06\x12\x1a\n\x16PORTRAIT_H264_1080P_60\x10\x07*\x9f\x01\n\x0c\x45gressStatus\x12\x13\n\x0f\x45GRESS_STARTING\x10\x00\x12\x11\n\rEGRESS_ACTIVE\x10\x01\x12\x11\n\rEGRESS_ENDING\x10\x02\x12\x13\n\x0f\x45GRESS_COMPLETE\x10\x03\x12\x11\n\rEGRESS_FAILED\x10\x04\x12\x12\n\x0e\x45GRESS_ABORTED\x10\x05\x12\x18\n\x14\x45GRESS_LIMIT_REACHED\x10\x06\x32\x9c\x05\n\x06\x45gress\x12T\n\x18StartRoomCompositeEgress\x12#.livekit.RoomCompositeEgressRequest\x1a\x13.livekit.EgressInfo\x12@\n\x0eStartWebEgress\x12\x19.livekit.WebEgressRequest\x1a\x13.livekit.EgressInfo\x12P\n\x16StartParticipantEgress\x12!.livekit.ParticipantEgressRequest\x1a\x13.livekit.EgressInfo\x12V\n\x19StartTrackCompositeEgress\x12$.livekit.TrackCompositeEgressRequest\x1a\x13.livekit.EgressInfo\x12\x44\n\x10StartTrackEgress\x12\x1b.livekit.TrackEgressRequest\x1a\x13.livekit.EgressInfo\x12\x41\n\x0cUpdateLayout\x12\x1c.livekit.UpdateLayoutRequest\x1a\x13.livekit.EgressInfo\x12\x41\n\x0cUpdateStream\x12\x1c.livekit.UpdateStreamRequest\x1a\x13.livekit.EgressInfo\x12\x45\n\nListEgress\x12\x1a.livekit.ListEgressRequest\x1a\x1b.livekit.ListEgressResponse\x12=\n\nStopEgress\x12\x1a.livekit.StopEgressRequest\x1a\x13.livekit.EgressInfoBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -51,20 +51,20 @@ _globals['_EGRESSINFO'].fields_by_name['segments']._serialized_options = b'\030\001' _globals['_STREAMINFOLIST']._options = None _globals['_STREAMINFOLIST']._serialized_options = b'\030\001' - _globals['_ENCODEDFILETYPE']._serialized_start=6929 - _globals['_ENCODEDFILETYPE']._serialized_end=6986 - _globals['_SEGMENTEDFILEPROTOCOL']._serialized_start=6988 - _globals['_SEGMENTEDFILEPROTOCOL']._serialized_end=7066 - _globals['_SEGMENTEDFILESUFFIX']._serialized_start=7068 - _globals['_SEGMENTEDFILESUFFIX']._serialized_end=7115 - _globals['_IMAGEFILESUFFIX']._serialized_start=7117 - _globals['_IMAGEFILESUFFIX']._serialized_end=7186 - _globals['_STREAMPROTOCOL']._serialized_start=7188 - _globals['_STREAMPROTOCOL']._serialized_end=7236 - _globals['_ENCODINGOPTIONSPRESET']._serialized_start=7239 - _globals['_ENCODINGOPTIONSPRESET']._serialized_end=7446 - _globals['_EGRESSSTATUS']._serialized_start=7449 - _globals['_EGRESSSTATUS']._serialized_end=7608 + _globals['_ENCODEDFILETYPE']._serialized_start=6954 + _globals['_ENCODEDFILETYPE']._serialized_end=7011 + _globals['_SEGMENTEDFILEPROTOCOL']._serialized_start=7013 + _globals['_SEGMENTEDFILEPROTOCOL']._serialized_end=7091 + _globals['_SEGMENTEDFILESUFFIX']._serialized_start=7093 + _globals['_SEGMENTEDFILESUFFIX']._serialized_end=7140 + _globals['_IMAGEFILESUFFIX']._serialized_start=7142 + _globals['_IMAGEFILESUFFIX']._serialized_end=7211 + _globals['_STREAMPROTOCOL']._serialized_start=7213 + _globals['_STREAMPROTOCOL']._serialized_end=7261 + _globals['_ENCODINGOPTIONSPRESET']._serialized_start=7264 + _globals['_ENCODINGOPTIONSPRESET']._serialized_end=7471 + _globals['_EGRESSSTATUS']._serialized_start=7474 + _globals['_EGRESSSTATUS']._serialized_end=7633 _globals['_ROOMCOMPOSITEEGRESSREQUEST']._serialized_start=56 _globals['_ROOMCOMPOSITEEGRESSREQUEST']._serialized_end=645 _globals['_WEBEGRESSREQUEST']._serialized_start=648 @@ -122,11 +122,11 @@ _globals['_SEGMENTSINFO']._serialized_start=6173 _globals['_SEGMENTSINFO']._serialized_end=6390 _globals['_IMAGESINFO']._serialized_start=6392 - _globals['_IMAGESINFO']._serialized_end=6463 - _globals['_AUTOPARTICIPANTEGRESS']._serialized_start=6466 - _globals['_AUTOPARTICIPANTEGRESS']._serialized_end=6701 - _globals['_AUTOTRACKEGRESS']._serialized_start=6704 - _globals['_AUTOTRACKEGRESS']._serialized_end=6927 - _globals['_EGRESS']._serialized_start=7611 - _globals['_EGRESS']._serialized_end=8279 + _globals['_IMAGESINFO']._serialized_end=6488 + _globals['_AUTOPARTICIPANTEGRESS']._serialized_start=6491 + _globals['_AUTOPARTICIPANTEGRESS']._serialized_end=6726 + _globals['_AUTOTRACKEGRESS']._serialized_start=6729 + _globals['_AUTOTRACKEGRESS']._serialized_end=6952 + _globals['_EGRESS']._serialized_start=7636 + _globals['_EGRESS']._serialized_end=8304 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/egress.pyi b/livekit-protocol/livekit/protocol/egress.pyi index 50d0ed2f..bdfa9dec 100644 --- a/livekit-protocol/livekit/protocol/egress.pyi +++ b/livekit-protocol/livekit/protocol/egress.pyi @@ -560,14 +560,16 @@ class SegmentsInfo(_message.Message): 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") + __slots__ = ("filename_prefix", "image_count", "started_at", "ended_at") + FILENAME_PREFIX_FIELD_NUMBER: _ClassVar[int] IMAGE_COUNT_FIELD_NUMBER: _ClassVar[int] STARTED_AT_FIELD_NUMBER: _ClassVar[int] ENDED_AT_FIELD_NUMBER: _ClassVar[int] + filename_prefix: str 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: ... + def __init__(self, filename_prefix: _Optional[str] = ..., image_count: _Optional[int] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ...) -> None: ... class AutoParticipantEgress(_message.Message): __slots__ = ("preset", "advanced", "file_outputs", "segment_outputs") diff --git a/livekit-protocol/livekit/protocol/room.py b/livekit-protocol/livekit/protocol/room.py index 2caebeb8..dcb52b33 100644 --- a/livekit-protocol/livekit/protocol/room.py +++ b/livekit-protocol/livekit/protocol/room.py @@ -14,9 +14,10 @@ from . import models as _models_ from . import egress as _egress_ +from . import agent_dispatch as _agent__dispatch_ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12livekit_room.proto\x12\x07livekit\x1a\x14livekit_models.proto\x1a\x14livekit_egress.proto\"\x81\x02\n\x11\x43reateRoomRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rempty_timeout\x18\x02 \x01(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\n \x01(\r\x12\x18\n\x10max_participants\x18\x03 \x01(\r\x12\x0f\n\x07node_id\x18\x04 \x01(\t\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12#\n\x06\x65gress\x18\x06 \x01(\x0b\x32\x13.livekit.RoomEgress\x12\x19\n\x11min_playout_delay\x18\x07 \x01(\r\x12\x19\n\x11max_playout_delay\x18\x08 \x01(\r\x12\x14\n\x0csync_streams\x18\t \x01(\x08\"\x9e\x01\n\nRoomEgress\x12\x31\n\x04room\x18\x01 \x01(\x0b\x32#.livekit.RoomCompositeEgressRequest\x12\x33\n\x0bparticipant\x18\x03 \x01(\x0b\x32\x1e.livekit.AutoParticipantEgress\x12(\n\x06tracks\x18\x02 \x01(\x0b\x32\x18.livekit.AutoTrackEgress\"!\n\x10ListRoomsRequest\x12\r\n\x05names\x18\x01 \x03(\t\"1\n\x11ListRoomsResponse\x12\x1c\n\x05rooms\x18\x01 \x03(\x0b\x32\r.livekit.Room\"!\n\x11\x44\x65leteRoomRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\"\x14\n\x12\x44\x65leteRoomResponse\"\'\n\x17ListParticipantsRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\"J\n\x18ListParticipantsResponse\x12.\n\x0cparticipants\x18\x01 \x03(\x0b\x32\x18.livekit.ParticipantInfo\"9\n\x17RoomParticipantIdentity\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\"\x1b\n\x19RemoveParticipantResponse\"X\n\x14MuteRoomTrackRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x11\n\ttrack_sid\x18\x03 \x01(\t\x12\r\n\x05muted\x18\x04 \x01(\x08\":\n\x15MuteRoomTrackResponse\x12!\n\x05track\x18\x01 \x01(\x0b\x32\x12.livekit.TrackInfo\"\x88\x02\n\x18UpdateParticipantRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x10\n\x08metadata\x18\x03 \x01(\t\x12\x32\n\npermission\x18\x04 \x01(\x0b\x32\x1e.livekit.ParticipantPermission\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x45\n\nattributes\x18\x06 \x03(\x0b\x32\x31.livekit.UpdateParticipantRequest.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\"\x9b\x01\n\x1aUpdateSubscriptionsRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x12\n\ntrack_sids\x18\x03 \x03(\t\x12\x11\n\tsubscribe\x18\x04 \x01(\x08\x12\x36\n\x12participant_tracks\x18\x05 \x03(\x0b\x32\x1a.livekit.ParticipantTracks\"\x1d\n\x1bUpdateSubscriptionsResponse\"\xb1\x01\n\x0fSendDataRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12&\n\x04kind\x18\x03 \x01(\x0e\x32\x18.livekit.DataPacket.Kind\x12\x1c\n\x10\x64\x65stination_sids\x18\x04 \x03(\tB\x02\x18\x01\x12\x1e\n\x16\x64\x65stination_identities\x18\x06 \x03(\t\x12\x12\n\x05topic\x18\x05 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_topic\"\x12\n\x10SendDataResponse\";\n\x19UpdateRoomMetadataRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08metadata\x18\x02 \x01(\t2\xe6\x06\n\x0bRoomService\x12\x37\n\nCreateRoom\x12\x1a.livekit.CreateRoomRequest\x1a\r.livekit.Room\x12\x42\n\tListRooms\x12\x19.livekit.ListRoomsRequest\x1a\x1a.livekit.ListRoomsResponse\x12\x45\n\nDeleteRoom\x12\x1a.livekit.DeleteRoomRequest\x1a\x1b.livekit.DeleteRoomResponse\x12W\n\x10ListParticipants\x12 .livekit.ListParticipantsRequest\x1a!.livekit.ListParticipantsResponse\x12L\n\x0eGetParticipant\x12 .livekit.RoomParticipantIdentity\x1a\x18.livekit.ParticipantInfo\x12Y\n\x11RemoveParticipant\x12 .livekit.RoomParticipantIdentity\x1a\".livekit.RemoveParticipantResponse\x12S\n\x12MutePublishedTrack\x12\x1d.livekit.MuteRoomTrackRequest\x1a\x1e.livekit.MuteRoomTrackResponse\x12P\n\x11UpdateParticipant\x12!.livekit.UpdateParticipantRequest\x1a\x18.livekit.ParticipantInfo\x12`\n\x13UpdateSubscriptions\x12#.livekit.UpdateSubscriptionsRequest\x1a$.livekit.UpdateSubscriptionsResponse\x12?\n\x08SendData\x12\x18.livekit.SendDataRequest\x1a\x19.livekit.SendDataResponse\x12G\n\x12UpdateRoomMetadata\x12\".livekit.UpdateRoomMetadataRequest\x1a\r.livekit.RoomBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12livekit_room.proto\x12\x07livekit\x1a\x14livekit_models.proto\x1a\x14livekit_egress.proto\x1a\x1clivekit_agent_dispatch.proto\"\xd1\x02\n\x11\x43reateRoomRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x63onfig_name\x18\x0c \x01(\t\x12\x15\n\rempty_timeout\x18\x02 \x01(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\n \x01(\r\x12\x18\n\x10max_participants\x18\x03 \x01(\r\x12\x0f\n\x07node_id\x18\x04 \x01(\t\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12#\n\x06\x65gress\x18\x06 \x01(\x0b\x32\x13.livekit.RoomEgress\x12!\n\x05\x61gent\x18\x0b \x01(\x0b\x32\x12.livekit.RoomAgent\x12\x19\n\x11min_playout_delay\x18\x07 \x01(\r\x12\x19\n\x11max_playout_delay\x18\x08 \x01(\r\x12\x14\n\x0csync_streams\x18\t \x01(\x08\x12\x16\n\x0ereplay_enabled\x18\r \x01(\x08\"\x9e\x01\n\nRoomEgress\x12\x31\n\x04room\x18\x01 \x01(\x0b\x32#.livekit.RoomCompositeEgressRequest\x12\x33\n\x0bparticipant\x18\x03 \x01(\x0b\x32\x1e.livekit.AutoParticipantEgress\x12(\n\x06tracks\x18\x02 \x01(\x0b\x32\x18.livekit.AutoTrackEgress\";\n\tRoomAgent\x12.\n\ndispatches\x18\x01 \x03(\x0b\x32\x1a.livekit.RoomAgentDispatch\"!\n\x10ListRoomsRequest\x12\r\n\x05names\x18\x01 \x03(\t\"1\n\x11ListRoomsResponse\x12\x1c\n\x05rooms\x18\x01 \x03(\x0b\x32\r.livekit.Room\"!\n\x11\x44\x65leteRoomRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\"\x14\n\x12\x44\x65leteRoomResponse\"\'\n\x17ListParticipantsRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\"J\n\x18ListParticipantsResponse\x12.\n\x0cparticipants\x18\x01 \x03(\x0b\x32\x18.livekit.ParticipantInfo\"9\n\x17RoomParticipantIdentity\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\"\x1b\n\x19RemoveParticipantResponse\"X\n\x14MuteRoomTrackRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x11\n\ttrack_sid\x18\x03 \x01(\t\x12\r\n\x05muted\x18\x04 \x01(\x08\":\n\x15MuteRoomTrackResponse\x12!\n\x05track\x18\x01 \x01(\x0b\x32\x12.livekit.TrackInfo\"\x88\x02\n\x18UpdateParticipantRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x10\n\x08metadata\x18\x03 \x01(\t\x12\x32\n\npermission\x18\x04 \x01(\x0b\x32\x1e.livekit.ParticipantPermission\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x45\n\nattributes\x18\x06 \x03(\x0b\x32\x31.livekit.UpdateParticipantRequest.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\"\x9b\x01\n\x1aUpdateSubscriptionsRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x12\n\ntrack_sids\x18\x03 \x03(\t\x12\x11\n\tsubscribe\x18\x04 \x01(\x08\x12\x36\n\x12participant_tracks\x18\x05 \x03(\x0b\x32\x1a.livekit.ParticipantTracks\"\x1d\n\x1bUpdateSubscriptionsResponse\"\xb1\x01\n\x0fSendDataRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12&\n\x04kind\x18\x03 \x01(\x0e\x32\x18.livekit.DataPacket.Kind\x12\x1c\n\x10\x64\x65stination_sids\x18\x04 \x03(\tB\x02\x18\x01\x12\x1e\n\x16\x64\x65stination_identities\x18\x06 \x03(\t\x12\x12\n\x05topic\x18\x05 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_topic\"\x12\n\x10SendDataResponse\";\n\x19UpdateRoomMetadataRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08metadata\x18\x02 \x01(\t\"\x81\x02\n\x11RoomConfiguration\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rempty_timeout\x18\x02 \x01(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\x03 \x01(\r\x12\x18\n\x10max_participants\x18\x04 \x01(\r\x12#\n\x06\x65gress\x18\x05 \x01(\x0b\x32\x13.livekit.RoomEgress\x12!\n\x05\x61gent\x18\x06 \x01(\x0b\x32\x12.livekit.RoomAgent\x12\x19\n\x11min_playout_delay\x18\x07 \x01(\r\x12\x19\n\x11max_playout_delay\x18\x08 \x01(\r\x12\x14\n\x0csync_streams\x18\t \x01(\x08\x32\xe6\x06\n\x0bRoomService\x12\x37\n\nCreateRoom\x12\x1a.livekit.CreateRoomRequest\x1a\r.livekit.Room\x12\x42\n\tListRooms\x12\x19.livekit.ListRoomsRequest\x1a\x1a.livekit.ListRoomsResponse\x12\x45\n\nDeleteRoom\x12\x1a.livekit.DeleteRoomRequest\x1a\x1b.livekit.DeleteRoomResponse\x12W\n\x10ListParticipants\x12 .livekit.ListParticipantsRequest\x1a!.livekit.ListParticipantsResponse\x12L\n\x0eGetParticipant\x12 .livekit.RoomParticipantIdentity\x1a\x18.livekit.ParticipantInfo\x12Y\n\x11RemoveParticipant\x12 .livekit.RoomParticipantIdentity\x1a\".livekit.RemoveParticipantResponse\x12S\n\x12MutePublishedTrack\x12\x1d.livekit.MuteRoomTrackRequest\x1a\x1e.livekit.MuteRoomTrackResponse\x12P\n\x11UpdateParticipant\x12!.livekit.UpdateParticipantRequest\x1a\x18.livekit.ParticipantInfo\x12`\n\x13UpdateSubscriptions\x12#.livekit.UpdateSubscriptionsRequest\x1a$.livekit.UpdateSubscriptionsResponse\x12?\n\x08SendData\x12\x18.livekit.SendDataRequest\x1a\x19.livekit.SendDataResponse\x12G\n\x12UpdateRoomMetadata\x12\".livekit.UpdateRoomMetadataRequest\x1a\r.livekit.RoomBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -28,44 +29,48 @@ _globals['_UPDATEPARTICIPANTREQUEST_ATTRIBUTESENTRY']._serialized_options = b'8\001' _globals['_SENDDATAREQUEST'].fields_by_name['destination_sids']._options = None _globals['_SENDDATAREQUEST'].fields_by_name['destination_sids']._serialized_options = b'\030\001' - _globals['_CREATEROOMREQUEST']._serialized_start=76 - _globals['_CREATEROOMREQUEST']._serialized_end=333 - _globals['_ROOMEGRESS']._serialized_start=336 - _globals['_ROOMEGRESS']._serialized_end=494 - _globals['_LISTROOMSREQUEST']._serialized_start=496 - _globals['_LISTROOMSREQUEST']._serialized_end=529 - _globals['_LISTROOMSRESPONSE']._serialized_start=531 - _globals['_LISTROOMSRESPONSE']._serialized_end=580 - _globals['_DELETEROOMREQUEST']._serialized_start=582 - _globals['_DELETEROOMREQUEST']._serialized_end=615 - _globals['_DELETEROOMRESPONSE']._serialized_start=617 - _globals['_DELETEROOMRESPONSE']._serialized_end=637 - _globals['_LISTPARTICIPANTSREQUEST']._serialized_start=639 - _globals['_LISTPARTICIPANTSREQUEST']._serialized_end=678 - _globals['_LISTPARTICIPANTSRESPONSE']._serialized_start=680 - _globals['_LISTPARTICIPANTSRESPONSE']._serialized_end=754 - _globals['_ROOMPARTICIPANTIDENTITY']._serialized_start=756 - _globals['_ROOMPARTICIPANTIDENTITY']._serialized_end=813 - _globals['_REMOVEPARTICIPANTRESPONSE']._serialized_start=815 - _globals['_REMOVEPARTICIPANTRESPONSE']._serialized_end=842 - _globals['_MUTEROOMTRACKREQUEST']._serialized_start=844 - _globals['_MUTEROOMTRACKREQUEST']._serialized_end=932 - _globals['_MUTEROOMTRACKRESPONSE']._serialized_start=934 - _globals['_MUTEROOMTRACKRESPONSE']._serialized_end=992 - _globals['_UPDATEPARTICIPANTREQUEST']._serialized_start=995 - _globals['_UPDATEPARTICIPANTREQUEST']._serialized_end=1259 - _globals['_UPDATEPARTICIPANTREQUEST_ATTRIBUTESENTRY']._serialized_start=1210 - _globals['_UPDATEPARTICIPANTREQUEST_ATTRIBUTESENTRY']._serialized_end=1259 - _globals['_UPDATESUBSCRIPTIONSREQUEST']._serialized_start=1262 - _globals['_UPDATESUBSCRIPTIONSREQUEST']._serialized_end=1417 - _globals['_UPDATESUBSCRIPTIONSRESPONSE']._serialized_start=1419 - _globals['_UPDATESUBSCRIPTIONSRESPONSE']._serialized_end=1448 - _globals['_SENDDATAREQUEST']._serialized_start=1451 - _globals['_SENDDATAREQUEST']._serialized_end=1628 - _globals['_SENDDATARESPONSE']._serialized_start=1630 - _globals['_SENDDATARESPONSE']._serialized_end=1648 - _globals['_UPDATEROOMMETADATAREQUEST']._serialized_start=1650 - _globals['_UPDATEROOMMETADATAREQUEST']._serialized_end=1709 - _globals['_ROOMSERVICE']._serialized_start=1712 - _globals['_ROOMSERVICE']._serialized_end=2582 + _globals['_CREATEROOMREQUEST']._serialized_start=106 + _globals['_CREATEROOMREQUEST']._serialized_end=443 + _globals['_ROOMEGRESS']._serialized_start=446 + _globals['_ROOMEGRESS']._serialized_end=604 + _globals['_ROOMAGENT']._serialized_start=606 + _globals['_ROOMAGENT']._serialized_end=665 + _globals['_LISTROOMSREQUEST']._serialized_start=667 + _globals['_LISTROOMSREQUEST']._serialized_end=700 + _globals['_LISTROOMSRESPONSE']._serialized_start=702 + _globals['_LISTROOMSRESPONSE']._serialized_end=751 + _globals['_DELETEROOMREQUEST']._serialized_start=753 + _globals['_DELETEROOMREQUEST']._serialized_end=786 + _globals['_DELETEROOMRESPONSE']._serialized_start=788 + _globals['_DELETEROOMRESPONSE']._serialized_end=808 + _globals['_LISTPARTICIPANTSREQUEST']._serialized_start=810 + _globals['_LISTPARTICIPANTSREQUEST']._serialized_end=849 + _globals['_LISTPARTICIPANTSRESPONSE']._serialized_start=851 + _globals['_LISTPARTICIPANTSRESPONSE']._serialized_end=925 + _globals['_ROOMPARTICIPANTIDENTITY']._serialized_start=927 + _globals['_ROOMPARTICIPANTIDENTITY']._serialized_end=984 + _globals['_REMOVEPARTICIPANTRESPONSE']._serialized_start=986 + _globals['_REMOVEPARTICIPANTRESPONSE']._serialized_end=1013 + _globals['_MUTEROOMTRACKREQUEST']._serialized_start=1015 + _globals['_MUTEROOMTRACKREQUEST']._serialized_end=1103 + _globals['_MUTEROOMTRACKRESPONSE']._serialized_start=1105 + _globals['_MUTEROOMTRACKRESPONSE']._serialized_end=1163 + _globals['_UPDATEPARTICIPANTREQUEST']._serialized_start=1166 + _globals['_UPDATEPARTICIPANTREQUEST']._serialized_end=1430 + _globals['_UPDATEPARTICIPANTREQUEST_ATTRIBUTESENTRY']._serialized_start=1381 + _globals['_UPDATEPARTICIPANTREQUEST_ATTRIBUTESENTRY']._serialized_end=1430 + _globals['_UPDATESUBSCRIPTIONSREQUEST']._serialized_start=1433 + _globals['_UPDATESUBSCRIPTIONSREQUEST']._serialized_end=1588 + _globals['_UPDATESUBSCRIPTIONSRESPONSE']._serialized_start=1590 + _globals['_UPDATESUBSCRIPTIONSRESPONSE']._serialized_end=1619 + _globals['_SENDDATAREQUEST']._serialized_start=1622 + _globals['_SENDDATAREQUEST']._serialized_end=1799 + _globals['_SENDDATARESPONSE']._serialized_start=1801 + _globals['_SENDDATARESPONSE']._serialized_end=1819 + _globals['_UPDATEROOMMETADATAREQUEST']._serialized_start=1821 + _globals['_UPDATEROOMMETADATAREQUEST']._serialized_end=1880 + _globals['_ROOMCONFIGURATION']._serialized_start=1883 + _globals['_ROOMCONFIGURATION']._serialized_end=2140 + _globals['_ROOMSERVICE']._serialized_start=2143 + _globals['_ROOMSERVICE']._serialized_end=3013 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/room.pyi b/livekit-protocol/livekit/protocol/room.pyi index 2ba90dd9..a3962f4b 100644 --- a/livekit-protocol/livekit/protocol/room.pyi +++ b/livekit-protocol/livekit/protocol/room.pyi @@ -1,5 +1,6 @@ from . import models as _models from . import egress as _egress +from . import agent_dispatch as _agent_dispatch from google.protobuf.internal import containers as _containers from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message @@ -8,28 +9,34 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class CreateRoomRequest(_message.Message): - __slots__ = ("name", "empty_timeout", "departure_timeout", "max_participants", "node_id", "metadata", "egress", "min_playout_delay", "max_playout_delay", "sync_streams") + __slots__ = ("name", "config_name", "empty_timeout", "departure_timeout", "max_participants", "node_id", "metadata", "egress", "agent", "min_playout_delay", "max_playout_delay", "sync_streams", "replay_enabled") NAME_FIELD_NUMBER: _ClassVar[int] + CONFIG_NAME_FIELD_NUMBER: _ClassVar[int] EMPTY_TIMEOUT_FIELD_NUMBER: _ClassVar[int] DEPARTURE_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] + AGENT_FIELD_NUMBER: _ClassVar[int] MIN_PLAYOUT_DELAY_FIELD_NUMBER: _ClassVar[int] MAX_PLAYOUT_DELAY_FIELD_NUMBER: _ClassVar[int] SYNC_STREAMS_FIELD_NUMBER: _ClassVar[int] + REPLAY_ENABLED_FIELD_NUMBER: _ClassVar[int] name: str + config_name: str empty_timeout: int departure_timeout: int max_participants: int node_id: str metadata: str egress: RoomEgress + agent: RoomAgent min_playout_delay: int max_playout_delay: int sync_streams: bool - def __init__(self, name: _Optional[str] = ..., empty_timeout: _Optional[int] = ..., departure_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: ... + replay_enabled: bool + def __init__(self, name: _Optional[str] = ..., config_name: _Optional[str] = ..., empty_timeout: _Optional[int] = ..., departure_timeout: _Optional[int] = ..., max_participants: _Optional[int] = ..., node_id: _Optional[str] = ..., metadata: _Optional[str] = ..., egress: _Optional[_Union[RoomEgress, _Mapping]] = ..., agent: _Optional[_Union[RoomAgent, _Mapping]] = ..., min_playout_delay: _Optional[int] = ..., max_playout_delay: _Optional[int] = ..., sync_streams: bool = ..., replay_enabled: bool = ...) -> None: ... class RoomEgress(_message.Message): __slots__ = ("room", "participant", "tracks") @@ -41,6 +48,12 @@ class RoomEgress(_message.Message): 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 RoomAgent(_message.Message): + __slots__ = ("dispatches",) + DISPATCHES_FIELD_NUMBER: _ClassVar[int] + dispatches: _containers.RepeatedCompositeFieldContainer[_agent_dispatch.RoomAgentDispatch] + def __init__(self, dispatches: _Optional[_Iterable[_Union[_agent_dispatch.RoomAgentDispatch, _Mapping]]] = ...) -> None: ... + class ListRoomsRequest(_message.Message): __slots__ = ("names",) NAMES_FIELD_NUMBER: _ClassVar[int] @@ -173,3 +186,25 @@ class UpdateRoomMetadataRequest(_message.Message): room: str metadata: str def __init__(self, room: _Optional[str] = ..., metadata: _Optional[str] = ...) -> None: ... + +class RoomConfiguration(_message.Message): + __slots__ = ("name", "empty_timeout", "departure_timeout", "max_participants", "egress", "agent", "min_playout_delay", "max_playout_delay", "sync_streams") + NAME_FIELD_NUMBER: _ClassVar[int] + EMPTY_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + DEPARTURE_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + MAX_PARTICIPANTS_FIELD_NUMBER: _ClassVar[int] + EGRESS_FIELD_NUMBER: _ClassVar[int] + AGENT_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 + departure_timeout: int + max_participants: int + egress: RoomEgress + agent: RoomAgent + min_playout_delay: int + max_playout_delay: int + sync_streams: bool + def __init__(self, name: _Optional[str] = ..., empty_timeout: _Optional[int] = ..., departure_timeout: _Optional[int] = ..., max_participants: _Optional[int] = ..., egress: _Optional[_Union[RoomEgress, _Mapping]] = ..., agent: _Optional[_Union[RoomAgent, _Mapping]] = ..., min_playout_delay: _Optional[int] = ..., max_playout_delay: _Optional[int] = ..., sync_streams: bool = ...) -> None: ... diff --git a/livekit-protocol/protocol b/livekit-protocol/protocol index 79b5ea9e..0df8e893 160000 --- a/livekit-protocol/protocol +++ b/livekit-protocol/protocol @@ -1 +1 @@ -Subproject commit 79b5ea9ea9a29991ca6819323173e080aae9cfd3 +Subproject commit 0df8e893874b50337a6de88bd7f1b8a6afc7b48e diff --git a/livekit-rtc/livekit/rtc/__init__.py b/livekit-rtc/livekit/rtc/__init__.py index c04d96a0..57d27f70 100644 --- a/livekit-rtc/livekit/rtc/__init__.py +++ b/livekit-rtc/livekit/rtc/__init__.py @@ -38,7 +38,11 @@ KeyProvider, KeyProviderOptions, ) -from .participant import LocalParticipant, Participant, RemoteParticipant +from .participant import ( + LocalParticipant, + Participant, + RemoteParticipant, +) from .room import ConnectError, DataPacket, Room, RoomOptions, RtcConfiguration, SipDTMF from .track import ( AudioTrack, diff --git a/livekit-rtc/livekit/rtc/_proto/audio_frame_pb2.py b/livekit-rtc/livekit/rtc/_proto/audio_frame_pb2.py index 7bf9939a..2684629a 100644 --- a/livekit-rtc/livekit/rtc/_proto/audio_frame_pb2.py +++ b/livekit-rtc/livekit/rtc/_proto/audio_frame_pb2.py @@ -15,7 +15,7 @@ from . import handle_pb2 as handle__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11\x61udio_frame.proto\x12\rlivekit.proto\x1a\x0chandle.proto\"[\n\x15NewAudioStreamRequest\x12\x14\n\x0ctrack_handle\x18\x01 \x01(\x04\x12,\n\x04type\x18\x02 \x01(\x0e\x32\x1e.livekit.proto.AudioStreamType\"I\n\x16NewAudioStreamResponse\x12/\n\x06stream\x18\x01 \x01(\x0b\x32\x1f.livekit.proto.OwnedAudioStream\"\xb5\x01\n\x15NewAudioSourceRequest\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.livekit.proto.AudioSourceType\x12\x37\n\x07options\x18\x02 \x01(\x0b\x32!.livekit.proto.AudioSourceOptionsH\x00\x88\x01\x01\x12\x13\n\x0bsample_rate\x18\x03 \x01(\r\x12\x14\n\x0cnum_channels\x18\x04 \x01(\rB\n\n\x08_options\"I\n\x16NewAudioSourceResponse\x12/\n\x06source\x18\x01 \x01(\x0b\x32\x1f.livekit.proto.OwnedAudioSource\"f\n\x18\x43\x61ptureAudioFrameRequest\x12\x15\n\rsource_handle\x18\x01 \x01(\x04\x12\x33\n\x06\x62uffer\x18\x02 \x01(\x0b\x32#.livekit.proto.AudioFrameBufferInfo\"-\n\x19\x43\x61ptureAudioFrameResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"K\n\x19\x43\x61ptureAudioFrameCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\x1a\n\x18NewAudioResamplerRequest\"R\n\x19NewAudioResamplerResponse\x12\x35\n\tresampler\x18\x01 \x01(\x0b\x32\".livekit.proto.OwnedAudioResampler\"\x93\x01\n\x17RemixAndResampleRequest\x12\x18\n\x10resampler_handle\x18\x01 \x01(\x04\x12\x33\n\x06\x62uffer\x18\x02 \x01(\x0b\x32#.livekit.proto.AudioFrameBufferInfo\x12\x14\n\x0cnum_channels\x18\x03 \x01(\r\x12\x13\n\x0bsample_rate\x18\x04 \x01(\r\"P\n\x18RemixAndResampleResponse\x12\x34\n\x06\x62uffer\x18\x01 \x01(\x0b\x32$.livekit.proto.OwnedAudioFrameBuffer\"p\n\x14\x41udioFrameBufferInfo\x12\x10\n\x08\x64\x61ta_ptr\x18\x01 \x01(\x04\x12\x14\n\x0cnum_channels\x18\x02 \x01(\r\x12\x13\n\x0bsample_rate\x18\x03 \x01(\r\x12\x1b\n\x13samples_per_channel\x18\x04 \x01(\r\"y\n\x15OwnedAudioFrameBuffer\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12\x31\n\x04info\x18\x02 \x01(\x0b\x32#.livekit.proto.AudioFrameBufferInfo\"?\n\x0f\x41udioStreamInfo\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.livekit.proto.AudioStreamType\"o\n\x10OwnedAudioStream\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12,\n\x04info\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.AudioStreamInfo\"\x9f\x01\n\x10\x41udioStreamEvent\x12\x15\n\rstream_handle\x18\x01 \x01(\x04\x12;\n\x0e\x66rame_received\x18\x02 \x01(\x0b\x32!.livekit.proto.AudioFrameReceivedH\x00\x12,\n\x03\x65os\x18\x03 \x01(\x0b\x32\x1d.livekit.proto.AudioStreamEOSH\x00\x42\t\n\x07message\"I\n\x12\x41udioFrameReceived\x12\x33\n\x05\x66rame\x18\x01 \x01(\x0b\x32$.livekit.proto.OwnedAudioFrameBuffer\"\x10\n\x0e\x41udioStreamEOS\"e\n\x12\x41udioSourceOptions\x12\x19\n\x11\x65\x63ho_cancellation\x18\x01 \x01(\x08\x12\x19\n\x11noise_suppression\x18\x02 \x01(\x08\x12\x19\n\x11\x61uto_gain_control\x18\x03 \x01(\x08\"?\n\x0f\x41udioSourceInfo\x12,\n\x04type\x18\x02 \x01(\x0e\x32\x1e.livekit.proto.AudioSourceType\"o\n\x10OwnedAudioSource\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12,\n\x04info\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.AudioSourceInfo\"\x14\n\x12\x41udioResamplerInfo\"u\n\x13OwnedAudioResampler\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12/\n\x04info\x18\x02 \x01(\x0b\x32!.livekit.proto.AudioResamplerInfo*A\n\x0f\x41udioStreamType\x12\x17\n\x13\x41UDIO_STREAM_NATIVE\x10\x00\x12\x15\n\x11\x41UDIO_STREAM_HTML\x10\x01**\n\x0f\x41udioSourceType\x12\x17\n\x13\x41UDIO_SOURCE_NATIVE\x10\x00\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11\x61udio_frame.proto\x12\rlivekit.proto\x1a\x0chandle.proto\"[\n\x15NewAudioStreamRequest\x12\x14\n\x0ctrack_handle\x18\x01 \x01(\x04\x12,\n\x04type\x18\x02 \x01(\x0e\x32\x1e.livekit.proto.AudioStreamType\"I\n\x16NewAudioStreamResponse\x12/\n\x06stream\x18\x01 \x01(\x0b\x32\x1f.livekit.proto.OwnedAudioStream\"\xe1\x01\n\x15NewAudioSourceRequest\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.livekit.proto.AudioSourceType\x12\x37\n\x07options\x18\x02 \x01(\x0b\x32!.livekit.proto.AudioSourceOptionsH\x00\x88\x01\x01\x12\x13\n\x0bsample_rate\x18\x03 \x01(\r\x12\x14\n\x0cnum_channels\x18\x04 \x01(\r\x12\x19\n\x0c\x65nable_queue\x18\x05 \x01(\x08H\x01\x88\x01\x01\x42\n\n\x08_optionsB\x0f\n\r_enable_queue\"I\n\x16NewAudioSourceResponse\x12/\n\x06source\x18\x01 \x01(\x0b\x32\x1f.livekit.proto.OwnedAudioSource\"f\n\x18\x43\x61ptureAudioFrameRequest\x12\x15\n\rsource_handle\x18\x01 \x01(\x04\x12\x33\n\x06\x62uffer\x18\x02 \x01(\x0b\x32#.livekit.proto.AudioFrameBufferInfo\"-\n\x19\x43\x61ptureAudioFrameResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"K\n\x19\x43\x61ptureAudioFrameCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\x1a\n\x18NewAudioResamplerRequest\"R\n\x19NewAudioResamplerResponse\x12\x35\n\tresampler\x18\x01 \x01(\x0b\x32\".livekit.proto.OwnedAudioResampler\"\x93\x01\n\x17RemixAndResampleRequest\x12\x18\n\x10resampler_handle\x18\x01 \x01(\x04\x12\x33\n\x06\x62uffer\x18\x02 \x01(\x0b\x32#.livekit.proto.AudioFrameBufferInfo\x12\x14\n\x0cnum_channels\x18\x03 \x01(\r\x12\x13\n\x0bsample_rate\x18\x04 \x01(\r\"P\n\x18RemixAndResampleResponse\x12\x34\n\x06\x62uffer\x18\x01 \x01(\x0b\x32$.livekit.proto.OwnedAudioFrameBuffer\"p\n\x14\x41udioFrameBufferInfo\x12\x10\n\x08\x64\x61ta_ptr\x18\x01 \x01(\x04\x12\x14\n\x0cnum_channels\x18\x02 \x01(\r\x12\x13\n\x0bsample_rate\x18\x03 \x01(\r\x12\x1b\n\x13samples_per_channel\x18\x04 \x01(\r\"y\n\x15OwnedAudioFrameBuffer\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12\x31\n\x04info\x18\x02 \x01(\x0b\x32#.livekit.proto.AudioFrameBufferInfo\"?\n\x0f\x41udioStreamInfo\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.livekit.proto.AudioStreamType\"o\n\x10OwnedAudioStream\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12,\n\x04info\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.AudioStreamInfo\"\x9f\x01\n\x10\x41udioStreamEvent\x12\x15\n\rstream_handle\x18\x01 \x01(\x04\x12;\n\x0e\x66rame_received\x18\x02 \x01(\x0b\x32!.livekit.proto.AudioFrameReceivedH\x00\x12,\n\x03\x65os\x18\x03 \x01(\x0b\x32\x1d.livekit.proto.AudioStreamEOSH\x00\x42\t\n\x07message\"I\n\x12\x41udioFrameReceived\x12\x33\n\x05\x66rame\x18\x01 \x01(\x0b\x32$.livekit.proto.OwnedAudioFrameBuffer\"\x10\n\x0e\x41udioStreamEOS\"e\n\x12\x41udioSourceOptions\x12\x19\n\x11\x65\x63ho_cancellation\x18\x01 \x01(\x08\x12\x19\n\x11noise_suppression\x18\x02 \x01(\x08\x12\x19\n\x11\x61uto_gain_control\x18\x03 \x01(\x08\"?\n\x0f\x41udioSourceInfo\x12,\n\x04type\x18\x02 \x01(\x0e\x32\x1e.livekit.proto.AudioSourceType\"o\n\x10OwnedAudioSource\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12,\n\x04info\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.AudioSourceInfo\"\x14\n\x12\x41udioResamplerInfo\"u\n\x13OwnedAudioResampler\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12/\n\x04info\x18\x02 \x01(\x0b\x32!.livekit.proto.AudioResamplerInfo*A\n\x0f\x41udioStreamType\x12\x17\n\x13\x41UDIO_STREAM_NATIVE\x10\x00\x12\x15\n\x11\x41UDIO_STREAM_HTML\x10\x01**\n\x0f\x41udioSourceType\x12\x17\n\x13\x41UDIO_SOURCE_NATIVE\x10\x00\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -23,54 +23,54 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals['DESCRIPTOR']._options = None _globals['DESCRIPTOR']._serialized_options = b'\252\002\rLiveKit.Proto' - _globals['_AUDIOSTREAMTYPE']._serialized_start=2141 - _globals['_AUDIOSTREAMTYPE']._serialized_end=2206 - _globals['_AUDIOSOURCETYPE']._serialized_start=2208 - _globals['_AUDIOSOURCETYPE']._serialized_end=2250 + _globals['_AUDIOSTREAMTYPE']._serialized_start=2185 + _globals['_AUDIOSTREAMTYPE']._serialized_end=2250 + _globals['_AUDIOSOURCETYPE']._serialized_start=2252 + _globals['_AUDIOSOURCETYPE']._serialized_end=2294 _globals['_NEWAUDIOSTREAMREQUEST']._serialized_start=50 _globals['_NEWAUDIOSTREAMREQUEST']._serialized_end=141 _globals['_NEWAUDIOSTREAMRESPONSE']._serialized_start=143 _globals['_NEWAUDIOSTREAMRESPONSE']._serialized_end=216 _globals['_NEWAUDIOSOURCEREQUEST']._serialized_start=219 - _globals['_NEWAUDIOSOURCEREQUEST']._serialized_end=400 - _globals['_NEWAUDIOSOURCERESPONSE']._serialized_start=402 - _globals['_NEWAUDIOSOURCERESPONSE']._serialized_end=475 - _globals['_CAPTUREAUDIOFRAMEREQUEST']._serialized_start=477 - _globals['_CAPTUREAUDIOFRAMEREQUEST']._serialized_end=579 - _globals['_CAPTUREAUDIOFRAMERESPONSE']._serialized_start=581 - _globals['_CAPTUREAUDIOFRAMERESPONSE']._serialized_end=626 - _globals['_CAPTUREAUDIOFRAMECALLBACK']._serialized_start=628 - _globals['_CAPTUREAUDIOFRAMECALLBACK']._serialized_end=703 - _globals['_NEWAUDIORESAMPLERREQUEST']._serialized_start=705 - _globals['_NEWAUDIORESAMPLERREQUEST']._serialized_end=731 - _globals['_NEWAUDIORESAMPLERRESPONSE']._serialized_start=733 - _globals['_NEWAUDIORESAMPLERRESPONSE']._serialized_end=815 - _globals['_REMIXANDRESAMPLEREQUEST']._serialized_start=818 - _globals['_REMIXANDRESAMPLEREQUEST']._serialized_end=965 - _globals['_REMIXANDRESAMPLERESPONSE']._serialized_start=967 - _globals['_REMIXANDRESAMPLERESPONSE']._serialized_end=1047 - _globals['_AUDIOFRAMEBUFFERINFO']._serialized_start=1049 - _globals['_AUDIOFRAMEBUFFERINFO']._serialized_end=1161 - _globals['_OWNEDAUDIOFRAMEBUFFER']._serialized_start=1163 - _globals['_OWNEDAUDIOFRAMEBUFFER']._serialized_end=1284 - _globals['_AUDIOSTREAMINFO']._serialized_start=1286 - _globals['_AUDIOSTREAMINFO']._serialized_end=1349 - _globals['_OWNEDAUDIOSTREAM']._serialized_start=1351 - _globals['_OWNEDAUDIOSTREAM']._serialized_end=1462 - _globals['_AUDIOSTREAMEVENT']._serialized_start=1465 - _globals['_AUDIOSTREAMEVENT']._serialized_end=1624 - _globals['_AUDIOFRAMERECEIVED']._serialized_start=1626 - _globals['_AUDIOFRAMERECEIVED']._serialized_end=1699 - _globals['_AUDIOSTREAMEOS']._serialized_start=1701 - _globals['_AUDIOSTREAMEOS']._serialized_end=1717 - _globals['_AUDIOSOURCEOPTIONS']._serialized_start=1719 - _globals['_AUDIOSOURCEOPTIONS']._serialized_end=1820 - _globals['_AUDIOSOURCEINFO']._serialized_start=1822 - _globals['_AUDIOSOURCEINFO']._serialized_end=1885 - _globals['_OWNEDAUDIOSOURCE']._serialized_start=1887 - _globals['_OWNEDAUDIOSOURCE']._serialized_end=1998 - _globals['_AUDIORESAMPLERINFO']._serialized_start=2000 - _globals['_AUDIORESAMPLERINFO']._serialized_end=2020 - _globals['_OWNEDAUDIORESAMPLER']._serialized_start=2022 - _globals['_OWNEDAUDIORESAMPLER']._serialized_end=2139 + _globals['_NEWAUDIOSOURCEREQUEST']._serialized_end=444 + _globals['_NEWAUDIOSOURCERESPONSE']._serialized_start=446 + _globals['_NEWAUDIOSOURCERESPONSE']._serialized_end=519 + _globals['_CAPTUREAUDIOFRAMEREQUEST']._serialized_start=521 + _globals['_CAPTUREAUDIOFRAMEREQUEST']._serialized_end=623 + _globals['_CAPTUREAUDIOFRAMERESPONSE']._serialized_start=625 + _globals['_CAPTUREAUDIOFRAMERESPONSE']._serialized_end=670 + _globals['_CAPTUREAUDIOFRAMECALLBACK']._serialized_start=672 + _globals['_CAPTUREAUDIOFRAMECALLBACK']._serialized_end=747 + _globals['_NEWAUDIORESAMPLERREQUEST']._serialized_start=749 + _globals['_NEWAUDIORESAMPLERREQUEST']._serialized_end=775 + _globals['_NEWAUDIORESAMPLERRESPONSE']._serialized_start=777 + _globals['_NEWAUDIORESAMPLERRESPONSE']._serialized_end=859 + _globals['_REMIXANDRESAMPLEREQUEST']._serialized_start=862 + _globals['_REMIXANDRESAMPLEREQUEST']._serialized_end=1009 + _globals['_REMIXANDRESAMPLERESPONSE']._serialized_start=1011 + _globals['_REMIXANDRESAMPLERESPONSE']._serialized_end=1091 + _globals['_AUDIOFRAMEBUFFERINFO']._serialized_start=1093 + _globals['_AUDIOFRAMEBUFFERINFO']._serialized_end=1205 + _globals['_OWNEDAUDIOFRAMEBUFFER']._serialized_start=1207 + _globals['_OWNEDAUDIOFRAMEBUFFER']._serialized_end=1328 + _globals['_AUDIOSTREAMINFO']._serialized_start=1330 + _globals['_AUDIOSTREAMINFO']._serialized_end=1393 + _globals['_OWNEDAUDIOSTREAM']._serialized_start=1395 + _globals['_OWNEDAUDIOSTREAM']._serialized_end=1506 + _globals['_AUDIOSTREAMEVENT']._serialized_start=1509 + _globals['_AUDIOSTREAMEVENT']._serialized_end=1668 + _globals['_AUDIOFRAMERECEIVED']._serialized_start=1670 + _globals['_AUDIOFRAMERECEIVED']._serialized_end=1743 + _globals['_AUDIOSTREAMEOS']._serialized_start=1745 + _globals['_AUDIOSTREAMEOS']._serialized_end=1761 + _globals['_AUDIOSOURCEOPTIONS']._serialized_start=1763 + _globals['_AUDIOSOURCEOPTIONS']._serialized_end=1864 + _globals['_AUDIOSOURCEINFO']._serialized_start=1866 + _globals['_AUDIOSOURCEINFO']._serialized_end=1929 + _globals['_OWNEDAUDIOSOURCE']._serialized_start=1931 + _globals['_OWNEDAUDIOSOURCE']._serialized_end=2042 + _globals['_AUDIORESAMPLERINFO']._serialized_start=2044 + _globals['_AUDIORESAMPLERINFO']._serialized_end=2064 + _globals['_OWNEDAUDIORESAMPLER']._serialized_start=2066 + _globals['_OWNEDAUDIORESAMPLER']._serialized_end=2183 # @@protoc_insertion_point(module_scope) diff --git a/livekit-rtc/livekit/rtc/_proto/audio_frame_pb2.pyi b/livekit-rtc/livekit/rtc/_proto/audio_frame_pb2.pyi index a5097d6b..a96c61c0 100644 --- a/livekit-rtc/livekit/rtc/_proto/audio_frame_pb2.pyi +++ b/livekit-rtc/livekit/rtc/_proto/audio_frame_pb2.pyi @@ -110,11 +110,13 @@ class NewAudioSourceRequest(google.protobuf.message.Message): OPTIONS_FIELD_NUMBER: builtins.int SAMPLE_RATE_FIELD_NUMBER: builtins.int NUM_CHANNELS_FIELD_NUMBER: builtins.int + ENABLE_QUEUE_FIELD_NUMBER: builtins.int type: global___AudioSourceType.ValueType @property def options(self) -> global___AudioSourceOptions: ... sample_rate: builtins.int num_channels: builtins.int + enable_queue: builtins.bool def __init__( self, *, @@ -122,9 +124,13 @@ class NewAudioSourceRequest(google.protobuf.message.Message): options: global___AudioSourceOptions | None = ..., sample_rate: builtins.int = ..., num_channels: builtins.int = ..., + enable_queue: builtins.bool | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_options", b"_options", "options", b"options"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_options", b"_options", "num_channels", b"num_channels", "options", b"options", "sample_rate", b"sample_rate", "type", b"type"]) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_enable_queue", b"_enable_queue", "_options", b"_options", "enable_queue", b"enable_queue", "options", b"options"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_enable_queue", b"_enable_queue", "_options", b"_options", "enable_queue", b"enable_queue", "num_channels", b"num_channels", "options", b"options", "sample_rate", b"sample_rate", "type", b"type"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_enable_queue", b"_enable_queue"]) -> typing_extensions.Literal["enable_queue"] | None: ... + @typing.overload def WhichOneof(self, oneof_group: typing_extensions.Literal["_options", b"_options"]) -> typing_extensions.Literal["options"] | None: ... global___NewAudioSourceRequest = NewAudioSourceRequest diff --git a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py index e414f0ca..77a1c26c 100644 --- a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py +++ b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py @@ -19,7 +19,7 @@ from . import audio_frame_pb2 as audio__frame__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tffi.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0btrack.proto\x1a\nroom.proto\x1a\x11video_frame.proto\x1a\x11\x61udio_frame.proto\"\x9c\x0c\n\nFfiRequest\x12\x30\n\x07\x64ispose\x18\x02 \x01(\x0b\x32\x1d.livekit.proto.DisposeRequestH\x00\x12\x30\n\x07\x63onnect\x18\x03 \x01(\x0b\x32\x1d.livekit.proto.ConnectRequestH\x00\x12\x36\n\ndisconnect\x18\x04 \x01(\x0b\x32 .livekit.proto.DisconnectRequestH\x00\x12;\n\rpublish_track\x18\x05 \x01(\x0b\x32\".livekit.proto.PublishTrackRequestH\x00\x12?\n\x0funpublish_track\x18\x06 \x01(\x0b\x32$.livekit.proto.UnpublishTrackRequestH\x00\x12\x39\n\x0cpublish_data\x18\x07 \x01(\x0b\x32!.livekit.proto.PublishDataRequestH\x00\x12=\n\x0eset_subscribed\x18\x08 \x01(\x0b\x32#.livekit.proto.SetSubscribedRequestH\x00\x12J\n\x15update_local_metadata\x18\t \x01(\x0b\x32).livekit.proto.UpdateLocalMetadataRequestH\x00\x12\x42\n\x11update_local_name\x18\n \x01(\x0b\x32%.livekit.proto.UpdateLocalNameRequestH\x00\x12\x42\n\x11get_session_stats\x18\x0b \x01(\x0b\x32%.livekit.proto.GetSessionStatsRequestH\x00\x12K\n\x15publish_transcription\x18\x0c \x01(\x0b\x32*.livekit.proto.PublishTranscriptionRequestH\x00\x12\x44\n\x12\x63reate_video_track\x18\r \x01(\x0b\x32&.livekit.proto.CreateVideoTrackRequestH\x00\x12\x44\n\x12\x63reate_audio_track\x18\x0e \x01(\x0b\x32&.livekit.proto.CreateAudioTrackRequestH\x00\x12\x33\n\tget_stats\x18\x0f \x01(\x0b\x32\x1e.livekit.proto.GetStatsRequestH\x00\x12@\n\x10new_video_stream\x18\x10 \x01(\x0b\x32$.livekit.proto.NewVideoStreamRequestH\x00\x12@\n\x10new_video_source\x18\x11 \x01(\x0b\x32$.livekit.proto.NewVideoSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_video_frame\x18\x12 \x01(\x0b\x32\'.livekit.proto.CaptureVideoFrameRequestH\x00\x12;\n\rvideo_convert\x18\x13 \x01(\x0b\x32\".livekit.proto.VideoConvertRequestH\x00\x12@\n\x10new_audio_stream\x18\x16 \x01(\x0b\x32$.livekit.proto.NewAudioStreamRequestH\x00\x12@\n\x10new_audio_source\x18\x17 \x01(\x0b\x32$.livekit.proto.NewAudioSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_audio_frame\x18\x18 \x01(\x0b\x32\'.livekit.proto.CaptureAudioFrameRequestH\x00\x12\x46\n\x13new_audio_resampler\x18\x19 \x01(\x0b\x32\'.livekit.proto.NewAudioResamplerRequestH\x00\x12\x44\n\x12remix_and_resample\x18\x1a \x01(\x0b\x32&.livekit.proto.RemixAndResampleRequestH\x00\x12*\n\x04\x65\x32\x65\x65\x18\x1b \x01(\x0b\x32\x1a.livekit.proto.E2eeRequestH\x00\x42\t\n\x07message\"\xb5\x0c\n\x0b\x46\x66iResponse\x12\x31\n\x07\x64ispose\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.DisposeResponseH\x00\x12\x31\n\x07\x63onnect\x18\x03 \x01(\x0b\x32\x1e.livekit.proto.ConnectResponseH\x00\x12\x37\n\ndisconnect\x18\x04 \x01(\x0b\x32!.livekit.proto.DisconnectResponseH\x00\x12<\n\rpublish_track\x18\x05 \x01(\x0b\x32#.livekit.proto.PublishTrackResponseH\x00\x12@\n\x0funpublish_track\x18\x06 \x01(\x0b\x32%.livekit.proto.UnpublishTrackResponseH\x00\x12:\n\x0cpublish_data\x18\x07 \x01(\x0b\x32\".livekit.proto.PublishDataResponseH\x00\x12>\n\x0eset_subscribed\x18\x08 \x01(\x0b\x32$.livekit.proto.SetSubscribedResponseH\x00\x12K\n\x15update_local_metadata\x18\t \x01(\x0b\x32*.livekit.proto.UpdateLocalMetadataResponseH\x00\x12\x43\n\x11update_local_name\x18\n \x01(\x0b\x32&.livekit.proto.UpdateLocalNameResponseH\x00\x12\x43\n\x11get_session_stats\x18\x0b \x01(\x0b\x32&.livekit.proto.GetSessionStatsResponseH\x00\x12L\n\x15publish_transcription\x18\x0c \x01(\x0b\x32+.livekit.proto.PublishTranscriptionResponseH\x00\x12\x45\n\x12\x63reate_video_track\x18\r \x01(\x0b\x32\'.livekit.proto.CreateVideoTrackResponseH\x00\x12\x45\n\x12\x63reate_audio_track\x18\x0e \x01(\x0b\x32\'.livekit.proto.CreateAudioTrackResponseH\x00\x12\x34\n\tget_stats\x18\x0f \x01(\x0b\x32\x1f.livekit.proto.GetStatsResponseH\x00\x12\x41\n\x10new_video_stream\x18\x10 \x01(\x0b\x32%.livekit.proto.NewVideoStreamResponseH\x00\x12\x41\n\x10new_video_source\x18\x11 \x01(\x0b\x32%.livekit.proto.NewVideoSourceResponseH\x00\x12G\n\x13\x63\x61pture_video_frame\x18\x12 \x01(\x0b\x32(.livekit.proto.CaptureVideoFrameResponseH\x00\x12<\n\rvideo_convert\x18\x13 \x01(\x0b\x32#.livekit.proto.VideoConvertResponseH\x00\x12\x41\n\x10new_audio_stream\x18\x16 \x01(\x0b\x32%.livekit.proto.NewAudioStreamResponseH\x00\x12\x41\n\x10new_audio_source\x18\x17 \x01(\x0b\x32%.livekit.proto.NewAudioSourceResponseH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\x18 \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameResponseH\x00\x12G\n\x13new_audio_resampler\x18\x19 \x01(\x0b\x32(.livekit.proto.NewAudioResamplerResponseH\x00\x12\x45\n\x12remix_and_resample\x18\x1a \x01(\x0b\x32\'.livekit.proto.RemixAndResampleResponseH\x00\x12+\n\x04\x65\x32\x65\x65\x18\x1b \x01(\x0b\x32\x1b.livekit.proto.E2eeResponseH\x00\x42\t\n\x07message\"\xc4\x08\n\x08\x46\x66iEvent\x12.\n\nroom_event\x18\x01 \x01(\x0b\x32\x18.livekit.proto.RoomEventH\x00\x12\x30\n\x0btrack_event\x18\x02 \x01(\x0b\x32\x19.livekit.proto.TrackEventH\x00\x12=\n\x12video_stream_event\x18\x03 \x01(\x0b\x32\x1f.livekit.proto.VideoStreamEventH\x00\x12=\n\x12\x61udio_stream_event\x18\x04 \x01(\x0b\x32\x1f.livekit.proto.AudioStreamEventH\x00\x12\x31\n\x07\x63onnect\x18\x05 \x01(\x0b\x32\x1e.livekit.proto.ConnectCallbackH\x00\x12\x37\n\ndisconnect\x18\x06 \x01(\x0b\x32!.livekit.proto.DisconnectCallbackH\x00\x12\x31\n\x07\x64ispose\x18\x07 \x01(\x0b\x32\x1e.livekit.proto.DisposeCallbackH\x00\x12<\n\rpublish_track\x18\x08 \x01(\x0b\x32#.livekit.proto.PublishTrackCallbackH\x00\x12@\n\x0funpublish_track\x18\t \x01(\x0b\x32%.livekit.proto.UnpublishTrackCallbackH\x00\x12:\n\x0cpublish_data\x18\n \x01(\x0b\x32\".livekit.proto.PublishDataCallbackH\x00\x12L\n\x15publish_transcription\x18\x0b \x01(\x0b\x32+.livekit.proto.PublishTranscriptionCallbackH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\x0c \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameCallbackH\x00\x12K\n\x15update_local_metadata\x18\r \x01(\x0b\x32*.livekit.proto.UpdateLocalMetadataCallbackH\x00\x12\x43\n\x11update_local_name\x18\x0e \x01(\x0b\x32&.livekit.proto.UpdateLocalNameCallbackH\x00\x12\x34\n\tget_stats\x18\x0f \x01(\x0b\x32\x1f.livekit.proto.GetStatsCallbackH\x00\x12\'\n\x04logs\x18\x10 \x01(\x0b\x32\x17.livekit.proto.LogBatchH\x00\x12\x43\n\x11get_session_stats\x18\x11 \x01(\x0b\x32&.livekit.proto.GetSessionStatsCallbackH\x00\x12%\n\x05panic\x18\x12 \x01(\x0b\x32\x14.livekit.proto.PanicH\x00\x42\t\n\x07message\"\x1f\n\x0e\x44isposeRequest\x12\r\n\x05\x61sync\x18\x01 \x01(\x08\"5\n\x0f\x44isposeResponse\x12\x15\n\x08\x61sync_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\x0b\n\t_async_id\"#\n\x0f\x44isposeCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\xb6\x01\n\tLogRecord\x12&\n\x05level\x18\x01 \x01(\x0e\x32\x17.livekit.proto.LogLevel\x12\x0e\n\x06target\x18\x02 \x01(\t\x12\x18\n\x0bmodule_path\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04\x66ile\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04line\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\x0f\n\x07message\x18\x06 \x01(\tB\x0e\n\x0c_module_pathB\x07\n\x05_fileB\x07\n\x05_line\"5\n\x08LogBatch\x12)\n\x07records\x18\x01 \x03(\x0b\x32\x18.livekit.proto.LogRecord\"\x18\n\x05Panic\x12\x0f\n\x07message\x18\x01 \x01(\t*S\n\x08LogLevel\x12\r\n\tLOG_ERROR\x10\x00\x12\x0c\n\x08LOG_WARN\x10\x01\x12\x0c\n\x08LOG_INFO\x10\x02\x12\r\n\tLOG_DEBUG\x10\x03\x12\r\n\tLOG_TRACE\x10\x04\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tffi.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0btrack.proto\x1a\nroom.proto\x1a\x11video_frame.proto\x1a\x11\x61udio_frame.proto\"\x9c\r\n\nFfiRequest\x12\x30\n\x07\x64ispose\x18\x02 \x01(\x0b\x32\x1d.livekit.proto.DisposeRequestH\x00\x12\x30\n\x07\x63onnect\x18\x03 \x01(\x0b\x32\x1d.livekit.proto.ConnectRequestH\x00\x12\x36\n\ndisconnect\x18\x04 \x01(\x0b\x32 .livekit.proto.DisconnectRequestH\x00\x12;\n\rpublish_track\x18\x05 \x01(\x0b\x32\".livekit.proto.PublishTrackRequestH\x00\x12?\n\x0funpublish_track\x18\x06 \x01(\x0b\x32$.livekit.proto.UnpublishTrackRequestH\x00\x12\x39\n\x0cpublish_data\x18\x07 \x01(\x0b\x32!.livekit.proto.PublishDataRequestH\x00\x12=\n\x0eset_subscribed\x18\x08 \x01(\x0b\x32#.livekit.proto.SetSubscribedRequestH\x00\x12\x44\n\x12set_local_metadata\x18\t \x01(\x0b\x32&.livekit.proto.SetLocalMetadataRequestH\x00\x12<\n\x0eset_local_name\x18\n \x01(\x0b\x32\".livekit.proto.SetLocalNameRequestH\x00\x12H\n\x14set_local_attributes\x18\x0b \x01(\x0b\x32(.livekit.proto.SetLocalAttributesRequestH\x00\x12\x42\n\x11get_session_stats\x18\x0c \x01(\x0b\x32%.livekit.proto.GetSessionStatsRequestH\x00\x12K\n\x15publish_transcription\x18\r \x01(\x0b\x32*.livekit.proto.PublishTranscriptionRequestH\x00\x12@\n\x10publish_sip_dtmf\x18\x0e \x01(\x0b\x32$.livekit.proto.PublishSipDtmfRequestH\x00\x12\x44\n\x12\x63reate_video_track\x18\x0f \x01(\x0b\x32&.livekit.proto.CreateVideoTrackRequestH\x00\x12\x44\n\x12\x63reate_audio_track\x18\x10 \x01(\x0b\x32&.livekit.proto.CreateAudioTrackRequestH\x00\x12\x33\n\tget_stats\x18\x11 \x01(\x0b\x32\x1e.livekit.proto.GetStatsRequestH\x00\x12@\n\x10new_video_stream\x18\x12 \x01(\x0b\x32$.livekit.proto.NewVideoStreamRequestH\x00\x12@\n\x10new_video_source\x18\x13 \x01(\x0b\x32$.livekit.proto.NewVideoSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_video_frame\x18\x14 \x01(\x0b\x32\'.livekit.proto.CaptureVideoFrameRequestH\x00\x12;\n\rvideo_convert\x18\x15 \x01(\x0b\x32\".livekit.proto.VideoConvertRequestH\x00\x12@\n\x10new_audio_stream\x18\x17 \x01(\x0b\x32$.livekit.proto.NewAudioStreamRequestH\x00\x12@\n\x10new_audio_source\x18\x18 \x01(\x0b\x32$.livekit.proto.NewAudioSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_audio_frame\x18\x19 \x01(\x0b\x32\'.livekit.proto.CaptureAudioFrameRequestH\x00\x12\x46\n\x13new_audio_resampler\x18\x1a \x01(\x0b\x32\'.livekit.proto.NewAudioResamplerRequestH\x00\x12\x44\n\x12remix_and_resample\x18\x1b \x01(\x0b\x32&.livekit.proto.RemixAndResampleRequestH\x00\x12*\n\x04\x65\x32\x65\x65\x18\x1c \x01(\x0b\x32\x1a.livekit.proto.E2eeRequestH\x00\x42\t\n\x07message\"\xb7\r\n\x0b\x46\x66iResponse\x12\x31\n\x07\x64ispose\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.DisposeResponseH\x00\x12\x31\n\x07\x63onnect\x18\x03 \x01(\x0b\x32\x1e.livekit.proto.ConnectResponseH\x00\x12\x37\n\ndisconnect\x18\x04 \x01(\x0b\x32!.livekit.proto.DisconnectResponseH\x00\x12<\n\rpublish_track\x18\x05 \x01(\x0b\x32#.livekit.proto.PublishTrackResponseH\x00\x12@\n\x0funpublish_track\x18\x06 \x01(\x0b\x32%.livekit.proto.UnpublishTrackResponseH\x00\x12:\n\x0cpublish_data\x18\x07 \x01(\x0b\x32\".livekit.proto.PublishDataResponseH\x00\x12>\n\x0eset_subscribed\x18\x08 \x01(\x0b\x32$.livekit.proto.SetSubscribedResponseH\x00\x12\x45\n\x12set_local_metadata\x18\t \x01(\x0b\x32\'.livekit.proto.SetLocalMetadataResponseH\x00\x12=\n\x0eset_local_name\x18\n \x01(\x0b\x32#.livekit.proto.SetLocalNameResponseH\x00\x12I\n\x14set_local_attributes\x18\x0b \x01(\x0b\x32).livekit.proto.SetLocalAttributesResponseH\x00\x12\x43\n\x11get_session_stats\x18\x0c \x01(\x0b\x32&.livekit.proto.GetSessionStatsResponseH\x00\x12L\n\x15publish_transcription\x18\r \x01(\x0b\x32+.livekit.proto.PublishTranscriptionResponseH\x00\x12\x41\n\x10publish_sip_dtmf\x18\x0e \x01(\x0b\x32%.livekit.proto.PublishSipDtmfResponseH\x00\x12\x45\n\x12\x63reate_video_track\x18\x0f \x01(\x0b\x32\'.livekit.proto.CreateVideoTrackResponseH\x00\x12\x45\n\x12\x63reate_audio_track\x18\x10 \x01(\x0b\x32\'.livekit.proto.CreateAudioTrackResponseH\x00\x12\x34\n\tget_stats\x18\x11 \x01(\x0b\x32\x1f.livekit.proto.GetStatsResponseH\x00\x12\x41\n\x10new_video_stream\x18\x12 \x01(\x0b\x32%.livekit.proto.NewVideoStreamResponseH\x00\x12\x41\n\x10new_video_source\x18\x13 \x01(\x0b\x32%.livekit.proto.NewVideoSourceResponseH\x00\x12G\n\x13\x63\x61pture_video_frame\x18\x14 \x01(\x0b\x32(.livekit.proto.CaptureVideoFrameResponseH\x00\x12<\n\rvideo_convert\x18\x15 \x01(\x0b\x32#.livekit.proto.VideoConvertResponseH\x00\x12\x41\n\x10new_audio_stream\x18\x16 \x01(\x0b\x32%.livekit.proto.NewAudioStreamResponseH\x00\x12\x41\n\x10new_audio_source\x18\x17 \x01(\x0b\x32%.livekit.proto.NewAudioSourceResponseH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\x18 \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameResponseH\x00\x12G\n\x13new_audio_resampler\x18\x19 \x01(\x0b\x32(.livekit.proto.NewAudioResamplerResponseH\x00\x12\x45\n\x12remix_and_resample\x18\x1a \x01(\x0b\x32\'.livekit.proto.RemixAndResampleResponseH\x00\x12+\n\x04\x65\x32\x65\x65\x18\x1b \x01(\x0b\x32\x1b.livekit.proto.E2eeResponseH\x00\x42\t\n\x07message\"\xc6\t\n\x08\x46\x66iEvent\x12.\n\nroom_event\x18\x01 \x01(\x0b\x32\x18.livekit.proto.RoomEventH\x00\x12\x30\n\x0btrack_event\x18\x02 \x01(\x0b\x32\x19.livekit.proto.TrackEventH\x00\x12=\n\x12video_stream_event\x18\x03 \x01(\x0b\x32\x1f.livekit.proto.VideoStreamEventH\x00\x12=\n\x12\x61udio_stream_event\x18\x04 \x01(\x0b\x32\x1f.livekit.proto.AudioStreamEventH\x00\x12\x31\n\x07\x63onnect\x18\x05 \x01(\x0b\x32\x1e.livekit.proto.ConnectCallbackH\x00\x12\x37\n\ndisconnect\x18\x07 \x01(\x0b\x32!.livekit.proto.DisconnectCallbackH\x00\x12\x31\n\x07\x64ispose\x18\x08 \x01(\x0b\x32\x1e.livekit.proto.DisposeCallbackH\x00\x12<\n\rpublish_track\x18\t \x01(\x0b\x32#.livekit.proto.PublishTrackCallbackH\x00\x12@\n\x0funpublish_track\x18\n \x01(\x0b\x32%.livekit.proto.UnpublishTrackCallbackH\x00\x12:\n\x0cpublish_data\x18\x0b \x01(\x0b\x32\".livekit.proto.PublishDataCallbackH\x00\x12L\n\x15publish_transcription\x18\x0c \x01(\x0b\x32+.livekit.proto.PublishTranscriptionCallbackH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\r \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameCallbackH\x00\x12\x45\n\x12set_local_metadata\x18\x0e \x01(\x0b\x32\'.livekit.proto.SetLocalMetadataCallbackH\x00\x12=\n\x0eset_local_name\x18\x0f \x01(\x0b\x32#.livekit.proto.SetLocalNameCallbackH\x00\x12I\n\x14set_local_attributes\x18\x10 \x01(\x0b\x32).livekit.proto.SetLocalAttributesCallbackH\x00\x12\x34\n\tget_stats\x18\x11 \x01(\x0b\x32\x1f.livekit.proto.GetStatsCallbackH\x00\x12\'\n\x04logs\x18\x12 \x01(\x0b\x32\x17.livekit.proto.LogBatchH\x00\x12\x43\n\x11get_session_stats\x18\x13 \x01(\x0b\x32&.livekit.proto.GetSessionStatsCallbackH\x00\x12%\n\x05panic\x18\x14 \x01(\x0b\x32\x14.livekit.proto.PanicH\x00\x12\x41\n\x10publish_sip_dtmf\x18\x15 \x01(\x0b\x32%.livekit.proto.PublishSipDtmfCallbackH\x00\x42\t\n\x07message\"\x1f\n\x0e\x44isposeRequest\x12\r\n\x05\x61sync\x18\x01 \x01(\x08\"5\n\x0f\x44isposeResponse\x12\x15\n\x08\x61sync_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\x0b\n\t_async_id\"#\n\x0f\x44isposeCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\xb6\x01\n\tLogRecord\x12&\n\x05level\x18\x01 \x01(\x0e\x32\x17.livekit.proto.LogLevel\x12\x0e\n\x06target\x18\x02 \x01(\t\x12\x18\n\x0bmodule_path\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04\x66ile\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04line\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\x0f\n\x07message\x18\x06 \x01(\tB\x0e\n\x0c_module_pathB\x07\n\x05_fileB\x07\n\x05_line\"5\n\x08LogBatch\x12)\n\x07records\x18\x01 \x03(\x0b\x32\x18.livekit.proto.LogRecord\"\x18\n\x05Panic\x12\x0f\n\x07message\x18\x01 \x01(\t*S\n\x08LogLevel\x12\r\n\tLOG_ERROR\x10\x00\x12\x0c\n\x08LOG_WARN\x10\x01\x12\x0c\n\x08LOG_INFO\x10\x02\x12\r\n\tLOG_DEBUG\x10\x03\x12\r\n\tLOG_TRACE\x10\x04\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -27,24 +27,24 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals['DESCRIPTOR']._options = None _globals['DESCRIPTOR']._serialized_options = b'\252\002\rLiveKit.Proto' - _globals['_LOGLEVEL']._serialized_start=4748 - _globals['_LOGLEVEL']._serialized_end=4831 + _globals['_LOGLEVEL']._serialized_start=5136 + _globals['_LOGLEVEL']._serialized_end=5219 _globals['_FFIREQUEST']._serialized_start=104 - _globals['_FFIREQUEST']._serialized_end=1668 - _globals['_FFIRESPONSE']._serialized_start=1671 - _globals['_FFIRESPONSE']._serialized_end=3260 - _globals['_FFIEVENT']._serialized_start=3263 - _globals['_FFIEVENT']._serialized_end=4355 - _globals['_DISPOSEREQUEST']._serialized_start=4357 - _globals['_DISPOSEREQUEST']._serialized_end=4388 - _globals['_DISPOSERESPONSE']._serialized_start=4390 - _globals['_DISPOSERESPONSE']._serialized_end=4443 - _globals['_DISPOSECALLBACK']._serialized_start=4445 - _globals['_DISPOSECALLBACK']._serialized_end=4480 - _globals['_LOGRECORD']._serialized_start=4483 - _globals['_LOGRECORD']._serialized_end=4665 - _globals['_LOGBATCH']._serialized_start=4667 - _globals['_LOGBATCH']._serialized_end=4720 - _globals['_PANIC']._serialized_start=4722 - _globals['_PANIC']._serialized_end=4746 + _globals['_FFIREQUEST']._serialized_end=1796 + _globals['_FFIRESPONSE']._serialized_start=1799 + _globals['_FFIRESPONSE']._serialized_end=3518 + _globals['_FFIEVENT']._serialized_start=3521 + _globals['_FFIEVENT']._serialized_end=4743 + _globals['_DISPOSEREQUEST']._serialized_start=4745 + _globals['_DISPOSEREQUEST']._serialized_end=4776 + _globals['_DISPOSERESPONSE']._serialized_start=4778 + _globals['_DISPOSERESPONSE']._serialized_end=4831 + _globals['_DISPOSECALLBACK']._serialized_start=4833 + _globals['_DISPOSECALLBACK']._serialized_end=4868 + _globals['_LOGRECORD']._serialized_start=4871 + _globals['_LOGRECORD']._serialized_end=5053 + _globals['_LOGBATCH']._serialized_start=5055 + _globals['_LOGBATCH']._serialized_end=5108 + _globals['_PANIC']._serialized_start=5110 + _globals['_PANIC']._serialized_end=5134 # @@protoc_insertion_point(module_scope) diff --git a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.pyi b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.pyi index 259880ab..65914ace 100644 --- a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.pyi +++ b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.pyi @@ -98,10 +98,12 @@ class FfiRequest(google.protobuf.message.Message): UNPUBLISH_TRACK_FIELD_NUMBER: builtins.int PUBLISH_DATA_FIELD_NUMBER: builtins.int SET_SUBSCRIBED_FIELD_NUMBER: builtins.int - UPDATE_LOCAL_METADATA_FIELD_NUMBER: builtins.int - UPDATE_LOCAL_NAME_FIELD_NUMBER: builtins.int + SET_LOCAL_METADATA_FIELD_NUMBER: builtins.int + SET_LOCAL_NAME_FIELD_NUMBER: builtins.int + SET_LOCAL_ATTRIBUTES_FIELD_NUMBER: builtins.int GET_SESSION_STATS_FIELD_NUMBER: builtins.int PUBLISH_TRANSCRIPTION_FIELD_NUMBER: builtins.int + PUBLISH_SIP_DTMF_FIELD_NUMBER: builtins.int CREATE_VIDEO_TRACK_FIELD_NUMBER: builtins.int CREATE_AUDIO_TRACK_FIELD_NUMBER: builtins.int GET_STATS_FIELD_NUMBER: builtins.int @@ -131,14 +133,18 @@ class FfiRequest(google.protobuf.message.Message): @property def set_subscribed(self) -> room_pb2.SetSubscribedRequest: ... @property - def update_local_metadata(self) -> room_pb2.UpdateLocalMetadataRequest: ... + def set_local_metadata(self) -> room_pb2.SetLocalMetadataRequest: ... @property - def update_local_name(self) -> room_pb2.UpdateLocalNameRequest: ... + def set_local_name(self) -> room_pb2.SetLocalNameRequest: ... + @property + def set_local_attributes(self) -> room_pb2.SetLocalAttributesRequest: ... @property def get_session_stats(self) -> room_pb2.GetSessionStatsRequest: ... @property def publish_transcription(self) -> room_pb2.PublishTranscriptionRequest: ... @property + def publish_sip_dtmf(self) -> room_pb2.PublishSipDtmfRequest: ... + @property def create_video_track(self) -> track_pb2.CreateVideoTrackRequest: """Track""" @property @@ -177,10 +183,12 @@ class FfiRequest(google.protobuf.message.Message): unpublish_track: room_pb2.UnpublishTrackRequest | None = ..., publish_data: room_pb2.PublishDataRequest | None = ..., set_subscribed: room_pb2.SetSubscribedRequest | None = ..., - update_local_metadata: room_pb2.UpdateLocalMetadataRequest | None = ..., - update_local_name: room_pb2.UpdateLocalNameRequest | None = ..., + set_local_metadata: room_pb2.SetLocalMetadataRequest | None = ..., + set_local_name: room_pb2.SetLocalNameRequest | None = ..., + set_local_attributes: room_pb2.SetLocalAttributesRequest | None = ..., get_session_stats: room_pb2.GetSessionStatsRequest | None = ..., publish_transcription: room_pb2.PublishTranscriptionRequest | None = ..., + publish_sip_dtmf: room_pb2.PublishSipDtmfRequest | None = ..., create_video_track: track_pb2.CreateVideoTrackRequest | None = ..., create_audio_track: track_pb2.CreateAudioTrackRequest | None = ..., get_stats: track_pb2.GetStatsRequest | None = ..., @@ -195,9 +203,9 @@ class FfiRequest(google.protobuf.message.Message): remix_and_resample: audio_frame_pb2.RemixAndResampleRequest | None = ..., e2ee: e2ee_pb2.E2eeRequest | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_convert", b"video_convert"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_convert", b"video_convert"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["dispose", "connect", "disconnect", "publish_track", "unpublish_track", "publish_data", "set_subscribed", "update_local_metadata", "update_local_name", "get_session_stats", "publish_transcription", "create_video_track", "create_audio_track", "get_stats", "new_video_stream", "new_video_source", "capture_video_frame", "video_convert", "new_audio_stream", "new_audio_source", "capture_audio_frame", "new_audio_resampler", "remix_and_resample", "e2ee"] | None: ... + def HasField(self, field_name: typing_extensions.Literal["capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "remix_and_resample", b"remix_and_resample", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_subscribed", b"set_subscribed", "unpublish_track", b"unpublish_track", "video_convert", b"video_convert"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "remix_and_resample", b"remix_and_resample", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_subscribed", b"set_subscribed", "unpublish_track", b"unpublish_track", "video_convert", b"video_convert"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["dispose", "connect", "disconnect", "publish_track", "unpublish_track", "publish_data", "set_subscribed", "set_local_metadata", "set_local_name", "set_local_attributes", "get_session_stats", "publish_transcription", "publish_sip_dtmf", "create_video_track", "create_audio_track", "get_stats", "new_video_stream", "new_video_source", "capture_video_frame", "video_convert", "new_audio_stream", "new_audio_source", "capture_audio_frame", "new_audio_resampler", "remix_and_resample", "e2ee"] | None: ... global___FfiRequest = FfiRequest @@ -214,10 +222,12 @@ class FfiResponse(google.protobuf.message.Message): UNPUBLISH_TRACK_FIELD_NUMBER: builtins.int PUBLISH_DATA_FIELD_NUMBER: builtins.int SET_SUBSCRIBED_FIELD_NUMBER: builtins.int - UPDATE_LOCAL_METADATA_FIELD_NUMBER: builtins.int - UPDATE_LOCAL_NAME_FIELD_NUMBER: builtins.int + SET_LOCAL_METADATA_FIELD_NUMBER: builtins.int + SET_LOCAL_NAME_FIELD_NUMBER: builtins.int + SET_LOCAL_ATTRIBUTES_FIELD_NUMBER: builtins.int GET_SESSION_STATS_FIELD_NUMBER: builtins.int PUBLISH_TRANSCRIPTION_FIELD_NUMBER: builtins.int + PUBLISH_SIP_DTMF_FIELD_NUMBER: builtins.int CREATE_VIDEO_TRACK_FIELD_NUMBER: builtins.int CREATE_AUDIO_TRACK_FIELD_NUMBER: builtins.int GET_STATS_FIELD_NUMBER: builtins.int @@ -247,14 +257,18 @@ class FfiResponse(google.protobuf.message.Message): @property def set_subscribed(self) -> room_pb2.SetSubscribedResponse: ... @property - def update_local_metadata(self) -> room_pb2.UpdateLocalMetadataResponse: ... + def set_local_metadata(self) -> room_pb2.SetLocalMetadataResponse: ... + @property + def set_local_name(self) -> room_pb2.SetLocalNameResponse: ... @property - def update_local_name(self) -> room_pb2.UpdateLocalNameResponse: ... + def set_local_attributes(self) -> room_pb2.SetLocalAttributesResponse: ... @property def get_session_stats(self) -> room_pb2.GetSessionStatsResponse: ... @property def publish_transcription(self) -> room_pb2.PublishTranscriptionResponse: ... @property + def publish_sip_dtmf(self) -> room_pb2.PublishSipDtmfResponse: ... + @property def create_video_track(self) -> track_pb2.CreateVideoTrackResponse: """Track""" @property @@ -293,10 +307,12 @@ class FfiResponse(google.protobuf.message.Message): unpublish_track: room_pb2.UnpublishTrackResponse | None = ..., publish_data: room_pb2.PublishDataResponse | None = ..., set_subscribed: room_pb2.SetSubscribedResponse | None = ..., - update_local_metadata: room_pb2.UpdateLocalMetadataResponse | None = ..., - update_local_name: room_pb2.UpdateLocalNameResponse | None = ..., + set_local_metadata: room_pb2.SetLocalMetadataResponse | None = ..., + set_local_name: room_pb2.SetLocalNameResponse | None = ..., + set_local_attributes: room_pb2.SetLocalAttributesResponse | None = ..., get_session_stats: room_pb2.GetSessionStatsResponse | None = ..., publish_transcription: room_pb2.PublishTranscriptionResponse | None = ..., + publish_sip_dtmf: room_pb2.PublishSipDtmfResponse | None = ..., create_video_track: track_pb2.CreateVideoTrackResponse | None = ..., create_audio_track: track_pb2.CreateAudioTrackResponse | None = ..., get_stats: track_pb2.GetStatsResponse | None = ..., @@ -311,9 +327,9 @@ class FfiResponse(google.protobuf.message.Message): remix_and_resample: audio_frame_pb2.RemixAndResampleResponse | None = ..., e2ee: e2ee_pb2.E2eeResponse | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_convert", b"video_convert"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_convert", b"video_convert"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["dispose", "connect", "disconnect", "publish_track", "unpublish_track", "publish_data", "set_subscribed", "update_local_metadata", "update_local_name", "get_session_stats", "publish_transcription", "create_video_track", "create_audio_track", "get_stats", "new_video_stream", "new_video_source", "capture_video_frame", "video_convert", "new_audio_stream", "new_audio_source", "capture_audio_frame", "new_audio_resampler", "remix_and_resample", "e2ee"] | None: ... + def HasField(self, field_name: typing_extensions.Literal["capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "remix_and_resample", b"remix_and_resample", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_subscribed", b"set_subscribed", "unpublish_track", b"unpublish_track", "video_convert", b"video_convert"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "remix_and_resample", b"remix_and_resample", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_subscribed", b"set_subscribed", "unpublish_track", b"unpublish_track", "video_convert", b"video_convert"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["dispose", "connect", "disconnect", "publish_track", "unpublish_track", "publish_data", "set_subscribed", "set_local_metadata", "set_local_name", "set_local_attributes", "get_session_stats", "publish_transcription", "publish_sip_dtmf", "create_video_track", "create_audio_track", "get_stats", "new_video_stream", "new_video_source", "capture_video_frame", "video_convert", "new_audio_stream", "new_audio_source", "capture_audio_frame", "new_audio_resampler", "remix_and_resample", "e2ee"] | None: ... global___FfiResponse = FfiResponse @@ -338,12 +354,14 @@ class FfiEvent(google.protobuf.message.Message): PUBLISH_DATA_FIELD_NUMBER: builtins.int PUBLISH_TRANSCRIPTION_FIELD_NUMBER: builtins.int CAPTURE_AUDIO_FRAME_FIELD_NUMBER: builtins.int - UPDATE_LOCAL_METADATA_FIELD_NUMBER: builtins.int - UPDATE_LOCAL_NAME_FIELD_NUMBER: builtins.int + SET_LOCAL_METADATA_FIELD_NUMBER: builtins.int + SET_LOCAL_NAME_FIELD_NUMBER: builtins.int + SET_LOCAL_ATTRIBUTES_FIELD_NUMBER: builtins.int GET_STATS_FIELD_NUMBER: builtins.int LOGS_FIELD_NUMBER: builtins.int GET_SESSION_STATS_FIELD_NUMBER: builtins.int PANIC_FIELD_NUMBER: builtins.int + PUBLISH_SIP_DTMF_FIELD_NUMBER: builtins.int @property def room_event(self) -> room_pb2.RoomEvent: ... @property @@ -369,9 +387,11 @@ class FfiEvent(google.protobuf.message.Message): @property def capture_audio_frame(self) -> audio_frame_pb2.CaptureAudioFrameCallback: ... @property - def update_local_metadata(self) -> room_pb2.UpdateLocalMetadataCallback: ... + def set_local_metadata(self) -> room_pb2.SetLocalMetadataCallback: ... + @property + def set_local_name(self) -> room_pb2.SetLocalNameCallback: ... @property - def update_local_name(self) -> room_pb2.UpdateLocalNameCallback: ... + def set_local_attributes(self) -> room_pb2.SetLocalAttributesCallback: ... @property def get_stats(self) -> track_pb2.GetStatsCallback: ... @property @@ -380,6 +400,8 @@ class FfiEvent(google.protobuf.message.Message): def get_session_stats(self) -> room_pb2.GetSessionStatsCallback: ... @property def panic(self) -> global___Panic: ... + @property + def publish_sip_dtmf(self) -> room_pb2.PublishSipDtmfCallback: ... def __init__( self, *, @@ -395,16 +417,18 @@ class FfiEvent(google.protobuf.message.Message): publish_data: room_pb2.PublishDataCallback | None = ..., publish_transcription: room_pb2.PublishTranscriptionCallback | None = ..., capture_audio_frame: audio_frame_pb2.CaptureAudioFrameCallback | None = ..., - update_local_metadata: room_pb2.UpdateLocalMetadataCallback | None = ..., - update_local_name: room_pb2.UpdateLocalNameCallback | None = ..., + set_local_metadata: room_pb2.SetLocalMetadataCallback | None = ..., + set_local_name: room_pb2.SetLocalNameCallback | None = ..., + set_local_attributes: room_pb2.SetLocalAttributesCallback | None = ..., get_stats: track_pb2.GetStatsCallback | None = ..., logs: global___LogBatch | None = ..., get_session_stats: room_pb2.GetSessionStatsCallback | None = ..., panic: global___Panic | None = ..., + publish_sip_dtmf: room_pb2.PublishSipDtmfCallback | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["audio_stream_event", b"audio_stream_event", "capture_audio_frame", b"capture_audio_frame", "connect", b"connect", "disconnect", b"disconnect", "dispose", b"dispose", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "logs", b"logs", "message", b"message", "panic", b"panic", "publish_data", b"publish_data", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "room_event", b"room_event", "track_event", b"track_event", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_stream_event", b"video_stream_event"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["audio_stream_event", b"audio_stream_event", "capture_audio_frame", b"capture_audio_frame", "connect", b"connect", "disconnect", b"disconnect", "dispose", b"dispose", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "logs", b"logs", "message", b"message", "panic", b"panic", "publish_data", b"publish_data", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "room_event", b"room_event", "track_event", b"track_event", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_stream_event", b"video_stream_event"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["room_event", "track_event", "video_stream_event", "audio_stream_event", "connect", "disconnect", "dispose", "publish_track", "unpublish_track", "publish_data", "publish_transcription", "capture_audio_frame", "update_local_metadata", "update_local_name", "get_stats", "logs", "get_session_stats", "panic"] | None: ... + def HasField(self, field_name: typing_extensions.Literal["audio_stream_event", b"audio_stream_event", "capture_audio_frame", b"capture_audio_frame", "connect", b"connect", "disconnect", b"disconnect", "dispose", b"dispose", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "logs", b"logs", "message", b"message", "panic", b"panic", "publish_data", b"publish_data", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "room_event", b"room_event", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "track_event", b"track_event", "unpublish_track", b"unpublish_track", "video_stream_event", b"video_stream_event"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["audio_stream_event", b"audio_stream_event", "capture_audio_frame", b"capture_audio_frame", "connect", b"connect", "disconnect", b"disconnect", "dispose", b"dispose", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "logs", b"logs", "message", b"message", "panic", b"panic", "publish_data", b"publish_data", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "room_event", b"room_event", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "track_event", b"track_event", "unpublish_track", b"unpublish_track", "video_stream_event", b"video_stream_event"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["room_event", "track_event", "video_stream_event", "audio_stream_event", "connect", "disconnect", "dispose", "publish_track", "unpublish_track", "publish_data", "publish_transcription", "capture_audio_frame", "set_local_metadata", "set_local_name", "set_local_attributes", "get_stats", "logs", "get_session_stats", "panic", "publish_sip_dtmf"] | None: ... global___FfiEvent = FfiEvent diff --git a/livekit-rtc/livekit/rtc/_proto/participant_pb2.py b/livekit-rtc/livekit/rtc/_proto/participant_pb2.py index 0141671d..062ca89a 100644 --- a/livekit-rtc/livekit/rtc/_proto/participant_pb2.py +++ b/livekit-rtc/livekit/rtc/_proto/participant_pb2.py @@ -15,7 +15,7 @@ from . import handle_pb2 as handle__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11participant.proto\x12\rlivekit.proto\x1a\x0chandle.proto\"P\n\x0fParticipantInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08identity\x18\x03 \x01(\t\x12\x10\n\x08metadata\x18\x04 \x01(\t\"o\n\x10OwnedParticipant\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12,\n\x04info\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.ParticipantInfoB\x10\xaa\x02\rLiveKit.Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11participant.proto\x12\rlivekit.proto\x1a\x0chandle.proto\"\xc7\x01\n\x0fParticipantInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08identity\x18\x03 \x01(\t\x12\x10\n\x08metadata\x18\x04 \x01(\t\x12\x42\n\nattributes\x18\x05 \x03(\x0b\x32..livekit.proto.ParticipantInfo.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\"o\n\x10OwnedParticipant\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12,\n\x04info\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.ParticipantInfoB\x10\xaa\x02\rLiveKit.Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -23,8 +23,12 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals['DESCRIPTOR']._options = None _globals['DESCRIPTOR']._serialized_options = b'\252\002\rLiveKit.Proto' - _globals['_PARTICIPANTINFO']._serialized_start=50 - _globals['_PARTICIPANTINFO']._serialized_end=130 - _globals['_OWNEDPARTICIPANT']._serialized_start=132 - _globals['_OWNEDPARTICIPANT']._serialized_end=243 + _globals['_PARTICIPANTINFO_ATTRIBUTESENTRY']._options = None + _globals['_PARTICIPANTINFO_ATTRIBUTESENTRY']._serialized_options = b'8\001' + _globals['_PARTICIPANTINFO']._serialized_start=51 + _globals['_PARTICIPANTINFO']._serialized_end=250 + _globals['_PARTICIPANTINFO_ATTRIBUTESENTRY']._serialized_start=201 + _globals['_PARTICIPANTINFO_ATTRIBUTESENTRY']._serialized_end=250 + _globals['_OWNEDPARTICIPANT']._serialized_start=252 + _globals['_OWNEDPARTICIPANT']._serialized_end=363 # @@protoc_insertion_point(module_scope) diff --git a/livekit-rtc/livekit/rtc/_proto/participant_pb2.pyi b/livekit-rtc/livekit/rtc/_proto/participant_pb2.pyi index 0b30d59e..5bfd3b8e 100644 --- a/livekit-rtc/livekit/rtc/_proto/participant_pb2.pyi +++ b/livekit-rtc/livekit/rtc/_proto/participant_pb2.pyi @@ -16,7 +16,9 @@ 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 handle_pb2 import sys @@ -32,14 +34,33 @@ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor class ParticipantInfo(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing_extensions.final + class AttributesEntry(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: ... + SID_FIELD_NUMBER: builtins.int NAME_FIELD_NUMBER: builtins.int IDENTITY_FIELD_NUMBER: builtins.int METADATA_FIELD_NUMBER: builtins.int + ATTRIBUTES_FIELD_NUMBER: builtins.int sid: builtins.str name: builtins.str identity: builtins.str metadata: builtins.str + @property + def attributes(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... def __init__( self, *, @@ -47,8 +68,9 @@ class ParticipantInfo(google.protobuf.message.Message): name: builtins.str = ..., identity: builtins.str = ..., metadata: builtins.str = ..., + attributes: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["identity", b"identity", "metadata", b"metadata", "name", b"name", "sid", b"sid"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "identity", b"identity", "metadata", b"metadata", "name", b"name", "sid", b"sid"]) -> None: ... global___ParticipantInfo = ParticipantInfo diff --git a/livekit-rtc/livekit/rtc/_proto/room_pb2.py b/livekit-rtc/livekit/rtc/_proto/room_pb2.py index b320a2f4..a8c9cbb2 100644 --- a/livekit-rtc/livekit/rtc/_proto/room_pb2.py +++ b/livekit-rtc/livekit/rtc/_proto/room_pb2.py @@ -20,7 +20,7 @@ from . import stats_pb2 as stats__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nroom.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0chandle.proto\x1a\x11participant.proto\x1a\x0btrack.proto\x1a\x11video_frame.proto\x1a\x0bstats.proto\"Y\n\x0e\x43onnectRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\r\n\x05token\x18\x02 \x01(\t\x12+\n\x07options\x18\x03 \x01(\x0b\x32\x1a.livekit.proto.RoomOptions\"#\n\x0f\x43onnectResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\xfd\x02\n\x0f\x43onnectCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x12&\n\x04room\x18\x03 \x01(\x0b\x32\x18.livekit.proto.OwnedRoom\x12:\n\x11local_participant\x18\x04 \x01(\x0b\x32\x1f.livekit.proto.OwnedParticipant\x12J\n\x0cparticipants\x18\x05 \x03(\x0b\x32\x34.livekit.proto.ConnectCallback.ParticipantWithTracks\x1a\x89\x01\n\x15ParticipantWithTracks\x12\x34\n\x0bparticipant\x18\x01 \x01(\x0b\x32\x1f.livekit.proto.OwnedParticipant\x12:\n\x0cpublications\x18\x02 \x03(\x0b\x32$.livekit.proto.OwnedTrackPublicationB\x08\n\x06_error\"(\n\x11\x44isconnectRequest\x12\x13\n\x0broom_handle\x18\x01 \x01(\x04\"&\n\x12\x44isconnectResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"&\n\x12\x44isconnectCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\x82\x01\n\x13PublishTrackRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x14\n\x0ctrack_handle\x18\x02 \x01(\x04\x12\x33\n\x07options\x18\x03 \x01(\x0b\x32\".livekit.proto.TrackPublishOptions\"(\n\x14PublishTrackResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\x81\x01\n\x14PublishTrackCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x39\n\x0bpublication\x18\x03 \x01(\x0b\x32$.livekit.proto.OwnedTrackPublicationB\x08\n\x06_error\"g\n\x15UnpublishTrackRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\x12\x19\n\x11stop_on_unpublish\x18\x03 \x01(\x08\"*\n\x16UnpublishTrackResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"H\n\x16UnpublishTrackCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\xbf\x01\n\x12PublishDataRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x10\n\x08\x64\x61ta_ptr\x18\x02 \x01(\x04\x12\x10\n\x08\x64\x61ta_len\x18\x03 \x01(\x04\x12+\n\x04kind\x18\x04 \x01(\x0e\x32\x1d.livekit.proto.DataPacketKind\x12\x18\n\x10\x64\x65stination_sids\x18\x05 \x03(\t\x12\x12\n\x05topic\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_topic\"\'\n\x13PublishDataResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"E\n\x13PublishDataCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\xb8\x01\n\x1bPublishTranscriptionRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x1c\n\x14participant_identity\x18\x02 \x01(\t\x12\x10\n\x08track_id\x18\x03 \x01(\t\x12\x35\n\x08segments\x18\x04 \x03(\x0b\x32#.livekit.proto.TranscriptionSegment\x12\x10\n\x08language\x18\x05 \x01(\t\"0\n\x1cPublishTranscriptionResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"N\n\x1cPublishTranscriptionCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"P\n\x1aUpdateLocalMetadataRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x10\n\x08metadata\x18\x02 \x01(\t\"/\n\x1bUpdateLocalMetadataResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"/\n\x1bUpdateLocalMetadataCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"H\n\x16UpdateLocalNameRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\"+\n\x17UpdateLocalNameResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"+\n\x17UpdateLocalNameCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"E\n\x14SetSubscribedRequest\x12\x11\n\tsubscribe\x18\x01 \x01(\x08\x12\x1a\n\x12publication_handle\x18\x02 \x01(\x04\"\x17\n\x15SetSubscribedResponse\"-\n\x16GetSessionStatsRequest\x12\x13\n\x0broom_handle\x18\x01 \x01(\x04\"+\n\x17GetSessionStatsResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\xae\x01\n\x17GetSessionStatsCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x30\n\x0fpublisher_stats\x18\x03 \x03(\x0b\x32\x17.livekit.proto.RtcStats\x12\x31\n\x10subscriber_stats\x18\x04 \x03(\x0b\x32\x17.livekit.proto.RtcStatsB\x08\n\x06_error\";\n\rVideoEncoding\x12\x13\n\x0bmax_bitrate\x18\x01 \x01(\x04\x12\x15\n\rmax_framerate\x18\x02 \x01(\x01\"$\n\rAudioEncoding\x12\x13\n\x0bmax_bitrate\x18\x01 \x01(\x04\"\x8a\x02\n\x13TrackPublishOptions\x12\x34\n\x0evideo_encoding\x18\x01 \x01(\x0b\x32\x1c.livekit.proto.VideoEncoding\x12\x34\n\x0e\x61udio_encoding\x18\x02 \x01(\x0b\x32\x1c.livekit.proto.AudioEncoding\x12.\n\x0bvideo_codec\x18\x03 \x01(\x0e\x32\x19.livekit.proto.VideoCodec\x12\x0b\n\x03\x64tx\x18\x04 \x01(\x08\x12\x0b\n\x03red\x18\x05 \x01(\x08\x12\x11\n\tsimulcast\x18\x06 \x01(\x08\x12*\n\x06source\x18\x07 \x01(\x0e\x32\x1a.livekit.proto.TrackSource\"=\n\tIceServer\x12\x0c\n\x04urls\x18\x01 \x03(\t\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"\x84\x02\n\tRtcConfig\x12@\n\x12ice_transport_type\x18\x01 \x01(\x0e\x32\x1f.livekit.proto.IceTransportTypeH\x00\x88\x01\x01\x12P\n\x1a\x63ontinual_gathering_policy\x18\x02 \x01(\x0e\x32\'.livekit.proto.ContinualGatheringPolicyH\x01\x88\x01\x01\x12-\n\x0bice_servers\x18\x03 \x03(\x0b\x32\x18.livekit.proto.IceServerB\x15\n\x13_ice_transport_typeB\x1d\n\x1b_continual_gathering_policy\"\xe0\x01\n\x0bRoomOptions\x12\x16\n\x0e\x61uto_subscribe\x18\x01 \x01(\x08\x12\x17\n\x0f\x61\x64\x61ptive_stream\x18\x02 \x01(\x08\x12\x10\n\x08\x64ynacast\x18\x03 \x01(\x08\x12-\n\x04\x65\x32\x65\x65\x18\x04 \x01(\x0b\x32\x1a.livekit.proto.E2eeOptionsH\x00\x88\x01\x01\x12\x31\n\nrtc_config\x18\x05 \x01(\x0b\x32\x18.livekit.proto.RtcConfigH\x01\x88\x01\x01\x12\x14\n\x0cjoin_retries\x18\x06 \x01(\rB\x07\n\x05_e2eeB\r\n\x0b_rtc_config\"e\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\"0\n\nBufferInfo\x12\x10\n\x08\x64\x61ta_ptr\x18\x01 \x01(\x04\x12\x10\n\x08\x64\x61ta_len\x18\x02 \x01(\x04\"e\n\x0bOwnedBuffer\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12\'\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x19.livekit.proto.BufferInfo\"\x80\x0c\n\tRoomEvent\x12\x13\n\x0broom_handle\x18\x01 \x01(\x04\x12\x44\n\x15participant_connected\x18\x02 \x01(\x0b\x32#.livekit.proto.ParticipantConnectedH\x00\x12J\n\x18participant_disconnected\x18\x03 \x01(\x0b\x32&.livekit.proto.ParticipantDisconnectedH\x00\x12\x43\n\x15local_track_published\x18\x04 \x01(\x0b\x32\".livekit.proto.LocalTrackPublishedH\x00\x12G\n\x17local_track_unpublished\x18\x05 \x01(\x0b\x32$.livekit.proto.LocalTrackUnpublishedH\x00\x12\x38\n\x0ftrack_published\x18\x06 \x01(\x0b\x32\x1d.livekit.proto.TrackPublishedH\x00\x12<\n\x11track_unpublished\x18\x07 \x01(\x0b\x32\x1f.livekit.proto.TrackUnpublishedH\x00\x12:\n\x10track_subscribed\x18\x08 \x01(\x0b\x32\x1e.livekit.proto.TrackSubscribedH\x00\x12>\n\x12track_unsubscribed\x18\t \x01(\x0b\x32 .livekit.proto.TrackUnsubscribedH\x00\x12K\n\x19track_subscription_failed\x18\n \x01(\x0b\x32&.livekit.proto.TrackSubscriptionFailedH\x00\x12\x30\n\x0btrack_muted\x18\x0b \x01(\x0b\x32\x19.livekit.proto.TrackMutedH\x00\x12\x34\n\rtrack_unmuted\x18\x0c \x01(\x0b\x32\x1b.livekit.proto.TrackUnmutedH\x00\x12G\n\x17\x61\x63tive_speakers_changed\x18\r \x01(\x0b\x32$.livekit.proto.ActiveSpeakersChangedH\x00\x12\x43\n\x15room_metadata_changed\x18\x0e \x01(\x0b\x32\".livekit.proto.RoomMetadataChangedH\x00\x12Q\n\x1cparticipant_metadata_changed\x18\x0f \x01(\x0b\x32).livekit.proto.ParticipantMetadataChangedH\x00\x12I\n\x18participant_name_changed\x18\x10 \x01(\x0b\x32%.livekit.proto.ParticipantNameChangedH\x00\x12M\n\x1a\x63onnection_quality_changed\x18\x11 \x01(\x0b\x32\'.livekit.proto.ConnectionQualityChangedH\x00\x12I\n\x18\x63onnection_state_changed\x18\x13 \x01(\x0b\x32%.livekit.proto.ConnectionStateChangedH\x00\x12\x33\n\x0c\x64isconnected\x18\x15 \x01(\x0b\x32\x1b.livekit.proto.DisconnectedH\x00\x12\x33\n\x0creconnecting\x18\x16 \x01(\x0b\x32\x1b.livekit.proto.ReconnectingH\x00\x12\x31\n\x0breconnected\x18\x17 \x01(\x0b\x32\x1a.livekit.proto.ReconnectedH\x00\x12=\n\x12\x65\x32\x65\x65_state_changed\x18\x18 \x01(\x0b\x32\x1f.livekit.proto.E2eeStateChangedH\x00\x12%\n\x03\x65os\x18\x19 \x01(\x0b\x32\x16.livekit.proto.RoomEOSH\x00\x12\x41\n\x14\x64\x61ta_packet_received\x18\x1a \x01(\x0b\x32!.livekit.proto.DataPacketReceivedH\x00\x42\t\n\x07message\"7\n\x08RoomInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08metadata\x18\x03 \x01(\t\"a\n\tOwnedRoom\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12%\n\x04info\x18\x02 \x01(\x0b\x32\x17.livekit.proto.RoomInfo\"E\n\x14ParticipantConnected\x12-\n\x04info\x18\x01 \x01(\x0b\x32\x1f.livekit.proto.OwnedParticipant\"2\n\x17ParticipantDisconnected\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\"(\n\x13LocalTrackPublished\x12\x11\n\ttrack_sid\x18\x01 \x01(\t\"0\n\x15LocalTrackUnpublished\x12\x17\n\x0fpublication_sid\x18\x01 \x01(\t\"d\n\x0eTrackPublished\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x39\n\x0bpublication\x18\x02 \x01(\x0b\x32$.livekit.proto.OwnedTrackPublication\"D\n\x10TrackUnpublished\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x17\n\x0fpublication_sid\x18\x02 \x01(\t\"T\n\x0fTrackSubscribed\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12(\n\x05track\x18\x02 \x01(\x0b\x32\x19.livekit.proto.OwnedTrack\"?\n\x11TrackUnsubscribed\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\"T\n\x17TrackSubscriptionFailed\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"8\n\nTrackMuted\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\":\n\x0cTrackUnmuted\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\"Z\n\x10\x45\x32\x65\x65StateChanged\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12-\n\x05state\x18\x02 \x01(\x0e\x32\x1e.livekit.proto.EncryptionState\"1\n\x15\x41\x63tiveSpeakersChanged\x12\x18\n\x10participant_sids\x18\x01 \x03(\t\"\'\n\x13RoomMetadataChanged\x12\x10\n\x08metadata\x18\x01 \x01(\t\"G\n\x1aParticipantMetadataChanged\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x10\n\x08metadata\x18\x02 \x01(\t\"?\n\x16ParticipantNameChanged\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"f\n\x18\x43onnectionQualityChanged\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x31\n\x07quality\x18\x02 \x01(\x0e\x32 .livekit.proto.ConnectionQuality\"T\n\nUserPacket\x12(\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1a.livekit.proto.OwnedBuffer\x12\x12\n\x05topic\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_topic\"5\n\x07SipDTMF\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x12\n\x05\x64igit\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_digit\"\xf5\x01\n\x12\x44\x61taPacketReceived\x12+\n\x04kind\x18\x01 \x01(\x0e\x32\x1d.livekit.proto.DataPacketKind\x12\x1c\n\x14participant_identity\x18\x02 \x01(\t\x12 \n\x0fparticipant_sid\x18\x03 \x01(\tB\x02\x18\x01H\x01\x88\x01\x01\x12)\n\x04user\x18\x04 \x01(\x0b\x32\x19.livekit.proto.UserPacketH\x00\x12*\n\x08sip_dtmf\x18\x05 \x01(\x0b\x32\x16.livekit.proto.SipDTMFH\x00\x42\x07\n\x05valueB\x12\n\x10_participant_sid\"G\n\x16\x43onnectionStateChanged\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x1e.livekit.proto.ConnectionState\"\x0b\n\tConnected\"\x0e\n\x0c\x44isconnected\"\x0e\n\x0cReconnecting\"\r\n\x0bReconnected\"\t\n\x07RoomEOS*P\n\x10IceTransportType\x12\x13\n\x0fTRANSPORT_RELAY\x10\x00\x12\x14\n\x10TRANSPORT_NOHOST\x10\x01\x12\x11\n\rTRANSPORT_ALL\x10\x02*C\n\x18\x43ontinualGatheringPolicy\x12\x0f\n\x0bGATHER_ONCE\x10\x00\x12\x16\n\x12GATHER_CONTINUALLY\x10\x01*`\n\x11\x43onnectionQuality\x12\x10\n\x0cQUALITY_POOR\x10\x00\x12\x10\n\x0cQUALITY_GOOD\x10\x01\x12\x15\n\x11QUALITY_EXCELLENT\x10\x02\x12\x10\n\x0cQUALITY_LOST\x10\x03*S\n\x0f\x43onnectionState\x12\x15\n\x11\x43ONN_DISCONNECTED\x10\x00\x12\x12\n\x0e\x43ONN_CONNECTED\x10\x01\x12\x15\n\x11\x43ONN_RECONNECTING\x10\x02*3\n\x0e\x44\x61taPacketKind\x12\x0e\n\nKIND_LOSSY\x10\x00\x12\x11\n\rKIND_RELIABLE\x10\x01\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nroom.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0chandle.proto\x1a\x11participant.proto\x1a\x0btrack.proto\x1a\x11video_frame.proto\x1a\x0bstats.proto\"Y\n\x0e\x43onnectRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\r\n\x05token\x18\x02 \x01(\t\x12+\n\x07options\x18\x03 \x01(\x0b\x32\x1a.livekit.proto.RoomOptions\"#\n\x0f\x43onnectResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\xfd\x02\n\x0f\x43onnectCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x12&\n\x04room\x18\x03 \x01(\x0b\x32\x18.livekit.proto.OwnedRoom\x12:\n\x11local_participant\x18\x04 \x01(\x0b\x32\x1f.livekit.proto.OwnedParticipant\x12J\n\x0cparticipants\x18\x05 \x03(\x0b\x32\x34.livekit.proto.ConnectCallback.ParticipantWithTracks\x1a\x89\x01\n\x15ParticipantWithTracks\x12\x34\n\x0bparticipant\x18\x01 \x01(\x0b\x32\x1f.livekit.proto.OwnedParticipant\x12:\n\x0cpublications\x18\x02 \x03(\x0b\x32$.livekit.proto.OwnedTrackPublicationB\x08\n\x06_error\"(\n\x11\x44isconnectRequest\x12\x13\n\x0broom_handle\x18\x01 \x01(\x04\"&\n\x12\x44isconnectResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"&\n\x12\x44isconnectCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\x82\x01\n\x13PublishTrackRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x14\n\x0ctrack_handle\x18\x02 \x01(\x04\x12\x33\n\x07options\x18\x03 \x01(\x0b\x32\".livekit.proto.TrackPublishOptions\"(\n\x14PublishTrackResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\x81\x01\n\x14PublishTrackCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x39\n\x0bpublication\x18\x03 \x01(\x0b\x32$.livekit.proto.OwnedTrackPublicationB\x08\n\x06_error\"g\n\x15UnpublishTrackRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\x12\x19\n\x11stop_on_unpublish\x18\x03 \x01(\x08\"*\n\x16UnpublishTrackResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"H\n\x16UnpublishTrackCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\xc8\x01\n\x12PublishDataRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x10\n\x08\x64\x61ta_ptr\x18\x02 \x01(\x04\x12\x10\n\x08\x64\x61ta_len\x18\x03 \x01(\x04\x12\x10\n\x08reliable\x18\x04 \x01(\x08\x12\x1c\n\x10\x64\x65stination_sids\x18\x05 \x03(\tB\x02\x18\x01\x12\x12\n\x05topic\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x16\x64\x65stination_identities\x18\x07 \x03(\tB\x08\n\x06_topic\"\'\n\x13PublishDataResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"E\n\x13PublishDataCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\xa6\x01\n\x1bPublishTranscriptionRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x1c\n\x14participant_identity\x18\x02 \x01(\t\x12\x10\n\x08track_id\x18\x03 \x01(\t\x12\x35\n\x08segments\x18\x04 \x03(\x0b\x32#.livekit.proto.TranscriptionSegment\"0\n\x1cPublishTranscriptionResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"N\n\x1cPublishTranscriptionCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"v\n\x15PublishSipDtmfRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x0c\n\x04\x63ode\x18\x02 \x01(\r\x12\r\n\x05\x64igit\x18\x03 \x01(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x04 \x03(\t\"*\n\x16PublishSipDtmfResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"H\n\x16PublishSipDtmfCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"M\n\x17SetLocalMetadataRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x10\n\x08metadata\x18\x02 \x01(\t\",\n\x18SetLocalMetadataResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"J\n\x18SetLocalMetadataCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\xbe\x01\n\x19SetLocalAttributesRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12L\n\nattributes\x18\x02 \x03(\x0b\x32\x38.livekit.proto.SetLocalAttributesRequest.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\".\n\x1aSetLocalAttributesResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"L\n\x1aSetLocalAttributesCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"E\n\x13SetLocalNameRequest\x12 \n\x18local_participant_handle\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\"(\n\x14SetLocalNameResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"F\n\x14SetLocalNameCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"E\n\x14SetSubscribedRequest\x12\x11\n\tsubscribe\x18\x01 \x01(\x08\x12\x1a\n\x12publication_handle\x18\x02 \x01(\x04\"\x17\n\x15SetSubscribedResponse\"-\n\x16GetSessionStatsRequest\x12\x13\n\x0broom_handle\x18\x01 \x01(\x04\"+\n\x17GetSessionStatsResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"\xae\x01\n\x17GetSessionStatsCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x30\n\x0fpublisher_stats\x18\x03 \x03(\x0b\x32\x17.livekit.proto.RtcStats\x12\x31\n\x10subscriber_stats\x18\x04 \x03(\x0b\x32\x17.livekit.proto.RtcStatsB\x08\n\x06_error\";\n\rVideoEncoding\x12\x13\n\x0bmax_bitrate\x18\x01 \x01(\x04\x12\x15\n\rmax_framerate\x18\x02 \x01(\x01\"$\n\rAudioEncoding\x12\x13\n\x0bmax_bitrate\x18\x01 \x01(\x04\"\x8a\x02\n\x13TrackPublishOptions\x12\x34\n\x0evideo_encoding\x18\x01 \x01(\x0b\x32\x1c.livekit.proto.VideoEncoding\x12\x34\n\x0e\x61udio_encoding\x18\x02 \x01(\x0b\x32\x1c.livekit.proto.AudioEncoding\x12.\n\x0bvideo_codec\x18\x03 \x01(\x0e\x32\x19.livekit.proto.VideoCodec\x12\x0b\n\x03\x64tx\x18\x04 \x01(\x08\x12\x0b\n\x03red\x18\x05 \x01(\x08\x12\x11\n\tsimulcast\x18\x06 \x01(\x08\x12*\n\x06source\x18\x07 \x01(\x0e\x32\x1a.livekit.proto.TrackSource\"=\n\tIceServer\x12\x0c\n\x04urls\x18\x01 \x03(\t\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"\x84\x02\n\tRtcConfig\x12@\n\x12ice_transport_type\x18\x01 \x01(\x0e\x32\x1f.livekit.proto.IceTransportTypeH\x00\x88\x01\x01\x12P\n\x1a\x63ontinual_gathering_policy\x18\x02 \x01(\x0e\x32\'.livekit.proto.ContinualGatheringPolicyH\x01\x88\x01\x01\x12-\n\x0bice_servers\x18\x03 \x03(\x0b\x32\x18.livekit.proto.IceServerB\x15\n\x13_ice_transport_typeB\x1d\n\x1b_continual_gathering_policy\"\xe0\x01\n\x0bRoomOptions\x12\x16\n\x0e\x61uto_subscribe\x18\x01 \x01(\x08\x12\x17\n\x0f\x61\x64\x61ptive_stream\x18\x02 \x01(\x08\x12\x10\n\x08\x64ynacast\x18\x03 \x01(\x08\x12-\n\x04\x65\x32\x65\x65\x18\x04 \x01(\x0b\x32\x1a.livekit.proto.E2eeOptionsH\x00\x88\x01\x01\x12\x31\n\nrtc_config\x18\x05 \x01(\x0b\x32\x18.livekit.proto.RtcConfigH\x01\x88\x01\x01\x12\x14\n\x0cjoin_retries\x18\x06 \x01(\rB\x07\n\x05_e2eeB\r\n\x0b_rtc_config\"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\"0\n\nBufferInfo\x12\x10\n\x08\x64\x61ta_ptr\x18\x01 \x01(\x04\x12\x10\n\x08\x64\x61ta_len\x18\x02 \x01(\x04\"e\n\x0bOwnedBuffer\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12\'\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x19.livekit.proto.BufferInfo\"\xda\r\n\tRoomEvent\x12\x13\n\x0broom_handle\x18\x01 \x01(\x04\x12\x44\n\x15participant_connected\x18\x02 \x01(\x0b\x32#.livekit.proto.ParticipantConnectedH\x00\x12J\n\x18participant_disconnected\x18\x03 \x01(\x0b\x32&.livekit.proto.ParticipantDisconnectedH\x00\x12\x43\n\x15local_track_published\x18\x04 \x01(\x0b\x32\".livekit.proto.LocalTrackPublishedH\x00\x12G\n\x17local_track_unpublished\x18\x05 \x01(\x0b\x32$.livekit.proto.LocalTrackUnpublishedH\x00\x12\x38\n\x0ftrack_published\x18\x06 \x01(\x0b\x32\x1d.livekit.proto.TrackPublishedH\x00\x12<\n\x11track_unpublished\x18\x07 \x01(\x0b\x32\x1f.livekit.proto.TrackUnpublishedH\x00\x12:\n\x10track_subscribed\x18\x08 \x01(\x0b\x32\x1e.livekit.proto.TrackSubscribedH\x00\x12>\n\x12track_unsubscribed\x18\t \x01(\x0b\x32 .livekit.proto.TrackUnsubscribedH\x00\x12K\n\x19track_subscription_failed\x18\n \x01(\x0b\x32&.livekit.proto.TrackSubscriptionFailedH\x00\x12\x30\n\x0btrack_muted\x18\x0b \x01(\x0b\x32\x19.livekit.proto.TrackMutedH\x00\x12\x34\n\rtrack_unmuted\x18\x0c \x01(\x0b\x32\x1b.livekit.proto.TrackUnmutedH\x00\x12G\n\x17\x61\x63tive_speakers_changed\x18\r \x01(\x0b\x32$.livekit.proto.ActiveSpeakersChangedH\x00\x12\x43\n\x15room_metadata_changed\x18\x0e \x01(\x0b\x32\".livekit.proto.RoomMetadataChangedH\x00\x12\x39\n\x10room_sid_changed\x18\x0f \x01(\x0b\x32\x1d.livekit.proto.RoomSidChangedH\x00\x12Q\n\x1cparticipant_metadata_changed\x18\x10 \x01(\x0b\x32).livekit.proto.ParticipantMetadataChangedH\x00\x12I\n\x18participant_name_changed\x18\x11 \x01(\x0b\x32%.livekit.proto.ParticipantNameChangedH\x00\x12U\n\x1eparticipant_attributes_changed\x18\x12 \x01(\x0b\x32+.livekit.proto.ParticipantAttributesChangedH\x00\x12M\n\x1a\x63onnection_quality_changed\x18\x13 \x01(\x0b\x32\'.livekit.proto.ConnectionQualityChangedH\x00\x12I\n\x18\x63onnection_state_changed\x18\x14 \x01(\x0b\x32%.livekit.proto.ConnectionStateChangedH\x00\x12\x33\n\x0c\x64isconnected\x18\x16 \x01(\x0b\x32\x1b.livekit.proto.DisconnectedH\x00\x12\x33\n\x0creconnecting\x18\x17 \x01(\x0b\x32\x1b.livekit.proto.ReconnectingH\x00\x12\x31\n\x0breconnected\x18\x18 \x01(\x0b\x32\x1a.livekit.proto.ReconnectedH\x00\x12=\n\x12\x65\x32\x65\x65_state_changed\x18\x19 \x01(\x0b\x32\x1f.livekit.proto.E2eeStateChangedH\x00\x12%\n\x03\x65os\x18\x1a \x01(\x0b\x32\x16.livekit.proto.RoomEOSH\x00\x12\x41\n\x14\x64\x61ta_packet_received\x18\x1b \x01(\x0b\x32!.livekit.proto.DataPacketReceivedH\x00\x12\x46\n\x16transcription_received\x18\x1c \x01(\x0b\x32$.livekit.proto.TranscriptionReceivedH\x00\x42\t\n\x07message\"D\n\x08RoomInfo\x12\x10\n\x03sid\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08metadata\x18\x03 \x01(\tB\x06\n\x04_sid\"a\n\tOwnedRoom\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12%\n\x04info\x18\x02 \x01(\x0b\x32\x17.livekit.proto.RoomInfo\"E\n\x14ParticipantConnected\x12-\n\x04info\x18\x01 \x01(\x0b\x32\x1f.livekit.proto.OwnedParticipant\"7\n\x17ParticipantDisconnected\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\"(\n\x13LocalTrackPublished\x12\x11\n\ttrack_sid\x18\x01 \x01(\t\"0\n\x15LocalTrackUnpublished\x12\x17\n\x0fpublication_sid\x18\x01 \x01(\t\"i\n\x0eTrackPublished\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x39\n\x0bpublication\x18\x02 \x01(\x0b\x32$.livekit.proto.OwnedTrackPublication\"I\n\x10TrackUnpublished\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x17\n\x0fpublication_sid\x18\x02 \x01(\t\"Y\n\x0fTrackSubscribed\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12(\n\x05track\x18\x02 \x01(\x0b\x32\x19.livekit.proto.OwnedTrack\"D\n\x11TrackUnsubscribed\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\"Y\n\x17TrackSubscriptionFailed\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"=\n\nTrackMuted\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\"?\n\x0cTrackUnmuted\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\"_\n\x10\x45\x32\x65\x65StateChanged\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12-\n\x05state\x18\x02 \x01(\x0e\x32\x1e.livekit.proto.EncryptionState\"7\n\x15\x41\x63tiveSpeakersChanged\x12\x1e\n\x16participant_identities\x18\x01 \x03(\t\"\'\n\x13RoomMetadataChanged\x12\x10\n\x08metadata\x18\x01 \x01(\t\"\x1d\n\x0eRoomSidChanged\x12\x0b\n\x03sid\x18\x01 \x01(\t\"L\n\x1aParticipantMetadataChanged\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x10\n\x08metadata\x18\x02 \x01(\t\"\xda\x02\n\x1cParticipantAttributesChanged\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12O\n\nattributes\x18\x02 \x03(\x0b\x32;.livekit.proto.ParticipantAttributesChanged.AttributesEntry\x12^\n\x12\x63hanged_attributes\x18\x03 \x03(\x0b\x32\x42.livekit.proto.ParticipantAttributesChanged.ChangedAttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x38\n\x16\x43hangedAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"D\n\x16ParticipantNameChanged\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"k\n\x18\x43onnectionQualityChanged\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x31\n\x07quality\x18\x02 \x01(\x0e\x32 .livekit.proto.ConnectionQuality\"T\n\nUserPacket\x12(\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1a.livekit.proto.OwnedBuffer\x12\x12\n\x05topic\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_topic\"5\n\x07SipDTMF\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x12\n\x05\x64igit\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_digit\"\xbf\x01\n\x12\x44\x61taPacketReceived\x12+\n\x04kind\x18\x01 \x01(\x0e\x32\x1d.livekit.proto.DataPacketKind\x12\x1c\n\x14participant_identity\x18\x02 \x01(\t\x12)\n\x04user\x18\x04 \x01(\x0b\x32\x19.livekit.proto.UserPacketH\x00\x12*\n\x08sip_dtmf\x18\x05 \x01(\x0b\x32\x16.livekit.proto.SipDTMFH\x00\x42\x07\n\x05value\"\xb0\x01\n\x15TranscriptionReceived\x12!\n\x14participant_identity\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\ttrack_sid\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x35\n\x08segments\x18\x03 \x03(\x0b\x32#.livekit.proto.TranscriptionSegmentB\x17\n\x15_participant_identityB\x0c\n\n_track_sid\"G\n\x16\x43onnectionStateChanged\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x1e.livekit.proto.ConnectionState\"\x0b\n\tConnected\"\x0e\n\x0c\x44isconnected\"\x0e\n\x0cReconnecting\"\r\n\x0bReconnected\"\t\n\x07RoomEOS*P\n\x10IceTransportType\x12\x13\n\x0fTRANSPORT_RELAY\x10\x00\x12\x14\n\x10TRANSPORT_NOHOST\x10\x01\x12\x11\n\rTRANSPORT_ALL\x10\x02*C\n\x18\x43ontinualGatheringPolicy\x12\x0f\n\x0bGATHER_ONCE\x10\x00\x12\x16\n\x12GATHER_CONTINUALLY\x10\x01*`\n\x11\x43onnectionQuality\x12\x10\n\x0cQUALITY_POOR\x10\x00\x12\x10\n\x0cQUALITY_GOOD\x10\x01\x12\x15\n\x11QUALITY_EXCELLENT\x10\x02\x12\x10\n\x0cQUALITY_LOST\x10\x03*S\n\x0f\x43onnectionState\x12\x15\n\x11\x43ONN_DISCONNECTED\x10\x00\x12\x12\n\x0e\x43ONN_CONNECTED\x10\x01\x12\x15\n\x11\x43ONN_RECONNECTING\x10\x02*3\n\x0e\x44\x61taPacketKind\x12\x0e\n\nKIND_LOSSY\x10\x00\x12\x11\n\rKIND_RELIABLE\x10\x01\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -28,18 +28,24 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals['DESCRIPTOR']._options = None _globals['DESCRIPTOR']._serialized_options = b'\252\002\rLiveKit.Proto' - _globals['_DATAPACKETRECEIVED'].fields_by_name['participant_sid']._options = None - _globals['_DATAPACKETRECEIVED'].fields_by_name['participant_sid']._serialized_options = b'\030\001' - _globals['_ICETRANSPORTTYPE']._serialized_start=7188 - _globals['_ICETRANSPORTTYPE']._serialized_end=7268 - _globals['_CONTINUALGATHERINGPOLICY']._serialized_start=7270 - _globals['_CONTINUALGATHERINGPOLICY']._serialized_end=7337 - _globals['_CONNECTIONQUALITY']._serialized_start=7339 - _globals['_CONNECTIONQUALITY']._serialized_end=7435 - _globals['_CONNECTIONSTATE']._serialized_start=7437 - _globals['_CONNECTIONSTATE']._serialized_end=7520 - _globals['_DATAPACKETKIND']._serialized_start=7522 - _globals['_DATAPACKETKIND']._serialized_end=7573 + _globals['_PUBLISHDATAREQUEST'].fields_by_name['destination_sids']._options = None + _globals['_PUBLISHDATAREQUEST'].fields_by_name['destination_sids']._serialized_options = b'\030\001' + _globals['_SETLOCALATTRIBUTESREQUEST_ATTRIBUTESENTRY']._options = None + _globals['_SETLOCALATTRIBUTESREQUEST_ATTRIBUTESENTRY']._serialized_options = b'8\001' + _globals['_PARTICIPANTATTRIBUTESCHANGED_ATTRIBUTESENTRY']._options = None + _globals['_PARTICIPANTATTRIBUTESCHANGED_ATTRIBUTESENTRY']._serialized_options = b'8\001' + _globals['_PARTICIPANTATTRIBUTESCHANGED_CHANGEDATTRIBUTESENTRY']._options = None + _globals['_PARTICIPANTATTRIBUTESCHANGED_CHANGEDATTRIBUTESENTRY']._serialized_options = b'8\001' + _globals['_ICETRANSPORTTYPE']._serialized_start=8598 + _globals['_ICETRANSPORTTYPE']._serialized_end=8678 + _globals['_CONTINUALGATHERINGPOLICY']._serialized_start=8680 + _globals['_CONTINUALGATHERINGPOLICY']._serialized_end=8747 + _globals['_CONNECTIONQUALITY']._serialized_start=8749 + _globals['_CONNECTIONQUALITY']._serialized_end=8845 + _globals['_CONNECTIONSTATE']._serialized_start=8847 + _globals['_CONNECTIONSTATE']._serialized_end=8930 + _globals['_DATAPACKETKIND']._serialized_start=8932 + _globals['_DATAPACKETKIND']._serialized_end=8983 _globals['_CONNECTREQUEST']._serialized_start=119 _globals['_CONNECTREQUEST']._serialized_end=208 _globals['_CONNECTRESPONSE']._serialized_start=210 @@ -67,113 +73,137 @@ _globals['_UNPUBLISHTRACKCALLBACK']._serialized_start=1209 _globals['_UNPUBLISHTRACKCALLBACK']._serialized_end=1281 _globals['_PUBLISHDATAREQUEST']._serialized_start=1284 - _globals['_PUBLISHDATAREQUEST']._serialized_end=1475 - _globals['_PUBLISHDATARESPONSE']._serialized_start=1477 - _globals['_PUBLISHDATARESPONSE']._serialized_end=1516 - _globals['_PUBLISHDATACALLBACK']._serialized_start=1518 - _globals['_PUBLISHDATACALLBACK']._serialized_end=1587 - _globals['_PUBLISHTRANSCRIPTIONREQUEST']._serialized_start=1590 - _globals['_PUBLISHTRANSCRIPTIONREQUEST']._serialized_end=1774 - _globals['_PUBLISHTRANSCRIPTIONRESPONSE']._serialized_start=1776 - _globals['_PUBLISHTRANSCRIPTIONRESPONSE']._serialized_end=1824 - _globals['_PUBLISHTRANSCRIPTIONCALLBACK']._serialized_start=1826 - _globals['_PUBLISHTRANSCRIPTIONCALLBACK']._serialized_end=1904 - _globals['_UPDATELOCALMETADATAREQUEST']._serialized_start=1906 - _globals['_UPDATELOCALMETADATAREQUEST']._serialized_end=1986 - _globals['_UPDATELOCALMETADATARESPONSE']._serialized_start=1988 - _globals['_UPDATELOCALMETADATARESPONSE']._serialized_end=2035 - _globals['_UPDATELOCALMETADATACALLBACK']._serialized_start=2037 - _globals['_UPDATELOCALMETADATACALLBACK']._serialized_end=2084 - _globals['_UPDATELOCALNAMEREQUEST']._serialized_start=2086 - _globals['_UPDATELOCALNAMEREQUEST']._serialized_end=2158 - _globals['_UPDATELOCALNAMERESPONSE']._serialized_start=2160 - _globals['_UPDATELOCALNAMERESPONSE']._serialized_end=2203 - _globals['_UPDATELOCALNAMECALLBACK']._serialized_start=2205 - _globals['_UPDATELOCALNAMECALLBACK']._serialized_end=2248 - _globals['_SETSUBSCRIBEDREQUEST']._serialized_start=2250 - _globals['_SETSUBSCRIBEDREQUEST']._serialized_end=2319 - _globals['_SETSUBSCRIBEDRESPONSE']._serialized_start=2321 - _globals['_SETSUBSCRIBEDRESPONSE']._serialized_end=2344 - _globals['_GETSESSIONSTATSREQUEST']._serialized_start=2346 - _globals['_GETSESSIONSTATSREQUEST']._serialized_end=2391 - _globals['_GETSESSIONSTATSRESPONSE']._serialized_start=2393 - _globals['_GETSESSIONSTATSRESPONSE']._serialized_end=2436 - _globals['_GETSESSIONSTATSCALLBACK']._serialized_start=2439 - _globals['_GETSESSIONSTATSCALLBACK']._serialized_end=2613 - _globals['_VIDEOENCODING']._serialized_start=2615 - _globals['_VIDEOENCODING']._serialized_end=2674 - _globals['_AUDIOENCODING']._serialized_start=2676 - _globals['_AUDIOENCODING']._serialized_end=2712 - _globals['_TRACKPUBLISHOPTIONS']._serialized_start=2715 - _globals['_TRACKPUBLISHOPTIONS']._serialized_end=2981 - _globals['_ICESERVER']._serialized_start=2983 - _globals['_ICESERVER']._serialized_end=3044 - _globals['_RTCCONFIG']._serialized_start=3047 - _globals['_RTCCONFIG']._serialized_end=3307 - _globals['_ROOMOPTIONS']._serialized_start=3310 - _globals['_ROOMOPTIONS']._serialized_end=3534 - _globals['_TRANSCRIPTIONSEGMENT']._serialized_start=3536 - _globals['_TRANSCRIPTIONSEGMENT']._serialized_end=3637 - _globals['_BUFFERINFO']._serialized_start=3639 - _globals['_BUFFERINFO']._serialized_end=3687 - _globals['_OWNEDBUFFER']._serialized_start=3689 - _globals['_OWNEDBUFFER']._serialized_end=3790 - _globals['_ROOMEVENT']._serialized_start=3793 - _globals['_ROOMEVENT']._serialized_end=5329 - _globals['_ROOMINFO']._serialized_start=5331 - _globals['_ROOMINFO']._serialized_end=5386 - _globals['_OWNEDROOM']._serialized_start=5388 - _globals['_OWNEDROOM']._serialized_end=5485 - _globals['_PARTICIPANTCONNECTED']._serialized_start=5487 - _globals['_PARTICIPANTCONNECTED']._serialized_end=5556 - _globals['_PARTICIPANTDISCONNECTED']._serialized_start=5558 - _globals['_PARTICIPANTDISCONNECTED']._serialized_end=5608 - _globals['_LOCALTRACKPUBLISHED']._serialized_start=5610 - _globals['_LOCALTRACKPUBLISHED']._serialized_end=5650 - _globals['_LOCALTRACKUNPUBLISHED']._serialized_start=5652 - _globals['_LOCALTRACKUNPUBLISHED']._serialized_end=5700 - _globals['_TRACKPUBLISHED']._serialized_start=5702 - _globals['_TRACKPUBLISHED']._serialized_end=5802 - _globals['_TRACKUNPUBLISHED']._serialized_start=5804 - _globals['_TRACKUNPUBLISHED']._serialized_end=5872 - _globals['_TRACKSUBSCRIBED']._serialized_start=5874 - _globals['_TRACKSUBSCRIBED']._serialized_end=5958 - _globals['_TRACKUNSUBSCRIBED']._serialized_start=5960 - _globals['_TRACKUNSUBSCRIBED']._serialized_end=6023 - _globals['_TRACKSUBSCRIPTIONFAILED']._serialized_start=6025 - _globals['_TRACKSUBSCRIPTIONFAILED']._serialized_end=6109 - _globals['_TRACKMUTED']._serialized_start=6111 - _globals['_TRACKMUTED']._serialized_end=6167 - _globals['_TRACKUNMUTED']._serialized_start=6169 - _globals['_TRACKUNMUTED']._serialized_end=6227 - _globals['_E2EESTATECHANGED']._serialized_start=6229 - _globals['_E2EESTATECHANGED']._serialized_end=6319 - _globals['_ACTIVESPEAKERSCHANGED']._serialized_start=6321 - _globals['_ACTIVESPEAKERSCHANGED']._serialized_end=6370 - _globals['_ROOMMETADATACHANGED']._serialized_start=6372 - _globals['_ROOMMETADATACHANGED']._serialized_end=6411 - _globals['_PARTICIPANTMETADATACHANGED']._serialized_start=6413 - _globals['_PARTICIPANTMETADATACHANGED']._serialized_end=6484 - _globals['_PARTICIPANTNAMECHANGED']._serialized_start=6486 - _globals['_PARTICIPANTNAMECHANGED']._serialized_end=6549 - _globals['_CONNECTIONQUALITYCHANGED']._serialized_start=6551 - _globals['_CONNECTIONQUALITYCHANGED']._serialized_end=6653 - _globals['_USERPACKET']._serialized_start=6655 - _globals['_USERPACKET']._serialized_end=6739 - _globals['_SIPDTMF']._serialized_start=6741 - _globals['_SIPDTMF']._serialized_end=6794 - _globals['_DATAPACKETRECEIVED']._serialized_start=6797 - _globals['_DATAPACKETRECEIVED']._serialized_end=7042 - _globals['_CONNECTIONSTATECHANGED']._serialized_start=7044 - _globals['_CONNECTIONSTATECHANGED']._serialized_end=7115 - _globals['_CONNECTED']._serialized_start=7117 - _globals['_CONNECTED']._serialized_end=7128 - _globals['_DISCONNECTED']._serialized_start=7130 - _globals['_DISCONNECTED']._serialized_end=7144 - _globals['_RECONNECTING']._serialized_start=7146 - _globals['_RECONNECTING']._serialized_end=7160 - _globals['_RECONNECTED']._serialized_start=7162 - _globals['_RECONNECTED']._serialized_end=7175 - _globals['_ROOMEOS']._serialized_start=7177 - _globals['_ROOMEOS']._serialized_end=7186 + _globals['_PUBLISHDATAREQUEST']._serialized_end=1484 + _globals['_PUBLISHDATARESPONSE']._serialized_start=1486 + _globals['_PUBLISHDATARESPONSE']._serialized_end=1525 + _globals['_PUBLISHDATACALLBACK']._serialized_start=1527 + _globals['_PUBLISHDATACALLBACK']._serialized_end=1596 + _globals['_PUBLISHTRANSCRIPTIONREQUEST']._serialized_start=1599 + _globals['_PUBLISHTRANSCRIPTIONREQUEST']._serialized_end=1765 + _globals['_PUBLISHTRANSCRIPTIONRESPONSE']._serialized_start=1767 + _globals['_PUBLISHTRANSCRIPTIONRESPONSE']._serialized_end=1815 + _globals['_PUBLISHTRANSCRIPTIONCALLBACK']._serialized_start=1817 + _globals['_PUBLISHTRANSCRIPTIONCALLBACK']._serialized_end=1895 + _globals['_PUBLISHSIPDTMFREQUEST']._serialized_start=1897 + _globals['_PUBLISHSIPDTMFREQUEST']._serialized_end=2015 + _globals['_PUBLISHSIPDTMFRESPONSE']._serialized_start=2017 + _globals['_PUBLISHSIPDTMFRESPONSE']._serialized_end=2059 + _globals['_PUBLISHSIPDTMFCALLBACK']._serialized_start=2061 + _globals['_PUBLISHSIPDTMFCALLBACK']._serialized_end=2133 + _globals['_SETLOCALMETADATAREQUEST']._serialized_start=2135 + _globals['_SETLOCALMETADATAREQUEST']._serialized_end=2212 + _globals['_SETLOCALMETADATARESPONSE']._serialized_start=2214 + _globals['_SETLOCALMETADATARESPONSE']._serialized_end=2258 + _globals['_SETLOCALMETADATACALLBACK']._serialized_start=2260 + _globals['_SETLOCALMETADATACALLBACK']._serialized_end=2334 + _globals['_SETLOCALATTRIBUTESREQUEST']._serialized_start=2337 + _globals['_SETLOCALATTRIBUTESREQUEST']._serialized_end=2527 + _globals['_SETLOCALATTRIBUTESREQUEST_ATTRIBUTESENTRY']._serialized_start=2478 + _globals['_SETLOCALATTRIBUTESREQUEST_ATTRIBUTESENTRY']._serialized_end=2527 + _globals['_SETLOCALATTRIBUTESRESPONSE']._serialized_start=2529 + _globals['_SETLOCALATTRIBUTESRESPONSE']._serialized_end=2575 + _globals['_SETLOCALATTRIBUTESCALLBACK']._serialized_start=2577 + _globals['_SETLOCALATTRIBUTESCALLBACK']._serialized_end=2653 + _globals['_SETLOCALNAMEREQUEST']._serialized_start=2655 + _globals['_SETLOCALNAMEREQUEST']._serialized_end=2724 + _globals['_SETLOCALNAMERESPONSE']._serialized_start=2726 + _globals['_SETLOCALNAMERESPONSE']._serialized_end=2766 + _globals['_SETLOCALNAMECALLBACK']._serialized_start=2768 + _globals['_SETLOCALNAMECALLBACK']._serialized_end=2838 + _globals['_SETSUBSCRIBEDREQUEST']._serialized_start=2840 + _globals['_SETSUBSCRIBEDREQUEST']._serialized_end=2909 + _globals['_SETSUBSCRIBEDRESPONSE']._serialized_start=2911 + _globals['_SETSUBSCRIBEDRESPONSE']._serialized_end=2934 + _globals['_GETSESSIONSTATSREQUEST']._serialized_start=2936 + _globals['_GETSESSIONSTATSREQUEST']._serialized_end=2981 + _globals['_GETSESSIONSTATSRESPONSE']._serialized_start=2983 + _globals['_GETSESSIONSTATSRESPONSE']._serialized_end=3026 + _globals['_GETSESSIONSTATSCALLBACK']._serialized_start=3029 + _globals['_GETSESSIONSTATSCALLBACK']._serialized_end=3203 + _globals['_VIDEOENCODING']._serialized_start=3205 + _globals['_VIDEOENCODING']._serialized_end=3264 + _globals['_AUDIOENCODING']._serialized_start=3266 + _globals['_AUDIOENCODING']._serialized_end=3302 + _globals['_TRACKPUBLISHOPTIONS']._serialized_start=3305 + _globals['_TRACKPUBLISHOPTIONS']._serialized_end=3571 + _globals['_ICESERVER']._serialized_start=3573 + _globals['_ICESERVER']._serialized_end=3634 + _globals['_RTCCONFIG']._serialized_start=3637 + _globals['_RTCCONFIG']._serialized_end=3897 + _globals['_ROOMOPTIONS']._serialized_start=3900 + _globals['_ROOMOPTIONS']._serialized_end=4124 + _globals['_TRANSCRIPTIONSEGMENT']._serialized_start=4126 + _globals['_TRANSCRIPTIONSEGMENT']._serialized_end=4245 + _globals['_BUFFERINFO']._serialized_start=4247 + _globals['_BUFFERINFO']._serialized_end=4295 + _globals['_OWNEDBUFFER']._serialized_start=4297 + _globals['_OWNEDBUFFER']._serialized_end=4398 + _globals['_ROOMEVENT']._serialized_start=4401 + _globals['_ROOMEVENT']._serialized_end=6155 + _globals['_ROOMINFO']._serialized_start=6157 + _globals['_ROOMINFO']._serialized_end=6225 + _globals['_OWNEDROOM']._serialized_start=6227 + _globals['_OWNEDROOM']._serialized_end=6324 + _globals['_PARTICIPANTCONNECTED']._serialized_start=6326 + _globals['_PARTICIPANTCONNECTED']._serialized_end=6395 + _globals['_PARTICIPANTDISCONNECTED']._serialized_start=6397 + _globals['_PARTICIPANTDISCONNECTED']._serialized_end=6452 + _globals['_LOCALTRACKPUBLISHED']._serialized_start=6454 + _globals['_LOCALTRACKPUBLISHED']._serialized_end=6494 + _globals['_LOCALTRACKUNPUBLISHED']._serialized_start=6496 + _globals['_LOCALTRACKUNPUBLISHED']._serialized_end=6544 + _globals['_TRACKPUBLISHED']._serialized_start=6546 + _globals['_TRACKPUBLISHED']._serialized_end=6651 + _globals['_TRACKUNPUBLISHED']._serialized_start=6653 + _globals['_TRACKUNPUBLISHED']._serialized_end=6726 + _globals['_TRACKSUBSCRIBED']._serialized_start=6728 + _globals['_TRACKSUBSCRIBED']._serialized_end=6817 + _globals['_TRACKUNSUBSCRIBED']._serialized_start=6819 + _globals['_TRACKUNSUBSCRIBED']._serialized_end=6887 + _globals['_TRACKSUBSCRIPTIONFAILED']._serialized_start=6889 + _globals['_TRACKSUBSCRIPTIONFAILED']._serialized_end=6978 + _globals['_TRACKMUTED']._serialized_start=6980 + _globals['_TRACKMUTED']._serialized_end=7041 + _globals['_TRACKUNMUTED']._serialized_start=7043 + _globals['_TRACKUNMUTED']._serialized_end=7106 + _globals['_E2EESTATECHANGED']._serialized_start=7108 + _globals['_E2EESTATECHANGED']._serialized_end=7203 + _globals['_ACTIVESPEAKERSCHANGED']._serialized_start=7205 + _globals['_ACTIVESPEAKERSCHANGED']._serialized_end=7260 + _globals['_ROOMMETADATACHANGED']._serialized_start=7262 + _globals['_ROOMMETADATACHANGED']._serialized_end=7301 + _globals['_ROOMSIDCHANGED']._serialized_start=7303 + _globals['_ROOMSIDCHANGED']._serialized_end=7332 + _globals['_PARTICIPANTMETADATACHANGED']._serialized_start=7334 + _globals['_PARTICIPANTMETADATACHANGED']._serialized_end=7410 + _globals['_PARTICIPANTATTRIBUTESCHANGED']._serialized_start=7413 + _globals['_PARTICIPANTATTRIBUTESCHANGED']._serialized_end=7759 + _globals['_PARTICIPANTATTRIBUTESCHANGED_ATTRIBUTESENTRY']._serialized_start=2478 + _globals['_PARTICIPANTATTRIBUTESCHANGED_ATTRIBUTESENTRY']._serialized_end=2527 + _globals['_PARTICIPANTATTRIBUTESCHANGED_CHANGEDATTRIBUTESENTRY']._serialized_start=7703 + _globals['_PARTICIPANTATTRIBUTESCHANGED_CHANGEDATTRIBUTESENTRY']._serialized_end=7759 + _globals['_PARTICIPANTNAMECHANGED']._serialized_start=7761 + _globals['_PARTICIPANTNAMECHANGED']._serialized_end=7829 + _globals['_CONNECTIONQUALITYCHANGED']._serialized_start=7831 + _globals['_CONNECTIONQUALITYCHANGED']._serialized_end=7938 + _globals['_USERPACKET']._serialized_start=7940 + _globals['_USERPACKET']._serialized_end=8024 + _globals['_SIPDTMF']._serialized_start=8026 + _globals['_SIPDTMF']._serialized_end=8079 + _globals['_DATAPACKETRECEIVED']._serialized_start=8082 + _globals['_DATAPACKETRECEIVED']._serialized_end=8273 + _globals['_TRANSCRIPTIONRECEIVED']._serialized_start=8276 + _globals['_TRANSCRIPTIONRECEIVED']._serialized_end=8452 + _globals['_CONNECTIONSTATECHANGED']._serialized_start=8454 + _globals['_CONNECTIONSTATECHANGED']._serialized_end=8525 + _globals['_CONNECTED']._serialized_start=8527 + _globals['_CONNECTED']._serialized_end=8538 + _globals['_DISCONNECTED']._serialized_start=8540 + _globals['_DISCONNECTED']._serialized_end=8554 + _globals['_RECONNECTING']._serialized_start=8556 + _globals['_RECONNECTING']._serialized_end=8570 + _globals['_RECONNECTED']._serialized_start=8572 + _globals['_RECONNECTED']._serialized_end=8585 + _globals['_ROOMEOS']._serialized_start=8587 + _globals['_ROOMEOS']._serialized_end=8596 # @@protoc_insertion_point(module_scope) diff --git a/livekit-rtc/livekit/rtc/_proto/room_pb2.pyi b/livekit-rtc/livekit/rtc/_proto/room_pb2.pyi index e2d2ca05..e00409da 100644 --- a/livekit-rtc/livekit/rtc/_proto/room_pb2.pyi +++ b/livekit-rtc/livekit/rtc/_proto/room_pb2.pyi @@ -395,29 +395,32 @@ class PublishDataRequest(google.protobuf.message.Message): LOCAL_PARTICIPANT_HANDLE_FIELD_NUMBER: builtins.int DATA_PTR_FIELD_NUMBER: builtins.int DATA_LEN_FIELD_NUMBER: builtins.int - KIND_FIELD_NUMBER: builtins.int + RELIABLE_FIELD_NUMBER: builtins.int DESTINATION_SIDS_FIELD_NUMBER: builtins.int TOPIC_FIELD_NUMBER: builtins.int + DESTINATION_IDENTITIES_FIELD_NUMBER: builtins.int local_participant_handle: builtins.int data_ptr: builtins.int data_len: builtins.int - kind: global___DataPacketKind.ValueType + reliable: builtins.bool @property - def destination_sids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """destination""" + def destination_sids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... topic: builtins.str + @property + def destination_identities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... def __init__( self, *, local_participant_handle: builtins.int = ..., data_ptr: builtins.int = ..., data_len: builtins.int = ..., - kind: global___DataPacketKind.ValueType = ..., + reliable: builtins.bool = ..., destination_sids: collections.abc.Iterable[builtins.str] | None = ..., topic: builtins.str | None = ..., + destination_identities: collections.abc.Iterable[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_len", b"data_len", "data_ptr", b"data_ptr", "destination_sids", b"destination_sids", "kind", b"kind", "local_participant_handle", b"local_participant_handle", "topic", b"topic"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["_topic", b"_topic", "data_len", b"data_len", "data_ptr", b"data_ptr", "destination_identities", b"destination_identities", "destination_sids", b"destination_sids", "local_participant_handle", b"local_participant_handle", "reliable", b"reliable", "topic", b"topic"]) -> None: ... def WhichOneof(self, oneof_group: typing_extensions.Literal["_topic", b"_topic"]) -> typing_extensions.Literal["topic"] | None: ... global___PublishDataRequest = PublishDataRequest @@ -467,13 +470,11 @@ class PublishTranscriptionRequest(google.protobuf.message.Message): PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int TRACK_ID_FIELD_NUMBER: builtins.int SEGMENTS_FIELD_NUMBER: builtins.int - LANGUAGE_FIELD_NUMBER: builtins.int local_participant_handle: builtins.int participant_identity: builtins.str track_id: builtins.str @property def segments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TranscriptionSegment]: ... - language: builtins.str def __init__( self, *, @@ -481,9 +482,8 @@ class PublishTranscriptionRequest(google.protobuf.message.Message): participant_identity: builtins.str = ..., track_id: builtins.str = ..., segments: collections.abc.Iterable[global___TranscriptionSegment] | None = ..., - language: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["language", b"language", "local_participant_handle", b"local_participant_handle", "participant_identity", b"participant_identity", "segments", b"segments", "track_id", b"track_id"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["local_participant_handle", b"local_participant_handle", "participant_identity", b"participant_identity", "segments", b"segments", "track_id", b"track_id"]) -> None: ... global___PublishTranscriptionRequest = PublishTranscriptionRequest @@ -523,7 +523,69 @@ class PublishTranscriptionCallback(google.protobuf.message.Message): global___PublishTranscriptionCallback = PublishTranscriptionCallback @typing_extensions.final -class UpdateLocalMetadataRequest(google.protobuf.message.Message): +class PublishSipDtmfRequest(google.protobuf.message.Message): + """Publish Sip DTMF messages to other participants""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LOCAL_PARTICIPANT_HANDLE_FIELD_NUMBER: builtins.int + CODE_FIELD_NUMBER: builtins.int + DIGIT_FIELD_NUMBER: builtins.int + DESTINATION_IDENTITIES_FIELD_NUMBER: builtins.int + local_participant_handle: builtins.int + code: builtins.int + digit: builtins.str + @property + def destination_identities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, + *, + local_participant_handle: builtins.int = ..., + code: builtins.int = ..., + digit: builtins.str = ..., + destination_identities: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["code", b"code", "destination_identities", b"destination_identities", "digit", b"digit", "local_participant_handle", b"local_participant_handle"]) -> None: ... + +global___PublishSipDtmfRequest = PublishSipDtmfRequest + +@typing_extensions.final +class PublishSipDtmfResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_ID_FIELD_NUMBER: builtins.int + async_id: builtins.int + def __init__( + self, + *, + async_id: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["async_id", b"async_id"]) -> None: ... + +global___PublishSipDtmfResponse = PublishSipDtmfResponse + +@typing_extensions.final +class PublishSipDtmfCallback(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_ID_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + async_id: builtins.int + error: builtins.str + def __init__( + self, + *, + async_id: builtins.int = ..., + error: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_error", b"_error", "error", b"error"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_error", b"_error", "async_id", b"async_id", "error", b"error"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["_error", b"_error"]) -> typing_extensions.Literal["error"] | None: ... + +global___PublishSipDtmfCallback = PublishSipDtmfCallback + +@typing_extensions.final +class SetLocalMetadataRequest(google.protobuf.message.Message): """Change the local participant's metadata""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -540,10 +602,10 @@ class UpdateLocalMetadataRequest(google.protobuf.message.Message): ) -> None: ... def ClearField(self, field_name: typing_extensions.Literal["local_participant_handle", b"local_participant_handle", "metadata", b"metadata"]) -> None: ... -global___UpdateLocalMetadataRequest = UpdateLocalMetadataRequest +global___SetLocalMetadataRequest = SetLocalMetadataRequest @typing_extensions.final -class UpdateLocalMetadataResponse(google.protobuf.message.Message): +class SetLocalMetadataResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor ASYNC_ID_FIELD_NUMBER: builtins.int @@ -555,10 +617,67 @@ class UpdateLocalMetadataResponse(google.protobuf.message.Message): ) -> None: ... def ClearField(self, field_name: typing_extensions.Literal["async_id", b"async_id"]) -> None: ... -global___UpdateLocalMetadataResponse = UpdateLocalMetadataResponse +global___SetLocalMetadataResponse = SetLocalMetadataResponse @typing_extensions.final -class UpdateLocalMetadataCallback(google.protobuf.message.Message): +class SetLocalMetadataCallback(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_ID_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + async_id: builtins.int + error: builtins.str + def __init__( + self, + *, + async_id: builtins.int = ..., + error: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_error", b"_error", "error", b"error"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_error", b"_error", "async_id", b"async_id", "error", b"error"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["_error", b"_error"]) -> typing_extensions.Literal["error"] | None: ... + +global___SetLocalMetadataCallback = SetLocalMetadataCallback + +@typing_extensions.final +class SetLocalAttributesRequest(google.protobuf.message.Message): + """Change the local participant's attributes""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing_extensions.final + class AttributesEntry(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: ... + + LOCAL_PARTICIPANT_HANDLE_FIELD_NUMBER: builtins.int + ATTRIBUTES_FIELD_NUMBER: builtins.int + local_participant_handle: builtins.int + @property + def attributes(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + local_participant_handle: builtins.int = ..., + attributes: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "local_participant_handle", b"local_participant_handle"]) -> None: ... + +global___SetLocalAttributesRequest = SetLocalAttributesRequest + +@typing_extensions.final +class SetLocalAttributesResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor ASYNC_ID_FIELD_NUMBER: builtins.int @@ -570,10 +689,30 @@ class UpdateLocalMetadataCallback(google.protobuf.message.Message): ) -> None: ... def ClearField(self, field_name: typing_extensions.Literal["async_id", b"async_id"]) -> None: ... -global___UpdateLocalMetadataCallback = UpdateLocalMetadataCallback +global___SetLocalAttributesResponse = SetLocalAttributesResponse + +@typing_extensions.final +class SetLocalAttributesCallback(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_ID_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + async_id: builtins.int + error: builtins.str + def __init__( + self, + *, + async_id: builtins.int = ..., + error: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_error", b"_error", "error", b"error"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_error", b"_error", "async_id", b"async_id", "error", b"error"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["_error", b"_error"]) -> typing_extensions.Literal["error"] | None: ... + +global___SetLocalAttributesCallback = SetLocalAttributesCallback @typing_extensions.final -class UpdateLocalNameRequest(google.protobuf.message.Message): +class SetLocalNameRequest(google.protobuf.message.Message): """Change the local participant's name""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -590,10 +729,10 @@ class UpdateLocalNameRequest(google.protobuf.message.Message): ) -> None: ... def ClearField(self, field_name: typing_extensions.Literal["local_participant_handle", b"local_participant_handle", "name", b"name"]) -> None: ... -global___UpdateLocalNameRequest = UpdateLocalNameRequest +global___SetLocalNameRequest = SetLocalNameRequest @typing_extensions.final -class UpdateLocalNameResponse(google.protobuf.message.Message): +class SetLocalNameResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor ASYNC_ID_FIELD_NUMBER: builtins.int @@ -605,22 +744,27 @@ class UpdateLocalNameResponse(google.protobuf.message.Message): ) -> None: ... def ClearField(self, field_name: typing_extensions.Literal["async_id", b"async_id"]) -> None: ... -global___UpdateLocalNameResponse = UpdateLocalNameResponse +global___SetLocalNameResponse = SetLocalNameResponse @typing_extensions.final -class UpdateLocalNameCallback(google.protobuf.message.Message): +class SetLocalNameCallback(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor ASYNC_ID_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int async_id: builtins.int + error: builtins.str def __init__( self, *, async_id: builtins.int = ..., + error: builtins.str | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["async_id", b"async_id"]) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_error", b"_error", "error", b"error"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_error", b"_error", "async_id", b"async_id", "error", b"error"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["_error", b"_error"]) -> typing_extensions.Literal["error"] | None: ... -global___UpdateLocalNameCallback = UpdateLocalNameCallback +global___SetLocalNameCallback = SetLocalNameCallback @typing_extensions.final class SetSubscribedRequest(google.protobuf.message.Message): @@ -881,11 +1025,13 @@ class TranscriptionSegment(google.protobuf.message.Message): START_TIME_FIELD_NUMBER: builtins.int END_TIME_FIELD_NUMBER: builtins.int FINAL_FIELD_NUMBER: builtins.int + LANGUAGE_FIELD_NUMBER: builtins.int id: builtins.str text: builtins.str start_time: builtins.int end_time: builtins.int final: builtins.bool + language: builtins.str def __init__( self, *, @@ -894,8 +1040,9 @@ class TranscriptionSegment(google.protobuf.message.Message): start_time: builtins.int = ..., end_time: builtins.int = ..., final: builtins.bool = ..., + language: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["end_time", b"end_time", "final", b"final", "id", b"id", "start_time", b"start_time", "text", b"text"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["end_time", b"end_time", "final", b"final", "id", b"id", "language", b"language", "start_time", b"start_time", "text", b"text"]) -> None: ... global___TranscriptionSegment = TranscriptionSegment @@ -956,8 +1103,10 @@ class RoomEvent(google.protobuf.message.Message): TRACK_UNMUTED_FIELD_NUMBER: builtins.int ACTIVE_SPEAKERS_CHANGED_FIELD_NUMBER: builtins.int ROOM_METADATA_CHANGED_FIELD_NUMBER: builtins.int + ROOM_SID_CHANGED_FIELD_NUMBER: builtins.int PARTICIPANT_METADATA_CHANGED_FIELD_NUMBER: builtins.int PARTICIPANT_NAME_CHANGED_FIELD_NUMBER: builtins.int + PARTICIPANT_ATTRIBUTES_CHANGED_FIELD_NUMBER: builtins.int CONNECTION_QUALITY_CHANGED_FIELD_NUMBER: builtins.int CONNECTION_STATE_CHANGED_FIELD_NUMBER: builtins.int DISCONNECTED_FIELD_NUMBER: builtins.int @@ -966,6 +1115,7 @@ class RoomEvent(google.protobuf.message.Message): E2EE_STATE_CHANGED_FIELD_NUMBER: builtins.int EOS_FIELD_NUMBER: builtins.int DATA_PACKET_RECEIVED_FIELD_NUMBER: builtins.int + TRANSCRIPTION_RECEIVED_FIELD_NUMBER: builtins.int room_handle: builtins.int @property def participant_connected(self) -> global___ParticipantConnected: ... @@ -994,16 +1144,20 @@ class RoomEvent(google.protobuf.message.Message): @property def room_metadata_changed(self) -> global___RoomMetadataChanged: ... @property + def room_sid_changed(self) -> global___RoomSidChanged: ... + @property def participant_metadata_changed(self) -> global___ParticipantMetadataChanged: ... @property def participant_name_changed(self) -> global___ParticipantNameChanged: ... @property + def participant_attributes_changed(self) -> global___ParticipantAttributesChanged: ... + @property def connection_quality_changed(self) -> global___ConnectionQualityChanged: ... @property def connection_state_changed(self) -> global___ConnectionStateChanged: ... @property def disconnected(self) -> global___Disconnected: - """Connected connected = 20;""" + """Connected connected = 21;""" @property def reconnecting(self) -> global___Reconnecting: ... @property @@ -1015,6 +1169,8 @@ class RoomEvent(google.protobuf.message.Message): """The stream of room events has ended""" @property def data_packet_received(self) -> global___DataPacketReceived: ... + @property + def transcription_received(self) -> global___TranscriptionReceived: ... def __init__( self, *, @@ -1032,8 +1188,10 @@ class RoomEvent(google.protobuf.message.Message): track_unmuted: global___TrackUnmuted | None = ..., active_speakers_changed: global___ActiveSpeakersChanged | None = ..., room_metadata_changed: global___RoomMetadataChanged | None = ..., + room_sid_changed: global___RoomSidChanged | None = ..., participant_metadata_changed: global___ParticipantMetadataChanged | None = ..., participant_name_changed: global___ParticipantNameChanged | None = ..., + participant_attributes_changed: global___ParticipantAttributesChanged | None = ..., connection_quality_changed: global___ConnectionQualityChanged | None = ..., connection_state_changed: global___ConnectionStateChanged | None = ..., disconnected: global___Disconnected | None = ..., @@ -1042,10 +1200,11 @@ class RoomEvent(google.protobuf.message.Message): e2ee_state_changed: global___E2eeStateChanged | None = ..., eos: global___RoomEOS | None = ..., data_packet_received: global___DataPacketReceived | None = ..., + transcription_received: global___TranscriptionReceived | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["active_speakers_changed", b"active_speakers_changed", "connection_quality_changed", b"connection_quality_changed", "connection_state_changed", b"connection_state_changed", "data_packet_received", b"data_packet_received", "disconnected", b"disconnected", "e2ee_state_changed", b"e2ee_state_changed", "eos", b"eos", "local_track_published", b"local_track_published", "local_track_unpublished", b"local_track_unpublished", "message", b"message", "participant_connected", b"participant_connected", "participant_disconnected", b"participant_disconnected", "participant_metadata_changed", b"participant_metadata_changed", "participant_name_changed", b"participant_name_changed", "reconnected", b"reconnected", "reconnecting", b"reconnecting", "room_metadata_changed", b"room_metadata_changed", "track_muted", b"track_muted", "track_published", b"track_published", "track_subscribed", b"track_subscribed", "track_subscription_failed", b"track_subscription_failed", "track_unmuted", b"track_unmuted", "track_unpublished", b"track_unpublished", "track_unsubscribed", b"track_unsubscribed"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["active_speakers_changed", b"active_speakers_changed", "connection_quality_changed", b"connection_quality_changed", "connection_state_changed", b"connection_state_changed", "data_packet_received", b"data_packet_received", "disconnected", b"disconnected", "e2ee_state_changed", b"e2ee_state_changed", "eos", b"eos", "local_track_published", b"local_track_published", "local_track_unpublished", b"local_track_unpublished", "message", b"message", "participant_connected", b"participant_connected", "participant_disconnected", b"participant_disconnected", "participant_metadata_changed", b"participant_metadata_changed", "participant_name_changed", b"participant_name_changed", "reconnected", b"reconnected", "reconnecting", b"reconnecting", "room_handle", b"room_handle", "room_metadata_changed", b"room_metadata_changed", "track_muted", b"track_muted", "track_published", b"track_published", "track_subscribed", b"track_subscribed", "track_subscription_failed", b"track_subscription_failed", "track_unmuted", b"track_unmuted", "track_unpublished", b"track_unpublished", "track_unsubscribed", b"track_unsubscribed"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["participant_connected", "participant_disconnected", "local_track_published", "local_track_unpublished", "track_published", "track_unpublished", "track_subscribed", "track_unsubscribed", "track_subscription_failed", "track_muted", "track_unmuted", "active_speakers_changed", "room_metadata_changed", "participant_metadata_changed", "participant_name_changed", "connection_quality_changed", "connection_state_changed", "disconnected", "reconnecting", "reconnected", "e2ee_state_changed", "eos", "data_packet_received"] | None: ... + def HasField(self, field_name: typing_extensions.Literal["active_speakers_changed", b"active_speakers_changed", "connection_quality_changed", b"connection_quality_changed", "connection_state_changed", b"connection_state_changed", "data_packet_received", b"data_packet_received", "disconnected", b"disconnected", "e2ee_state_changed", b"e2ee_state_changed", "eos", b"eos", "local_track_published", b"local_track_published", "local_track_unpublished", b"local_track_unpublished", "message", b"message", "participant_attributes_changed", b"participant_attributes_changed", "participant_connected", b"participant_connected", "participant_disconnected", b"participant_disconnected", "participant_metadata_changed", b"participant_metadata_changed", "participant_name_changed", b"participant_name_changed", "reconnected", b"reconnected", "reconnecting", b"reconnecting", "room_metadata_changed", b"room_metadata_changed", "room_sid_changed", b"room_sid_changed", "track_muted", b"track_muted", "track_published", b"track_published", "track_subscribed", b"track_subscribed", "track_subscription_failed", b"track_subscription_failed", "track_unmuted", b"track_unmuted", "track_unpublished", b"track_unpublished", "track_unsubscribed", b"track_unsubscribed", "transcription_received", b"transcription_received"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["active_speakers_changed", b"active_speakers_changed", "connection_quality_changed", b"connection_quality_changed", "connection_state_changed", b"connection_state_changed", "data_packet_received", b"data_packet_received", "disconnected", b"disconnected", "e2ee_state_changed", b"e2ee_state_changed", "eos", b"eos", "local_track_published", b"local_track_published", "local_track_unpublished", b"local_track_unpublished", "message", b"message", "participant_attributes_changed", b"participant_attributes_changed", "participant_connected", b"participant_connected", "participant_disconnected", b"participant_disconnected", "participant_metadata_changed", b"participant_metadata_changed", "participant_name_changed", b"participant_name_changed", "reconnected", b"reconnected", "reconnecting", b"reconnecting", "room_handle", b"room_handle", "room_metadata_changed", b"room_metadata_changed", "room_sid_changed", b"room_sid_changed", "track_muted", b"track_muted", "track_published", b"track_published", "track_subscribed", b"track_subscribed", "track_subscription_failed", b"track_subscription_failed", "track_unmuted", b"track_unmuted", "track_unpublished", b"track_unpublished", "track_unsubscribed", b"track_unsubscribed", "transcription_received", b"transcription_received"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["participant_connected", "participant_disconnected", "local_track_published", "local_track_unpublished", "track_published", "track_unpublished", "track_subscribed", "track_unsubscribed", "track_subscription_failed", "track_muted", "track_unmuted", "active_speakers_changed", "room_metadata_changed", "room_sid_changed", "participant_metadata_changed", "participant_name_changed", "participant_attributes_changed", "connection_quality_changed", "connection_state_changed", "disconnected", "reconnecting", "reconnected", "e2ee_state_changed", "eos", "data_packet_received", "transcription_received"] | None: ... global___RoomEvent = RoomEvent @@ -1062,11 +1221,13 @@ class RoomInfo(google.protobuf.message.Message): def __init__( self, *, - sid: builtins.str = ..., + sid: builtins.str | None = ..., name: builtins.str = ..., metadata: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "name", b"name", "sid", b"sid"]) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_sid", b"_sid", "sid", b"sid"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_sid", b"_sid", "metadata", b"metadata", "name", b"name", "sid", b"sid"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["_sid", b"_sid"]) -> typing_extensions.Literal["sid"] | None: ... global___RoomInfo = RoomInfo @@ -1112,14 +1273,14 @@ global___ParticipantConnected = ParticipantConnected class ParticipantDisconnected(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int + participant_identity: builtins.str def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identity", b"participant_identity"]) -> None: ... global___ParticipantDisconnected = ParticipantDisconnected @@ -1160,19 +1321,19 @@ global___LocalTrackUnpublished = LocalTrackUnpublished class TrackPublished(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int PUBLICATION_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str @property def publication(self) -> track_pb2.OwnedTrackPublication: ... def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., publication: track_pb2.OwnedTrackPublication | None = ..., ) -> None: ... def HasField(self, field_name: typing_extensions.Literal["publication", b"publication"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid", "publication", b"publication"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identity", b"participant_identity", "publication", b"publication"]) -> None: ... global___TrackPublished = TrackPublished @@ -1180,17 +1341,17 @@ global___TrackPublished = TrackPublished class TrackUnpublished(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int PUBLICATION_SID_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str publication_sid: builtins.str def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., publication_sid: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid", "publication_sid", b"publication_sid"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identity", b"participant_identity", "publication_sid", b"publication_sid"]) -> None: ... global___TrackUnpublished = TrackUnpublished @@ -1202,19 +1363,19 @@ class TrackSubscribed(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int TRACK_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str @property def track(self) -> track_pb2.OwnedTrack: ... def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., track: track_pb2.OwnedTrack | None = ..., ) -> None: ... def HasField(self, field_name: typing_extensions.Literal["track", b"track"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid", "track", b"track"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identity", b"participant_identity", "track", b"track"]) -> None: ... global___TrackSubscribed = TrackSubscribed @@ -1222,18 +1383,18 @@ global___TrackSubscribed = TrackSubscribed class TrackUnsubscribed(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int TRACK_SID_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str """The FFI language can dispose/remove the VideoSink here""" track_sid: builtins.str def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., track_sid: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid", "track_sid", b"track_sid"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identity", b"participant_identity", "track_sid", b"track_sid"]) -> None: ... global___TrackUnsubscribed = TrackUnsubscribed @@ -1241,20 +1402,20 @@ global___TrackUnsubscribed = TrackUnsubscribed class TrackSubscriptionFailed(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int TRACK_SID_FIELD_NUMBER: builtins.int ERROR_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str track_sid: builtins.str error: builtins.str def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., track_sid: builtins.str = ..., error: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["error", b"error", "participant_sid", b"participant_sid", "track_sid", b"track_sid"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["error", b"error", "participant_identity", b"participant_identity", "track_sid", b"track_sid"]) -> None: ... global___TrackSubscriptionFailed = TrackSubscriptionFailed @@ -1262,17 +1423,17 @@ global___TrackSubscriptionFailed = TrackSubscriptionFailed class TrackMuted(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int TRACK_SID_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str track_sid: builtins.str def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., track_sid: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid", "track_sid", b"track_sid"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identity", b"participant_identity", "track_sid", b"track_sid"]) -> None: ... global___TrackMuted = TrackMuted @@ -1280,17 +1441,17 @@ global___TrackMuted = TrackMuted class TrackUnmuted(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int TRACK_SID_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str track_sid: builtins.str def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., track_sid: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid", "track_sid", b"track_sid"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identity", b"participant_identity", "track_sid", b"track_sid"]) -> None: ... global___TrackUnmuted = TrackUnmuted @@ -1298,18 +1459,18 @@ global___TrackUnmuted = TrackUnmuted class E2eeStateChanged(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int STATE_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str """Using sid instead of identity for ffi communication""" state: e2ee_pb2.EncryptionState.ValueType def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., state: e2ee_pb2.EncryptionState.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid", "state", b"state"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identity", b"participant_identity", "state", b"state"]) -> None: ... global___E2eeStateChanged = E2eeStateChanged @@ -1317,15 +1478,15 @@ global___E2eeStateChanged = E2eeStateChanged class ActiveSpeakersChanged(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SIDS_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITIES_FIELD_NUMBER: builtins.int @property - def participant_sids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def participant_identities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... def __init__( self, *, - participant_sids: collections.abc.Iterable[builtins.str] | None = ..., + participant_identities: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sids", b"participant_sids"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identities", b"participant_identities"]) -> None: ... global___ActiveSpeakersChanged = ActiveSpeakersChanged @@ -1344,39 +1505,109 @@ class RoomMetadataChanged(google.protobuf.message.Message): global___RoomMetadataChanged = RoomMetadataChanged +@typing_extensions.final +class RoomSidChanged(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SID_FIELD_NUMBER: builtins.int + sid: builtins.str + def __init__( + self, + *, + sid: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["sid", b"sid"]) -> None: ... + +global___RoomSidChanged = RoomSidChanged + @typing_extensions.final class ParticipantMetadataChanged(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int METADATA_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str metadata: builtins.str def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., metadata: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "participant_sid", b"participant_sid"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "participant_identity", b"participant_identity"]) -> None: ... global___ParticipantMetadataChanged = ParticipantMetadataChanged +@typing_extensions.final +class ParticipantAttributesChanged(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing_extensions.final + class AttributesEntry(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: ... + + @typing_extensions.final + class ChangedAttributesEntry(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: ... + + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int + ATTRIBUTES_FIELD_NUMBER: builtins.int + CHANGED_ATTRIBUTES_FIELD_NUMBER: builtins.int + participant_identity: builtins.str + @property + def attributes(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + @property + def changed_attributes(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + participant_identity: builtins.str = ..., + attributes: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + changed_attributes: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "changed_attributes", b"changed_attributes", "participant_identity", b"participant_identity"]) -> None: ... + +global___ParticipantAttributesChanged = ParticipantAttributesChanged + @typing_extensions.final class ParticipantNameChanged(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int NAME_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str name: builtins.str def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "participant_sid", b"participant_sid"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "participant_identity", b"participant_identity"]) -> None: ... global___ParticipantNameChanged = ParticipantNameChanged @@ -1384,17 +1615,17 @@ global___ParticipantNameChanged = ParticipantNameChanged class ConnectionQualityChanged(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - PARTICIPANT_SID_FIELD_NUMBER: builtins.int + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int QUALITY_FIELD_NUMBER: builtins.int - participant_sid: builtins.str + participant_identity: builtins.str quality: global___ConnectionQuality.ValueType def __init__( self, *, - participant_sid: builtins.str = ..., + participant_identity: builtins.str = ..., quality: global___ConnectionQuality.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["participant_sid", b"participant_sid", "quality", b"quality"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["participant_identity", b"participant_identity", "quality", b"quality"]) -> None: ... global___ConnectionQualityChanged = ConnectionQualityChanged @@ -1445,14 +1676,11 @@ class DataPacketReceived(google.protobuf.message.Message): KIND_FIELD_NUMBER: builtins.int PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int - PARTICIPANT_SID_FIELD_NUMBER: builtins.int USER_FIELD_NUMBER: builtins.int SIP_DTMF_FIELD_NUMBER: builtins.int kind: global___DataPacketKind.ValueType participant_identity: builtins.str """Can be empty if the data is sent a server SDK""" - participant_sid: builtins.str - """Can be empty if the data is sent a server SDK""" @property def user(self) -> global___UserPacket: ... @property @@ -1462,19 +1690,42 @@ class DataPacketReceived(google.protobuf.message.Message): *, kind: global___DataPacketKind.ValueType = ..., participant_identity: builtins.str = ..., - participant_sid: builtins.str | None = ..., user: global___UserPacket | None = ..., sip_dtmf: global___SipDTMF | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_participant_sid", b"_participant_sid", "participant_sid", b"participant_sid", "sip_dtmf", b"sip_dtmf", "user", b"user", "value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_participant_sid", b"_participant_sid", "kind", b"kind", "participant_identity", b"participant_identity", "participant_sid", b"participant_sid", "sip_dtmf", b"sip_dtmf", "user", b"user", "value", b"value"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_participant_sid", b"_participant_sid"]) -> typing_extensions.Literal["participant_sid"] | None: ... - @typing.overload + def HasField(self, field_name: typing_extensions.Literal["sip_dtmf", b"sip_dtmf", "user", b"user", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["kind", b"kind", "participant_identity", b"participant_identity", "sip_dtmf", b"sip_dtmf", "user", b"user", "value", b"value"]) -> None: ... def WhichOneof(self, oneof_group: typing_extensions.Literal["value", b"value"]) -> typing_extensions.Literal["user", "sip_dtmf"] | None: ... global___DataPacketReceived = DataPacketReceived +@typing_extensions.final +class TranscriptionReceived(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PARTICIPANT_IDENTITY_FIELD_NUMBER: builtins.int + TRACK_SID_FIELD_NUMBER: builtins.int + SEGMENTS_FIELD_NUMBER: builtins.int + participant_identity: builtins.str + track_sid: builtins.str + @property + def segments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TranscriptionSegment]: ... + def __init__( + self, + *, + participant_identity: builtins.str | None = ..., + track_sid: builtins.str | None = ..., + segments: collections.abc.Iterable[global___TranscriptionSegment] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_participant_identity", b"_participant_identity", "_track_sid", b"_track_sid", "participant_identity", b"participant_identity", "track_sid", b"track_sid"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_participant_identity", b"_participant_identity", "_track_sid", b"_track_sid", "participant_identity", b"participant_identity", "segments", b"segments", "track_sid", b"track_sid"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_participant_identity", b"_participant_identity"]) -> typing_extensions.Literal["participant_identity"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_track_sid", b"_track_sid"]) -> typing_extensions.Literal["track_sid"] | None: ... + +global___TranscriptionReceived = TranscriptionReceived + @typing_extensions.final class ConnectionStateChanged(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor diff --git a/livekit-rtc/livekit/rtc/chat.py b/livekit-rtc/livekit/rtc/chat.py index d81cc78a..032fdd2a 100644 --- a/livekit-rtc/livekit/rtc/chat.py +++ b/livekit-rtc/livekit/rtc/chat.py @@ -20,7 +20,6 @@ from .room import Room, Participant, DataPacket from ._event_emitter import EventEmitter -from ._proto.room_pb2 import DataPacketKind from ._utils import generate_random_base62 _CHAT_TOPIC = "lk-chat-topic" @@ -61,7 +60,6 @@ async def send_message(self, message: str) -> "ChatMessage": ) await self._lp.publish_data( payload=json.dumps(msg.asjsondict()), - kind=DataPacketKind.KIND_RELIABLE, topic=_CHAT_TOPIC, ) return msg @@ -74,7 +72,6 @@ async def update_message(self, message: "ChatMessage"): """ await self._lp.publish_data( payload=json.dumps(message.asjsondict()), - kind=DataPacketKind.KIND_RELIABLE, topic=_CHAT_UPDATE_TOPIC, ) diff --git a/livekit-rtc/livekit/rtc/participant.py b/livekit-rtc/livekit/rtc/participant.py index 7d7351f9..beeeb2fa 100644 --- a/livekit-rtc/livekit/rtc/participant.py +++ b/livekit-rtc/livekit/rtc/participant.py @@ -21,7 +21,6 @@ from ._proto import ffi_pb2 as proto_ffi from ._proto import participant_pb2 as proto_participant from ._proto.room_pb2 import ( - DataPacketKind, TrackPublishOptions, ) from ._proto.room_pb2 import ( @@ -61,7 +60,7 @@ class Participant: def __init__(self, owned_info: proto_participant.OwnedParticipant) -> None: self._info = owned_info.info self._ffi_handle = FfiHandle(owned_info.handle.id) - self.tracks: dict[str, TrackPublication] = {} + self.track_publications: dict[str, TrackPublication] = {} @property def sid(self) -> str: @@ -79,6 +78,10 @@ def identity(self) -> str: def metadata(self) -> str: return self._info.metadata + @property + def attributes(self) -> dict[str, str]: + return dict(self._info.attributes) + class LocalParticipant(Participant): def __init__( @@ -88,13 +91,14 @@ def __init__( ) -> None: super().__init__(owned_info) self._room_queue = room_queue - self.tracks: dict[str, LocalTrackPublication] = {} # type: ignore + self.track_publications: dict[str, LocalTrackPublication] = {} # type: ignore async def publish_data( self, payload: Union[bytes, str], - kind: DataPacketKind.ValueType = DataPacketKind.KIND_RELIABLE, - destination_sids: List[Union[str, "RemoteParticipant"]] = [], + *, + reliable: bool = True, + destination_identities: List[str] = [], topic: str = "", ) -> None: if isinstance(payload, str): @@ -107,17 +111,9 @@ async def publish_data( req.publish_data.local_participant_handle = self._ffi_handle.handle req.publish_data.data_ptr = ctypes.addressof(cdata) req.publish_data.data_len = data_len - req.publish_data.kind = kind + req.publish_data.reliable = reliable req.publish_data.topic = topic - - sids = [] - for p in destination_sids: - if isinstance(p, RemoteParticipant): - sids.append(p.sid) - else: - sids.append(p) - - req.publish_data.destination_sids.extend(sids) + req.publish_data.destination_identities.extend(destination_identities) queue = FfiClient.instance.queue.subscribe() try: @@ -140,6 +136,7 @@ async def publish_transcription(self, transcription: Transcription) -> None: start_time=s.start_time, end_time=s.end_time, final=s.final, + language=s.language, ) for s in transcription.segments ] @@ -147,8 +144,7 @@ async def publish_transcription(self, transcription: Transcription) -> None: req.publish_transcription.local_participant_handle = self._ffi_handle.handle req.publish_transcription.participant_identity = transcription.participant_identity req.publish_transcription.segments.extend(proto_segments) - req.publish_transcription.track_id = transcription.track_id - req.publish_transcription.language = transcription.language + req.publish_transcription.track_id = transcription.track_sid # fmt: on queue = FfiClient.instance.queue.subscribe() try: @@ -163,10 +159,10 @@ async def publish_transcription(self, transcription: Transcription) -> None: if cb.publish_transcription.error: raise PublishTranscriptionError(cb.publish_transcription.error) - async def update_metadata(self, metadata: str) -> None: + async def set_metadata(self, metadata: str) -> None: req = proto_ffi.FfiRequest() - req.update_local_metadata.local_participant_handle = self._ffi_handle.handle - req.update_local_metadata.metadata = metadata + req.set_local_metadata.local_participant_handle = self._ffi_handle.handle + req.set_local_metadata.metadata = metadata queue = FfiClient.instance.queue.subscribe() try: @@ -178,10 +174,10 @@ async def update_metadata(self, metadata: str) -> None: finally: FfiClient.instance.queue.unsubscribe(queue) - async def update_name(self, name: str) -> None: + async def set_name(self, name: str) -> None: req = proto_ffi.FfiRequest() - req.update_local_name.local_participant_handle = self._ffi_handle.handle - req.update_local_name.name = name + req.set_local_name.local_participant_handle = self._ffi_handle.handle + req.set_local_name.name = name queue = FfiClient.instance.queue.subscribe() try: @@ -193,6 +189,21 @@ async def update_name(self, name: str) -> None: finally: FfiClient.instance.queue.unsubscribe(queue) + async def set_attributes(self, attributes: dict[str, str]) -> None: + req = proto_ffi.FfiRequest() + req.set_local_attributes.local_participant_handle = self._ffi_handle.handle + req.set_local_attributes.attributes.update(attributes) + + queue = FfiClient.instance.queue.subscribe() + try: + resp = FfiClient.instance.request(req) + await queue.wait_for( + lambda e: e.set_local_attributes.async_id + == resp.set_local_attributes.async_id + ) + finally: + FfiClient.instance.queue.unsubscribe(queue) + async def publish_track( self, track: LocalTrack, options: TrackPublishOptions = TrackPublishOptions() ) -> LocalTrackPublication: @@ -214,7 +225,7 @@ async def publish_track( track_publication = LocalTrackPublication(cb.publish_track.publication) track_publication.track = track track._info.sid = track_publication.sid - self.tracks[track_publication.sid] = track_publication + self.track_publications[track_publication.sid] = track_publication queue.task_done() return track_publication @@ -236,7 +247,7 @@ async def unpublish_track(self, track_sid: str) -> None: if cb.unpublish_track.error: raise UnpublishTrackError(cb.unpublish_track.error) - publication = self.tracks.pop(track_sid) + publication = self.track_publications.pop(track_sid) publication.track = None queue.task_done() finally: @@ -246,4 +257,4 @@ async def unpublish_track(self, track_sid: str) -> None: class RemoteParticipant(Participant): def __init__(self, owned_info: proto_participant.OwnedParticipant) -> None: super().__init__(owned_info) - self.tracks: dict[str, RemoteTrackPublication] = {} # type: ignore + self.track_publications: dict[str, RemoteTrackPublication] = {} # type: ignore diff --git a/livekit-rtc/livekit/rtc/room.py b/livekit-rtc/livekit/rtc/room.py index 1ad57c38..0254edcc 100644 --- a/livekit-rtc/livekit/rtc/room.py +++ b/livekit-rtc/livekit/rtc/room.py @@ -11,6 +11,7 @@ # 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. +from __future__ import annotations import asyncio import ctypes @@ -29,7 +30,8 @@ from .e2ee import E2EEManager, E2EEOptions from .participant import LocalParticipant, Participant, RemoteParticipant from .track import RemoteAudioTrack, RemoteVideoTrack -from .track_publication import RemoteTrackPublication +from .track_publication import TrackPublication, RemoteTrackPublication +from .transcription import TranscriptionSegment EventTypes = Literal[ "participant_connected", @@ -47,9 +49,11 @@ "room_metadata_changed", "participant_metadata_changed", "participant_name_changed", + "participant_attributes_changed", "connection_quality_changed", "data_received", "sip_dtmf_received", + "transcription_received", "e2ee_state_changed", "connection_state_changed", "connected", @@ -111,17 +115,20 @@ def __init__(self, loop: Optional[asyncio.AbstractEventLoop] = None) -> None: self._room_queue = BroadcastQueue[proto_ffi.FfiEvent]() self._info = proto_room.RoomInfo() - self.participants: Dict[str, RemoteParticipant] = {} - self.participants_by_identity: Dict[str, RemoteParticipant] = {} + self.remote_participants: Dict[str, RemoteParticipant] = {} self.connection_state = ConnectionState.CONN_DISCONNECTED + self._first_sid_future = asyncio.Future[str]() def __del__(self) -> None: if self._ffi_handle is not None: FfiClient.instance.queue.unsubscribe(self._ffi_queue) @property - def sid(self) -> str: - return self._info.sid + async def sid(self) -> str: + if self._info.sid: + return self._info.sid + + return await self._first_sid_future @property def name(self) -> str: @@ -211,7 +218,7 @@ async def connect( # add the initial remote participant tracks for owned_publication_info in pt.publications: publication = RemoteTrackPublication(owned_publication_info) - rp.tracks[publication.sid] = publication + rp.track_publications[publication.sid] = publication # start listening to room events self._task = self._loop.create_task(self._listen_task()) @@ -265,35 +272,40 @@ def _on_room_event(self, event: proto_room.RoomEvent): ) self.emit("participant_connected", rparticipant) elif which == "participant_disconnected": - sid = event.participant_disconnected.participant_sid - rparticipant = self.participants.pop(sid) - self.participants_by_identity.pop(rparticipant.identity) + identity = event.participant_disconnected.participant_identity + rparticipant = self.remote_participants.pop(identity) self.emit("participant_disconnected", rparticipant) elif which == "local_track_published": sid = event.local_track_published.track_sid - lpublication = self.local_participant.tracks[sid] + lpublication = self.local_participant.track_publications[sid] track = lpublication.track self.emit("local_track_published", lpublication, track) elif which == "local_track_unpublished": sid = event.local_track_unpublished.publication_sid - lpublication = self.local_participant.tracks[sid] + lpublication = self.local_participant.track_publications[sid] self.emit("local_track_unpublished", lpublication) elif which == "track_published": - rparticipant = self.participants[event.track_published.participant_sid] + rparticipant = self.remote_participants[ + event.track_published.participant_identity + ] rpublication = RemoteTrackPublication(event.track_published.publication) - rparticipant.tracks[rpublication.sid] = rpublication + rparticipant.track_publications[rpublication.sid] = rpublication self.emit("track_published", rpublication, rparticipant) elif which == "track_unpublished": - rparticipant = self.participants[event.track_unpublished.participant_sid] - rpublication = rparticipant.tracks.pop( + rparticipant = self.remote_participants[ + event.track_unpublished.participant_identity + ] + rpublication = rparticipant.track_publications.pop( event.track_unpublished.publication_sid ) self.emit("track_unpublished", rpublication, rparticipant) elif which == "track_subscribed": owned_track_info = event.track_subscribed.track track_info = owned_track_info.info - rparticipant = self.participants[event.track_subscribed.participant_sid] - rpublication = rparticipant.tracks[track_info.sid] + rparticipant = self.remote_participants[ + event.track_subscribed.participant_identity + ] + rpublication = rparticipant.track_publications[track_info.sid] rpublication.subscribed = True if track_info.kind == TrackKind.KIND_VIDEO: remote_video_track = RemoteVideoTrack(owned_track_info) @@ -308,16 +320,18 @@ def _on_room_event(self, event: proto_room.RoomEvent): "track_subscribed", remote_audio_track, rpublication, rparticipant ) elif which == "track_unsubscribed": - sid = event.track_unsubscribed.participant_sid - rparticipant = self.participants[sid] - rpublication = rparticipant.tracks[event.track_unsubscribed.track_sid] + identity = event.track_unsubscribed.participant_identity + rparticipant = self.remote_participants[identity] + rpublication = rparticipant.track_publications[ + event.track_unsubscribed.track_sid + ] track = rpublication.track rpublication.track = None rpublication.subscribed = False self.emit("track_unsubscribed", track, rpublication, rparticipant) elif which == "track_subscription_failed": - sid = event.track_subscription_failed.participant_sid - rparticipant = self.participants[sid] + identity = event.track_subscription_failed.participant_identity + rparticipant = self.remote_participants[identity] error = event.track_subscription_failed.error self.emit( "track_subscription_failed", @@ -326,22 +340,22 @@ def _on_room_event(self, event: proto_room.RoomEvent): error, ) elif which == "track_muted": - sid = event.track_muted.participant_sid + identity = event.track_muted.participant_identity # TODO: pass participant identity - participant = self._retrieve_participant(sid, "") + participant = self._retrieve_participant(identity) assert isinstance(participant, Participant) - publication = participant.tracks[event.track_muted.track_sid] + publication = participant.track_publications[event.track_muted.track_sid] publication._info.muted = True if publication.track: publication.track._info.muted = True self.emit("track_muted", participant, publication) elif which == "track_unmuted": - sid = event.track_unmuted.participant_sid + identity = event.track_unmuted.participant_identity # TODO: pass participant identity - participant = self._retrieve_participant(sid, "") + participant = self._retrieve_participant(identity) assert isinstance(participant, Participant) - publication = participant.tracks[event.track_unmuted.track_sid] + publication = participant.track_publications[event.track_unmuted.track_sid] publication._info.muted = False if publication.track: publication.track._info.muted = False @@ -350,8 +364,8 @@ def _on_room_event(self, event: proto_room.RoomEvent): elif which == "active_speakers_changed": speakers: list[Participant] = [] # TODO: pass participant identity - for sid in event.active_speakers_changed.participant_sids: - participant = self._retrieve_participant(sid, "") + for identity in event.active_speakers_changed.participant_identities: + participant = self._retrieve_participant(identity) assert isinstance(participant, Participant) speakers.append(participant) @@ -360,10 +374,15 @@ def _on_room_event(self, event: proto_room.RoomEvent): old_metadata = self.metadata self._info.metadata = event.room_metadata_changed.metadata self.emit("room_metadata_changed", old_metadata, self.metadata) + elif which == "room_sid_changed": + if not self._info.sid: + self._first_sid_future.set_result(event.room_sid_changed.sid) + self._info.sid = event.room_sid_changed.sid + # This is an internal event, not exposed to users elif which == "participant_metadata_changed": - sid = event.participant_metadata_changed.participant_sid + identity = event.participant_metadata_changed.participant_identity # TODO: pass participant identity - participant = self._retrieve_participant(sid, "") + participant = self._retrieve_participant(identity) assert isinstance(participant, Participant) old_metadata = participant.metadata participant._info.metadata = event.participant_metadata_changed.metadata @@ -374,24 +393,56 @@ def _on_room_event(self, event: proto_room.RoomEvent): participant.metadata, ) elif which == "participant_name_changed": - sid = event.participant_name_changed.participant_sid - # TODO: pass participant identity - participant = self._retrieve_participant(sid, "") + identity = event.participant_name_changed.participant_identity + participant = self._retrieve_participant(identity) assert isinstance(participant, Participant) old_name = participant.name participant._info.name = event.participant_name_changed.name self.emit( "participant_name_changed", participant, old_name, participant.name ) + elif which == "participant_attributes_changed": + identity = event.participant_attributes_changed.participant_identity + attributes = event.participant_attributes_changed.attributes + changed_attributes = dict( + event.participant_attributes_changed.changed_attributes + ) + participant = self._retrieve_participant(identity) + assert isinstance(participant, Participant) + participant._info.attributes.clear() + participant._info.attributes.update(attributes) + self.emit( + "participant_attributes_changed", + changed_attributes, + participant, + ) elif which == "connection_quality_changed": - sid = event.connection_quality_changed.participant_sid + identity = event.connection_quality_changed.participant_identity # TODO: pass participant identity - participant = self._retrieve_participant(sid, "") + participant = self._retrieve_participant(identity) self.emit( "connection_quality_changed", participant, event.connection_quality_changed.quality, ) + elif which == "transcription_received": + transcription = event.transcription_received + segments = [ + TranscriptionSegment( + id=s.id, + text=s.text, + final=s.final, + start_time=s.start_time, + end_time=s.end_time, + language=s.language, + ) + for s in transcription.segments + ] + part = self._retrieve_participant(transcription.participant_identity) + pub: TrackPublication | None = None + if part: + pub = part.track_publications.get(transcription.track_sid) + self.emit("transcription_received", segments, part, pub) elif which == "data_packet_received": packet = event.data_packet_received which_val = packet.WhichOneof("value") @@ -407,9 +458,7 @@ def _on_room_event(self, event: proto_room.RoomEvent): FfiHandle(owned_buffer_info.handle.id) rparticipant = cast( RemoteParticipant, - self._retrieve_remote_participant( - packet.participant_sid, packet.participant_identity - ), + self._retrieve_remote_participant(packet.participant_identity), ) self.emit( "data_received", @@ -423,9 +472,7 @@ def _on_room_event(self, event: proto_room.RoomEvent): elif which_val == "sip_dtmf": rparticipant = cast( RemoteParticipant, - self._retrieve_remote_participant( - packet.participant_sid, packet.participant_identity - ), + self._retrieve_remote_participant(packet.participant_identity), ) self.emit( "sip_dtmf_received", @@ -435,13 +482,12 @@ def _on_room_event(self, event: proto_room.RoomEvent): participant=rparticipant, ), ) - elif which == "e2ee_state_changed": - sid = event.e2ee_state_changed.participant_sid + identity = event.e2ee_state_changed.participant_identity e2ee_state = event.e2ee_state_changed.state # TODO: pass participant identity self.emit( - "e2ee_state_changed", self._retrieve_participant(sid, ""), e2ee_state + "e2ee_state_changed", self._retrieve_participant(identity), e2ee_state ) elif which == "connection_state_changed": connection_state = event.connection_state_changed.state @@ -457,35 +503,24 @@ def _on_room_event(self, event: proto_room.RoomEvent): self.emit("reconnected") def _retrieve_remote_participant( - self, sid: str, identity: str + self, identity: str ) -> Optional[RemoteParticipant]: - """Retrieve a remote participant by sid or identity""" - participant = None - if identity: - participant = self.participants_by_identity[identity] - if not participant and sid in self.participants: - participant = self.participants[sid] - return participant + """Retrieve a remote participant by identity""" + return self.remote_participants.get(identity, None) - def _retrieve_participant(self, sid: str, identity: str) -> Optional[Participant]: - """Retrieve a participant by sid or identity, - returns the LocalParticipant if sid or identity matches""" + def _retrieve_participant(self, identity: str) -> Optional[Participant]: + """Retrieve a local or remote participant by identity""" if identity and identity == self.local_participant.identity: return self.local_participant - if sid and sid == self.local_participant.sid: - return self.local_participant - else: - return self._retrieve_remote_participant(sid, identity) + + return self._retrieve_remote_participant(identity) def _create_remote_participant( self, owned_info: proto_participant.OwnedParticipant ) -> RemoteParticipant: - if owned_info.info.sid in self.participants: - raise Exception("participant already exists") - if owned_info.info.identity in self.participants_by_identity: + if owned_info.info.identity in self.remote_participants: raise Exception("participant already exists") participant = RemoteParticipant(owned_info) - self.participants[participant.sid] = participant - self.participants_by_identity[participant.identity] = participant + self.remote_participants[participant.identity] = participant return participant diff --git a/livekit-rtc/livekit/rtc/transcription.py b/livekit-rtc/livekit/rtc/transcription.py index 3694e0d0..7403f6bd 100644 --- a/livekit-rtc/livekit/rtc/transcription.py +++ b/livekit-rtc/livekit/rtc/transcription.py @@ -5,9 +5,8 @@ @dataclass class Transcription: participant_identity: str - track_id: str + track_sid: str segments: List["TranscriptionSegment"] - language: str @dataclass @@ -16,4 +15,5 @@ class TranscriptionSegment: text: str start_time: int end_time: int + language: str final: bool diff --git a/livekit-rtc/rust-sdks b/livekit-rtc/rust-sdks index ea0bc400..8a009e5d 160000 --- a/livekit-rtc/rust-sdks +++ b/livekit-rtc/rust-sdks @@ -1 +1 @@ -Subproject commit ea0bc40093ebcc7d308b2c4e8d088340557bdf46 +Subproject commit 8a009e5d19c6d578081c1467d24f7161c0183ccf