diff --git a/livekit-rtc/generate_proto.sh b/livekit-rtc/generate_proto.sh index b237d799..5c57455a 100755 --- a/livekit-rtc/generate_proto.sh +++ b/livekit-rtc/generate_proto.sh @@ -31,10 +31,11 @@ protoc \ $FFI_PROTOCOL/room.proto \ $FFI_PROTOCOL/track.proto \ $FFI_PROTOCOL/video_frame.proto \ - $FFI_PROTOCOL/e2ee.proto + $FFI_PROTOCOL/e2ee.proto \ + $FFI_PROTOCOL/stats.proto touch -a "$FFI_OUT_PYTHON/__init__.py" for f in "$FFI_OUT_PYTHON"/*.py "$FFI_OUT_PYTHON"/*.pyi; do - perl -i -pe 's|^(import (audio_frame_pb2\|ffi_pb2\|handle_pb2\|participant_pb2\|room_pb2\|track_pb2\|video_frame_pb2\|e2ee_pb2))|from . $1|g' "$f" + perl -i -pe 's|^(import (audio_frame_pb2\|ffi_pb2\|handle_pb2\|participant_pb2\|room_pb2\|track_pb2\|video_frame_pb2\|e2ee_pb2\|stats_pb2))|from . $1|g' "$f" done diff --git a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py index c65708a8..022b771c 100644 --- a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py +++ b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.py @@ -18,7 +18,7 @@ from . import audio_frame_pb2 as audio__frame__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tffi.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0btrack.proto\x1a\nroom.proto\x1a\x11video_frame.proto\x1a\x11\x61udio_frame.proto\"\xbf\x0c\n\nFfiRequest\x12\x36\n\ninitialize\x18\x01 \x01(\x0b\x32 .livekit.proto.InitializeRequestH\x00\x12\x30\n\x07\x64ispose\x18\x02 \x01(\x0b\x32\x1d.livekit.proto.DisposeRequestH\x00\x12\x30\n\x07\x63onnect\x18\x03 \x01(\x0b\x32\x1d.livekit.proto.ConnectRequestH\x00\x12\x36\n\ndisconnect\x18\x04 \x01(\x0b\x32 .livekit.proto.DisconnectRequestH\x00\x12;\n\rpublish_track\x18\x05 \x01(\x0b\x32\".livekit.proto.PublishTrackRequestH\x00\x12?\n\x0funpublish_track\x18\x06 \x01(\x0b\x32$.livekit.proto.UnpublishTrackRequestH\x00\x12\x39\n\x0cpublish_data\x18\x07 \x01(\x0b\x32!.livekit.proto.PublishDataRequestH\x00\x12=\n\x0eset_subscribed\x18\x08 \x01(\x0b\x32#.livekit.proto.SetSubscribedRequestH\x00\x12J\n\x15update_local_metadata\x18\t \x01(\x0b\x32).livekit.proto.UpdateLocalMetadataRequestH\x00\x12\x42\n\x11update_local_name\x18\n \x01(\x0b\x32%.livekit.proto.UpdateLocalNameRequestH\x00\x12\x44\n\x12\x63reate_video_track\x18\x0b \x01(\x0b\x32&.livekit.proto.CreateVideoTrackRequestH\x00\x12\x44\n\x12\x63reate_audio_track\x18\x0c \x01(\x0b\x32&.livekit.proto.CreateAudioTrackRequestH\x00\x12\x44\n\x12\x61lloc_video_buffer\x18\r \x01(\x0b\x32&.livekit.proto.AllocVideoBufferRequestH\x00\x12@\n\x10new_video_stream\x18\x0e \x01(\x0b\x32$.livekit.proto.NewVideoStreamRequestH\x00\x12@\n\x10new_video_source\x18\x0f \x01(\x0b\x32$.livekit.proto.NewVideoSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_video_frame\x18\x10 \x01(\x0b\x32\'.livekit.proto.CaptureVideoFrameRequestH\x00\x12/\n\x07to_i420\x18\x11 \x01(\x0b\x32\x1c.livekit.proto.ToI420RequestH\x00\x12/\n\x07to_argb\x18\x12 \x01(\x0b\x32\x1c.livekit.proto.ToArgbRequestH\x00\x12\x44\n\x12\x61lloc_audio_buffer\x18\x13 \x01(\x0b\x32&.livekit.proto.AllocAudioBufferRequestH\x00\x12@\n\x10new_audio_stream\x18\x14 \x01(\x0b\x32$.livekit.proto.NewAudioStreamRequestH\x00\x12@\n\x10new_audio_source\x18\x15 \x01(\x0b\x32$.livekit.proto.NewAudioSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_audio_frame\x18\x16 \x01(\x0b\x32\'.livekit.proto.CaptureAudioFrameRequestH\x00\x12\x46\n\x13new_audio_resampler\x18\x17 \x01(\x0b\x32\'.livekit.proto.NewAudioResamplerRequestH\x00\x12\x44\n\x12remix_and_resample\x18\x18 \x01(\x0b\x32&.livekit.proto.RemixAndResampleRequestH\x00\x12*\n\x04\x65\x32\x65\x65\x18\x19 \x01(\x0b\x32\x1a.livekit.proto.E2eeRequestH\x00\x42\t\n\x07message\"\xd9\x0c\n\x0b\x46\x66iResponse\x12\x37\n\ninitialize\x18\x01 \x01(\x0b\x32!.livekit.proto.InitializeResponseH\x00\x12\x31\n\x07\x64ispose\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.DisposeResponseH\x00\x12\x31\n\x07\x63onnect\x18\x03 \x01(\x0b\x32\x1e.livekit.proto.ConnectResponseH\x00\x12\x37\n\ndisconnect\x18\x04 \x01(\x0b\x32!.livekit.proto.DisconnectResponseH\x00\x12<\n\rpublish_track\x18\x05 \x01(\x0b\x32#.livekit.proto.PublishTrackResponseH\x00\x12@\n\x0funpublish_track\x18\x06 \x01(\x0b\x32%.livekit.proto.UnpublishTrackResponseH\x00\x12:\n\x0cpublish_data\x18\x07 \x01(\x0b\x32\".livekit.proto.PublishDataResponseH\x00\x12>\n\x0eset_subscribed\x18\x08 \x01(\x0b\x32$.livekit.proto.SetSubscribedResponseH\x00\x12K\n\x15update_local_metadata\x18\t \x01(\x0b\x32*.livekit.proto.UpdateLocalMetadataResponseH\x00\x12\x43\n\x11update_local_name\x18\n \x01(\x0b\x32&.livekit.proto.UpdateLocalNameResponseH\x00\x12\x45\n\x12\x63reate_video_track\x18\x0b \x01(\x0b\x32\'.livekit.proto.CreateVideoTrackResponseH\x00\x12\x45\n\x12\x63reate_audio_track\x18\x0c \x01(\x0b\x32\'.livekit.proto.CreateAudioTrackResponseH\x00\x12\x45\n\x12\x61lloc_video_buffer\x18\r \x01(\x0b\x32\'.livekit.proto.AllocVideoBufferResponseH\x00\x12\x41\n\x10new_video_stream\x18\x0e \x01(\x0b\x32%.livekit.proto.NewVideoStreamResponseH\x00\x12\x41\n\x10new_video_source\x18\x0f \x01(\x0b\x32%.livekit.proto.NewVideoSourceResponseH\x00\x12G\n\x13\x63\x61pture_video_frame\x18\x10 \x01(\x0b\x32(.livekit.proto.CaptureVideoFrameResponseH\x00\x12\x30\n\x07to_i420\x18\x11 \x01(\x0b\x32\x1d.livekit.proto.ToI420ResponseH\x00\x12\x30\n\x07to_argb\x18\x12 \x01(\x0b\x32\x1d.livekit.proto.ToArgbResponseH\x00\x12\x45\n\x12\x61lloc_audio_buffer\x18\x13 \x01(\x0b\x32\'.livekit.proto.AllocAudioBufferResponseH\x00\x12\x41\n\x10new_audio_stream\x18\x14 \x01(\x0b\x32%.livekit.proto.NewAudioStreamResponseH\x00\x12\x41\n\x10new_audio_source\x18\x15 \x01(\x0b\x32%.livekit.proto.NewAudioSourceResponseH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\x16 \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameResponseH\x00\x12G\n\x13new_audio_resampler\x18\x17 \x01(\x0b\x32(.livekit.proto.NewAudioResamplerResponseH\x00\x12\x45\n\x12remix_and_resample\x18\x18 \x01(\x0b\x32\'.livekit.proto.RemixAndResampleResponseH\x00\x12+\n\x04\x65\x32\x65\x65\x18\x19 \x01(\x0b\x32\x1b.livekit.proto.E2eeResponseH\x00\x42\t\n\x07message\"\xab\x06\n\x08\x46\x66iEvent\x12.\n\nroom_event\x18\x01 \x01(\x0b\x32\x18.livekit.proto.RoomEventH\x00\x12\x30\n\x0btrack_event\x18\x02 \x01(\x0b\x32\x19.livekit.proto.TrackEventH\x00\x12=\n\x12video_stream_event\x18\x03 \x01(\x0b\x32\x1f.livekit.proto.VideoStreamEventH\x00\x12=\n\x12\x61udio_stream_event\x18\x04 \x01(\x0b\x32\x1f.livekit.proto.AudioStreamEventH\x00\x12\x31\n\x07\x63onnect\x18\x05 \x01(\x0b\x32\x1e.livekit.proto.ConnectCallbackH\x00\x12\x37\n\ndisconnect\x18\x06 \x01(\x0b\x32!.livekit.proto.DisconnectCallbackH\x00\x12\x31\n\x07\x64ispose\x18\x07 \x01(\x0b\x32\x1e.livekit.proto.DisposeCallbackH\x00\x12<\n\rpublish_track\x18\x08 \x01(\x0b\x32#.livekit.proto.PublishTrackCallbackH\x00\x12@\n\x0funpublish_track\x18\t \x01(\x0b\x32%.livekit.proto.UnpublishTrackCallbackH\x00\x12:\n\x0cpublish_data\x18\n \x01(\x0b\x32\".livekit.proto.PublishDataCallbackH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\x0b \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameCallbackH\x00\x12K\n\x15update_local_metadata\x18\x0c \x01(\x0b\x32*.livekit.proto.UpdateLocalMetadataCallbackH\x00\x12\x43\n\x11update_local_name\x18\r \x01(\x0b\x32&.livekit.proto.UpdateLocalNameCallbackH\x00\x42\t\n\x07message\"/\n\x11InitializeRequest\x12\x1a\n\x12\x65vent_callback_ptr\x18\x01 \x01(\x04\"\x14\n\x12InitializeResponse\"\x1f\n\x0e\x44isposeRequest\x12\r\n\x05\x61sync\x18\x01 \x01(\x08\"5\n\x0f\x44isposeResponse\x12\x15\n\x08\x61sync_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\x0b\n\t_async_id\"#\n\x0f\x44isposeCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tffi.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0btrack.proto\x1a\nroom.proto\x1a\x11video_frame.proto\x1a\x11\x61udio_frame.proto\"\xf4\x0c\n\nFfiRequest\x12\x36\n\ninitialize\x18\x01 \x01(\x0b\x32 .livekit.proto.InitializeRequestH\x00\x12\x30\n\x07\x64ispose\x18\x02 \x01(\x0b\x32\x1d.livekit.proto.DisposeRequestH\x00\x12\x30\n\x07\x63onnect\x18\x03 \x01(\x0b\x32\x1d.livekit.proto.ConnectRequestH\x00\x12\x36\n\ndisconnect\x18\x04 \x01(\x0b\x32 .livekit.proto.DisconnectRequestH\x00\x12;\n\rpublish_track\x18\x05 \x01(\x0b\x32\".livekit.proto.PublishTrackRequestH\x00\x12?\n\x0funpublish_track\x18\x06 \x01(\x0b\x32$.livekit.proto.UnpublishTrackRequestH\x00\x12\x39\n\x0cpublish_data\x18\x07 \x01(\x0b\x32!.livekit.proto.PublishDataRequestH\x00\x12=\n\x0eset_subscribed\x18\x08 \x01(\x0b\x32#.livekit.proto.SetSubscribedRequestH\x00\x12J\n\x15update_local_metadata\x18\t \x01(\x0b\x32).livekit.proto.UpdateLocalMetadataRequestH\x00\x12\x42\n\x11update_local_name\x18\n \x01(\x0b\x32%.livekit.proto.UpdateLocalNameRequestH\x00\x12\x44\n\x12\x63reate_video_track\x18\x0b \x01(\x0b\x32&.livekit.proto.CreateVideoTrackRequestH\x00\x12\x44\n\x12\x63reate_audio_track\x18\x0c \x01(\x0b\x32&.livekit.proto.CreateAudioTrackRequestH\x00\x12\x33\n\tget_stats\x18\r \x01(\x0b\x32\x1e.livekit.proto.GetStatsRequestH\x00\x12\x44\n\x12\x61lloc_video_buffer\x18\x0e \x01(\x0b\x32&.livekit.proto.AllocVideoBufferRequestH\x00\x12@\n\x10new_video_stream\x18\x0f \x01(\x0b\x32$.livekit.proto.NewVideoStreamRequestH\x00\x12@\n\x10new_video_source\x18\x10 \x01(\x0b\x32$.livekit.proto.NewVideoSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_video_frame\x18\x11 \x01(\x0b\x32\'.livekit.proto.CaptureVideoFrameRequestH\x00\x12/\n\x07to_i420\x18\x12 \x01(\x0b\x32\x1c.livekit.proto.ToI420RequestH\x00\x12/\n\x07to_argb\x18\x13 \x01(\x0b\x32\x1c.livekit.proto.ToArgbRequestH\x00\x12\x44\n\x12\x61lloc_audio_buffer\x18\x14 \x01(\x0b\x32&.livekit.proto.AllocAudioBufferRequestH\x00\x12@\n\x10new_audio_stream\x18\x15 \x01(\x0b\x32$.livekit.proto.NewAudioStreamRequestH\x00\x12@\n\x10new_audio_source\x18\x16 \x01(\x0b\x32$.livekit.proto.NewAudioSourceRequestH\x00\x12\x46\n\x13\x63\x61pture_audio_frame\x18\x17 \x01(\x0b\x32\'.livekit.proto.CaptureAudioFrameRequestH\x00\x12\x46\n\x13new_audio_resampler\x18\x18 \x01(\x0b\x32\'.livekit.proto.NewAudioResamplerRequestH\x00\x12\x44\n\x12remix_and_resample\x18\x19 \x01(\x0b\x32&.livekit.proto.RemixAndResampleRequestH\x00\x12*\n\x04\x65\x32\x65\x65\x18\x1a \x01(\x0b\x32\x1a.livekit.proto.E2eeRequestH\x00\x42\t\n\x07message\"\x8f\r\n\x0b\x46\x66iResponse\x12\x37\n\ninitialize\x18\x01 \x01(\x0b\x32!.livekit.proto.InitializeResponseH\x00\x12\x31\n\x07\x64ispose\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.DisposeResponseH\x00\x12\x31\n\x07\x63onnect\x18\x03 \x01(\x0b\x32\x1e.livekit.proto.ConnectResponseH\x00\x12\x37\n\ndisconnect\x18\x04 \x01(\x0b\x32!.livekit.proto.DisconnectResponseH\x00\x12<\n\rpublish_track\x18\x05 \x01(\x0b\x32#.livekit.proto.PublishTrackResponseH\x00\x12@\n\x0funpublish_track\x18\x06 \x01(\x0b\x32%.livekit.proto.UnpublishTrackResponseH\x00\x12:\n\x0cpublish_data\x18\x07 \x01(\x0b\x32\".livekit.proto.PublishDataResponseH\x00\x12>\n\x0eset_subscribed\x18\x08 \x01(\x0b\x32$.livekit.proto.SetSubscribedResponseH\x00\x12K\n\x15update_local_metadata\x18\t \x01(\x0b\x32*.livekit.proto.UpdateLocalMetadataResponseH\x00\x12\x43\n\x11update_local_name\x18\n \x01(\x0b\x32&.livekit.proto.UpdateLocalNameResponseH\x00\x12\x45\n\x12\x63reate_video_track\x18\x0b \x01(\x0b\x32\'.livekit.proto.CreateVideoTrackResponseH\x00\x12\x45\n\x12\x63reate_audio_track\x18\x0c \x01(\x0b\x32\'.livekit.proto.CreateAudioTrackResponseH\x00\x12\x34\n\tget_stats\x18\r \x01(\x0b\x32\x1f.livekit.proto.GetStatsResponseH\x00\x12\x45\n\x12\x61lloc_video_buffer\x18\x0e \x01(\x0b\x32\'.livekit.proto.AllocVideoBufferResponseH\x00\x12\x41\n\x10new_video_stream\x18\x0f \x01(\x0b\x32%.livekit.proto.NewVideoStreamResponseH\x00\x12\x41\n\x10new_video_source\x18\x10 \x01(\x0b\x32%.livekit.proto.NewVideoSourceResponseH\x00\x12G\n\x13\x63\x61pture_video_frame\x18\x11 \x01(\x0b\x32(.livekit.proto.CaptureVideoFrameResponseH\x00\x12\x30\n\x07to_i420\x18\x12 \x01(\x0b\x32\x1d.livekit.proto.ToI420ResponseH\x00\x12\x30\n\x07to_argb\x18\x13 \x01(\x0b\x32\x1d.livekit.proto.ToArgbResponseH\x00\x12\x45\n\x12\x61lloc_audio_buffer\x18\x14 \x01(\x0b\x32\'.livekit.proto.AllocAudioBufferResponseH\x00\x12\x41\n\x10new_audio_stream\x18\x15 \x01(\x0b\x32%.livekit.proto.NewAudioStreamResponseH\x00\x12\x41\n\x10new_audio_source\x18\x16 \x01(\x0b\x32%.livekit.proto.NewAudioSourceResponseH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\x17 \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameResponseH\x00\x12G\n\x13new_audio_resampler\x18\x18 \x01(\x0b\x32(.livekit.proto.NewAudioResamplerResponseH\x00\x12\x45\n\x12remix_and_resample\x18\x19 \x01(\x0b\x32\'.livekit.proto.RemixAndResampleResponseH\x00\x12+\n\x04\x65\x32\x65\x65\x18\x1a \x01(\x0b\x32\x1b.livekit.proto.E2eeResponseH\x00\x42\t\n\x07message\"\xe1\x06\n\x08\x46\x66iEvent\x12.\n\nroom_event\x18\x01 \x01(\x0b\x32\x18.livekit.proto.RoomEventH\x00\x12\x30\n\x0btrack_event\x18\x02 \x01(\x0b\x32\x19.livekit.proto.TrackEventH\x00\x12=\n\x12video_stream_event\x18\x03 \x01(\x0b\x32\x1f.livekit.proto.VideoStreamEventH\x00\x12=\n\x12\x61udio_stream_event\x18\x04 \x01(\x0b\x32\x1f.livekit.proto.AudioStreamEventH\x00\x12\x31\n\x07\x63onnect\x18\x05 \x01(\x0b\x32\x1e.livekit.proto.ConnectCallbackH\x00\x12\x37\n\ndisconnect\x18\x06 \x01(\x0b\x32!.livekit.proto.DisconnectCallbackH\x00\x12\x31\n\x07\x64ispose\x18\x07 \x01(\x0b\x32\x1e.livekit.proto.DisposeCallbackH\x00\x12<\n\rpublish_track\x18\x08 \x01(\x0b\x32#.livekit.proto.PublishTrackCallbackH\x00\x12@\n\x0funpublish_track\x18\t \x01(\x0b\x32%.livekit.proto.UnpublishTrackCallbackH\x00\x12:\n\x0cpublish_data\x18\n \x01(\x0b\x32\".livekit.proto.PublishDataCallbackH\x00\x12G\n\x13\x63\x61pture_audio_frame\x18\x0b \x01(\x0b\x32(.livekit.proto.CaptureAudioFrameCallbackH\x00\x12K\n\x15update_local_metadata\x18\x0c \x01(\x0b\x32*.livekit.proto.UpdateLocalMetadataCallbackH\x00\x12\x43\n\x11update_local_name\x18\r \x01(\x0b\x32&.livekit.proto.UpdateLocalNameCallbackH\x00\x12\x34\n\tget_stats\x18\x0e \x01(\x0b\x32\x1f.livekit.proto.GetStatsCallbackH\x00\x42\t\n\x07message\"/\n\x11InitializeRequest\x12\x1a\n\x12\x65vent_callback_ptr\x18\x01 \x01(\x04\"\x14\n\x12InitializeResponse\"\x1f\n\x0e\x44isposeRequest\x12\r\n\x05\x61sync\x18\x01 \x01(\x08\"5\n\x0f\x44isposeResponse\x12\x15\n\x08\x61sync_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\x0b\n\t_async_id\"#\n\x0f\x44isposeCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -28,19 +28,19 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\252\002\rLiveKit.Proto' _globals['_FFIREQUEST']._serialized_start=104 - _globals['_FFIREQUEST']._serialized_end=1703 - _globals['_FFIRESPONSE']._serialized_start=1706 - _globals['_FFIRESPONSE']._serialized_end=3331 - _globals['_FFIEVENT']._serialized_start=3334 - _globals['_FFIEVENT']._serialized_end=4145 - _globals['_INITIALIZEREQUEST']._serialized_start=4147 - _globals['_INITIALIZEREQUEST']._serialized_end=4194 - _globals['_INITIALIZERESPONSE']._serialized_start=4196 - _globals['_INITIALIZERESPONSE']._serialized_end=4216 - _globals['_DISPOSEREQUEST']._serialized_start=4218 - _globals['_DISPOSEREQUEST']._serialized_end=4249 - _globals['_DISPOSERESPONSE']._serialized_start=4251 - _globals['_DISPOSERESPONSE']._serialized_end=4304 - _globals['_DISPOSECALLBACK']._serialized_start=4306 - _globals['_DISPOSECALLBACK']._serialized_end=4341 + _globals['_FFIREQUEST']._serialized_end=1756 + _globals['_FFIRESPONSE']._serialized_start=1759 + _globals['_FFIRESPONSE']._serialized_end=3438 + _globals['_FFIEVENT']._serialized_start=3441 + _globals['_FFIEVENT']._serialized_end=4306 + _globals['_INITIALIZEREQUEST']._serialized_start=4308 + _globals['_INITIALIZEREQUEST']._serialized_end=4355 + _globals['_INITIALIZERESPONSE']._serialized_start=4357 + _globals['_INITIALIZERESPONSE']._serialized_end=4377 + _globals['_DISPOSEREQUEST']._serialized_start=4379 + _globals['_DISPOSEREQUEST']._serialized_end=4410 + _globals['_DISPOSERESPONSE']._serialized_start=4412 + _globals['_DISPOSERESPONSE']._serialized_end=4465 + _globals['_DISPOSECALLBACK']._serialized_start=4467 + _globals['_DISPOSECALLBACK']._serialized_end=4502 # @@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 542a139b..7477fc2c 100644 --- a/livekit-rtc/livekit/rtc/_proto/ffi_pb2.pyi +++ b/livekit-rtc/livekit/rtc/_proto/ffi_pb2.pyi @@ -78,6 +78,7 @@ class FfiRequest(google.protobuf.message.Message): UPDATE_LOCAL_NAME_FIELD_NUMBER: builtins.int CREATE_VIDEO_TRACK_FIELD_NUMBER: builtins.int CREATE_AUDIO_TRACK_FIELD_NUMBER: builtins.int + GET_STATS_FIELD_NUMBER: builtins.int ALLOC_VIDEO_BUFFER_FIELD_NUMBER: builtins.int NEW_VIDEO_STREAM_FIELD_NUMBER: builtins.int NEW_VIDEO_SOURCE_FIELD_NUMBER: builtins.int @@ -118,6 +119,8 @@ class FfiRequest(google.protobuf.message.Message): @property def create_audio_track(self) -> track_pb2.CreateAudioTrackRequest: ... @property + def get_stats(self) -> track_pb2.GetStatsRequest: ... + @property def alloc_video_buffer(self) -> video_frame_pb2.AllocVideoBufferRequest: """Video""" @property @@ -160,6 +163,7 @@ class FfiRequest(google.protobuf.message.Message): update_local_name: room_pb2.UpdateLocalNameRequest | None = ..., create_video_track: track_pb2.CreateVideoTrackRequest | None = ..., create_audio_track: track_pb2.CreateAudioTrackRequest | None = ..., + get_stats: track_pb2.GetStatsRequest | None = ..., alloc_video_buffer: video_frame_pb2.AllocVideoBufferRequest | None = ..., new_video_stream: video_frame_pb2.NewVideoStreamRequest | None = ..., new_video_source: video_frame_pb2.NewVideoSourceRequest | None = ..., @@ -174,9 +178,9 @@ class FfiRequest(google.protobuf.message.Message): remix_and_resample: audio_frame_pb2.RemixAndResampleRequest | None = ..., e2ee: e2ee_pb2.E2eeRequest | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["alloc_audio_buffer", b"alloc_audio_buffer", "alloc_video_buffer", b"alloc_video_buffer", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "initialize", b"initialize", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "to_argb", b"to_argb", "to_i420", b"to_i420", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["alloc_audio_buffer", b"alloc_audio_buffer", "alloc_video_buffer", b"alloc_video_buffer", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "initialize", b"initialize", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "to_argb", b"to_argb", "to_i420", b"to_i420", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["initialize", "dispose", "connect", "disconnect", "publish_track", "unpublish_track", "publish_data", "set_subscribed", "update_local_metadata", "update_local_name", "create_video_track", "create_audio_track", "alloc_video_buffer", "new_video_stream", "new_video_source", "capture_video_frame", "to_i420", "to_argb", "alloc_audio_buffer", "new_audio_stream", "new_audio_source", "capture_audio_frame", "new_audio_resampler", "remix_and_resample", "e2ee"] | None: ... + def HasField(self, field_name: typing_extensions.Literal["alloc_audio_buffer", b"alloc_audio_buffer", "alloc_video_buffer", b"alloc_video_buffer", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_stats", b"get_stats", "initialize", b"initialize", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "to_argb", b"to_argb", "to_i420", b"to_i420", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["alloc_audio_buffer", b"alloc_audio_buffer", "alloc_video_buffer", b"alloc_video_buffer", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_stats", b"get_stats", "initialize", b"initialize", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "to_argb", b"to_argb", "to_i420", b"to_i420", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["initialize", "dispose", "connect", "disconnect", "publish_track", "unpublish_track", "publish_data", "set_subscribed", "update_local_metadata", "update_local_name", "create_video_track", "create_audio_track", "get_stats", "alloc_video_buffer", "new_video_stream", "new_video_source", "capture_video_frame", "to_i420", "to_argb", "alloc_audio_buffer", "new_audio_stream", "new_audio_source", "capture_audio_frame", "new_audio_resampler", "remix_and_resample", "e2ee"] | None: ... global___FfiRequest = FfiRequest @@ -198,6 +202,7 @@ class FfiResponse(google.protobuf.message.Message): UPDATE_LOCAL_NAME_FIELD_NUMBER: builtins.int CREATE_VIDEO_TRACK_FIELD_NUMBER: builtins.int CREATE_AUDIO_TRACK_FIELD_NUMBER: builtins.int + GET_STATS_FIELD_NUMBER: builtins.int ALLOC_VIDEO_BUFFER_FIELD_NUMBER: builtins.int NEW_VIDEO_STREAM_FIELD_NUMBER: builtins.int NEW_VIDEO_SOURCE_FIELD_NUMBER: builtins.int @@ -238,6 +243,8 @@ class FfiResponse(google.protobuf.message.Message): @property def create_audio_track(self) -> track_pb2.CreateAudioTrackResponse: ... @property + def get_stats(self) -> track_pb2.GetStatsResponse: ... + @property def alloc_video_buffer(self) -> video_frame_pb2.AllocVideoBufferResponse: """Video""" @property @@ -280,6 +287,7 @@ class FfiResponse(google.protobuf.message.Message): update_local_name: room_pb2.UpdateLocalNameResponse | None = ..., create_video_track: track_pb2.CreateVideoTrackResponse | None = ..., create_audio_track: track_pb2.CreateAudioTrackResponse | None = ..., + get_stats: track_pb2.GetStatsResponse | None = ..., alloc_video_buffer: video_frame_pb2.AllocVideoBufferResponse | None = ..., new_video_stream: video_frame_pb2.NewVideoStreamResponse | None = ..., new_video_source: video_frame_pb2.NewVideoSourceResponse | None = ..., @@ -294,9 +302,9 @@ class FfiResponse(google.protobuf.message.Message): remix_and_resample: audio_frame_pb2.RemixAndResampleResponse | None = ..., e2ee: e2ee_pb2.E2eeResponse | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["alloc_audio_buffer", b"alloc_audio_buffer", "alloc_video_buffer", b"alloc_video_buffer", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "initialize", b"initialize", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "to_argb", b"to_argb", "to_i420", b"to_i420", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["alloc_audio_buffer", b"alloc_audio_buffer", "alloc_video_buffer", b"alloc_video_buffer", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "initialize", b"initialize", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "to_argb", b"to_argb", "to_i420", b"to_i420", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["initialize", "dispose", "connect", "disconnect", "publish_track", "unpublish_track", "publish_data", "set_subscribed", "update_local_metadata", "update_local_name", "create_video_track", "create_audio_track", "alloc_video_buffer", "new_video_stream", "new_video_source", "capture_video_frame", "to_i420", "to_argb", "alloc_audio_buffer", "new_audio_stream", "new_audio_source", "capture_audio_frame", "new_audio_resampler", "remix_and_resample", "e2ee"] | None: ... + def HasField(self, field_name: typing_extensions.Literal["alloc_audio_buffer", b"alloc_audio_buffer", "alloc_video_buffer", b"alloc_video_buffer", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_stats", b"get_stats", "initialize", b"initialize", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "to_argb", b"to_argb", "to_i420", b"to_i420", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["alloc_audio_buffer", b"alloc_audio_buffer", "alloc_video_buffer", b"alloc_video_buffer", "capture_audio_frame", b"capture_audio_frame", "capture_video_frame", b"capture_video_frame", "connect", b"connect", "create_audio_track", b"create_audio_track", "create_video_track", b"create_video_track", "disconnect", b"disconnect", "dispose", b"dispose", "e2ee", b"e2ee", "get_stats", b"get_stats", "initialize", b"initialize", "message", b"message", "new_audio_resampler", b"new_audio_resampler", "new_audio_source", b"new_audio_source", "new_audio_stream", b"new_audio_stream", "new_video_source", b"new_video_source", "new_video_stream", b"new_video_stream", "publish_data", b"publish_data", "publish_track", b"publish_track", "remix_and_resample", b"remix_and_resample", "set_subscribed", b"set_subscribed", "to_argb", b"to_argb", "to_i420", b"to_i420", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["initialize", "dispose", "connect", "disconnect", "publish_track", "unpublish_track", "publish_data", "set_subscribed", "update_local_metadata", "update_local_name", "create_video_track", "create_audio_track", "get_stats", "alloc_video_buffer", "new_video_stream", "new_video_source", "capture_video_frame", "to_i420", "to_argb", "alloc_audio_buffer", "new_audio_stream", "new_audio_source", "capture_audio_frame", "new_audio_resampler", "remix_and_resample", "e2ee"] | None: ... global___FfiResponse = FfiResponse @@ -322,6 +330,7 @@ class FfiEvent(google.protobuf.message.Message): CAPTURE_AUDIO_FRAME_FIELD_NUMBER: builtins.int UPDATE_LOCAL_METADATA_FIELD_NUMBER: builtins.int UPDATE_LOCAL_NAME_FIELD_NUMBER: builtins.int + GET_STATS_FIELD_NUMBER: builtins.int @property def room_event(self) -> room_pb2.RoomEvent: ... @property @@ -348,6 +357,8 @@ class FfiEvent(google.protobuf.message.Message): def update_local_metadata(self) -> room_pb2.UpdateLocalMetadataCallback: ... @property def update_local_name(self) -> room_pb2.UpdateLocalNameCallback: ... + @property + def get_stats(self) -> track_pb2.GetStatsCallback: ... def __init__( self, *, @@ -364,10 +375,11 @@ class FfiEvent(google.protobuf.message.Message): capture_audio_frame: audio_frame_pb2.CaptureAudioFrameCallback | None = ..., update_local_metadata: room_pb2.UpdateLocalMetadataCallback | None = ..., update_local_name: room_pb2.UpdateLocalNameCallback | None = ..., + get_stats: track_pb2.GetStatsCallback | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["audio_stream_event", b"audio_stream_event", "capture_audio_frame", b"capture_audio_frame", "connect", b"connect", "disconnect", b"disconnect", "dispose", b"dispose", "message", b"message", "publish_data", b"publish_data", "publish_track", b"publish_track", "room_event", b"room_event", "track_event", b"track_event", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_stream_event", b"video_stream_event"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["audio_stream_event", b"audio_stream_event", "capture_audio_frame", b"capture_audio_frame", "connect", b"connect", "disconnect", b"disconnect", "dispose", b"dispose", "message", b"message", "publish_data", b"publish_data", "publish_track", b"publish_track", "room_event", b"room_event", "track_event", b"track_event", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_stream_event", b"video_stream_event"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["room_event", "track_event", "video_stream_event", "audio_stream_event", "connect", "disconnect", "dispose", "publish_track", "unpublish_track", "publish_data", "capture_audio_frame", "update_local_metadata", "update_local_name"] | None: ... + def HasField(self, field_name: typing_extensions.Literal["audio_stream_event", b"audio_stream_event", "capture_audio_frame", b"capture_audio_frame", "connect", b"connect", "disconnect", b"disconnect", "dispose", b"dispose", "get_stats", b"get_stats", "message", b"message", "publish_data", b"publish_data", "publish_track", b"publish_track", "room_event", b"room_event", "track_event", b"track_event", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_stream_event", b"video_stream_event"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["audio_stream_event", b"audio_stream_event", "capture_audio_frame", b"capture_audio_frame", "connect", b"connect", "disconnect", b"disconnect", "dispose", b"dispose", "get_stats", b"get_stats", "message", b"message", "publish_data", b"publish_data", "publish_track", b"publish_track", "room_event", b"room_event", "track_event", b"track_event", "unpublish_track", b"unpublish_track", "update_local_metadata", b"update_local_metadata", "update_local_name", b"update_local_name", "video_stream_event", b"video_stream_event"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["message", b"message"]) -> typing_extensions.Literal["room_event", "track_event", "video_stream_event", "audio_stream_event", "connect", "disconnect", "dispose", "publish_track", "unpublish_track", "publish_data", "capture_audio_frame", "update_local_metadata", "update_local_name", "get_stats"] | None: ... global___FfiEvent = FfiEvent diff --git a/livekit-rtc/livekit/rtc/_proto/stats_pb2.py b/livekit-rtc/livekit/rtc/_proto/stats_pb2.py new file mode 100644 index 00000000..7dfdf765 --- /dev/null +++ b/livekit-rtc/livekit/rtc/_proto/stats_pb2.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: stats.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bstats.proto\x12\rlivekit.proto\"\xd9\x17\n\x08RtcStats\x12.\n\x05\x63odec\x18\x03 \x01(\x0b\x32\x1d.livekit.proto.RtcStats.CodecH\x00\x12\x39\n\x0binbound_rtp\x18\x04 \x01(\x0b\x32\".livekit.proto.RtcStats.InboundRtpH\x00\x12;\n\x0coutbound_rtp\x18\x05 \x01(\x0b\x32#.livekit.proto.RtcStats.OutboundRtpH\x00\x12\x46\n\x12remote_inbound_rtp\x18\x06 \x01(\x0b\x32(.livekit.proto.RtcStats.RemoteInboundRtpH\x00\x12H\n\x13remote_outbound_rtp\x18\x07 \x01(\x0b\x32).livekit.proto.RtcStats.RemoteOutboundRtpH\x00\x12;\n\x0cmedia_source\x18\x08 \x01(\x0b\x32#.livekit.proto.RtcStats.MediaSourceH\x00\x12=\n\rmedia_playout\x18\t \x01(\x0b\x32$.livekit.proto.RtcStats.MediaPlayoutH\x00\x12\x41\n\x0fpeer_connection\x18\n \x01(\x0b\x32&.livekit.proto.RtcStats.PeerConnectionH\x00\x12;\n\x0c\x64\x61ta_channel\x18\x0b \x01(\x0b\x32#.livekit.proto.RtcStats.DataChannelH\x00\x12\x36\n\ttransport\x18\x0c \x01(\x0b\x32!.livekit.proto.RtcStats.TransportH\x00\x12?\n\x0e\x63\x61ndidate_pair\x18\r \x01(\x0b\x32%.livekit.proto.RtcStats.CandidatePairH\x00\x12\x41\n\x0flocal_candidate\x18\x0e \x01(\x0b\x32&.livekit.proto.RtcStats.LocalCandidateH\x00\x12\x43\n\x10remote_candidate\x18\x0f \x01(\x0b\x32\'.livekit.proto.RtcStats.RemoteCandidateH\x00\x12:\n\x0b\x63\x65rtificate\x18\x10 \x01(\x0b\x32#.livekit.proto.RtcStats.CertificateH\x00\x12.\n\x05track\x18\x11 \x01(\x0b\x32\x1d.livekit.proto.RtcStats.TrackH\x00\x1a[\n\x05\x43odec\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12(\n\x05\x63odec\x18\x02 \x01(\x0b\x32\x19.livekit.proto.CodecStats\x1a\xd5\x01\n\nInboundRtp\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12-\n\x06stream\x18\x02 \x01(\x0b\x32\x1d.livekit.proto.RtpStreamStats\x12\x37\n\x08received\x18\x03 \x01(\x0b\x32%.livekit.proto.ReceivedRtpStreamStats\x12\x35\n\x07inbound\x18\x04 \x01(\x0b\x32$.livekit.proto.InboundRtpStreamStats\x1a\xd0\x01\n\x0bOutboundRtp\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12-\n\x06stream\x18\x02 \x01(\x0b\x32\x1d.livekit.proto.RtpStreamStats\x12/\n\x04sent\x18\x03 \x01(\x0b\x32!.livekit.proto.SentRtpStreamStats\x12\x37\n\x08outbound\x18\x04 \x01(\x0b\x32%.livekit.proto.OutboundRtpStreamStats\x1a\xe8\x01\n\x10RemoteInboundRtp\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12-\n\x06stream\x18\x02 \x01(\x0b\x32\x1d.livekit.proto.RtpStreamStats\x12\x37\n\x08received\x18\x03 \x01(\x0b\x32%.livekit.proto.ReceivedRtpStreamStats\x12\x42\n\x0eremote_inbound\x18\x04 \x01(\x0b\x32*.livekit.proto.RemoteInboundRtpStreamStats\x1a\xe3\x01\n\x11RemoteOutboundRtp\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12-\n\x06stream\x18\x02 \x01(\x0b\x32\x1d.livekit.proto.RtpStreamStats\x12/\n\x04sent\x18\x03 \x01(\x0b\x32!.livekit.proto.SentRtpStreamStats\x12\x44\n\x0fremote_outbound\x18\x04 \x01(\x0b\x32+.livekit.proto.RemoteOutboundRtpStreamStats\x1a\xc8\x01\n\x0bMediaSource\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12/\n\x06source\x18\x02 \x01(\x0b\x32\x1f.livekit.proto.MediaSourceStats\x12.\n\x05\x61udio\x18\x03 \x01(\x0b\x32\x1f.livekit.proto.AudioSourceStats\x12.\n\x05video\x18\x04 \x01(\x0b\x32\x1f.livekit.proto.VideoSourceStats\x1aq\n\x0cMediaPlayout\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12\x37\n\raudio_playout\x18\x02 \x01(\x0b\x32 .livekit.proto.AudioPlayoutStats\x1aj\n\x0ePeerConnection\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12.\n\x02pc\x18\x02 \x01(\x0b\x32\".livekit.proto.PeerConnectionStats\x1a\x64\n\x0b\x44\x61taChannel\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12+\n\x02\x64\x63\x18\x02 \x01(\x0b\x32\x1f.livekit.proto.DataChannelStats\x1ag\n\tTransport\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12\x30\n\ttransport\x18\x02 \x01(\x0b\x32\x1d.livekit.proto.TransportStats\x1at\n\rCandidatePair\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12\x39\n\x0e\x63\x61ndidate_pair\x18\x02 \x01(\x0b\x32!.livekit.proto.CandidatePairStats\x1ao\n\x0eLocalCandidate\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12\x33\n\tcandidate\x18\x02 \x01(\x0b\x32 .livekit.proto.IceCandidateStats\x1ap\n\x0fRemoteCandidate\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12\x33\n\tcandidate\x18\x02 \x01(\x0b\x32 .livekit.proto.IceCandidateStats\x1am\n\x0b\x43\x65rtificate\x12(\n\x03rtc\x18\x01 \x01(\x0b\x32\x1b.livekit.proto.RtcStatsData\x12\x34\n\x0b\x63\x65rtificate\x18\x02 \x01(\x0b\x32\x1f.livekit.proto.CertificateStats\x1a\x07\n\x05TrackB\x07\n\x05stats\"-\n\x0cRtcStatsData\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\"\x88\x01\n\nCodecStats\x12\x14\n\x0cpayload_type\x18\x01 \x01(\r\x12\x14\n\x0ctransport_id\x18\x02 \x01(\t\x12\x11\n\tmime_type\x18\x03 \x01(\t\x12\x12\n\nclock_rate\x18\x04 \x01(\r\x12\x10\n\x08\x63hannels\x18\x05 \x01(\r\x12\x15\n\rsdp_fmtp_line\x18\x06 \x01(\t\"T\n\x0eRtpStreamStats\x12\x0c\n\x04ssrc\x18\x01 \x01(\r\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x14\n\x0ctransport_id\x18\x03 \x01(\t\x12\x10\n\x08\x63odec_id\x18\x04 \x01(\t\"X\n\x16ReceivedRtpStreamStats\x12\x18\n\x10packets_received\x18\x01 \x01(\x04\x12\x14\n\x0cpackets_lost\x18\x02 \x01(\x03\x12\x0e\n\x06jitter\x18\x03 \x01(\x01\"\x82\x0c\n\x15InboundRtpStreamStats\x12\x18\n\x10track_identifier\x18\x01 \x01(\t\x12\x0b\n\x03mid\x18\x02 \x01(\t\x12\x11\n\tremote_id\x18\x03 \x01(\t\x12\x16\n\x0e\x66rames_decoded\x18\x04 \x01(\r\x12\x1a\n\x12key_frames_decoded\x18\x05 \x01(\r\x12\x17\n\x0f\x66rames_rendered\x18\x06 \x01(\r\x12\x16\n\x0e\x66rames_dropped\x18\x07 \x01(\r\x12\x13\n\x0b\x66rame_width\x18\x08 \x01(\r\x12\x14\n\x0c\x66rame_height\x18\t \x01(\r\x12\x19\n\x11\x66rames_per_second\x18\n \x01(\x01\x12\x0e\n\x06qp_sum\x18\x0b \x01(\x04\x12\x19\n\x11total_decode_time\x18\x0c \x01(\x01\x12\x1f\n\x17total_inter_frame_delay\x18\r \x01(\x01\x12\'\n\x1ftotal_squared_inter_frame_delay\x18\x0e \x01(\x01\x12\x13\n\x0bpause_count\x18\x0f \x01(\r\x12\x1c\n\x14total_pause_duration\x18\x10 \x01(\x01\x12\x14\n\x0c\x66reeze_count\x18\x11 \x01(\r\x12\x1d\n\x15total_freeze_duration\x18\x12 \x01(\x01\x12&\n\x1elast_packet_received_timestamp\x18\x13 \x01(\x01\x12\x1d\n\x15header_bytes_received\x18\x14 \x01(\x04\x12\x19\n\x11packets_discarded\x18\x15 \x01(\x04\x12\x1a\n\x12\x66\x65\x63_bytes_received\x18\x16 \x01(\x04\x12\x1c\n\x14\x66\x65\x63_packets_received\x18\x17 \x01(\x04\x12\x1d\n\x15\x66\x65\x63_packets_discarded\x18\x18 \x01(\x04\x12\x16\n\x0e\x62ytes_received\x18\x19 \x01(\x04\x12\x12\n\nnack_count\x18\x1a \x01(\r\x12\x11\n\tfir_count\x18\x1b \x01(\r\x12\x11\n\tpli_count\x18\x1c \x01(\r\x12\x1e\n\x16total_processing_delay\x18\x1d \x01(\x01\x12#\n\x1b\x65stimated_playout_timestamp\x18\x1e \x01(\x01\x12\x1b\n\x13jitter_buffer_delay\x18\x1f \x01(\x01\x12\"\n\x1ajitter_buffer_target_delay\x18 \x01(\x01\x12#\n\x1bjitter_buffer_emitted_count\x18! \x01(\x04\x12#\n\x1bjitter_buffer_minimum_delay\x18\" \x01(\x01\x12\x1e\n\x16total_samples_received\x18# \x01(\x04\x12\x19\n\x11\x63oncealed_samples\x18$ \x01(\x04\x12 \n\x18silent_concealed_samples\x18% \x01(\x04\x12\x1a\n\x12\x63oncealment_events\x18& \x01(\x04\x12)\n!inserted_samples_for_deceleration\x18\' \x01(\x04\x12(\n removed_samples_for_acceleration\x18( \x01(\x04\x12\x13\n\x0b\x61udio_level\x18) \x01(\x01\x12\x1a\n\x12total_audio_energy\x18* \x01(\x01\x12\x1e\n\x16total_samples_duration\x18+ \x01(\x01\x12\x17\n\x0f\x66rames_received\x18, \x01(\x04\x12\x1e\n\x16\x64\x65\x63oder_implementation\x18- \x01(\t\x12\x12\n\nplayout_id\x18. \x01(\t\x12\x1f\n\x17power_efficient_decoder\x18/ \x01(\x08\x12.\n&frames_assembled_from_multiple_packets\x18\x30 \x01(\x04\x12\x1b\n\x13total_assembly_time\x18\x31 \x01(\x01\x12&\n\x1eretransmitted_packets_received\x18\x32 \x01(\x04\x12$\n\x1cretransmitted_bytes_received\x18\x33 \x01(\x04\x12\x10\n\x08rtx_ssrc\x18\x34 \x01(\r\x12\x10\n\x08\x66\x65\x63_ssrc\x18\x35 \x01(\r\">\n\x12SentRtpStreamStats\x12\x14\n\x0cpackets_sent\x18\x01 \x01(\x04\x12\x12\n\nbytes_sent\x18\x02 \x01(\x04\"\xd1\x07\n\x16OutboundRtpStreamStats\x12\x0b\n\x03mid\x18\x01 \x01(\t\x12\x17\n\x0fmedia_source_id\x18\x02 \x01(\t\x12\x11\n\tremote_id\x18\x03 \x01(\t\x12\x0b\n\x03rid\x18\x04 \x01(\t\x12\x19\n\x11header_bytes_sent\x18\x05 \x01(\x04\x12\"\n\x1aretransmitted_packets_sent\x18\x06 \x01(\x04\x12 \n\x18retransmitted_bytes_sent\x18\x07 \x01(\x04\x12\x10\n\x08rtx_ssrc\x18\x08 \x01(\r\x12\x16\n\x0etarget_bitrate\x18\t \x01(\x01\x12\"\n\x1atotal_encoded_bytes_target\x18\n \x01(\x04\x12\x13\n\x0b\x66rame_width\x18\x0b \x01(\r\x12\x14\n\x0c\x66rame_height\x18\x0c \x01(\r\x12\x19\n\x11\x66rames_per_second\x18\r \x01(\x01\x12\x13\n\x0b\x66rames_sent\x18\x0e \x01(\r\x12\x18\n\x10huge_frames_sent\x18\x0f \x01(\r\x12\x16\n\x0e\x66rames_encoded\x18\x10 \x01(\r\x12\x1a\n\x12key_frames_encoded\x18\x11 \x01(\r\x12\x0e\n\x06qp_sum\x18\x12 \x01(\x04\x12\x19\n\x11total_encode_time\x18\x13 \x01(\x01\x12\x1f\n\x17total_packet_send_delay\x18\x14 \x01(\x01\x12I\n\x19quality_limitation_reason\x18\x15 \x01(\x0e\x32&.livekit.proto.QualityLimitationReason\x12k\n\x1cquality_limitation_durations\x18\x16 \x03(\x0b\x32\x45.livekit.proto.OutboundRtpStreamStats.QualityLimitationDurationsEntry\x12-\n%quality_limitation_resolution_changes\x18\x17 \x01(\r\x12\x12\n\nnack_count\x18\x18 \x01(\r\x12\x11\n\tfir_count\x18\x19 \x01(\r\x12\x11\n\tpli_count\x18\x1a \x01(\r\x12\x1e\n\x16\x65ncoder_implementation\x18\x1b \x01(\t\x12\x1f\n\x17power_efficient_encoder\x18\x1c \x01(\x08\x12\x0e\n\x06\x61\x63tive\x18\x1d \x01(\x08\x12\x18\n\x10scalibility_mode\x18\x1e \x01(\t\x1a\x41\n\x1fQualityLimitationDurationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\xa4\x01\n\x1bRemoteInboundRtpStreamStats\x12\x10\n\x08local_id\x18\x01 \x01(\t\x12\x17\n\x0fround_trip_time\x18\x02 \x01(\x01\x12\x1d\n\x15total_round_trip_time\x18\x03 \x01(\x01\x12\x15\n\rfraction_lost\x18\x04 \x01(\x01\x12$\n\x1cround_trip_time_measurements\x18\x05 \x01(\x04\"\xbe\x01\n\x1cRemoteOutboundRtpStreamStats\x12\x10\n\x08local_id\x18\x01 \x01(\t\x12\x18\n\x10remote_timestamp\x18\x02 \x01(\x01\x12\x14\n\x0creports_sent\x18\x03 \x01(\x04\x12\x17\n\x0fround_trip_time\x18\x04 \x01(\x01\x12\x1d\n\x15total_round_trip_time\x18\x05 \x01(\x01\x12$\n\x1cround_trip_time_measurements\x18\x06 \x01(\x04\":\n\x10MediaSourceStats\x12\x18\n\x10track_identifier\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\"\xa2\x02\n\x10\x41udioSourceStats\x12\x13\n\x0b\x61udio_level\x18\x01 \x01(\x01\x12\x1a\n\x12total_audio_energy\x18\x02 \x01(\x01\x12\x1e\n\x16total_samples_duration\x18\x03 \x01(\x01\x12\x18\n\x10\x65\x63ho_return_loss\x18\x04 \x01(\x01\x12$\n\x1c\x65\x63ho_return_loss_enhancement\x18\x05 \x01(\x01\x12 \n\x18\x64ropped_samples_duration\x18\x06 \x01(\x01\x12\x1e\n\x16\x64ropped_samples_events\x18\x07 \x01(\r\x12\x1b\n\x13total_capture_delay\x18\x08 \x01(\x01\x12\x1e\n\x16total_samples_captured\x18\t \x01(\x04\"\\\n\x10VideoSourceStats\x12\r\n\x05width\x18\x01 \x01(\r\x12\x0e\n\x06height\x18\x02 \x01(\r\x12\x0e\n\x06\x66rames\x18\x03 \x01(\r\x12\x19\n\x11\x66rames_per_second\x18\x04 \x01(\x01\"\xc5\x01\n\x11\x41udioPlayoutStats\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12$\n\x1csynthesized_samples_duration\x18\x02 \x01(\x01\x12\"\n\x1asynthesized_samples_events\x18\x03 \x01(\r\x12\x1e\n\x16total_samples_duration\x18\x04 \x01(\x01\x12\x1b\n\x13total_playout_delay\x18\x05 \x01(\x01\x12\x1b\n\x13total_samples_count\x18\x06 \x01(\x04\"Q\n\x13PeerConnectionStats\x12\x1c\n\x14\x64\x61ta_channels_opened\x18\x01 \x01(\r\x12\x1c\n\x14\x64\x61ta_channels_closed\x18\x02 \x01(\r\"\xf1\x01\n\x10\x44\x61taChannelStats\x12\r\n\x05label\x18\x01 \x01(\t\x12\x10\n\x08protocol\x18\x02 \x01(\t\x12\x1f\n\x17\x64\x61ta_channel_identifier\x18\x03 \x01(\x05\x12\x33\n\x05state\x18\x04 \x01(\x0e\x32\x1f.livekit.proto.DataChannelStateH\x00\x88\x01\x01\x12\x15\n\rmessages_sent\x18\x05 \x01(\r\x12\x12\n\nbytes_sent\x18\x06 \x01(\x04\x12\x19\n\x11messages_received\x18\x07 \x01(\r\x12\x16\n\x0e\x62ytes_received\x18\x08 \x01(\x04\x42\x08\n\x06_state\"\xc3\x04\n\x0eTransportStats\x12\x14\n\x0cpackets_sent\x18\x01 \x01(\x04\x12\x18\n\x10packets_received\x18\x02 \x01(\x04\x12\x12\n\nbytes_sent\x18\x03 \x01(\x04\x12\x16\n\x0e\x62ytes_received\x18\x04 \x01(\x04\x12(\n\x08ice_role\x18\x05 \x01(\x0e\x32\x16.livekit.proto.IceRole\x12#\n\x1bice_local_username_fragment\x18\x06 \x01(\t\x12:\n\ndtls_state\x18\x07 \x01(\x0e\x32!.livekit.proto.DtlsTransportStateH\x00\x88\x01\x01\x12\x38\n\tice_state\x18\x08 \x01(\x0e\x32 .livekit.proto.IceTransportStateH\x01\x88\x01\x01\x12\"\n\x1aselected_candidate_pair_id\x18\t \x01(\t\x12\x1c\n\x14local_certificate_id\x18\n \x01(\t\x12\x1d\n\x15remote_certificate_id\x18\x0b \x01(\t\x12\x13\n\x0btls_version\x18\x0c \x01(\t\x12\x13\n\x0b\x64tls_cipher\x18\r \x01(\t\x12*\n\tdtls_role\x18\x0e \x01(\x0e\x32\x17.livekit.proto.DtlsRole\x12\x13\n\x0bsrtp_cipher\x18\x0f \x01(\t\x12\'\n\x1fselected_candidate_pair_changes\x18\x10 \x01(\rB\r\n\x0b_dtls_stateB\x0c\n\n_ice_state\"\xb3\x05\n\x12\x43\x61ndidatePairStats\x12\x14\n\x0ctransport_id\x18\x01 \x01(\t\x12\x1a\n\x12local_candidate_id\x18\x02 \x01(\t\x12\x1b\n\x13remote_candidate_id\x18\x03 \x01(\t\x12\x38\n\x05state\x18\x04 \x01(\x0e\x32$.livekit.proto.IceCandidatePairStateH\x00\x88\x01\x01\x12\x11\n\tnominated\x18\x05 \x01(\x08\x12\x14\n\x0cpackets_sent\x18\x06 \x01(\x04\x12\x18\n\x10packets_received\x18\x07 \x01(\x04\x12\x12\n\nbytes_sent\x18\x08 \x01(\x04\x12\x16\n\x0e\x62ytes_received\x18\t \x01(\x04\x12\"\n\x1alast_packet_sent_timestamp\x18\n \x01(\x01\x12&\n\x1elast_packet_received_timestamp\x18\x0b \x01(\x01\x12\x1d\n\x15total_round_trip_time\x18\x0c \x01(\x01\x12\x1f\n\x17\x63urrent_round_trip_time\x18\r \x01(\x01\x12\"\n\x1a\x61vailable_outgoing_bitrate\x18\x0e \x01(\x01\x12\"\n\x1a\x61vailable_incoming_bitrate\x18\x0f \x01(\x01\x12\x19\n\x11requests_received\x18\x10 \x01(\x04\x12\x15\n\rrequests_sent\x18\x11 \x01(\x04\x12\x1a\n\x12responses_received\x18\x12 \x01(\x04\x12\x16\n\x0eresponses_sent\x18\x13 \x01(\x04\x12\x1d\n\x15\x63onsent_requests_sent\x18\x14 \x01(\x04\x12!\n\x19packets_discarded_on_send\x18\x15 \x01(\r\x12\x1f\n\x17\x62ytes_discarded_on_send\x18\x16 \x01(\x04\x42\x08\n\x06_state\"\xcb\x03\n\x11IceCandidateStats\x12\x14\n\x0ctransport_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\x05\x12\x10\n\x08protocol\x18\x04 \x01(\t\x12<\n\x0e\x63\x61ndidate_type\x18\x05 \x01(\x0e\x32\x1f.livekit.proto.IceCandidateTypeH\x00\x88\x01\x01\x12\x10\n\x08priority\x18\x06 \x01(\x05\x12\x0b\n\x03url\x18\x07 \x01(\t\x12\x46\n\x0erelay_protocol\x18\x08 \x01(\x0e\x32).livekit.proto.IceServerTransportProtocolH\x01\x88\x01\x01\x12\x12\n\nfoundation\x18\t \x01(\t\x12\x17\n\x0frelated_address\x18\n \x01(\t\x12\x14\n\x0crelated_port\x18\x0b \x01(\x05\x12\x19\n\x11username_fragment\x18\x0c \x01(\t\x12\x39\n\x08tcp_type\x18\r \x01(\x0e\x32\".livekit.proto.IceTcpCandidateTypeH\x02\x88\x01\x01\x42\x11\n\x0f_candidate_typeB\x11\n\x0f_relay_protocolB\x0b\n\t_tcp_type\"\x81\x01\n\x10\x43\x65rtificateStats\x12\x13\n\x0b\x66ingerprint\x18\x01 \x01(\t\x12\x1d\n\x15\x66ingerprint_algorithm\x18\x02 \x01(\t\x12\x1a\n\x12\x62\x61se64_certificate\x18\x03 \x01(\t\x12\x1d\n\x15issuer_certificate_id\x18\x04 \x01(\t*Q\n\x10\x44\x61taChannelState\x12\x11\n\rDC_CONNECTING\x10\x00\x12\x0b\n\x07\x44\x43_OPEN\x10\x01\x12\x0e\n\nDC_CLOSING\x10\x02\x12\r\n\tDC_CLOSED\x10\x03*r\n\x17QualityLimitationReason\x12\x13\n\x0fLIMITATION_NONE\x10\x00\x12\x12\n\x0eLIMITATION_CPU\x10\x01\x12\x18\n\x14LIMITATION_BANDWIDTH\x10\x02\x12\x14\n\x10LIMITATION_OTHER\x10\x03*C\n\x07IceRole\x12\x0f\n\x0bICE_UNKNOWN\x10\x00\x12\x13\n\x0fICE_CONTROLLING\x10\x01\x12\x12\n\x0eICE_CONTROLLED\x10\x02*\x9f\x01\n\x12\x44tlsTransportState\x12\x16\n\x12\x44TLS_TRANSPORT_NEW\x10\x00\x12\x1d\n\x19\x44TLS_TRANSPORT_CONNECTING\x10\x01\x12\x1c\n\x18\x44TLS_TRANSPORT_CONNECTED\x10\x02\x12\x19\n\x15\x44TLS_TRANSPORT_CLOSED\x10\x03\x12\x19\n\x15\x44TLS_TRANSPORT_FAILED\x10\x04*\xd4\x01\n\x11IceTransportState\x12\x15\n\x11ICE_TRANSPORT_NEW\x10\x00\x12\x1a\n\x16ICE_TRANSPORT_CHECKING\x10\x01\x12\x1b\n\x17ICE_TRANSPORT_CONNECTED\x10\x02\x12\x1b\n\x17ICE_TRANSPORT_COMPLETED\x10\x03\x12\x1e\n\x1aICE_TRANSPORT_DISCONNECTED\x10\x04\x12\x18\n\x14ICE_TRANSPORT_FAILED\x10\x05\x12\x18\n\x14ICE_TRANSPORT_CLOSED\x10\x06*>\n\x08\x44tlsRole\x12\x0f\n\x0b\x44TLS_CLIENT\x10\x00\x12\x0f\n\x0b\x44TLS_SERVER\x10\x01\x12\x10\n\x0c\x44TLS_UNKNOWN\x10\x02*u\n\x15IceCandidatePairState\x12\x0f\n\x0bPAIR_FROZEN\x10\x00\x12\x10\n\x0cPAIR_WAITING\x10\x01\x12\x14\n\x10PAIR_IN_PROGRESS\x10\x02\x12\x0f\n\x0bPAIR_FAILED\x10\x03\x12\x12\n\x0ePAIR_SUCCEEDED\x10\x04*=\n\x10IceCandidateType\x12\x08\n\x04HOST\x10\x00\x12\t\n\x05SRFLX\x10\x01\x12\t\n\x05PRFLX\x10\x02\x12\t\n\x05RELAY\x10\x03*U\n\x1aIceServerTransportProtocol\x12\x11\n\rTRANSPORT_UDP\x10\x00\x12\x11\n\rTRANSPORT_TCP\x10\x01\x12\x11\n\rTRANSPORT_TLS\x10\x02*T\n\x13IceTcpCandidateType\x12\x14\n\x10\x43\x41NDIDATE_ACTIVE\x10\x00\x12\x15\n\x11\x43\x41NDIDATE_PASSIVE\x10\x01\x12\x10\n\x0c\x43\x41NDIDATE_SO\x10\x02\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'stats_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\252\002\rLiveKit.Proto' + _OUTBOUNDRTPSTREAMSTATS_QUALITYLIMITATIONDURATIONSENTRY._options = None + _OUTBOUNDRTPSTREAMSTATS_QUALITYLIMITATIONDURATIONSENTRY._serialized_options = b'8\001' + _globals['_DATACHANNELSTATE']._serialized_start=9217 + _globals['_DATACHANNELSTATE']._serialized_end=9298 + _globals['_QUALITYLIMITATIONREASON']._serialized_start=9300 + _globals['_QUALITYLIMITATIONREASON']._serialized_end=9414 + _globals['_ICEROLE']._serialized_start=9416 + _globals['_ICEROLE']._serialized_end=9483 + _globals['_DTLSTRANSPORTSTATE']._serialized_start=9486 + _globals['_DTLSTRANSPORTSTATE']._serialized_end=9645 + _globals['_ICETRANSPORTSTATE']._serialized_start=9648 + _globals['_ICETRANSPORTSTATE']._serialized_end=9860 + _globals['_DTLSROLE']._serialized_start=9862 + _globals['_DTLSROLE']._serialized_end=9924 + _globals['_ICECANDIDATEPAIRSTATE']._serialized_start=9926 + _globals['_ICECANDIDATEPAIRSTATE']._serialized_end=10043 + _globals['_ICECANDIDATETYPE']._serialized_start=10045 + _globals['_ICECANDIDATETYPE']._serialized_end=10106 + _globals['_ICESERVERTRANSPORTPROTOCOL']._serialized_start=10108 + _globals['_ICESERVERTRANSPORTPROTOCOL']._serialized_end=10193 + _globals['_ICETCPCANDIDATETYPE']._serialized_start=10195 + _globals['_ICETCPCANDIDATETYPE']._serialized_end=10279 + _globals['_RTCSTATS']._serialized_start=31 + _globals['_RTCSTATS']._serialized_end=3064 + _globals['_RTCSTATS_CODEC']._serialized_start=974 + _globals['_RTCSTATS_CODEC']._serialized_end=1065 + _globals['_RTCSTATS_INBOUNDRTP']._serialized_start=1068 + _globals['_RTCSTATS_INBOUNDRTP']._serialized_end=1281 + _globals['_RTCSTATS_OUTBOUNDRTP']._serialized_start=1284 + _globals['_RTCSTATS_OUTBOUNDRTP']._serialized_end=1492 + _globals['_RTCSTATS_REMOTEINBOUNDRTP']._serialized_start=1495 + _globals['_RTCSTATS_REMOTEINBOUNDRTP']._serialized_end=1727 + _globals['_RTCSTATS_REMOTEOUTBOUNDRTP']._serialized_start=1730 + _globals['_RTCSTATS_REMOTEOUTBOUNDRTP']._serialized_end=1957 + _globals['_RTCSTATS_MEDIASOURCE']._serialized_start=1960 + _globals['_RTCSTATS_MEDIASOURCE']._serialized_end=2160 + _globals['_RTCSTATS_MEDIAPLAYOUT']._serialized_start=2162 + _globals['_RTCSTATS_MEDIAPLAYOUT']._serialized_end=2275 + _globals['_RTCSTATS_PEERCONNECTION']._serialized_start=2277 + _globals['_RTCSTATS_PEERCONNECTION']._serialized_end=2383 + _globals['_RTCSTATS_DATACHANNEL']._serialized_start=2385 + _globals['_RTCSTATS_DATACHANNEL']._serialized_end=2485 + _globals['_RTCSTATS_TRANSPORT']._serialized_start=2487 + _globals['_RTCSTATS_TRANSPORT']._serialized_end=2590 + _globals['_RTCSTATS_CANDIDATEPAIR']._serialized_start=2592 + _globals['_RTCSTATS_CANDIDATEPAIR']._serialized_end=2708 + _globals['_RTCSTATS_LOCALCANDIDATE']._serialized_start=2710 + _globals['_RTCSTATS_LOCALCANDIDATE']._serialized_end=2821 + _globals['_RTCSTATS_REMOTECANDIDATE']._serialized_start=2823 + _globals['_RTCSTATS_REMOTECANDIDATE']._serialized_end=2935 + _globals['_RTCSTATS_CERTIFICATE']._serialized_start=2937 + _globals['_RTCSTATS_CERTIFICATE']._serialized_end=3046 + _globals['_RTCSTATS_TRACK']._serialized_start=3048 + _globals['_RTCSTATS_TRACK']._serialized_end=3055 + _globals['_RTCSTATSDATA']._serialized_start=3066 + _globals['_RTCSTATSDATA']._serialized_end=3111 + _globals['_CODECSTATS']._serialized_start=3114 + _globals['_CODECSTATS']._serialized_end=3250 + _globals['_RTPSTREAMSTATS']._serialized_start=3252 + _globals['_RTPSTREAMSTATS']._serialized_end=3336 + _globals['_RECEIVEDRTPSTREAMSTATS']._serialized_start=3338 + _globals['_RECEIVEDRTPSTREAMSTATS']._serialized_end=3426 + _globals['_INBOUNDRTPSTREAMSTATS']._serialized_start=3429 + _globals['_INBOUNDRTPSTREAMSTATS']._serialized_end=4967 + _globals['_SENTRTPSTREAMSTATS']._serialized_start=4969 + _globals['_SENTRTPSTREAMSTATS']._serialized_end=5031 + _globals['_OUTBOUNDRTPSTREAMSTATS']._serialized_start=5034 + _globals['_OUTBOUNDRTPSTREAMSTATS']._serialized_end=6011 + _globals['_OUTBOUNDRTPSTREAMSTATS_QUALITYLIMITATIONDURATIONSENTRY']._serialized_start=5946 + _globals['_OUTBOUNDRTPSTREAMSTATS_QUALITYLIMITATIONDURATIONSENTRY']._serialized_end=6011 + _globals['_REMOTEINBOUNDRTPSTREAMSTATS']._serialized_start=6014 + _globals['_REMOTEINBOUNDRTPSTREAMSTATS']._serialized_end=6178 + _globals['_REMOTEOUTBOUNDRTPSTREAMSTATS']._serialized_start=6181 + _globals['_REMOTEOUTBOUNDRTPSTREAMSTATS']._serialized_end=6371 + _globals['_MEDIASOURCESTATS']._serialized_start=6373 + _globals['_MEDIASOURCESTATS']._serialized_end=6431 + _globals['_AUDIOSOURCESTATS']._serialized_start=6434 + _globals['_AUDIOSOURCESTATS']._serialized_end=6724 + _globals['_VIDEOSOURCESTATS']._serialized_start=6726 + _globals['_VIDEOSOURCESTATS']._serialized_end=6818 + _globals['_AUDIOPLAYOUTSTATS']._serialized_start=6821 + _globals['_AUDIOPLAYOUTSTATS']._serialized_end=7018 + _globals['_PEERCONNECTIONSTATS']._serialized_start=7020 + _globals['_PEERCONNECTIONSTATS']._serialized_end=7101 + _globals['_DATACHANNELSTATS']._serialized_start=7104 + _globals['_DATACHANNELSTATS']._serialized_end=7345 + _globals['_TRANSPORTSTATS']._serialized_start=7348 + _globals['_TRANSPORTSTATS']._serialized_end=7927 + _globals['_CANDIDATEPAIRSTATS']._serialized_start=7930 + _globals['_CANDIDATEPAIRSTATS']._serialized_end=8621 + _globals['_ICECANDIDATESTATS']._serialized_start=8624 + _globals['_ICECANDIDATESTATS']._serialized_end=9083 + _globals['_CERTIFICATESTATS']._serialized_start=9086 + _globals['_CERTIFICATESTATS']._serialized_end=9215 +# @@protoc_insertion_point(module_scope) diff --git a/livekit-rtc/livekit/rtc/_proto/stats_pb2.pyi b/livekit-rtc/livekit/rtc/_proto/stats_pb2.pyi new file mode 100644 index 00000000..82b8ef4b --- /dev/null +++ b/livekit-rtc/livekit/rtc/_proto/stats_pb2.pyi @@ -0,0 +1,1466 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2023 LiveKit, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _DataChannelState: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _DataChannelStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DataChannelState.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + DC_CONNECTING: _DataChannelState.ValueType # 0 + DC_OPEN: _DataChannelState.ValueType # 1 + DC_CLOSING: _DataChannelState.ValueType # 2 + DC_CLOSED: _DataChannelState.ValueType # 3 + +class DataChannelState(_DataChannelState, metaclass=_DataChannelStateEnumTypeWrapper): ... + +DC_CONNECTING: DataChannelState.ValueType # 0 +DC_OPEN: DataChannelState.ValueType # 1 +DC_CLOSING: DataChannelState.ValueType # 2 +DC_CLOSED: DataChannelState.ValueType # 3 +global___DataChannelState = DataChannelState + +class _QualityLimitationReason: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _QualityLimitationReasonEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_QualityLimitationReason.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + LIMITATION_NONE: _QualityLimitationReason.ValueType # 0 + LIMITATION_CPU: _QualityLimitationReason.ValueType # 1 + LIMITATION_BANDWIDTH: _QualityLimitationReason.ValueType # 2 + LIMITATION_OTHER: _QualityLimitationReason.ValueType # 3 + +class QualityLimitationReason(_QualityLimitationReason, metaclass=_QualityLimitationReasonEnumTypeWrapper): ... + +LIMITATION_NONE: QualityLimitationReason.ValueType # 0 +LIMITATION_CPU: QualityLimitationReason.ValueType # 1 +LIMITATION_BANDWIDTH: QualityLimitationReason.ValueType # 2 +LIMITATION_OTHER: QualityLimitationReason.ValueType # 3 +global___QualityLimitationReason = QualityLimitationReason + +class _IceRole: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _IceRoleEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IceRole.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + ICE_UNKNOWN: _IceRole.ValueType # 0 + ICE_CONTROLLING: _IceRole.ValueType # 1 + ICE_CONTROLLED: _IceRole.ValueType # 2 + +class IceRole(_IceRole, metaclass=_IceRoleEnumTypeWrapper): ... + +ICE_UNKNOWN: IceRole.ValueType # 0 +ICE_CONTROLLING: IceRole.ValueType # 1 +ICE_CONTROLLED: IceRole.ValueType # 2 +global___IceRole = IceRole + +class _DtlsTransportState: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _DtlsTransportStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DtlsTransportState.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + DTLS_TRANSPORT_NEW: _DtlsTransportState.ValueType # 0 + DTLS_TRANSPORT_CONNECTING: _DtlsTransportState.ValueType # 1 + DTLS_TRANSPORT_CONNECTED: _DtlsTransportState.ValueType # 2 + DTLS_TRANSPORT_CLOSED: _DtlsTransportState.ValueType # 3 + DTLS_TRANSPORT_FAILED: _DtlsTransportState.ValueType # 4 + +class DtlsTransportState(_DtlsTransportState, metaclass=_DtlsTransportStateEnumTypeWrapper): ... + +DTLS_TRANSPORT_NEW: DtlsTransportState.ValueType # 0 +DTLS_TRANSPORT_CONNECTING: DtlsTransportState.ValueType # 1 +DTLS_TRANSPORT_CONNECTED: DtlsTransportState.ValueType # 2 +DTLS_TRANSPORT_CLOSED: DtlsTransportState.ValueType # 3 +DTLS_TRANSPORT_FAILED: DtlsTransportState.ValueType # 4 +global___DtlsTransportState = DtlsTransportState + +class _IceTransportState: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _IceTransportStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IceTransportState.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + ICE_TRANSPORT_NEW: _IceTransportState.ValueType # 0 + ICE_TRANSPORT_CHECKING: _IceTransportState.ValueType # 1 + ICE_TRANSPORT_CONNECTED: _IceTransportState.ValueType # 2 + ICE_TRANSPORT_COMPLETED: _IceTransportState.ValueType # 3 + ICE_TRANSPORT_DISCONNECTED: _IceTransportState.ValueType # 4 + ICE_TRANSPORT_FAILED: _IceTransportState.ValueType # 5 + ICE_TRANSPORT_CLOSED: _IceTransportState.ValueType # 6 + +class IceTransportState(_IceTransportState, metaclass=_IceTransportStateEnumTypeWrapper): ... + +ICE_TRANSPORT_NEW: IceTransportState.ValueType # 0 +ICE_TRANSPORT_CHECKING: IceTransportState.ValueType # 1 +ICE_TRANSPORT_CONNECTED: IceTransportState.ValueType # 2 +ICE_TRANSPORT_COMPLETED: IceTransportState.ValueType # 3 +ICE_TRANSPORT_DISCONNECTED: IceTransportState.ValueType # 4 +ICE_TRANSPORT_FAILED: IceTransportState.ValueType # 5 +ICE_TRANSPORT_CLOSED: IceTransportState.ValueType # 6 +global___IceTransportState = IceTransportState + +class _DtlsRole: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _DtlsRoleEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DtlsRole.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + DTLS_CLIENT: _DtlsRole.ValueType # 0 + DTLS_SERVER: _DtlsRole.ValueType # 1 + DTLS_UNKNOWN: _DtlsRole.ValueType # 2 + +class DtlsRole(_DtlsRole, metaclass=_DtlsRoleEnumTypeWrapper): ... + +DTLS_CLIENT: DtlsRole.ValueType # 0 +DTLS_SERVER: DtlsRole.ValueType # 1 +DTLS_UNKNOWN: DtlsRole.ValueType # 2 +global___DtlsRole = DtlsRole + +class _IceCandidatePairState: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _IceCandidatePairStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IceCandidatePairState.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + PAIR_FROZEN: _IceCandidatePairState.ValueType # 0 + PAIR_WAITING: _IceCandidatePairState.ValueType # 1 + PAIR_IN_PROGRESS: _IceCandidatePairState.ValueType # 2 + PAIR_FAILED: _IceCandidatePairState.ValueType # 3 + PAIR_SUCCEEDED: _IceCandidatePairState.ValueType # 4 + +class IceCandidatePairState(_IceCandidatePairState, metaclass=_IceCandidatePairStateEnumTypeWrapper): ... + +PAIR_FROZEN: IceCandidatePairState.ValueType # 0 +PAIR_WAITING: IceCandidatePairState.ValueType # 1 +PAIR_IN_PROGRESS: IceCandidatePairState.ValueType # 2 +PAIR_FAILED: IceCandidatePairState.ValueType # 3 +PAIR_SUCCEEDED: IceCandidatePairState.ValueType # 4 +global___IceCandidatePairState = IceCandidatePairState + +class _IceCandidateType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _IceCandidateTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IceCandidateType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + HOST: _IceCandidateType.ValueType # 0 + SRFLX: _IceCandidateType.ValueType # 1 + PRFLX: _IceCandidateType.ValueType # 2 + RELAY: _IceCandidateType.ValueType # 3 + +class IceCandidateType(_IceCandidateType, metaclass=_IceCandidateTypeEnumTypeWrapper): ... + +HOST: IceCandidateType.ValueType # 0 +SRFLX: IceCandidateType.ValueType # 1 +PRFLX: IceCandidateType.ValueType # 2 +RELAY: IceCandidateType.ValueType # 3 +global___IceCandidateType = IceCandidateType + +class _IceServerTransportProtocol: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _IceServerTransportProtocolEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IceServerTransportProtocol.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + TRANSPORT_UDP: _IceServerTransportProtocol.ValueType # 0 + TRANSPORT_TCP: _IceServerTransportProtocol.ValueType # 1 + TRANSPORT_TLS: _IceServerTransportProtocol.ValueType # 2 + +class IceServerTransportProtocol(_IceServerTransportProtocol, metaclass=_IceServerTransportProtocolEnumTypeWrapper): ... + +TRANSPORT_UDP: IceServerTransportProtocol.ValueType # 0 +TRANSPORT_TCP: IceServerTransportProtocol.ValueType # 1 +TRANSPORT_TLS: IceServerTransportProtocol.ValueType # 2 +global___IceServerTransportProtocol = IceServerTransportProtocol + +class _IceTcpCandidateType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _IceTcpCandidateTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IceTcpCandidateType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + CANDIDATE_ACTIVE: _IceTcpCandidateType.ValueType # 0 + CANDIDATE_PASSIVE: _IceTcpCandidateType.ValueType # 1 + CANDIDATE_SO: _IceTcpCandidateType.ValueType # 2 + +class IceTcpCandidateType(_IceTcpCandidateType, metaclass=_IceTcpCandidateTypeEnumTypeWrapper): ... + +CANDIDATE_ACTIVE: IceTcpCandidateType.ValueType # 0 +CANDIDATE_PASSIVE: IceTcpCandidateType.ValueType # 1 +CANDIDATE_SO: IceTcpCandidateType.ValueType # 2 +global___IceTcpCandidateType = IceTcpCandidateType + +@typing_extensions.final +class RtcStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing_extensions.final + class Codec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + CODEC_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def codec(self) -> global___CodecStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + codec: global___CodecStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["codec", b"codec", "rtc", b"rtc"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["codec", b"codec", "rtc", b"rtc"]) -> None: ... + + @typing_extensions.final + class InboundRtp(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + STREAM_FIELD_NUMBER: builtins.int + RECEIVED_FIELD_NUMBER: builtins.int + INBOUND_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def stream(self) -> global___RtpStreamStats: ... + @property + def received(self) -> global___ReceivedRtpStreamStats: ... + @property + def inbound(self) -> global___InboundRtpStreamStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + stream: global___RtpStreamStats | None = ..., + received: global___ReceivedRtpStreamStats | None = ..., + inbound: global___InboundRtpStreamStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["inbound", b"inbound", "received", b"received", "rtc", b"rtc", "stream", b"stream"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["inbound", b"inbound", "received", b"received", "rtc", b"rtc", "stream", b"stream"]) -> None: ... + + @typing_extensions.final + class OutboundRtp(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + STREAM_FIELD_NUMBER: builtins.int + SENT_FIELD_NUMBER: builtins.int + OUTBOUND_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def stream(self) -> global___RtpStreamStats: ... + @property + def sent(self) -> global___SentRtpStreamStats: ... + @property + def outbound(self) -> global___OutboundRtpStreamStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + stream: global___RtpStreamStats | None = ..., + sent: global___SentRtpStreamStats | None = ..., + outbound: global___OutboundRtpStreamStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["outbound", b"outbound", "rtc", b"rtc", "sent", b"sent", "stream", b"stream"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["outbound", b"outbound", "rtc", b"rtc", "sent", b"sent", "stream", b"stream"]) -> None: ... + + @typing_extensions.final + class RemoteInboundRtp(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + STREAM_FIELD_NUMBER: builtins.int + RECEIVED_FIELD_NUMBER: builtins.int + REMOTE_INBOUND_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def stream(self) -> global___RtpStreamStats: ... + @property + def received(self) -> global___ReceivedRtpStreamStats: ... + @property + def remote_inbound(self) -> global___RemoteInboundRtpStreamStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + stream: global___RtpStreamStats | None = ..., + received: global___ReceivedRtpStreamStats | None = ..., + remote_inbound: global___RemoteInboundRtpStreamStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["received", b"received", "remote_inbound", b"remote_inbound", "rtc", b"rtc", "stream", b"stream"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["received", b"received", "remote_inbound", b"remote_inbound", "rtc", b"rtc", "stream", b"stream"]) -> None: ... + + @typing_extensions.final + class RemoteOutboundRtp(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + STREAM_FIELD_NUMBER: builtins.int + SENT_FIELD_NUMBER: builtins.int + REMOTE_OUTBOUND_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def stream(self) -> global___RtpStreamStats: ... + @property + def sent(self) -> global___SentRtpStreamStats: ... + @property + def remote_outbound(self) -> global___RemoteOutboundRtpStreamStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + stream: global___RtpStreamStats | None = ..., + sent: global___SentRtpStreamStats | None = ..., + remote_outbound: global___RemoteOutboundRtpStreamStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["remote_outbound", b"remote_outbound", "rtc", b"rtc", "sent", b"sent", "stream", b"stream"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["remote_outbound", b"remote_outbound", "rtc", b"rtc", "sent", b"sent", "stream", b"stream"]) -> None: ... + + @typing_extensions.final + class MediaSource(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + SOURCE_FIELD_NUMBER: builtins.int + AUDIO_FIELD_NUMBER: builtins.int + VIDEO_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def source(self) -> global___MediaSourceStats: ... + @property + def audio(self) -> global___AudioSourceStats: ... + @property + def video(self) -> global___VideoSourceStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + source: global___MediaSourceStats | None = ..., + audio: global___AudioSourceStats | None = ..., + video: global___VideoSourceStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["audio", b"audio", "rtc", b"rtc", "source", b"source", "video", b"video"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["audio", b"audio", "rtc", b"rtc", "source", b"source", "video", b"video"]) -> None: ... + + @typing_extensions.final + class MediaPlayout(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + AUDIO_PLAYOUT_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def audio_playout(self) -> global___AudioPlayoutStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + audio_playout: global___AudioPlayoutStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["audio_playout", b"audio_playout", "rtc", b"rtc"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["audio_playout", b"audio_playout", "rtc", b"rtc"]) -> None: ... + + @typing_extensions.final + class PeerConnection(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + PC_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def pc(self) -> global___PeerConnectionStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + pc: global___PeerConnectionStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["pc", b"pc", "rtc", b"rtc"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["pc", b"pc", "rtc", b"rtc"]) -> None: ... + + @typing_extensions.final + class DataChannel(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + DC_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def dc(self) -> global___DataChannelStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + dc: global___DataChannelStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["dc", b"dc", "rtc", b"rtc"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["dc", b"dc", "rtc", b"rtc"]) -> None: ... + + @typing_extensions.final + class Transport(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + TRANSPORT_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def transport(self) -> global___TransportStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + transport: global___TransportStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["rtc", b"rtc", "transport", b"transport"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["rtc", b"rtc", "transport", b"transport"]) -> None: ... + + @typing_extensions.final + class CandidatePair(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + CANDIDATE_PAIR_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def candidate_pair(self) -> global___CandidatePairStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + candidate_pair: global___CandidatePairStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["candidate_pair", b"candidate_pair", "rtc", b"rtc"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["candidate_pair", b"candidate_pair", "rtc", b"rtc"]) -> None: ... + + @typing_extensions.final + class LocalCandidate(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + CANDIDATE_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def candidate(self) -> global___IceCandidateStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + candidate: global___IceCandidateStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["candidate", b"candidate", "rtc", b"rtc"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["candidate", b"candidate", "rtc", b"rtc"]) -> None: ... + + @typing_extensions.final + class RemoteCandidate(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + CANDIDATE_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def candidate(self) -> global___IceCandidateStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + candidate: global___IceCandidateStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["candidate", b"candidate", "rtc", b"rtc"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["candidate", b"candidate", "rtc", b"rtc"]) -> None: ... + + @typing_extensions.final + class Certificate(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RTC_FIELD_NUMBER: builtins.int + CERTIFICATE_FIELD_NUMBER: builtins.int + @property + def rtc(self) -> global___RtcStatsData: ... + @property + def certificate(self) -> global___CertificateStats: ... + def __init__( + self, + *, + rtc: global___RtcStatsData | None = ..., + certificate: global___CertificateStats | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["certificate", b"certificate", "rtc", b"rtc"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["certificate", b"certificate", "rtc", b"rtc"]) -> None: ... + + @typing_extensions.final + class Track(google.protobuf.message.Message): + """Deprecated""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + + CODEC_FIELD_NUMBER: builtins.int + INBOUND_RTP_FIELD_NUMBER: builtins.int + OUTBOUND_RTP_FIELD_NUMBER: builtins.int + REMOTE_INBOUND_RTP_FIELD_NUMBER: builtins.int + REMOTE_OUTBOUND_RTP_FIELD_NUMBER: builtins.int + MEDIA_SOURCE_FIELD_NUMBER: builtins.int + MEDIA_PLAYOUT_FIELD_NUMBER: builtins.int + PEER_CONNECTION_FIELD_NUMBER: builtins.int + DATA_CHANNEL_FIELD_NUMBER: builtins.int + TRANSPORT_FIELD_NUMBER: builtins.int + CANDIDATE_PAIR_FIELD_NUMBER: builtins.int + LOCAL_CANDIDATE_FIELD_NUMBER: builtins.int + REMOTE_CANDIDATE_FIELD_NUMBER: builtins.int + CERTIFICATE_FIELD_NUMBER: builtins.int + TRACK_FIELD_NUMBER: builtins.int + @property + def codec(self) -> global___RtcStats.Codec: ... + @property + def inbound_rtp(self) -> global___RtcStats.InboundRtp: ... + @property + def outbound_rtp(self) -> global___RtcStats.OutboundRtp: ... + @property + def remote_inbound_rtp(self) -> global___RtcStats.RemoteInboundRtp: ... + @property + def remote_outbound_rtp(self) -> global___RtcStats.RemoteOutboundRtp: ... + @property + def media_source(self) -> global___RtcStats.MediaSource: ... + @property + def media_playout(self) -> global___RtcStats.MediaPlayout: ... + @property + def peer_connection(self) -> global___RtcStats.PeerConnection: ... + @property + def data_channel(self) -> global___RtcStats.DataChannel: ... + @property + def transport(self) -> global___RtcStats.Transport: ... + @property + def candidate_pair(self) -> global___RtcStats.CandidatePair: ... + @property + def local_candidate(self) -> global___RtcStats.LocalCandidate: ... + @property + def remote_candidate(self) -> global___RtcStats.RemoteCandidate: ... + @property + def certificate(self) -> global___RtcStats.Certificate: ... + @property + def track(self) -> global___RtcStats.Track: ... + def __init__( + self, + *, + codec: global___RtcStats.Codec | None = ..., + inbound_rtp: global___RtcStats.InboundRtp | None = ..., + outbound_rtp: global___RtcStats.OutboundRtp | None = ..., + remote_inbound_rtp: global___RtcStats.RemoteInboundRtp | None = ..., + remote_outbound_rtp: global___RtcStats.RemoteOutboundRtp | None = ..., + media_source: global___RtcStats.MediaSource | None = ..., + media_playout: global___RtcStats.MediaPlayout | None = ..., + peer_connection: global___RtcStats.PeerConnection | None = ..., + data_channel: global___RtcStats.DataChannel | None = ..., + transport: global___RtcStats.Transport | None = ..., + candidate_pair: global___RtcStats.CandidatePair | None = ..., + local_candidate: global___RtcStats.LocalCandidate | None = ..., + remote_candidate: global___RtcStats.RemoteCandidate | None = ..., + certificate: global___RtcStats.Certificate | None = ..., + track: global___RtcStats.Track | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["candidate_pair", b"candidate_pair", "certificate", b"certificate", "codec", b"codec", "data_channel", b"data_channel", "inbound_rtp", b"inbound_rtp", "local_candidate", b"local_candidate", "media_playout", b"media_playout", "media_source", b"media_source", "outbound_rtp", b"outbound_rtp", "peer_connection", b"peer_connection", "remote_candidate", b"remote_candidate", "remote_inbound_rtp", b"remote_inbound_rtp", "remote_outbound_rtp", b"remote_outbound_rtp", "stats", b"stats", "track", b"track", "transport", b"transport"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["candidate_pair", b"candidate_pair", "certificate", b"certificate", "codec", b"codec", "data_channel", b"data_channel", "inbound_rtp", b"inbound_rtp", "local_candidate", b"local_candidate", "media_playout", b"media_playout", "media_source", b"media_source", "outbound_rtp", b"outbound_rtp", "peer_connection", b"peer_connection", "remote_candidate", b"remote_candidate", "remote_inbound_rtp", b"remote_inbound_rtp", "remote_outbound_rtp", b"remote_outbound_rtp", "stats", b"stats", "track", b"track", "transport", b"transport"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["stats", b"stats"]) -> typing_extensions.Literal["codec", "inbound_rtp", "outbound_rtp", "remote_inbound_rtp", "remote_outbound_rtp", "media_source", "media_playout", "peer_connection", "data_channel", "transport", "candidate_pair", "local_candidate", "remote_candidate", "certificate", "track"] | None: ... + +global___RtcStats = RtcStats + +@typing_extensions.final +class RtcStatsData(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + TIMESTAMP_FIELD_NUMBER: builtins.int + id: builtins.str + timestamp: builtins.int + def __init__( + self, + *, + id: builtins.str = ..., + timestamp: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "timestamp", b"timestamp"]) -> None: ... + +global___RtcStatsData = RtcStatsData + +@typing_extensions.final +class CodecStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PAYLOAD_TYPE_FIELD_NUMBER: builtins.int + TRANSPORT_ID_FIELD_NUMBER: builtins.int + MIME_TYPE_FIELD_NUMBER: builtins.int + CLOCK_RATE_FIELD_NUMBER: builtins.int + CHANNELS_FIELD_NUMBER: builtins.int + SDP_FMTP_LINE_FIELD_NUMBER: builtins.int + payload_type: builtins.int + transport_id: builtins.str + mime_type: builtins.str + clock_rate: builtins.int + channels: builtins.int + sdp_fmtp_line: builtins.str + def __init__( + self, + *, + payload_type: builtins.int = ..., + transport_id: builtins.str = ..., + mime_type: builtins.str = ..., + clock_rate: builtins.int = ..., + channels: builtins.int = ..., + sdp_fmtp_line: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["channels", b"channels", "clock_rate", b"clock_rate", "mime_type", b"mime_type", "payload_type", b"payload_type", "sdp_fmtp_line", b"sdp_fmtp_line", "transport_id", b"transport_id"]) -> None: ... + +global___CodecStats = CodecStats + +@typing_extensions.final +class RtpStreamStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SSRC_FIELD_NUMBER: builtins.int + KIND_FIELD_NUMBER: builtins.int + TRANSPORT_ID_FIELD_NUMBER: builtins.int + CODEC_ID_FIELD_NUMBER: builtins.int + ssrc: builtins.int + kind: builtins.str + transport_id: builtins.str + codec_id: builtins.str + def __init__( + self, + *, + ssrc: builtins.int = ..., + kind: builtins.str = ..., + transport_id: builtins.str = ..., + codec_id: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["codec_id", b"codec_id", "kind", b"kind", "ssrc", b"ssrc", "transport_id", b"transport_id"]) -> None: ... + +global___RtpStreamStats = RtpStreamStats + +@typing_extensions.final +class ReceivedRtpStreamStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PACKETS_RECEIVED_FIELD_NUMBER: builtins.int + PACKETS_LOST_FIELD_NUMBER: builtins.int + JITTER_FIELD_NUMBER: builtins.int + packets_received: builtins.int + packets_lost: builtins.int + jitter: builtins.float + def __init__( + self, + *, + packets_received: builtins.int = ..., + packets_lost: builtins.int = ..., + jitter: builtins.float = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["jitter", b"jitter", "packets_lost", b"packets_lost", "packets_received", b"packets_received"]) -> None: ... + +global___ReceivedRtpStreamStats = ReceivedRtpStreamStats + +@typing_extensions.final +class InboundRtpStreamStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TRACK_IDENTIFIER_FIELD_NUMBER: builtins.int + MID_FIELD_NUMBER: builtins.int + REMOTE_ID_FIELD_NUMBER: builtins.int + FRAMES_DECODED_FIELD_NUMBER: builtins.int + KEY_FRAMES_DECODED_FIELD_NUMBER: builtins.int + FRAMES_RENDERED_FIELD_NUMBER: builtins.int + FRAMES_DROPPED_FIELD_NUMBER: builtins.int + FRAME_WIDTH_FIELD_NUMBER: builtins.int + FRAME_HEIGHT_FIELD_NUMBER: builtins.int + FRAMES_PER_SECOND_FIELD_NUMBER: builtins.int + QP_SUM_FIELD_NUMBER: builtins.int + TOTAL_DECODE_TIME_FIELD_NUMBER: builtins.int + TOTAL_INTER_FRAME_DELAY_FIELD_NUMBER: builtins.int + TOTAL_SQUARED_INTER_FRAME_DELAY_FIELD_NUMBER: builtins.int + PAUSE_COUNT_FIELD_NUMBER: builtins.int + TOTAL_PAUSE_DURATION_FIELD_NUMBER: builtins.int + FREEZE_COUNT_FIELD_NUMBER: builtins.int + TOTAL_FREEZE_DURATION_FIELD_NUMBER: builtins.int + LAST_PACKET_RECEIVED_TIMESTAMP_FIELD_NUMBER: builtins.int + HEADER_BYTES_RECEIVED_FIELD_NUMBER: builtins.int + PACKETS_DISCARDED_FIELD_NUMBER: builtins.int + FEC_BYTES_RECEIVED_FIELD_NUMBER: builtins.int + FEC_PACKETS_RECEIVED_FIELD_NUMBER: builtins.int + FEC_PACKETS_DISCARDED_FIELD_NUMBER: builtins.int + BYTES_RECEIVED_FIELD_NUMBER: builtins.int + NACK_COUNT_FIELD_NUMBER: builtins.int + FIR_COUNT_FIELD_NUMBER: builtins.int + PLI_COUNT_FIELD_NUMBER: builtins.int + TOTAL_PROCESSING_DELAY_FIELD_NUMBER: builtins.int + ESTIMATED_PLAYOUT_TIMESTAMP_FIELD_NUMBER: builtins.int + JITTER_BUFFER_DELAY_FIELD_NUMBER: builtins.int + JITTER_BUFFER_TARGET_DELAY_FIELD_NUMBER: builtins.int + JITTER_BUFFER_EMITTED_COUNT_FIELD_NUMBER: builtins.int + JITTER_BUFFER_MINIMUM_DELAY_FIELD_NUMBER: builtins.int + TOTAL_SAMPLES_RECEIVED_FIELD_NUMBER: builtins.int + CONCEALED_SAMPLES_FIELD_NUMBER: builtins.int + SILENT_CONCEALED_SAMPLES_FIELD_NUMBER: builtins.int + CONCEALMENT_EVENTS_FIELD_NUMBER: builtins.int + INSERTED_SAMPLES_FOR_DECELERATION_FIELD_NUMBER: builtins.int + REMOVED_SAMPLES_FOR_ACCELERATION_FIELD_NUMBER: builtins.int + AUDIO_LEVEL_FIELD_NUMBER: builtins.int + TOTAL_AUDIO_ENERGY_FIELD_NUMBER: builtins.int + TOTAL_SAMPLES_DURATION_FIELD_NUMBER: builtins.int + FRAMES_RECEIVED_FIELD_NUMBER: builtins.int + DECODER_IMPLEMENTATION_FIELD_NUMBER: builtins.int + PLAYOUT_ID_FIELD_NUMBER: builtins.int + POWER_EFFICIENT_DECODER_FIELD_NUMBER: builtins.int + FRAMES_ASSEMBLED_FROM_MULTIPLE_PACKETS_FIELD_NUMBER: builtins.int + TOTAL_ASSEMBLY_TIME_FIELD_NUMBER: builtins.int + RETRANSMITTED_PACKETS_RECEIVED_FIELD_NUMBER: builtins.int + RETRANSMITTED_BYTES_RECEIVED_FIELD_NUMBER: builtins.int + RTX_SSRC_FIELD_NUMBER: builtins.int + FEC_SSRC_FIELD_NUMBER: builtins.int + track_identifier: builtins.str + mid: builtins.str + remote_id: builtins.str + frames_decoded: builtins.int + key_frames_decoded: builtins.int + frames_rendered: builtins.int + frames_dropped: builtins.int + frame_width: builtins.int + frame_height: builtins.int + frames_per_second: builtins.float + qp_sum: builtins.int + total_decode_time: builtins.float + total_inter_frame_delay: builtins.float + total_squared_inter_frame_delay: builtins.float + pause_count: builtins.int + total_pause_duration: builtins.float + freeze_count: builtins.int + total_freeze_duration: builtins.float + last_packet_received_timestamp: builtins.float + header_bytes_received: builtins.int + packets_discarded: builtins.int + fec_bytes_received: builtins.int + fec_packets_received: builtins.int + fec_packets_discarded: builtins.int + bytes_received: builtins.int + nack_count: builtins.int + fir_count: builtins.int + pli_count: builtins.int + total_processing_delay: builtins.float + estimated_playout_timestamp: builtins.float + jitter_buffer_delay: builtins.float + jitter_buffer_target_delay: builtins.float + jitter_buffer_emitted_count: builtins.int + jitter_buffer_minimum_delay: builtins.float + total_samples_received: builtins.int + concealed_samples: builtins.int + silent_concealed_samples: builtins.int + concealment_events: builtins.int + inserted_samples_for_deceleration: builtins.int + removed_samples_for_acceleration: builtins.int + audio_level: builtins.float + total_audio_energy: builtins.float + total_samples_duration: builtins.float + frames_received: builtins.int + decoder_implementation: builtins.str + playout_id: builtins.str + power_efficient_decoder: builtins.bool + frames_assembled_from_multiple_packets: builtins.int + total_assembly_time: builtins.float + retransmitted_packets_received: builtins.int + retransmitted_bytes_received: builtins.int + rtx_ssrc: builtins.int + fec_ssrc: builtins.int + def __init__( + self, + *, + track_identifier: builtins.str = ..., + mid: builtins.str = ..., + remote_id: builtins.str = ..., + frames_decoded: builtins.int = ..., + key_frames_decoded: builtins.int = ..., + frames_rendered: builtins.int = ..., + frames_dropped: builtins.int = ..., + frame_width: builtins.int = ..., + frame_height: builtins.int = ..., + frames_per_second: builtins.float = ..., + qp_sum: builtins.int = ..., + total_decode_time: builtins.float = ..., + total_inter_frame_delay: builtins.float = ..., + total_squared_inter_frame_delay: builtins.float = ..., + pause_count: builtins.int = ..., + total_pause_duration: builtins.float = ..., + freeze_count: builtins.int = ..., + total_freeze_duration: builtins.float = ..., + last_packet_received_timestamp: builtins.float = ..., + header_bytes_received: builtins.int = ..., + packets_discarded: builtins.int = ..., + fec_bytes_received: builtins.int = ..., + fec_packets_received: builtins.int = ..., + fec_packets_discarded: builtins.int = ..., + bytes_received: builtins.int = ..., + nack_count: builtins.int = ..., + fir_count: builtins.int = ..., + pli_count: builtins.int = ..., + total_processing_delay: builtins.float = ..., + estimated_playout_timestamp: builtins.float = ..., + jitter_buffer_delay: builtins.float = ..., + jitter_buffer_target_delay: builtins.float = ..., + jitter_buffer_emitted_count: builtins.int = ..., + jitter_buffer_minimum_delay: builtins.float = ..., + total_samples_received: builtins.int = ..., + concealed_samples: builtins.int = ..., + silent_concealed_samples: builtins.int = ..., + concealment_events: builtins.int = ..., + inserted_samples_for_deceleration: builtins.int = ..., + removed_samples_for_acceleration: builtins.int = ..., + audio_level: builtins.float = ..., + total_audio_energy: builtins.float = ..., + total_samples_duration: builtins.float = ..., + frames_received: builtins.int = ..., + decoder_implementation: builtins.str = ..., + playout_id: builtins.str = ..., + power_efficient_decoder: builtins.bool = ..., + frames_assembled_from_multiple_packets: builtins.int = ..., + total_assembly_time: builtins.float = ..., + retransmitted_packets_received: builtins.int = ..., + retransmitted_bytes_received: builtins.int = ..., + rtx_ssrc: builtins.int = ..., + fec_ssrc: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["audio_level", b"audio_level", "bytes_received", b"bytes_received", "concealed_samples", b"concealed_samples", "concealment_events", b"concealment_events", "decoder_implementation", b"decoder_implementation", "estimated_playout_timestamp", b"estimated_playout_timestamp", "fec_bytes_received", b"fec_bytes_received", "fec_packets_discarded", b"fec_packets_discarded", "fec_packets_received", b"fec_packets_received", "fec_ssrc", b"fec_ssrc", "fir_count", b"fir_count", "frame_height", b"frame_height", "frame_width", b"frame_width", "frames_assembled_from_multiple_packets", b"frames_assembled_from_multiple_packets", "frames_decoded", b"frames_decoded", "frames_dropped", b"frames_dropped", "frames_per_second", b"frames_per_second", "frames_received", b"frames_received", "frames_rendered", b"frames_rendered", "freeze_count", b"freeze_count", "header_bytes_received", b"header_bytes_received", "inserted_samples_for_deceleration", b"inserted_samples_for_deceleration", "jitter_buffer_delay", b"jitter_buffer_delay", "jitter_buffer_emitted_count", b"jitter_buffer_emitted_count", "jitter_buffer_minimum_delay", b"jitter_buffer_minimum_delay", "jitter_buffer_target_delay", b"jitter_buffer_target_delay", "key_frames_decoded", b"key_frames_decoded", "last_packet_received_timestamp", b"last_packet_received_timestamp", "mid", b"mid", "nack_count", b"nack_count", "packets_discarded", b"packets_discarded", "pause_count", b"pause_count", "playout_id", b"playout_id", "pli_count", b"pli_count", "power_efficient_decoder", b"power_efficient_decoder", "qp_sum", b"qp_sum", "remote_id", b"remote_id", "removed_samples_for_acceleration", b"removed_samples_for_acceleration", "retransmitted_bytes_received", b"retransmitted_bytes_received", "retransmitted_packets_received", b"retransmitted_packets_received", "rtx_ssrc", b"rtx_ssrc", "silent_concealed_samples", b"silent_concealed_samples", "total_assembly_time", b"total_assembly_time", "total_audio_energy", b"total_audio_energy", "total_decode_time", b"total_decode_time", "total_freeze_duration", b"total_freeze_duration", "total_inter_frame_delay", b"total_inter_frame_delay", "total_pause_duration", b"total_pause_duration", "total_processing_delay", b"total_processing_delay", "total_samples_duration", b"total_samples_duration", "total_samples_received", b"total_samples_received", "total_squared_inter_frame_delay", b"total_squared_inter_frame_delay", "track_identifier", b"track_identifier"]) -> None: ... + +global___InboundRtpStreamStats = InboundRtpStreamStats + +@typing_extensions.final +class SentRtpStreamStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PACKETS_SENT_FIELD_NUMBER: builtins.int + BYTES_SENT_FIELD_NUMBER: builtins.int + packets_sent: builtins.int + bytes_sent: builtins.int + def __init__( + self, + *, + packets_sent: builtins.int = ..., + bytes_sent: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["bytes_sent", b"bytes_sent", "packets_sent", b"packets_sent"]) -> None: ... + +global___SentRtpStreamStats = SentRtpStreamStats + +@typing_extensions.final +class OutboundRtpStreamStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing_extensions.final + class QualityLimitationDurationsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.float + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.float = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + MID_FIELD_NUMBER: builtins.int + MEDIA_SOURCE_ID_FIELD_NUMBER: builtins.int + REMOTE_ID_FIELD_NUMBER: builtins.int + RID_FIELD_NUMBER: builtins.int + HEADER_BYTES_SENT_FIELD_NUMBER: builtins.int + RETRANSMITTED_PACKETS_SENT_FIELD_NUMBER: builtins.int + RETRANSMITTED_BYTES_SENT_FIELD_NUMBER: builtins.int + RTX_SSRC_FIELD_NUMBER: builtins.int + TARGET_BITRATE_FIELD_NUMBER: builtins.int + TOTAL_ENCODED_BYTES_TARGET_FIELD_NUMBER: builtins.int + FRAME_WIDTH_FIELD_NUMBER: builtins.int + FRAME_HEIGHT_FIELD_NUMBER: builtins.int + FRAMES_PER_SECOND_FIELD_NUMBER: builtins.int + FRAMES_SENT_FIELD_NUMBER: builtins.int + HUGE_FRAMES_SENT_FIELD_NUMBER: builtins.int + FRAMES_ENCODED_FIELD_NUMBER: builtins.int + KEY_FRAMES_ENCODED_FIELD_NUMBER: builtins.int + QP_SUM_FIELD_NUMBER: builtins.int + TOTAL_ENCODE_TIME_FIELD_NUMBER: builtins.int + TOTAL_PACKET_SEND_DELAY_FIELD_NUMBER: builtins.int + QUALITY_LIMITATION_REASON_FIELD_NUMBER: builtins.int + QUALITY_LIMITATION_DURATIONS_FIELD_NUMBER: builtins.int + QUALITY_LIMITATION_RESOLUTION_CHANGES_FIELD_NUMBER: builtins.int + NACK_COUNT_FIELD_NUMBER: builtins.int + FIR_COUNT_FIELD_NUMBER: builtins.int + PLI_COUNT_FIELD_NUMBER: builtins.int + ENCODER_IMPLEMENTATION_FIELD_NUMBER: builtins.int + POWER_EFFICIENT_ENCODER_FIELD_NUMBER: builtins.int + ACTIVE_FIELD_NUMBER: builtins.int + SCALIBILITY_MODE_FIELD_NUMBER: builtins.int + mid: builtins.str + media_source_id: builtins.str + remote_id: builtins.str + rid: builtins.str + header_bytes_sent: builtins.int + retransmitted_packets_sent: builtins.int + retransmitted_bytes_sent: builtins.int + rtx_ssrc: builtins.int + target_bitrate: builtins.float + total_encoded_bytes_target: builtins.int + frame_width: builtins.int + frame_height: builtins.int + frames_per_second: builtins.float + frames_sent: builtins.int + huge_frames_sent: builtins.int + frames_encoded: builtins.int + key_frames_encoded: builtins.int + qp_sum: builtins.int + total_encode_time: builtins.float + total_packet_send_delay: builtins.float + quality_limitation_reason: global___QualityLimitationReason.ValueType + @property + def quality_limitation_durations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.float]: ... + quality_limitation_resolution_changes: builtins.int + nack_count: builtins.int + fir_count: builtins.int + pli_count: builtins.int + encoder_implementation: builtins.str + power_efficient_encoder: builtins.bool + active: builtins.bool + scalibility_mode: builtins.str + def __init__( + self, + *, + mid: builtins.str = ..., + media_source_id: builtins.str = ..., + remote_id: builtins.str = ..., + rid: builtins.str = ..., + header_bytes_sent: builtins.int = ..., + retransmitted_packets_sent: builtins.int = ..., + retransmitted_bytes_sent: builtins.int = ..., + rtx_ssrc: builtins.int = ..., + target_bitrate: builtins.float = ..., + total_encoded_bytes_target: builtins.int = ..., + frame_width: builtins.int = ..., + frame_height: builtins.int = ..., + frames_per_second: builtins.float = ..., + frames_sent: builtins.int = ..., + huge_frames_sent: builtins.int = ..., + frames_encoded: builtins.int = ..., + key_frames_encoded: builtins.int = ..., + qp_sum: builtins.int = ..., + total_encode_time: builtins.float = ..., + total_packet_send_delay: builtins.float = ..., + quality_limitation_reason: global___QualityLimitationReason.ValueType = ..., + quality_limitation_durations: collections.abc.Mapping[builtins.str, builtins.float] | None = ..., + quality_limitation_resolution_changes: builtins.int = ..., + nack_count: builtins.int = ..., + fir_count: builtins.int = ..., + pli_count: builtins.int = ..., + encoder_implementation: builtins.str = ..., + power_efficient_encoder: builtins.bool = ..., + active: builtins.bool = ..., + scalibility_mode: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["active", b"active", "encoder_implementation", b"encoder_implementation", "fir_count", b"fir_count", "frame_height", b"frame_height", "frame_width", b"frame_width", "frames_encoded", b"frames_encoded", "frames_per_second", b"frames_per_second", "frames_sent", b"frames_sent", "header_bytes_sent", b"header_bytes_sent", "huge_frames_sent", b"huge_frames_sent", "key_frames_encoded", b"key_frames_encoded", "media_source_id", b"media_source_id", "mid", b"mid", "nack_count", b"nack_count", "pli_count", b"pli_count", "power_efficient_encoder", b"power_efficient_encoder", "qp_sum", b"qp_sum", "quality_limitation_durations", b"quality_limitation_durations", "quality_limitation_reason", b"quality_limitation_reason", "quality_limitation_resolution_changes", b"quality_limitation_resolution_changes", "remote_id", b"remote_id", "retransmitted_bytes_sent", b"retransmitted_bytes_sent", "retransmitted_packets_sent", b"retransmitted_packets_sent", "rid", b"rid", "rtx_ssrc", b"rtx_ssrc", "scalibility_mode", b"scalibility_mode", "target_bitrate", b"target_bitrate", "total_encode_time", b"total_encode_time", "total_encoded_bytes_target", b"total_encoded_bytes_target", "total_packet_send_delay", b"total_packet_send_delay"]) -> None: ... + +global___OutboundRtpStreamStats = OutboundRtpStreamStats + +@typing_extensions.final +class RemoteInboundRtpStreamStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LOCAL_ID_FIELD_NUMBER: builtins.int + ROUND_TRIP_TIME_FIELD_NUMBER: builtins.int + TOTAL_ROUND_TRIP_TIME_FIELD_NUMBER: builtins.int + FRACTION_LOST_FIELD_NUMBER: builtins.int + ROUND_TRIP_TIME_MEASUREMENTS_FIELD_NUMBER: builtins.int + local_id: builtins.str + round_trip_time: builtins.float + total_round_trip_time: builtins.float + fraction_lost: builtins.float + round_trip_time_measurements: builtins.int + def __init__( + self, + *, + local_id: builtins.str = ..., + round_trip_time: builtins.float = ..., + total_round_trip_time: builtins.float = ..., + fraction_lost: builtins.float = ..., + round_trip_time_measurements: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["fraction_lost", b"fraction_lost", "local_id", b"local_id", "round_trip_time", b"round_trip_time", "round_trip_time_measurements", b"round_trip_time_measurements", "total_round_trip_time", b"total_round_trip_time"]) -> None: ... + +global___RemoteInboundRtpStreamStats = RemoteInboundRtpStreamStats + +@typing_extensions.final +class RemoteOutboundRtpStreamStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LOCAL_ID_FIELD_NUMBER: builtins.int + REMOTE_TIMESTAMP_FIELD_NUMBER: builtins.int + REPORTS_SENT_FIELD_NUMBER: builtins.int + ROUND_TRIP_TIME_FIELD_NUMBER: builtins.int + TOTAL_ROUND_TRIP_TIME_FIELD_NUMBER: builtins.int + ROUND_TRIP_TIME_MEASUREMENTS_FIELD_NUMBER: builtins.int + local_id: builtins.str + remote_timestamp: builtins.float + reports_sent: builtins.int + round_trip_time: builtins.float + total_round_trip_time: builtins.float + round_trip_time_measurements: builtins.int + def __init__( + self, + *, + local_id: builtins.str = ..., + remote_timestamp: builtins.float = ..., + reports_sent: builtins.int = ..., + round_trip_time: builtins.float = ..., + total_round_trip_time: builtins.float = ..., + round_trip_time_measurements: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["local_id", b"local_id", "remote_timestamp", b"remote_timestamp", "reports_sent", b"reports_sent", "round_trip_time", b"round_trip_time", "round_trip_time_measurements", b"round_trip_time_measurements", "total_round_trip_time", b"total_round_trip_time"]) -> None: ... + +global___RemoteOutboundRtpStreamStats = RemoteOutboundRtpStreamStats + +@typing_extensions.final +class MediaSourceStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TRACK_IDENTIFIER_FIELD_NUMBER: builtins.int + KIND_FIELD_NUMBER: builtins.int + track_identifier: builtins.str + kind: builtins.str + def __init__( + self, + *, + track_identifier: builtins.str = ..., + kind: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["kind", b"kind", "track_identifier", b"track_identifier"]) -> None: ... + +global___MediaSourceStats = MediaSourceStats + +@typing_extensions.final +class AudioSourceStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + AUDIO_LEVEL_FIELD_NUMBER: builtins.int + TOTAL_AUDIO_ENERGY_FIELD_NUMBER: builtins.int + TOTAL_SAMPLES_DURATION_FIELD_NUMBER: builtins.int + ECHO_RETURN_LOSS_FIELD_NUMBER: builtins.int + ECHO_RETURN_LOSS_ENHANCEMENT_FIELD_NUMBER: builtins.int + DROPPED_SAMPLES_DURATION_FIELD_NUMBER: builtins.int + DROPPED_SAMPLES_EVENTS_FIELD_NUMBER: builtins.int + TOTAL_CAPTURE_DELAY_FIELD_NUMBER: builtins.int + TOTAL_SAMPLES_CAPTURED_FIELD_NUMBER: builtins.int + audio_level: builtins.float + total_audio_energy: builtins.float + total_samples_duration: builtins.float + echo_return_loss: builtins.float + echo_return_loss_enhancement: builtins.float + dropped_samples_duration: builtins.float + dropped_samples_events: builtins.int + total_capture_delay: builtins.float + total_samples_captured: builtins.int + def __init__( + self, + *, + audio_level: builtins.float = ..., + total_audio_energy: builtins.float = ..., + total_samples_duration: builtins.float = ..., + echo_return_loss: builtins.float = ..., + echo_return_loss_enhancement: builtins.float = ..., + dropped_samples_duration: builtins.float = ..., + dropped_samples_events: builtins.int = ..., + total_capture_delay: builtins.float = ..., + total_samples_captured: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["audio_level", b"audio_level", "dropped_samples_duration", b"dropped_samples_duration", "dropped_samples_events", b"dropped_samples_events", "echo_return_loss", b"echo_return_loss", "echo_return_loss_enhancement", b"echo_return_loss_enhancement", "total_audio_energy", b"total_audio_energy", "total_capture_delay", b"total_capture_delay", "total_samples_captured", b"total_samples_captured", "total_samples_duration", b"total_samples_duration"]) -> None: ... + +global___AudioSourceStats = AudioSourceStats + +@typing_extensions.final +class VideoSourceStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + WIDTH_FIELD_NUMBER: builtins.int + HEIGHT_FIELD_NUMBER: builtins.int + FRAMES_FIELD_NUMBER: builtins.int + FRAMES_PER_SECOND_FIELD_NUMBER: builtins.int + width: builtins.int + height: builtins.int + frames: builtins.int + frames_per_second: builtins.float + def __init__( + self, + *, + width: builtins.int = ..., + height: builtins.int = ..., + frames: builtins.int = ..., + frames_per_second: builtins.float = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["frames", b"frames", "frames_per_second", b"frames_per_second", "height", b"height", "width", b"width"]) -> None: ... + +global___VideoSourceStats = VideoSourceStats + +@typing_extensions.final +class AudioPlayoutStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KIND_FIELD_NUMBER: builtins.int + SYNTHESIZED_SAMPLES_DURATION_FIELD_NUMBER: builtins.int + SYNTHESIZED_SAMPLES_EVENTS_FIELD_NUMBER: builtins.int + TOTAL_SAMPLES_DURATION_FIELD_NUMBER: builtins.int + TOTAL_PLAYOUT_DELAY_FIELD_NUMBER: builtins.int + TOTAL_SAMPLES_COUNT_FIELD_NUMBER: builtins.int + kind: builtins.str + synthesized_samples_duration: builtins.float + synthesized_samples_events: builtins.int + total_samples_duration: builtins.float + total_playout_delay: builtins.float + total_samples_count: builtins.int + def __init__( + self, + *, + kind: builtins.str = ..., + synthesized_samples_duration: builtins.float = ..., + synthesized_samples_events: builtins.int = ..., + total_samples_duration: builtins.float = ..., + total_playout_delay: builtins.float = ..., + total_samples_count: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["kind", b"kind", "synthesized_samples_duration", b"synthesized_samples_duration", "synthesized_samples_events", b"synthesized_samples_events", "total_playout_delay", b"total_playout_delay", "total_samples_count", b"total_samples_count", "total_samples_duration", b"total_samples_duration"]) -> None: ... + +global___AudioPlayoutStats = AudioPlayoutStats + +@typing_extensions.final +class PeerConnectionStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DATA_CHANNELS_OPENED_FIELD_NUMBER: builtins.int + DATA_CHANNELS_CLOSED_FIELD_NUMBER: builtins.int + data_channels_opened: builtins.int + data_channels_closed: builtins.int + def __init__( + self, + *, + data_channels_opened: builtins.int = ..., + data_channels_closed: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["data_channels_closed", b"data_channels_closed", "data_channels_opened", b"data_channels_opened"]) -> None: ... + +global___PeerConnectionStats = PeerConnectionStats + +@typing_extensions.final +class DataChannelStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LABEL_FIELD_NUMBER: builtins.int + PROTOCOL_FIELD_NUMBER: builtins.int + DATA_CHANNEL_IDENTIFIER_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + MESSAGES_SENT_FIELD_NUMBER: builtins.int + BYTES_SENT_FIELD_NUMBER: builtins.int + MESSAGES_RECEIVED_FIELD_NUMBER: builtins.int + BYTES_RECEIVED_FIELD_NUMBER: builtins.int + label: builtins.str + protocol: builtins.str + data_channel_identifier: builtins.int + state: global___DataChannelState.ValueType + messages_sent: builtins.int + bytes_sent: builtins.int + messages_received: builtins.int + bytes_received: builtins.int + def __init__( + self, + *, + label: builtins.str = ..., + protocol: builtins.str = ..., + data_channel_identifier: builtins.int = ..., + state: global___DataChannelState.ValueType | None = ..., + messages_sent: builtins.int = ..., + bytes_sent: builtins.int = ..., + messages_received: builtins.int = ..., + bytes_received: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_state", b"_state", "state", b"state"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_state", b"_state", "bytes_received", b"bytes_received", "bytes_sent", b"bytes_sent", "data_channel_identifier", b"data_channel_identifier", "label", b"label", "messages_received", b"messages_received", "messages_sent", b"messages_sent", "protocol", b"protocol", "state", b"state"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["_state", b"_state"]) -> typing_extensions.Literal["state"] | None: ... + +global___DataChannelStats = DataChannelStats + +@typing_extensions.final +class TransportStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PACKETS_SENT_FIELD_NUMBER: builtins.int + PACKETS_RECEIVED_FIELD_NUMBER: builtins.int + BYTES_SENT_FIELD_NUMBER: builtins.int + BYTES_RECEIVED_FIELD_NUMBER: builtins.int + ICE_ROLE_FIELD_NUMBER: builtins.int + ICE_LOCAL_USERNAME_FRAGMENT_FIELD_NUMBER: builtins.int + DTLS_STATE_FIELD_NUMBER: builtins.int + ICE_STATE_FIELD_NUMBER: builtins.int + SELECTED_CANDIDATE_PAIR_ID_FIELD_NUMBER: builtins.int + LOCAL_CERTIFICATE_ID_FIELD_NUMBER: builtins.int + REMOTE_CERTIFICATE_ID_FIELD_NUMBER: builtins.int + TLS_VERSION_FIELD_NUMBER: builtins.int + DTLS_CIPHER_FIELD_NUMBER: builtins.int + DTLS_ROLE_FIELD_NUMBER: builtins.int + SRTP_CIPHER_FIELD_NUMBER: builtins.int + SELECTED_CANDIDATE_PAIR_CHANGES_FIELD_NUMBER: builtins.int + packets_sent: builtins.int + packets_received: builtins.int + bytes_sent: builtins.int + bytes_received: builtins.int + ice_role: global___IceRole.ValueType + ice_local_username_fragment: builtins.str + dtls_state: global___DtlsTransportState.ValueType + ice_state: global___IceTransportState.ValueType + selected_candidate_pair_id: builtins.str + local_certificate_id: builtins.str + remote_certificate_id: builtins.str + tls_version: builtins.str + dtls_cipher: builtins.str + dtls_role: global___DtlsRole.ValueType + srtp_cipher: builtins.str + selected_candidate_pair_changes: builtins.int + def __init__( + self, + *, + packets_sent: builtins.int = ..., + packets_received: builtins.int = ..., + bytes_sent: builtins.int = ..., + bytes_received: builtins.int = ..., + ice_role: global___IceRole.ValueType = ..., + ice_local_username_fragment: builtins.str = ..., + dtls_state: global___DtlsTransportState.ValueType | None = ..., + ice_state: global___IceTransportState.ValueType | None = ..., + selected_candidate_pair_id: builtins.str = ..., + local_certificate_id: builtins.str = ..., + remote_certificate_id: builtins.str = ..., + tls_version: builtins.str = ..., + dtls_cipher: builtins.str = ..., + dtls_role: global___DtlsRole.ValueType = ..., + srtp_cipher: builtins.str = ..., + selected_candidate_pair_changes: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_dtls_state", b"_dtls_state", "_ice_state", b"_ice_state", "dtls_state", b"dtls_state", "ice_state", b"ice_state"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_dtls_state", b"_dtls_state", "_ice_state", b"_ice_state", "bytes_received", b"bytes_received", "bytes_sent", b"bytes_sent", "dtls_cipher", b"dtls_cipher", "dtls_role", b"dtls_role", "dtls_state", b"dtls_state", "ice_local_username_fragment", b"ice_local_username_fragment", "ice_role", b"ice_role", "ice_state", b"ice_state", "local_certificate_id", b"local_certificate_id", "packets_received", b"packets_received", "packets_sent", b"packets_sent", "remote_certificate_id", b"remote_certificate_id", "selected_candidate_pair_changes", b"selected_candidate_pair_changes", "selected_candidate_pair_id", b"selected_candidate_pair_id", "srtp_cipher", b"srtp_cipher", "tls_version", b"tls_version"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_dtls_state", b"_dtls_state"]) -> typing_extensions.Literal["dtls_state"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_ice_state", b"_ice_state"]) -> typing_extensions.Literal["ice_state"] | None: ... + +global___TransportStats = TransportStats + +@typing_extensions.final +class CandidatePairStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TRANSPORT_ID_FIELD_NUMBER: builtins.int + LOCAL_CANDIDATE_ID_FIELD_NUMBER: builtins.int + REMOTE_CANDIDATE_ID_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + NOMINATED_FIELD_NUMBER: builtins.int + PACKETS_SENT_FIELD_NUMBER: builtins.int + PACKETS_RECEIVED_FIELD_NUMBER: builtins.int + BYTES_SENT_FIELD_NUMBER: builtins.int + BYTES_RECEIVED_FIELD_NUMBER: builtins.int + LAST_PACKET_SENT_TIMESTAMP_FIELD_NUMBER: builtins.int + LAST_PACKET_RECEIVED_TIMESTAMP_FIELD_NUMBER: builtins.int + TOTAL_ROUND_TRIP_TIME_FIELD_NUMBER: builtins.int + CURRENT_ROUND_TRIP_TIME_FIELD_NUMBER: builtins.int + AVAILABLE_OUTGOING_BITRATE_FIELD_NUMBER: builtins.int + AVAILABLE_INCOMING_BITRATE_FIELD_NUMBER: builtins.int + REQUESTS_RECEIVED_FIELD_NUMBER: builtins.int + REQUESTS_SENT_FIELD_NUMBER: builtins.int + RESPONSES_RECEIVED_FIELD_NUMBER: builtins.int + RESPONSES_SENT_FIELD_NUMBER: builtins.int + CONSENT_REQUESTS_SENT_FIELD_NUMBER: builtins.int + PACKETS_DISCARDED_ON_SEND_FIELD_NUMBER: builtins.int + BYTES_DISCARDED_ON_SEND_FIELD_NUMBER: builtins.int + transport_id: builtins.str + local_candidate_id: builtins.str + remote_candidate_id: builtins.str + state: global___IceCandidatePairState.ValueType + nominated: builtins.bool + packets_sent: builtins.int + packets_received: builtins.int + bytes_sent: builtins.int + bytes_received: builtins.int + last_packet_sent_timestamp: builtins.float + last_packet_received_timestamp: builtins.float + total_round_trip_time: builtins.float + current_round_trip_time: builtins.float + available_outgoing_bitrate: builtins.float + available_incoming_bitrate: builtins.float + requests_received: builtins.int + requests_sent: builtins.int + responses_received: builtins.int + responses_sent: builtins.int + consent_requests_sent: builtins.int + packets_discarded_on_send: builtins.int + bytes_discarded_on_send: builtins.int + def __init__( + self, + *, + transport_id: builtins.str = ..., + local_candidate_id: builtins.str = ..., + remote_candidate_id: builtins.str = ..., + state: global___IceCandidatePairState.ValueType | None = ..., + nominated: builtins.bool = ..., + packets_sent: builtins.int = ..., + packets_received: builtins.int = ..., + bytes_sent: builtins.int = ..., + bytes_received: builtins.int = ..., + last_packet_sent_timestamp: builtins.float = ..., + last_packet_received_timestamp: builtins.float = ..., + total_round_trip_time: builtins.float = ..., + current_round_trip_time: builtins.float = ..., + available_outgoing_bitrate: builtins.float = ..., + available_incoming_bitrate: builtins.float = ..., + requests_received: builtins.int = ..., + requests_sent: builtins.int = ..., + responses_received: builtins.int = ..., + responses_sent: builtins.int = ..., + consent_requests_sent: builtins.int = ..., + packets_discarded_on_send: builtins.int = ..., + bytes_discarded_on_send: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_state", b"_state", "state", b"state"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_state", b"_state", "available_incoming_bitrate", b"available_incoming_bitrate", "available_outgoing_bitrate", b"available_outgoing_bitrate", "bytes_discarded_on_send", b"bytes_discarded_on_send", "bytes_received", b"bytes_received", "bytes_sent", b"bytes_sent", "consent_requests_sent", b"consent_requests_sent", "current_round_trip_time", b"current_round_trip_time", "last_packet_received_timestamp", b"last_packet_received_timestamp", "last_packet_sent_timestamp", b"last_packet_sent_timestamp", "local_candidate_id", b"local_candidate_id", "nominated", b"nominated", "packets_discarded_on_send", b"packets_discarded_on_send", "packets_received", b"packets_received", "packets_sent", b"packets_sent", "remote_candidate_id", b"remote_candidate_id", "requests_received", b"requests_received", "requests_sent", b"requests_sent", "responses_received", b"responses_received", "responses_sent", b"responses_sent", "state", b"state", "total_round_trip_time", b"total_round_trip_time", "transport_id", b"transport_id"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["_state", b"_state"]) -> typing_extensions.Literal["state"] | None: ... + +global___CandidatePairStats = CandidatePairStats + +@typing_extensions.final +class IceCandidateStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TRANSPORT_ID_FIELD_NUMBER: builtins.int + ADDRESS_FIELD_NUMBER: builtins.int + PORT_FIELD_NUMBER: builtins.int + PROTOCOL_FIELD_NUMBER: builtins.int + CANDIDATE_TYPE_FIELD_NUMBER: builtins.int + PRIORITY_FIELD_NUMBER: builtins.int + URL_FIELD_NUMBER: builtins.int + RELAY_PROTOCOL_FIELD_NUMBER: builtins.int + FOUNDATION_FIELD_NUMBER: builtins.int + RELATED_ADDRESS_FIELD_NUMBER: builtins.int + RELATED_PORT_FIELD_NUMBER: builtins.int + USERNAME_FRAGMENT_FIELD_NUMBER: builtins.int + TCP_TYPE_FIELD_NUMBER: builtins.int + transport_id: builtins.str + address: builtins.str + port: builtins.int + protocol: builtins.str + candidate_type: global___IceCandidateType.ValueType + priority: builtins.int + url: builtins.str + relay_protocol: global___IceServerTransportProtocol.ValueType + foundation: builtins.str + related_address: builtins.str + related_port: builtins.int + username_fragment: builtins.str + tcp_type: global___IceTcpCandidateType.ValueType + def __init__( + self, + *, + transport_id: builtins.str = ..., + address: builtins.str = ..., + port: builtins.int = ..., + protocol: builtins.str = ..., + candidate_type: global___IceCandidateType.ValueType | None = ..., + priority: builtins.int = ..., + url: builtins.str = ..., + relay_protocol: global___IceServerTransportProtocol.ValueType | None = ..., + foundation: builtins.str = ..., + related_address: builtins.str = ..., + related_port: builtins.int = ..., + username_fragment: builtins.str = ..., + tcp_type: global___IceTcpCandidateType.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_candidate_type", b"_candidate_type", "_relay_protocol", b"_relay_protocol", "_tcp_type", b"_tcp_type", "candidate_type", b"candidate_type", "relay_protocol", b"relay_protocol", "tcp_type", b"tcp_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_candidate_type", b"_candidate_type", "_relay_protocol", b"_relay_protocol", "_tcp_type", b"_tcp_type", "address", b"address", "candidate_type", b"candidate_type", "foundation", b"foundation", "port", b"port", "priority", b"priority", "protocol", b"protocol", "related_address", b"related_address", "related_port", b"related_port", "relay_protocol", b"relay_protocol", "tcp_type", b"tcp_type", "transport_id", b"transport_id", "url", b"url", "username_fragment", b"username_fragment"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_candidate_type", b"_candidate_type"]) -> typing_extensions.Literal["candidate_type"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_relay_protocol", b"_relay_protocol"]) -> typing_extensions.Literal["relay_protocol"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_tcp_type", b"_tcp_type"]) -> typing_extensions.Literal["tcp_type"] | None: ... + +global___IceCandidateStats = IceCandidateStats + +@typing_extensions.final +class CertificateStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FINGERPRINT_FIELD_NUMBER: builtins.int + FINGERPRINT_ALGORITHM_FIELD_NUMBER: builtins.int + BASE64_CERTIFICATE_FIELD_NUMBER: builtins.int + ISSUER_CERTIFICATE_ID_FIELD_NUMBER: builtins.int + fingerprint: builtins.str + fingerprint_algorithm: builtins.str + base64_certificate: builtins.str + issuer_certificate_id: builtins.str + def __init__( + self, + *, + fingerprint: builtins.str = ..., + fingerprint_algorithm: builtins.str = ..., + base64_certificate: builtins.str = ..., + issuer_certificate_id: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["base64_certificate", b"base64_certificate", "fingerprint", b"fingerprint", "fingerprint_algorithm", b"fingerprint_algorithm", "issuer_certificate_id", b"issuer_certificate_id"]) -> None: ... + +global___CertificateStats = CertificateStats diff --git a/livekit-rtc/livekit/rtc/_proto/track_pb2.py b/livekit-rtc/livekit/rtc/_proto/track_pb2.py index 05e4db8e..39a25ebf 100644 --- a/livekit-rtc/livekit/rtc/_proto/track_pb2.py +++ b/livekit-rtc/livekit/rtc/_proto/track_pb2.py @@ -13,9 +13,10 @@ from . import e2ee_pb2 as e2ee__pb2 from . import handle_pb2 as handle__pb2 +from . import stats_pb2 as stats__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0btrack.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0chandle.proto\">\n\x17\x43reateVideoTrackRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rsource_handle\x18\x02 \x01(\x04\"D\n\x18\x43reateVideoTrackResponse\x12(\n\x05track\x18\x01 \x01(\x0b\x32\x19.livekit.proto.OwnedTrack\">\n\x17\x43reateAudioTrackRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rsource_handle\x18\x02 \x01(\x04\"D\n\x18\x43reateAudioTrackResponse\x12(\n\x05track\x18\x01 \x01(\x0b\x32\x19.livekit.proto.OwnedTrack\"\x0c\n\nTrackEvent\"\xa3\x02\n\x14TrackPublicationInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12&\n\x04kind\x18\x03 \x01(\x0e\x32\x18.livekit.proto.TrackKind\x12*\n\x06source\x18\x04 \x01(\x0e\x32\x1a.livekit.proto.TrackSource\x12\x13\n\x0bsimulcasted\x18\x05 \x01(\x08\x12\r\n\x05width\x18\x06 \x01(\r\x12\x0e\n\x06height\x18\x07 \x01(\r\x12\x11\n\tmime_type\x18\x08 \x01(\t\x12\r\n\x05muted\x18\t \x01(\x08\x12\x0e\n\x06remote\x18\n \x01(\x08\x12\x36\n\x0f\x65ncryption_type\x18\x0b \x01(\x0e\x32\x1d.livekit.proto.EncryptionType\"y\n\x15OwnedTrackPublication\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12\x31\n\x04info\x18\x02 \x01(\x0b\x32#.livekit.proto.TrackPublicationInfo\"\x9f\x01\n\tTrackInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12&\n\x04kind\x18\x03 \x01(\x0e\x32\x18.livekit.proto.TrackKind\x12\x30\n\x0cstream_state\x18\x04 \x01(\x0e\x32\x1a.livekit.proto.StreamState\x12\r\n\x05muted\x18\x05 \x01(\x08\x12\x0e\n\x06remote\x18\x06 \x01(\x08\"c\n\nOwnedTrack\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12&\n\x04info\x18\x02 \x01(\x0b\x32\x18.livekit.proto.TrackInfo*=\n\tTrackKind\x12\x10\n\x0cKIND_UNKNOWN\x10\x00\x12\x0e\n\nKIND_AUDIO\x10\x01\x12\x0e\n\nKIND_VIDEO\x10\x02*\x81\x01\n\x0bTrackSource\x12\x12\n\x0eSOURCE_UNKNOWN\x10\x00\x12\x11\n\rSOURCE_CAMERA\x10\x01\x12\x15\n\x11SOURCE_MICROPHONE\x10\x02\x12\x16\n\x12SOURCE_SCREENSHARE\x10\x03\x12\x1c\n\x18SOURCE_SCREENSHARE_AUDIO\x10\x04*D\n\x0bStreamState\x12\x11\n\rSTATE_UNKNOWN\x10\x00\x12\x10\n\x0cSTATE_ACTIVE\x10\x01\x12\x10\n\x0cSTATE_PAUSED\x10\x02\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0btrack.proto\x12\rlivekit.proto\x1a\ne2ee.proto\x1a\x0chandle.proto\x1a\x0bstats.proto\">\n\x17\x43reateVideoTrackRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rsource_handle\x18\x02 \x01(\x04\"D\n\x18\x43reateVideoTrackResponse\x12(\n\x05track\x18\x01 \x01(\x0b\x32\x19.livekit.proto.OwnedTrack\">\n\x17\x43reateAudioTrackRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rsource_handle\x18\x02 \x01(\x04\"D\n\x18\x43reateAudioTrackResponse\x12(\n\x05track\x18\x01 \x01(\x0b\x32\x19.livekit.proto.OwnedTrack\"\'\n\x0fGetStatsRequest\x12\x14\n\x0ctrack_handle\x18\x01 \x01(\x04\"$\n\x10GetStatsResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\"j\n\x10GetStatsCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x01(\x04\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x12&\n\x05stats\x18\x03 \x03(\x0b\x32\x17.livekit.proto.RtcStatsB\x08\n\x06_error\"\x0c\n\nTrackEvent\"\xa3\x02\n\x14TrackPublicationInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12&\n\x04kind\x18\x03 \x01(\x0e\x32\x18.livekit.proto.TrackKind\x12*\n\x06source\x18\x04 \x01(\x0e\x32\x1a.livekit.proto.TrackSource\x12\x13\n\x0bsimulcasted\x18\x05 \x01(\x08\x12\r\n\x05width\x18\x06 \x01(\r\x12\x0e\n\x06height\x18\x07 \x01(\r\x12\x11\n\tmime_type\x18\x08 \x01(\t\x12\r\n\x05muted\x18\t \x01(\x08\x12\x0e\n\x06remote\x18\n \x01(\x08\x12\x36\n\x0f\x65ncryption_type\x18\x0b \x01(\x0e\x32\x1d.livekit.proto.EncryptionType\"y\n\x15OwnedTrackPublication\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12\x31\n\x04info\x18\x02 \x01(\x0b\x32#.livekit.proto.TrackPublicationInfo\"\x9f\x01\n\tTrackInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12&\n\x04kind\x18\x03 \x01(\x0e\x32\x18.livekit.proto.TrackKind\x12\x30\n\x0cstream_state\x18\x04 \x01(\x0e\x32\x1a.livekit.proto.StreamState\x12\r\n\x05muted\x18\x05 \x01(\x08\x12\x0e\n\x06remote\x18\x06 \x01(\x08\"c\n\nOwnedTrack\x12-\n\x06handle\x18\x01 \x01(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12&\n\x04info\x18\x02 \x01(\x0b\x32\x18.livekit.proto.TrackInfo*=\n\tTrackKind\x12\x10\n\x0cKIND_UNKNOWN\x10\x00\x12\x0e\n\nKIND_AUDIO\x10\x01\x12\x0e\n\nKIND_VIDEO\x10\x02*\x81\x01\n\x0bTrackSource\x12\x12\n\x0eSOURCE_UNKNOWN\x10\x00\x12\x11\n\rSOURCE_CAMERA\x10\x01\x12\x15\n\x11SOURCE_MICROPHONE\x10\x02\x12\x16\n\x12SOURCE_SCREENSHARE\x10\x03\x12\x1c\n\x18SOURCE_SCREENSHARE_AUDIO\x10\x04*D\n\x0bStreamState\x12\x11\n\rSTATE_UNKNOWN\x10\x00\x12\x10\n\x0cSTATE_ACTIVE\x10\x01\x12\x10\n\x0cSTATE_PAUSED\x10\x02\x42\x10\xaa\x02\rLiveKit.Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -24,28 +25,34 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\252\002\rLiveKit.Proto' - _globals['_TRACKKIND']._serialized_start=1018 - _globals['_TRACKKIND']._serialized_end=1079 - _globals['_TRACKSOURCE']._serialized_start=1082 - _globals['_TRACKSOURCE']._serialized_end=1211 - _globals['_STREAMSTATE']._serialized_start=1213 - _globals['_STREAMSTATE']._serialized_end=1281 - _globals['_CREATEVIDEOTRACKREQUEST']._serialized_start=56 - _globals['_CREATEVIDEOTRACKREQUEST']._serialized_end=118 - _globals['_CREATEVIDEOTRACKRESPONSE']._serialized_start=120 - _globals['_CREATEVIDEOTRACKRESPONSE']._serialized_end=188 - _globals['_CREATEAUDIOTRACKREQUEST']._serialized_start=190 - _globals['_CREATEAUDIOTRACKREQUEST']._serialized_end=252 - _globals['_CREATEAUDIOTRACKRESPONSE']._serialized_start=254 - _globals['_CREATEAUDIOTRACKRESPONSE']._serialized_end=322 - _globals['_TRACKEVENT']._serialized_start=324 - _globals['_TRACKEVENT']._serialized_end=336 - _globals['_TRACKPUBLICATIONINFO']._serialized_start=339 - _globals['_TRACKPUBLICATIONINFO']._serialized_end=630 - _globals['_OWNEDTRACKPUBLICATION']._serialized_start=632 - _globals['_OWNEDTRACKPUBLICATION']._serialized_end=753 - _globals['_TRACKINFO']._serialized_start=756 - _globals['_TRACKINFO']._serialized_end=915 - _globals['_OWNEDTRACK']._serialized_start=917 - _globals['_OWNEDTRACK']._serialized_end=1016 + _globals['_TRACKKIND']._serialized_start=1218 + _globals['_TRACKKIND']._serialized_end=1279 + _globals['_TRACKSOURCE']._serialized_start=1282 + _globals['_TRACKSOURCE']._serialized_end=1411 + _globals['_STREAMSTATE']._serialized_start=1413 + _globals['_STREAMSTATE']._serialized_end=1481 + _globals['_CREATEVIDEOTRACKREQUEST']._serialized_start=69 + _globals['_CREATEVIDEOTRACKREQUEST']._serialized_end=131 + _globals['_CREATEVIDEOTRACKRESPONSE']._serialized_start=133 + _globals['_CREATEVIDEOTRACKRESPONSE']._serialized_end=201 + _globals['_CREATEAUDIOTRACKREQUEST']._serialized_start=203 + _globals['_CREATEAUDIOTRACKREQUEST']._serialized_end=265 + _globals['_CREATEAUDIOTRACKRESPONSE']._serialized_start=267 + _globals['_CREATEAUDIOTRACKRESPONSE']._serialized_end=335 + _globals['_GETSTATSREQUEST']._serialized_start=337 + _globals['_GETSTATSREQUEST']._serialized_end=376 + _globals['_GETSTATSRESPONSE']._serialized_start=378 + _globals['_GETSTATSRESPONSE']._serialized_end=414 + _globals['_GETSTATSCALLBACK']._serialized_start=416 + _globals['_GETSTATSCALLBACK']._serialized_end=522 + _globals['_TRACKEVENT']._serialized_start=524 + _globals['_TRACKEVENT']._serialized_end=536 + _globals['_TRACKPUBLICATIONINFO']._serialized_start=539 + _globals['_TRACKPUBLICATIONINFO']._serialized_end=830 + _globals['_OWNEDTRACKPUBLICATION']._serialized_start=832 + _globals['_OWNEDTRACKPUBLICATION']._serialized_end=953 + _globals['_TRACKINFO']._serialized_start=956 + _globals['_TRACKINFO']._serialized_end=1115 + _globals['_OWNEDTRACK']._serialized_start=1117 + _globals['_OWNEDTRACK']._serialized_end=1216 # @@protoc_insertion_point(module_scope) diff --git a/livekit-rtc/livekit/rtc/_proto/track_pb2.pyi b/livekit-rtc/livekit/rtc/_proto/track_pb2.pyi index 482062d5..2a687298 100644 --- a/livekit-rtc/livekit/rtc/_proto/track_pb2.pyi +++ b/livekit-rtc/livekit/rtc/_proto/track_pb2.pyi @@ -16,11 +16,14 @@ See the License for the specific language governing permissions and limitations under the License. """ import builtins +import collections.abc from . import e2ee_pb2 import google.protobuf.descriptor +import google.protobuf.internal.containers import google.protobuf.internal.enum_type_wrapper import google.protobuf.message from . import handle_pb2 +from . import stats_pb2 import sys import typing @@ -160,6 +163,60 @@ class CreateAudioTrackResponse(google.protobuf.message.Message): global___CreateAudioTrackResponse = CreateAudioTrackResponse +@typing_extensions.final +class GetStatsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TRACK_HANDLE_FIELD_NUMBER: builtins.int + track_handle: builtins.int + def __init__( + self, + *, + track_handle: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["track_handle", b"track_handle"]) -> None: ... + +global___GetStatsRequest = GetStatsRequest + +@typing_extensions.final +class GetStatsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_ID_FIELD_NUMBER: builtins.int + async_id: builtins.int + def __init__( + self, + *, + async_id: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["async_id", b"async_id"]) -> None: ... + +global___GetStatsResponse = GetStatsResponse + +@typing_extensions.final +class GetStatsCallback(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_ID_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + STATS_FIELD_NUMBER: builtins.int + async_id: builtins.int + error: builtins.str + @property + def stats(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[stats_pb2.RtcStats]: ... + def __init__( + self, + *, + async_id: builtins.int = ..., + error: builtins.str | None = ..., + stats: collections.abc.Iterable[stats_pb2.RtcStats] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_error", b"_error", "error", b"error"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_error", b"_error", "async_id", b"async_id", "error", b"error", "stats", b"stats"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["_error", b"_error"]) -> typing_extensions.Literal["error"] | None: ... + +global___GetStatsCallback = GetStatsCallback + @typing_extensions.final class TrackEvent(google.protobuf.message.Message): """ diff --git a/livekit-rtc/livekit/rtc/track.py b/livekit-rtc/livekit/rtc/track.py index 788de663..d08e3f2b 100644 --- a/livekit-rtc/livekit/rtc/track.py +++ b/livekit-rtc/livekit/rtc/track.py @@ -12,10 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import TYPE_CHECKING, Union +from typing import TYPE_CHECKING, List, Union from ._ffi_client import FfiHandle, ffi_client from ._proto import ffi_pb2 as proto_ffi from ._proto import track_pb2 as proto_track +from ._proto import stats_pb2 as proto_stats if TYPE_CHECKING: from .audio_source import AudioSource @@ -47,8 +48,20 @@ def stream_state(self) -> proto_track.StreamState.ValueType: def muted(self) -> bool: return self._info.muted - def update_info(self, info: proto_track.TrackInfo): - self._info = info + async def get_stats(self) -> List[proto_stats.RtcStats]: + req = proto_ffi.FfiRequest() + req.get_stats.track_handle = self._ffi_handle.handle + + queue = ffi_client.queue.subscribe() + try: + resp = ffi_client.request(req) + cb = await queue.wait_for( + lambda e: e.get_stats.async_id == resp.get_stats.async_id + ) + finally: + ffi_client.queue.unsubscribe(queue) + + return list(cb.get_stats.stats) class LocalAudioTrack(Track): diff --git a/livekit-rtc/rust-sdks b/livekit-rtc/rust-sdks index fdb83a72..cb2697b8 160000 --- a/livekit-rtc/rust-sdks +++ b/livekit-rtc/rust-sdks @@ -1 +1 @@ -Subproject commit fdb83a72adc1c9ca8b6df6591893b4c853eab227 +Subproject commit cb2697b870daaae51e0905ef69265108ce672dfe