Files
livekit-cameras/tests/test_jpeg_mcu_pad.py
T
root 95bb7c50ee feat: point the fleet at wss LiveKit room uwh-telhai
Publish and subscribe over wss://livekit.uni-wh.de:7800 and refuse
cleartext ws://. Conference room is uwh-telhai. Includes the uncommitted
encoded H.264 publish path, Rally hairpin, and KMS wall overlay.
2026-10-11 00:48:50 +00:00

100 lines
3.2 KiB
Python

from capture_va import (
crop_scale_i420_drop_bottom,
jpeg_mcu_bottom_crop,
needs_jpeg_mcu_fix,
repeat_i420_bottom_from_last_good,
)
def _i420(width, height, y=16, u=128, v=128):
y_size = width * height
uv = (width // 2) * (height // 2)
buf = bytearray(y_size + 2 * uv)
buf[:y_size] = bytes([y]) * y_size
buf[y_size:y_size + uv] = bytes([u]) * uv
buf[y_size + uv:] = bytes([v]) * uv
return buf
def test_repeat_clones_last_good_y_and_chroma_over_black_pad():
w, h, crop = 640, 360, 8
buf = _i420(w, h, y=16, u=128, v=128)
last_good = h - crop - 1
y_stride = w
# last good Y row = 90; last good UV row = 40 (chroma 4:2:0)
src = last_good * y_stride
buf[src:src + y_stride] = bytes([90]) * y_stride
uv_w = w // 2
uv_h = h // 2
uv_crop = crop // 2
last_uv = uv_h - uv_crop - 1
y_size = w * h
u0 = y_size + last_uv * uv_w
v0 = y_size + uv_w * uv_h + last_uv * uv_w
buf[u0:u0 + uv_w] = bytes([40]) * uv_w
buf[v0:v0 + uv_w] = bytes([200]) * uv_w
repeat_i420_bottom_from_last_good(buf, w, h, crop)
for r in range(h - crop, h):
row = buf[r * y_stride:(r + 1) * y_stride]
assert set(row) == {90}, r
for r in range(uv_h - uv_crop, uv_h):
u = buf[y_size + r * uv_w:y_size + (r + 1) * uv_w]
v = buf[y_size + uv_w * uv_h + r * uv_w:
y_size + uv_w * uv_h + (r + 1) * uv_w]
assert set(u) == {40}, r
assert set(v) == {200}, r
# rows above the pad stay put
mid = (h // 2) * y_stride
assert set(buf[mid:mid + y_stride]) == {16}
def test_360p_crops_partial_mcu_and_last_full_mcu():
"""360 % 16 = 8 leftover; last full 16-row MCU is also garbage on 07/14/15."""
assert jpeg_mcu_bottom_crop(360) == 24
assert jpeg_mcu_bottom_crop(480) == 0
assert jpeg_mcu_bottom_crop(352) == 0
assert jpeg_mcu_bottom_crop(8) == 0
buf = _i420(640, 480, y=77)
before = bytes(buf)
repeat_i420_bottom_from_last_good(buf, 640, 480, jpeg_mcu_bottom_crop(480))
assert bytes(buf) == before
def test_mcu_fix_cams_off():
assert not needs_jpeg_mcu_fix("cam-07")
assert not needs_jpeg_mcu_fix("cam-12")
assert not needs_jpeg_mcu_fix("cam-14")
assert not needs_jpeg_mcu_fix("cam-15")
assert not needs_jpeg_mcu_fix("cam-01")
assert not needs_jpeg_mcu_fix("cam-20")
def test_crop_scale_drops_garbage_without_cloned_stripe():
w, h = 640, 360
crop = 24
buf = _i420(w, h, y=40, u=100, v=140)
y_size = w * h
# garbage last 24 Y rows
buf[(h - crop) * w:y_size] = bytes([250]) * (crop * w)
out = crop_scale_i420_drop_bottom(buf, w, h, crop)
assert len(out) == len(buf)
y = memoryview(out)[:y_size]
last = bytes(y[(h - 8) * w:h * w])
assert last.count(250) == 0
assert set(last) == {16}
def test_live_path_clones_not_studio_black():
w, h, crop = 640, 360, 24
buf = _i420(w, h, y=40, u=100, v=140)
last_good = h - crop - 1
buf[last_good * w:(last_good + 1) * w] = bytes([90]) * w
buf[(h - crop) * w:h * w] = bytes([250]) * (crop * w)
repeat_i420_bottom_from_last_good(buf, w, h, crop)
visible = bytes(buf[(h - crop) * w:h * w])
assert set(visible) == {90}
assert 16 not in visible
assert 250 not in visible