sora-sdk 2025.2.0.dev0__tar.gz → 2025.2.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.
- {sora_sdk-2025.2.0.dev0/src/sora_sdk.egg-info → sora_sdk-2025.2.0.dev1}/PKG-INFO +1 -1
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/pyproject.toml +1 -1
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1/src/sora_sdk.egg-info}/PKG-INFO +1 -1
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/src/sora_sdk.egg-info/SOURCES.txt +0 -1
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_apple_video_toolbox.py +5 -10
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_authz_simulcast.py +8 -3
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_openh264.py +7 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_sora_disconnect.py +0 -12
- sora_sdk-2025.2.0.dev0/tests/test_memory_leak.py +0 -25
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/LICENSE +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/MANIFEST.in +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/NOTICE.md +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/README.md +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/buildbase.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/pypath.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/run.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/setup.cfg +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/setup.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/src/sora_sdk/__init__.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/src/sora_sdk/py.typed +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/src/sora_sdk/sora_sdk_ext.pyi +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/src/sora_sdk.egg-info/dependency_links.txt +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/src/sora_sdk.egg-info/top_level.txt +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_amd_amf.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_authz.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_ca_cert.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_capability.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_degradation_preference.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_encoded_transform.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_intel_vpl.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_messaging.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_messaging_header.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_nvidia_video_codec_sdk.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_opus.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_re_offer_re_answer_sdp.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_sendonly_recvonly.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_signaling.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_signaling_message.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_signaling_notify.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_simulcast.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_type_disconnect.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_type_switched.py +0 -0
- {sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/tests/test_vad.py +0 -0
{sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so
RENAMED
|
Binary file
|
|
@@ -286,19 +286,19 @@ def test_apple_video_toolbox_simulcast_authz_scale_resolution_to(
|
|
|
286
286
|
{
|
|
287
287
|
"rid": "r0",
|
|
288
288
|
"active": True,
|
|
289
|
-
"scaleResolutionDownTo": {"maxWidth":
|
|
289
|
+
"scaleResolutionDownTo": {"maxWidth": video_width, "maxHeight": video_height},
|
|
290
290
|
"scalabilityMode": "L1T1",
|
|
291
291
|
},
|
|
292
292
|
{
|
|
293
293
|
"rid": "r1",
|
|
294
294
|
"active": True,
|
|
295
|
-
"scaleResolutionDownTo": {"maxWidth":
|
|
295
|
+
"scaleResolutionDownTo": {"maxWidth": video_width, "maxHeight": video_height},
|
|
296
296
|
"scalabilityMode": "L1T1",
|
|
297
297
|
},
|
|
298
298
|
{
|
|
299
299
|
"rid": "r2",
|
|
300
300
|
"active": True,
|
|
301
|
-
"scaleResolutionDownTo": {"maxWidth":
|
|
301
|
+
"scaleResolutionDownTo": {"maxWidth": video_width, "maxHeight": video_height},
|
|
302
302
|
"scalabilityMode": "L1T1",
|
|
303
303
|
},
|
|
304
304
|
]
|
|
@@ -417,12 +417,8 @@ def test_apple_video_toolbox_simulcast_authz_scale_resolution_to(
|
|
|
417
417
|
assert s["frameWidth"] == 320
|
|
418
418
|
assert s["frameHeight"] == 176
|
|
419
419
|
|
|
420
|
-
#
|
|
421
|
-
|
|
422
|
-
# FIXME: scalabilityMode がない場合がある
|
|
423
|
-
if "scalabilityMode" in s:
|
|
424
|
-
scalability_mode = s["scalabilityMode"]
|
|
425
|
-
assert s["scalabilityMode"] == "L1T2"
|
|
420
|
+
# Apple Video Toolbox の場合は scalabilityMode がない
|
|
421
|
+
assert "scalabilityMode" not in s
|
|
426
422
|
|
|
427
423
|
# targetBitrate が指定したビットレートの 90% 以上、100% 以下に収まることを確認
|
|
428
424
|
expected_bitrate = video_bit_rate * 1000
|
|
@@ -430,7 +426,6 @@ def test_apple_video_toolbox_simulcast_authz_scale_resolution_to(
|
|
|
430
426
|
s["rid"],
|
|
431
427
|
video_codec_type,
|
|
432
428
|
s["encoderImplementation"],
|
|
433
|
-
scalability_mode,
|
|
434
429
|
expected_bitrate,
|
|
435
430
|
s["targetBitrate"],
|
|
436
431
|
s["frameWidth"],
|
|
@@ -165,6 +165,13 @@ def test_simulcast_authz_scale_resolution_to(
|
|
|
165
165
|
assert "SimulcastEncoderAdapter" in s["encoderImplementation"]
|
|
166
166
|
assert encoder_implementation in s["encoderImplementation"]
|
|
167
167
|
|
|
168
|
+
if (
|
|
169
|
+
s["qualityLimitationReason"] != "none"
|
|
170
|
+
and "frameWidth" not in s
|
|
171
|
+
and "frameHeight" not in s
|
|
172
|
+
):
|
|
173
|
+
pytest.skip(f"qualityLimitationReason: {s['qualityLimitationReason']}")
|
|
174
|
+
|
|
168
175
|
assert s["keyFramesEncoded"] > 0
|
|
169
176
|
assert s["bytesSent"] > 500
|
|
170
177
|
assert s["packetsSent"] > 10
|
|
@@ -172,12 +179,10 @@ def test_simulcast_authz_scale_resolution_to(
|
|
|
172
179
|
assert s["frameWidth"] == 640
|
|
173
180
|
assert s["frameHeight"] == 352
|
|
174
181
|
|
|
175
|
-
# FIXME:これは libwebrtc 側の挙動を制御できず L1T2 になってしまう
|
|
176
182
|
scalability_mode = None
|
|
177
|
-
# FIXME: scalabilityMode がない場合がある
|
|
178
183
|
if "scalabilityMode" in s:
|
|
184
|
+
assert s["scalabilityMode"] == "L1T1"
|
|
179
185
|
scalability_mode = s["scalabilityMode"]
|
|
180
|
-
assert s["scalabilityMode"] == "L1T2"
|
|
181
186
|
|
|
182
187
|
# targetBitrate が指定したビットレートの 90% 以上、100% 以下に収まることを確認
|
|
183
188
|
expected_bitrate = video_bit_rate * 1000
|
|
@@ -258,12 +258,19 @@ def test_openh264_simulcast(
|
|
|
258
258
|
|
|
259
259
|
assert s["bytesSent"] > 500
|
|
260
260
|
assert s["packetsSent"] > 20
|
|
261
|
+
|
|
262
|
+
scalability_mode = None
|
|
263
|
+
if "scalabilityMode" in s:
|
|
264
|
+
assert s["scalabilityMode"] == "L1T1"
|
|
265
|
+
scalability_mode = s["scalabilityMode"]
|
|
266
|
+
|
|
261
267
|
# targetBitrate が指定したビットレートの 90% 以上、100% 以下に収まることを確認
|
|
262
268
|
expected_bitrate = video_bit_rate * 1000
|
|
263
269
|
print(
|
|
264
270
|
s["rid"],
|
|
265
271
|
video_codec_type,
|
|
266
272
|
expected_implementation,
|
|
273
|
+
scalability_mode,
|
|
267
274
|
expected_bitrate,
|
|
268
275
|
s["targetBitrate"],
|
|
269
276
|
s["frameWidth"],
|
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
import os
|
|
2
1
|
import sys
|
|
3
2
|
import time
|
|
4
3
|
import uuid
|
|
5
4
|
|
|
6
5
|
import jwt
|
|
7
|
-
import pytest
|
|
8
6
|
from api import disconnect_connection_api
|
|
9
7
|
from client import SoraClient, SoraRole
|
|
10
8
|
|
|
11
9
|
from sora_sdk import SoraSignalingErrorCode
|
|
12
10
|
|
|
13
11
|
|
|
14
|
-
@pytest.mark.skipif(
|
|
15
|
-
os.getenv("CI") == "true" and sys.platform != "linux",
|
|
16
|
-
reason="CI では linux でのみ実行する",
|
|
17
|
-
)
|
|
18
12
|
def test_websocket_signaling_only_disconnect_api(setup):
|
|
19
13
|
signaling_urls = setup.get("signaling_urls")
|
|
20
14
|
channel_id_prefix = setup.get("channel_id_prefix")
|
|
@@ -88,9 +82,6 @@ def test_websocket_signaling_only_lifetime_expired(setup):
|
|
|
88
82
|
assert conn.ws_close_reason == "LIFETIME-EXPIRED"
|
|
89
83
|
|
|
90
84
|
|
|
91
|
-
@pytest.mark.skipif(
|
|
92
|
-
os.getenv("CI") == "true" and sys.platform != "linux", reason="linux でのみ実行する"
|
|
93
|
-
)
|
|
94
85
|
def test_websocket_datachannel_signaling_disconnect_api(setup):
|
|
95
86
|
signaling_urls = setup.get("signaling_urls")
|
|
96
87
|
channel_id_prefix = setup.get("channel_id_prefix")
|
|
@@ -164,9 +155,6 @@ def test_websocket_datachannel_signaling_lifetime_expired(setup):
|
|
|
164
155
|
assert conn.ws_close_reason == "LIFETIME-EXPIRED"
|
|
165
156
|
|
|
166
157
|
|
|
167
|
-
@pytest.mark.skipif(
|
|
168
|
-
os.getenv("CI") == "true" and sys.platform != "linux", reason="linux でのみ実行する"
|
|
169
|
-
)
|
|
170
158
|
def test_datachannel_only_signaling_disconnect_api(setup):
|
|
171
159
|
signaling_urls = setup.get("signaling_urls")
|
|
172
160
|
channel_id_prefix = setup.get("channel_id_prefix")
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import time
|
|
3
|
-
import uuid
|
|
4
|
-
|
|
5
|
-
from client import SoraClient, SoraRole
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def test_memory_leak(setup):
|
|
9
|
-
signaling_urls = setup.get("signaling_urls")
|
|
10
|
-
channel_id_prefix = setup.get("channel_id_prefix")
|
|
11
|
-
metadata = setup.get("metadata")
|
|
12
|
-
|
|
13
|
-
channel_id = f"{channel_id_prefix}_{__name__}_{sys._getframe().f_code.co_name}_{uuid.uuid4()}"
|
|
14
|
-
|
|
15
|
-
with SoraClient(
|
|
16
|
-
signaling_urls,
|
|
17
|
-
SoraRole.SENDONLY,
|
|
18
|
-
channel_id,
|
|
19
|
-
audio=True,
|
|
20
|
-
video=True,
|
|
21
|
-
metadata=metadata,
|
|
22
|
-
) as sendonly:
|
|
23
|
-
time.sleep(5)
|
|
24
|
-
|
|
25
|
-
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
|
|
File without changes
|
|
File without changes
|
{sora_sdk-2025.2.0.dev0 → sora_sdk-2025.2.0.dev1}/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
|