sora-sdk 2025.2.3__tar.gz → 2025.3.0.dev1__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.
Potentially problematic release.
This version of sora-sdk might be problematic. Click here for more details.
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/MANIFEST.in +1 -0
- {sora_sdk-2025.2.3/src/sora_sdk.egg-info → sora_sdk-2025.3.0.dev1}/PKG-INFO +1 -1
- sora_sdk-2025.3.0.dev1/VERSION +1 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/pyproject.toml +1 -1
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/run.py +3 -1
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/setup.py +8 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/src/sora_sdk/sora_sdk_ext.pyi +1 -1
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1/src/sora_sdk.egg-info}/PKG-INFO +1 -1
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/src/sora_sdk.egg-info/SOURCES.txt +1 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_capability.py +0 -24
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_openh264.py +45 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_openh264_simulcast.py +13 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/LICENSE +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/README.md +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/buildbase.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/pypath.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/setup.cfg +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/src/sora_sdk/__init__.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/src/sora_sdk/py.typed +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/src/sora_sdk.egg-info/dependency_links.txt +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/src/sora_sdk.egg-info/top_level.txt +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_amd_amf.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_apple_video_toolbox.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_authz.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_authz_simulcast.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_ca_cert.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_degradation_preference.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_encoded_transform.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_intel_vpl.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_messaging.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_messaging_header.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_nvidia_video_codec_sdk.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_opus.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_re_offer_re_answer_sdp.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_sendonly_recvonly.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_signaling.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_signaling_message.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_signaling_notify.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_simulcast.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_sora_disconnect.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_type_disconnect.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_type_switched.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/tests/test_vad.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2025.3.0.dev1
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import hashlib
|
|
3
|
+
import importlib.metadata
|
|
3
4
|
import multiprocessing
|
|
4
5
|
import os
|
|
5
6
|
import shlex
|
|
@@ -46,7 +47,7 @@ def install_deps(
|
|
|
46
47
|
local_sora_cpp_sdk_dir: Optional[str],
|
|
47
48
|
local_sora_cpp_sdk_args: List[str],
|
|
48
49
|
):
|
|
49
|
-
version = read_version_file("
|
|
50
|
+
version = read_version_file("DEPS")
|
|
50
51
|
|
|
51
52
|
# multistrap を使った sysroot の構築
|
|
52
53
|
if (
|
|
@@ -244,6 +245,7 @@ def main():
|
|
|
244
245
|
cmake_args = []
|
|
245
246
|
cmake_args.append(f"-DCMAKE_BUILD_TYPE={configuration}")
|
|
246
247
|
cmake_args.append(f"-DTARGET_OS={platform.target.os}")
|
|
248
|
+
cmake_args.append(f"-DSORA_PYTHON_SDK_VERSION={importlib.metadata.version('sora-sdk')}")
|
|
247
249
|
cmake_args.append(f"-DBOOST_ROOT={cmake_path(sora_info.boost_install_dir)}")
|
|
248
250
|
cmake_args.append(f"-DWEBRTC_INCLUDE_DIR={cmake_path(webrtc_info.webrtc_include_dir)}")
|
|
249
251
|
cmake_args.append(f"-DWEBRTC_LIBRARY_DIR={cmake_path(webrtc_info.webrtc_library_dir)}")
|
|
@@ -13,6 +13,13 @@ from buildbase import PlatformTarget, cd, get_build_platform # noqa: E402
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def run_setup(build_platform, target_platform):
|
|
16
|
+
with open(os.path.join(BASE_DIR, "VERSION"), "r") as f:
|
|
17
|
+
version = f.read().strip()
|
|
18
|
+
|
|
19
|
+
build_profile = os.getenv("BUILD_PROFILE")
|
|
20
|
+
if build_profile == "debug":
|
|
21
|
+
version += "+debug"
|
|
22
|
+
|
|
16
23
|
plat = None
|
|
17
24
|
if target_platform.os == "jetson":
|
|
18
25
|
plat = "manylinux_2_17_aarch64.manylinux2014_aarch64"
|
|
@@ -35,6 +42,7 @@ def run_setup(build_platform, target_platform):
|
|
|
35
42
|
return impl, impl, plat if plat is not None else plat2
|
|
36
43
|
|
|
37
44
|
setup(
|
|
45
|
+
version=version,
|
|
38
46
|
url="https://github.com/shiguredo/sora-python-sdk",
|
|
39
47
|
packages=["sora_sdk"],
|
|
40
48
|
package_dir={"": "src"},
|
{sora_sdk-2025.2.3 → sora_sdk-2025.3.0.dev1}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so
RENAMED
|
Binary file
|
|
@@ -485,7 +485,7 @@ def create_video_codec_preference_from_implementation(arg0: SoraVideoCodecCapabi
|
|
|
485
485
|
class Sora:
|
|
486
486
|
def __init__(self, openh264: str | None = None, video_codec_preference: SoraVideoCodecPreference | None = None) -> None: ...
|
|
487
487
|
|
|
488
|
-
def create_connection(self, signaling_urls: list[str], role: str, channel_id: str, client_id: Optional[str] = None, bundle_id: Optional[str] = None, metadata: Optional[dict] = None, signaling_notify_metadata: Optional[dict] = None, audio_source: Optional[SoraTrackInterface] = None, video_source: Optional[SoraTrackInterface] = None, audio_frame_transformer: Optional[SoraAudioFrameTransformer] = None, video_frame_transformer: Optional[SoraVideoFrameTransformer] = None, audio: Optional[bool] = None, video: Optional[bool] = None, audio_codec_type: Optional[str] = None, video_codec_type: Optional[str] = None, video_bit_rate: Optional[int] = None, audio_bit_rate: Optional[int] = None, video_vp9_params: Optional[dict] = None, video_av1_params: Optional[dict] = None, video_h264_params: Optional[dict] = None, audio_opus_params: Optional[dict] = None, simulcast: Optional[bool] = None, spotlight: Optional[bool] = None, spotlight_number: Optional[int] = None, simulcast_rid: Optional[str] = None, spotlight_focus_rid: Optional[str] = None, spotlight_unfocus_rid: Optional[str] = None, forwarding_filter: Optional[dict] = None, forwarding_filters: Optional[list[dict]] = None, data_channels: Optional[list[dict]] = None, data_channel_signaling: Optional[bool] = None, ignore_disconnect_websocket: Optional[bool] = None, data_channel_signaling_timeout: Optional[int] = None, disconnect_wait_timeout: Optional[int] = None, websocket_close_timeout: Optional[int] = None, websocket_connection_timeout: Optional[int] = None, audio_streaming_language_code: Optional[str] = None, insecure: Optional[bool] = None, client_cert: Optional[bytes] = None, client_key: Optional[bytes] = None, ca_cert: Optional[bytes] = None, proxy_url: Optional[str] = None, proxy_username: Optional[str] = None, proxy_password: Optional[str] = None, proxy_agent: Optional[str] = None, degradation_preference: Optional[SoraDegradationPreference] = None) -> SoraConnection: ...
|
|
488
|
+
def create_connection(self, signaling_urls: list[str], role: str, channel_id: str, client_id: Optional[str] = None, bundle_id: Optional[str] = None, metadata: Optional[dict] = None, signaling_notify_metadata: Optional[dict] = None, audio_source: Optional[SoraTrackInterface] = None, video_source: Optional[SoraTrackInterface] = None, audio_frame_transformer: Optional[SoraAudioFrameTransformer] = None, video_frame_transformer: Optional[SoraVideoFrameTransformer] = None, audio: Optional[bool] = None, video: Optional[bool] = None, audio_codec_type: Optional[str] = None, video_codec_type: Optional[str] = None, video_bit_rate: Optional[int] = None, audio_bit_rate: Optional[int] = None, video_vp9_params: Optional[dict] = None, video_av1_params: Optional[dict] = None, video_h264_params: Optional[dict] = None, audio_opus_params: Optional[dict] = None, simulcast: Optional[bool] = None, spotlight: Optional[bool] = None, spotlight_number: Optional[int] = None, simulcast_rid: Optional[str] = None, spotlight_focus_rid: Optional[str] = None, spotlight_unfocus_rid: Optional[str] = None, forwarding_filter: Optional[dict] = None, forwarding_filters: Optional[list[dict]] = None, data_channels: Optional[list[dict]] = None, data_channel_signaling: Optional[bool] = None, ignore_disconnect_websocket: Optional[bool] = None, data_channel_signaling_timeout: Optional[int] = None, disconnect_wait_timeout: Optional[int] = None, websocket_close_timeout: Optional[int] = None, websocket_connection_timeout: Optional[int] = None, audio_streaming_language_code: Optional[str] = None, insecure: Optional[bool] = None, client_cert: Optional[bytes] = None, client_key: Optional[bytes] = None, ca_cert: Optional[bytes] = None, proxy_url: Optional[str] = None, proxy_username: Optional[str] = None, proxy_password: Optional[str] = None, proxy_agent: Optional[str] = None, degradation_preference: Optional[SoraDegradationPreference] = None, user_agent: Optional[str] = None) -> SoraConnection: ...
|
|
489
489
|
|
|
490
490
|
def create_audio_source(self, channels: int, sample_rate: int) -> SoraAudioSource: ...
|
|
491
491
|
|
|
@@ -9,33 +9,9 @@ from sora_sdk import (
|
|
|
9
9
|
SoraVideoCodecImplementation,
|
|
10
10
|
SoraVideoCodecPreference,
|
|
11
11
|
SoraVideoCodecType,
|
|
12
|
-
create_video_codec_preference_from_implementation,
|
|
13
|
-
get_video_codec_capability,
|
|
14
12
|
)
|
|
15
13
|
|
|
16
14
|
|
|
17
|
-
def test_capability(setup):
|
|
18
|
-
openh264_path = setup.get("openh264_path")
|
|
19
|
-
capability = get_video_codec_capability(openh264=openh264_path)
|
|
20
|
-
has_internal = False
|
|
21
|
-
has_openh264 = False
|
|
22
|
-
for engine in capability.engines:
|
|
23
|
-
if engine.name == SoraVideoCodecImplementation.INTERNAL:
|
|
24
|
-
has_internal = True
|
|
25
|
-
if engine.name == SoraVideoCodecImplementation.CISCO_OPENH264:
|
|
26
|
-
has_openh264 = True
|
|
27
|
-
assert has_internal and has_openh264
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def test_preference(setup):
|
|
31
|
-
openh264_path = setup.get("openh264_path")
|
|
32
|
-
capability = get_video_codec_capability(openh264=openh264_path)
|
|
33
|
-
preference = create_video_codec_preference_from_implementation(
|
|
34
|
-
capability, SoraVideoCodecImplementation.CISCO_OPENH264
|
|
35
|
-
)
|
|
36
|
-
assert preference.has_implementation(SoraVideoCodecImplementation.CISCO_OPENH264)
|
|
37
|
-
|
|
38
|
-
|
|
39
15
|
def test_preference_invalid(setup):
|
|
40
16
|
signaling_urls = setup.get("signaling_urls")
|
|
41
17
|
channel_id_prefix = setup.get("channel_id_prefix")
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import os
|
|
1
2
|
import sys
|
|
2
3
|
import time
|
|
3
4
|
import uuid
|
|
4
5
|
|
|
6
|
+
import pytest
|
|
5
7
|
from client import SoraClient, SoraRole
|
|
6
8
|
|
|
7
9
|
from sora_sdk import (
|
|
@@ -9,10 +11,45 @@ from sora_sdk import (
|
|
|
9
11
|
SoraVideoCodecImplementation,
|
|
10
12
|
SoraVideoCodecPreference,
|
|
11
13
|
SoraVideoCodecType,
|
|
14
|
+
create_video_codec_preference_from_implementation,
|
|
12
15
|
get_video_codec_capability,
|
|
13
16
|
)
|
|
14
17
|
|
|
15
18
|
|
|
19
|
+
@pytest.mark.skipif(
|
|
20
|
+
os.environ.get("OPENH264_VERSION") is None,
|
|
21
|
+
reason="OpenH264 のときだけ実行する",
|
|
22
|
+
)
|
|
23
|
+
def test_capability(setup):
|
|
24
|
+
openh264_path = setup.get("openh264_path")
|
|
25
|
+
capability = get_video_codec_capability(openh264=openh264_path)
|
|
26
|
+
has_internal = False
|
|
27
|
+
has_openh264 = False
|
|
28
|
+
for engine in capability.engines:
|
|
29
|
+
if engine.name == SoraVideoCodecImplementation.INTERNAL:
|
|
30
|
+
has_internal = True
|
|
31
|
+
if engine.name == SoraVideoCodecImplementation.CISCO_OPENH264:
|
|
32
|
+
has_openh264 = True
|
|
33
|
+
assert has_internal and has_openh264
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@pytest.mark.skipif(
|
|
37
|
+
os.environ.get("OPENH264_VERSION") is None,
|
|
38
|
+
reason="OpenH264 のときだけ実行する",
|
|
39
|
+
)
|
|
40
|
+
def test_preference(setup):
|
|
41
|
+
openh264_path = setup.get("openh264_path")
|
|
42
|
+
capability = get_video_codec_capability(openh264=openh264_path)
|
|
43
|
+
preference = create_video_codec_preference_from_implementation(
|
|
44
|
+
capability, SoraVideoCodecImplementation.CISCO_OPENH264
|
|
45
|
+
)
|
|
46
|
+
assert preference.has_implementation(SoraVideoCodecImplementation.CISCO_OPENH264)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@pytest.mark.skipif(
|
|
50
|
+
os.environ.get("OPENH264_VERSION") is None,
|
|
51
|
+
reason="OpenH264 のときだけ実行する",
|
|
52
|
+
)
|
|
16
53
|
def test_openh264_get_codec_capability(setup):
|
|
17
54
|
openh264_path = setup.get("openh264_path")
|
|
18
55
|
capability = get_video_codec_capability(openh264_path)
|
|
@@ -54,6 +91,10 @@ def test_openh264_get_codec_capability(setup):
|
|
|
54
91
|
)
|
|
55
92
|
|
|
56
93
|
|
|
94
|
+
@pytest.mark.skipif(
|
|
95
|
+
os.environ.get("OPENH264_VERSION") is None,
|
|
96
|
+
reason="OpenH264 のときだけ実行する",
|
|
97
|
+
)
|
|
57
98
|
def test_openh264_video_codec_preference(setup):
|
|
58
99
|
openh264_path = setup.get("openh264_path")
|
|
59
100
|
Sora(
|
|
@@ -86,6 +127,10 @@ def test_openh264_video_codec_preference(setup):
|
|
|
86
127
|
)
|
|
87
128
|
|
|
88
129
|
|
|
130
|
+
@pytest.mark.skipif(
|
|
131
|
+
os.environ.get("OPENH264_VERSION") is None,
|
|
132
|
+
reason="OpenH264 のときだけ実行する",
|
|
133
|
+
)
|
|
89
134
|
def test_openh264_sendonly_recvonly(setup):
|
|
90
135
|
signaling_urls = setup.get("signaling_urls")
|
|
91
136
|
channel_id_prefix = setup.get("channel_id_prefix")
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import os
|
|
1
2
|
import sys
|
|
2
3
|
import time
|
|
3
4
|
import uuid
|
|
@@ -14,6 +15,10 @@ from sora_sdk import (
|
|
|
14
15
|
)
|
|
15
16
|
|
|
16
17
|
|
|
18
|
+
@pytest.mark.skipif(
|
|
19
|
+
os.environ.get("OPENH264_VERSION") is None,
|
|
20
|
+
reason="OpenH264 のときだけ実行する",
|
|
21
|
+
)
|
|
17
22
|
@pytest.mark.parametrize(
|
|
18
23
|
(
|
|
19
24
|
"video_codec_type",
|
|
@@ -148,6 +153,10 @@ def test_openh264_simulcast(
|
|
|
148
153
|
)
|
|
149
154
|
|
|
150
155
|
|
|
156
|
+
@pytest.mark.skipif(
|
|
157
|
+
os.environ.get("OPENH264_VERSION") is None,
|
|
158
|
+
reason="OpenH264 のときだけ実行する",
|
|
159
|
+
)
|
|
151
160
|
@pytest.mark.parametrize(
|
|
152
161
|
(
|
|
153
162
|
"video_codec_type",
|
|
@@ -293,6 +302,10 @@ def test_openh264_authz_simulcast_r2_active_false(
|
|
|
293
302
|
)
|
|
294
303
|
|
|
295
304
|
|
|
305
|
+
@pytest.mark.skipif(
|
|
306
|
+
os.environ.get("OPENH264_VERSION") is None,
|
|
307
|
+
reason="OpenH264 のときだけ実行する",
|
|
308
|
+
)
|
|
296
309
|
@pytest.mark.parametrize(
|
|
297
310
|
(
|
|
298
311
|
"video_codec_type",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|