livekit 1.2.1__py3-none-win_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. livekit/rtc/__init__.py +264 -0
  2. livekit/rtc/_ffi_client.py +321 -0
  3. livekit/rtc/_proto/__init__.py +0 -0
  4. livekit/rtc/_proto/audio_frame_pb2.py +159 -0
  5. livekit/rtc/_proto/audio_frame_pb2.pyi +1560 -0
  6. livekit/rtc/_proto/capture_pb2.py +70 -0
  7. livekit/rtc/_proto/capture_pb2.pyi +559 -0
  8. livekit/rtc/_proto/data_stream_pb2.py +171 -0
  9. livekit/rtc/_proto/data_stream_pb2.pyi +1498 -0
  10. livekit/rtc/_proto/data_track_pb2.py +120 -0
  11. livekit/rtc/_proto/data_track_pb2.pyi +1073 -0
  12. livekit/rtc/_proto/e2ee_pb2.py +81 -0
  13. livekit/rtc/_proto/e2ee_pb2.pyi +591 -0
  14. livekit/rtc/_proto/ffi_pb2.py +55 -0
  15. livekit/rtc/_proto/ffi_pb2.pyi +1246 -0
  16. livekit/rtc/_proto/handle_pb2.py +27 -0
  17. livekit/rtc/_proto/handle_pb2.pyi +51 -0
  18. livekit/rtc/_proto/participant_pb2.py +45 -0
  19. livekit/rtc/_proto/participant_pb2.pyi +313 -0
  20. livekit/rtc/_proto/room_pb2.py +311 -0
  21. livekit/rtc/_proto/room_pb2.pyi +3136 -0
  22. livekit/rtc/_proto/rpc_pb2.py +47 -0
  23. livekit/rtc/_proto/rpc_pb2.pyi +261 -0
  24. livekit/rtc/_proto/stats_pb2.py +123 -0
  25. livekit/rtc/_proto/stats_pb2.pyi +1514 -0
  26. livekit/rtc/_proto/track_pb2.py +76 -0
  27. livekit/rtc/_proto/track_pb2.pyi +544 -0
  28. livekit/rtc/_proto/track_publication_pb2.py +39 -0
  29. livekit/rtc/_proto/track_publication_pb2.pyi +145 -0
  30. livekit/rtc/_proto/video_frame_pb2.py +97 -0
  31. livekit/rtc/_proto/video_frame_pb2.pyi +838 -0
  32. livekit/rtc/_utils.py +187 -0
  33. livekit/rtc/apm.py +119 -0
  34. livekit/rtc/audio_filter.py +23 -0
  35. livekit/rtc/audio_frame.py +242 -0
  36. livekit/rtc/audio_mixer.py +247 -0
  37. livekit/rtc/audio_resampler.py +174 -0
  38. livekit/rtc/audio_source.py +191 -0
  39. livekit/rtc/audio_stream.py +354 -0
  40. livekit/rtc/data_stream.py +640 -0
  41. livekit/rtc/data_track.py +296 -0
  42. livekit/rtc/e2ee.py +320 -0
  43. livekit/rtc/encoded_video.py +127 -0
  44. livekit/rtc/event_emitter.py +215 -0
  45. livekit/rtc/frame_processor.py +37 -0
  46. livekit/rtc/jupyter.py +68 -0
  47. livekit/rtc/log.py +3 -0
  48. livekit/rtc/media_devices.py +596 -0
  49. livekit/rtc/participant.py +1171 -0
  50. livekit/rtc/platform_audio.py +426 -0
  51. livekit/rtc/py.typed +0 -0
  52. livekit/rtc/resources/LICENSE.md +4055 -0
  53. livekit/rtc/resources/__init__.py +1 -0
  54. livekit/rtc/resources/jupyter-html/index.html +101 -0
  55. livekit/rtc/resources/livekit_ffi.dll +0 -0
  56. livekit/rtc/resources/livekit_ffi.h +42 -0
  57. livekit/rtc/room.py +1304 -0
  58. livekit/rtc/rpc.py +244 -0
  59. livekit/rtc/synchronizer.py +202 -0
  60. livekit/rtc/track.py +264 -0
  61. livekit/rtc/track_publication.py +145 -0
  62. livekit/rtc/transcription.py +19 -0
  63. livekit/rtc/utils.py +138 -0
  64. livekit/rtc/version.py +1 -0
  65. livekit/rtc/video_frame.py +347 -0
  66. livekit/rtc/video_source.py +74 -0
  67. livekit/rtc/video_stream.py +191 -0
  68. livekit-1.2.1.dist-info/METADATA +80 -0
  69. livekit-1.2.1.dist-info/RECORD +71 -0
  70. livekit-1.2.1.dist-info/WHEEL +5 -0
  71. livekit-1.2.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,70 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: capture.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from . import handle_pb2 as handle__pb2
