sora-sdk 2025.5.0.dev1__tar.gz → 2025.5.0.dev3__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.5.0.dev1/src/sora_sdk.egg-info → sora_sdk-2025.5.0.dev3}/PKG-INFO +1 -1
- sora_sdk-2025.5.0.dev3/VERSION +1 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/run.py +6 -3
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3/src/sora_sdk.egg-info}/PKG-INFO +1 -1
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk.egg-info/SOURCES.txt +1 -0
- sora_sdk-2025.5.0.dev3/tests/test_raspberry_pi.py +98 -0
- sora_sdk-2025.5.0.dev1/VERSION +0 -1
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/LICENSE +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/MANIFEST.in +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/README.md +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/buildbase.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/pypath.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/pyproject.toml +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/setup.cfg +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/setup.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk/__init__.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk/py.typed +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk/sora_sdk_ext.pyi +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk.egg-info/dependency_links.txt +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk.egg-info/top_level.txt +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_amd_amf.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_apple_video_toolbox.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_authz.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_authz_simulcast.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_ca_cert.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_capability.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_degradation_preference.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_encoded_transform.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_intel_vpl.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_key_frame_request.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_messaging.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_messaging_header.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_nvidia_video_codec.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_openh264.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_openh264_simulcast.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_opus.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_re_offer_re_answer_sdp.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_sendonly_recvonly.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_signaling.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_signaling_message.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_signaling_notify.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_simulcast.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_sora_disconnect.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_type_disconnect.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_type_switched.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_vad.py +0 -0
- {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_version.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2025.5.0.dev3
|
|
@@ -266,7 +266,9 @@ def _build(
|
|
|
266
266
|
cmake_args.append(f"-DTARGET_OS={platform.target.os}")
|
|
267
267
|
# Raspberry Pi OS の場合は sora-sdk-rpi パッケージからバージョンを取得する
|
|
268
268
|
if platform.target.os == "raspberry-pi-os":
|
|
269
|
-
cmake_args.append(
|
|
269
|
+
cmake_args.append(
|
|
270
|
+
f"-DSORA_PYTHON_SDK_VERSION={importlib.metadata.version('sora-sdk-rpi')}"
|
|
271
|
+
)
|
|
270
272
|
else:
|
|
271
273
|
cmake_args.append(f"-DSORA_PYTHON_SDK_VERSION={importlib.metadata.version('sora-sdk')}")
|
|
272
274
|
cmake_args.append(f"-DBOOST_ROOT={cmake_path(sora_info.boost_install_dir)}")
|
|
@@ -350,6 +352,8 @@ def _build(
|
|
|
350
352
|
]
|
|
351
353
|
elif platform.target.os == "raspberry-pi-os":
|
|
352
354
|
sysroot = os.path.join(install_dir, "rootfs")
|
|
355
|
+
python_version = get_python_version()
|
|
356
|
+
python_version_short = ".".join(python_version.split(".")[:2])
|
|
353
357
|
cmake_args += [
|
|
354
358
|
"-DCMAKE_SYSTEM_NAME=Linux",
|
|
355
359
|
"-DCMAKE_SYSTEM_PROCESSOR=aarch64",
|
|
@@ -365,8 +369,7 @@ def _build(
|
|
|
365
369
|
f"-DCMAKE_SYSROOT={sysroot}",
|
|
366
370
|
f"-DLIBCXX_INCLUDE_DIR={cmake_path(os.path.join(webrtc_info.libcxx_dir, 'include'))}",
|
|
367
371
|
f"-DLIBCXXABI_INCLUDE_DIR={cmake_path(os.path.join(webrtc_info.libcxxabi_dir, 'include'))}",
|
|
368
|
-
f"-
|
|
369
|
-
"-DNB_SUFFIX=.cpython-311-aarch64-linux-gnu.so",
|
|
372
|
+
f"-DNB_SUFFIX=.cpython-{python_version_short.replace('.', '')}-aarch64-linux-gnu.so",
|
|
370
373
|
]
|
|
371
374
|
|
|
372
375
|
# Windows 以外の、クロスコンパイルでない環境では pyi ファイルを生成する
|
{sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so
RENAMED
|
Binary file
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import time
|
|
3
|
+
|
|
4
|
+
import pytest
|
|
5
|
+
from client import (
|
|
6
|
+
SoraClient,
|
|
7
|
+
SoraRole,
|
|
8
|
+
codec_type_string_to_codec_type,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
from sora_sdk import (
|
|
12
|
+
SoraVideoCodecImplementation,
|
|
13
|
+
SoraVideoCodecPreference,
|
|
14
|
+
SoraVideoCodecType,
|
|
15
|
+
get_video_codec_capability,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
pytestmark = pytest.mark.skipif(
|
|
19
|
+
os.environ.get("RASPBERRY_PI") is None, reason="Raspberry Pi でのみ実行する"
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_intel_vpl_available():
|
|
24
|
+
capability = get_video_codec_capability()
|
|
25
|
+
|
|
26
|
+
intel_vpl_available = False
|
|
27
|
+
for e in capability.engines:
|
|
28
|
+
if e.name == SoraVideoCodecImplementation.RASPI_V4L2M2M:
|
|
29
|
+
intel_vpl_available = True
|
|
30
|
+
|
|
31
|
+
assert intel_vpl_available is True
|
|
32
|
+
|
|
33
|
+
for e in capability.engines:
|
|
34
|
+
if e.name == SoraVideoCodecImplementation.RASPI_V4L2M2M:
|
|
35
|
+
# 対応コーデックは 5 種類
|
|
36
|
+
assert len(e.codecs) == 5
|
|
37
|
+
|
|
38
|
+
for c in e.codecs:
|
|
39
|
+
match c.type:
|
|
40
|
+
case SoraVideoCodecType.VP8:
|
|
41
|
+
assert c.decoder is False
|
|
42
|
+
assert c.encoder is False
|
|
43
|
+
case SoraVideoCodecType.VP9:
|
|
44
|
+
assert c.decoder is False
|
|
45
|
+
assert c.encoder is False
|
|
46
|
+
case SoraVideoCodecType.AV1:
|
|
47
|
+
assert c.decoder is False
|
|
48
|
+
assert c.encoder is False
|
|
49
|
+
case SoraVideoCodecType.H264:
|
|
50
|
+
assert c.decoder is True
|
|
51
|
+
assert c.encoder is True
|
|
52
|
+
case SoraVideoCodecType.H265:
|
|
53
|
+
assert c.decoder is False
|
|
54
|
+
assert c.encoder is False
|
|
55
|
+
case _:
|
|
56
|
+
pytest.fail(f"未実装の codec_type: {c.type}")
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def test_raspberry_pi_sendonly(settings):
|
|
60
|
+
video_codec_type = "H264"
|
|
61
|
+
sendonly = SoraClient(
|
|
62
|
+
settings,
|
|
63
|
+
SoraRole.SENDONLY,
|
|
64
|
+
audio=False,
|
|
65
|
+
video=True,
|
|
66
|
+
video_codec_type=video_codec_type,
|
|
67
|
+
video_codec_preference=SoraVideoCodecPreference(
|
|
68
|
+
codecs=[
|
|
69
|
+
SoraVideoCodecPreference.Codec(
|
|
70
|
+
type=codec_type_string_to_codec_type(video_codec_type),
|
|
71
|
+
encoder=SoraVideoCodecImplementation.RASPI_V4L2M2M,
|
|
72
|
+
),
|
|
73
|
+
]
|
|
74
|
+
),
|
|
75
|
+
)
|
|
76
|
+
sendonly.connect(fake_video=True)
|
|
77
|
+
|
|
78
|
+
time.sleep(5)
|
|
79
|
+
|
|
80
|
+
assert sendonly.connect_message is not None
|
|
81
|
+
assert sendonly.connect_message["channel_id"] == settings.channel_id
|
|
82
|
+
assert "video" in sendonly.connect_message
|
|
83
|
+
assert sendonly.connect_message["video"]["codec_type"] == video_codec_type
|
|
84
|
+
|
|
85
|
+
sendonly_stats = sendonly.get_stats()
|
|
86
|
+
|
|
87
|
+
sendonly.disconnect()
|
|
88
|
+
|
|
89
|
+
# codec が無かったら StopIteration 例外が上がる
|
|
90
|
+
codec_stats = next(s for s in sendonly_stats if s.get("type") == "codec")
|
|
91
|
+
# H.264 が採用されているかどうか確認する
|
|
92
|
+
assert codec_stats["mimeType"] == f"video/{video_codec_type}"
|
|
93
|
+
|
|
94
|
+
# outbound-rtp が無かったら StopIteration 例外が上がる
|
|
95
|
+
outbound_rtp_stats = next(s for s in sendonly_stats if s.get("type") == "outbound-rtp")
|
|
96
|
+
assert outbound_rtp_stats["encoderImplementation"] == "V4L2M2M H264"
|
|
97
|
+
assert outbound_rtp_stats["bytesSent"] > 0
|
|
98
|
+
assert outbound_rtp_stats["packetsSent"] > 0
|
sora_sdk-2025.5.0.dev1/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2025.5.0.dev1
|
|
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
|
{sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk.egg-info/dependency_links.txt
RENAMED
|
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
|