libdatachannel-py 2025.1.0.dev7__tar.gz → 2025.1.0.dev9__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.dev7/src/libdatachannel_py.egg-info → libdatachannel_py-2025.1.0.dev9}/PKG-INFO +2 -1
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/README.md +1 -0
- libdatachannel_py-2025.1.0.dev9/VERSION +1 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/buildbase.py +123 -2
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/pyproject.toml +10 -5
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/run.py +79 -0
- libdatachannel_py-2025.1.0.dev9/src/libdatachannel/libdatachannel_ext.cpython-313-darwin.so +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/src/libdatachannel/libdatachannel_ext.pyi +2 -210
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9/src/libdatachannel_py.egg-info}/PKG-INFO +2 -1
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/src/libdatachannel_py.egg-info/SOURCES.txt +3 -0
- libdatachannel_py-2025.1.0.dev9/tests/test_audio_codec.py +126 -0
- libdatachannel_py-2025.1.0.dev9/tests/test_libyuv.py +200 -0
- libdatachannel_py-2025.1.0.dev9/tests/test_prop_audio_codec.py +97 -0
- libdatachannel_py-2025.1.0.dev9/tests/test_video_codec.py +513 -0
- libdatachannel_py-2025.1.0.dev7/VERSION +0 -1
- libdatachannel_py-2025.1.0.dev7/src/libdatachannel/libdatachannel_ext.cpython-313-darwin.so +0 -0
- libdatachannel_py-2025.1.0.dev7/tests/test_video_codec.py +0 -170
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/LICENSE +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/MANIFEST.in +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/pypath.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/setup.cfg +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/setup.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/src/libdatachannel/__init__.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/src/libdatachannel/py.typed +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/src/libdatachannel_py.egg-info/dependency_links.txt +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/src/libdatachannel_py.egg-info/top_level.txt +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_candidate.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_configuration.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_description.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_frameinfo.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_h265nalunit.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_mediahandler.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_message.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_nalunit.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_packetizationconfig.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_peerconnection.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_reliability.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_rtppacketizer.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_websocket.py +0 -0
- {libdatachannel_py-2025.1.0.dev7 → libdatachannel_py-2025.1.0.dev9}/tests/test_websocketserver.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: libdatachannel-py
|
|
3
|
-
Version: 2025.1.0.
|
|
3
|
+
Version: 2025.1.0.dev9
|
|
4
4
|
Summary: libdatachannel-py is a Python binding for libdatachannel.
|
|
5
5
|
Home-page: https://github.com/shiguredo/libdatachannel-py
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -39,6 +39,7 @@ Please read <https://github.com/shiguredo/oss/blob/master/README.en.md> before u
|
|
|
39
39
|
|
|
40
40
|
- [nanobind](https://github.com/wjakob/nanobind) を利用しています
|
|
41
41
|
- [Opus](https://opus-codec.org/) を利用した Opus ソフトウェアエンコード/デコードに対応しています
|
|
42
|
+
- [libaom](https://aomedia.googlesource.com/aom/) を利用した AV1 ソフトウェアエンコード/デコードに対応しています
|
|
42
43
|
- [OpenH264](https://www.openh264.org/) を利用した H.264 ソフトウェアエンコード/デコードに対応しています
|
|
43
44
|
- [Apple Video Toolbox](https://developer.apple.com/documentation/videotoolbox) を利用した H.264/H.265 ハードウェアエンコード/デコードに対応しています
|
|
44
45
|
|
|
@@ -23,6 +23,7 @@ Please read <https://github.com/shiguredo/oss/blob/master/README.en.md> before u
|
|
|
23
23
|
|
|
24
24
|
- [nanobind](https://github.com/wjakob/nanobind) を利用しています
|
|
25
25
|
- [Opus](https://opus-codec.org/) を利用した Opus ソフトウェアエンコード/デコードに対応しています
|
|
26
|
+
- [libaom](https://aomedia.googlesource.com/aom/) を利用した AV1 ソフトウェアエンコード/デコードに対応しています
|
|
26
27
|
- [OpenH264](https://www.openh264.org/) を利用した H.264 ソフトウェアエンコード/デコードに対応しています
|
|
27
28
|
- [Apple Video Toolbox](https://developer.apple.com/documentation/videotoolbox) を利用した H.264/H.265 ハードウェアエンコード/デコードに対応しています
|
|
28
29
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2025.1.0.dev9
|
|
@@ -702,8 +702,8 @@ def build_and_install_boost(
|
|
|
702
702
|
):
|
|
703
703
|
version_underscore = version.replace(".", "_")
|
|
704
704
|
archive = download(
|
|
705
|
-
#
|
|
706
|
-
f"https://
|
|
705
|
+
# 公式サイトに負荷をかけないための時雨堂によるミラー
|
|
706
|
+
f"https://oss-mirrors.shiguredo.jp/boost_{version_underscore}.tar.gz",
|
|
707
707
|
# Boost 公式のミラー
|
|
708
708
|
# f"https://archives.boost.io/release/{version}/source/boost_{version_underscore}.tar.gz",
|
|
709
709
|
source_dir,
|
|
@@ -1748,6 +1748,7 @@ def install_opus(
|
|
|
1748
1748
|
"cmake",
|
|
1749
1749
|
f"-DCMAKE_INSTALL_PREFIX={cmake_path(opus_install_dir)}",
|
|
1750
1750
|
f"-DCMAKE_BUILD_TYPE={configuration}",
|
|
1751
|
+
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON",
|
|
1751
1752
|
"-DOPUS_BUILD_SHARED_LIBRARY=OFF",
|
|
1752
1753
|
"-DOPUS_BUILD_TESTING=OFF",
|
|
1753
1754
|
"-DOPUS_BUILD_PROGRAMS=OFF",
|
|
@@ -1841,6 +1842,126 @@ def install_mbedtls(version, source_dir, build_dir, install_dir, debug, cmake_ar
|
|
|
1841
1842
|
cmd(["cmake", "--install", os.path.join(build_dir, "mbedtls")])
|
|
1842
1843
|
|
|
1843
1844
|
|
|
1845
|
+
@versioned
|
|
1846
|
+
def install_libjpeg_turbo(version, source_dir, build_dir, install_dir, configuration, cmake_args):
|
|
1847
|
+
libjpeg_source_dir = os.path.join(source_dir, "libjpeg-turbo")
|
|
1848
|
+
libjpeg_build_dir = os.path.join(build_dir, "libjpeg-turbo")
|
|
1849
|
+
libjpeg_install_dir = os.path.join(install_dir, "libjpeg-turbo")
|
|
1850
|
+
rm_rf(libjpeg_source_dir)
|
|
1851
|
+
rm_rf(libjpeg_build_dir)
|
|
1852
|
+
rm_rf(libjpeg_install_dir)
|
|
1853
|
+
git_clone_shallow(
|
|
1854
|
+
"https://github.com/libjpeg-turbo/libjpeg-turbo.git",
|
|
1855
|
+
version,
|
|
1856
|
+
libjpeg_source_dir,
|
|
1857
|
+
)
|
|
1858
|
+
mkdir_p(libjpeg_build_dir)
|
|
1859
|
+
with cd(libjpeg_build_dir):
|
|
1860
|
+
cmd(
|
|
1861
|
+
[
|
|
1862
|
+
"cmake",
|
|
1863
|
+
libjpeg_source_dir,
|
|
1864
|
+
f"-DCMAKE_INSTALL_PREFIX={libjpeg_install_dir}",
|
|
1865
|
+
f"-DCMAKE_BUILD_TYPE={configuration}",
|
|
1866
|
+
"-DENABLE_SHARED=FALSE",
|
|
1867
|
+
"-DENABLE_STATIC=TRUE",
|
|
1868
|
+
"-DCMAKE_BUILD_TYPE=Release",
|
|
1869
|
+
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON",
|
|
1870
|
+
]
|
|
1871
|
+
+ cmake_args
|
|
1872
|
+
)
|
|
1873
|
+
cmd(
|
|
1874
|
+
[
|
|
1875
|
+
"cmake",
|
|
1876
|
+
"--build",
|
|
1877
|
+
libjpeg_build_dir,
|
|
1878
|
+
f"-j{multiprocessing.cpu_count()}",
|
|
1879
|
+
"--config",
|
|
1880
|
+
"Release",
|
|
1881
|
+
]
|
|
1882
|
+
)
|
|
1883
|
+
cmd(["cmake", "--install", libjpeg_build_dir])
|
|
1884
|
+
|
|
1885
|
+
|
|
1886
|
+
@versioned
|
|
1887
|
+
def install_libyuv(
|
|
1888
|
+
version, source_dir, build_dir, install_dir, libjpeg_turbo_dir, configuration, cmake_args
|
|
1889
|
+
):
|
|
1890
|
+
libyuv_source_dir = os.path.join(source_dir, "libyuv")
|
|
1891
|
+
libyuv_build_dir = os.path.join(build_dir, "libyuv")
|
|
1892
|
+
libyuv_install_dir = os.path.join(install_dir, "libyuv")
|
|
1893
|
+
rm_rf(libyuv_source_dir)
|
|
1894
|
+
rm_rf(libyuv_build_dir)
|
|
1895
|
+
rm_rf(libyuv_install_dir)
|
|
1896
|
+
git_clone_shallow(
|
|
1897
|
+
"https://chromium.googlesource.com/libyuv/libyuv",
|
|
1898
|
+
version,
|
|
1899
|
+
libyuv_source_dir,
|
|
1900
|
+
)
|
|
1901
|
+
mkdir_p(libyuv_build_dir)
|
|
1902
|
+
with cd(libyuv_build_dir):
|
|
1903
|
+
cmd(
|
|
1904
|
+
[
|
|
1905
|
+
"cmake",
|
|
1906
|
+
libyuv_source_dir,
|
|
1907
|
+
f"-DCMAKE_INSTALL_PREFIX={cmake_path(libyuv_install_dir)}",
|
|
1908
|
+
f"-DCMAKE_BUILD_TYPE={configuration}",
|
|
1909
|
+
f"-DCMAKE_PREFIX_PATH={cmake_path(libjpeg_turbo_dir)}",
|
|
1910
|
+
*cmake_args,
|
|
1911
|
+
]
|
|
1912
|
+
)
|
|
1913
|
+
cmd(
|
|
1914
|
+
[
|
|
1915
|
+
"cmake",
|
|
1916
|
+
"--build",
|
|
1917
|
+
libyuv_build_dir,
|
|
1918
|
+
f"-j{multiprocessing.cpu_count()}",
|
|
1919
|
+
"--config",
|
|
1920
|
+
"Release",
|
|
1921
|
+
]
|
|
1922
|
+
)
|
|
1923
|
+
cmd(["cmake", "--install", libyuv_build_dir])
|
|
1924
|
+
|
|
1925
|
+
|
|
1926
|
+
@versioned
|
|
1927
|
+
def install_aom(version, source_dir, build_dir, install_dir, configuration, cmake_args):
|
|
1928
|
+
aom_source_dir = os.path.join(source_dir, "aom")
|
|
1929
|
+
aom_build_dir = os.path.join(build_dir, "aom")
|
|
1930
|
+
aom_install_dir = os.path.join(install_dir, "aom")
|
|
1931
|
+
rm_rf(aom_source_dir)
|
|
1932
|
+
rm_rf(aom_build_dir)
|
|
1933
|
+
rm_rf(aom_install_dir)
|
|
1934
|
+
git_clone_shallow(
|
|
1935
|
+
"https://aomedia.googlesource.com/aom",
|
|
1936
|
+
version,
|
|
1937
|
+
aom_source_dir,
|
|
1938
|
+
)
|
|
1939
|
+
with cd(aom_source_dir):
|
|
1940
|
+
cmd(
|
|
1941
|
+
[
|
|
1942
|
+
"cmake",
|
|
1943
|
+
"-B",
|
|
1944
|
+
aom_build_dir,
|
|
1945
|
+
f"-DCMAKE_INSTALL_PREFIX={cmake_path(aom_install_dir)}",
|
|
1946
|
+
f"-DCMAKE_BUILD_TYPE={configuration}",
|
|
1947
|
+
"-DENABLE_DOCS=OFF",
|
|
1948
|
+
"-DENABLE_TESTS=OFF",
|
|
1949
|
+
*cmake_args,
|
|
1950
|
+
]
|
|
1951
|
+
)
|
|
1952
|
+
cmd(
|
|
1953
|
+
[
|
|
1954
|
+
"cmake",
|
|
1955
|
+
"--build",
|
|
1956
|
+
aom_build_dir,
|
|
1957
|
+
f"-j{multiprocessing.cpu_count()}",
|
|
1958
|
+
"--config",
|
|
1959
|
+
"Release",
|
|
1960
|
+
]
|
|
1961
|
+
)
|
|
1962
|
+
cmd(["cmake", "--install", aom_build_dir])
|
|
1963
|
+
|
|
1964
|
+
|
|
1844
1965
|
class PlatformTarget(object):
|
|
1845
1966
|
def __init__(self, os, osver, arch, extra=None):
|
|
1846
1967
|
self.os = os
|
|
@@ -18,19 +18,24 @@ Source = "https://github.com/shiguredo/libdatachannel-py"
|
|
|
18
18
|
Discord = "https://discord.gg/shiguredo"
|
|
19
19
|
|
|
20
20
|
[build-system]
|
|
21
|
-
requires = ["setuptools
|
|
21
|
+
requires = ["setuptools>=80.9", "wheel>=0.45.1"]
|
|
22
22
|
build-backend = "setuptools.build_meta"
|
|
23
23
|
|
|
24
24
|
[dependency-groups]
|
|
25
25
|
dev = [
|
|
26
|
-
"nanobind>=2.7
|
|
27
|
-
"pytest>=8
|
|
28
|
-
"setuptools>=80.
|
|
26
|
+
"nanobind>=2.7",
|
|
27
|
+
"pytest>=8",
|
|
28
|
+
"setuptools>=80.9",
|
|
29
29
|
"build>=1.2.2.post1",
|
|
30
30
|
"wheel>=0.45.1",
|
|
31
|
-
"numpy>=2.2
|
|
31
|
+
"numpy>=2.2",
|
|
32
|
+
"ty",
|
|
33
|
+
"hypothesis>=6.132.0",
|
|
32
34
|
]
|
|
33
35
|
|
|
36
|
+
[tool.uv.workspace]
|
|
37
|
+
members = ["examples"]
|
|
38
|
+
|
|
34
39
|
[tool.ruff]
|
|
35
40
|
target-version = "py313"
|
|
36
41
|
line-length = 100
|
|
@@ -16,9 +16,13 @@ from buildbase import (
|
|
|
16
16
|
get_macos_osver,
|
|
17
17
|
get_windows_osver,
|
|
18
18
|
git_clone_shallow,
|
|
19
|
+
install_aom,
|
|
19
20
|
install_cmake,
|
|
21
|
+
install_libjpeg_turbo,
|
|
22
|
+
install_libyuv,
|
|
20
23
|
install_mbedtls,
|
|
21
24
|
install_openh264,
|
|
25
|
+
install_opus,
|
|
22
26
|
mkdir_p,
|
|
23
27
|
read_version_file,
|
|
24
28
|
)
|
|
@@ -115,6 +119,55 @@ def install_deps(
|
|
|
115
119
|
}
|
|
116
120
|
install_openh264(**install_openh264_args)
|
|
117
121
|
|
|
122
|
+
# Opus
|
|
123
|
+
install_opus_args = {
|
|
124
|
+
"version": version["OPUS_VERSION"],
|
|
125
|
+
"version_file": os.path.join(install_dir, "opus.version"),
|
|
126
|
+
"source_dir": source_dir,
|
|
127
|
+
"build_dir": build_dir,
|
|
128
|
+
"install_dir": install_dir,
|
|
129
|
+
"configuration": "Debug" if debug else "Release",
|
|
130
|
+
"cmake_args": macos_cmake_args,
|
|
131
|
+
}
|
|
132
|
+
install_opus(**install_opus_args)
|
|
133
|
+
|
|
134
|
+
# libjpeg-turbo
|
|
135
|
+
install_libjpeg_turbo_args = {
|
|
136
|
+
"version": version["LIBJPEG_TURBO_VERSION"],
|
|
137
|
+
"version_file": os.path.join(install_dir, "libjpeg-turbo.version"),
|
|
138
|
+
"source_dir": source_dir,
|
|
139
|
+
"build_dir": build_dir,
|
|
140
|
+
"install_dir": install_dir,
|
|
141
|
+
"configuration": "Debug" if debug else "Release",
|
|
142
|
+
"cmake_args": macos_cmake_args,
|
|
143
|
+
}
|
|
144
|
+
install_libjpeg_turbo(**install_libjpeg_turbo_args)
|
|
145
|
+
|
|
146
|
+
# libyuv
|
|
147
|
+
install_libyuv_args = {
|
|
148
|
+
"version": version["LIBYUV_VERSION"],
|
|
149
|
+
"version_file": os.path.join(install_dir, "libyuv.version"),
|
|
150
|
+
"source_dir": source_dir,
|
|
151
|
+
"build_dir": build_dir,
|
|
152
|
+
"install_dir": install_dir,
|
|
153
|
+
"libjpeg_turbo_dir": os.path.join(install_dir, "libjpeg-turbo"),
|
|
154
|
+
"configuration": "Debug" if debug else "Release",
|
|
155
|
+
"cmake_args": macos_cmake_args,
|
|
156
|
+
}
|
|
157
|
+
install_libyuv(**install_libyuv_args)
|
|
158
|
+
|
|
159
|
+
# AOM
|
|
160
|
+
install_aom_args = {
|
|
161
|
+
"version": version["AOM_VERSION"],
|
|
162
|
+
"version_file": os.path.join(install_dir, "aom.version"),
|
|
163
|
+
"source_dir": source_dir,
|
|
164
|
+
"build_dir": build_dir,
|
|
165
|
+
"install_dir": install_dir,
|
|
166
|
+
"configuration": "Debug" if debug else "Release",
|
|
167
|
+
"cmake_args": macos_cmake_args,
|
|
168
|
+
}
|
|
169
|
+
install_aom(**install_aom_args)
|
|
170
|
+
|
|
118
171
|
|
|
119
172
|
AVAILABLE_TARGETS = [
|
|
120
173
|
"windows_x86_64",
|
|
@@ -199,6 +252,18 @@ def main():
|
|
|
199
252
|
# OpenH264
|
|
200
253
|
cmake_args.append(f"-DOPENH264_DIR={cmake_path(os.path.join(install_dir, 'openh264'))}")
|
|
201
254
|
|
|
255
|
+
# Opus
|
|
256
|
+
cmake_args.append(f"-DOPUS_DIR={cmake_path(os.path.join(install_dir, 'opus'))}")
|
|
257
|
+
|
|
258
|
+
# Libyuv
|
|
259
|
+
cmake_args.append(
|
|
260
|
+
f"-DLIBJPEG_TURBO_DIR={cmake_path(os.path.join(install_dir, 'libjpeg-turbo'))}"
|
|
261
|
+
)
|
|
262
|
+
cmake_args.append(f"-DLIBYUV_DIR={cmake_path(os.path.join(install_dir, 'libyuv'))}")
|
|
263
|
+
|
|
264
|
+
# AOM
|
|
265
|
+
cmake_args.append(f"-DAOM_DIR={cmake_path(os.path.join(install_dir, 'aom'))}")
|
|
266
|
+
|
|
202
267
|
if platform.target.os == "macos":
|
|
203
268
|
sysroot = cmdcap(["xcrun", "--sdk", "macosx", "--show-sdk-path"])
|
|
204
269
|
cmake_args += [
|
|
@@ -261,6 +326,20 @@ def main():
|
|
|
261
326
|
os.path.join(libdatachannelpy_src_dir, file),
|
|
262
327
|
)
|
|
263
328
|
|
|
329
|
+
for file in os.listdir(os.path.join(libdatachannelpy_build_target_dir, "libyuv")):
|
|
330
|
+
if file in ("__init__.pyi",):
|
|
331
|
+
shutil.copyfile(
|
|
332
|
+
os.path.join(libdatachannelpy_build_target_dir, "libyuv", file),
|
|
333
|
+
os.path.join(libdatachannelpy_src_dir, "libyuv", file),
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
for file in os.listdir(os.path.join(libdatachannelpy_build_target_dir, "codec")):
|
|
337
|
+
if file in ("__init__.pyi",):
|
|
338
|
+
shutil.copyfile(
|
|
339
|
+
os.path.join(libdatachannelpy_build_target_dir, "codec", file),
|
|
340
|
+
os.path.join(libdatachannelpy_src_dir, "codec", file),
|
|
341
|
+
)
|
|
342
|
+
|
|
264
343
|
|
|
265
344
|
if __name__ == "__main__":
|
|
266
345
|
main()
|
|
Binary file
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from collections.abc import Callable, Sequence
|
|
2
2
|
import datetime
|
|
3
3
|
import enum
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import overload
|
|
5
5
|
|
|
6
|
-
from
|
|
6
|
+
from . import codec as codec, libyuv as libyuv
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class IceServer:
|
|
@@ -1667,211 +1667,3 @@ class WebSocketServer:
|
|
|
1667
1667
|
def port(self) -> int: ...
|
|
1668
1668
|
|
|
1669
1669
|
def on_client(self, callback: Callable[[WebSocket], None]) -> None: ...
|
|
1670
|
-
|
|
1671
|
-
class VideoCodecType(enum.Enum):
|
|
1672
|
-
H264 = 0
|
|
1673
|
-
|
|
1674
|
-
H265 = 1
|
|
1675
|
-
|
|
1676
|
-
VP8 = 2
|
|
1677
|
-
|
|
1678
|
-
VP9 = 3
|
|
1679
|
-
|
|
1680
|
-
AV1 = 4
|
|
1681
|
-
|
|
1682
|
-
class ImageFormat(enum.Enum):
|
|
1683
|
-
I420 = 0
|
|
1684
|
-
|
|
1685
|
-
NV12 = 1
|
|
1686
|
-
|
|
1687
|
-
BGR888 = 2
|
|
1688
|
-
|
|
1689
|
-
class VideoFrameBufferI420:
|
|
1690
|
-
@staticmethod
|
|
1691
|
-
def create(arg0: int, arg1: int, /) -> VideoFrameBufferI420: ...
|
|
1692
|
-
|
|
1693
|
-
@property
|
|
1694
|
-
def y(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
1695
|
-
|
|
1696
|
-
@y.setter
|
|
1697
|
-
def y(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
1698
|
-
|
|
1699
|
-
@property
|
|
1700
|
-
def u(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
1701
|
-
|
|
1702
|
-
@u.setter
|
|
1703
|
-
def u(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
1704
|
-
|
|
1705
|
-
@property
|
|
1706
|
-
def v(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
1707
|
-
|
|
1708
|
-
@v.setter
|
|
1709
|
-
def v(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
1710
|
-
|
|
1711
|
-
def width(self) -> int: ...
|
|
1712
|
-
|
|
1713
|
-
def height(self) -> int: ...
|
|
1714
|
-
|
|
1715
|
-
def stride_y(self) -> int: ...
|
|
1716
|
-
|
|
1717
|
-
def stride_u(self) -> int: ...
|
|
1718
|
-
|
|
1719
|
-
def stride_v(self) -> int: ...
|
|
1720
|
-
|
|
1721
|
-
class VideoFrameBufferNV12:
|
|
1722
|
-
@staticmethod
|
|
1723
|
-
def create(arg0: int, arg1: int, /) -> VideoFrameBufferNV12: ...
|
|
1724
|
-
|
|
1725
|
-
@property
|
|
1726
|
-
def y(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
1727
|
-
|
|
1728
|
-
@y.setter
|
|
1729
|
-
def y(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
1730
|
-
|
|
1731
|
-
@property
|
|
1732
|
-
def uv(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
|
|
1733
|
-
|
|
1734
|
-
@uv.setter
|
|
1735
|
-
def uv(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
|
|
1736
|
-
|
|
1737
|
-
def width(self) -> int: ...
|
|
1738
|
-
|
|
1739
|
-
def height(self) -> int: ...
|
|
1740
|
-
|
|
1741
|
-
def stride_y(self) -> int: ...
|
|
1742
|
-
|
|
1743
|
-
def stride_uv(self) -> int: ...
|
|
1744
|
-
|
|
1745
|
-
class VideoFrameBufferBGR888:
|
|
1746
|
-
@staticmethod
|
|
1747
|
-
def create(arg0: int, arg1: int, /) -> VideoFrameBufferBGR888: ...
|
|
1748
|
-
|
|
1749
|
-
@property
|
|
1750
|
-
def bgr(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None, 3), order='C')]: ...
|
|
1751
|
-
|
|
1752
|
-
@bgr.setter
|
|
1753
|
-
def bgr(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None, 3), order='C')], /) -> None: ...
|
|
1754
|
-
|
|
1755
|
-
def width(self) -> int: ...
|
|
1756
|
-
|
|
1757
|
-
def height(self) -> int: ...
|
|
1758
|
-
|
|
1759
|
-
def stride(self) -> int: ...
|
|
1760
|
-
|
|
1761
|
-
class VideoFrame:
|
|
1762
|
-
def __init__(self) -> None: ...
|
|
1763
|
-
|
|
1764
|
-
@property
|
|
1765
|
-
def format(self) -> ImageFormat: ...
|
|
1766
|
-
|
|
1767
|
-
@format.setter
|
|
1768
|
-
def format(self, arg: ImageFormat, /) -> None: ...
|
|
1769
|
-
|
|
1770
|
-
@property
|
|
1771
|
-
def i420_buffer(self) -> VideoFrameBufferI420: ...
|
|
1772
|
-
|
|
1773
|
-
@i420_buffer.setter
|
|
1774
|
-
def i420_buffer(self, arg: VideoFrameBufferI420, /) -> None: ...
|
|
1775
|
-
|
|
1776
|
-
@property
|
|
1777
|
-
def nv12_buffer(self) -> VideoFrameBufferNV12: ...
|
|
1778
|
-
|
|
1779
|
-
@nv12_buffer.setter
|
|
1780
|
-
def nv12_buffer(self, arg: VideoFrameBufferNV12, /) -> None: ...
|
|
1781
|
-
|
|
1782
|
-
@property
|
|
1783
|
-
def bgr888_buffer(self) -> VideoFrameBufferBGR888: ...
|
|
1784
|
-
|
|
1785
|
-
@bgr888_buffer.setter
|
|
1786
|
-
def bgr888_buffer(self, arg: VideoFrameBufferBGR888, /) -> None: ...
|
|
1787
|
-
|
|
1788
|
-
@property
|
|
1789
|
-
def timestamp(self) -> datetime.timedelta: ...
|
|
1790
|
-
|
|
1791
|
-
@timestamp.setter
|
|
1792
|
-
def timestamp(self, arg: datetime.timedelta | float, /) -> None: ...
|
|
1793
|
-
|
|
1794
|
-
@property
|
|
1795
|
-
def rid(self) -> str | None: ...
|
|
1796
|
-
|
|
1797
|
-
@rid.setter
|
|
1798
|
-
def rid(self, arg: str, /) -> None: ...
|
|
1799
|
-
|
|
1800
|
-
@property
|
|
1801
|
-
def base_width(self) -> int: ...
|
|
1802
|
-
|
|
1803
|
-
@base_width.setter
|
|
1804
|
-
def base_width(self, arg: int, /) -> None: ...
|
|
1805
|
-
|
|
1806
|
-
@property
|
|
1807
|
-
def base_height(self) -> int: ...
|
|
1808
|
-
|
|
1809
|
-
@base_height.setter
|
|
1810
|
-
def base_height(self, arg: int, /) -> None: ...
|
|
1811
|
-
|
|
1812
|
-
def width(self) -> int: ...
|
|
1813
|
-
|
|
1814
|
-
def height(self) -> int: ...
|
|
1815
|
-
|
|
1816
|
-
class EncodedImage:
|
|
1817
|
-
def __init__(self) -> None: ...
|
|
1818
|
-
|
|
1819
|
-
@property
|
|
1820
|
-
def data(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')]: ...
|
|
1821
|
-
|
|
1822
|
-
@data.setter
|
|
1823
|
-
def data(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')], /) -> None: ...
|
|
1824
|
-
|
|
1825
|
-
@property
|
|
1826
|
-
def timestamp(self) -> datetime.timedelta: ...
|
|
1827
|
-
|
|
1828
|
-
@timestamp.setter
|
|
1829
|
-
def timestamp(self, arg: datetime.timedelta | float, /) -> None: ...
|
|
1830
|
-
|
|
1831
|
-
@property
|
|
1832
|
-
def rid(self) -> str | None: ...
|
|
1833
|
-
|
|
1834
|
-
@rid.setter
|
|
1835
|
-
def rid(self, arg: str, /) -> None: ...
|
|
1836
|
-
|
|
1837
|
-
class VideoEncoder:
|
|
1838
|
-
def init(self, arg: VideoEncoder.Settings, /) -> bool: ...
|
|
1839
|
-
|
|
1840
|
-
def release(self) -> None: ...
|
|
1841
|
-
|
|
1842
|
-
def encode(self, arg: VideoFrame, /) -> None: ...
|
|
1843
|
-
|
|
1844
|
-
def force_intra_next_frame(self) -> None: ...
|
|
1845
|
-
|
|
1846
|
-
def set_on_encoded(self, arg: Callable[[EncodedImage], None], /) -> None: ...
|
|
1847
|
-
|
|
1848
|
-
class Settings:
|
|
1849
|
-
def __init__(self) -> None: ...
|
|
1850
|
-
|
|
1851
|
-
@property
|
|
1852
|
-
def codec_type(self) -> VideoCodecType: ...
|
|
1853
|
-
|
|
1854
|
-
@codec_type.setter
|
|
1855
|
-
def codec_type(self, arg: VideoCodecType, /) -> None: ...
|
|
1856
|
-
|
|
1857
|
-
@property
|
|
1858
|
-
def width(self) -> int: ...
|
|
1859
|
-
|
|
1860
|
-
@width.setter
|
|
1861
|
-
def width(self, arg: int, /) -> None: ...
|
|
1862
|
-
|
|
1863
|
-
@property
|
|
1864
|
-
def height(self) -> int: ...
|
|
1865
|
-
|
|
1866
|
-
@height.setter
|
|
1867
|
-
def height(self, arg: int, /) -> None: ...
|
|
1868
|
-
|
|
1869
|
-
@property
|
|
1870
|
-
def bitrate(self) -> int: ...
|
|
1871
|
-
|
|
1872
|
-
@bitrate.setter
|
|
1873
|
-
def bitrate(self, arg: int, /) -> None: ...
|
|
1874
|
-
|
|
1875
|
-
def create_openh264_video_encoder(openh264: str) -> VideoEncoder: ...
|
|
1876
|
-
|
|
1877
|
-
def create_videotoolbox_video_encoder() -> VideoEncoder: ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: libdatachannel-py
|
|
3
|
-
Version: 2025.1.0.
|
|
3
|
+
Version: 2025.1.0.dev9
|
|
4
4
|
Summary: libdatachannel-py is a Python binding for libdatachannel.
|
|
5
5
|
Home-page: https://github.com/shiguredo/libdatachannel-py
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -39,6 +39,7 @@ Please read <https://github.com/shiguredo/oss/blob/master/README.en.md> before u
|
|
|
39
39
|
|
|
40
40
|
- [nanobind](https://github.com/wjakob/nanobind) を利用しています
|
|
41
41
|
- [Opus](https://opus-codec.org/) を利用した Opus ソフトウェアエンコード/デコードに対応しています
|
|
42
|
+
- [libaom](https://aomedia.googlesource.com/aom/) を利用した AV1 ソフトウェアエンコード/デコードに対応しています
|
|
42
43
|
- [OpenH264](https://www.openh264.org/) を利用した H.264 ソフトウェアエンコード/デコードに対応しています
|
|
43
44
|
- [Apple Video Toolbox](https://developer.apple.com/documentation/videotoolbox) を利用した H.264/H.265 ハードウェアエンコード/デコードに対応しています
|
|
44
45
|
|
|
@@ -15,16 +15,19 @@ src/libdatachannel_py.egg-info/PKG-INFO
|
|
|
15
15
|
src/libdatachannel_py.egg-info/SOURCES.txt
|
|
16
16
|
src/libdatachannel_py.egg-info/dependency_links.txt
|
|
17
17
|
src/libdatachannel_py.egg-info/top_level.txt
|
|
18
|
+
tests/test_audio_codec.py
|
|
18
19
|
tests/test_candidate.py
|
|
19
20
|
tests/test_configuration.py
|
|
20
21
|
tests/test_description.py
|
|
21
22
|
tests/test_frameinfo.py
|
|
22
23
|
tests/test_h265nalunit.py
|
|
24
|
+
tests/test_libyuv.py
|
|
23
25
|
tests/test_mediahandler.py
|
|
24
26
|
tests/test_message.py
|
|
25
27
|
tests/test_nalunit.py
|
|
26
28
|
tests/test_packetizationconfig.py
|
|
27
29
|
tests/test_peerconnection.py
|
|
30
|
+
tests/test_prop_audio_codec.py
|
|
28
31
|
tests/test_reliability.py
|
|
29
32
|
tests/test_rtppacketizer.py
|
|
30
33
|
tests/test_video_codec.py
|