diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5834e804..3b495c01 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -128,7 +128,7 @@ jobs: LIVEKIT_API_SECRET: ${{ secrets.LIVEKIT_API_SECRET }} run: | source .test-venv/bin/activate - pytest tests/ + pytest tests/ livekit-rtc/tests/ - name: Run tests (Windows) if: runner.os == 'Windows' @@ -136,6 +136,6 @@ jobs: LIVEKIT_URL: ${{ secrets.LIVEKIT_URL }} LIVEKIT_API_KEY: ${{ secrets.LIVEKIT_API_KEY }} LIVEKIT_API_SECRET: ${{ secrets.LIVEKIT_API_SECRET }} - run: .test-venv\Scripts\python.exe -m pytest tests/ + run: .test-venv\Scripts\python.exe -m pytest tests/ livekit-rtc/tests/ shell: pwsh \ No newline at end of file diff --git a/livekit-api/livekit/api/access_token.py b/livekit-api/livekit/api/access_token.py index 9d0e5145..7b66c6a0 100644 --- a/livekit-api/livekit/api/access_token.py +++ b/livekit-api/livekit/api/access_token.py @@ -68,6 +68,9 @@ class VideoGrants: # indicates that the holder can register as an Agent framework worker agent: Optional[bool] = None + # allow participant to manage an agent session via RemoteSession + can_manage_agent_session: Optional[bool] = None + @dataclass class SIPGrants: diff --git a/livekit-rtc/livekit/rtc/__init__.py b/livekit-rtc/livekit/rtc/__init__.py index 23f9cbf1..a6ebb3cf 100644 --- a/livekit-rtc/livekit/rtc/__init__.py +++ b/livekit-rtc/livekit/rtc/__init__.py @@ -43,6 +43,7 @@ TrackSource, ParticipantTrackPermission, ) +from ._proto.track_publication_pb2 import VideoQuality from ._proto.video_frame_pb2 import VideoBufferType, VideoCodec, VideoRotation from .audio_frame import AudioFrame from .audio_source import AudioSource @@ -185,6 +186,7 @@ "TranscriptionSegment", "VideoCodec", "VideoEncoding", + "VideoQuality", "VideoFrame", "VideoFrameEvent", "VideoSource", diff --git a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py index e1154526..0e023da0 100644 --- a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py +++ b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py @@ -23,7 +23,7 @@ from . import data_track_pb2 as data__track__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tffi.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0btrack.proto\x1a\x17track_publication.proto\x1a\nroom.proto\x1a\x11video_frame.proto\x1a\x11\x61udio_frame.proto\x1a\trpc.proto\x1a\x11\x64\x61ta_stream.proto\x1a\x10\x64\x61ta_track.proto\"\xe5*\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@\n\x10local_track_mute\x18\x11 \x01(\x0b\x32$.livekit.proto.LocalTrackMuteRequestH\x00\x12\x46\n\x13\x65nable_remote_track\x18\x12 \x01(\x0b\x32\'.livekit.proto.EnableRemoteTrackRequestH\x00\x12\x33\n\tget_stats\x18\x13 \x01(\x0b\x32\x1e.livekit.proto.GetStatsRequestH\x00\x12\x63\n\"set_track_subscription_permissions\x18\x30 \x01(\x0b\x32\x35.livekit.proto.SetTrackSubscriptionPermissionsRequestH\x00\x12@\n\x10new_video_stream\x18\x14 \x01(\x0b\x32$.livekit.proto.NewVideoStreamRequestH\x00\x12@\n\x10new_video_source\x18\x15 \x01(\x0b\x32$.livekit.proto.NewVideoSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_video_frame\x18\x16 \x01(\x0b\x32\'.livekit.proto.CaptureVideoFrameRequestH\x00\x12;\n\rvideo_convert\x18\x17 \x01(\x0b\x32\".livekit.proto.VideoConvertRequestH\x00\x12Y\n\x1dvideo_stream_from_participant\x18\x18 \x01(\x0b\x32\x30.livekit.proto.VideoStreamFromParticipantRequestH\x00\x12@\n\x10new_audio_stream\x18\x19 \x01(\x0b\x32$.livekit.proto.NewAudioStreamRequestH\x00\x12@\n\x10new_audio_source\x18\x1a \x01(\x0b\x32$.livekit.proto.NewAudioSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_audio_frame\x18\x1b \x01(\x0b\x32\'.livekit.proto.CaptureAudioFrameRequestH\x00\x12\x44\n\x12\x63lear_audio_buffer\x18\x1c \x01(\x0b\x32&.livekit.proto.ClearAudioBufferRequestH\x00\x12\x46\n\x13new_audio_resampler\x18\x1d \x01(\x0b\x32\'.livekit.proto.NewAudioResamplerRequestH\x00\x12\x44\n\x12remix_and_resample\x18\x1e \x01(\x0b\x32&.livekit.proto.RemixAndResampleRequestH\x00\x12*\n\x04\x65\x32\x65\x65\x18\x1f \x01(\x0b\x32\x1a.livekit.proto.E2eeRequestH\x00\x12Y\n\x1d\x61udio_stream_from_participant\x18 \x01(\x0b\x32\x30.livekit.proto.AudioStreamFromParticipantRequestH\x00\x12\x42\n\x11new_sox_resampler\x18! \x01(\x0b\x32%.livekit.proto.NewSoxResamplerRequestH\x00\x12\x44\n\x12push_sox_resampler\x18\" \x01(\x0b\x32&.livekit.proto.PushSoxResamplerRequestH\x00\x12\x46\n\x13\x66lush_sox_resampler\x18# \x01(\x0b\x32\'.livekit.proto.FlushSoxResamplerRequestH\x00\x12\x42\n\x11send_chat_message\x18$ \x01(\x0b\x32%.livekit.proto.SendChatMessageRequestH\x00\x12\x42\n\x11\x65\x64it_chat_message\x18% \x01(\x0b\x32%.livekit.proto.EditChatMessageRequestH\x00\x12\x37\n\x0bperform_rpc\x18& \x01(\x0b\x32 .livekit.proto.PerformRpcRequestH\x00\x12\x46\n\x13register_rpc_method\x18\' \x01(\x0b\x32\'.livekit.proto.RegisterRpcMethodRequestH\x00\x12J\n\x15unregister_rpc_method\x18( \x01(\x0b\x32).livekit.proto.UnregisterRpcMethodRequestH\x00\x12[\n\x1erpc_method_invocation_response\x18) \x01(\x0b\x32\x31.livekit.proto.RpcMethodInvocationResponseRequestH\x00\x12]\n\x1f\x65nable_remote_track_publication\x18* \x01(\x0b\x32\x32.livekit.proto.EnableRemoteTrackPublicationRequestH\x00\x12p\n)update_remote_track_publication_dimension\x18+ \x01(\x0b\x32;.livekit.proto.UpdateRemoteTrackPublicationDimensionRequestH\x00\x12\x44\n\x12send_stream_header\x18, \x01(\x0b\x32&.livekit.proto.SendStreamHeaderRequestH\x00\x12\x42\n\x11send_stream_chunk\x18- \x01(\x0b\x32%.livekit.proto.SendStreamChunkRequestH\x00\x12\x46\n\x13send_stream_trailer\x18. \x01(\x0b\x32\'.livekit.proto.SendStreamTrailerRequestH\x00\x12x\n.set_data_channel_buffered_amount_low_threshold\x18/ \x01(\x0b\x32>.livekit.proto.SetDataChannelBufferedAmountLowThresholdRequestH\x00\x12O\n\x18load_audio_filter_plugin\x18\x31 \x01(\x0b\x32+.livekit.proto.LoadAudioFilterPluginRequestH\x00\x12/\n\x07new_apm\x18\x32 \x01(\x0b\x32\x1c.livekit.proto.NewApmRequestH\x00\x12\x44\n\x12\x61pm_process_stream\x18\x33 \x01(\x0b\x32&.livekit.proto.ApmProcessStreamRequestH\x00\x12S\n\x1a\x61pm_process_reverse_stream\x18\x34 \x01(\x0b\x32-.livekit.proto.ApmProcessReverseStreamRequestH\x00\x12G\n\x14\x61pm_set_stream_delay\x18\x35 \x01(\x0b\x32\'.livekit.proto.ApmSetStreamDelayRequestH\x00\x12V\n\x15\x62yte_read_incremental\x18\x36 \x01(\x0b\x32\x35.livekit.proto.ByteStreamReaderReadIncrementalRequestH\x00\x12\x46\n\rbyte_read_all\x18\x37 \x01(\x0b\x32-.livekit.proto.ByteStreamReaderReadAllRequestH\x00\x12O\n\x12\x62yte_write_to_file\x18\x38 \x01(\x0b\x32\x31.livekit.proto.ByteStreamReaderWriteToFileRequestH\x00\x12V\n\x15text_read_incremental\x18\x39 \x01(\x0b\x32\x35.livekit.proto.TextStreamReaderReadIncrementalRequestH\x00\x12\x46\n\rtext_read_all\x18: \x01(\x0b\x32-.livekit.proto.TextStreamReaderReadAllRequestH\x00\x12\x39\n\tsend_file\x18; \x01(\x0b\x32$.livekit.proto.StreamSendFileRequestH\x00\x12\x39\n\tsend_text\x18< \x01(\x0b\x32$.livekit.proto.StreamSendTextRequestH\x00\x12@\n\x10\x62yte_stream_open\x18= \x01(\x0b\x32$.livekit.proto.ByteStreamOpenRequestH\x00\x12H\n\x11\x62yte_stream_write\x18> \x01(\x0b\x32+.livekit.proto.ByteStreamWriterWriteRequestH\x00\x12H\n\x11\x62yte_stream_close\x18? \x01(\x0b\x32+.livekit.proto.ByteStreamWriterCloseRequestH\x00\x12@\n\x10text_stream_open\x18@ \x01(\x0b\x32$.livekit.proto.TextStreamOpenRequestH\x00\x12H\n\x11text_stream_write\x18\x41 \x01(\x0b\x32+.livekit.proto.TextStreamWriterWriteRequestH\x00\x12H\n\x11text_stream_close\x18\x42 \x01(\x0b\x32+.livekit.proto.TextStreamWriterCloseRequestH\x00\x12;\n\nsend_bytes\x18\x43 \x01(\x0b\x32%.livekit.proto.StreamSendBytesRequestH\x00\x12\x66\n$set_remote_track_publication_quality\x18\x44 \x01(\x0b\x32\x36.livekit.proto.SetRemoteTrackPublicationQualityRequestH\x00\x12\x44\n\x12publish_data_track\x18\x45 \x01(\x0b\x32&.livekit.proto.PublishDataTrackRequestH\x00\x12P\n\x19local_data_track_try_push\x18\x46 \x01(\x0b\x32+.livekit.proto.LocalDataTrackTryPushRequestH\x00\x12S\n\x1alocal_data_track_unpublish\x18G \x01(\x0b\x32-.livekit.proto.LocalDataTrackUnpublishRequestH\x00\x12X\n\x1dlocal_data_track_is_published\x18H \x01(\x0b\x32/.livekit.proto.LocalDataTrackIsPublishedRequestH\x00\x12H\n\x14subscribe_data_track\x18I \x01(\x0b\x32(.livekit.proto.SubscribeDataTrackRequestH\x00\x12Z\n\x1eremote_data_track_is_published\x18J \x01(\x0b\x32\x30.livekit.proto.RemoteDataTrackIsPublishedRequestH\x00\x12K\n\x16\x64\x61ta_track_stream_read\x18K \x01(\x0b\x32).livekit.proto.DataTrackStreamReadRequestH\x00\x12\x43\n\x11simulate_scenario\x18L \x01(\x0b\x32&.livekit.proto.SimulateScenarioRequestH\x00\x42\t\n\x07message\"\xec*\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\x41\n\x10local_track_mute\x18\x11 \x01(\x0b\x32%.livekit.proto.LocalTrackMuteResponseH\x00\x12G\n\x13\x65nable_remote_track\x18\x12 \x01(\x0b\x32(.livekit.proto.EnableRemoteTrackResponseH\x00\x12\x34\n\tget_stats\x18\x13 \x01(\x0b\x32\x1f.livekit.proto.GetStatsResponseH\x00\x12\x64\n\"set_track_subscription_permissions\x18/ \x01(\x0b\x32\x36.livekit.proto.SetTrackSubscriptionPermissionsResponseH\x00\x12\x41\n\x10new_video_stream\x18\x14 \x01(\x0b\x32%.livekit.proto.NewVideoStreamResponseH\x00\x12\x41\n\x10new_video_source\x18\x15 \x01(\x0b\x32%.livekit.proto.NewVideoSourceResponseH\x00\x12G\n\x13\x63\x61pture_video_frame\x18\x16 \x01(\x0b\x32(.livekit.proto.CaptureVideoFrameResponseH\x00\x12<\n\rvideo_convert\x18\x17 \x01(\x0b\x32#.livekit.proto.VideoConvertResponseH\x00\x12Z\n\x1dvideo_stream_from_participant\x18\x18 \x01(\x0b\x32\x31.livekit.proto.VideoStreamFromParticipantResponseH\x00\x12\x41\n\x10new_audio_stream\x18\x19 \x01(\x0b\x32%.livekit.proto.NewAudioStreamResponseH\x00\x12\x41\n\x10new_audio_source\x18\x1a \x01(\x0b\x32%.livekit.proto.NewAudioSourceResponseH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\x1b \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameResponseH\x00\x12\x45\n\x12\x63lear_audio_buffer\x18\x1c \x01(\x0b\x32\'.livekit.proto.ClearAudioBufferResponseH\x00\x12G\n\x13new_audio_resampler\x18\x1d \x01(\x0b\x32(.livekit.proto.NewAudioResamplerResponseH\x00\x12\x45\n\x12remix_and_resample\x18\x1e \x01(\x0b\x32\'.livekit.proto.RemixAndResampleResponseH\x00\x12Z\n\x1d\x61udio_stream_from_participant\x18\x1f \x01(\x0b\x32\x31.livekit.proto.AudioStreamFromParticipantResponseH\x00\x12+\n\x04\x65\x32\x65\x65\x18 \x01(\x0b\x32\x1b.livekit.proto.E2eeResponseH\x00\x12\x43\n\x11new_sox_resampler\x18! \x01(\x0b\x32&.livekit.proto.NewSoxResamplerResponseH\x00\x12\x45\n\x12push_sox_resampler\x18\" \x01(\x0b\x32\'.livekit.proto.PushSoxResamplerResponseH\x00\x12G\n\x13\x66lush_sox_resampler\x18# \x01(\x0b\x32(.livekit.proto.FlushSoxResamplerResponseH\x00\x12\x43\n\x11send_chat_message\x18$ \x01(\x0b\x32&.livekit.proto.SendChatMessageResponseH\x00\x12\x38\n\x0bperform_rpc\x18% \x01(\x0b\x32!.livekit.proto.PerformRpcResponseH\x00\x12G\n\x13register_rpc_method\x18& \x01(\x0b\x32(.livekit.proto.RegisterRpcMethodResponseH\x00\x12K\n\x15unregister_rpc_method\x18\' \x01(\x0b\x32*.livekit.proto.UnregisterRpcMethodResponseH\x00\x12\\\n\x1erpc_method_invocation_response\x18( \x01(\x0b\x32\x32.livekit.proto.RpcMethodInvocationResponseResponseH\x00\x12^\n\x1f\x65nable_remote_track_publication\x18) \x01(\x0b\x32\x33.livekit.proto.EnableRemoteTrackPublicationResponseH\x00\x12q\n)update_remote_track_publication_dimension\x18* \x01(\x0b\x32<.livekit.proto.UpdateRemoteTrackPublicationDimensionResponseH\x00\x12\x45\n\x12send_stream_header\x18+ \x01(\x0b\x32\'.livekit.proto.SendStreamHeaderResponseH\x00\x12\x43\n\x11send_stream_chunk\x18, \x01(\x0b\x32&.livekit.proto.SendStreamChunkResponseH\x00\x12G\n\x13send_stream_trailer\x18- \x01(\x0b\x32(.livekit.proto.SendStreamTrailerResponseH\x00\x12y\n.set_data_channel_buffered_amount_low_threshold\x18. \x01(\x0b\x32?.livekit.proto.SetDataChannelBufferedAmountLowThresholdResponseH\x00\x12P\n\x18load_audio_filter_plugin\x18\x30 \x01(\x0b\x32,.livekit.proto.LoadAudioFilterPluginResponseH\x00\x12\x30\n\x07new_apm\x18\x31 \x01(\x0b\x32\x1d.livekit.proto.NewApmResponseH\x00\x12\x45\n\x12\x61pm_process_stream\x18\x32 \x01(\x0b\x32\'.livekit.proto.ApmProcessStreamResponseH\x00\x12T\n\x1a\x61pm_process_reverse_stream\x18\x33 \x01(\x0b\x32..livekit.proto.ApmProcessReverseStreamResponseH\x00\x12H\n\x14\x61pm_set_stream_delay\x18\x34 \x01(\x0b\x32(.livekit.proto.ApmSetStreamDelayResponseH\x00\x12W\n\x15\x62yte_read_incremental\x18\x35 \x01(\x0b\x32\x36.livekit.proto.ByteStreamReaderReadIncrementalResponseH\x00\x12G\n\rbyte_read_all\x18\x36 \x01(\x0b\x32..livekit.proto.ByteStreamReaderReadAllResponseH\x00\x12P\n\x12\x62yte_write_to_file\x18\x37 \x01(\x0b\x32\x32.livekit.proto.ByteStreamReaderWriteToFileResponseH\x00\x12W\n\x15text_read_incremental\x18\x38 \x01(\x0b\x32\x36.livekit.proto.TextStreamReaderReadIncrementalResponseH\x00\x12G\n\rtext_read_all\x18\x39 \x01(\x0b\x32..livekit.proto.TextStreamReaderReadAllResponseH\x00\x12:\n\tsend_file\x18: \x01(\x0b\x32%.livekit.proto.StreamSendFileResponseH\x00\x12:\n\tsend_text\x18; \x01(\x0b\x32%.livekit.proto.StreamSendTextResponseH\x00\x12\x41\n\x10\x62yte_stream_open\x18< \x01(\x0b\x32%.livekit.proto.ByteStreamOpenResponseH\x00\x12I\n\x11\x62yte_stream_write\x18= \x01(\x0b\x32,.livekit.proto.ByteStreamWriterWriteResponseH\x00\x12I\n\x11\x62yte_stream_close\x18> \x01(\x0b\x32,.livekit.proto.ByteStreamWriterCloseResponseH\x00\x12\x41\n\x10text_stream_open\x18? \x01(\x0b\x32%.livekit.proto.TextStreamOpenResponseH\x00\x12I\n\x11text_stream_write\x18@ \x01(\x0b\x32,.livekit.proto.TextStreamWriterWriteResponseH\x00\x12I\n\x11text_stream_close\x18\x41 \x01(\x0b\x32,.livekit.proto.TextStreamWriterCloseResponseH\x00\x12<\n\nsend_bytes\x18\x42 \x01(\x0b\x32&.livekit.proto.StreamSendBytesResponseH\x00\x12g\n$set_remote_track_publication_quality\x18\x43 \x01(\x0b\x32\x37.livekit.proto.SetRemoteTrackPublicationQualityResponseH\x00\x12\x45\n\x12publish_data_track\x18\x44 \x01(\x0b\x32\'.livekit.proto.PublishDataTrackResponseH\x00\x12Q\n\x19local_data_track_try_push\x18\x45 \x01(\x0b\x32,.livekit.proto.LocalDataTrackTryPushResponseH\x00\x12T\n\x1alocal_data_track_unpublish\x18\x46 \x01(\x0b\x32..livekit.proto.LocalDataTrackUnpublishResponseH\x00\x12Y\n\x1dlocal_data_track_is_published\x18G \x01(\x0b\x32\x30.livekit.proto.LocalDataTrackIsPublishedResponseH\x00\x12I\n\x14subscribe_data_track\x18H \x01(\x0b\x32).livekit.proto.SubscribeDataTrackResponseH\x00\x12[\n\x1eremote_data_track_is_published\x18I \x01(\x0b\x32\x31.livekit.proto.RemoteDataTrackIsPublishedResponseH\x00\x12L\n\x16\x64\x61ta_track_stream_read\x18J \x01(\x0b\x32*.livekit.proto.DataTrackStreamReadResponseH\x00\x12\x44\n\x11simulate_scenario\x18K \x01(\x0b\x32\'.livekit.proto.SimulateScenarioResponseH\x00\x42\t\n\x07message\"\xda\x16\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\x12>\n\x0c\x63hat_message\x18\x16 \x01(\x0b\x32&.livekit.proto.SendChatMessageCallbackH\x00\x12\x38\n\x0bperform_rpc\x18\x17 \x01(\x0b\x32!.livekit.proto.PerformRpcCallbackH\x00\x12H\n\x15rpc_method_invocation\x18\x18 \x01(\x0b\x32\'.livekit.proto.RpcMethodInvocationEventH\x00\x12\x45\n\x12send_stream_header\x18\x19 \x01(\x0b\x32\'.livekit.proto.SendStreamHeaderCallbackH\x00\x12\x43\n\x11send_stream_chunk\x18\x1a \x01(\x0b\x32&.livekit.proto.SendStreamChunkCallbackH\x00\x12G\n\x13send_stream_trailer\x18\x1b \x01(\x0b\x32(.livekit.proto.SendStreamTrailerCallbackH\x00\x12H\n\x18\x62yte_stream_reader_event\x18\x1c \x01(\x0b\x32$.livekit.proto.ByteStreamReaderEventH\x00\x12U\n\x1b\x62yte_stream_reader_read_all\x18\x1d \x01(\x0b\x32..livekit.proto.ByteStreamReaderReadAllCallbackH\x00\x12^\n byte_stream_reader_write_to_file\x18\x1e \x01(\x0b\x32\x32.livekit.proto.ByteStreamReaderWriteToFileCallbackH\x00\x12\x41\n\x10\x62yte_stream_open\x18\x1f \x01(\x0b\x32%.livekit.proto.ByteStreamOpenCallbackH\x00\x12P\n\x18\x62yte_stream_writer_write\x18 \x01(\x0b\x32,.livekit.proto.ByteStreamWriterWriteCallbackH\x00\x12P\n\x18\x62yte_stream_writer_close\x18! \x01(\x0b\x32,.livekit.proto.ByteStreamWriterCloseCallbackH\x00\x12:\n\tsend_file\x18\" \x01(\x0b\x32%.livekit.proto.StreamSendFileCallbackH\x00\x12H\n\x18text_stream_reader_event\x18# \x01(\x0b\x32$.livekit.proto.TextStreamReaderEventH\x00\x12U\n\x1btext_stream_reader_read_all\x18$ \x01(\x0b\x32..livekit.proto.TextStreamReaderReadAllCallbackH\x00\x12\x41\n\x10text_stream_open\x18% \x01(\x0b\x32%.livekit.proto.TextStreamOpenCallbackH\x00\x12P\n\x18text_stream_writer_write\x18& \x01(\x0b\x32,.livekit.proto.TextStreamWriterWriteCallbackH\x00\x12P\n\x18text_stream_writer_close\x18\' \x01(\x0b\x32,.livekit.proto.TextStreamWriterCloseCallbackH\x00\x12:\n\tsend_text\x18( \x01(\x0b\x32%.livekit.proto.StreamSendTextCallbackH\x00\x12<\n\nsend_bytes\x18) \x01(\x0b\x32&.livekit.proto.StreamSendBytesCallbackH\x00\x12\x45\n\x12publish_data_track\x18* \x01(\x0b\x32\'.livekit.proto.PublishDataTrackCallbackH\x00\x12\x46\n\x17\x64\x61ta_track_stream_event\x18+ \x01(\x0b\x32#.livekit.proto.DataTrackStreamEventH\x00\x12\x44\n\x11simulate_scenario\x18, \x01(\x0b\x32\'.livekit.proto.SimulateScenarioCallbackH\x00\x42\t\n\x07message\"\x1f\n\x0e\x44isposeRequest\x12\r\n\x05\x61sync\x18\x01 \x02(\x08\"#\n\x0f\x44isposeResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"#\n\x0f\x44isposeCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\x85\x01\n\tLogRecord\x12&\n\x05level\x18\x01 \x02(\x0e\x32\x17.livekit.proto.LogLevel\x12\x0e\n\x06target\x18\x02 \x02(\t\x12\x13\n\x0bmodule_path\x18\x03 \x01(\t\x12\x0c\n\x04\x66ile\x18\x04 \x01(\t\x12\x0c\n\x04line\x18\x05 \x01(\r\x12\x0f\n\x07message\x18\x06 \x02(\t\"5\n\x08LogBatch\x12)\n\x07records\x18\x01 \x03(\x0b\x32\x18.livekit.proto.LogRecord\"\x18\n\x05Panic\x12\x0f\n\x07message\x18\x01 \x02(\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.Proto') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tffi.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0btrack.proto\x1a\x17track_publication.proto\x1a\nroom.proto\x1a\x11video_frame.proto\x1a\x11\x61udio_frame.proto\x1a\trpc.proto\x1a\x11\x64\x61ta_stream.proto\x1a\x10\x64\x61ta_track.proto\"\xae+\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@\n\x10local_track_mute\x18\x11 \x01(\x0b\x32$.livekit.proto.LocalTrackMuteRequestH\x00\x12\x46\n\x13\x65nable_remote_track\x18\x12 \x01(\x0b\x32\'.livekit.proto.EnableRemoteTrackRequestH\x00\x12\x33\n\tget_stats\x18\x13 \x01(\x0b\x32\x1e.livekit.proto.GetStatsRequestH\x00\x12\x63\n\"set_track_subscription_permissions\x18\x30 \x01(\x0b\x32\x35.livekit.proto.SetTrackSubscriptionPermissionsRequestH\x00\x12@\n\x10new_video_stream\x18\x14 \x01(\x0b\x32$.livekit.proto.NewVideoStreamRequestH\x00\x12@\n\x10new_video_source\x18\x15 \x01(\x0b\x32$.livekit.proto.NewVideoSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_video_frame\x18\x16 \x01(\x0b\x32\'.livekit.proto.CaptureVideoFrameRequestH\x00\x12;\n\rvideo_convert\x18\x17 \x01(\x0b\x32\".livekit.proto.VideoConvertRequestH\x00\x12Y\n\x1dvideo_stream_from_participant\x18\x18 \x01(\x0b\x32\x30.livekit.proto.VideoStreamFromParticipantRequestH\x00\x12@\n\x10new_audio_stream\x18\x19 \x01(\x0b\x32$.livekit.proto.NewAudioStreamRequestH\x00\x12@\n\x10new_audio_source\x18\x1a \x01(\x0b\x32$.livekit.proto.NewAudioSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_audio_frame\x18\x1b \x01(\x0b\x32\'.livekit.proto.CaptureAudioFrameRequestH\x00\x12\x44\n\x12\x63lear_audio_buffer\x18\x1c \x01(\x0b\x32&.livekit.proto.ClearAudioBufferRequestH\x00\x12\x46\n\x13new_audio_resampler\x18\x1d \x01(\x0b\x32\'.livekit.proto.NewAudioResamplerRequestH\x00\x12\x44\n\x12remix_and_resample\x18\x1e \x01(\x0b\x32&.livekit.proto.RemixAndResampleRequestH\x00\x12*\n\x04\x65\x32\x65\x65\x18\x1f \x01(\x0b\x32\x1a.livekit.proto.E2eeRequestH\x00\x12Y\n\x1d\x61udio_stream_from_participant\x18 \x01(\x0b\x32\x30.livekit.proto.AudioStreamFromParticipantRequestH\x00\x12\x42\n\x11new_sox_resampler\x18! \x01(\x0b\x32%.livekit.proto.NewSoxResamplerRequestH\x00\x12\x44\n\x12push_sox_resampler\x18\" \x01(\x0b\x32&.livekit.proto.PushSoxResamplerRequestH\x00\x12\x46\n\x13\x66lush_sox_resampler\x18# \x01(\x0b\x32\'.livekit.proto.FlushSoxResamplerRequestH\x00\x12\x42\n\x11send_chat_message\x18$ \x01(\x0b\x32%.livekit.proto.SendChatMessageRequestH\x00\x12\x42\n\x11\x65\x64it_chat_message\x18% \x01(\x0b\x32%.livekit.proto.EditChatMessageRequestH\x00\x12\x37\n\x0bperform_rpc\x18& \x01(\x0b\x32 .livekit.proto.PerformRpcRequestH\x00\x12\x46\n\x13register_rpc_method\x18\' \x01(\x0b\x32\'.livekit.proto.RegisterRpcMethodRequestH\x00\x12J\n\x15unregister_rpc_method\x18( \x01(\x0b\x32).livekit.proto.UnregisterRpcMethodRequestH\x00\x12[\n\x1erpc_method_invocation_response\x18) \x01(\x0b\x32\x31.livekit.proto.RpcMethodInvocationResponseRequestH\x00\x12]\n\x1f\x65nable_remote_track_publication\x18* \x01(\x0b\x32\x32.livekit.proto.EnableRemoteTrackPublicationRequestH\x00\x12p\n)update_remote_track_publication_dimension\x18+ \x01(\x0b\x32;.livekit.proto.UpdateRemoteTrackPublicationDimensionRequestH\x00\x12\x44\n\x12send_stream_header\x18, \x01(\x0b\x32&.livekit.proto.SendStreamHeaderRequestH\x00\x12\x42\n\x11send_stream_chunk\x18- \x01(\x0b\x32%.livekit.proto.SendStreamChunkRequestH\x00\x12\x46\n\x13send_stream_trailer\x18. \x01(\x0b\x32\'.livekit.proto.SendStreamTrailerRequestH\x00\x12x\n.set_data_channel_buffered_amount_low_threshold\x18/ \x01(\x0b\x32>.livekit.proto.SetDataChannelBufferedAmountLowThresholdRequestH\x00\x12O\n\x18load_audio_filter_plugin\x18\x31 \x01(\x0b\x32+.livekit.proto.LoadAudioFilterPluginRequestH\x00\x12/\n\x07new_apm\x18\x32 \x01(\x0b\x32\x1c.livekit.proto.NewApmRequestH\x00\x12\x44\n\x12\x61pm_process_stream\x18\x33 \x01(\x0b\x32&.livekit.proto.ApmProcessStreamRequestH\x00\x12S\n\x1a\x61pm_process_reverse_stream\x18\x34 \x01(\x0b\x32-.livekit.proto.ApmProcessReverseStreamRequestH\x00\x12G\n\x14\x61pm_set_stream_delay\x18\x35 \x01(\x0b\x32\'.livekit.proto.ApmSetStreamDelayRequestH\x00\x12V\n\x15\x62yte_read_incremental\x18\x36 \x01(\x0b\x32\x35.livekit.proto.ByteStreamReaderReadIncrementalRequestH\x00\x12\x46\n\rbyte_read_all\x18\x37 \x01(\x0b\x32-.livekit.proto.ByteStreamReaderReadAllRequestH\x00\x12O\n\x12\x62yte_write_to_file\x18\x38 \x01(\x0b\x32\x31.livekit.proto.ByteStreamReaderWriteToFileRequestH\x00\x12V\n\x15text_read_incremental\x18\x39 \x01(\x0b\x32\x35.livekit.proto.TextStreamReaderReadIncrementalRequestH\x00\x12\x46\n\rtext_read_all\x18: \x01(\x0b\x32-.livekit.proto.TextStreamReaderReadAllRequestH\x00\x12\x39\n\tsend_file\x18; \x01(\x0b\x32$.livekit.proto.StreamSendFileRequestH\x00\x12\x39\n\tsend_text\x18< \x01(\x0b\x32$.livekit.proto.StreamSendTextRequestH\x00\x12@\n\x10\x62yte_stream_open\x18= \x01(\x0b\x32$.livekit.proto.ByteStreamOpenRequestH\x00\x12H\n\x11\x62yte_stream_write\x18> \x01(\x0b\x32+.livekit.proto.ByteStreamWriterWriteRequestH\x00\x12H\n\x11\x62yte_stream_close\x18? \x01(\x0b\x32+.livekit.proto.ByteStreamWriterCloseRequestH\x00\x12@\n\x10text_stream_open\x18@ \x01(\x0b\x32$.livekit.proto.TextStreamOpenRequestH\x00\x12H\n\x11text_stream_write\x18\x41 \x01(\x0b\x32+.livekit.proto.TextStreamWriterWriteRequestH\x00\x12H\n\x11text_stream_close\x18\x42 \x01(\x0b\x32+.livekit.proto.TextStreamWriterCloseRequestH\x00\x12;\n\nsend_bytes\x18\x43 \x01(\x0b\x32%.livekit.proto.StreamSendBytesRequestH\x00\x12\x66\n$set_remote_track_publication_quality\x18\x44 \x01(\x0b\x32\x36.livekit.proto.SetRemoteTrackPublicationQualityRequestH\x00\x12\x44\n\x12publish_data_track\x18\x45 \x01(\x0b\x32&.livekit.proto.PublishDataTrackRequestH\x00\x12P\n\x19local_data_track_try_push\x18\x46 \x01(\x0b\x32+.livekit.proto.LocalDataTrackTryPushRequestH\x00\x12S\n\x1alocal_data_track_unpublish\x18G \x01(\x0b\x32-.livekit.proto.LocalDataTrackUnpublishRequestH\x00\x12X\n\x1dlocal_data_track_is_published\x18H \x01(\x0b\x32/.livekit.proto.LocalDataTrackIsPublishedRequestH\x00\x12H\n\x14subscribe_data_track\x18I \x01(\x0b\x32(.livekit.proto.SubscribeDataTrackRequestH\x00\x12Z\n\x1eremote_data_track_is_published\x18J \x01(\x0b\x32\x30.livekit.proto.RemoteDataTrackIsPublishedRequestH\x00\x12K\n\x16\x64\x61ta_track_stream_read\x18K \x01(\x0b\x32).livekit.proto.DataTrackStreamReadRequestH\x00\x12\x43\n\x11simulate_scenario\x18L \x01(\x0b\x32&.livekit.proto.SimulateScenarioRequestH\x00\x12G\n\x14ready_for_room_event\x18M \x01(\x0b\x32\'.livekit.proto.ReadyForRoomEventRequestH\x00\x42\t\n\x07message\"\xb6+\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\x41\n\x10local_track_mute\x18\x11 \x01(\x0b\x32%.livekit.proto.LocalTrackMuteResponseH\x00\x12G\n\x13\x65nable_remote_track\x18\x12 \x01(\x0b\x32(.livekit.proto.EnableRemoteTrackResponseH\x00\x12\x34\n\tget_stats\x18\x13 \x01(\x0b\x32\x1f.livekit.proto.GetStatsResponseH\x00\x12\x64\n\"set_track_subscription_permissions\x18/ \x01(\x0b\x32\x36.livekit.proto.SetTrackSubscriptionPermissionsResponseH\x00\x12\x41\n\x10new_video_stream\x18\x14 \x01(\x0b\x32%.livekit.proto.NewVideoStreamResponseH\x00\x12\x41\n\x10new_video_source\x18\x15 \x01(\x0b\x32%.livekit.proto.NewVideoSourceResponseH\x00\x12G\n\x13\x63\x61pture_video_frame\x18\x16 \x01(\x0b\x32(.livekit.proto.CaptureVideoFrameResponseH\x00\x12<\n\rvideo_convert\x18\x17 \x01(\x0b\x32#.livekit.proto.VideoConvertResponseH\x00\x12Z\n\x1dvideo_stream_from_participant\x18\x18 \x01(\x0b\x32\x31.livekit.proto.VideoStreamFromParticipantResponseH\x00\x12\x41\n\x10new_audio_stream\x18\x19 \x01(\x0b\x32%.livekit.proto.NewAudioStreamResponseH\x00\x12\x41\n\x10new_audio_source\x18\x1a \x01(\x0b\x32%.livekit.proto.NewAudioSourceResponseH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\x1b \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameResponseH\x00\x12\x45\n\x12\x63lear_audio_buffer\x18\x1c \x01(\x0b\x32\'.livekit.proto.ClearAudioBufferResponseH\x00\x12G\n\x13new_audio_resampler\x18\x1d \x01(\x0b\x32(.livekit.proto.NewAudioResamplerResponseH\x00\x12\x45\n\x12remix_and_resample\x18\x1e \x01(\x0b\x32\'.livekit.proto.RemixAndResampleResponseH\x00\x12Z\n\x1d\x61udio_stream_from_participant\x18\x1f \x01(\x0b\x32\x31.livekit.proto.AudioStreamFromParticipantResponseH\x00\x12+\n\x04\x65\x32\x65\x65\x18 \x01(\x0b\x32\x1b.livekit.proto.E2eeResponseH\x00\x12\x43\n\x11new_sox_resampler\x18! \x01(\x0b\x32&.livekit.proto.NewSoxResamplerResponseH\x00\x12\x45\n\x12push_sox_resampler\x18\" \x01(\x0b\x32\'.livekit.proto.PushSoxResamplerResponseH\x00\x12G\n\x13\x66lush_sox_resampler\x18# \x01(\x0b\x32(.livekit.proto.FlushSoxResamplerResponseH\x00\x12\x43\n\x11send_chat_message\x18$ \x01(\x0b\x32&.livekit.proto.SendChatMessageResponseH\x00\x12\x38\n\x0bperform_rpc\x18% \x01(\x0b\x32!.livekit.proto.PerformRpcResponseH\x00\x12G\n\x13register_rpc_method\x18& \x01(\x0b\x32(.livekit.proto.RegisterRpcMethodResponseH\x00\x12K\n\x15unregister_rpc_method\x18\' \x01(\x0b\x32*.livekit.proto.UnregisterRpcMethodResponseH\x00\x12\\\n\x1erpc_method_invocation_response\x18( \x01(\x0b\x32\x32.livekit.proto.RpcMethodInvocationResponseResponseH\x00\x12^\n\x1f\x65nable_remote_track_publication\x18) \x01(\x0b\x32\x33.livekit.proto.EnableRemoteTrackPublicationResponseH\x00\x12q\n)update_remote_track_publication_dimension\x18* \x01(\x0b\x32<.livekit.proto.UpdateRemoteTrackPublicationDimensionResponseH\x00\x12\x45\n\x12send_stream_header\x18+ \x01(\x0b\x32\'.livekit.proto.SendStreamHeaderResponseH\x00\x12\x43\n\x11send_stream_chunk\x18, \x01(\x0b\x32&.livekit.proto.SendStreamChunkResponseH\x00\x12G\n\x13send_stream_trailer\x18- \x01(\x0b\x32(.livekit.proto.SendStreamTrailerResponseH\x00\x12y\n.set_data_channel_buffered_amount_low_threshold\x18. \x01(\x0b\x32?.livekit.proto.SetDataChannelBufferedAmountLowThresholdResponseH\x00\x12P\n\x18load_audio_filter_plugin\x18\x30 \x01(\x0b\x32,.livekit.proto.LoadAudioFilterPluginResponseH\x00\x12\x30\n\x07new_apm\x18\x31 \x01(\x0b\x32\x1d.livekit.proto.NewApmResponseH\x00\x12\x45\n\x12\x61pm_process_stream\x18\x32 \x01(\x0b\x32\'.livekit.proto.ApmProcessStreamResponseH\x00\x12T\n\x1a\x61pm_process_reverse_stream\x18\x33 \x01(\x0b\x32..livekit.proto.ApmProcessReverseStreamResponseH\x00\x12H\n\x14\x61pm_set_stream_delay\x18\x34 \x01(\x0b\x32(.livekit.proto.ApmSetStreamDelayResponseH\x00\x12W\n\x15\x62yte_read_incremental\x18\x35 \x01(\x0b\x32\x36.livekit.proto.ByteStreamReaderReadIncrementalResponseH\x00\x12G\n\rbyte_read_all\x18\x36 \x01(\x0b\x32..livekit.proto.ByteStreamReaderReadAllResponseH\x00\x12P\n\x12\x62yte_write_to_file\x18\x37 \x01(\x0b\x32\x32.livekit.proto.ByteStreamReaderWriteToFileResponseH\x00\x12W\n\x15text_read_incremental\x18\x38 \x01(\x0b\x32\x36.livekit.proto.TextStreamReaderReadIncrementalResponseH\x00\x12G\n\rtext_read_all\x18\x39 \x01(\x0b\x32..livekit.proto.TextStreamReaderReadAllResponseH\x00\x12:\n\tsend_file\x18: \x01(\x0b\x32%.livekit.proto.StreamSendFileResponseH\x00\x12:\n\tsend_text\x18; \x01(\x0b\x32%.livekit.proto.StreamSendTextResponseH\x00\x12\x41\n\x10\x62yte_stream_open\x18< \x01(\x0b\x32%.livekit.proto.ByteStreamOpenResponseH\x00\x12I\n\x11\x62yte_stream_write\x18= \x01(\x0b\x32,.livekit.proto.ByteStreamWriterWriteResponseH\x00\x12I\n\x11\x62yte_stream_close\x18> \x01(\x0b\x32,.livekit.proto.ByteStreamWriterCloseResponseH\x00\x12\x41\n\x10text_stream_open\x18? \x01(\x0b\x32%.livekit.proto.TextStreamOpenResponseH\x00\x12I\n\x11text_stream_write\x18@ \x01(\x0b\x32,.livekit.proto.TextStreamWriterWriteResponseH\x00\x12I\n\x11text_stream_close\x18\x41 \x01(\x0b\x32,.livekit.proto.TextStreamWriterCloseResponseH\x00\x12<\n\nsend_bytes\x18\x42 \x01(\x0b\x32&.livekit.proto.StreamSendBytesResponseH\x00\x12g\n$set_remote_track_publication_quality\x18\x43 \x01(\x0b\x32\x37.livekit.proto.SetRemoteTrackPublicationQualityResponseH\x00\x12\x45\n\x12publish_data_track\x18\x44 \x01(\x0b\x32\'.livekit.proto.PublishDataTrackResponseH\x00\x12Q\n\x19local_data_track_try_push\x18\x45 \x01(\x0b\x32,.livekit.proto.LocalDataTrackTryPushResponseH\x00\x12T\n\x1alocal_data_track_unpublish\x18\x46 \x01(\x0b\x32..livekit.proto.LocalDataTrackUnpublishResponseH\x00\x12Y\n\x1dlocal_data_track_is_published\x18G \x01(\x0b\x32\x30.livekit.proto.LocalDataTrackIsPublishedResponseH\x00\x12I\n\x14subscribe_data_track\x18H \x01(\x0b\x32).livekit.proto.SubscribeDataTrackResponseH\x00\x12[\n\x1eremote_data_track_is_published\x18I \x01(\x0b\x32\x31.livekit.proto.RemoteDataTrackIsPublishedResponseH\x00\x12L\n\x16\x64\x61ta_track_stream_read\x18J \x01(\x0b\x32*.livekit.proto.DataTrackStreamReadResponseH\x00\x12\x44\n\x11simulate_scenario\x18K \x01(\x0b\x32\'.livekit.proto.SimulateScenarioResponseH\x00\x12H\n\x14ready_for_room_event\x18L \x01(\x0b\x32(.livekit.proto.ReadyForRoomEventResponseH\x00\x42\t\n\x07message\"\xda\x16\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\x12>\n\x0c\x63hat_message\x18\x16 \x01(\x0b\x32&.livekit.proto.SendChatMessageCallbackH\x00\x12\x38\n\x0bperform_rpc\x18\x17 \x01(\x0b\x32!.livekit.proto.PerformRpcCallbackH\x00\x12H\n\x15rpc_method_invocation\x18\x18 \x01(\x0b\x32\'.livekit.proto.RpcMethodInvocationEventH\x00\x12\x45\n\x12send_stream_header\x18\x19 \x01(\x0b\x32\'.livekit.proto.SendStreamHeaderCallbackH\x00\x12\x43\n\x11send_stream_chunk\x18\x1a \x01(\x0b\x32&.livekit.proto.SendStreamChunkCallbackH\x00\x12G\n\x13send_stream_trailer\x18\x1b \x01(\x0b\x32(.livekit.proto.SendStreamTrailerCallbackH\x00\x12H\n\x18\x62yte_stream_reader_event\x18\x1c \x01(\x0b\x32$.livekit.proto.ByteStreamReaderEventH\x00\x12U\n\x1b\x62yte_stream_reader_read_all\x18\x1d \x01(\x0b\x32..livekit.proto.ByteStreamReaderReadAllCallbackH\x00\x12^\n byte_stream_reader_write_to_file\x18\x1e \x01(\x0b\x32\x32.livekit.proto.ByteStreamReaderWriteToFileCallbackH\x00\x12\x41\n\x10\x62yte_stream_open\x18\x1f \x01(\x0b\x32%.livekit.proto.ByteStreamOpenCallbackH\x00\x12P\n\x18\x62yte_stream_writer_write\x18 \x01(\x0b\x32,.livekit.proto.ByteStreamWriterWriteCallbackH\x00\x12P\n\x18\x62yte_stream_writer_close\x18! \x01(\x0b\x32,.livekit.proto.ByteStreamWriterCloseCallbackH\x00\x12:\n\tsend_file\x18\" \x01(\x0b\x32%.livekit.proto.StreamSendFileCallbackH\x00\x12H\n\x18text_stream_reader_event\x18# \x01(\x0b\x32$.livekit.proto.TextStreamReaderEventH\x00\x12U\n\x1btext_stream_reader_read_all\x18$ \x01(\x0b\x32..livekit.proto.TextStreamReaderReadAllCallbackH\x00\x12\x41\n\x10text_stream_open\x18% \x01(\x0b\x32%.livekit.proto.TextStreamOpenCallbackH\x00\x12P\n\x18text_stream_writer_write\x18& \x01(\x0b\x32,.livekit.proto.TextStreamWriterWriteCallbackH\x00\x12P\n\x18text_stream_writer_close\x18\' \x01(\x0b\x32,.livekit.proto.TextStreamWriterCloseCallbackH\x00\x12:\n\tsend_text\x18( \x01(\x0b\x32%.livekit.proto.StreamSendTextCallbackH\x00\x12<\n\nsend_bytes\x18) \x01(\x0b\x32&.livekit.proto.StreamSendBytesCallbackH\x00\x12\x45\n\x12publish_data_track\x18* \x01(\x0b\x32\'.livekit.proto.PublishDataTrackCallbackH\x00\x12\x46\n\x17\x64\x61ta_track_stream_event\x18+ \x01(\x0b\x32#.livekit.proto.DataTrackStreamEventH\x00\x12\x44\n\x11simulate_scenario\x18, \x01(\x0b\x32\'.livekit.proto.SimulateScenarioCallbackH\x00\x42\t\n\x07message\"\x1f\n\x0e\x44isposeRequest\x12\r\n\x05\x61sync\x18\x01 \x02(\x08\"#\n\x0f\x44isposeResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"#\n\x0f\x44isposeCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\x85\x01\n\tLogRecord\x12&\n\x05level\x18\x01 \x02(\x0e\x32\x17.livekit.proto.LogLevel\x12\x0e\n\x06target\x18\x02 \x02(\t\x12\x13\n\x0bmodule_path\x18\x03 \x01(\t\x12\x0c\n\x04\x66ile\x18\x04 \x01(\t\x12\x0c\n\x04line\x18\x05 \x01(\r\x12\x0f\n\x07message\x18\x06 \x02(\t\"5\n\x08LogBatch\x12)\n\x07records\x18\x01 \x03(\x0b\x32\x18.livekit.proto.LogRecord\"\x18\n\x05Panic\x12\x0f\n\x07message\x18\x01 \x02(\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.Proto') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -31,24 +31,24 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals['DESCRIPTOR']._options = None _globals['DESCRIPTOR']._serialized_options = b'\252\002\rLiveKit.Proto' - _globals['_LOGLEVEL']._serialized_start=14376 - _globals['_LOGLEVEL']._serialized_end=14459 + _globals['_LOGLEVEL']._serialized_start=14523 + _globals['_LOGLEVEL']._serialized_end=14606 _globals['_FFIREQUEST']._serialized_start=177 - _globals['_FFIREQUEST']._serialized_end=5654 - _globals['_FFIRESPONSE']._serialized_start=5657 - _globals['_FFIRESPONSE']._serialized_end=11141 - _globals['_FFIEVENT']._serialized_start=11144 - _globals['_FFIEVENT']._serialized_end=14050 - _globals['_DISPOSEREQUEST']._serialized_start=14052 - _globals['_DISPOSEREQUEST']._serialized_end=14083 - _globals['_DISPOSERESPONSE']._serialized_start=14085 - _globals['_DISPOSERESPONSE']._serialized_end=14120 - _globals['_DISPOSECALLBACK']._serialized_start=14122 - _globals['_DISPOSECALLBACK']._serialized_end=14157 - _globals['_LOGRECORD']._serialized_start=14160 - _globals['_LOGRECORD']._serialized_end=14293 - _globals['_LOGBATCH']._serialized_start=14295 - _globals['_LOGBATCH']._serialized_end=14348 - _globals['_PANIC']._serialized_start=14350 - _globals['_PANIC']._serialized_end=14374 + _globals['_FFIREQUEST']._serialized_end=5727 + _globals['_FFIRESPONSE']._serialized_start=5730 + _globals['_FFIRESPONSE']._serialized_end=11288 + _globals['_FFIEVENT']._serialized_start=11291 + _globals['_FFIEVENT']._serialized_end=14197 + _globals['_DISPOSEREQUEST']._serialized_start=14199 + _globals['_DISPOSEREQUEST']._serialized_end=14230 + _globals['_DISPOSERESPONSE']._serialized_start=14232 + _globals['_DISPOSERESPONSE']._serialized_end=14267 + _globals['_DISPOSECALLBACK']._serialized_start=14269 + _globals['_DISPOSECALLBACK']._serialized_end=14304 + _globals['_LOGRECORD']._serialized_start=14307 + _globals['_LOGRECORD']._serialized_end=14440 + _globals['_LOGBATCH']._serialized_start=14442 + _globals['_LOGBATCH']._serialized_end=14495 + _globals['_PANIC']._serialized_start=14497 + _globals['_PANIC']._serialized_end=14521 # @@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 04909555..d6ebf8ee 100644 --- a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.pyi +++ b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.pyi @@ -171,6 +171,7 @@ class FfiRequest(google.protobuf.message.Message): REMOTE_DATA_TRACK_IS_PUBLISHED_FIELD_NUMBER: builtins.int DATA_TRACK_STREAM_READ_FIELD_NUMBER: builtins.int SIMULATE_SCENARIO_FIELD_NUMBER: builtins.int + READY_FOR_ROOM_EVENT_FIELD_NUMBER: builtins.int @property def dispose(self) -> global___DisposeRequest: ... @property @@ -347,6 +348,10 @@ class FfiRequest(google.protobuf.message.Message): def simulate_scenario(self) -> room_pb2.SimulateScenarioRequest: """Reconnection / chaos testing""" + @property + def ready_for_room_event(self) -> room_pb2.ReadyForRoomEventRequest: + """Room event ready handshake""" + def __init__( self, *, @@ -425,10 +430,11 @@ class FfiRequest(google.protobuf.message.Message): remote_data_track_is_published: data_track_pb2.RemoteDataTrackIsPublishedRequest | None = ..., data_track_stream_read: data_track_pb2.DataTrackStreamReadRequest | None = ..., simulate_scenario: room_pb2.SimulateScenarioRequest | None = ..., + ready_for_room_event: room_pb2.ReadyForRoomEventRequest | None = ..., ) -> None: ... - def HasField(self, field_name: typing.Literal["apm_process_reverse_stream", b"apm_process_reverse_stream", "apm_process_stream", b"apm_process_stream", "apm_set_stream_delay", b"apm_set_stream_delay", "audio_stream_from_participant", b"audio_stream_from_participant", "byte_read_all", b"byte_read_all", "byte_read_incremental", b"byte_read_incremental", "byte_stream_close", b"byte_stream_close", "byte_stream_open", b"byte_stream_open", "byte_stream_write", b"byte_stream_write", "byte_write_to_file", b"byte_write_to_file", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "clear_audio_buffer", b"clear_audio_buffer", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "data_track_stream_read", b"data_track_stream_read", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "edit_chat_message", b"edit_chat_message", "enable_remote_track", b"enable_remote_track", "enable_remote_track_publication", b"enable_remote_track_publication", "flush_sox_resampler", b"flush_sox_resampler", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "load_audio_filter_plugin", b"load_audio_filter_plugin", "local_data_track_is_published", b"local_data_track_is_published", "local_data_track_try_push", b"local_data_track_try_push", "local_data_track_unpublish", b"local_data_track_unpublish", "local_track_mute", b"local_track_mute", "message", b"message", "new_apm", b"new_apm", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_sox_resampler", b"new_sox_resampler", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "perform_rpc", b"perform_rpc", "publish_data", b"publish_data", "publish_data_track", b"publish_data_track", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "push_sox_resampler", b"push_sox_resampler", "register_rpc_method", b"register_rpc_method", "remix_and_resample", b"remix_and_resample", "remote_data_track_is_published", b"remote_data_track_is_published", "rpc_method_invocation_response", b"rpc_method_invocation_response", "send_bytes", b"send_bytes", "send_chat_message", b"send_chat_message", "send_file", b"send_file", "send_stream_chunk", b"send_stream_chunk", "send_stream_header", b"send_stream_header", "send_stream_trailer", b"send_stream_trailer", "send_text", b"send_text", "set_data_channel_buffered_amount_low_threshold", b"set_data_channel_buffered_amount_low_threshold", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_remote_track_publication_quality", b"set_remote_track_publication_quality", "set_subscribed", b"set_subscribed", "set_track_subscription_permissions", b"set_track_subscription_permissions", "simulate_scenario", b"simulate_scenario", "subscribe_data_track", b"subscribe_data_track", "text_read_all", b"text_read_all", "text_read_incremental", b"text_read_incremental", "text_stream_close", b"text_stream_close", "text_stream_open", b"text_stream_open", "text_stream_write", b"text_stream_write", "unpublish_track", b"unpublish_track", "unregister_rpc_method", b"unregister_rpc_method", "update_remote_track_publication_dimension", b"update_remote_track_publication_dimension", "video_convert", b"video_convert", "video_stream_from_participant", b"video_stream_from_participant"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["apm_process_reverse_stream", b"apm_process_reverse_stream", "apm_process_stream", b"apm_process_stream", "apm_set_stream_delay", b"apm_set_stream_delay", "audio_stream_from_participant", b"audio_stream_from_participant", "byte_read_all", b"byte_read_all", "byte_read_incremental", b"byte_read_incremental", "byte_stream_close", b"byte_stream_close", "byte_stream_open", b"byte_stream_open", "byte_stream_write", b"byte_stream_write", "byte_write_to_file", b"byte_write_to_file", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "clear_audio_buffer", b"clear_audio_buffer", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "data_track_stream_read", b"data_track_stream_read", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "edit_chat_message", b"edit_chat_message", "enable_remote_track", b"enable_remote_track", "enable_remote_track_publication", b"enable_remote_track_publication", "flush_sox_resampler", b"flush_sox_resampler", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "load_audio_filter_plugin", b"load_audio_filter_plugin", "local_data_track_is_published", b"local_data_track_is_published", "local_data_track_try_push", b"local_data_track_try_push", "local_data_track_unpublish", b"local_data_track_unpublish", "local_track_mute", b"local_track_mute", "message", b"message", "new_apm", b"new_apm", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_sox_resampler", b"new_sox_resampler", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "perform_rpc", b"perform_rpc", "publish_data", b"publish_data", "publish_data_track", b"publish_data_track", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "push_sox_resampler", b"push_sox_resampler", "register_rpc_method", b"register_rpc_method", "remix_and_resample", b"remix_and_resample", "remote_data_track_is_published", b"remote_data_track_is_published", "rpc_method_invocation_response", b"rpc_method_invocation_response", "send_bytes", b"send_bytes", "send_chat_message", b"send_chat_message", "send_file", b"send_file", "send_stream_chunk", b"send_stream_chunk", "send_stream_header", b"send_stream_header", "send_stream_trailer", b"send_stream_trailer", "send_text", b"send_text", "set_data_channel_buffered_amount_low_threshold", b"set_data_channel_buffered_amount_low_threshold", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_remote_track_publication_quality", b"set_remote_track_publication_quality", "set_subscribed", b"set_subscribed", "set_track_subscription_permissions", b"set_track_subscription_permissions", "simulate_scenario", b"simulate_scenario", "subscribe_data_track", b"subscribe_data_track", "text_read_all", b"text_read_all", "text_read_incremental", b"text_read_incremental", "text_stream_close", b"text_stream_close", "text_stream_open", b"text_stream_open", "text_stream_write", b"text_stream_write", "unpublish_track", b"unpublish_track", "unregister_rpc_method", b"unregister_rpc_method", "update_remote_track_publication_dimension", b"update_remote_track_publication_dimension", "video_convert", b"video_convert", "video_stream_from_participant", b"video_stream_from_participant"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.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", "local_track_mute", "enable_remote_track", "get_stats", "set_track_subscription_permissions", "new_video_stream", "new_video_source", "capture_video_frame", "video_convert", "video_stream_from_participant", "new_audio_stream", "new_audio_source", "capture_audio_frame", "clear_audio_buffer", "new_audio_resampler", "remix_and_resample", "e2ee", "audio_stream_from_participant", "new_sox_resampler", "push_sox_resampler", "flush_sox_resampler", "send_chat_message", "edit_chat_message", "perform_rpc", "register_rpc_method", "unregister_rpc_method", "rpc_method_invocation_response", "enable_remote_track_publication", "update_remote_track_publication_dimension", "send_stream_header", "send_stream_chunk", "send_stream_trailer", "set_data_channel_buffered_amount_low_threshold", "load_audio_filter_plugin", "new_apm", "apm_process_stream", "apm_process_reverse_stream", "apm_set_stream_delay", "byte_read_incremental", "byte_read_all", "byte_write_to_file", "text_read_incremental", "text_read_all", "send_file", "send_text", "byte_stream_open", "byte_stream_write", "byte_stream_close", "text_stream_open", "text_stream_write", "text_stream_close", "send_bytes", "set_remote_track_publication_quality", "publish_data_track", "local_data_track_try_push", "local_data_track_unpublish", "local_data_track_is_published", "subscribe_data_track", "remote_data_track_is_published", "data_track_stream_read", "simulate_scenario"] | None: ... + def HasField(self, field_name: typing.Literal["apm_process_reverse_stream", b"apm_process_reverse_stream", "apm_process_stream", b"apm_process_stream", "apm_set_stream_delay", b"apm_set_stream_delay", "audio_stream_from_participant", b"audio_stream_from_participant", "byte_read_all", b"byte_read_all", "byte_read_incremental", b"byte_read_incremental", "byte_stream_close", b"byte_stream_close", "byte_stream_open", b"byte_stream_open", "byte_stream_write", b"byte_stream_write", "byte_write_to_file", b"byte_write_to_file", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "clear_audio_buffer", b"clear_audio_buffer", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "data_track_stream_read", b"data_track_stream_read", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "edit_chat_message", b"edit_chat_message", "enable_remote_track", b"enable_remote_track", "enable_remote_track_publication", b"enable_remote_track_publication", "flush_sox_resampler", b"flush_sox_resampler", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "load_audio_filter_plugin", b"load_audio_filter_plugin", "local_data_track_is_published", b"local_data_track_is_published", "local_data_track_try_push", b"local_data_track_try_push", "local_data_track_unpublish", b"local_data_track_unpublish", "local_track_mute", b"local_track_mute", "message", b"message", "new_apm", b"new_apm", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_sox_resampler", b"new_sox_resampler", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "perform_rpc", b"perform_rpc", "publish_data", b"publish_data", "publish_data_track", b"publish_data_track", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "push_sox_resampler", b"push_sox_resampler", "ready_for_room_event", b"ready_for_room_event", "register_rpc_method", b"register_rpc_method", "remix_and_resample", b"remix_and_resample", "remote_data_track_is_published", b"remote_data_track_is_published", "rpc_method_invocation_response", b"rpc_method_invocation_response", "send_bytes", b"send_bytes", "send_chat_message", b"send_chat_message", "send_file", b"send_file", "send_stream_chunk", b"send_stream_chunk", "send_stream_header", b"send_stream_header", "send_stream_trailer", b"send_stream_trailer", "send_text", b"send_text", "set_data_channel_buffered_amount_low_threshold", b"set_data_channel_buffered_amount_low_threshold", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_remote_track_publication_quality", b"set_remote_track_publication_quality", "set_subscribed", b"set_subscribed", "set_track_subscription_permissions", b"set_track_subscription_permissions", "simulate_scenario", b"simulate_scenario", "subscribe_data_track", b"subscribe_data_track", "text_read_all", b"text_read_all", "text_read_incremental", b"text_read_incremental", "text_stream_close", b"text_stream_close", "text_stream_open", b"text_stream_open", "text_stream_write", b"text_stream_write", "unpublish_track", b"unpublish_track", "unregister_rpc_method", b"unregister_rpc_method", "update_remote_track_publication_dimension", b"update_remote_track_publication_dimension", "video_convert", b"video_convert", "video_stream_from_participant", b"video_stream_from_participant"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["apm_process_reverse_stream", b"apm_process_reverse_stream", "apm_process_stream", b"apm_process_stream", "apm_set_stream_delay", b"apm_set_stream_delay", "audio_stream_from_participant", b"audio_stream_from_participant", "byte_read_all", b"byte_read_all", "byte_read_incremental", b"byte_read_incremental", "byte_stream_close", b"byte_stream_close", "byte_stream_open", b"byte_stream_open", "byte_stream_write", b"byte_stream_write", "byte_write_to_file", b"byte_write_to_file", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "clear_audio_buffer", b"clear_audio_buffer", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "data_track_stream_read", b"data_track_stream_read", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "edit_chat_message", b"edit_chat_message", "enable_remote_track", b"enable_remote_track", "enable_remote_track_publication", b"enable_remote_track_publication", "flush_sox_resampler", b"flush_sox_resampler", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "load_audio_filter_plugin", b"load_audio_filter_plugin", "local_data_track_is_published", b"local_data_track_is_published", "local_data_track_try_push", b"local_data_track_try_push", "local_data_track_unpublish", b"local_data_track_unpublish", "local_track_mute", b"local_track_mute", "message", b"message", "new_apm", b"new_apm", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_sox_resampler", b"new_sox_resampler", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "perform_rpc", b"perform_rpc", "publish_data", b"publish_data", "publish_data_track", b"publish_data_track", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "push_sox_resampler", b"push_sox_resampler", "ready_for_room_event", b"ready_for_room_event", "register_rpc_method", b"register_rpc_method", "remix_and_resample", b"remix_and_resample", "remote_data_track_is_published", b"remote_data_track_is_published", "rpc_method_invocation_response", b"rpc_method_invocation_response", "send_bytes", b"send_bytes", "send_chat_message", b"send_chat_message", "send_file", b"send_file", "send_stream_chunk", b"send_stream_chunk", "send_stream_header", b"send_stream_header", "send_stream_trailer", b"send_stream_trailer", "send_text", b"send_text", "set_data_channel_buffered_amount_low_threshold", b"set_data_channel_buffered_amount_low_threshold", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_remote_track_publication_quality", b"set_remote_track_publication_quality", "set_subscribed", b"set_subscribed", "set_track_subscription_permissions", b"set_track_subscription_permissions", "simulate_scenario", b"simulate_scenario", "subscribe_data_track", b"subscribe_data_track", "text_read_all", b"text_read_all", "text_read_incremental", b"text_read_incremental", "text_stream_close", b"text_stream_close", "text_stream_open", b"text_stream_open", "text_stream_write", b"text_stream_write", "unpublish_track", b"unpublish_track", "unregister_rpc_method", b"unregister_rpc_method", "update_remote_track_publication_dimension", b"update_remote_track_publication_dimension", "video_convert", b"video_convert", "video_stream_from_participant", b"video_stream_from_participant"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.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", "local_track_mute", "enable_remote_track", "get_stats", "set_track_subscription_permissions", "new_video_stream", "new_video_source", "capture_video_frame", "video_convert", "video_stream_from_participant", "new_audio_stream", "new_audio_source", "capture_audio_frame", "clear_audio_buffer", "new_audio_resampler", "remix_and_resample", "e2ee", "audio_stream_from_participant", "new_sox_resampler", "push_sox_resampler", "flush_sox_resampler", "send_chat_message", "edit_chat_message", "perform_rpc", "register_rpc_method", "unregister_rpc_method", "rpc_method_invocation_response", "enable_remote_track_publication", "update_remote_track_publication_dimension", "send_stream_header", "send_stream_chunk", "send_stream_trailer", "set_data_channel_buffered_amount_low_threshold", "load_audio_filter_plugin", "new_apm", "apm_process_stream", "apm_process_reverse_stream", "apm_set_stream_delay", "byte_read_incremental", "byte_read_all", "byte_write_to_file", "text_read_incremental", "text_read_all", "send_file", "send_text", "byte_stream_open", "byte_stream_write", "byte_stream_close", "text_stream_open", "text_stream_write", "text_stream_close", "send_bytes", "set_remote_track_publication_quality", "publish_data_track", "local_data_track_try_push", "local_data_track_unpublish", "local_data_track_is_published", "subscribe_data_track", "remote_data_track_is_published", "data_track_stream_read", "simulate_scenario", "ready_for_room_event"] | None: ... global___FfiRequest = FfiRequest @@ -512,6 +518,7 @@ class FfiResponse(google.protobuf.message.Message): REMOTE_DATA_TRACK_IS_PUBLISHED_FIELD_NUMBER: builtins.int DATA_TRACK_STREAM_READ_FIELD_NUMBER: builtins.int SIMULATE_SCENARIO_FIELD_NUMBER: builtins.int + READY_FOR_ROOM_EVENT_FIELD_NUMBER: builtins.int @property def dispose(self) -> global___DisposeResponse: ... @property @@ -686,6 +693,10 @@ class FfiResponse(google.protobuf.message.Message): def simulate_scenario(self) -> room_pb2.SimulateScenarioResponse: """Reconnection / chaos testing""" + @property + def ready_for_room_event(self) -> room_pb2.ReadyForRoomEventResponse: + """Room event ready handshake""" + def __init__( self, *, @@ -763,10 +774,11 @@ class FfiResponse(google.protobuf.message.Message): remote_data_track_is_published: data_track_pb2.RemoteDataTrackIsPublishedResponse | None = ..., data_track_stream_read: data_track_pb2.DataTrackStreamReadResponse | None = ..., simulate_scenario: room_pb2.SimulateScenarioResponse | None = ..., + ready_for_room_event: room_pb2.ReadyForRoomEventResponse | None = ..., ) -> None: ... - def HasField(self, field_name: typing.Literal["apm_process_reverse_stream", b"apm_process_reverse_stream", "apm_process_stream", b"apm_process_stream", "apm_set_stream_delay", b"apm_set_stream_delay", "audio_stream_from_participant", b"audio_stream_from_participant", "byte_read_all", b"byte_read_all", "byte_read_incremental", b"byte_read_incremental", "byte_stream_close", b"byte_stream_close", "byte_stream_open", b"byte_stream_open", "byte_stream_write", b"byte_stream_write", "byte_write_to_file", b"byte_write_to_file", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "clear_audio_buffer", b"clear_audio_buffer", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "data_track_stream_read", b"data_track_stream_read", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "enable_remote_track", b"enable_remote_track", "enable_remote_track_publication", b"enable_remote_track_publication", "flush_sox_resampler", b"flush_sox_resampler", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "load_audio_filter_plugin", b"load_audio_filter_plugin", "local_data_track_is_published", b"local_data_track_is_published", "local_data_track_try_push", b"local_data_track_try_push", "local_data_track_unpublish", b"local_data_track_unpublish", "local_track_mute", b"local_track_mute", "message", b"message", "new_apm", b"new_apm", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_sox_resampler", b"new_sox_resampler", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "perform_rpc", b"perform_rpc", "publish_data", b"publish_data", "publish_data_track", b"publish_data_track", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "push_sox_resampler", b"push_sox_resampler", "register_rpc_method", b"register_rpc_method", "remix_and_resample", b"remix_and_resample", "remote_data_track_is_published", b"remote_data_track_is_published", "rpc_method_invocation_response", b"rpc_method_invocation_response", "send_bytes", b"send_bytes", "send_chat_message", b"send_chat_message", "send_file", b"send_file", "send_stream_chunk", b"send_stream_chunk", "send_stream_header", b"send_stream_header", "send_stream_trailer", b"send_stream_trailer", "send_text", b"send_text", "set_data_channel_buffered_amount_low_threshold", b"set_data_channel_buffered_amount_low_threshold", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_remote_track_publication_quality", b"set_remote_track_publication_quality", "set_subscribed", b"set_subscribed", "set_track_subscription_permissions", b"set_track_subscription_permissions", "simulate_scenario", b"simulate_scenario", "subscribe_data_track", b"subscribe_data_track", "text_read_all", b"text_read_all", "text_read_incremental", b"text_read_incremental", "text_stream_close", b"text_stream_close", "text_stream_open", b"text_stream_open", "text_stream_write", b"text_stream_write", "unpublish_track", b"unpublish_track", "unregister_rpc_method", b"unregister_rpc_method", "update_remote_track_publication_dimension", b"update_remote_track_publication_dimension", "video_convert", b"video_convert", "video_stream_from_participant", b"video_stream_from_participant"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["apm_process_reverse_stream", b"apm_process_reverse_stream", "apm_process_stream", b"apm_process_stream", "apm_set_stream_delay", b"apm_set_stream_delay", "audio_stream_from_participant", b"audio_stream_from_participant", "byte_read_all", b"byte_read_all", "byte_read_incremental", b"byte_read_incremental", "byte_stream_close", b"byte_stream_close", "byte_stream_open", b"byte_stream_open", "byte_stream_write", b"byte_stream_write", "byte_write_to_file", b"byte_write_to_file", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "clear_audio_buffer", b"clear_audio_buffer", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "data_track_stream_read", b"data_track_stream_read", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "enable_remote_track", b"enable_remote_track", "enable_remote_track_publication", b"enable_remote_track_publication", "flush_sox_resampler", b"flush_sox_resampler", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "load_audio_filter_plugin", b"load_audio_filter_plugin", "local_data_track_is_published", b"local_data_track_is_published", "local_data_track_try_push", b"local_data_track_try_push", "local_data_track_unpublish", b"local_data_track_unpublish", "local_track_mute", b"local_track_mute", "message", b"message", "new_apm", b"new_apm", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_sox_resampler", b"new_sox_resampler", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "perform_rpc", b"perform_rpc", "publish_data", b"publish_data", "publish_data_track", b"publish_data_track", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "push_sox_resampler", b"push_sox_resampler", "register_rpc_method", b"register_rpc_method", "remix_and_resample", b"remix_and_resample", "remote_data_track_is_published", b"remote_data_track_is_published", "rpc_method_invocation_response", b"rpc_method_invocation_response", "send_bytes", b"send_bytes", "send_chat_message", b"send_chat_message", "send_file", b"send_file", "send_stream_chunk", b"send_stream_chunk", "send_stream_header", b"send_stream_header", "send_stream_trailer", b"send_stream_trailer", "send_text", b"send_text", "set_data_channel_buffered_amount_low_threshold", b"set_data_channel_buffered_amount_low_threshold", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_remote_track_publication_quality", b"set_remote_track_publication_quality", "set_subscribed", b"set_subscribed", "set_track_subscription_permissions", b"set_track_subscription_permissions", "simulate_scenario", b"simulate_scenario", "subscribe_data_track", b"subscribe_data_track", "text_read_all", b"text_read_all", "text_read_incremental", b"text_read_incremental", "text_stream_close", b"text_stream_close", "text_stream_open", b"text_stream_open", "text_stream_write", b"text_stream_write", "unpublish_track", b"unpublish_track", "unregister_rpc_method", b"unregister_rpc_method", "update_remote_track_publication_dimension", b"update_remote_track_publication_dimension", "video_convert", b"video_convert", "video_stream_from_participant", b"video_stream_from_participant"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.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", "local_track_mute", "enable_remote_track", "get_stats", "set_track_subscription_permissions", "new_video_stream", "new_video_source", "capture_video_frame", "video_convert", "video_stream_from_participant", "new_audio_stream", "new_audio_source", "capture_audio_frame", "clear_audio_buffer", "new_audio_resampler", "remix_and_resample", "audio_stream_from_participant", "e2ee", "new_sox_resampler", "push_sox_resampler", "flush_sox_resampler", "send_chat_message", "perform_rpc", "register_rpc_method", "unregister_rpc_method", "rpc_method_invocation_response", "enable_remote_track_publication", "update_remote_track_publication_dimension", "send_stream_header", "send_stream_chunk", "send_stream_trailer", "set_data_channel_buffered_amount_low_threshold", "load_audio_filter_plugin", "new_apm", "apm_process_stream", "apm_process_reverse_stream", "apm_set_stream_delay", "byte_read_incremental", "byte_read_all", "byte_write_to_file", "text_read_incremental", "text_read_all", "send_file", "send_text", "byte_stream_open", "byte_stream_write", "byte_stream_close", "text_stream_open", "text_stream_write", "text_stream_close", "send_bytes", "set_remote_track_publication_quality", "publish_data_track", "local_data_track_try_push", "local_data_track_unpublish", "local_data_track_is_published", "subscribe_data_track", "remote_data_track_is_published", "data_track_stream_read", "simulate_scenario"] | None: ... + def HasField(self, field_name: typing.Literal["apm_process_reverse_stream", b"apm_process_reverse_stream", "apm_process_stream", b"apm_process_stream", "apm_set_stream_delay", b"apm_set_stream_delay", "audio_stream_from_participant", b"audio_stream_from_participant", "byte_read_all", b"byte_read_all", "byte_read_incremental", b"byte_read_incremental", "byte_stream_close", b"byte_stream_close", "byte_stream_open", b"byte_stream_open", "byte_stream_write", b"byte_stream_write", "byte_write_to_file", b"byte_write_to_file", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "clear_audio_buffer", b"clear_audio_buffer", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "data_track_stream_read", b"data_track_stream_read", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "enable_remote_track", b"enable_remote_track", "enable_remote_track_publication", b"enable_remote_track_publication", "flush_sox_resampler", b"flush_sox_resampler", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "load_audio_filter_plugin", b"load_audio_filter_plugin", "local_data_track_is_published", b"local_data_track_is_published", "local_data_track_try_push", b"local_data_track_try_push", "local_data_track_unpublish", b"local_data_track_unpublish", "local_track_mute", b"local_track_mute", "message", b"message", "new_apm", b"new_apm", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_sox_resampler", b"new_sox_resampler", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "perform_rpc", b"perform_rpc", "publish_data", b"publish_data", "publish_data_track", b"publish_data_track", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "push_sox_resampler", b"push_sox_resampler", "ready_for_room_event", b"ready_for_room_event", "register_rpc_method", b"register_rpc_method", "remix_and_resample", b"remix_and_resample", "remote_data_track_is_published", b"remote_data_track_is_published", "rpc_method_invocation_response", b"rpc_method_invocation_response", "send_bytes", b"send_bytes", "send_chat_message", b"send_chat_message", "send_file", b"send_file", "send_stream_chunk", b"send_stream_chunk", "send_stream_header", b"send_stream_header", "send_stream_trailer", b"send_stream_trailer", "send_text", b"send_text", "set_data_channel_buffered_amount_low_threshold", b"set_data_channel_buffered_amount_low_threshold", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_remote_track_publication_quality", b"set_remote_track_publication_quality", "set_subscribed", b"set_subscribed", "set_track_subscription_permissions", b"set_track_subscription_permissions", "simulate_scenario", b"simulate_scenario", "subscribe_data_track", b"subscribe_data_track", "text_read_all", b"text_read_all", "text_read_incremental", b"text_read_incremental", "text_stream_close", b"text_stream_close", "text_stream_open", b"text_stream_open", "text_stream_write", b"text_stream_write", "unpublish_track", b"unpublish_track", "unregister_rpc_method", b"unregister_rpc_method", "update_remote_track_publication_dimension", b"update_remote_track_publication_dimension", "video_convert", b"video_convert", "video_stream_from_participant", b"video_stream_from_participant"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["apm_process_reverse_stream", b"apm_process_reverse_stream", "apm_process_stream", b"apm_process_stream", "apm_set_stream_delay", b"apm_set_stream_delay", "audio_stream_from_participant", b"audio_stream_from_participant", "byte_read_all", b"byte_read_all", "byte_read_incremental", b"byte_read_incremental", "byte_stream_close", b"byte_stream_close", "byte_stream_open", b"byte_stream_open", "byte_stream_write", b"byte_stream_write", "byte_write_to_file", b"byte_write_to_file", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "clear_audio_buffer", b"clear_audio_buffer", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "data_track_stream_read", b"data_track_stream_read", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "enable_remote_track", b"enable_remote_track", "enable_remote_track_publication", b"enable_remote_track_publication", "flush_sox_resampler", b"flush_sox_resampler", "get_session_stats", b"get_session_stats", "get_stats", b"get_stats", "load_audio_filter_plugin", b"load_audio_filter_plugin", "local_data_track_is_published", b"local_data_track_is_published", "local_data_track_try_push", b"local_data_track_try_push", "local_data_track_unpublish", b"local_data_track_unpublish", "local_track_mute", b"local_track_mute", "message", b"message", "new_apm", b"new_apm", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_sox_resampler", b"new_sox_resampler", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "perform_rpc", b"perform_rpc", "publish_data", b"publish_data", "publish_data_track", b"publish_data_track", "publish_sip_dtmf", b"publish_sip_dtmf", "publish_track", b"publish_track", "publish_transcription", b"publish_transcription", "push_sox_resampler", b"push_sox_resampler", "ready_for_room_event", b"ready_for_room_event", "register_rpc_method", b"register_rpc_method", "remix_and_resample", b"remix_and_resample", "remote_data_track_is_published", b"remote_data_track_is_published", "rpc_method_invocation_response", b"rpc_method_invocation_response", "send_bytes", b"send_bytes", "send_chat_message", b"send_chat_message", "send_file", b"send_file", "send_stream_chunk", b"send_stream_chunk", "send_stream_header", b"send_stream_header", "send_stream_trailer", b"send_stream_trailer", "send_text", b"send_text", "set_data_channel_buffered_amount_low_threshold", b"set_data_channel_buffered_amount_low_threshold", "set_local_attributes", b"set_local_attributes", "set_local_metadata", b"set_local_metadata", "set_local_name", b"set_local_name", "set_remote_track_publication_quality", b"set_remote_track_publication_quality", "set_subscribed", b"set_subscribed", "set_track_subscription_permissions", b"set_track_subscription_permissions", "simulate_scenario", b"simulate_scenario", "subscribe_data_track", b"subscribe_data_track", "text_read_all", b"text_read_all", "text_read_incremental", b"text_read_incremental", "text_stream_close", b"text_stream_close", "text_stream_open", b"text_stream_open", "text_stream_write", b"text_stream_write", "unpublish_track", b"unpublish_track", "unregister_rpc_method", b"unregister_rpc_method", "update_remote_track_publication_dimension", b"update_remote_track_publication_dimension", "video_convert", b"video_convert", "video_stream_from_participant", b"video_stream_from_participant"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.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", "local_track_mute", "enable_remote_track", "get_stats", "set_track_subscription_permissions", "new_video_stream", "new_video_source", "capture_video_frame", "video_convert", "video_stream_from_participant", "new_audio_stream", "new_audio_source", "capture_audio_frame", "clear_audio_buffer", "new_audio_resampler", "remix_and_resample", "audio_stream_from_participant", "e2ee", "new_sox_resampler", "push_sox_resampler", "flush_sox_resampler", "send_chat_message", "perform_rpc", "register_rpc_method", "unregister_rpc_method", "rpc_method_invocation_response", "enable_remote_track_publication", "update_remote_track_publication_dimension", "send_stream_header", "send_stream_chunk", "send_stream_trailer", "set_data_channel_buffered_amount_low_threshold", "load_audio_filter_plugin", "new_apm", "apm_process_stream", "apm_process_reverse_stream", "apm_set_stream_delay", "byte_read_incremental", "byte_read_all", "byte_write_to_file", "text_read_incremental", "text_read_all", "send_file", "send_text", "byte_stream_open", "byte_stream_write", "byte_stream_close", "text_stream_open", "text_stream_write", "text_stream_close", "send_bytes", "set_remote_track_publication_quality", "publish_data_track", "local_data_track_try_push", "local_data_track_unpublish", "local_data_track_is_published", "subscribe_data_track", "remote_data_track_is_published", "data_track_stream_read", "simulate_scenario", "ready_for_room_event"] | None: ... global___FfiResponse = FfiResponse diff --git a/livekit-rtc/livekit/rtc/_proto/room_pb2.py b/livekit-rtc/livekit/rtc/_proto/room_pb2.py index 8f1a6c51..c49407e1 100644 --- a/livekit-rtc/livekit/rtc/_proto/room_pb2.py +++ b/livekit-rtc/livekit/rtc/_proto/room_pb2.py @@ -22,7 +22,7 @@ from . import data_track_pb2 as data__track__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\x1a\x11\x64\x61ta_stream.proto\x1a\x10\x64\x61ta_track.proto\"s\n\x0e\x43onnectRequest\x12\x0b\n\x03url\x18\x01 \x02(\t\x12\r\n\x05token\x18\x02 \x02(\t\x12+\n\x07options\x18\x03 \x02(\x0b\x32\x1a.livekit.proto.RoomOptions\x12\x18\n\x10request_async_id\x18\x04 \x01(\x04\"#\n\x0f\x43onnectResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\xbf\x03\n\x0f\x43onnectCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12\x37\n\x06result\x18\x03 \x01(\x0b\x32%.livekit.proto.ConnectCallback.ResultH\x00\x1a\x89\x01\n\x15ParticipantWithTracks\x12\x34\n\x0bparticipant\x18\x01 \x02(\x0b\x32\x1f.livekit.proto.OwnedParticipant\x12:\n\x0cpublications\x18\x02 \x03(\x0b\x32$.livekit.proto.OwnedTrackPublication\x1a\xb8\x01\n\x06Result\x12&\n\x04room\x18\x01 \x02(\x0b\x32\x18.livekit.proto.OwnedRoom\x12:\n\x11local_participant\x18\x02 \x02(\x0b\x32\x1f.livekit.proto.OwnedParticipant\x12J\n\x0cparticipants\x18\x03 \x03(\x0b\x32\x34.livekit.proto.ConnectCallback.ParticipantWithTracksB\t\n\x07message\"s\n\x11\x44isconnectRequest\x12\x13\n\x0broom_handle\x18\x01 \x02(\x04\x12\x18\n\x10request_async_id\x18\x02 \x01(\x04\x12/\n\x06reason\x18\x03 \x01(\x0e\x32\x1f.livekit.proto.DisconnectReason\"&\n\x12\x44isconnectResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"&\n\x12\x44isconnectCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\x7f\n\x17SimulateScenarioRequest\x12\x13\n\x0broom_handle\x18\x01 \x02(\x04\x12\x35\n\x08scenario\x18\x02 \x02(\x0e\x32#.livekit.proto.SimulateScenarioKind\x12\x18\n\x10request_async_id\x18\x03 \x01(\x04\",\n\x18SimulateScenarioResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\";\n\x18SimulateScenarioCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x9c\x01\n\x13PublishTrackRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x14\n\x0ctrack_handle\x18\x02 \x02(\x04\x12\x33\n\x07options\x18\x03 \x02(\x0b\x32\".livekit.proto.TrackPublishOptions\x12\x18\n\x10request_async_id\x18\x04 \x01(\x04\"(\n\x14PublishTrackResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\x81\x01\n\x14PublishTrackCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12;\n\x0bpublication\x18\x03 \x01(\x0b\x32$.livekit.proto.OwnedTrackPublicationH\x00\x42\t\n\x07message\"\x81\x01\n\x15UnpublishTrackRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\x12\x19\n\x11stop_on_unpublish\x18\x03 \x02(\x08\x12\x18\n\x10request_async_id\x18\x04 \x01(\x04\"*\n\x16UnpublishTrackResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"9\n\x16UnpublishTrackCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\xd3\x01\n\x12PublishDataRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x10\n\x08\x64\x61ta_ptr\x18\x02 \x02(\x04\x12\x10\n\x08\x64\x61ta_len\x18\x03 \x02(\x04\x12\x10\n\x08reliable\x18\x04 \x02(\x08\x12\x1c\n\x10\x64\x65stination_sids\x18\x05 \x03(\tB\x02\x18\x01\x12\r\n\x05topic\x18\x06 \x01(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x07 \x03(\t\x12\x18\n\x10request_async_id\x18\x08 \x01(\x04\"\'\n\x13PublishDataResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"6\n\x13PublishDataCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\xc0\x01\n\x1bPublishTranscriptionRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x1c\n\x14participant_identity\x18\x02 \x02(\t\x12\x10\n\x08track_id\x18\x03 \x02(\t\x12\x35\n\x08segments\x18\x04 \x03(\x0b\x32#.livekit.proto.TranscriptionSegment\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"0\n\x1cPublishTranscriptionResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"?\n\x1cPublishTranscriptionCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x90\x01\n\x15PublishSipDtmfRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x0c\n\x04\x63ode\x18\x02 \x02(\r\x12\r\n\x05\x64igit\x18\x03 \x02(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x04 \x03(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"*\n\x16PublishSipDtmfResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"9\n\x16PublishSipDtmfCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"g\n\x17SetLocalMetadataRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x10\n\x08metadata\x18\x02 \x02(\t\x12\x18\n\x10request_async_id\x18\x03 \x01(\x04\",\n\x18SetLocalMetadataResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\";\n\x18SetLocalMetadataCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x9e\x01\n\x16SendChatMessageRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x0f\n\x07message\x18\x02 \x02(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x03 \x03(\t\x12\x17\n\x0fsender_identity\x18\x04 \x01(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"\xd6\x01\n\x16\x45\x64itChatMessageRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x11\n\tedit_text\x18\x02 \x02(\t\x12\x34\n\x10original_message\x18\x03 \x02(\x0b\x32\x1a.livekit.proto.ChatMessage\x12\x1e\n\x16\x64\x65stination_identities\x18\x04 \x03(\t\x12\x17\n\x0fsender_identity\x18\x05 \x01(\t\x12\x18\n\x10request_async_id\x18\x06 \x01(\x04\"+\n\x17SendChatMessageResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"{\n\x17SendChatMessageCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12\x32\n\x0c\x63hat_message\x18\x03 \x01(\x0b\x32\x1a.livekit.proto.ChatMessageH\x00\x42\t\n\x07message\"\x8b\x01\n\x19SetLocalAttributesRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x32\n\nattributes\x18\x02 \x03(\x0b\x32\x1e.livekit.proto.AttributesEntry\x12\x18\n\x10request_async_id\x18\x03 \x01(\x04\"-\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x02(\t\x12\r\n\x05value\x18\x02 \x02(\t\".\n\x1aSetLocalAttributesResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"=\n\x1aSetLocalAttributesCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"_\n\x13SetLocalNameRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x0c\n\x04name\x18\x02 \x02(\t\x12\x18\n\x10request_async_id\x18\x03 \x01(\x04\"(\n\x14SetLocalNameResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"7\n\x14SetLocalNameCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"E\n\x14SetSubscribedRequest\x12\x11\n\tsubscribe\x18\x01 \x02(\x08\x12\x1a\n\x12publication_handle\x18\x02 \x02(\x04\"\x17\n\x15SetSubscribedResponse\"G\n\x16GetSessionStatsRequest\x12\x13\n\x0broom_handle\x18\x01 \x02(\x04\x12\x18\n\x10request_async_id\x18\x02 \x01(\x04\"+\n\x17GetSessionStatsResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\xf7\x01\n\x17GetSessionStatsCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12?\n\x06result\x18\x03 \x01(\x0b\x32-.livekit.proto.GetSessionStatsCallback.ResultH\x00\x1am\n\x06Result\x12\x30\n\x0fpublisher_stats\x18\x01 \x03(\x0b\x32\x17.livekit.proto.RtcStats\x12\x31\n\x10subscriber_stats\x18\x02 \x03(\x0b\x32\x17.livekit.proto.RtcStatsB\t\n\x07message\";\n\rVideoEncoding\x12\x13\n\x0bmax_bitrate\x18\x01 \x02(\x04\x12\x15\n\rmax_framerate\x18\x02 \x02(\x01\"$\n\rAudioEncoding\x12\x13\n\x0bmax_bitrate\x18\x01 \x02(\x04\"\xfb\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\x12\x0e\n\x06stream\x18\x08 \x01(\t\x12\x19\n\x11preconnect_buffer\x18\t \x01(\x08\x12\x44\n\x17packet_trailer_features\x18\n \x03(\x0e\x32#.livekit.proto.PacketTrailerFeature\"=\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\"\xc4\x01\n\tRtcConfig\x12;\n\x12ice_transport_type\x18\x01 \x01(\x0e\x32\x1f.livekit.proto.IceTransportType\x12K\n\x1a\x63ontinual_gathering_policy\x18\x02 \x01(\x0e\x32\'.livekit.proto.ContinualGatheringPolicy\x12-\n\x0bice_servers\x18\x03 \x03(\x0b\x32\x18.livekit.proto.IceServer\"\xae\x02\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.E2eeOptionsB\x02\x18\x01\x12,\n\nrtc_config\x18\x05 \x01(\x0b\x32\x18.livekit.proto.RtcConfig\x12\x14\n\x0cjoin_retries\x18\x06 \x01(\r\x12.\n\nencryption\x18\x07 \x01(\x0b\x32\x1a.livekit.proto.E2eeOptions\x12\x1e\n\x16single_peer_connection\x18\x08 \x01(\x08\x12\x1a\n\x12\x63onnect_timeout_ms\x18\t \x01(\x04\"w\n\x14TranscriptionSegment\x12\n\n\x02id\x18\x01 \x02(\t\x12\x0c\n\x04text\x18\x02 \x02(\t\x12\x12\n\nstart_time\x18\x03 \x02(\x04\x12\x10\n\x08\x65nd_time\x18\x04 \x02(\x04\x12\r\n\x05\x66inal\x18\x05 \x02(\x08\x12\x10\n\x08language\x18\x06 \x02(\t\"0\n\nBufferInfo\x12\x10\n\x08\x64\x61ta_ptr\x18\x01 \x02(\x04\x12\x10\n\x08\x64\x61ta_len\x18\x02 \x02(\x04\"e\n\x0bOwnedBuffer\x12-\n\x06handle\x18\x01 \x02(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12\'\n\x04\x64\x61ta\x18\x02 \x02(\x0b\x32\x19.livekit.proto.BufferInfo\"\xce\x17\n\tRoomEvent\x12\x13\n\x0broom_handle\x18\x01 \x02(\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\x45\n\x16local_track_subscribed\x18\x06 \x01(\x0b\x32#.livekit.proto.LocalTrackSubscribedH\x00\x12\x38\n\x0ftrack_published\x18\x07 \x01(\x0b\x32\x1d.livekit.proto.TrackPublishedH\x00\x12<\n\x11track_unpublished\x18\x08 \x01(\x0b\x32\x1f.livekit.proto.TrackUnpublishedH\x00\x12:\n\x10track_subscribed\x18\t \x01(\x0b\x32\x1e.livekit.proto.TrackSubscribedH\x00\x12>\n\x12track_unsubscribed\x18\n \x01(\x0b\x32 .livekit.proto.TrackUnsubscribedH\x00\x12K\n\x19track_subscription_failed\x18\x0b \x01(\x0b\x32&.livekit.proto.TrackSubscriptionFailedH\x00\x12\x30\n\x0btrack_muted\x18\x0c \x01(\x0b\x32\x19.livekit.proto.TrackMutedH\x00\x12\x34\n\rtrack_unmuted\x18\r \x01(\x0b\x32\x1b.livekit.proto.TrackUnmutedH\x00\x12G\n\x17\x61\x63tive_speakers_changed\x18\x0e \x01(\x0b\x32$.livekit.proto.ActiveSpeakersChangedH\x00\x12\x43\n\x15room_metadata_changed\x18\x0f \x01(\x0b\x32\".livekit.proto.RoomMetadataChangedH\x00\x12\x39\n\x10room_sid_changed\x18\x10 \x01(\x0b\x32\x1d.livekit.proto.RoomSidChangedH\x00\x12Q\n\x1cparticipant_metadata_changed\x18\x11 \x01(\x0b\x32).livekit.proto.ParticipantMetadataChangedH\x00\x12I\n\x18participant_name_changed\x18\x12 \x01(\x0b\x32%.livekit.proto.ParticipantNameChangedH\x00\x12U\n\x1eparticipant_attributes_changed\x18\x13 \x01(\x0b\x32+.livekit.proto.ParticipantAttributesChangedH\x00\x12M\n\x1a\x63onnection_quality_changed\x18\x14 \x01(\x0b\x32\'.livekit.proto.ConnectionQualityChangedH\x00\x12I\n\x18\x63onnection_state_changed\x18\x15 \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\x12:\n\x0c\x63hat_message\x18\x1d \x01(\x0b\x32\".livekit.proto.ChatMessageReceivedH\x00\x12I\n\x16stream_header_received\x18\x1e \x01(\x0b\x32\'.livekit.proto.DataStreamHeaderReceivedH\x00\x12G\n\x15stream_chunk_received\x18\x1f \x01(\x0b\x32&.livekit.proto.DataStreamChunkReceivedH\x00\x12K\n\x17stream_trailer_received\x18 \x01(\x0b\x32(.livekit.proto.DataStreamTrailerReceivedH\x00\x12i\n\"data_channel_low_threshold_changed\x18! \x01(\x0b\x32;.livekit.proto.DataChannelBufferedAmountLowThresholdChangedH\x00\x12=\n\x12\x62yte_stream_opened\x18\" \x01(\x0b\x32\x1f.livekit.proto.ByteStreamOpenedH\x00\x12=\n\x12text_stream_opened\x18# \x01(\x0b\x32\x1f.livekit.proto.TextStreamOpenedH\x00\x12/\n\x0croom_updated\x18$ \x01(\x0b\x32\x17.livekit.proto.RoomInfoH\x00\x12(\n\x05moved\x18% \x01(\x0b\x32\x17.livekit.proto.RoomInfoH\x00\x12\x42\n\x14participants_updated\x18& \x01(\x0b\x32\".livekit.proto.ParticipantsUpdatedH\x00\x12\x62\n%participant_encryption_status_changed\x18\' \x01(\x0b\x32\x31.livekit.proto.ParticipantEncryptionStatusChangedH\x00\x12U\n\x1eparticipant_permission_changed\x18) \x01(\x0b\x32+.livekit.proto.ParticipantPermissionChangedH\x00\x12\x38\n\x0ftoken_refreshed\x18( \x01(\x0b\x32\x1d.livekit.proto.TokenRefreshedH\x00\x12>\n\x12participant_active\x18* \x01(\x0b\x32 .livekit.proto.ParticipantActiveH\x00\x12\x41\n\x14\x64\x61ta_track_published\x18+ \x01(\x0b\x32!.livekit.proto.DataTrackPublishedH\x00\x12\x45\n\x16\x64\x61ta_track_unpublished\x18, \x01(\x0b\x32#.livekit.proto.DataTrackUnpublishedH\x00\x12G\n\x17local_track_republished\x18- \x01(\x0b\x32$.livekit.proto.LocalTrackRepublishedH\x00\x42\t\n\x07message\"\xc9\x02\n\x08RoomInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x02(\t\x12\x10\n\x08metadata\x18\x03 \x02(\t\x12.\n&lossy_dc_buffered_amount_low_threshold\x18\x04 \x02(\x04\x12\x31\n)reliable_dc_buffered_amount_low_threshold\x18\x05 \x02(\x04\x12\x15\n\rempty_timeout\x18\x06 \x02(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\x07 \x02(\r\x12\x18\n\x10max_participants\x18\x08 \x02(\r\x12\x15\n\rcreation_time\x18\t \x02(\x03\x12\x18\n\x10num_participants\x18\n \x02(\r\x12\x16\n\x0enum_publishers\x18\x0b \x02(\r\x12\x18\n\x10\x61\x63tive_recording\x18\x0c \x02(\x08\"a\n\tOwnedRoom\x12-\n\x06handle\x18\x01 \x02(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12%\n\x04info\x18\x02 \x02(\x0b\x32\x17.livekit.proto.RoomInfo\"K\n\x13ParticipantsUpdated\x12\x34\n\x0cparticipants\x18\x01 \x03(\x0b\x32\x1e.livekit.proto.ParticipantInfo\"E\n\x14ParticipantConnected\x12-\n\x04info\x18\x01 \x02(\x0b\x32\x1f.livekit.proto.OwnedParticipant\"1\n\x11ParticipantActive\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\"s\n\x17ParticipantDisconnected\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12:\n\x11\x64isconnect_reason\x18\x02 \x02(\x0e\x32\x1f.livekit.proto.DisconnectReason\"(\n\x13LocalTrackPublished\x12\x11\n\ttrack_sid\x18\x01 \x02(\t\"0\n\x15LocalTrackUnpublished\x12\x17\n\x0fpublication_sid\x18\x01 \x02(\t\"|\n\x15LocalTrackRepublished\x12\x1a\n\x12publication_handle\x18\x01 \x02(\x04\x12\x14\n\x0cprevious_sid\x18\x02 \x02(\t\x12\x31\n\x04info\x18\x03 \x02(\x0b\x32#.livekit.proto.TrackPublicationInfo\")\n\x14LocalTrackSubscribed\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\"i\n\x0eTrackPublished\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x39\n\x0bpublication\x18\x02 \x02(\x0b\x32$.livekit.proto.OwnedTrackPublication\"I\n\x10TrackUnpublished\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x17\n\x0fpublication_sid\x18\x02 \x02(\t\"Y\n\x0fTrackSubscribed\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12(\n\x05track\x18\x02 \x02(\x0b\x32\x19.livekit.proto.OwnedTrack\"D\n\x11TrackUnsubscribed\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\"Y\n\x17TrackSubscriptionFailed\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\x12\r\n\x05\x65rror\x18\x03 \x02(\t\"=\n\nTrackMuted\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\"?\n\x0cTrackUnmuted\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\"_\n\x10\x45\x32\x65\x65StateChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12-\n\x05state\x18\x02 \x02(\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 \x02(\t\"\x1d\n\x0eRoomSidChanged\x12\x0b\n\x03sid\x18\x01 \x02(\t\"L\n\x1aParticipantMetadataChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x10\n\x08metadata\x18\x02 \x02(\t\"\xac\x01\n\x1cParticipantAttributesChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x32\n\nattributes\x18\x02 \x03(\x0b\x32\x1e.livekit.proto.AttributesEntry\x12:\n\x12\x63hanged_attributes\x18\x03 \x03(\x0b\x32\x1e.livekit.proto.AttributesEntry\"X\n\"ParticipantEncryptionStatusChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x14\n\x0cis_encrypted\x18\x02 \x02(\x08\"D\n\x16ParticipantNameChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x0c\n\x04name\x18\x02 \x02(\t\"v\n\x1cParticipantPermissionChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x38\n\npermission\x18\x02 \x01(\x0b\x32$.livekit.proto.ParticipantPermission\"k\n\x18\x43onnectionQualityChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x31\n\x07quality\x18\x02 \x02(\x0e\x32 .livekit.proto.ConnectionQuality\"E\n\nUserPacket\x12(\n\x04\x64\x61ta\x18\x01 \x02(\x0b\x32\x1a.livekit.proto.OwnedBuffer\x12\r\n\x05topic\x18\x02 \x01(\t\"y\n\x0b\x43hatMessage\x12\n\n\x02id\x18\x01 \x02(\t\x12\x11\n\ttimestamp\x18\x02 \x02(\x03\x12\x0f\n\x07message\x18\x03 \x02(\t\x12\x16\n\x0e\x65\x64it_timestamp\x18\x04 \x01(\x03\x12\x0f\n\x07\x64\x65leted\x18\x05 \x01(\x08\x12\x11\n\tgenerated\x18\x06 \x01(\x08\"`\n\x13\x43hatMessageReceived\x12+\n\x07message\x18\x01 \x02(\x0b\x32\x1a.livekit.proto.ChatMessage\x12\x1c\n\x14participant_identity\x18\x02 \x02(\t\"&\n\x07SipDTMF\x12\x0c\n\x04\x63ode\x18\x01 \x02(\r\x12\r\n\x05\x64igit\x18\x02 \x01(\t\"\xbf\x01\n\x12\x44\x61taPacketReceived\x12+\n\x04kind\x18\x01 \x02(\x0e\x32\x1d.livekit.proto.DataPacketKind\x12\x1c\n\x14participant_identity\x18\x02 \x02(\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\"\x7f\n\x15TranscriptionReceived\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\x12\x35\n\x08segments\x18\x03 \x03(\x0b\x32#.livekit.proto.TranscriptionSegment\"G\n\x16\x43onnectionStateChanged\x12-\n\x05state\x18\x01 \x02(\x0e\x32\x1e.livekit.proto.ConnectionState\"\x0b\n\tConnected\"?\n\x0c\x44isconnected\x12/\n\x06reason\x18\x01 \x02(\x0e\x32\x1f.livekit.proto.DisconnectReason\"\x0e\n\x0cReconnecting\"\r\n\x0bReconnected\"\x1f\n\x0eTokenRefreshed\x12\r\n\x05token\x18\x01 \x02(\t\"\t\n\x07RoomEOS\"\x8e\x07\n\nDataStream\x1a\xaa\x01\n\nTextHeader\x12?\n\x0eoperation_type\x18\x01 \x02(\x0e\x32\'.livekit.proto.DataStream.OperationType\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12\x1a\n\x12reply_to_stream_id\x18\x03 \x01(\t\x12\x1b\n\x13\x61ttached_stream_ids\x18\x04 \x03(\t\x12\x11\n\tgenerated\x18\x05 \x01(\x08\x1a\x1a\n\nByteHeader\x12\x0c\n\x04name\x18\x01 \x02(\t\x1a\xeb\x02\n\x06Header\x12\x11\n\tstream_id\x18\x01 \x02(\t\x12\x11\n\ttimestamp\x18\x02 \x02(\x03\x12\x11\n\tmime_type\x18\x03 \x02(\t\x12\r\n\x05topic\x18\x04 \x02(\t\x12\x14\n\x0ctotal_length\x18\x05 \x01(\x04\x12\x44\n\nattributes\x18\x06 \x03(\x0b\x32\x30.livekit.proto.DataStream.Header.AttributesEntry\x12;\n\x0btext_header\x18\x07 \x01(\x0b\x32$.livekit.proto.DataStream.TextHeaderH\x00\x12;\n\x0b\x62yte_header\x18\x08 \x01(\x0b\x32$.livekit.proto.DataStream.ByteHeaderH\x00\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x10\n\x0e\x63ontent_header\x1a]\n\x05\x43hunk\x12\x11\n\tstream_id\x18\x01 \x02(\t\x12\x13\n\x0b\x63hunk_index\x18\x02 \x02(\x04\x12\x0f\n\x07\x63ontent\x18\x03 \x02(\x0c\x12\x0f\n\x07version\x18\x04 \x01(\x05\x12\n\n\x02iv\x18\x05 \x01(\x0c\x1a\xa6\x01\n\x07Trailer\x12\x11\n\tstream_id\x18\x01 \x02(\t\x12\x0e\n\x06reason\x18\x02 \x02(\t\x12\x45\n\nattributes\x18\x03 \x03(\x0b\x32\x31.livekit.proto.DataStream.Trailer.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"A\n\rOperationType\x12\n\n\x06\x43REATE\x10\x00\x12\n\n\x06UPDATE\x10\x01\x12\n\n\x06\x44\x45LETE\x10\x02\x12\x0c\n\x08REACTION\x10\x03\"j\n\x18\x44\x61taStreamHeaderReceived\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x30\n\x06header\x18\x02 \x02(\x0b\x32 .livekit.proto.DataStream.Header\"g\n\x17\x44\x61taStreamChunkReceived\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12.\n\x05\x63hunk\x18\x02 \x02(\x0b\x32\x1f.livekit.proto.DataStream.Chunk\"m\n\x19\x44\x61taStreamTrailerReceived\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x32\n\x07trailer\x18\x02 \x02(\x0b\x32!.livekit.proto.DataStream.Trailer\"\xc0\x01\n\x17SendStreamHeaderRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x30\n\x06header\x18\x02 \x02(\x0b\x32 .livekit.proto.DataStream.Header\x12\x1e\n\x16\x64\x65stination_identities\x18\x03 \x03(\t\x12\x17\n\x0fsender_identity\x18\x04 \x02(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"\xbd\x01\n\x16SendStreamChunkRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12.\n\x05\x63hunk\x18\x02 \x02(\x0b\x32\x1f.livekit.proto.DataStream.Chunk\x12\x1e\n\x16\x64\x65stination_identities\x18\x03 \x03(\t\x12\x17\n\x0fsender_identity\x18\x04 \x02(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"\xc3\x01\n\x18SendStreamTrailerRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x32\n\x07trailer\x18\x02 \x02(\x0b\x32!.livekit.proto.DataStream.Trailer\x12\x1e\n\x16\x64\x65stination_identities\x18\x03 \x03(\t\x12\x17\n\x0fsender_identity\x18\x04 \x02(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\",\n\x18SendStreamHeaderResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"+\n\x17SendStreamChunkResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"-\n\x19SendStreamTrailerResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\";\n\x18SendStreamHeaderCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\":\n\x17SendStreamChunkCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"<\n\x19SendStreamTrailerCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x93\x01\n/SetDataChannelBufferedAmountLowThresholdRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x11\n\tthreshold\x18\x02 \x02(\x04\x12+\n\x04kind\x18\x03 \x02(\x0e\x32\x1d.livekit.proto.DataPacketKind\"2\n0SetDataChannelBufferedAmountLowThresholdResponse\"n\n,DataChannelBufferedAmountLowThresholdChanged\x12+\n\x04kind\x18\x01 \x02(\x0e\x32\x1d.livekit.proto.DataPacketKind\x12\x11\n\tthreshold\x18\x02 \x02(\x04\"f\n\x10\x42yteStreamOpened\x12\x34\n\x06reader\x18\x01 \x02(\x0b\x32$.livekit.proto.OwnedByteStreamReader\x12\x1c\n\x14participant_identity\x18\x02 \x02(\t\"f\n\x10TextStreamOpened\x12\x34\n\x06reader\x18\x01 \x02(\x0b\x32$.livekit.proto.OwnedTextStreamReader\x12\x1c\n\x14participant_identity\x18\x02 \x02(\t\"H\n\x12\x44\x61taTrackPublished\x12\x32\n\x05track\x18\x01 \x02(\x0b\x32#.livekit.proto.OwnedRemoteDataTrack\"#\n\x14\x44\x61taTrackUnpublished\x12\x0b\n\x03sid\x18\x01 \x02(\t*\xe6\x01\n\x14SimulateScenarioKind\x12\x1d\n\x19SIMULATE_SIGNAL_RECONNECT\x10\x00\x12\x14\n\x10SIMULATE_SPEAKER\x10\x01\x12\x19\n\x15SIMULATE_NODE_FAILURE\x10\x02\x12\x19\n\x15SIMULATE_SERVER_LEAVE\x10\x03\x12\x16\n\x12SIMULATE_MIGRATION\x10\x04\x12\x16\n\x12SIMULATE_FORCE_TCP\x10\x05\x12\x16\n\x12SIMULATE_FORCE_TLS\x10\x06\x12\x1b\n\x17SIMULATE_FULL_RECONNECT\x10\x07*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.Proto') +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\x1a\x11\x64\x61ta_stream.proto\x1a\x10\x64\x61ta_track.proto\"s\n\x0e\x43onnectRequest\x12\x0b\n\x03url\x18\x01 \x02(\t\x12\r\n\x05token\x18\x02 \x02(\t\x12+\n\x07options\x18\x03 \x02(\x0b\x32\x1a.livekit.proto.RoomOptions\x12\x18\n\x10request_async_id\x18\x04 \x01(\x04\"#\n\x0f\x43onnectResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\xbf\x03\n\x0f\x43onnectCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12\x37\n\x06result\x18\x03 \x01(\x0b\x32%.livekit.proto.ConnectCallback.ResultH\x00\x1a\x89\x01\n\x15ParticipantWithTracks\x12\x34\n\x0bparticipant\x18\x01 \x02(\x0b\x32\x1f.livekit.proto.OwnedParticipant\x12:\n\x0cpublications\x18\x02 \x03(\x0b\x32$.livekit.proto.OwnedTrackPublication\x1a\xb8\x01\n\x06Result\x12&\n\x04room\x18\x01 \x02(\x0b\x32\x18.livekit.proto.OwnedRoom\x12:\n\x11local_participant\x18\x02 \x02(\x0b\x32\x1f.livekit.proto.OwnedParticipant\x12J\n\x0cparticipants\x18\x03 \x03(\x0b\x32\x34.livekit.proto.ConnectCallback.ParticipantWithTracksB\t\n\x07message\"s\n\x11\x44isconnectRequest\x12\x13\n\x0broom_handle\x18\x01 \x02(\x04\x12\x18\n\x10request_async_id\x18\x02 \x01(\x04\x12/\n\x06reason\x18\x03 \x01(\x0e\x32\x1f.livekit.proto.DisconnectReason\"&\n\x12\x44isconnectResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"&\n\x12\x44isconnectCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\x7f\n\x17SimulateScenarioRequest\x12\x13\n\x0broom_handle\x18\x01 \x02(\x04\x12\x35\n\x08scenario\x18\x02 \x02(\x0e\x32#.livekit.proto.SimulateScenarioKind\x12\x18\n\x10request_async_id\x18\x03 \x01(\x04\",\n\x18SimulateScenarioResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\";\n\x18SimulateScenarioCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x9c\x01\n\x13PublishTrackRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x14\n\x0ctrack_handle\x18\x02 \x02(\x04\x12\x33\n\x07options\x18\x03 \x02(\x0b\x32\".livekit.proto.TrackPublishOptions\x12\x18\n\x10request_async_id\x18\x04 \x01(\x04\"(\n\x14PublishTrackResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\x81\x01\n\x14PublishTrackCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12;\n\x0bpublication\x18\x03 \x01(\x0b\x32$.livekit.proto.OwnedTrackPublicationH\x00\x42\t\n\x07message\"/\n\x18ReadyForRoomEventRequest\x12\x13\n\x0broom_handle\x18\x01 \x02(\x04\"\x1b\n\x19ReadyForRoomEventResponse\"\x81\x01\n\x15UnpublishTrackRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\x12\x19\n\x11stop_on_unpublish\x18\x03 \x02(\x08\x12\x18\n\x10request_async_id\x18\x04 \x01(\x04\"*\n\x16UnpublishTrackResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"9\n\x16UnpublishTrackCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\xd3\x01\n\x12PublishDataRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x10\n\x08\x64\x61ta_ptr\x18\x02 \x02(\x04\x12\x10\n\x08\x64\x61ta_len\x18\x03 \x02(\x04\x12\x10\n\x08reliable\x18\x04 \x02(\x08\x12\x1c\n\x10\x64\x65stination_sids\x18\x05 \x03(\tB\x02\x18\x01\x12\r\n\x05topic\x18\x06 \x01(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x07 \x03(\t\x12\x18\n\x10request_async_id\x18\x08 \x01(\x04\"\'\n\x13PublishDataResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"6\n\x13PublishDataCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\xc0\x01\n\x1bPublishTranscriptionRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x1c\n\x14participant_identity\x18\x02 \x02(\t\x12\x10\n\x08track_id\x18\x03 \x02(\t\x12\x35\n\x08segments\x18\x04 \x03(\x0b\x32#.livekit.proto.TranscriptionSegment\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"0\n\x1cPublishTranscriptionResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"?\n\x1cPublishTranscriptionCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x90\x01\n\x15PublishSipDtmfRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x0c\n\x04\x63ode\x18\x02 \x02(\r\x12\r\n\x05\x64igit\x18\x03 \x02(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x04 \x03(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"*\n\x16PublishSipDtmfResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"9\n\x16PublishSipDtmfCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"g\n\x17SetLocalMetadataRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x10\n\x08metadata\x18\x02 \x02(\t\x12\x18\n\x10request_async_id\x18\x03 \x01(\x04\",\n\x18SetLocalMetadataResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\";\n\x18SetLocalMetadataCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x9e\x01\n\x16SendChatMessageRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x0f\n\x07message\x18\x02 \x02(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x03 \x03(\t\x12\x17\n\x0fsender_identity\x18\x04 \x01(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"\xd6\x01\n\x16\x45\x64itChatMessageRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x11\n\tedit_text\x18\x02 \x02(\t\x12\x34\n\x10original_message\x18\x03 \x02(\x0b\x32\x1a.livekit.proto.ChatMessage\x12\x1e\n\x16\x64\x65stination_identities\x18\x04 \x03(\t\x12\x17\n\x0fsender_identity\x18\x05 \x01(\t\x12\x18\n\x10request_async_id\x18\x06 \x01(\x04\"+\n\x17SendChatMessageResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"{\n\x17SendChatMessageCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12\x32\n\x0c\x63hat_message\x18\x03 \x01(\x0b\x32\x1a.livekit.proto.ChatMessageH\x00\x42\t\n\x07message\"\x8b\x01\n\x19SetLocalAttributesRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x32\n\nattributes\x18\x02 \x03(\x0b\x32\x1e.livekit.proto.AttributesEntry\x12\x18\n\x10request_async_id\x18\x03 \x01(\x04\"-\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x02(\t\x12\r\n\x05value\x18\x02 \x02(\t\".\n\x1aSetLocalAttributesResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"=\n\x1aSetLocalAttributesCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"_\n\x13SetLocalNameRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x0c\n\x04name\x18\x02 \x02(\t\x12\x18\n\x10request_async_id\x18\x03 \x01(\x04\"(\n\x14SetLocalNameResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"7\n\x14SetLocalNameCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"E\n\x14SetSubscribedRequest\x12\x11\n\tsubscribe\x18\x01 \x02(\x08\x12\x1a\n\x12publication_handle\x18\x02 \x02(\x04\"\x17\n\x15SetSubscribedResponse\"G\n\x16GetSessionStatsRequest\x12\x13\n\x0broom_handle\x18\x01 \x02(\x04\x12\x18\n\x10request_async_id\x18\x02 \x01(\x04\"+\n\x17GetSessionStatsResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"\xf7\x01\n\x17GetSessionStatsCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12?\n\x06result\x18\x03 \x01(\x0b\x32-.livekit.proto.GetSessionStatsCallback.ResultH\x00\x1am\n\x06Result\x12\x30\n\x0fpublisher_stats\x18\x01 \x03(\x0b\x32\x17.livekit.proto.RtcStats\x12\x31\n\x10subscriber_stats\x18\x02 \x03(\x0b\x32\x17.livekit.proto.RtcStatsB\t\n\x07message\";\n\rVideoEncoding\x12\x13\n\x0bmax_bitrate\x18\x01 \x02(\x04\x12\x15\n\rmax_framerate\x18\x02 \x02(\x01\"$\n\rAudioEncoding\x12\x13\n\x0bmax_bitrate\x18\x01 \x02(\x04\"\x95\x03\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\x12\x0e\n\x06stream\x18\x08 \x01(\t\x12\x19\n\x11preconnect_buffer\x18\t \x01(\x08\x12\x44\n\x17packet_trailer_features\x18\n \x03(\x0e\x32#.livekit.proto.PacketTrailerFeature\x12\x18\n\x10scalability_mode\x18\x0b \x01(\t\"=\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\"\xc4\x01\n\tRtcConfig\x12;\n\x12ice_transport_type\x18\x01 \x01(\x0e\x32\x1f.livekit.proto.IceTransportType\x12K\n\x1a\x63ontinual_gathering_policy\x18\x02 \x01(\x0e\x32\'.livekit.proto.ContinualGatheringPolicy\x12-\n\x0bice_servers\x18\x03 \x03(\x0b\x32\x18.livekit.proto.IceServer\"\xae\x02\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.E2eeOptionsB\x02\x18\x01\x12,\n\nrtc_config\x18\x05 \x01(\x0b\x32\x18.livekit.proto.RtcConfig\x12\x14\n\x0cjoin_retries\x18\x06 \x01(\r\x12.\n\nencryption\x18\x07 \x01(\x0b\x32\x1a.livekit.proto.E2eeOptions\x12\x1e\n\x16single_peer_connection\x18\x08 \x01(\x08\x12\x1a\n\x12\x63onnect_timeout_ms\x18\t \x01(\x04\"w\n\x14TranscriptionSegment\x12\n\n\x02id\x18\x01 \x02(\t\x12\x0c\n\x04text\x18\x02 \x02(\t\x12\x12\n\nstart_time\x18\x03 \x02(\x04\x12\x10\n\x08\x65nd_time\x18\x04 \x02(\x04\x12\r\n\x05\x66inal\x18\x05 \x02(\x08\x12\x10\n\x08language\x18\x06 \x02(\t\"0\n\nBufferInfo\x12\x10\n\x08\x64\x61ta_ptr\x18\x01 \x02(\x04\x12\x10\n\x08\x64\x61ta_len\x18\x02 \x02(\x04\"e\n\x0bOwnedBuffer\x12-\n\x06handle\x18\x01 \x02(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12\'\n\x04\x64\x61ta\x18\x02 \x02(\x0b\x32\x19.livekit.proto.BufferInfo\"\xce\x17\n\tRoomEvent\x12\x13\n\x0broom_handle\x18\x01 \x02(\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\x45\n\x16local_track_subscribed\x18\x06 \x01(\x0b\x32#.livekit.proto.LocalTrackSubscribedH\x00\x12\x38\n\x0ftrack_published\x18\x07 \x01(\x0b\x32\x1d.livekit.proto.TrackPublishedH\x00\x12<\n\x11track_unpublished\x18\x08 \x01(\x0b\x32\x1f.livekit.proto.TrackUnpublishedH\x00\x12:\n\x10track_subscribed\x18\t \x01(\x0b\x32\x1e.livekit.proto.TrackSubscribedH\x00\x12>\n\x12track_unsubscribed\x18\n \x01(\x0b\x32 .livekit.proto.TrackUnsubscribedH\x00\x12K\n\x19track_subscription_failed\x18\x0b \x01(\x0b\x32&.livekit.proto.TrackSubscriptionFailedH\x00\x12\x30\n\x0btrack_muted\x18\x0c \x01(\x0b\x32\x19.livekit.proto.TrackMutedH\x00\x12\x34\n\rtrack_unmuted\x18\r \x01(\x0b\x32\x1b.livekit.proto.TrackUnmutedH\x00\x12G\n\x17\x61\x63tive_speakers_changed\x18\x0e \x01(\x0b\x32$.livekit.proto.ActiveSpeakersChangedH\x00\x12\x43\n\x15room_metadata_changed\x18\x0f \x01(\x0b\x32\".livekit.proto.RoomMetadataChangedH\x00\x12\x39\n\x10room_sid_changed\x18\x10 \x01(\x0b\x32\x1d.livekit.proto.RoomSidChangedH\x00\x12Q\n\x1cparticipant_metadata_changed\x18\x11 \x01(\x0b\x32).livekit.proto.ParticipantMetadataChangedH\x00\x12I\n\x18participant_name_changed\x18\x12 \x01(\x0b\x32%.livekit.proto.ParticipantNameChangedH\x00\x12U\n\x1eparticipant_attributes_changed\x18\x13 \x01(\x0b\x32+.livekit.proto.ParticipantAttributesChangedH\x00\x12M\n\x1a\x63onnection_quality_changed\x18\x14 \x01(\x0b\x32\'.livekit.proto.ConnectionQualityChangedH\x00\x12I\n\x18\x63onnection_state_changed\x18\x15 \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\x12:\n\x0c\x63hat_message\x18\x1d \x01(\x0b\x32\".livekit.proto.ChatMessageReceivedH\x00\x12I\n\x16stream_header_received\x18\x1e \x01(\x0b\x32\'.livekit.proto.DataStreamHeaderReceivedH\x00\x12G\n\x15stream_chunk_received\x18\x1f \x01(\x0b\x32&.livekit.proto.DataStreamChunkReceivedH\x00\x12K\n\x17stream_trailer_received\x18 \x01(\x0b\x32(.livekit.proto.DataStreamTrailerReceivedH\x00\x12i\n\"data_channel_low_threshold_changed\x18! \x01(\x0b\x32;.livekit.proto.DataChannelBufferedAmountLowThresholdChangedH\x00\x12=\n\x12\x62yte_stream_opened\x18\" \x01(\x0b\x32\x1f.livekit.proto.ByteStreamOpenedH\x00\x12=\n\x12text_stream_opened\x18# \x01(\x0b\x32\x1f.livekit.proto.TextStreamOpenedH\x00\x12/\n\x0croom_updated\x18$ \x01(\x0b\x32\x17.livekit.proto.RoomInfoH\x00\x12(\n\x05moved\x18% \x01(\x0b\x32\x17.livekit.proto.RoomInfoH\x00\x12\x42\n\x14participants_updated\x18& \x01(\x0b\x32\".livekit.proto.ParticipantsUpdatedH\x00\x12\x62\n%participant_encryption_status_changed\x18\' \x01(\x0b\x32\x31.livekit.proto.ParticipantEncryptionStatusChangedH\x00\x12U\n\x1eparticipant_permission_changed\x18) \x01(\x0b\x32+.livekit.proto.ParticipantPermissionChangedH\x00\x12\x38\n\x0ftoken_refreshed\x18( \x01(\x0b\x32\x1d.livekit.proto.TokenRefreshedH\x00\x12>\n\x12participant_active\x18* \x01(\x0b\x32 .livekit.proto.ParticipantActiveH\x00\x12\x41\n\x14\x64\x61ta_track_published\x18+ \x01(\x0b\x32!.livekit.proto.DataTrackPublishedH\x00\x12\x45\n\x16\x64\x61ta_track_unpublished\x18, \x01(\x0b\x32#.livekit.proto.DataTrackUnpublishedH\x00\x12G\n\x17local_track_republished\x18- \x01(\x0b\x32$.livekit.proto.LocalTrackRepublishedH\x00\x42\t\n\x07message\"\xc9\x02\n\x08RoomInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x02(\t\x12\x10\n\x08metadata\x18\x03 \x02(\t\x12.\n&lossy_dc_buffered_amount_low_threshold\x18\x04 \x02(\x04\x12\x31\n)reliable_dc_buffered_amount_low_threshold\x18\x05 \x02(\x04\x12\x15\n\rempty_timeout\x18\x06 \x02(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\x07 \x02(\r\x12\x18\n\x10max_participants\x18\x08 \x02(\r\x12\x15\n\rcreation_time\x18\t \x02(\x03\x12\x18\n\x10num_participants\x18\n \x02(\r\x12\x16\n\x0enum_publishers\x18\x0b \x02(\r\x12\x18\n\x10\x61\x63tive_recording\x18\x0c \x02(\x08\"a\n\tOwnedRoom\x12-\n\x06handle\x18\x01 \x02(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12%\n\x04info\x18\x02 \x02(\x0b\x32\x17.livekit.proto.RoomInfo\"K\n\x13ParticipantsUpdated\x12\x34\n\x0cparticipants\x18\x01 \x03(\x0b\x32\x1e.livekit.proto.ParticipantInfo\"E\n\x14ParticipantConnected\x12-\n\x04info\x18\x01 \x02(\x0b\x32\x1f.livekit.proto.OwnedParticipant\"1\n\x11ParticipantActive\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\"s\n\x17ParticipantDisconnected\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12:\n\x11\x64isconnect_reason\x18\x02 \x02(\x0e\x32\x1f.livekit.proto.DisconnectReason\"(\n\x13LocalTrackPublished\x12\x11\n\ttrack_sid\x18\x01 \x02(\t\"0\n\x15LocalTrackUnpublished\x12\x17\n\x0fpublication_sid\x18\x01 \x02(\t\"|\n\x15LocalTrackRepublished\x12\x1a\n\x12publication_handle\x18\x01 \x02(\x04\x12\x14\n\x0cprevious_sid\x18\x02 \x02(\t\x12\x31\n\x04info\x18\x03 \x02(\x0b\x32#.livekit.proto.TrackPublicationInfo\")\n\x14LocalTrackSubscribed\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\"i\n\x0eTrackPublished\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x39\n\x0bpublication\x18\x02 \x02(\x0b\x32$.livekit.proto.OwnedTrackPublication\"I\n\x10TrackUnpublished\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x17\n\x0fpublication_sid\x18\x02 \x02(\t\"Y\n\x0fTrackSubscribed\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12(\n\x05track\x18\x02 \x02(\x0b\x32\x19.livekit.proto.OwnedTrack\"D\n\x11TrackUnsubscribed\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\"Y\n\x17TrackSubscriptionFailed\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\x12\r\n\x05\x65rror\x18\x03 \x02(\t\"=\n\nTrackMuted\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\"?\n\x0cTrackUnmuted\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x11\n\ttrack_sid\x18\x02 \x02(\t\"_\n\x10\x45\x32\x65\x65StateChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12-\n\x05state\x18\x02 \x02(\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 \x02(\t\"\x1d\n\x0eRoomSidChanged\x12\x0b\n\x03sid\x18\x01 \x02(\t\"L\n\x1aParticipantMetadataChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x10\n\x08metadata\x18\x02 \x02(\t\"\xac\x01\n\x1cParticipantAttributesChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x32\n\nattributes\x18\x02 \x03(\x0b\x32\x1e.livekit.proto.AttributesEntry\x12:\n\x12\x63hanged_attributes\x18\x03 \x03(\x0b\x32\x1e.livekit.proto.AttributesEntry\"X\n\"ParticipantEncryptionStatusChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x14\n\x0cis_encrypted\x18\x02 \x02(\x08\"D\n\x16ParticipantNameChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x0c\n\x04name\x18\x02 \x02(\t\"v\n\x1cParticipantPermissionChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x38\n\npermission\x18\x02 \x01(\x0b\x32$.livekit.proto.ParticipantPermission\"k\n\x18\x43onnectionQualityChanged\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x31\n\x07quality\x18\x02 \x02(\x0e\x32 .livekit.proto.ConnectionQuality\"E\n\nUserPacket\x12(\n\x04\x64\x61ta\x18\x01 \x02(\x0b\x32\x1a.livekit.proto.OwnedBuffer\x12\r\n\x05topic\x18\x02 \x01(\t\"y\n\x0b\x43hatMessage\x12\n\n\x02id\x18\x01 \x02(\t\x12\x11\n\ttimestamp\x18\x02 \x02(\x03\x12\x0f\n\x07message\x18\x03 \x02(\t\x12\x16\n\x0e\x65\x64it_timestamp\x18\x04 \x01(\x03\x12\x0f\n\x07\x64\x65leted\x18\x05 \x01(\x08\x12\x11\n\tgenerated\x18\x06 \x01(\x08\"`\n\x13\x43hatMessageReceived\x12+\n\x07message\x18\x01 \x02(\x0b\x32\x1a.livekit.proto.ChatMessage\x12\x1c\n\x14participant_identity\x18\x02 \x02(\t\"&\n\x07SipDTMF\x12\x0c\n\x04\x63ode\x18\x01 \x02(\r\x12\r\n\x05\x64igit\x18\x02 \x01(\t\"\xbf\x01\n\x12\x44\x61taPacketReceived\x12+\n\x04kind\x18\x01 \x02(\x0e\x32\x1d.livekit.proto.DataPacketKind\x12\x1c\n\x14participant_identity\x18\x02 \x02(\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\"\x7f\n\x15TranscriptionReceived\x12\x1c\n\x14participant_identity\x18\x01 \x01(\t\x12\x11\n\ttrack_sid\x18\x02 \x01(\t\x12\x35\n\x08segments\x18\x03 \x03(\x0b\x32#.livekit.proto.TranscriptionSegment\"G\n\x16\x43onnectionStateChanged\x12-\n\x05state\x18\x01 \x02(\x0e\x32\x1e.livekit.proto.ConnectionState\"\x0b\n\tConnected\"?\n\x0c\x44isconnected\x12/\n\x06reason\x18\x01 \x02(\x0e\x32\x1f.livekit.proto.DisconnectReason\"\x0e\n\x0cReconnecting\"\r\n\x0bReconnected\"\x1f\n\x0eTokenRefreshed\x12\r\n\x05token\x18\x01 \x02(\t\"\t\n\x07RoomEOS\"\x8e\x07\n\nDataStream\x1a\xaa\x01\n\nTextHeader\x12?\n\x0eoperation_type\x18\x01 \x02(\x0e\x32\'.livekit.proto.DataStream.OperationType\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12\x1a\n\x12reply_to_stream_id\x18\x03 \x01(\t\x12\x1b\n\x13\x61ttached_stream_ids\x18\x04 \x03(\t\x12\x11\n\tgenerated\x18\x05 \x01(\x08\x1a\x1a\n\nByteHeader\x12\x0c\n\x04name\x18\x01 \x02(\t\x1a\xeb\x02\n\x06Header\x12\x11\n\tstream_id\x18\x01 \x02(\t\x12\x11\n\ttimestamp\x18\x02 \x02(\x03\x12\x11\n\tmime_type\x18\x03 \x02(\t\x12\r\n\x05topic\x18\x04 \x02(\t\x12\x14\n\x0ctotal_length\x18\x05 \x01(\x04\x12\x44\n\nattributes\x18\x06 \x03(\x0b\x32\x30.livekit.proto.DataStream.Header.AttributesEntry\x12;\n\x0btext_header\x18\x07 \x01(\x0b\x32$.livekit.proto.DataStream.TextHeaderH\x00\x12;\n\x0b\x62yte_header\x18\x08 \x01(\x0b\x32$.livekit.proto.DataStream.ByteHeaderH\x00\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x10\n\x0e\x63ontent_header\x1a]\n\x05\x43hunk\x12\x11\n\tstream_id\x18\x01 \x02(\t\x12\x13\n\x0b\x63hunk_index\x18\x02 \x02(\x04\x12\x0f\n\x07\x63ontent\x18\x03 \x02(\x0c\x12\x0f\n\x07version\x18\x04 \x01(\x05\x12\n\n\x02iv\x18\x05 \x01(\x0c\x1a\xa6\x01\n\x07Trailer\x12\x11\n\tstream_id\x18\x01 \x02(\t\x12\x0e\n\x06reason\x18\x02 \x02(\t\x12\x45\n\nattributes\x18\x03 \x03(\x0b\x32\x31.livekit.proto.DataStream.Trailer.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"A\n\rOperationType\x12\n\n\x06\x43REATE\x10\x00\x12\n\n\x06UPDATE\x10\x01\x12\n\n\x06\x44\x45LETE\x10\x02\x12\x0c\n\x08REACTION\x10\x03\"j\n\x18\x44\x61taStreamHeaderReceived\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x30\n\x06header\x18\x02 \x02(\x0b\x32 .livekit.proto.DataStream.Header\"g\n\x17\x44\x61taStreamChunkReceived\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12.\n\x05\x63hunk\x18\x02 \x02(\x0b\x32\x1f.livekit.proto.DataStream.Chunk\"m\n\x19\x44\x61taStreamTrailerReceived\x12\x1c\n\x14participant_identity\x18\x01 \x02(\t\x12\x32\n\x07trailer\x18\x02 \x02(\x0b\x32!.livekit.proto.DataStream.Trailer\"\xc0\x01\n\x17SendStreamHeaderRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x30\n\x06header\x18\x02 \x02(\x0b\x32 .livekit.proto.DataStream.Header\x12\x1e\n\x16\x64\x65stination_identities\x18\x03 \x03(\t\x12\x17\n\x0fsender_identity\x18\x04 \x02(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"\xbd\x01\n\x16SendStreamChunkRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12.\n\x05\x63hunk\x18\x02 \x02(\x0b\x32\x1f.livekit.proto.DataStream.Chunk\x12\x1e\n\x16\x64\x65stination_identities\x18\x03 \x03(\t\x12\x17\n\x0fsender_identity\x18\x04 \x02(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\"\xc3\x01\n\x18SendStreamTrailerRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x32\n\x07trailer\x18\x02 \x02(\x0b\x32!.livekit.proto.DataStream.Trailer\x12\x1e\n\x16\x64\x65stination_identities\x18\x03 \x03(\t\x12\x17\n\x0fsender_identity\x18\x04 \x02(\t\x12\x18\n\x10request_async_id\x18\x05 \x01(\x04\",\n\x18SendStreamHeaderResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"+\n\x17SendStreamChunkResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"-\n\x19SendStreamTrailerResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\";\n\x18SendStreamHeaderCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\":\n\x17SendStreamChunkCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"<\n\x19SendStreamTrailerCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x93\x01\n/SetDataChannelBufferedAmountLowThresholdRequest\x12 \n\x18local_participant_handle\x18\x01 \x02(\x04\x12\x11\n\tthreshold\x18\x02 \x02(\x04\x12+\n\x04kind\x18\x03 \x02(\x0e\x32\x1d.livekit.proto.DataPacketKind\"2\n0SetDataChannelBufferedAmountLowThresholdResponse\"n\n,DataChannelBufferedAmountLowThresholdChanged\x12+\n\x04kind\x18\x01 \x02(\x0e\x32\x1d.livekit.proto.DataPacketKind\x12\x11\n\tthreshold\x18\x02 \x02(\x04\"f\n\x10\x42yteStreamOpened\x12\x34\n\x06reader\x18\x01 \x02(\x0b\x32$.livekit.proto.OwnedByteStreamReader\x12\x1c\n\x14participant_identity\x18\x02 \x02(\t\"f\n\x10TextStreamOpened\x12\x34\n\x06reader\x18\x01 \x02(\x0b\x32$.livekit.proto.OwnedTextStreamReader\x12\x1c\n\x14participant_identity\x18\x02 \x02(\t\"H\n\x12\x44\x61taTrackPublished\x12\x32\n\x05track\x18\x01 \x02(\x0b\x32#.livekit.proto.OwnedRemoteDataTrack\"#\n\x14\x44\x61taTrackUnpublished\x12\x0b\n\x03sid\x18\x01 \x02(\t*\xe6\x01\n\x14SimulateScenarioKind\x12\x1d\n\x19SIMULATE_SIGNAL_RECONNECT\x10\x00\x12\x14\n\x10SIMULATE_SPEAKER\x10\x01\x12\x19\n\x15SIMULATE_NODE_FAILURE\x10\x02\x12\x19\n\x15SIMULATE_SERVER_LEAVE\x10\x03\x12\x16\n\x12SIMULATE_MIGRATION\x10\x04\x12\x16\n\x12SIMULATE_FORCE_TCP\x10\x05\x12\x16\n\x12SIMULATE_FORCE_TLS\x10\x06\x12\x1b\n\x17SIMULATE_FULL_RECONNECT\x10\x07*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.Proto') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -38,18 +38,18 @@ _globals['_DATASTREAM_HEADER_ATTRIBUTESENTRY']._serialized_options = b'8\001' _globals['_DATASTREAM_TRAILER_ATTRIBUTESENTRY']._options = None _globals['_DATASTREAM_TRAILER_ATTRIBUTESENTRY']._serialized_options = b'8\001' - _globals['_SIMULATESCENARIOKIND']._serialized_start=14795 - _globals['_SIMULATESCENARIOKIND']._serialized_end=15025 - _globals['_ICETRANSPORTTYPE']._serialized_start=15027 - _globals['_ICETRANSPORTTYPE']._serialized_end=15107 - _globals['_CONTINUALGATHERINGPOLICY']._serialized_start=15109 - _globals['_CONTINUALGATHERINGPOLICY']._serialized_end=15176 - _globals['_CONNECTIONQUALITY']._serialized_start=15178 - _globals['_CONNECTIONQUALITY']._serialized_end=15274 - _globals['_CONNECTIONSTATE']._serialized_start=15276 - _globals['_CONNECTIONSTATE']._serialized_end=15359 - _globals['_DATAPACKETKIND']._serialized_start=15361 - _globals['_DATAPACKETKIND']._serialized_end=15412 + _globals['_SIMULATESCENARIOKIND']._serialized_start=14899 + _globals['_SIMULATESCENARIOKIND']._serialized_end=15129 + _globals['_ICETRANSPORTTYPE']._serialized_start=15131 + _globals['_ICETRANSPORTTYPE']._serialized_end=15211 + _globals['_CONTINUALGATHERINGPOLICY']._serialized_start=15213 + _globals['_CONTINUALGATHERINGPOLICY']._serialized_end=15280 + _globals['_CONNECTIONQUALITY']._serialized_start=15282 + _globals['_CONNECTIONQUALITY']._serialized_end=15378 + _globals['_CONNECTIONSTATE']._serialized_start=15380 + _globals['_CONNECTIONSTATE']._serialized_end=15463 + _globals['_DATAPACKETKIND']._serialized_start=15465 + _globals['_DATAPACKETKIND']._serialized_end=15516 _globals['_CONNECTREQUEST']._serialized_start=156 _globals['_CONNECTREQUEST']._serialized_end=271 _globals['_CONNECTRESPONSE']._serialized_start=273 @@ -78,224 +78,228 @@ _globals['_PUBLISHTRACKRESPONSE']._serialized_end=1392 _globals['_PUBLISHTRACKCALLBACK']._serialized_start=1395 _globals['_PUBLISHTRACKCALLBACK']._serialized_end=1524 - _globals['_UNPUBLISHTRACKREQUEST']._serialized_start=1527 - _globals['_UNPUBLISHTRACKREQUEST']._serialized_end=1656 - _globals['_UNPUBLISHTRACKRESPONSE']._serialized_start=1658 - _globals['_UNPUBLISHTRACKRESPONSE']._serialized_end=1700 - _globals['_UNPUBLISHTRACKCALLBACK']._serialized_start=1702 - _globals['_UNPUBLISHTRACKCALLBACK']._serialized_end=1759 - _globals['_PUBLISHDATAREQUEST']._serialized_start=1762 - _globals['_PUBLISHDATAREQUEST']._serialized_end=1973 - _globals['_PUBLISHDATARESPONSE']._serialized_start=1975 - _globals['_PUBLISHDATARESPONSE']._serialized_end=2014 - _globals['_PUBLISHDATACALLBACK']._serialized_start=2016 - _globals['_PUBLISHDATACALLBACK']._serialized_end=2070 - _globals['_PUBLISHTRANSCRIPTIONREQUEST']._serialized_start=2073 - _globals['_PUBLISHTRANSCRIPTIONREQUEST']._serialized_end=2265 - _globals['_PUBLISHTRANSCRIPTIONRESPONSE']._serialized_start=2267 - _globals['_PUBLISHTRANSCRIPTIONRESPONSE']._serialized_end=2315 - _globals['_PUBLISHTRANSCRIPTIONCALLBACK']._serialized_start=2317 - _globals['_PUBLISHTRANSCRIPTIONCALLBACK']._serialized_end=2380 - _globals['_PUBLISHSIPDTMFREQUEST']._serialized_start=2383 - _globals['_PUBLISHSIPDTMFREQUEST']._serialized_end=2527 - _globals['_PUBLISHSIPDTMFRESPONSE']._serialized_start=2529 - _globals['_PUBLISHSIPDTMFRESPONSE']._serialized_end=2571 - _globals['_PUBLISHSIPDTMFCALLBACK']._serialized_start=2573 - _globals['_PUBLISHSIPDTMFCALLBACK']._serialized_end=2630 - _globals['_SETLOCALMETADATAREQUEST']._serialized_start=2632 - _globals['_SETLOCALMETADATAREQUEST']._serialized_end=2735 - _globals['_SETLOCALMETADATARESPONSE']._serialized_start=2737 - _globals['_SETLOCALMETADATARESPONSE']._serialized_end=2781 - _globals['_SETLOCALMETADATACALLBACK']._serialized_start=2783 - _globals['_SETLOCALMETADATACALLBACK']._serialized_end=2842 - _globals['_SENDCHATMESSAGEREQUEST']._serialized_start=2845 - _globals['_SENDCHATMESSAGEREQUEST']._serialized_end=3003 - _globals['_EDITCHATMESSAGEREQUEST']._serialized_start=3006 - _globals['_EDITCHATMESSAGEREQUEST']._serialized_end=3220 - _globals['_SENDCHATMESSAGERESPONSE']._serialized_start=3222 - _globals['_SENDCHATMESSAGERESPONSE']._serialized_end=3265 - _globals['_SENDCHATMESSAGECALLBACK']._serialized_start=3267 - _globals['_SENDCHATMESSAGECALLBACK']._serialized_end=3390 - _globals['_SETLOCALATTRIBUTESREQUEST']._serialized_start=3393 - _globals['_SETLOCALATTRIBUTESREQUEST']._serialized_end=3532 - _globals['_ATTRIBUTESENTRY']._serialized_start=3534 - _globals['_ATTRIBUTESENTRY']._serialized_end=3579 - _globals['_SETLOCALATTRIBUTESRESPONSE']._serialized_start=3581 - _globals['_SETLOCALATTRIBUTESRESPONSE']._serialized_end=3627 - _globals['_SETLOCALATTRIBUTESCALLBACK']._serialized_start=3629 - _globals['_SETLOCALATTRIBUTESCALLBACK']._serialized_end=3690 - _globals['_SETLOCALNAMEREQUEST']._serialized_start=3692 - _globals['_SETLOCALNAMEREQUEST']._serialized_end=3787 - _globals['_SETLOCALNAMERESPONSE']._serialized_start=3789 - _globals['_SETLOCALNAMERESPONSE']._serialized_end=3829 - _globals['_SETLOCALNAMECALLBACK']._serialized_start=3831 - _globals['_SETLOCALNAMECALLBACK']._serialized_end=3886 - _globals['_SETSUBSCRIBEDREQUEST']._serialized_start=3888 - _globals['_SETSUBSCRIBEDREQUEST']._serialized_end=3957 - _globals['_SETSUBSCRIBEDRESPONSE']._serialized_start=3959 - _globals['_SETSUBSCRIBEDRESPONSE']._serialized_end=3982 - _globals['_GETSESSIONSTATSREQUEST']._serialized_start=3984 - _globals['_GETSESSIONSTATSREQUEST']._serialized_end=4055 - _globals['_GETSESSIONSTATSRESPONSE']._serialized_start=4057 - _globals['_GETSESSIONSTATSRESPONSE']._serialized_end=4100 - _globals['_GETSESSIONSTATSCALLBACK']._serialized_start=4103 - _globals['_GETSESSIONSTATSCALLBACK']._serialized_end=4350 - _globals['_GETSESSIONSTATSCALLBACK_RESULT']._serialized_start=4230 - _globals['_GETSESSIONSTATSCALLBACK_RESULT']._serialized_end=4339 - _globals['_VIDEOENCODING']._serialized_start=4352 - _globals['_VIDEOENCODING']._serialized_end=4411 - _globals['_AUDIOENCODING']._serialized_start=4413 - _globals['_AUDIOENCODING']._serialized_end=4449 - _globals['_TRACKPUBLISHOPTIONS']._serialized_start=4452 - _globals['_TRACKPUBLISHOPTIONS']._serialized_end=4831 - _globals['_ICESERVER']._serialized_start=4833 - _globals['_ICESERVER']._serialized_end=4894 - _globals['_RTCCONFIG']._serialized_start=4897 - _globals['_RTCCONFIG']._serialized_end=5093 - _globals['_ROOMOPTIONS']._serialized_start=5096 - _globals['_ROOMOPTIONS']._serialized_end=5398 - _globals['_TRANSCRIPTIONSEGMENT']._serialized_start=5400 - _globals['_TRANSCRIPTIONSEGMENT']._serialized_end=5519 - _globals['_BUFFERINFO']._serialized_start=5521 - _globals['_BUFFERINFO']._serialized_end=5569 - _globals['_OWNEDBUFFER']._serialized_start=5571 - _globals['_OWNEDBUFFER']._serialized_end=5672 - _globals['_ROOMEVENT']._serialized_start=5675 - _globals['_ROOMEVENT']._serialized_end=8697 - _globals['_ROOMINFO']._serialized_start=8700 - _globals['_ROOMINFO']._serialized_end=9029 - _globals['_OWNEDROOM']._serialized_start=9031 - _globals['_OWNEDROOM']._serialized_end=9128 - _globals['_PARTICIPANTSUPDATED']._serialized_start=9130 - _globals['_PARTICIPANTSUPDATED']._serialized_end=9205 - _globals['_PARTICIPANTCONNECTED']._serialized_start=9207 - _globals['_PARTICIPANTCONNECTED']._serialized_end=9276 - _globals['_PARTICIPANTACTIVE']._serialized_start=9278 - _globals['_PARTICIPANTACTIVE']._serialized_end=9327 - _globals['_PARTICIPANTDISCONNECTED']._serialized_start=9329 - _globals['_PARTICIPANTDISCONNECTED']._serialized_end=9444 - _globals['_LOCALTRACKPUBLISHED']._serialized_start=9446 - _globals['_LOCALTRACKPUBLISHED']._serialized_end=9486 - _globals['_LOCALTRACKUNPUBLISHED']._serialized_start=9488 - _globals['_LOCALTRACKUNPUBLISHED']._serialized_end=9536 - _globals['_LOCALTRACKREPUBLISHED']._serialized_start=9538 - _globals['_LOCALTRACKREPUBLISHED']._serialized_end=9662 - _globals['_LOCALTRACKSUBSCRIBED']._serialized_start=9664 - _globals['_LOCALTRACKSUBSCRIBED']._serialized_end=9705 - _globals['_TRACKPUBLISHED']._serialized_start=9707 - _globals['_TRACKPUBLISHED']._serialized_end=9812 - _globals['_TRACKUNPUBLISHED']._serialized_start=9814 - _globals['_TRACKUNPUBLISHED']._serialized_end=9887 - _globals['_TRACKSUBSCRIBED']._serialized_start=9889 - _globals['_TRACKSUBSCRIBED']._serialized_end=9978 - _globals['_TRACKUNSUBSCRIBED']._serialized_start=9980 - _globals['_TRACKUNSUBSCRIBED']._serialized_end=10048 - _globals['_TRACKSUBSCRIPTIONFAILED']._serialized_start=10050 - _globals['_TRACKSUBSCRIPTIONFAILED']._serialized_end=10139 - _globals['_TRACKMUTED']._serialized_start=10141 - _globals['_TRACKMUTED']._serialized_end=10202 - _globals['_TRACKUNMUTED']._serialized_start=10204 - _globals['_TRACKUNMUTED']._serialized_end=10267 - _globals['_E2EESTATECHANGED']._serialized_start=10269 - _globals['_E2EESTATECHANGED']._serialized_end=10364 - _globals['_ACTIVESPEAKERSCHANGED']._serialized_start=10366 - _globals['_ACTIVESPEAKERSCHANGED']._serialized_end=10421 - _globals['_ROOMMETADATACHANGED']._serialized_start=10423 - _globals['_ROOMMETADATACHANGED']._serialized_end=10462 - _globals['_ROOMSIDCHANGED']._serialized_start=10464 - _globals['_ROOMSIDCHANGED']._serialized_end=10493 - _globals['_PARTICIPANTMETADATACHANGED']._serialized_start=10495 - _globals['_PARTICIPANTMETADATACHANGED']._serialized_end=10571 - _globals['_PARTICIPANTATTRIBUTESCHANGED']._serialized_start=10574 - _globals['_PARTICIPANTATTRIBUTESCHANGED']._serialized_end=10746 - _globals['_PARTICIPANTENCRYPTIONSTATUSCHANGED']._serialized_start=10748 - _globals['_PARTICIPANTENCRYPTIONSTATUSCHANGED']._serialized_end=10836 - _globals['_PARTICIPANTNAMECHANGED']._serialized_start=10838 - _globals['_PARTICIPANTNAMECHANGED']._serialized_end=10906 - _globals['_PARTICIPANTPERMISSIONCHANGED']._serialized_start=10908 - _globals['_PARTICIPANTPERMISSIONCHANGED']._serialized_end=11026 - _globals['_CONNECTIONQUALITYCHANGED']._serialized_start=11028 - _globals['_CONNECTIONQUALITYCHANGED']._serialized_end=11135 - _globals['_USERPACKET']._serialized_start=11137 - _globals['_USERPACKET']._serialized_end=11206 - _globals['_CHATMESSAGE']._serialized_start=11208 - _globals['_CHATMESSAGE']._serialized_end=11329 - _globals['_CHATMESSAGERECEIVED']._serialized_start=11331 - _globals['_CHATMESSAGERECEIVED']._serialized_end=11427 - _globals['_SIPDTMF']._serialized_start=11429 - _globals['_SIPDTMF']._serialized_end=11467 - _globals['_DATAPACKETRECEIVED']._serialized_start=11470 - _globals['_DATAPACKETRECEIVED']._serialized_end=11661 - _globals['_TRANSCRIPTIONRECEIVED']._serialized_start=11663 - _globals['_TRANSCRIPTIONRECEIVED']._serialized_end=11790 - _globals['_CONNECTIONSTATECHANGED']._serialized_start=11792 - _globals['_CONNECTIONSTATECHANGED']._serialized_end=11863 - _globals['_CONNECTED']._serialized_start=11865 - _globals['_CONNECTED']._serialized_end=11876 - _globals['_DISCONNECTED']._serialized_start=11878 - _globals['_DISCONNECTED']._serialized_end=11941 - _globals['_RECONNECTING']._serialized_start=11943 - _globals['_RECONNECTING']._serialized_end=11957 - _globals['_RECONNECTED']._serialized_start=11959 - _globals['_RECONNECTED']._serialized_end=11972 - _globals['_TOKENREFRESHED']._serialized_start=11974 - _globals['_TOKENREFRESHED']._serialized_end=12005 - _globals['_ROOMEOS']._serialized_start=12007 - _globals['_ROOMEOS']._serialized_end=12016 - _globals['_DATASTREAM']._serialized_start=12019 - _globals['_DATASTREAM']._serialized_end=12929 - _globals['_DATASTREAM_TEXTHEADER']._serialized_start=12034 - _globals['_DATASTREAM_TEXTHEADER']._serialized_end=12204 - _globals['_DATASTREAM_BYTEHEADER']._serialized_start=12206 - _globals['_DATASTREAM_BYTEHEADER']._serialized_end=12232 - _globals['_DATASTREAM_HEADER']._serialized_start=12235 - _globals['_DATASTREAM_HEADER']._serialized_end=12598 - _globals['_DATASTREAM_HEADER_ATTRIBUTESENTRY']._serialized_start=12531 - _globals['_DATASTREAM_HEADER_ATTRIBUTESENTRY']._serialized_end=12580 - _globals['_DATASTREAM_CHUNK']._serialized_start=12600 - _globals['_DATASTREAM_CHUNK']._serialized_end=12693 - _globals['_DATASTREAM_TRAILER']._serialized_start=12696 - _globals['_DATASTREAM_TRAILER']._serialized_end=12862 - _globals['_DATASTREAM_TRAILER_ATTRIBUTESENTRY']._serialized_start=12531 - _globals['_DATASTREAM_TRAILER_ATTRIBUTESENTRY']._serialized_end=12580 - _globals['_DATASTREAM_OPERATIONTYPE']._serialized_start=12864 - _globals['_DATASTREAM_OPERATIONTYPE']._serialized_end=12929 - _globals['_DATASTREAMHEADERRECEIVED']._serialized_start=12931 - _globals['_DATASTREAMHEADERRECEIVED']._serialized_end=13037 - _globals['_DATASTREAMCHUNKRECEIVED']._serialized_start=13039 - _globals['_DATASTREAMCHUNKRECEIVED']._serialized_end=13142 - _globals['_DATASTREAMTRAILERRECEIVED']._serialized_start=13144 - _globals['_DATASTREAMTRAILERRECEIVED']._serialized_end=13253 - _globals['_SENDSTREAMHEADERREQUEST']._serialized_start=13256 - _globals['_SENDSTREAMHEADERREQUEST']._serialized_end=13448 - _globals['_SENDSTREAMCHUNKREQUEST']._serialized_start=13451 - _globals['_SENDSTREAMCHUNKREQUEST']._serialized_end=13640 - _globals['_SENDSTREAMTRAILERREQUEST']._serialized_start=13643 - _globals['_SENDSTREAMTRAILERREQUEST']._serialized_end=13838 - _globals['_SENDSTREAMHEADERRESPONSE']._serialized_start=13840 - _globals['_SENDSTREAMHEADERRESPONSE']._serialized_end=13884 - _globals['_SENDSTREAMCHUNKRESPONSE']._serialized_start=13886 - _globals['_SENDSTREAMCHUNKRESPONSE']._serialized_end=13929 - _globals['_SENDSTREAMTRAILERRESPONSE']._serialized_start=13931 - _globals['_SENDSTREAMTRAILERRESPONSE']._serialized_end=13976 - _globals['_SENDSTREAMHEADERCALLBACK']._serialized_start=13978 - _globals['_SENDSTREAMHEADERCALLBACK']._serialized_end=14037 - _globals['_SENDSTREAMCHUNKCALLBACK']._serialized_start=14039 - _globals['_SENDSTREAMCHUNKCALLBACK']._serialized_end=14097 - _globals['_SENDSTREAMTRAILERCALLBACK']._serialized_start=14099 - _globals['_SENDSTREAMTRAILERCALLBACK']._serialized_end=14159 - _globals['_SETDATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDREQUEST']._serialized_start=14162 - _globals['_SETDATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDREQUEST']._serialized_end=14309 - _globals['_SETDATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDRESPONSE']._serialized_start=14311 - _globals['_SETDATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDRESPONSE']._serialized_end=14361 - _globals['_DATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDCHANGED']._serialized_start=14363 - _globals['_DATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDCHANGED']._serialized_end=14473 - _globals['_BYTESTREAMOPENED']._serialized_start=14475 - _globals['_BYTESTREAMOPENED']._serialized_end=14577 - _globals['_TEXTSTREAMOPENED']._serialized_start=14579 - _globals['_TEXTSTREAMOPENED']._serialized_end=14681 - _globals['_DATATRACKPUBLISHED']._serialized_start=14683 - _globals['_DATATRACKPUBLISHED']._serialized_end=14755 - _globals['_DATATRACKUNPUBLISHED']._serialized_start=14757 - _globals['_DATATRACKUNPUBLISHED']._serialized_end=14792 + _globals['_READYFORROOMEVENTREQUEST']._serialized_start=1526 + _globals['_READYFORROOMEVENTREQUEST']._serialized_end=1573 + _globals['_READYFORROOMEVENTRESPONSE']._serialized_start=1575 + _globals['_READYFORROOMEVENTRESPONSE']._serialized_end=1602 + _globals['_UNPUBLISHTRACKREQUEST']._serialized_start=1605 + _globals['_UNPUBLISHTRACKREQUEST']._serialized_end=1734 + _globals['_UNPUBLISHTRACKRESPONSE']._serialized_start=1736 + _globals['_UNPUBLISHTRACKRESPONSE']._serialized_end=1778 + _globals['_UNPUBLISHTRACKCALLBACK']._serialized_start=1780 + _globals['_UNPUBLISHTRACKCALLBACK']._serialized_end=1837 + _globals['_PUBLISHDATAREQUEST']._serialized_start=1840 + _globals['_PUBLISHDATAREQUEST']._serialized_end=2051 + _globals['_PUBLISHDATARESPONSE']._serialized_start=2053 + _globals['_PUBLISHDATARESPONSE']._serialized_end=2092 + _globals['_PUBLISHDATACALLBACK']._serialized_start=2094 + _globals['_PUBLISHDATACALLBACK']._serialized_end=2148 + _globals['_PUBLISHTRANSCRIPTIONREQUEST']._serialized_start=2151 + _globals['_PUBLISHTRANSCRIPTIONREQUEST']._serialized_end=2343 + _globals['_PUBLISHTRANSCRIPTIONRESPONSE']._serialized_start=2345 + _globals['_PUBLISHTRANSCRIPTIONRESPONSE']._serialized_end=2393 + _globals['_PUBLISHTRANSCRIPTIONCALLBACK']._serialized_start=2395 + _globals['_PUBLISHTRANSCRIPTIONCALLBACK']._serialized_end=2458 + _globals['_PUBLISHSIPDTMFREQUEST']._serialized_start=2461 + _globals['_PUBLISHSIPDTMFREQUEST']._serialized_end=2605 + _globals['_PUBLISHSIPDTMFRESPONSE']._serialized_start=2607 + _globals['_PUBLISHSIPDTMFRESPONSE']._serialized_end=2649 + _globals['_PUBLISHSIPDTMFCALLBACK']._serialized_start=2651 + _globals['_PUBLISHSIPDTMFCALLBACK']._serialized_end=2708 + _globals['_SETLOCALMETADATAREQUEST']._serialized_start=2710 + _globals['_SETLOCALMETADATAREQUEST']._serialized_end=2813 + _globals['_SETLOCALMETADATARESPONSE']._serialized_start=2815 + _globals['_SETLOCALMETADATARESPONSE']._serialized_end=2859 + _globals['_SETLOCALMETADATACALLBACK']._serialized_start=2861 + _globals['_SETLOCALMETADATACALLBACK']._serialized_end=2920 + _globals['_SENDCHATMESSAGEREQUEST']._serialized_start=2923 + _globals['_SENDCHATMESSAGEREQUEST']._serialized_end=3081 + _globals['_EDITCHATMESSAGEREQUEST']._serialized_start=3084 + _globals['_EDITCHATMESSAGEREQUEST']._serialized_end=3298 + _globals['_SENDCHATMESSAGERESPONSE']._serialized_start=3300 + _globals['_SENDCHATMESSAGERESPONSE']._serialized_end=3343 + _globals['_SENDCHATMESSAGECALLBACK']._serialized_start=3345 + _globals['_SENDCHATMESSAGECALLBACK']._serialized_end=3468 + _globals['_SETLOCALATTRIBUTESREQUEST']._serialized_start=3471 + _globals['_SETLOCALATTRIBUTESREQUEST']._serialized_end=3610 + _globals['_ATTRIBUTESENTRY']._serialized_start=3612 + _globals['_ATTRIBUTESENTRY']._serialized_end=3657 + _globals['_SETLOCALATTRIBUTESRESPONSE']._serialized_start=3659 + _globals['_SETLOCALATTRIBUTESRESPONSE']._serialized_end=3705 + _globals['_SETLOCALATTRIBUTESCALLBACK']._serialized_start=3707 + _globals['_SETLOCALATTRIBUTESCALLBACK']._serialized_end=3768 + _globals['_SETLOCALNAMEREQUEST']._serialized_start=3770 + _globals['_SETLOCALNAMEREQUEST']._serialized_end=3865 + _globals['_SETLOCALNAMERESPONSE']._serialized_start=3867 + _globals['_SETLOCALNAMERESPONSE']._serialized_end=3907 + _globals['_SETLOCALNAMECALLBACK']._serialized_start=3909 + _globals['_SETLOCALNAMECALLBACK']._serialized_end=3964 + _globals['_SETSUBSCRIBEDREQUEST']._serialized_start=3966 + _globals['_SETSUBSCRIBEDREQUEST']._serialized_end=4035 + _globals['_SETSUBSCRIBEDRESPONSE']._serialized_start=4037 + _globals['_SETSUBSCRIBEDRESPONSE']._serialized_end=4060 + _globals['_GETSESSIONSTATSREQUEST']._serialized_start=4062 + _globals['_GETSESSIONSTATSREQUEST']._serialized_end=4133 + _globals['_GETSESSIONSTATSRESPONSE']._serialized_start=4135 + _globals['_GETSESSIONSTATSRESPONSE']._serialized_end=4178 + _globals['_GETSESSIONSTATSCALLBACK']._serialized_start=4181 + _globals['_GETSESSIONSTATSCALLBACK']._serialized_end=4428 + _globals['_GETSESSIONSTATSCALLBACK_RESULT']._serialized_start=4308 + _globals['_GETSESSIONSTATSCALLBACK_RESULT']._serialized_end=4417 + _globals['_VIDEOENCODING']._serialized_start=4430 + _globals['_VIDEOENCODING']._serialized_end=4489 + _globals['_AUDIOENCODING']._serialized_start=4491 + _globals['_AUDIOENCODING']._serialized_end=4527 + _globals['_TRACKPUBLISHOPTIONS']._serialized_start=4530 + _globals['_TRACKPUBLISHOPTIONS']._serialized_end=4935 + _globals['_ICESERVER']._serialized_start=4937 + _globals['_ICESERVER']._serialized_end=4998 + _globals['_RTCCONFIG']._serialized_start=5001 + _globals['_RTCCONFIG']._serialized_end=5197 + _globals['_ROOMOPTIONS']._serialized_start=5200 + _globals['_ROOMOPTIONS']._serialized_end=5502 + _globals['_TRANSCRIPTIONSEGMENT']._serialized_start=5504 + _globals['_TRANSCRIPTIONSEGMENT']._serialized_end=5623 + _globals['_BUFFERINFO']._serialized_start=5625 + _globals['_BUFFERINFO']._serialized_end=5673 + _globals['_OWNEDBUFFER']._serialized_start=5675 + _globals['_OWNEDBUFFER']._serialized_end=5776 + _globals['_ROOMEVENT']._serialized_start=5779 + _globals['_ROOMEVENT']._serialized_end=8801 + _globals['_ROOMINFO']._serialized_start=8804 + _globals['_ROOMINFO']._serialized_end=9133 + _globals['_OWNEDROOM']._serialized_start=9135 + _globals['_OWNEDROOM']._serialized_end=9232 + _globals['_PARTICIPANTSUPDATED']._serialized_start=9234 + _globals['_PARTICIPANTSUPDATED']._serialized_end=9309 + _globals['_PARTICIPANTCONNECTED']._serialized_start=9311 + _globals['_PARTICIPANTCONNECTED']._serialized_end=9380 + _globals['_PARTICIPANTACTIVE']._serialized_start=9382 + _globals['_PARTICIPANTACTIVE']._serialized_end=9431 + _globals['_PARTICIPANTDISCONNECTED']._serialized_start=9433 + _globals['_PARTICIPANTDISCONNECTED']._serialized_end=9548 + _globals['_LOCALTRACKPUBLISHED']._serialized_start=9550 + _globals['_LOCALTRACKPUBLISHED']._serialized_end=9590 + _globals['_LOCALTRACKUNPUBLISHED']._serialized_start=9592 + _globals['_LOCALTRACKUNPUBLISHED']._serialized_end=9640 + _globals['_LOCALTRACKREPUBLISHED']._serialized_start=9642 + _globals['_LOCALTRACKREPUBLISHED']._serialized_end=9766 + _globals['_LOCALTRACKSUBSCRIBED']._serialized_start=9768 + _globals['_LOCALTRACKSUBSCRIBED']._serialized_end=9809 + _globals['_TRACKPUBLISHED']._serialized_start=9811 + _globals['_TRACKPUBLISHED']._serialized_end=9916 + _globals['_TRACKUNPUBLISHED']._serialized_start=9918 + _globals['_TRACKUNPUBLISHED']._serialized_end=9991 + _globals['_TRACKSUBSCRIBED']._serialized_start=9993 + _globals['_TRACKSUBSCRIBED']._serialized_end=10082 + _globals['_TRACKUNSUBSCRIBED']._serialized_start=10084 + _globals['_TRACKUNSUBSCRIBED']._serialized_end=10152 + _globals['_TRACKSUBSCRIPTIONFAILED']._serialized_start=10154 + _globals['_TRACKSUBSCRIPTIONFAILED']._serialized_end=10243 + _globals['_TRACKMUTED']._serialized_start=10245 + _globals['_TRACKMUTED']._serialized_end=10306 + _globals['_TRACKUNMUTED']._serialized_start=10308 + _globals['_TRACKUNMUTED']._serialized_end=10371 + _globals['_E2EESTATECHANGED']._serialized_start=10373 + _globals['_E2EESTATECHANGED']._serialized_end=10468 + _globals['_ACTIVESPEAKERSCHANGED']._serialized_start=10470 + _globals['_ACTIVESPEAKERSCHANGED']._serialized_end=10525 + _globals['_ROOMMETADATACHANGED']._serialized_start=10527 + _globals['_ROOMMETADATACHANGED']._serialized_end=10566 + _globals['_ROOMSIDCHANGED']._serialized_start=10568 + _globals['_ROOMSIDCHANGED']._serialized_end=10597 + _globals['_PARTICIPANTMETADATACHANGED']._serialized_start=10599 + _globals['_PARTICIPANTMETADATACHANGED']._serialized_end=10675 + _globals['_PARTICIPANTATTRIBUTESCHANGED']._serialized_start=10678 + _globals['_PARTICIPANTATTRIBUTESCHANGED']._serialized_end=10850 + _globals['_PARTICIPANTENCRYPTIONSTATUSCHANGED']._serialized_start=10852 + _globals['_PARTICIPANTENCRYPTIONSTATUSCHANGED']._serialized_end=10940 + _globals['_PARTICIPANTNAMECHANGED']._serialized_start=10942 + _globals['_PARTICIPANTNAMECHANGED']._serialized_end=11010 + _globals['_PARTICIPANTPERMISSIONCHANGED']._serialized_start=11012 + _globals['_PARTICIPANTPERMISSIONCHANGED']._serialized_end=11130 + _globals['_CONNECTIONQUALITYCHANGED']._serialized_start=11132 + _globals['_CONNECTIONQUALITYCHANGED']._serialized_end=11239 + _globals['_USERPACKET']._serialized_start=11241 + _globals['_USERPACKET']._serialized_end=11310 + _globals['_CHATMESSAGE']._serialized_start=11312 + _globals['_CHATMESSAGE']._serialized_end=11433 + _globals['_CHATMESSAGERECEIVED']._serialized_start=11435 + _globals['_CHATMESSAGERECEIVED']._serialized_end=11531 + _globals['_SIPDTMF']._serialized_start=11533 + _globals['_SIPDTMF']._serialized_end=11571 + _globals['_DATAPACKETRECEIVED']._serialized_start=11574 + _globals['_DATAPACKETRECEIVED']._serialized_end=11765 + _globals['_TRANSCRIPTIONRECEIVED']._serialized_start=11767 + _globals['_TRANSCRIPTIONRECEIVED']._serialized_end=11894 + _globals['_CONNECTIONSTATECHANGED']._serialized_start=11896 + _globals['_CONNECTIONSTATECHANGED']._serialized_end=11967 + _globals['_CONNECTED']._serialized_start=11969 + _globals['_CONNECTED']._serialized_end=11980 + _globals['_DISCONNECTED']._serialized_start=11982 + _globals['_DISCONNECTED']._serialized_end=12045 + _globals['_RECONNECTING']._serialized_start=12047 + _globals['_RECONNECTING']._serialized_end=12061 + _globals['_RECONNECTED']._serialized_start=12063 + _globals['_RECONNECTED']._serialized_end=12076 + _globals['_TOKENREFRESHED']._serialized_start=12078 + _globals['_TOKENREFRESHED']._serialized_end=12109 + _globals['_ROOMEOS']._serialized_start=12111 + _globals['_ROOMEOS']._serialized_end=12120 + _globals['_DATASTREAM']._serialized_start=12123 + _globals['_DATASTREAM']._serialized_end=13033 + _globals['_DATASTREAM_TEXTHEADER']._serialized_start=12138 + _globals['_DATASTREAM_TEXTHEADER']._serialized_end=12308 + _globals['_DATASTREAM_BYTEHEADER']._serialized_start=12310 + _globals['_DATASTREAM_BYTEHEADER']._serialized_end=12336 + _globals['_DATASTREAM_HEADER']._serialized_start=12339 + _globals['_DATASTREAM_HEADER']._serialized_end=12702 + _globals['_DATASTREAM_HEADER_ATTRIBUTESENTRY']._serialized_start=12635 + _globals['_DATASTREAM_HEADER_ATTRIBUTESENTRY']._serialized_end=12684 + _globals['_DATASTREAM_CHUNK']._serialized_start=12704 + _globals['_DATASTREAM_CHUNK']._serialized_end=12797 + _globals['_DATASTREAM_TRAILER']._serialized_start=12800 + _globals['_DATASTREAM_TRAILER']._serialized_end=12966 + _globals['_DATASTREAM_TRAILER_ATTRIBUTESENTRY']._serialized_start=12635 + _globals['_DATASTREAM_TRAILER_ATTRIBUTESENTRY']._serialized_end=12684 + _globals['_DATASTREAM_OPERATIONTYPE']._serialized_start=12968 + _globals['_DATASTREAM_OPERATIONTYPE']._serialized_end=13033 + _globals['_DATASTREAMHEADERRECEIVED']._serialized_start=13035 + _globals['_DATASTREAMHEADERRECEIVED']._serialized_end=13141 + _globals['_DATASTREAMCHUNKRECEIVED']._serialized_start=13143 + _globals['_DATASTREAMCHUNKRECEIVED']._serialized_end=13246 + _globals['_DATASTREAMTRAILERRECEIVED']._serialized_start=13248 + _globals['_DATASTREAMTRAILERRECEIVED']._serialized_end=13357 + _globals['_SENDSTREAMHEADERREQUEST']._serialized_start=13360 + _globals['_SENDSTREAMHEADERREQUEST']._serialized_end=13552 + _globals['_SENDSTREAMCHUNKREQUEST']._serialized_start=13555 + _globals['_SENDSTREAMCHUNKREQUEST']._serialized_end=13744 + _globals['_SENDSTREAMTRAILERREQUEST']._serialized_start=13747 + _globals['_SENDSTREAMTRAILERREQUEST']._serialized_end=13942 + _globals['_SENDSTREAMHEADERRESPONSE']._serialized_start=13944 + _globals['_SENDSTREAMHEADERRESPONSE']._serialized_end=13988 + _globals['_SENDSTREAMCHUNKRESPONSE']._serialized_start=13990 + _globals['_SENDSTREAMCHUNKRESPONSE']._serialized_end=14033 + _globals['_SENDSTREAMTRAILERRESPONSE']._serialized_start=14035 + _globals['_SENDSTREAMTRAILERRESPONSE']._serialized_end=14080 + _globals['_SENDSTREAMHEADERCALLBACK']._serialized_start=14082 + _globals['_SENDSTREAMHEADERCALLBACK']._serialized_end=14141 + _globals['_SENDSTREAMCHUNKCALLBACK']._serialized_start=14143 + _globals['_SENDSTREAMCHUNKCALLBACK']._serialized_end=14201 + _globals['_SENDSTREAMTRAILERCALLBACK']._serialized_start=14203 + _globals['_SENDSTREAMTRAILERCALLBACK']._serialized_end=14263 + _globals['_SETDATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDREQUEST']._serialized_start=14266 + _globals['_SETDATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDREQUEST']._serialized_end=14413 + _globals['_SETDATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDRESPONSE']._serialized_start=14415 + _globals['_SETDATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDRESPONSE']._serialized_end=14465 + _globals['_DATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDCHANGED']._serialized_start=14467 + _globals['_DATACHANNELBUFFEREDAMOUNTLOWTHRESHOLDCHANGED']._serialized_end=14577 + _globals['_BYTESTREAMOPENED']._serialized_start=14579 + _globals['_BYTESTREAMOPENED']._serialized_end=14681 + _globals['_TEXTSTREAMOPENED']._serialized_start=14683 + _globals['_TEXTSTREAMOPENED']._serialized_end=14785 + _globals['_DATATRACKPUBLISHED']._serialized_start=14787 + _globals['_DATATRACKPUBLISHED']._serialized_end=14859 + _globals['_DATATRACKUNPUBLISHED']._serialized_start=14861 + _globals['_DATATRACKUNPUBLISHED']._serialized_end=14896 # @@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 9a5c3e3e..58302e57 100644 --- a/livekit-rtc/livekit/rtc/_proto/room_pb2.pyi +++ b/livekit-rtc/livekit/rtc/_proto/room_pb2.pyi @@ -461,6 +461,32 @@ class PublishTrackCallback(google.protobuf.message.Message): global___PublishTrackCallback = PublishTrackCallback +@typing.final +class ReadyForRoomEventRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ROOM_HANDLE_FIELD_NUMBER: builtins.int + room_handle: builtins.int + def __init__( + self, + *, + room_handle: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["room_handle", b"room_handle"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["room_handle", b"room_handle"]) -> None: ... + +global___ReadyForRoomEventRequest = ReadyForRoomEventRequest + +@typing.final +class ReadyForRoomEventResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___ReadyForRoomEventResponse = ReadyForRoomEventResponse + @typing.final class UnpublishTrackRequest(google.protobuf.message.Message): """Unpublish a track from the room""" @@ -1191,6 +1217,7 @@ class TrackPublishOptions(google.protobuf.message.Message): STREAM_FIELD_NUMBER: builtins.int PRECONNECT_BUFFER_FIELD_NUMBER: builtins.int PACKET_TRAILER_FEATURES_FIELD_NUMBER: builtins.int + SCALABILITY_MODE_FIELD_NUMBER: builtins.int video_codec: video_frame_pb2.VideoCodec.ValueType dtx: builtins.bool red: builtins.bool @@ -1198,6 +1225,11 @@ class TrackPublishOptions(google.protobuf.message.Message): source: track_pb2.TrackSource.ValueType stream: builtins.str preconnect_buffer: builtins.bool + scalability_mode: builtins.str + """RTP scalability mode (e.g. "L3T3_KEY"). When set, a single RTP + encoding is produced with this mode, enabling true SVC for codecs + that support it (VP9, AV1). Has no effect for VP8/H264. + """ @property def video_encoding(self) -> global___VideoEncoding: """encodings are optional""" @@ -1219,9 +1251,10 @@ class TrackPublishOptions(google.protobuf.message.Message): stream: builtins.str | None = ..., preconnect_buffer: builtins.bool | None = ..., packet_trailer_features: collections.abc.Iterable[track_pb2.PacketTrailerFeature.ValueType] | None = ..., + scalability_mode: builtins.str | None = ..., ) -> None: ... - def HasField(self, field_name: typing.Literal["audio_encoding", b"audio_encoding", "dtx", b"dtx", "preconnect_buffer", b"preconnect_buffer", "red", b"red", "simulcast", b"simulcast", "source", b"source", "stream", b"stream", "video_codec", b"video_codec", "video_encoding", b"video_encoding"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["audio_encoding", b"audio_encoding", "dtx", b"dtx", "packet_trailer_features", b"packet_trailer_features", "preconnect_buffer", b"preconnect_buffer", "red", b"red", "simulcast", b"simulcast", "source", b"source", "stream", b"stream", "video_codec", b"video_codec", "video_encoding", b"video_encoding"]) -> None: ... + def HasField(self, field_name: typing.Literal["audio_encoding", b"audio_encoding", "dtx", b"dtx", "preconnect_buffer", b"preconnect_buffer", "red", b"red", "scalability_mode", b"scalability_mode", "simulcast", b"simulcast", "source", b"source", "stream", b"stream", "video_codec", b"video_codec", "video_encoding", b"video_encoding"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["audio_encoding", b"audio_encoding", "dtx", b"dtx", "packet_trailer_features", b"packet_trailer_features", "preconnect_buffer", b"preconnect_buffer", "red", b"red", "scalability_mode", b"scalability_mode", "simulcast", b"simulcast", "source", b"source", "stream", b"stream", "video_codec", b"video_codec", "video_encoding", b"video_encoding"]) -> None: ... global___TrackPublishOptions = TrackPublishOptions diff --git a/livekit-rtc/livekit/rtc/room.py b/livekit-rtc/livekit/rtc/room.py index 5bf9e494..aa96d1a3 100644 --- a/livekit-rtc/livekit/rtc/room.py +++ b/livekit-rtc/livekit/rtc/room.py @@ -555,6 +555,11 @@ def on_participant_connected(participant): # start listening to room events self._task = self._loop.create_task(self._listen_task()) + # Unblock the FFI server once this SDK is ready to receive room events. + ready_req = proto_ffi.FfiRequest() + ready_req.ready_for_room_event.room_handle = self._ffi_handle.handle + FfiClient.instance.request(ready_req) + async def get_rtc_stats(self) -> RtcStats: if not self.isconnected(): raise RuntimeError("the room isn't connected") diff --git a/livekit-rtc/livekit/rtc/track_publication.py b/livekit-rtc/livekit/rtc/track_publication.py index 5095841c..864a13cd 100644 --- a/livekit-rtc/livekit/rtc/track_publication.py +++ b/livekit-rtc/livekit/rtc/track_publication.py @@ -19,8 +19,11 @@ from ._proto import e2ee_pb2 as proto_e2ee from ._proto import ffi_pb2 as proto_ffi from ._proto import track_pb2 as proto_track +from ._proto import track_publication_pb2 as proto_track_pub from .track import Track, LocalTrack, RemoteTrack +VideoQuality = proto_track_pub.VideoQuality + class TrackPublication: def __init__(self, owned_info: proto_track.OwnedTrackPublication): @@ -112,5 +115,27 @@ def set_subscribed(self, subscribed: bool): req.set_subscribed.publication_handle = self._ffi_handle.handle FfiClient.instance.request(req) + def set_video_quality(self, quality: "VideoQuality.ValueType") -> None: + """For simulcasted video tracks, request a specific simulcast layer + from the server. Use one of `rtc.VideoQuality.VIDEO_QUALITY_LOW` (q), + `VIDEO_QUALITY_MEDIUM` (h), or `VIDEO_QUALITY_HIGH` (f). + + Raises: + ValueError: if the publication is not a video track, or is not + simulcasted (selecting a layer requires multiple layers). + """ + if self.kind != proto_track.TrackKind.KIND_VIDEO: + raise ValueError( + f"set_video_quality is only supported on video publications (sid={self.sid})" + ) + if not self.simulcasted: + raise ValueError( + f"set_video_quality requires a simulcasted publication (sid={self.sid})" + ) + req = proto_ffi.FfiRequest() + req.set_remote_track_publication_quality.track_publication_handle = self._ffi_handle.handle + req.set_remote_track_publication_quality.quality = quality + FfiClient.instance.request(req) + def __repr__(self) -> str: return f"rtc.RemoteTrackPublication(sid={self.sid}, name={self.name}, kind={self.kind}, source={self.source})" diff --git a/livekit-rtc/livekit/rtc/version.py b/livekit-rtc/livekit/rtc/version.py index bf788263..3d30a5ff 100644 --- a/livekit-rtc/livekit/rtc/version.py +++ b/livekit-rtc/livekit/rtc/version.py @@ -1 +1 @@ -__version__ = "1.1.7" +__version__ = "1.1.8" diff --git a/livekit-rtc/rust-sdks b/livekit-rtc/rust-sdks index b86fdb51..56b209cf 160000 --- a/livekit-rtc/rust-sdks +++ b/livekit-rtc/rust-sdks @@ -1 +1 @@ -Subproject commit b86fdb51d379d3da302d4d69e1669da70687e2f1 +Subproject commit 56b209cfb9f29c1d55e2ae9a720bf5bf1f813d5e diff --git a/livekit-rtc/tests/test_change_video_quality.py b/livekit-rtc/tests/test_change_video_quality.py new file mode 100644 index 00000000..574ef6cf --- /dev/null +++ b/livekit-rtc/tests/test_change_video_quality.py @@ -0,0 +1,349 @@ +# Copyright 2026 LiveKit, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""End-to-end Test for simulcast / SVC video quality layers. + +The test publishes a 1280x720 video track (rolling colored bars) with four +codec configurations and, on the receiver side, verifies that subscribing +to each quality layer (HIGH=f, MEDIUM=h, LOW=q) yields frames of the +expected resolution. + +Codecs covered: + - VP8 (simulcast: three independent encoders) + - H264 (simulcast: three independent encoders) + - H265 (simulcast: three independent encoders, hardware-only on most platforms) + - VP9 (SVC: single bitstream with three spatial layers) + - AV1 (SVC: single bitstream with three spatial layers) + +For VP9 and AV1, libwebrtc converts the multiple RtpEncodingParameters +produced by `simulcast=True` into SVC spatial layers, so the SFU still +exposes the same f/h/q quality switches. + +Requires the following environment variables to run: + LIVEKIT_URL + LIVEKIT_API_KEY + LIVEKIT_API_SECRET +""" + +from __future__ import annotations + +import asyncio +import os +import sys +import time +import uuid +from typing import Callable, Optional, Tuple + +import numpy as np +import pytest + +from livekit import api, rtc +from livekit.rtc._proto.track_publication_pb2 import VideoQuality +from livekit.rtc.room import EventTypes + + +WAIT_TIMEOUT = 30.0 +WAIT_INTERVAL = 0.1 +PUBLISH_WIDTH = 1280 +PUBLISH_HEIGHT = 720 +PUBLISH_FPS = 15 + +# Default simulcast layer dimensions for a 720p source publication. +LAYER_DIMENSIONS = { + "f": (1280, 720), + "h": (640, 360), + "q": (320, 180), +} + +QUALITY_SEQUENCE = [ + (VideoQuality.VIDEO_QUALITY_HIGH, "f"), + (VideoQuality.VIDEO_QUALITY_LOW, "q"), + (VideoQuality.VIDEO_QUALITY_MEDIUM, "h"), +] + + +def skip_if_no_credentials(): + required_vars = ["LIVEKIT_URL", "LIVEKIT_API_KEY", "LIVEKIT_API_SECRET"] + missing = [var for var in required_vars if not os.getenv(var)] + return pytest.mark.skipif( + bool(missing), reason=f"Missing environment variables: {', '.join(missing)}" + ) + + +def create_token(identity: str, room_name: str) -> str: + return ( + api.AccessToken() + .with_identity(identity) + .with_name(identity) + .with_grants( + api.VideoGrants( + room_join=True, + room=room_name, + ) + ) + .to_jwt() + ) + + +def unique_room_name(base: str) -> str: + return f"{base}-{uuid.uuid4().hex[:8]}" + + +async def _wait_until( + predicate: Callable[[], bool], + *, + timeout: float = WAIT_TIMEOUT, + interval: float = WAIT_INTERVAL, + message: str = "condition not met", +) -> None: + loop = asyncio.get_running_loop() + deadline = loop.time() + timeout + while loop.time() < deadline: + if predicate(): + return + await asyncio.sleep(interval) + raise AssertionError(f"timeout waiting: {message}") + + +async def _ensure_all_connected(rooms: list[rtc.Room]) -> None: + await _wait_until( + lambda: all(r.connection_state == rtc.ConnectionState.CONN_CONNECTED for r in rooms), + message="not all rooms reached CONN_CONNECTED", + ) + + +async def _ensure_track_subscribed(room: rtc.Room, track_sid: str) -> rtc.RemoteTrackPublication: + holder: dict[str, rtc.RemoteTrackPublication] = {} + + def _has_subscribed() -> bool: + for participant in room.remote_participants.values(): + pub = participant.track_publications.get(track_sid) + if pub is not None and pub.subscribed and pub.track is not None: + holder["pub"] = pub + return True + return False + + await _wait_until( + _has_subscribed, + message=f"room did not subscribe to track {track_sid}", + ) + return holder["pub"] + + +def _expect_event( + room: rtc.Room, + event: EventTypes, + predicate: Optional[Callable[..., bool]] = None, +) -> asyncio.Future: + loop = asyncio.get_running_loop() + fut: asyncio.Future = loop.create_future() + + def _on_event(*args, **kwargs) -> None: + if fut.done(): + return + if predicate is None or predicate(*args, **kwargs): + fut.set_result(args) + + room.on(event, _on_event) + return fut + + +async def _await_event(fut: asyncio.Future, timeout: float = WAIT_TIMEOUT) -> None: + try: + await asyncio.wait_for(fut, timeout=timeout) + except asyncio.TimeoutError as e: + raise AssertionError("timed out waiting for event") from e + + +def _make_rolling_i420(width: int, height: int, t: float) -> rtc.VideoFrame: + """Build a 1280x720 I420 frame containing 8 vertical color bars that scroll + horizontally over time, so the encoder always sees motion.""" + bar_w = max(width // 8, 1) + offset = int(t * 240) % bar_w + + cols_y = np.arange(width, dtype=np.int32) + bar_idx_y = ((cols_y + offset) // bar_w) % 8 + y_row = (bar_idx_y * 28 + 32).astype(np.uint8) + + cw = width // 2 + cols_c = np.arange(cw, dtype=np.int32) + bar_idx_c = (((cols_c * 2) + offset) // bar_w) % 8 + u_row = (bar_idx_c * 18 + 80).astype(np.uint8) + v_row = (220 - bar_idx_c * 18).astype(np.uint8) + + y_plane = np.tile(y_row, (height, 1)) + u_plane = np.tile(u_row, (height // 2, 1)) + v_plane = np.tile(v_row, (height // 2, 1)) + + data = np.concatenate([y_plane.ravel(), u_plane.ravel(), v_plane.ravel()]) + return rtc.VideoFrame(width, height, rtc.VideoBufferType.I420, data.tobytes()) + + +async def _publish_loop(source: rtc.VideoSource, stop: asyncio.Event) -> None: + interval = 1.0 / PUBLISH_FPS + start = time.monotonic() + while not stop.is_set(): + t = time.monotonic() - start + frame = _make_rolling_i420(PUBLISH_WIDTH, PUBLISH_HEIGHT, t) + source.capture_frame(frame) + try: + await asyncio.wait_for(stop.wait(), timeout=interval) + except asyncio.TimeoutError: + pass + + +async def _wait_for_layer( + stream: rtc.VideoStream, + expected_w: int, + expected_h: int, + *, + timeout: float = 20.0, + samples: int = 5, + tolerance: float = 0.20, +) -> Tuple[int, int]: + """Drain frames until we observe `samples` consecutive frames whose + dimensions match the expected layer (within `tolerance`).""" + deadline = asyncio.get_running_loop().time() + timeout + matches = 0 + last: Optional[Tuple[int, int]] = None + iterator = stream.__aiter__() + while asyncio.get_running_loop().time() < deadline: + try: + ev = await asyncio.wait_for(iterator.__anext__(), timeout=2.0) + except asyncio.TimeoutError: + continue + except StopAsyncIteration: + break + w, h = ev.frame.width, ev.frame.height + last = (w, h) + if ( + abs(w - expected_w) / expected_w <= tolerance + and abs(h - expected_h) / expected_h <= tolerance + ): + matches += 1 + if matches >= samples: + return last + else: + matches = 0 + raise AssertionError(f"timed out waiting for ~{expected_w}x{expected_h}, last seen={last}") + + +# H265 is hardware-only on most platforms and unreliable in CI — opt in via +# LIVEKIT_TEST_H265=1. H264 on macOS depends on VideoToolbox being available +# to the CI runner, which we cannot assume — opt in via LIVEKIT_TEST_H264_MACOS=1. +_H265_ENABLED = os.getenv("LIVEKIT_TEST_H265") == "1" +_H264_MACOS_ENABLED = os.getenv("LIVEKIT_TEST_H264_MACOS") == "1" +_IS_MACOS = sys.platform == "darwin" + + +@skip_if_no_credentials() +@pytest.mark.asyncio +@pytest.mark.parametrize( + "video_codec, codec_name, mode", + [ + (rtc.VideoCodec.VP8, "vp8", "simulcast"), + pytest.param( + rtc.VideoCodec.H264, + "h264", + "simulcast", + marks=pytest.mark.skipif( + _IS_MACOS and not _H264_MACOS_ENABLED, + reason="H264 disabled on macOS by default; set LIVEKIT_TEST_H264_MACOS=1 to enable", + ), + ), + pytest.param( + rtc.VideoCodec.H265, + "h265", + "simulcast", + marks=pytest.mark.skipif( + not _H265_ENABLED, + reason="H265 disabled by default; set LIVEKIT_TEST_H265=1 to enable", + ), + ), + (rtc.VideoCodec.VP9, "vp9", "svc"), + (rtc.VideoCodec.AV1, "av1", "svc"), + ], +) +async def test_simulcast_quality_layers( + video_codec: rtc.VideoCodec.ValueType, codec_name: str, mode: str +) -> None: + room_name = unique_room_name(f"py-{mode}-{codec_name}") + url = os.environ["LIVEKIT_URL"] + + sender, receiver = rtc.Room(), rtc.Room() + await sender.connect(url, create_token("sender", room_name)) + await receiver.connect(url, create_token("receiver", room_name)) + await _ensure_all_connected([sender, receiver]) + + source = rtc.VideoSource(PUBLISH_WIDTH, PUBLISH_HEIGHT) + track = rtc.LocalVideoTrack.create_video_track(f"{mode}-{codec_name}", source) + options = rtc.TrackPublishOptions( + source=rtc.TrackSource.SOURCE_CAMERA, + simulcast=True, + video_codec=video_codec, + video_encoding=rtc.VideoEncoding(max_bitrate=6_000_000, max_framerate=PUBLISH_FPS), + ) + # For SVC codecs, ask libwebrtc to emit three spatial × three temporal + # layers in a single bitstream. Without an explicit scalability_mode AV1 + # falls back to a single-layer stream and the SFU has nothing to switch + # down to. VP9 happens to work without it, but setting it is more + # predictable. + if mode == "svc": + options.scalability_mode = "L3T3_KEY" + + stop = asyncio.Event() + pub_task = asyncio.create_task(_publish_loop(source, stop)) + + stream: Optional[rtc.VideoStream] = None + try: + track_published = _expect_event( + receiver, + "track_published", + predicate=lambda pub, _p: pub.kind == rtc.TrackKind.KIND_VIDEO, + ) + local_pub = await sender.local_participant.publish_track(track, options) + await _await_event(track_published) + + print( + f"[{codec_name}] local_pub: sid={local_pub.sid} " + f"simulcasted={local_pub.simulcasted} " + f"mime_type={local_pub.mime_type} " + f"{local_pub.width}x{local_pub.height}" + ) + remote_pub = await _ensure_track_subscribed(receiver, local_pub.sid) + assert remote_pub.track is not None + print( + f"[{codec_name}] remote_pub: sid={remote_pub.sid} " + f"simulcasted={remote_pub.simulcasted} " + f"mime_type={remote_pub.mime_type} " + f"{remote_pub.width}x{remote_pub.height}" + ) + + stream = rtc.VideoStream.from_track(track=remote_pub.track) + + for quality, layer in QUALITY_SEQUENCE: + remote_pub.set_video_quality(quality) + ew, eh = LAYER_DIMENSIONS[layer] + actual = await _wait_for_layer(stream, ew, eh, timeout=20.0) + print(f"[{codec_name}] layer={layer} expected~{ew}x{eh} got={actual[0]}x{actual[1]}") + finally: + stop.set() + try: + await pub_task + except Exception as e: + raise AssertionError(f"pub_task failed: {e}") from e + if stream is not None: + await stream.aclose() + await sender.disconnect() + await receiver.disconnect()