16
+ from . import room_pb2 as room__pb2
17
+ from . import video_frame_pb2 as video__frame__pb2
18
+
19
+
20
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rcapture.proto\x12\rlivekit.proto\x1a\x0chandle.proto\x1a\nroom.proto\x1a\x11video_frame.proto\"l\n\x14GstreamerRateControl\x12\x0f\n\x07\x65lement\x18\x01 \x02(\t\x12\x10\n\x08property\x18\x02 \x02(\t\x12\x31\n\x04unit\x18\x03 \x02(\x0e\x32#.livekit.proto.GstreamerBitrateUnit\"\xcd\x01\n\x1aGstreamerVideoSourceConfig\x12\x10\n\x08pipeline\x18\x01 \x02(\t\x12(\n\x05\x63odec\x18\x02 \x01(\x0e\x32\x19.livekit.proto.VideoCodec\x12\x38\n\nresolution\x18\x03 \x01(\x0b\x32$.livekit.proto.VideoSourceResolution\x12\x39\n\x0crate_control\x18\x04 \x01(\x0b\x32#.livekit.proto.GstreamerRateControl\"\x94\x01\n\x18PatternVideoSourceConfig\x12\x38\n\nresolution\x18\x01 \x02(\x0b\x32$.livekit.proto.VideoSourceResolution\x12\x15\n\rframerate_fps\x18\x02 \x02(\r\x12\'\n\x07pattern\x18\x03 \x02(\x0e\x32\x16.livekit.proto.Pattern\"i\n\x16\x43lockVideoSourceConfig\x12\x38\n\nresolution\x18\x01 \x02(\x0b\x32$.livekit.proto.VideoSourceResolution\x12\x15\n\rframerate_fps\x18\x02 \x02(\r\"\xa7\x02\n\x11\x43\x61ptureSourceInfo\x12.\n\x04kind\x18\x01 \x02(\x0e\x32 .livekit.proto.CaptureSourceKind\x12\x38\n\nresolution\x18\x02 \x02(\x0b\x32$.livekit.proto.VideoSourceResolution\x12(\n\x05\x63odec\x18\x03 \x01(\x0e\x32\x19.livekit.proto.VideoCodec\x12G\n\x1brecommended_publish_options\x18\x04 \x02(\x0b\x32\".livekit.proto.TrackPublishOptions\x12\x35\n\x0cvideo_source\x18\x05 \x02(\x0b\x32\x1f.livekit.proto.OwnedVideoSource\"s\n\x12OwnedCaptureSource\x12-\n\x06handle\x18\x01 \x02(\x0b\x32\x1d.livekit.proto.FfiOwnedHandle\x12.\n\x04info\x18\x02 \x02(\x0b\x32 .livekit.proto.CaptureSourceInfo\"\xf1\x01\n\x17NewCaptureSourceRequest\x12>\n\tgstreamer\x18\x01 \x01(\x0b\x32).livekit.proto.GstreamerVideoSourceConfigH\x00\x12:\n\x07pattern\x18\x02 \x01(\x0b\x32\'.livekit.proto.PatternVideoSourceConfigH\x00\x12\x36\n\x05\x63lock\x18\x05 \x01(\x0b\x32%.livekit.proto.ClockVideoSourceConfigH\x00\x12\x18\n\x10request_async_id\x18\x03 \x01(\x04\x42\x08\n\x06\x63onfig\",\n\x18NewCaptureSourceResponse\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\"}\n\x18NewCaptureSourceCallback\x12\x10\n\x08\x61sync_id\x18\x01 \x02(\x04\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12\x33\n\x06source\x18\x03 \x01(\x0b\x32!.livekit.proto.OwnedCaptureSourceH\x00\x42\t\n\x07message\"-\n\x13StartCaptureRequest\x12\x16\n\x0e\x63\x61pture_handle\x18\x01 \x02(\x04\"%\n\x14StartCaptureResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\",\n\x12StopCaptureRequest\x12\x16\n\x0e\x63\x61pture_handle\x18\x01 \x02(\x04\"$\n\x13StopCaptureResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"T\n\x0f\x43\x61ptureFinished\x12\x17\n\x0f\x66rames_captured\x18\x01 \x02(\x04\x12(\n\x04\x65xit\x18\x02 \x02(\x0e\x32\x1a.livekit.proto.CaptureExit\"L\n\x0c\x43\x61ptureError\x12\r\n\x05\x65rror\x18\x01 \x02(\t\x12-\n\x04kind\x18\x02 \x02(\x0e\x32\x1f.livekit.proto.CaptureErrorKind\"\x99\x01\n\x12\x43\x61ptureSourceEvent\x12\x16\n\x0e\x63\x61pture_handle\x18\x01 \x02(\x04\x12\x32\n\x08\x66inished\x18\x02 \x01(\x0b\x32\x1e.livekit.proto.CaptureFinishedH\x00\x12,\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x1b.livekit.proto.CaptureErrorH\x00\x42\t\n\x07message*W\n\x14GstreamerBitrateUnit\x12\x1e\n\x1aGSTREAMER_BITRATE_UNIT_BPS\x10\x00\x12\x1f\n\x1bGSTREAMER_BITRATE_UNIT_KBPS\x10\x01*1\n\x07Pattern\x12\x14\n\x10PATTERN_GRADIENT\x10\x00\x12\x10\n\x0cPATTERN_LOGO\x10\x01*I\n\x11\x43\x61ptureSourceKind\x12\x18\n\x14\x43\x41PTURE_SOURCE_PIXEL\x10\x00\x12\x1a\n\x16\x43\x41PTURE_SOURCE_ENCODED\x10\x01*G\n\x0b\x43\x61ptureExit\x12\x18\n\x14\x43\x41PTURE_EXIT_STOPPED\x10\x00\x12\x1e\n\x1a\x43\x41PTURE_EXIT_END_OF_STREAM\x10\x01*n\n\x10\x43\x61ptureErrorKind\x12\x1d\n\x19\x43\x41PTURE_ERROR_KIND_SOURCE\x10\x00\x12\x1a\n\x16\x43\x41PTURE_ERROR_KIND_RTC\x10\x01\x12\x1f\n\x1b\x43\x41PTURE_ERROR_KIND_PANICKED\x10\x02\x42\x10\xaa\x02\rLiveKit.Proto')
21
+
22
+ _globals = globals()
23
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
24
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'capture_pb2', _globals)
25
+ if _descriptor._USE_C_DESCRIPTORS == False:
26
+ _globals['DESCRIPTOR']._options = None
27
+ _globals['DESCRIPTOR']._serialized_options = b'\252\002\rLiveKit.Proto'
28
+ _globals['_GSTREAMERBITRATEUNIT']._serialized_start=1975
29
+ _globals['_GSTREAMERBITRATEUNIT']._serialized_end=2062
30
+ _globals['_PATTERN']._serialized_start=2064
31
+ _globals['_PATTERN']._serialized_end=2113
32
+ _globals['_CAPTURESOURCEKIND']._serialized_start=2115
33
+ _globals['_CAPTURESOURCEKIND']._serialized_end=2188
34
+ _globals['_CAPTUREEXIT']._serialized_start=2190
35
+ _globals['_CAPTUREEXIT']._serialized_end=2261
36
+ _globals['_CAPTUREERRORKIND']._serialized_start=2263
37
+ _globals['_CAPTUREERRORKIND']._serialized_end=2373
38
+ _globals['_GSTREAMERRATECONTROL']._serialized_start=77
39
+ _globals['_GSTREAMERRATECONTROL']._serialized_end=185
40
+ _globals['_GSTREAMERVIDEOSOURCECONFIG']._serialized_start=188
41
+ _globals['_GSTREAMERVIDEOSOURCECONFIG']._serialized_end=393
42
+ _globals['_PATTERNVIDEOSOURCECONFIG']._serialized_start=396
43
+ _globals['_PATTERNVIDEOSOURCECONFIG']._serialized_end=544
44
+ _globals['_CLOCKVIDEOSOURCECONFIG']._serialized_start=546
45
+ _globals['_CLOCKVIDEOSOURCECONFIG']._serialized_end=651
46
+ _globals['_CAPTURESOURCEINFO']._serialized_start=654
47
+ _globals['_CAPTURESOURCEINFO']._serialized_end=949
48
+ _globals['_OWNEDCAPTURESOURCE']._serialized_start=951
49
+ _globals['_OWNEDCAPTURESOURCE']._serialized_end=1066
50
+ _globals['_NEWCAPTURESOURCEREQUEST']._serialized_start=1069
51
+ _globals['_NEWCAPTURESOURCEREQUEST']._serialized_end=1310
52
+ _globals['_NEWCAPTURESOURCERESPONSE']._serialized_start=1312
53
+ _globals['_NEWCAPTURESOURCERESPONSE']._serialized_end=1356
54
+ _globals['_NEWCAPTURESOURCECALLBACK']._serialized_start=1358
55
+ _globals['_NEWCAPTURESOURCECALLBACK']._serialized_end=1483
56
+ _globals['_STARTCAPTUREREQUEST']._serialized_start=1485
57
+ _globals['_STARTCAPTUREREQUEST']._serialized_end=1530
58
+ _globals['_STARTCAPTURERESPONSE']._serialized_start=1532
59
+ _globals['_STARTCAPTURERESPONSE']._serialized_end=1569
60
+ _globals['_STOPCAPTUREREQUEST']._serialized_start=1571
61
+ _globals['_STOPCAPTUREREQUEST']._serialized_end=1615
62
+ _globals['_STOPCAPTURERESPONSE']._serialized_start=1617
63
+ _globals['_STOPCAPTURERESPONSE']._serialized_end=1653
64
+ _globals['_CAPTUREFINISHED']._serialized_start=1655
65
+ _globals['_CAPTUREFINISHED']._serialized_end=1739
66
+ _globals['_CAPTUREERROR']._serialized_start=1741
67
+ _globals['_CAPTUREERROR']._serialized_end=1817
68
+ _globals['_CAPTURESOURCEEVENT']._serialized_start=1820
69
+ _globals['_CAPTURESOURCEEVENT']._serialized_end=1973
70
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,559 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ Copyright 2026 LiveKit, Inc.
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ """
18
+
19
+ import builtins
20
+ import google.protobuf.descriptor
21
+ import google.protobuf.internal.enum_type_wrapper
22
+ import google.protobuf.message
23
+ from . import handle_pb2
24
+ from . import room_pb2
25
+ import sys
26
+ import typing
27
+ from . import video_frame_pb2
28
+
29
+ if sys.version_info >= (3, 10):
30
+ import typing as typing_extensions
31
+ else:
32
+ import typing_extensions
33
+
34
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
35
+
36
+ class _GstreamerBitrateUnit:
37
+ ValueType = typing.NewType("ValueType", builtins.int)
38
+ V: typing_extensions.TypeAlias = ValueType
39
+
40
+ class _GstreamerBitrateUnitEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_GstreamerBitrateUnit.ValueType], builtins.type):
41
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
42
+ GSTREAMER_BITRATE_UNIT_BPS: _GstreamerBitrateUnit.ValueType # 0
43
+ GSTREAMER_BITRATE_UNIT_KBPS: _GstreamerBitrateUnit.ValueType # 1
44
+
45
+ class GstreamerBitrateUnit(_GstreamerBitrateUnit, metaclass=_GstreamerBitrateUnitEnumTypeWrapper):
46
+ """Capture sources (livekit-capture)
47
+
48
+ A capture source owns a media producer (e.g. a GStreamer pipeline) and the
49
+ pump that forwards its frames into an RTC video source, so no per-frame
50
+ FFI traffic is needed. These requests are only served when the FFI server
51
+ is built with the `capture` feature; otherwise they fail with an error.
52
+
53
+ Usage:
54
+ 1. NewCaptureSourceRequest (async): builds and starts the producer,
55
+ discovers stream settings, and returns an OwnedCaptureSource. Its info
56
+ embeds an OwnedVideoSource for the existing CreateVideoTrackRequest and
57
+ the recommended TrackPublishOptions for PublishTrackRequest.
58
+ 2. StartCaptureRequest: starts pumping frames into the RTC source.
59
+ 3. The capture runs until StopCaptureRequest, end of stream, or an error;
60
+ a CaptureSourceEvent is delivered exactly once when it ends.
61
+
62
+ Bitrate unit expected by a GStreamer encoder property.
63
+ """
64
+
65
+ GSTREAMER_BITRATE_UNIT_BPS: GstreamerBitrateUnit.ValueType # 0
66
+ GSTREAMER_BITRATE_UNIT_KBPS: GstreamerBitrateUnit.ValueType # 1
67
+ global___GstreamerBitrateUnit = GstreamerBitrateUnit
68
+
69
+ class _Pattern:
70
+ ValueType = typing.NewType("ValueType", builtins.int)
71
+ V: typing_extensions.TypeAlias = ValueType
72
+
73
+ class _PatternEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Pattern.ValueType], builtins.type):
74
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
75
+ PATTERN_GRADIENT: _Pattern.ValueType # 0
76
+ """Animated color gradient."""
77
+ PATTERN_LOGO: _Pattern.ValueType # 1
78
+ """Bouncing LiveKit logo."""
79
+
80
+ class Pattern(_Pattern, metaclass=_PatternEnumTypeWrapper):
81
+ """Test patterns built into livekit-capture."""
82
+
83
+ PATTERN_GRADIENT: Pattern.ValueType # 0
84
+ """Animated color gradient."""
85
+ PATTERN_LOGO: Pattern.ValueType # 1
86
+ """Bouncing LiveKit logo."""
87
+ global___Pattern = Pattern
88
+
89
+ class _CaptureSourceKind:
90
+ ValueType = typing.NewType("ValueType", builtins.int)
91
+ V: typing_extensions.TypeAlias = ValueType
92
+
93
+ class _CaptureSourceKindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CaptureSourceKind.ValueType], builtins.type):
94
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
95
+ CAPTURE_SOURCE_PIXEL: _CaptureSourceKind.ValueType # 0
96
+ """Pixel frames, published through the WebRTC encoder."""
97
+ CAPTURE_SOURCE_ENCODED: _CaptureSourceKind.ValueType # 1
98
+ """Pre-encoded access units, published as passthrough."""
99
+
100
+ class CaptureSourceKind(_CaptureSourceKind, metaclass=_CaptureSourceKindEnumTypeWrapper):
101
+ """Kind of media a capture source produces."""
102
+
103
+ CAPTURE_SOURCE_PIXEL: CaptureSourceKind.ValueType # 0
104
+ """Pixel frames, published through the WebRTC encoder."""
105
+ CAPTURE_SOURCE_ENCODED: CaptureSourceKind.ValueType # 1
106
+ """Pre-encoded access units, published as passthrough."""
107
+ global___CaptureSourceKind = CaptureSourceKind
108
+
109
+ class _CaptureExit:
110
+ ValueType = typing.NewType("ValueType", builtins.int)
111
+ V: typing_extensions.TypeAlias = ValueType
112
+
113
+ class _CaptureExitEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CaptureExit.ValueType], builtins.type):
114
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
115
+ CAPTURE_EXIT_STOPPED: _CaptureExit.ValueType # 0
116
+ """Stopped by StopCaptureRequest (or handle disposal)."""
117
+ CAPTURE_EXIT_END_OF_STREAM: _CaptureExit.ValueType # 1
118
+ """The producer reached the end of its stream."""
119
+
120
+ class CaptureExit(_CaptureExit, metaclass=_CaptureExitEnumTypeWrapper):
121
+ """Why a capture ended without error."""
122
+
123
+ CAPTURE_EXIT_STOPPED: CaptureExit.ValueType # 0
124
+ """Stopped by StopCaptureRequest (or handle disposal)."""
125
+ CAPTURE_EXIT_END_OF_STREAM: CaptureExit.ValueType # 1
126
+ """The producer reached the end of its stream."""
127
+ global___CaptureExit = CaptureExit
128
+
129
+ class _CaptureErrorKind:
130
+ ValueType = typing.NewType("ValueType", builtins.int)
131
+ V: typing_extensions.TypeAlias = ValueType
132
+
133
+ class _CaptureErrorKindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CaptureErrorKind.ValueType], builtins.type):
134
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
135
+ CAPTURE_ERROR_KIND_SOURCE: _CaptureErrorKind.ValueType # 0
136
+ """The capture source failed or violated its contract."""
137
+ CAPTURE_ERROR_KIND_RTC: _CaptureErrorKind.ValueType # 1
138
+ """The RTC video source rejected a frame."""
139
+ CAPTURE_ERROR_KIND_PANICKED: _CaptureErrorKind.ValueType # 2
140
+ """The pump thread panicked."""
141
+
142
+ class CaptureErrorKind(_CaptureErrorKind, metaclass=_CaptureErrorKindEnumTypeWrapper):
143
+ """Why a capture ended with an error."""
144
+
145
+ CAPTURE_ERROR_KIND_SOURCE: CaptureErrorKind.ValueType # 0
146
+ """The capture source failed or violated its contract."""
147
+ CAPTURE_ERROR_KIND_RTC: CaptureErrorKind.ValueType # 1
148
+ """The RTC video source rejected a frame."""
149
+ CAPTURE_ERROR_KIND_PANICKED: CaptureErrorKind.ValueType # 2
150
+ """The pump thread panicked."""
151
+ global___CaptureErrorKind = CaptureErrorKind
152
+
153
+ @typing.final
154
+ class GstreamerRateControl(google.protobuf.message.Message):
155
+ """Binding from WebRTC rate-control targets to a GStreamer encoder property."""
156
+
157
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
158
+
159
+ ELEMENT_FIELD_NUMBER: builtins.int
160
+ PROPERTY_FIELD_NUMBER: builtins.int
161
+ UNIT_FIELD_NUMBER: builtins.int
162
+ element: builtins.str
163
+ """Name of the encoder element in the pipeline (e.g. `lk_encoder`)."""
164
+ property: builtins.str
165
+ """Bitrate property to set on the element (e.g. `bitrate` for x264enc,
166
+ `target-bitrate` for vp8enc/vp9enc).
167
+ """
168
+ unit: global___GstreamerBitrateUnit.ValueType
169
+ """Unit the property expects."""
170
+ def __init__(
171
+ self,
172
+ *,
173
+ element: builtins.str | None = ...,
174
+ property: builtins.str | None = ...,
175
+ unit: global___GstreamerBitrateUnit.ValueType | None = ...,
176
+ ) -> None: ...
177
+ def HasField(self, field_name: typing.Literal["element", b"element", "property", b"property", "unit", b"unit"]) -> builtins.bool: ...
178
+ def ClearField(self, field_name: typing.Literal["element", b"element", "property", b"property", "unit", b"unit"]) -> None: ...
179
+
180
+ global___GstreamerRateControl = GstreamerRateControl
181
+
182
+ @typing.final
183
+ class GstreamerVideoSourceConfig(google.protobuf.message.Message):
184
+ """Encoded ingest from a GStreamer pipeline."""
185
+
186
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
187
+
188
+ PIPELINE_FIELD_NUMBER: builtins.int
189
+ CODEC_FIELD_NUMBER: builtins.int
190
+ RESOLUTION_FIELD_NUMBER: builtins.int
191
+ RATE_CONTROL_FIELD_NUMBER: builtins.int
192
+ pipeline: builtins.str
193
+ """GStreamer launch description for the encoded producer pipeline.
194
+ Must contain `appsink name=lk_appsink`, or leave exactly one encoded
195
+ video source pad unlinked for the source to attach one to.
196
+ """
197
+ codec: video_frame_pb2.VideoCodec.ValueType
198
+ """Codec expected from the pipeline; inferred from pipeline caps when
199
+ omitted.
200
+ """
201
+ @property
202
+ def resolution(self) -> video_frame_pb2.VideoSourceResolution:
203
+ """Encoded frame resolution. When omitted, it is discovered from the
204
+ pipeline's negotiated caps; when set, the pipeline output is verified
205
+ against it.
206
+ """
207
+
208
+ @property
209
+ def rate_control(self) -> global___GstreamerRateControl:
210
+ """Forwards WebRTC rate-control targets to an encoder element's bitrate
211
+ property. Without this, the pipeline encodes at a fixed bitrate.
212
+ """
213
+
214
+ def __init__(
215
+ self,
216
+ *,
217
+ pipeline: builtins.str | None = ...,
218
+ codec: video_frame_pb2.VideoCodec.ValueType | None = ...,
219
+ resolution: video_frame_pb2.VideoSourceResolution | None = ...,
220
+ rate_control: global___GstreamerRateControl | None = ...,
221
+ ) -> None: ...
222
+ def HasField(self, field_name: typing.Literal["codec", b"codec", "pipeline", b"pipeline", "rate_control", b"rate_control", "resolution", b"resolution"]) -> builtins.bool: ...
223
+ def ClearField(self, field_name: typing.Literal["codec", b"codec", "pipeline", b"pipeline", "rate_control", b"rate_control", "resolution", b"resolution"]) -> None: ...
224
+
225
+ global___GstreamerVideoSourceConfig = GstreamerVideoSourceConfig
226
+
227
+ @typing.final
228
+ class PatternVideoSourceConfig(google.protobuf.message.Message):
229
+ """Test pattern rendered on the GPU."""
230
+
231
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
232
+
233
+ RESOLUTION_FIELD_NUMBER: builtins.int
234
+ FRAMERATE_FPS_FIELD_NUMBER: builtins.int
235
+ PATTERN_FIELD_NUMBER: builtins.int
236
+ framerate_fps: builtins.int
237
+ """Output frame rate in frames per second."""
238
+ pattern: global___Pattern.ValueType
239
+ """Pattern to render."""
240
+ @property
241
+ def resolution(self) -> video_frame_pb2.VideoSourceResolution:
242
+ """Output resolution."""
243
+
244
+ def __init__(
245
+ self,
246
+ *,
247
+ resolution: video_frame_pb2.VideoSourceResolution | None = ...,
248
+ framerate_fps: builtins.int | None = ...,
249
+ pattern: global___Pattern.ValueType | None = ...,
250
+ ) -> None: ...
251
+ def HasField(self, field_name: typing.Literal["framerate_fps", b"framerate_fps", "pattern", b"pattern", "resolution", b"resolution"]) -> builtins.bool: ...
252
+ def ClearField(self, field_name: typing.Literal["framerate_fps", b"framerate_fps", "pattern", b"pattern", "resolution", b"resolution"]) -> None: ...
253
+
254
+ global___PatternVideoSourceConfig = PatternVideoSourceConfig
255
+
256
+ @typing.final
257
+ class ClockVideoSourceConfig(google.protobuf.message.Message):
258
+ """Wall clock with millisecond precision, rendered on the GPU. Shows the
259
+ local time of the machine that runs the FFI server.
260
+ """
261
+
262
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
263
+
264
+ RESOLUTION_FIELD_NUMBER: builtins.int
265
+ FRAMERATE_FPS_FIELD_NUMBER: builtins.int
266
+ framerate_fps: builtins.int
267
+ """Output frame rate in frames per second."""
268
+ @property
269
+ def resolution(self) -> video_frame_pb2.VideoSourceResolution:
270
+ """Output resolution."""
271
+
272
+ def __init__(
273
+ self,
274
+ *,
275
+ resolution: video_frame_pb2.VideoSourceResolution | None = ...,
276
+ framerate_fps: builtins.int | None = ...,
277
+ ) -> None: ...
278
+ def HasField(self, field_name: typing.Literal["framerate_fps", b"framerate_fps", "resolution", b"resolution"]) -> builtins.bool: ...
279
+ def ClearField(self, field_name: typing.Literal["framerate_fps", b"framerate_fps", "resolution", b"resolution"]) -> None: ...
280
+
281
+ global___ClockVideoSourceConfig = ClockVideoSourceConfig
282
+
283
+ @typing.final
284
+ class CaptureSourceInfo(google.protobuf.message.Message):
285
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
286
+
287
+ KIND_FIELD_NUMBER: builtins.int
288
+ RESOLUTION_FIELD_NUMBER: builtins.int
289
+ CODEC_FIELD_NUMBER: builtins.int
290
+ RECOMMENDED_PUBLISH_OPTIONS_FIELD_NUMBER: builtins.int
291
+ VIDEO_SOURCE_FIELD_NUMBER: builtins.int
292
+ kind: global___CaptureSourceKind.ValueType
293
+ codec: video_frame_pb2.VideoCodec.ValueType
294
+ """Codec produced by the source; encoded sources only."""
295
+ @property
296
+ def resolution(self) -> video_frame_pb2.VideoSourceResolution:
297
+ """Declared or discovered stream resolution."""
298
+
299
+ @property
300
+ def recommended_publish_options(self) -> room_pb2.TrackPublishOptions:
301
+ """Publish options derived from the source (codec, encoder backend, ...).
302
+ Merge application options (e.g. track source) over these when calling
303
+ PublishTrackRequest.
304
+ """
305
+
306
+ @property
307
+ def video_source(self) -> video_frame_pb2.OwnedVideoSource:
308
+ """RTC video source fed by this capture source; pass its handle to
309
+ CreateVideoTrackRequest. Owned by the client like any other handle.
310
+ """
311
+
312
+ def __init__(
313
+ self,
314
+ *,
315
+ kind: global___CaptureSourceKind.ValueType | None = ...,
316
+ resolution: video_frame_pb2.VideoSourceResolution | None = ...,
317
+ codec: video_frame_pb2.VideoCodec.ValueType | None = ...,
318
+ recommended_publish_options: room_pb2.TrackPublishOptions | None = ...,
319
+ video_source: video_frame_pb2.OwnedVideoSource | None = ...,
320
+ ) -> None: ...
321
+ def HasField(self, field_name: typing.Literal["codec", b"codec", "kind", b"kind", "recommended_publish_options", b"recommended_publish_options", "resolution", b"resolution", "video_source", b"video_source"]) -> builtins.bool: ...
322
+ def ClearField(self, field_name: typing.Literal["codec", b"codec", "kind", b"kind", "recommended_publish_options", b"recommended_publish_options", "resolution", b"resolution", "video_source", b"video_source"]) -> None: ...
323
+
324
+ global___CaptureSourceInfo = CaptureSourceInfo
325
+
326
+ @typing.final
327
+ class OwnedCaptureSource(google.protobuf.message.Message):
328
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
329
+
330
+ HANDLE_FIELD_NUMBER: builtins.int
331
+ INFO_FIELD_NUMBER: builtins.int
332
+ @property
333
+ def handle(self) -> handle_pb2.FfiOwnedHandle: ...
334
+ @property
335
+ def info(self) -> global___CaptureSourceInfo: ...
336
+ def __init__(
337
+ self,
338
+ *,
339
+ handle: handle_pb2.FfiOwnedHandle | None = ...,
340
+ info: global___CaptureSourceInfo | None = ...,
341
+ ) -> None: ...
342
+ def HasField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> builtins.bool: ...
343
+ def ClearField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> None: ...
344
+
345
+ global___OwnedCaptureSource = OwnedCaptureSource
346
+
347
+ @typing.final
348
+ class NewCaptureSourceRequest(google.protobuf.message.Message):
349
+ """Create a new capture source from configuration.
350
+
351
+ Completes asynchronously with a NewCaptureSourceCallback: construction
352
+ starts the producer and may wait for its first output to discover stream
353
+ settings.
354
+ """
355
+
356
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
357
+
358
+ GSTREAMER_FIELD_NUMBER: builtins.int
359
+ PATTERN_FIELD_NUMBER: builtins.int
360
+ CLOCK_FIELD_NUMBER: builtins.int
361
+ REQUEST_ASYNC_ID_FIELD_NUMBER: builtins.int
362
+ request_async_id: builtins.int
363
+ @property
364
+ def gstreamer(self) -> global___GstreamerVideoSourceConfig: ...
365
+ @property
366
+ def pattern(self) -> global___PatternVideoSourceConfig: ...
367
+ @property
368
+ def clock(self) -> global___ClockVideoSourceConfig: ...
369
+ def __init__(
370
+ self,
371
+ *,
372
+ gstreamer: global___GstreamerVideoSourceConfig | None = ...,
373
+ pattern: global___PatternVideoSourceConfig | None = ...,
374
+ clock: global___ClockVideoSourceConfig | None = ...,
375
+ request_async_id: builtins.int | None = ...,
376
+ ) -> None: ...
377
+ def HasField(self, field_name: typing.Literal["clock", b"clock", "config", b"config", "gstreamer", b"gstreamer", "pattern", b"pattern", "request_async_id", b"request_async_id"]) -> builtins.bool: ...
378
+ def ClearField(self, field_name: typing.Literal["clock", b"clock", "config", b"config", "gstreamer", b"gstreamer", "pattern", b"pattern", "request_async_id", b"request_async_id"]) -> None: ...
379
+ def WhichOneof(self, oneof_group: typing.Literal["config", b"config"]) -> typing.Literal["gstreamer", "pattern", "clock"] | None: ...
380
+
381
+ global___NewCaptureSourceRequest = NewCaptureSourceRequest
382
+
383
+ @typing.final
384
+ class NewCaptureSourceResponse(google.protobuf.message.Message):
385
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
386
+
387
+ ASYNC_ID_FIELD_NUMBER: builtins.int
388
+ async_id: builtins.int
389
+ def __init__(
390
+ self,
391
+ *,
392
+ async_id: builtins.int | None = ...,
393
+ ) -> None: ...
394
+ def HasField(self, field_name: typing.Literal["async_id", b"async_id"]) -> builtins.bool: ...
395
+ def ClearField(self, field_name: typing.Literal["async_id", b"async_id"]) -> None: ...
396
+
397
+ global___NewCaptureSourceResponse = NewCaptureSourceResponse
398
+
399
+ @typing.final
400
+ class NewCaptureSourceCallback(google.protobuf.message.Message):
401
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
402
+
403
+ ASYNC_ID_FIELD_NUMBER: builtins.int
404
+ ERROR_FIELD_NUMBER: builtins.int
405
+ SOURCE_FIELD_NUMBER: builtins.int
406
+ async_id: builtins.int
407
+ error: builtins.str
408
+ @property
409
+ def source(self) -> global___OwnedCaptureSource: ...
410
+ def __init__(
411
+ self,
412
+ *,
413
+ async_id: builtins.int | None = ...,
414
+ error: builtins.str | None = ...,
415
+ source: global___OwnedCaptureSource | None = ...,
416
+ ) -> None: ...
417
+ def HasField(self, field_name: typing.Literal["async_id", b"async_id", "error", b"error", "message", b"message", "source", b"source"]) -> builtins.bool: ...
418
+ def ClearField(self, field_name: typing.Literal["async_id", b"async_id", "error", b"error", "message", b"message", "source", b"source"]) -> None: ...
419
+ def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.Literal["error", "source"] | None: ...
420
+
421
+ global___NewCaptureSourceCallback = NewCaptureSourceCallback
422
+
423
+ @typing.final
424
+ class StartCaptureRequest(google.protobuf.message.Message):
425
+ """Start pumping frames from a capture source into its RTC video source."""
426
+
427
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
428
+
429
+ CAPTURE_HANDLE_FIELD_NUMBER: builtins.int
430
+ capture_handle: builtins.int
431
+ def __init__(
432
+ self,
433
+ *,
434
+ capture_handle: builtins.int | None = ...,
435
+ ) -> None: ...
436
+ def HasField(self, field_name: typing.Literal["capture_handle", b"capture_handle"]) -> builtins.bool: ...
437
+ def ClearField(self, field_name: typing.Literal["capture_handle", b"capture_handle"]) -> None: ...
438
+
439
+ global___StartCaptureRequest = StartCaptureRequest
440
+
441
+ @typing.final
442
+ class StartCaptureResponse(google.protobuf.message.Message):
443
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
444
+
445
+ ERROR_FIELD_NUMBER: builtins.int
446
+ error: builtins.str
447
+ def __init__(
448
+ self,
449
+ *,
450
+ error: builtins.str | None = ...,
451
+ ) -> None: ...
452
+ def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
453
+ def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
454
+
455
+ global___StartCaptureResponse = StartCaptureResponse
456
+
457
+ @typing.final
458
+ class StopCaptureRequest(google.protobuf.message.Message):
459
+ """Signal a running capture to stop after the frame in flight. The terminal
460
+ CaptureSourceEvent follows shortly. Stopping an already-finished capture
461
+ is a no-op.
462
+ """
463
+
464
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
465
+
466
+ CAPTURE_HANDLE_FIELD_NUMBER: builtins.int
467
+ capture_handle: builtins.int
468
+ def __init__(
469
+ self,
470
+ *,
471
+ capture_handle: builtins.int | None = ...,
472
+ ) -> None: ...
473
+ def HasField(self, field_name: typing.Literal["capture_handle", b"capture_handle"]) -> builtins.bool: ...
474
+ def ClearField(self, field_name: typing.Literal["capture_handle", b"capture_handle"]) -> None: ...
475
+
476
+ global___StopCaptureRequest = StopCaptureRequest
477
+
478
+ @typing.final
479
+ class StopCaptureResponse(google.protobuf.message.Message):
480
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
481
+
482
+ ERROR_FIELD_NUMBER: builtins.int
483
+ error: builtins.str
484
+ def __init__(
485
+ self,
486
+ *,
487
+ error: builtins.str | None = ...,
488
+ ) -> None: ...
489
+ def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
490
+ def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
491
+
492
+ global___StopCaptureResponse = StopCaptureResponse
493
+
494
+ @typing.final
495
+ class CaptureFinished(google.protobuf.message.Message):
496
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
497
+
498
+ FRAMES_CAPTURED_FIELD_NUMBER: builtins.int
499
+ EXIT_FIELD_NUMBER: builtins.int
500
+ frames_captured: builtins.int
501
+ exit: global___CaptureExit.ValueType
502
+ def __init__(
503
+ self,
504
+ *,
505
+ frames_captured: builtins.int | None = ...,
506
+ exit: global___CaptureExit.ValueType | None = ...,
507
+ ) -> None: ...
508
+ def HasField(self, field_name: typing.Literal["exit", b"exit", "frames_captured", b"frames_captured"]) -> builtins.bool: ...
509
+ def ClearField(self, field_name: typing.Literal["exit", b"exit", "frames_captured", b"frames_captured"]) -> None: ...
510
+
511
+ global___CaptureFinished = CaptureFinished
512
+
513
+ @typing.final
514
+ class CaptureError(google.protobuf.message.Message):
515
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
516
+
517
+ ERROR_FIELD_NUMBER: builtins.int
518
+ KIND_FIELD_NUMBER: builtins.int
519
+ error: builtins.str
520
+ kind: global___CaptureErrorKind.ValueType
521
+ def __init__(
522
+ self,
523
+ *,
524
+ error: builtins.str | None = ...,
525
+ kind: global___CaptureErrorKind.ValueType | None = ...,
526
+ ) -> None: ...
527
+ def HasField(self, field_name: typing.Literal["error", b"error", "kind", b"kind"]) -> builtins.bool: ...
528
+ def ClearField(self, field_name: typing.Literal["error", b"error", "kind", b"kind"]) -> None: ...
529
+
530
+ global___CaptureError = CaptureError
531
+
532
+ @typing.final
533
+ class CaptureSourceEvent(google.protobuf.message.Message):
534
+ """Delivered exactly once when a started capture ends, regardless of why
535
+ (stop request, end of stream, or failure).
536
+ """
537
+
538
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
539
+
540
+ CAPTURE_HANDLE_FIELD_NUMBER: builtins.int
541
+ FINISHED_FIELD_NUMBER: builtins.int
542
+ ERROR_FIELD_NUMBER: builtins.int
543
+ capture_handle: builtins.int
544
+ @property
545
+ def finished(self) -> global___CaptureFinished: ...
546
+ @property
547
+ def error(self) -> global___CaptureError: ...
548
+ def __init__(
549
+ self,
550
+ *,
551
+ capture_handle: builtins.int | None = ...,
552
+ finished: global___CaptureFinished | None = ...,
553
+ error: global___CaptureError | None = ...,
554
+ ) -> None: ...
555
+ def HasField(self, field_name: typing.Literal["capture_handle", b"capture_handle", "error", b"error", "finished", b"finished", "message", b"message"]) -> builtins.bool: ...
556
+ def ClearField(self, field_name: typing.Literal["capture_handle", b"capture_handle", "error", b"error", "finished", b"finished", "message", b"message"]) -> None: ...
557
+ def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.Literal["finished", "error"] | None: ...
558
+
559
+ global___CaptureSourceEvent = CaptureSourceEvent