libdatachannel-py 2025.1.0.dev9__tar.gz → 2025.1.0.dev11__tar.gz
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.
- {libdatachannel_py-2025.1.0.dev9/src/libdatachannel_py.egg-info → libdatachannel_py-2025.1.0.dev11}/PKG-INFO +1 -1
- libdatachannel_py-2025.1.0.dev11/VERSION +1 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/setup.py +1 -1
- libdatachannel_py-2025.1.0.dev11/src/libdatachannel/codec/__init__.py +1 -0
- libdatachannel_py-2025.1.0.dev11/src/libdatachannel/codec/__init__.pyi +376 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/src/libdatachannel/libdatachannel_ext.cpython-313-darwin.so +0 -0
- libdatachannel_py-2025.1.0.dev11/src/libdatachannel/libyuv/__init__.py +1 -0
- libdatachannel_py-2025.1.0.dev11/src/libdatachannel/libyuv/__init__.pyi +345 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11/src/libdatachannel_py.egg-info}/PKG-INFO +1 -1
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/src/libdatachannel_py.egg-info/SOURCES.txt +4 -0
- libdatachannel_py-2025.1.0.dev9/VERSION +0 -1
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/LICENSE +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/MANIFEST.in +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/README.md +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/buildbase.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/pypath.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/pyproject.toml +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/run.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/setup.cfg +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/src/libdatachannel/__init__.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/src/libdatachannel/libdatachannel_ext.pyi +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/src/libdatachannel/py.typed +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/src/libdatachannel_py.egg-info/dependency_links.txt +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/src/libdatachannel_py.egg-info/top_level.txt +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_audio_codec.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_candidate.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_configuration.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_description.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_frameinfo.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_h265nalunit.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_libyuv.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_mediahandler.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_message.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_nalunit.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_packetizationconfig.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_peerconnection.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_prop_audio_codec.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_reliability.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_rtppacketizer.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_video_codec.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_websocket.py +0 -0
- {libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_websocketserver.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2025.1.0.dev11
|
|
@@ -44,7 +44,7 @@ def run_setup(build_platform, target_platform):
|
|
|
44
44
|
setup(
|
|
45
45
|
version=version,
|
|
46
46
|
url="https://github.com/shiguredo/libdatachannel-py",
|
|
47
|
-
packages=["libdatachannel"],
|
|
47
|
+
packages=["libdatachannel", "libdatachannel.codec", "libdatachannel.libyuv"],
|
|
48
48
|
package_dir={"": "src"},
|
|
49
49
|
package_data={
|
|
50
50
|
"libdatachannel": ["libdatachannel_ext.*"],
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from ..libdatachannel_ext.codec import * # noqa: F401,F403
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
import datetime
|
|
3
|
+
import enum
|
|
4
|
+
from typing import Annotated
|
|
5
|
+
|
|
6
|
+
from numpy.typing import ArrayLike
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class VideoCodecType(enum.Enum):
|
|
10
|
+
H264 = 0
|
|
11
|
+
|
|
12
|
+
H265 = 1
|
|
13
|
+
|
|
14
|
+
VP8 = 2
|
|
15
|
+
|
|
16
|
+
VP9 = 3
|
|
17
|
+
|
|
18
|
+
AV1 = 4
|
|
19
|
+
|
|
20
|
+
class ImageFormat(enum.Enum):
|
|
21
|
+
I420 = 0
|
|
22
|
+
|
|
23
|
+
NV12 = 1
|
|
24
|
+
|
|
25
|
+
BGR888 = 2
|
|
26
|
+
|
|
27
|
+
class VideoFrameBufferI420:
|
|
28
|
+
@staticmethod
|
|
29
|
+
def create(arg0: int, arg1: int, /) -> VideoFrameBufferI420: ...
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def y(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
33
|
+
|
|
34
|
+
@y.setter
|
|
35
|
+
def y(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def u(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
39
|
+
|
|
40
|
+
@u.setter
|
|
41
|
+
def u(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def v(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
45
|
+
|
|
46
|
+
@v.setter
|
|
47
|
+
def v(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
48
|
+
|
|
49
|
+
def width(self) -> int: ...
|
|
50
|
+
|
|
51
|
+
def height(self) -> int: ...
|
|
52
|
+
|
|
53
|
+
def stride_y(self) -> int: ...
|
|
54
|
+
|
|
55
|
+
def stride_u(self) -> int: ...
|
|
56
|
+
|
|
57
|
+
def stride_v(self) -> int: ...
|
|
58
|
+
|
|
59
|
+
class VideoFrameBufferNV12:
|
|
60
|
+
@staticmethod
|
|
61
|
+
def create(arg0: int, arg1: int, /) -> VideoFrameBufferNV12: ...
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def y(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
65
|
+
|
|
66
|
+
@y.setter
|
|
67
|
+
def y(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def uv(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
71
|
+
|
|
72
|
+
@uv.setter
|
|
73
|
+
def uv(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
74
|
+
|
|
75
|
+
def width(self) -> int: ...
|
|
76
|
+
|
|
77
|
+
def height(self) -> int: ...
|
|
78
|
+
|
|
79
|
+
def stride_y(self) -> int: ...
|
|
80
|
+
|
|
81
|
+
def stride_uv(self) -> int: ...
|
|
82
|
+
|
|
83
|
+
class VideoFrameBufferBGR888:
|
|
84
|
+
@staticmethod
|
|
85
|
+
def create(arg0: int, arg1: int, /) -> VideoFrameBufferBGR888: ...
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def bgr(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None, 3), order='C')]: ...
|
|
89
|
+
|
|
90
|
+
@bgr.setter
|
|
91
|
+
def bgr(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None, 3), order='C')], /) -> None: ...
|
|
92
|
+
|
|
93
|
+
def width(self) -> int: ...
|
|
94
|
+
|
|
95
|
+
def height(self) -> int: ...
|
|
96
|
+
|
|
97
|
+
def stride(self) -> int: ...
|
|
98
|
+
|
|
99
|
+
class VideoFrame:
|
|
100
|
+
def __init__(self) -> None: ...
|
|
101
|
+
|
|
102
|
+
@property
|
|
103
|
+
def format(self) -> ImageFormat: ...
|
|
104
|
+
|
|
105
|
+
@format.setter
|
|
106
|
+
def format(self, arg: ImageFormat, /) -> None: ...
|
|
107
|
+
|
|
108
|
+
@property
|
|
109
|
+
def i420_buffer(self) -> VideoFrameBufferI420: ...
|
|
110
|
+
|
|
111
|
+
@i420_buffer.setter
|
|
112
|
+
def i420_buffer(self, arg: VideoFrameBufferI420, /) -> None: ...
|
|
113
|
+
|
|
114
|
+
@property
|
|
115
|
+
def nv12_buffer(self) -> VideoFrameBufferNV12: ...
|
|
116
|
+
|
|
117
|
+
@nv12_buffer.setter
|
|
118
|
+
def nv12_buffer(self, arg: VideoFrameBufferNV12, /) -> None: ...
|
|
119
|
+
|
|
120
|
+
@property
|
|
121
|
+
def bgr888_buffer(self) -> VideoFrameBufferBGR888: ...
|
|
122
|
+
|
|
123
|
+
@bgr888_buffer.setter
|
|
124
|
+
def bgr888_buffer(self, arg: VideoFrameBufferBGR888, /) -> None: ...
|
|
125
|
+
|
|
126
|
+
@property
|
|
127
|
+
def timestamp(self) -> datetime.timedelta: ...
|
|
128
|
+
|
|
129
|
+
@timestamp.setter
|
|
130
|
+
def timestamp(self, arg: datetime.timedelta | float, /) -> None: ...
|
|
131
|
+
|
|
132
|
+
@property
|
|
133
|
+
def rid(self) -> str | None: ...
|
|
134
|
+
|
|
135
|
+
@rid.setter
|
|
136
|
+
def rid(self, arg: str, /) -> None: ...
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def base_width(self) -> int: ...
|
|
140
|
+
|
|
141
|
+
@base_width.setter
|
|
142
|
+
def base_width(self, arg: int, /) -> None: ...
|
|
143
|
+
|
|
144
|
+
@property
|
|
145
|
+
def base_height(self) -> int: ...
|
|
146
|
+
|
|
147
|
+
@base_height.setter
|
|
148
|
+
def base_height(self, arg: int, /) -> None: ...
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def frame_number(self) -> int: ...
|
|
152
|
+
|
|
153
|
+
@frame_number.setter
|
|
154
|
+
def frame_number(self, arg: int, /) -> None: ...
|
|
155
|
+
|
|
156
|
+
def width(self) -> int: ...
|
|
157
|
+
|
|
158
|
+
def height(self) -> int: ...
|
|
159
|
+
|
|
160
|
+
class EncodedImage:
|
|
161
|
+
def __init__(self) -> None: ...
|
|
162
|
+
|
|
163
|
+
@property
|
|
164
|
+
def data(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')]: ...
|
|
165
|
+
|
|
166
|
+
@data.setter
|
|
167
|
+
def data(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')], /) -> None: ...
|
|
168
|
+
|
|
169
|
+
@property
|
|
170
|
+
def timestamp(self) -> datetime.timedelta: ...
|
|
171
|
+
|
|
172
|
+
@timestamp.setter
|
|
173
|
+
def timestamp(self, arg: datetime.timedelta | float, /) -> None: ...
|
|
174
|
+
|
|
175
|
+
@property
|
|
176
|
+
def rid(self) -> str | None: ...
|
|
177
|
+
|
|
178
|
+
@rid.setter
|
|
179
|
+
def rid(self, arg: str, /) -> None: ...
|
|
180
|
+
|
|
181
|
+
class VideoEncoder:
|
|
182
|
+
def init(self, arg: VideoEncoder.Settings, /) -> bool: ...
|
|
183
|
+
|
|
184
|
+
def release(self) -> None: ...
|
|
185
|
+
|
|
186
|
+
def encode(self, arg: VideoFrame, /) -> None: ...
|
|
187
|
+
|
|
188
|
+
def force_intra_next_frame(self) -> None: ...
|
|
189
|
+
|
|
190
|
+
def set_on_encode(self, arg: Callable[[EncodedImage], None], /) -> None: ...
|
|
191
|
+
|
|
192
|
+
class Settings:
|
|
193
|
+
def __init__(self) -> None: ...
|
|
194
|
+
|
|
195
|
+
@property
|
|
196
|
+
def codec_type(self) -> VideoCodecType: ...
|
|
197
|
+
|
|
198
|
+
@codec_type.setter
|
|
199
|
+
def codec_type(self, arg: VideoCodecType, /) -> None: ...
|
|
200
|
+
|
|
201
|
+
@property
|
|
202
|
+
def width(self) -> int: ...
|
|
203
|
+
|
|
204
|
+
@width.setter
|
|
205
|
+
def width(self, arg: int, /) -> None: ...
|
|
206
|
+
|
|
207
|
+
@property
|
|
208
|
+
def height(self) -> int: ...
|
|
209
|
+
|
|
210
|
+
@height.setter
|
|
211
|
+
def height(self, arg: int, /) -> None: ...
|
|
212
|
+
|
|
213
|
+
@property
|
|
214
|
+
def bitrate(self) -> int: ...
|
|
215
|
+
|
|
216
|
+
@bitrate.setter
|
|
217
|
+
def bitrate(self, arg: int, /) -> None: ...
|
|
218
|
+
|
|
219
|
+
@property
|
|
220
|
+
def fps(self) -> int: ...
|
|
221
|
+
|
|
222
|
+
@fps.setter
|
|
223
|
+
def fps(self, arg: int, /) -> None: ...
|
|
224
|
+
|
|
225
|
+
def create_openh264_video_encoder(openh264: str) -> VideoEncoder: ...
|
|
226
|
+
|
|
227
|
+
def create_videotoolbox_video_encoder() -> VideoEncoder: ...
|
|
228
|
+
|
|
229
|
+
def create_aom_video_encoder() -> VideoEncoder: ...
|
|
230
|
+
|
|
231
|
+
class VideoDecoder:
|
|
232
|
+
def init(self, arg: VideoDecoder.Settings, /) -> bool: ...
|
|
233
|
+
|
|
234
|
+
def release(self) -> None: ...
|
|
235
|
+
|
|
236
|
+
def decode(self, arg: EncodedImage, /) -> None: ...
|
|
237
|
+
|
|
238
|
+
def set_on_decode(self, arg: Callable[[VideoFrame], None], /) -> None: ...
|
|
239
|
+
|
|
240
|
+
class Settings:
|
|
241
|
+
def __init__(self) -> None: ...
|
|
242
|
+
|
|
243
|
+
@property
|
|
244
|
+
def codec_type(self) -> VideoCodecType: ...
|
|
245
|
+
|
|
246
|
+
@codec_type.setter
|
|
247
|
+
def codec_type(self, arg: VideoCodecType, /) -> None: ...
|
|
248
|
+
|
|
249
|
+
def create_openh264_video_decoder(openh264: str) -> VideoDecoder: ...
|
|
250
|
+
|
|
251
|
+
def create_aom_video_decoder() -> VideoDecoder: ...
|
|
252
|
+
|
|
253
|
+
class AudioCodecType(enum.Enum):
|
|
254
|
+
OPUS = 0
|
|
255
|
+
|
|
256
|
+
class AudioFrame:
|
|
257
|
+
def __init__(self) -> None: ...
|
|
258
|
+
|
|
259
|
+
@property
|
|
260
|
+
def sample_rate(self) -> int: ...
|
|
261
|
+
|
|
262
|
+
@sample_rate.setter
|
|
263
|
+
def sample_rate(self, arg: int, /) -> None: ...
|
|
264
|
+
|
|
265
|
+
@property
|
|
266
|
+
def pcm(self) -> Annotated[ArrayLike, dict(dtype='float32', shape=(None, None), order='C')]: ...
|
|
267
|
+
|
|
268
|
+
@pcm.setter
|
|
269
|
+
def pcm(self, arg: Annotated[ArrayLike, dict(dtype='float32', shape=(None, None), order='C')], /) -> None: ...
|
|
270
|
+
|
|
271
|
+
@property
|
|
272
|
+
def timestamp(self) -> datetime.timedelta: ...
|
|
273
|
+
|
|
274
|
+
@timestamp.setter
|
|
275
|
+
def timestamp(self, arg: datetime.timedelta | float, /) -> None: ...
|
|
276
|
+
|
|
277
|
+
def channels(self) -> int: ...
|
|
278
|
+
|
|
279
|
+
def samples(self) -> int: ...
|
|
280
|
+
|
|
281
|
+
class EncodedAudio:
|
|
282
|
+
def __init__(self) -> None: ...
|
|
283
|
+
|
|
284
|
+
@property
|
|
285
|
+
def data(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')]: ...
|
|
286
|
+
|
|
287
|
+
@data.setter
|
|
288
|
+
def data(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')], /) -> None: ...
|
|
289
|
+
|
|
290
|
+
@property
|
|
291
|
+
def timestamp(self) -> datetime.timedelta: ...
|
|
292
|
+
|
|
293
|
+
@timestamp.setter
|
|
294
|
+
def timestamp(self, arg: datetime.timedelta | float, /) -> None: ...
|
|
295
|
+
|
|
296
|
+
class AudioEncoder:
|
|
297
|
+
def init(self, arg: AudioEncoder.Settings, /) -> bool: ...
|
|
298
|
+
|
|
299
|
+
def release(self) -> None: ...
|
|
300
|
+
|
|
301
|
+
def encode(self, arg: AudioFrame, /) -> None: ...
|
|
302
|
+
|
|
303
|
+
def set_on_encode(self, arg: Callable[[EncodedAudio], None], /) -> None: ...
|
|
304
|
+
|
|
305
|
+
class Settings:
|
|
306
|
+
def __init__(self) -> None: ...
|
|
307
|
+
|
|
308
|
+
@property
|
|
309
|
+
def codec_type(self) -> AudioCodecType: ...
|
|
310
|
+
|
|
311
|
+
@codec_type.setter
|
|
312
|
+
def codec_type(self, arg: AudioCodecType, /) -> None: ...
|
|
313
|
+
|
|
314
|
+
@property
|
|
315
|
+
def sample_rate(self) -> int: ...
|
|
316
|
+
|
|
317
|
+
@sample_rate.setter
|
|
318
|
+
def sample_rate(self, arg: int, /) -> None: ...
|
|
319
|
+
|
|
320
|
+
@property
|
|
321
|
+
def channels(self) -> int: ...
|
|
322
|
+
|
|
323
|
+
@channels.setter
|
|
324
|
+
def channels(self, arg: int, /) -> None: ...
|
|
325
|
+
|
|
326
|
+
@property
|
|
327
|
+
def bitrate(self) -> int: ...
|
|
328
|
+
|
|
329
|
+
@bitrate.setter
|
|
330
|
+
def bitrate(self, arg: int, /) -> None: ...
|
|
331
|
+
|
|
332
|
+
@property
|
|
333
|
+
def frame_duration_ms(self) -> int: ...
|
|
334
|
+
|
|
335
|
+
@frame_duration_ms.setter
|
|
336
|
+
def frame_duration_ms(self, arg: int, /) -> None: ...
|
|
337
|
+
|
|
338
|
+
@property
|
|
339
|
+
def opus_inband_fec(self) -> int: ...
|
|
340
|
+
|
|
341
|
+
@opus_inband_fec.setter
|
|
342
|
+
def opus_inband_fec(self, arg: int, /) -> None: ...
|
|
343
|
+
|
|
344
|
+
def create_opus_audio_encoder() -> AudioEncoder: ...
|
|
345
|
+
|
|
346
|
+
class AudioDecoder:
|
|
347
|
+
def init(self, arg: AudioDecoder.Settings, /) -> bool: ...
|
|
348
|
+
|
|
349
|
+
def release(self) -> None: ...
|
|
350
|
+
|
|
351
|
+
def decode(self, arg: EncodedAudio, /) -> None: ...
|
|
352
|
+
|
|
353
|
+
def set_on_decode(self, arg: Callable[[AudioFrame], None], /) -> None: ...
|
|
354
|
+
|
|
355
|
+
class Settings:
|
|
356
|
+
def __init__(self) -> None: ...
|
|
357
|
+
|
|
358
|
+
@property
|
|
359
|
+
def codec_type(self) -> AudioCodecType: ...
|
|
360
|
+
|
|
361
|
+
@codec_type.setter
|
|
362
|
+
def codec_type(self, arg: AudioCodecType, /) -> None: ...
|
|
363
|
+
|
|
364
|
+
@property
|
|
365
|
+
def sample_rate(self) -> int: ...
|
|
366
|
+
|
|
367
|
+
@sample_rate.setter
|
|
368
|
+
def sample_rate(self, arg: int, /) -> None: ...
|
|
369
|
+
|
|
370
|
+
@property
|
|
371
|
+
def channels(self) -> int: ...
|
|
372
|
+
|
|
373
|
+
@channels.setter
|
|
374
|
+
def channels(self, arg: int, /) -> None: ...
|
|
375
|
+
|
|
376
|
+
def create_opus_audio_decoder() -> AudioDecoder: ...
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from ..libdatachannel_ext.libyuv import * # noqa: F401,F403
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import enum
|
|
2
|
+
|
|
3
|
+
from numpy.typing import ArrayLike
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class FilterMode(enum.Enum):
|
|
7
|
+
NONE = 0
|
|
8
|
+
|
|
9
|
+
Linear = 1
|
|
10
|
+
|
|
11
|
+
Bilinear = 2
|
|
12
|
+
|
|
13
|
+
Box = 3
|
|
14
|
+
|
|
15
|
+
class FourCC(enum.Enum):
|
|
16
|
+
I420 = 808596553
|
|
17
|
+
|
|
18
|
+
I422 = 842150985
|
|
19
|
+
|
|
20
|
+
I444 = 875836489
|
|
21
|
+
|
|
22
|
+
I400 = 808465481
|
|
23
|
+
|
|
24
|
+
NV21 = 825382478
|
|
25
|
+
|
|
26
|
+
NV12 = 842094158
|
|
27
|
+
|
|
28
|
+
YUY2 = 844715353
|
|
29
|
+
|
|
30
|
+
UYVY = 1498831189
|
|
31
|
+
|
|
32
|
+
I010 = 808529993
|
|
33
|
+
|
|
34
|
+
I210 = 808530505
|
|
35
|
+
|
|
36
|
+
M420 = 808596557
|
|
37
|
+
|
|
38
|
+
ARGB = 1111970369
|
|
39
|
+
|
|
40
|
+
BGRA = 1095911234
|
|
41
|
+
|
|
42
|
+
ABGR = 1380401729
|
|
43
|
+
|
|
44
|
+
AR30 = 808669761
|
|
45
|
+
|
|
46
|
+
AB30 = 808665665
|
|
47
|
+
|
|
48
|
+
AR64 = 875975233
|
|
49
|
+
|
|
50
|
+
AB64 = 875971137
|
|
51
|
+
|
|
52
|
+
24BG = 1195521074
|
|
53
|
+
|
|
54
|
+
RAW = 544694642
|
|
55
|
+
|
|
56
|
+
RGBA = 1094862674
|
|
57
|
+
|
|
58
|
+
RGBP = 1346520914
|
|
59
|
+
|
|
60
|
+
RGBO = 1329743698
|
|
61
|
+
|
|
62
|
+
R444 = 875836498
|
|
63
|
+
|
|
64
|
+
MJPG = 1196444237
|
|
65
|
+
|
|
66
|
+
YV12 = 842094169
|
|
67
|
+
|
|
68
|
+
YV16 = 909203033
|
|
69
|
+
|
|
70
|
+
YV24 = 875714137
|
|
71
|
+
|
|
72
|
+
YU12 = 842093913
|
|
73
|
+
|
|
74
|
+
J420 = 808596554
|
|
75
|
+
|
|
76
|
+
J422 = 842150986
|
|
77
|
+
|
|
78
|
+
J444 = 875836490
|
|
79
|
+
|
|
80
|
+
J400 = 808465482
|
|
81
|
+
|
|
82
|
+
F420 = 808596550
|
|
83
|
+
|
|
84
|
+
F422 = 842150982
|
|
85
|
+
|
|
86
|
+
F444 = 875836486
|
|
87
|
+
|
|
88
|
+
H420 = 808596552
|
|
89
|
+
|
|
90
|
+
H422 = 842150984
|
|
91
|
+
|
|
92
|
+
H444 = 875836488
|
|
93
|
+
|
|
94
|
+
U420 = 808596565
|
|
95
|
+
|
|
96
|
+
U422 = 842150997
|
|
97
|
+
|
|
98
|
+
U444 = 875836501
|
|
99
|
+
|
|
100
|
+
F010 = 808529990
|
|
101
|
+
|
|
102
|
+
H010 = 808529992
|
|
103
|
+
|
|
104
|
+
U010 = 808530005
|
|
105
|
+
|
|
106
|
+
F210 = 808530502
|
|
107
|
+
|
|
108
|
+
H210 = 808530504
|
|
109
|
+
|
|
110
|
+
U210 = 808530517
|
|
111
|
+
|
|
112
|
+
P010 = 808530000
|
|
113
|
+
|
|
114
|
+
P210 = 808530512
|
|
115
|
+
|
|
116
|
+
IYUV = 1448433993
|
|
117
|
+
|
|
118
|
+
YU16 = 909202777
|
|
119
|
+
|
|
120
|
+
YU24 = 875713881
|
|
121
|
+
|
|
122
|
+
YUYV = 1448695129
|
|
123
|
+
|
|
124
|
+
YUVS = 1937143161
|
|
125
|
+
|
|
126
|
+
HDYC = 1129923656
|
|
127
|
+
|
|
128
|
+
2VUY = 2037741106
|
|
129
|
+
|
|
130
|
+
JPEG = 1195724874
|
|
131
|
+
|
|
132
|
+
DMB1 = 828534116
|
|
133
|
+
|
|
134
|
+
BA81 = 825770306
|
|
135
|
+
|
|
136
|
+
RGB3 = 859981650
|
|
137
|
+
|
|
138
|
+
BGR3 = 861030210
|
|
139
|
+
|
|
140
|
+
CM32 = 536870912
|
|
141
|
+
|
|
142
|
+
CM24 = 402653184
|
|
143
|
+
|
|
144
|
+
L555 = 892679500
|
|
145
|
+
|
|
146
|
+
L565 = 892745036
|
|
147
|
+
|
|
148
|
+
5551 = 825570613
|
|
149
|
+
|
|
150
|
+
I411 = 825308233
|
|
151
|
+
|
|
152
|
+
Q420 = 808596561
|
|
153
|
+
|
|
154
|
+
RGGB = 1111967570
|
|
155
|
+
|
|
156
|
+
BGGR = 1380403010
|
|
157
|
+
|
|
158
|
+
GRBG = 1195528775
|
|
159
|
+
|
|
160
|
+
GBRG = 1196573255
|
|
161
|
+
|
|
162
|
+
H264 = 875967048
|
|
163
|
+
|
|
164
|
+
ANY = -1
|
|
165
|
+
|
|
166
|
+
I420: FourCC = FourCC.I420
|
|
167
|
+
|
|
168
|
+
I422: FourCC = FourCC.I422
|
|
169
|
+
|
|
170
|
+
I444: FourCC = FourCC.I444
|
|
171
|
+
|
|
172
|
+
I400: FourCC = FourCC.I400
|
|
173
|
+
|
|
174
|
+
NV21: FourCC = FourCC.NV21
|
|
175
|
+
|
|
176
|
+
NV12: FourCC = FourCC.NV12
|
|
177
|
+
|
|
178
|
+
YUY2: FourCC = FourCC.YUY2
|
|
179
|
+
|
|
180
|
+
UYVY: FourCC = FourCC.UYVY
|
|
181
|
+
|
|
182
|
+
I010: FourCC = FourCC.I010
|
|
183
|
+
|
|
184
|
+
I210: FourCC = FourCC.I210
|
|
185
|
+
|
|
186
|
+
M420: FourCC = FourCC.M420
|
|
187
|
+
|
|
188
|
+
ARGB: FourCC = FourCC.ARGB
|
|
189
|
+
|
|
190
|
+
BGRA: FourCC = FourCC.BGRA
|
|
191
|
+
|
|
192
|
+
ABGR: FourCC = FourCC.ABGR
|
|
193
|
+
|
|
194
|
+
AR30: FourCC = FourCC.AR30
|
|
195
|
+
|
|
196
|
+
AB30: FourCC = FourCC.AB30
|
|
197
|
+
|
|
198
|
+
AR64: FourCC = FourCC.AR64
|
|
199
|
+
|
|
200
|
+
AB64: FourCC = FourCC.AB64
|
|
201
|
+
|
|
202
|
+
24BG: FourCC = FourCC.24BG
|
|
203
|
+
|
|
204
|
+
RAW: FourCC = FourCC.RAW
|
|
205
|
+
|
|
206
|
+
RGBA: FourCC = FourCC.RGBA
|
|
207
|
+
|
|
208
|
+
RGBP: FourCC = FourCC.RGBP
|
|
209
|
+
|
|
210
|
+
RGBO: FourCC = FourCC.RGBO
|
|
211
|
+
|
|
212
|
+
R444: FourCC = FourCC.R444
|
|
213
|
+
|
|
214
|
+
MJPG: FourCC = FourCC.MJPG
|
|
215
|
+
|
|
216
|
+
YV12: FourCC = FourCC.YV12
|
|
217
|
+
|
|
218
|
+
YV16: FourCC = FourCC.YV16
|
|
219
|
+
|
|
220
|
+
YV24: FourCC = FourCC.YV24
|
|
221
|
+
|
|
222
|
+
YU12: FourCC = FourCC.YU12
|
|
223
|
+
|
|
224
|
+
J420: FourCC = FourCC.J420
|
|
225
|
+
|
|
226
|
+
J422: FourCC = FourCC.J422
|
|
227
|
+
|
|
228
|
+
J444: FourCC = FourCC.J444
|
|
229
|
+
|
|
230
|
+
J400: FourCC = FourCC.J400
|
|
231
|
+
|
|
232
|
+
F420: FourCC = FourCC.F420
|
|
233
|
+
|
|
234
|
+
F422: FourCC = FourCC.F422
|
|
235
|
+
|
|
236
|
+
F444: FourCC = FourCC.F444
|
|
237
|
+
|
|
238
|
+
H420: FourCC = FourCC.H420
|
|
239
|
+
|
|
240
|
+
H422: FourCC = FourCC.H422
|
|
241
|
+
|
|
242
|
+
H444: FourCC = FourCC.H444
|
|
243
|
+
|
|
244
|
+
U420: FourCC = FourCC.U420
|
|
245
|
+
|
|
246
|
+
U422: FourCC = FourCC.U422
|
|
247
|
+
|
|
248
|
+
U444: FourCC = FourCC.U444
|
|
249
|
+
|
|
250
|
+
F010: FourCC = FourCC.F010
|
|
251
|
+
|
|
252
|
+
H010: FourCC = FourCC.H010
|
|
253
|
+
|
|
254
|
+
U010: FourCC = FourCC.U010
|
|
255
|
+
|
|
256
|
+
F210: FourCC = FourCC.F210
|
|
257
|
+
|
|
258
|
+
H210: FourCC = FourCC.H210
|
|
259
|
+
|
|
260
|
+
U210: FourCC = FourCC.U210
|
|
261
|
+
|
|
262
|
+
P010: FourCC = FourCC.P010
|
|
263
|
+
|
|
264
|
+
P210: FourCC = FourCC.P210
|
|
265
|
+
|
|
266
|
+
IYUV: FourCC = FourCC.IYUV
|
|
267
|
+
|
|
268
|
+
YU16: FourCC = FourCC.YU16
|
|
269
|
+
|
|
270
|
+
YU24: FourCC = FourCC.YU24
|
|
271
|
+
|
|
272
|
+
YUYV: FourCC = FourCC.YUYV
|
|
273
|
+
|
|
274
|
+
YUVS: FourCC = FourCC.YUVS
|
|
275
|
+
|
|
276
|
+
HDYC: FourCC = FourCC.HDYC
|
|
277
|
+
|
|
278
|
+
2VUY: FourCC = FourCC.2VUY
|
|
279
|
+
|
|
280
|
+
JPEG: FourCC = FourCC.JPEG
|
|
281
|
+
|
|
282
|
+
DMB1: FourCC = FourCC.DMB1
|
|
283
|
+
|
|
284
|
+
BA81: FourCC = FourCC.BA81
|
|
285
|
+
|
|
286
|
+
RGB3: FourCC = FourCC.RGB3
|
|
287
|
+
|
|
288
|
+
BGR3: FourCC = FourCC.BGR3
|
|
289
|
+
|
|
290
|
+
CM32: FourCC = FourCC.CM32
|
|
291
|
+
|
|
292
|
+
CM24: FourCC = FourCC.CM24
|
|
293
|
+
|
|
294
|
+
L555: FourCC = FourCC.L555
|
|
295
|
+
|
|
296
|
+
L565: FourCC = FourCC.L565
|
|
297
|
+
|
|
298
|
+
5551: FourCC = FourCC.5551
|
|
299
|
+
|
|
300
|
+
I411: FourCC = FourCC.I411
|
|
301
|
+
|
|
302
|
+
Q420: FourCC = FourCC.Q420
|
|
303
|
+
|
|
304
|
+
RGGB: FourCC = FourCC.RGGB
|
|
305
|
+
|
|
306
|
+
BGGR: FourCC = FourCC.BGGR
|
|
307
|
+
|
|
308
|
+
GRBG: FourCC = FourCC.GRBG
|
|
309
|
+
|
|
310
|
+
GBRG: FourCC = FourCC.GBRG
|
|
311
|
+
|
|
312
|
+
H264: FourCC = FourCC.H264
|
|
313
|
+
|
|
314
|
+
ANY: FourCC = FourCC.ANY
|
|
315
|
+
|
|
316
|
+
class RotationMode(enum.Enum):
|
|
317
|
+
Rotate0 = 0
|
|
318
|
+
|
|
319
|
+
Rotate90 = 90
|
|
320
|
+
|
|
321
|
+
Rotate180 = 180
|
|
322
|
+
|
|
323
|
+
Rotate270 = 270
|
|
324
|
+
|
|
325
|
+
Rotate0: RotationMode = RotationMode.Rotate0
|
|
326
|
+
|
|
327
|
+
Rotate90: RotationMode = RotationMode.Rotate90
|
|
328
|
+
|
|
329
|
+
Rotate180: RotationMode = RotationMode.Rotate180
|
|
330
|
+
|
|
331
|
+
Rotate270: RotationMode = RotationMode.Rotate270
|
|
332
|
+
|
|
333
|
+
def nv12_scale(src_y: ArrayLike, src_uv: ArrayLike, src_stride_y: int, src_stride_uv: int, src_width: int, src_height: int, dst_y: ArrayLike, dst_uv: ArrayLike, dst_stride_y: int, dst_stride_uv: int, dst_width: int, dst_height: int, filtering: FilterMode) -> int: ...
|
|
334
|
+
|
|
335
|
+
def i420_scale(src_y: ArrayLike, src_u: ArrayLike, src_v: ArrayLike, src_stride_y: int, src_stride_u: int, src_stride_v: int, src_width: int, src_height: int, dst_y: ArrayLike, dst_u: ArrayLike, dst_v: ArrayLike, dst_stride_y: int, dst_stride_u: int, dst_stride_v: int, dst_width: int, dst_height: int, filtering: FilterMode) -> int: ...
|
|
336
|
+
|
|
337
|
+
def convert_to_i420(sample: ArrayLike, sample_size: int, dst_y: ArrayLike, dst_stride_y: int, dst_u: ArrayLike, dst_stride_u: int, dst_v: ArrayLike, dst_stride_v: int, crop_x: int, crop_y: int, src_width: int, src_height: int, crop_width: int, crop_height: int, rotation: RotationMode, fourcc: FourCC) -> int: ...
|
|
338
|
+
|
|
339
|
+
def nv12_to_i420(src_y: ArrayLike, src_uv: ArrayLike, src_stride_y: int, src_stride_uv: int, dst_y: ArrayLike, dst_u: ArrayLike, dst_v: ArrayLike, dst_stride_y: int, dst_stride_u: int, dst_stride_v: int, width: int, height: int) -> int: ...
|
|
340
|
+
|
|
341
|
+
def i420_to_nv12(src_y: ArrayLike, src_u: ArrayLike, src_v: ArrayLike, src_stride_y: int, src_stride_u: int, src_stride_v: int, dst_y: ArrayLike, dst_uv: ArrayLike, dst_stride_y: int, dst_stride_uv: int, width: int, height: int) -> int: ...
|
|
342
|
+
|
|
343
|
+
def rgb24_to_i420(src_rgb24: ArrayLike, src_stride_rgb24: int, dst_y: ArrayLike, dst_u: ArrayLike, dst_v: ArrayLike, dst_stride_y: int, dst_stride_u: int, dst_stride_v: int, width: int, height: int) -> int: ...
|
|
344
|
+
|
|
345
|
+
def i420_to_rgb24(src_y: ArrayLike, src_u: ArrayLike, src_v: ArrayLike, src_stride_y: int, src_stride_u: int, src_stride_v: int, dst_rgb24: ArrayLike, dst_stride_rgb24: int, width: int, height: int) -> int: ...
|
|
@@ -11,6 +11,10 @@ src/libdatachannel/__init__.py
|
|
|
11
11
|
src/libdatachannel/libdatachannel_ext.cpython-313-darwin.so
|
|
12
12
|
src/libdatachannel/libdatachannel_ext.pyi
|
|
13
13
|
src/libdatachannel/py.typed
|
|
14
|
+
src/libdatachannel/codec/__init__.py
|
|
15
|
+
src/libdatachannel/codec/__init__.pyi
|
|
16
|
+
src/libdatachannel/libyuv/__init__.py
|
|
17
|
+
src/libdatachannel/libyuv/__init__.pyi
|
|
14
18
|
src/libdatachannel_py.egg-info/PKG-INFO
|
|
15
19
|
src/libdatachannel_py.egg-info/SOURCES.txt
|
|
16
20
|
src/libdatachannel_py.egg-info/dependency_links.txt
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2025.1.0.dev9
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/src/libdatachannel/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/src/libdatachannel/py.typed
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_audio_codec.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_candidate.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_configuration.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_description.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_frameinfo.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_h265nalunit.py
RENAMED
|
File without changes
|
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_mediahandler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_peerconnection.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_prop_audio_codec.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_reliability.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_rtppacketizer.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_video_codec.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_websocket.py
RENAMED
|
File without changes
|
{libdatachannel_py-2025.1.0.dev9 → libdatachannel_py-2025.1.0.dev11}/tests/test_websocketserver.py
RENAMED
|
File without changes
|