- st2110::encode::svt: SVT-AV1 in its real-time mode (rtc: low delay, no lookahead, no
scene-change detection, no temporal filtering), constant bit rate, Main profile at level
4.1, tile columns by the picture's width, its level of parallelism from the host's
cores, keyframes only where the stage asks. Its presets are the stage's rungs, the first
chosen for the stream's size and frame rate (9, 11 or 12) and moved mid-stream by a
preset change with no keyframe. Loaded at run time (encode::dl), never linked: the
adapter holds the layouts of 4.2, checked against its headers, and refuses another
version by name. A named svt-av1 that is not on the host refuses the gateway's start.
- encode::obu reads the sizes every keyframe states, and encode::check_unit holds a stream
to the stream's picture as well as to the floor. POST /st2110 exercises the encoder at
the stream's own size and depth before it answers (essence_encoder_refused).
- tests/essence_rt.rs: the real session, the crate's own RTP sender pacing whole 4:2:2
10-bit frames, 1280 x 720 and 1920 x 1080 at 30 frames a second for 20 seconds with each
real-time encoder the host has. One frame dropped behind the encoder fails it; so does a
frame not published, a keyframe outside the floor, or a temporal unit the host's
libdav1d (loaded at run time) does not decode to the picture sent. Packets lost on the
way in are reported as that. It refuses to measure on a loaded host and says so. The
first frames are decoded again by wai-av1 and compared sample for sample.
- The stage's rule now watches the longest frame against what the queue absorbs: the
first 20-second run at 1920 x 1080 published 599 of 600, one frame dropped behind a
keyframe at a slower preset the stage had moved to on the mean alone.
- [st2110]: svt_av1_library, svt_av1_preset; encode_queue = 0 is the frames of two
fifteenths of a second, at least 4.
Fetched and built on the build hosts, nothing installed system-wide: SVT-AV1 v4.2.0 (the
project's source archive, SHA-256 c7b13c4a84bd3751aa35fcc72be13e6875467e7c2216879251a486e5b1e4e740;
BSD-3-Clause-Clear with the AOM Patent License 1.0), with its assembly by NASM 2.16.03
(SHA-256 1412a1c760bbd05db026b6c0d1657affd6631cd0a63cddb6f73cc6d4aa616148; BSD-2-Clause).
The libraries built: x86-64 SHA-256 81b46965997d73769251616b07491f1a259bae4730a89c835acc3c456678aa67,
aarch64 6c475bb195a5c6809e76c2a9aa0022d693013b13057b12397ea5d381a3f50198. dav1d 1.5.3's
headers (SHA-256 cbe212b02faf8c6eed5b6d55ef8a6e363aaab83f15112e960701a9c3df813686; BSD-2-Clause)
were read to check four structures; the library is the host's own.
Measured, x86-64 build host, 2026-11-11, 4:2:2 at 10 bits in, 20 seconds a run. The test
as written refused to measure (exit 101: one-minute load 14 to 18 on 32 threads through
the seven minutes given). Run with its load check overridden by hand, under a load of 16
to 21, so these are what was held on a loaded host and not idle-host figures:
1280 x 720 at 30: 600 of 600 published, 0 dropped, 9.6 ms a frame (51.9 longest)
on computed pictures; 6.7 ms (71.6) on recorded ones
1920 x 1080 at 30: 600 of 600, 0 dropped, 10.3 ms (60.4); 6.8 ms (83.5) recorded
1920 x 1080 at 60: NOT HELD: 1198 of 1200, 2 dropped behind a 78.7 ms frame
(1200 of 1200 in a set a quarter of an hour before)
the fallback, 1280 x 720 at 30, 10 s: 247 of 300 published, 53 counted as dropped
Every temporal unit decoded by libdav1d 1.5.3 to the picture sent; wai-av1, with the tools
it holds to no reference allowed (10-bit samples, more than one tile), gave the same luma
for the first eight frames of each run. On the aarch64 build host no session was
measured: under a load of 25 to 32 the host's receive buffer limit (425 984 octets) lost
packets on the way in; the encoder alone, at a load of 10 to 14, took 13.2 and 22.6 ms a
1280 x 720 and a 1920 x 1080 picture.
Planted faults, each caught by a test that then failed: a named encoder replaced with no
refusal and no statement; a stream above level 4.1 accepted (and the floor's bound read as
5.0); a dropped frame not counted by the stage, and not by the session; 4:2:2 to 4:2:0 off
by one; a 10-bit, an 8-bit and a 12-bit sample off by one; chroma placed one sample off;
frames larger than the picture accepted with no render size; a probe that does not read
what the encoder made.
Co-Authored-By: Claude Fable 5.2 <[email protected]>