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.

Files changed (48) hide show
  1. {sora_sdk-2025.5.0.dev1/src/sora_sdk.egg-info → sora_sdk-2025.5.0.dev3}/PKG-INFO +1 -1
  2. sora_sdk-2025.5.0.dev3/VERSION +1 -0
  3. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/run.py +6 -3
  4. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so +0 -0
  5. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3/src/sora_sdk.egg-info}/PKG-INFO +1 -1
  6. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk.egg-info/SOURCES.txt +1 -0
  7. sora_sdk-2025.5.0.dev3/tests/test_raspberry_pi.py +98 -0
  8. sora_sdk-2025.5.0.dev1/VERSION +0 -1
  9. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/LICENSE +0 -0
  10. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/MANIFEST.in +0 -0
  11. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/README.md +0 -0
  12. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/buildbase.py +0 -0
  13. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/pypath.py +0 -0
  14. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/pyproject.toml +0 -0
  15. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/setup.cfg +0 -0
  16. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/setup.py +0 -0
  17. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk/__init__.py +0 -0
  18. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk/py.typed +0 -0
  19. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk/sora_sdk_ext.pyi +0 -0
  20. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk.egg-info/dependency_links.txt +0 -0
  21. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/src/sora_sdk.egg-info/top_level.txt +0 -0
  22. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_amd_amf.py +0 -0
  23. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_apple_video_toolbox.py +0 -0
  24. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_authz.py +0 -0
  25. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_authz_simulcast.py +0 -0
  26. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_ca_cert.py +0 -0
  27. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_capability.py +0 -0
  28. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_degradation_preference.py +0 -0
  29. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_encoded_transform.py +0 -0
  30. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_intel_vpl.py +0 -0
  31. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_key_frame_request.py +0 -0
  32. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_messaging.py +0 -0
  33. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_messaging_header.py +0 -0
  34. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_nvidia_video_codec.py +0 -0
  35. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_openh264.py +0 -0
  36. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_openh264_simulcast.py +0 -0
  37. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_opus.py +0 -0
  38. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_re_offer_re_answer_sdp.py +0 -0
  39. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_sendonly_recvonly.py +0 -0
  40. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_signaling.py +0 -0
  41. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_signaling_message.py +0 -0
  42. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_signaling_notify.py +0 -0
  43. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_simulcast.py +0 -0
  44. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_sora_disconnect.py +0 -0
  45. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_type_disconnect.py +0 -0
  46. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_type_switched.py +0 -0
  47. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_vad.py +0 -0
  48. {sora_sdk-2025.5.0.dev1 → sora_sdk-2025.5.0.dev3}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sora_sdk
3
- Version: 2025.5.0.dev1
3
+ Version: 2025.5.0.dev3
4
4
  Summary: WebRTC SFU Sora Python SDK
5
5
  Home-page: https://github.com/shiguredo/sora-python-sdk
6
6
  Author-email: "Shiguredo Inc." <contact+pypi@shiguredo.jp>
@@ -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(f"-DSORA_PYTHON_SDK_VERSION={importlib.metadata.version('sora-sdk-rpi')}")
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"-DPython_ROOT_DIR={cmake_path(os.path.join(sysroot, 'usr', 'include', 'python3.11'))}",
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 ファイルを生成する
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sora_sdk
3
- Version: 2025.5.0.dev1
3
+ Version: 2025.5.0.dev3
4
4
  Summary: WebRTC SFU Sora Python SDK
5
5
  Home-page: https://github.com/shiguredo/sora-python-sdk
6
6
  Author-email: "Shiguredo Inc." <contact+pypi@shiguredo.jp>
@@ -31,6 +31,7 @@ tests/test_nvidia_video_codec.py
31
31
  tests/test_openh264.py
32
32
  tests/test_openh264_simulcast.py
33
33
  tests/test_opus.py
34
+ tests/test_raspberry_pi.py
34
35
  tests/test_re_offer_re_answer_sdp.py
35
36
  tests/test_sendonly_recvonly.py
36
37
  tests/test_signaling.py
@@ -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
@@ -1 +0,0 @@
1
- 2025.5.0.dev1