sora-sdk 2025.4.0.dev3__tar.gz → 2025.4.0.dev5__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.4.0.dev3/src/sora_sdk.egg-info → sora_sdk-2025.4.0.dev5}/PKG-INFO +1 -1
- sora_sdk-2025.4.0.dev5/VERSION +1 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/pyproject.toml +7 -6
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/run.py +117 -32
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/src/sora_sdk/__init__.py +5 -1
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5/src/sora_sdk.egg-info}/PKG-INFO +1 -1
- sora_sdk-2025.4.0.dev5/tests/test_capability.py +50 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_intel_vpl.py +6 -4
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_openh264.py +1 -1
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_openh264_simulcast.py +1 -1
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_version.py +3 -3
- sora_sdk-2025.4.0.dev3/VERSION +0 -1
- sora_sdk-2025.4.0.dev3/tests/test_capability.py +0 -52
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/LICENSE +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/MANIFEST.in +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/README.md +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/buildbase.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/pypath.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/setup.cfg +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/setup.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/src/sora_sdk/py.typed +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/src/sora_sdk/sora_sdk_ext.pyi +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/src/sora_sdk.egg-info/SOURCES.txt +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/src/sora_sdk.egg-info/dependency_links.txt +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/src/sora_sdk.egg-info/top_level.txt +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_amd_amf.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_apple_video_toolbox.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_authz.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_authz_simulcast.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_ca_cert.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_degradation_preference.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_encoded_transform.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_key_frame_request.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_messaging.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_messaging_header.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_nvidia_video_codec_sdk.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_opus.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_re_offer_re_answer_sdp.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_sendonly_recvonly.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_signaling.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_signaling_message.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_signaling_notify.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_simulcast.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_sora_disconnect.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_type_disconnect.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_type_switched.py +0 -0
- {sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/tests/test_vad.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2025.4.0.dev5
|
|
@@ -27,15 +27,14 @@ build-backend = "setuptools.build_meta"
|
|
|
27
27
|
python-preference = "only-managed"
|
|
28
28
|
dev-dependencies = [
|
|
29
29
|
"nanobind==2.8.0",
|
|
30
|
-
"setuptools==80.9",
|
|
31
|
-
"
|
|
32
|
-
"
|
|
30
|
+
"setuptools==80.9.0",
|
|
31
|
+
"pytest",
|
|
32
|
+
"pytest-repeat",
|
|
33
|
+
"pytest-xdist",
|
|
33
34
|
"numpy",
|
|
34
35
|
"httpx",
|
|
35
|
-
"pytest",
|
|
36
|
-
"ruff",
|
|
37
36
|
"pyjwt",
|
|
38
|
-
"
|
|
37
|
+
"ruff",
|
|
39
38
|
"ty",
|
|
40
39
|
]
|
|
41
40
|
|
|
@@ -43,6 +42,8 @@ dev-dependencies = [
|
|
|
43
42
|
target-version = "py311"
|
|
44
43
|
line-length = 100
|
|
45
44
|
|
|
45
|
+
[tool.ty.src]
|
|
46
|
+
include = ["src", "tests"]
|
|
46
47
|
|
|
47
48
|
[tool.pytest.ini_options]
|
|
48
49
|
xfail_strict = true
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import argparse
|
|
2
|
+
import glob
|
|
2
3
|
import hashlib
|
|
3
4
|
import importlib.metadata
|
|
4
5
|
import multiprocessing
|
|
@@ -180,35 +181,48 @@ AVAILABLE_TARGETS = [
|
|
|
180
181
|
]
|
|
181
182
|
|
|
182
183
|
|
|
183
|
-
def
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
parser.add_argument("target", choices=AVAILABLE_TARGETS)
|
|
184
|
+
def _find_clang_binary(name: str) -> Optional[str]:
|
|
185
|
+
if shutil.which(name) is not None:
|
|
186
|
+
return name
|
|
187
|
+
else:
|
|
188
|
+
for n in range(50, 14, -1):
|
|
189
|
+
if shutil.which(f"{name}-{n}") is not None:
|
|
190
|
+
return f"{name}-{n}"
|
|
191
|
+
return None
|
|
192
192
|
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
|
|
194
|
+
def _get_platform(target: str) -> Platform:
|
|
195
|
+
if target == "windows_x86_64":
|
|
195
196
|
platform = Platform("windows", get_windows_osver(), "x86_64")
|
|
196
|
-
elif
|
|
197
|
+
elif target == "macos_x86_64":
|
|
197
198
|
platform = Platform("macos", get_macos_osver(), "x86_64")
|
|
198
|
-
elif
|
|
199
|
+
elif target == "macos_arm64":
|
|
199
200
|
platform = Platform("macos", get_macos_osver(), "arm64")
|
|
200
|
-
elif
|
|
201
|
+
elif target == "ubuntu-22.04_x86_64":
|
|
201
202
|
platform = Platform("ubuntu", "22.04", "x86_64")
|
|
202
|
-
elif
|
|
203
|
+
elif target == "ubuntu-24.04_x86_64":
|
|
203
204
|
platform = Platform("ubuntu", "24.04", "x86_64")
|
|
204
|
-
elif
|
|
205
|
+
elif target == "ubuntu-22.04_armv8":
|
|
205
206
|
platform = Platform("ubuntu", "22.04", "armv8")
|
|
206
|
-
elif
|
|
207
|
+
elif target == "ubuntu-24.04_armv8":
|
|
207
208
|
platform = Platform("ubuntu", "24.04", "armv8")
|
|
208
|
-
elif
|
|
209
|
+
elif target == "ubuntu-22.04_armv8_jetson":
|
|
209
210
|
platform = Platform("jetson", None, "armv8", "ubuntu-22.04")
|
|
210
211
|
else:
|
|
211
|
-
raise Exception(f"Unknown target {
|
|
212
|
+
raise Exception(f"Unknown target {target}")
|
|
213
|
+
return platform
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
def _build(
|
|
217
|
+
target: str,
|
|
218
|
+
debug: bool,
|
|
219
|
+
relwithdebinfo: bool,
|
|
220
|
+
local_webrtc_build_dir: Optional[str],
|
|
221
|
+
local_webrtc_build_args: List[str],
|
|
222
|
+
local_sora_cpp_sdk_dir: Optional[str],
|
|
223
|
+
local_sora_cpp_sdk_args: List[str],
|
|
224
|
+
):
|
|
225
|
+
platform = _get_platform(target)
|
|
212
226
|
|
|
213
227
|
source_dir = os.path.join(BASE_DIR, "_source", platform.target.package_name)
|
|
214
228
|
build_dir = os.path.join(BASE_DIR, "_build", platform.target.package_name)
|
|
@@ -223,27 +237,23 @@ def main():
|
|
|
223
237
|
source_dir,
|
|
224
238
|
build_dir,
|
|
225
239
|
install_dir,
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
240
|
+
debug,
|
|
241
|
+
local_webrtc_build_dir,
|
|
242
|
+
local_webrtc_build_args,
|
|
243
|
+
local_sora_cpp_sdk_dir,
|
|
244
|
+
local_sora_cpp_sdk_args,
|
|
231
245
|
)
|
|
232
246
|
|
|
233
247
|
configuration = "Release"
|
|
234
|
-
if
|
|
248
|
+
if debug:
|
|
235
249
|
configuration = "Debug"
|
|
236
|
-
if
|
|
250
|
+
if relwithdebinfo:
|
|
237
251
|
configuration = "RelWithDebInfo"
|
|
238
252
|
|
|
239
253
|
webrtc_platform = get_webrtc_platform(platform)
|
|
240
|
-
webrtc_info = get_webrtc_info(
|
|
241
|
-
webrtc_platform, args.local_webrtc_build_dir, install_dir, args.debug
|
|
242
|
-
)
|
|
254
|
+
webrtc_info = get_webrtc_info(webrtc_platform, local_webrtc_build_dir, install_dir, debug)
|
|
243
255
|
|
|
244
|
-
sora_info = get_sora_info(
|
|
245
|
-
webrtc_platform, args.local_sora_cpp_sdk_dir, install_dir, args.debug
|
|
246
|
-
)
|
|
256
|
+
sora_info = get_sora_info(webrtc_platform, local_sora_cpp_sdk_dir, install_dir, debug)
|
|
247
257
|
|
|
248
258
|
cmake_args = []
|
|
249
259
|
cmake_args.append(f"-DCMAKE_BUILD_TYPE={configuration}")
|
|
@@ -373,5 +383,80 @@ def main():
|
|
|
373
383
|
)
|
|
374
384
|
|
|
375
385
|
|
|
386
|
+
def _format(
|
|
387
|
+
clang_format_path: Optional[str] = None,
|
|
388
|
+
skip_clang_format: bool = False,
|
|
389
|
+
skip_ruff: bool = False,
|
|
390
|
+
):
|
|
391
|
+
# C++ ファイルのフォーマット
|
|
392
|
+
if not skip_clang_format:
|
|
393
|
+
if clang_format_path is None:
|
|
394
|
+
clang_format_path = _find_clang_binary("clang-format")
|
|
395
|
+
if clang_format_path is None:
|
|
396
|
+
print("Warning: clang-format not found. Skipping C++ formatting.")
|
|
397
|
+
else:
|
|
398
|
+
patterns = [
|
|
399
|
+
"src/**/*.h",
|
|
400
|
+
"src/**/*.cpp",
|
|
401
|
+
]
|
|
402
|
+
target_files = []
|
|
403
|
+
for pattern in patterns:
|
|
404
|
+
files = glob.glob(pattern, recursive=True)
|
|
405
|
+
target_files.extend(files)
|
|
406
|
+
if target_files:
|
|
407
|
+
print(f"Formatting {len(target_files)} C++ files...")
|
|
408
|
+
cmd([clang_format_path, "-i"] + target_files)
|
|
409
|
+
|
|
410
|
+
# Python ファイルのフォーマット
|
|
411
|
+
if not skip_ruff:
|
|
412
|
+
print("Running Python formatting with ruff...")
|
|
413
|
+
try:
|
|
414
|
+
cmd(["uv", "run", "ruff", "format"])
|
|
415
|
+
except Exception as e:
|
|
416
|
+
print(f"Formatting failed: {e}")
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
def main():
|
|
420
|
+
parser = argparse.ArgumentParser()
|
|
421
|
+
sp = parser.add_subparsers(dest="command", required=True)
|
|
422
|
+
|
|
423
|
+
# build サブコマンド
|
|
424
|
+
bp = sp.add_parser("build")
|
|
425
|
+
bp.add_argument("target", choices=AVAILABLE_TARGETS)
|
|
426
|
+
bp.add_argument("--debug", action="store_true")
|
|
427
|
+
bp.add_argument("--relwithdebinfo", action="store_true")
|
|
428
|
+
bp.add_argument("--local-webrtc-build-dir", type=os.path.abspath)
|
|
429
|
+
bp.add_argument("--local-webrtc-build-args", default="", type=shlex.split)
|
|
430
|
+
bp.add_argument("--local-sora-cpp-sdk-dir", type=os.path.abspath)
|
|
431
|
+
bp.add_argument("--local-sora-cpp-sdk-args", default="", type=shlex.split)
|
|
432
|
+
|
|
433
|
+
# format サブコマンド
|
|
434
|
+
fp = sp.add_parser("format")
|
|
435
|
+
fp.add_argument("--clang-format-path", type=str, default=None)
|
|
436
|
+
fp.add_argument(
|
|
437
|
+
"--skip-clang-format", action="store_true", help="Skip C++ formatting with clang-format"
|
|
438
|
+
)
|
|
439
|
+
fp.add_argument("--skip-ruff", action="store_true", help="Skip Python formatting with ruff")
|
|
440
|
+
|
|
441
|
+
args = parser.parse_args()
|
|
442
|
+
|
|
443
|
+
if args.command == "build":
|
|
444
|
+
_build(
|
|
445
|
+
target=args.target,
|
|
446
|
+
debug=args.debug,
|
|
447
|
+
relwithdebinfo=args.relwithdebinfo,
|
|
448
|
+
local_webrtc_build_dir=args.local_webrtc_build_dir,
|
|
449
|
+
local_webrtc_build_args=args.local_webrtc_build_args,
|
|
450
|
+
local_sora_cpp_sdk_dir=args.local_sora_cpp_sdk_dir,
|
|
451
|
+
local_sora_cpp_sdk_args=args.local_sora_cpp_sdk_args,
|
|
452
|
+
)
|
|
453
|
+
elif args.command == "format":
|
|
454
|
+
_format(
|
|
455
|
+
clang_format_path=args.clang_format_path,
|
|
456
|
+
skip_clang_format=args.skip_clang_format,
|
|
457
|
+
skip_ruff=args.skip_ruff,
|
|
458
|
+
)
|
|
459
|
+
|
|
460
|
+
|
|
376
461
|
if __name__ == "__main__":
|
|
377
462
|
main()
|
|
@@ -4,12 +4,16 @@ from .sora_sdk_ext import * # noqa: F401,F403
|
|
|
4
4
|
# 開発環境の場合は VERSION ファイルから取得
|
|
5
5
|
try:
|
|
6
6
|
from importlib.metadata import version, PackageNotFoundError
|
|
7
|
+
|
|
7
8
|
try:
|
|
8
9
|
__version__ = version("sora_sdk")
|
|
9
10
|
except PackageNotFoundError:
|
|
10
11
|
# パッケージがインストールされていない場合(開発環境)
|
|
11
12
|
import os
|
|
12
|
-
|
|
13
|
+
|
|
14
|
+
_version_file = os.path.join(
|
|
15
|
+
os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "VERSION"
|
|
16
|
+
)
|
|
13
17
|
if os.path.exists(_version_file):
|
|
14
18
|
with open(_version_file, "r") as f:
|
|
15
19
|
__version__ = f.read().strip()
|
{sora_sdk-2025.4.0.dev3 → sora_sdk-2025.4.0.dev5}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so
RENAMED
|
Binary file
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import time
|
|
2
|
+
|
|
3
|
+
from client import SoraClient, SoraRole
|
|
4
|
+
|
|
5
|
+
from sora_sdk import (
|
|
6
|
+
SoraVideoCodecImplementation,
|
|
7
|
+
SoraVideoCodecPreference,
|
|
8
|
+
SoraVideoCodecType,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
# def test_preference_invalid(settings):
|
|
12
|
+
# # opneh264 のパスを設定してないのに H264 エンコーダを使おうとしているので Sora 生成時にエラーになる
|
|
13
|
+
# with pytest.raises(RuntimeError):
|
|
14
|
+
# SoraClient(
|
|
15
|
+
# settings,
|
|
16
|
+
# SoraRole.SENDONLY,
|
|
17
|
+
# audio=False,
|
|
18
|
+
# video=True,
|
|
19
|
+
# video_codec_type="H264",
|
|
20
|
+
# video_codec_preference=SoraVideoCodecPreference(
|
|
21
|
+
# codecs=[
|
|
22
|
+
# SoraVideoCodecPreference.Codec(
|
|
23
|
+
# type=SoraVideoCodecType.H264,
|
|
24
|
+
# encoder=SoraVideoCodecImplementation.CISCO_OPENH264,
|
|
25
|
+
# )
|
|
26
|
+
# ]
|
|
27
|
+
# ),
|
|
28
|
+
# )
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_preference_vp8(settings):
|
|
32
|
+
sendonly = SoraClient(
|
|
33
|
+
settings,
|
|
34
|
+
SoraRole.SENDONLY,
|
|
35
|
+
audio=False,
|
|
36
|
+
video=True,
|
|
37
|
+
video_codec_type="VP8",
|
|
38
|
+
video_codec_preference=SoraVideoCodecPreference(
|
|
39
|
+
codecs=[
|
|
40
|
+
SoraVideoCodecPreference.Codec(
|
|
41
|
+
type=SoraVideoCodecType.VP8, encoder=SoraVideoCodecImplementation.INTERNAL
|
|
42
|
+
)
|
|
43
|
+
]
|
|
44
|
+
),
|
|
45
|
+
)
|
|
46
|
+
sendonly.connect(fake_video=True)
|
|
47
|
+
|
|
48
|
+
time.sleep(5)
|
|
49
|
+
|
|
50
|
+
sendonly.disconnect()
|
|
@@ -19,7 +19,9 @@ from sora_sdk import (
|
|
|
19
19
|
get_video_codec_capability,
|
|
20
20
|
)
|
|
21
21
|
|
|
22
|
-
pytestmark = pytest.mark.skipif(
|
|
22
|
+
pytestmark = pytest.mark.skipif(
|
|
23
|
+
os.environ.get("INTEL_VPL") is None, reason="Intel VPL でのみ実行する"
|
|
24
|
+
)
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
def test_intel_vpl_available():
|
|
@@ -600,6 +602,6 @@ def test_intel_vpl_av1_rtp_hdr_ext(settings):
|
|
|
600
602
|
sendonly.disconnect()
|
|
601
603
|
|
|
602
604
|
# AV1 の RTP ヘッダー拡張が送られてきていることを確認
|
|
603
|
-
assert
|
|
604
|
-
"
|
|
605
|
-
)
|
|
605
|
+
assert (
|
|
606
|
+
stats["rtp_hdrext"]["total_received_rtp_hdrext_av1_rtp_sepc"] > 0
|
|
607
|
+
), "Dependency Descriptor RTP Header Extension が Python SDK から送られてきていません"
|
|
@@ -7,11 +7,11 @@ def test_version():
|
|
|
7
7
|
assert hasattr(sora_sdk, "__version__")
|
|
8
8
|
assert isinstance(sora_sdk.__version__, str)
|
|
9
9
|
assert sora_sdk.__version__ != "unknown"
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
# VERSION ファイルの内容と一致することを確認
|
|
12
12
|
version_file = os.path.join(os.path.dirname(os.path.dirname(__file__)), "VERSION")
|
|
13
13
|
with open(version_file, "r") as f:
|
|
14
14
|
expected_version = f.read().strip()
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
assert sora_sdk.__version__ == expected_version
|
|
17
|
-
print(f"sora_sdk.__version__ = {sora_sdk.__version__}")
|
|
17
|
+
print(f"sora_sdk.__version__ = {sora_sdk.__version__}")
|
sora_sdk-2025.4.0.dev3/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2025.4.0.dev3
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import time
|
|
2
|
-
|
|
3
|
-
import pytest
|
|
4
|
-
from client import SoraClient, SoraRole
|
|
5
|
-
|
|
6
|
-
from sora_sdk import (
|
|
7
|
-
SoraVideoCodecImplementation,
|
|
8
|
-
SoraVideoCodecPreference,
|
|
9
|
-
SoraVideoCodecType,
|
|
10
|
-
)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def test_preference_invalid(settings):
|
|
14
|
-
# opneh264 のパスを設定してないのに H264 エンコーダを使おうとしているので Sora 生成時にエラーになる
|
|
15
|
-
with pytest.raises(RuntimeError):
|
|
16
|
-
SoraClient(
|
|
17
|
-
settings,
|
|
18
|
-
SoraRole.SENDONLY,
|
|
19
|
-
audio=False,
|
|
20
|
-
video=True,
|
|
21
|
-
video_codec_type="H264",
|
|
22
|
-
video_codec_preference=SoraVideoCodecPreference(
|
|
23
|
-
codecs=[
|
|
24
|
-
SoraVideoCodecPreference.Codec(
|
|
25
|
-
type=SoraVideoCodecType.H264,
|
|
26
|
-
encoder=SoraVideoCodecImplementation.CISCO_OPENH264,
|
|
27
|
-
)
|
|
28
|
-
]
|
|
29
|
-
),
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def test_preference_vp8(settings):
|
|
34
|
-
sendonly = SoraClient(
|
|
35
|
-
settings,
|
|
36
|
-
SoraRole.SENDONLY,
|
|
37
|
-
audio=False,
|
|
38
|
-
video=True,
|
|
39
|
-
video_codec_type="VP8",
|
|
40
|
-
video_codec_preference=SoraVideoCodecPreference(
|
|
41
|
-
codecs=[
|
|
42
|
-
SoraVideoCodecPreference.Codec(
|
|
43
|
-
type=SoraVideoCodecType.VP8, encoder=SoraVideoCodecImplementation.INTERNAL
|
|
44
|
-
)
|
|
45
|
-
]
|
|
46
|
-
),
|
|
47
|
-
)
|
|
48
|
-
sendonly.connect(fake_video=True)
|
|
49
|
-
|
|
50
|
-
time.sleep(5)
|
|
51
|
-
|
|
52
|
-
sendonly.disconnect()
|
|
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.4.0.dev3 → sora_sdk-2025.4.0.dev5}/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
|