Weekly open source: the codec fleet grinds conformance, and fstool learns littlefs
A quieter week by count, and a very uniform one: nearly every commit landed inside oxideav, the pure-Rust media framework, as another set of its numbered work rounds (447 through 450) went across the codec crates at once. No new repositories — instead, a broad sweep of conformance work, where the measure of progress is how many reference streams decode byte-exact. Outside the codecs, fstool added two more filesystems and an in-browser editor.
oxideav-h266: up the scorecard
oxideav-h266 — the pure-Rust H.266 / VVC decoder — had the most legible week, because it keeps a scorecard against its conformance corpus (pass / fail / unsupported / error). Three rounds of tranches moved it from 1P/14F/33U/8E to 34P/12F/9U/1E. Round 447 dissolved the affine non-merge gate and made temporal motion, GPM and PROF/BDOF borders spec-exact; round 449 got every corpus intra picture byte-exact and landed SBT parsing, which made a whole family of parse-desync errors disappear (29E → 2E); round 450 fixed MMVD offset derivation, DMVR chroma bounding, CIIP gating and the spatial-merge scan — and the "poc-1 luma inter" failure family collapsed with it.
oxideav-opus: DTX and reduced-rate decode
oxideav-opus filled in the parts of Opus that real streams lean on. DTX (discontinuous transmission) now works on both sides — SILK encoder suppression with the 400 ms refresh, CELT-only and hybrid DTX, and zero-length frames held through concealment — with a reference-stream fixture as a permanent gate. RFC 7845 §4.1 gap repair composes PLC packets for missing ranges. The decoder learned reduced output rates (8 / 12 / 16 / 24 kHz) across every path, with a SILK resampler bit-exact against the reference, and the codec now registers real decoder and encoder factories (with typed encoder options) through oxideav-core.
H.264 and H.265: wider encoders
The two older video codecs spent the week on their encoders.
oxideav-h264 added
monochrome 4:0:0 encoding (CAVLC and CABAC, I/P/B, the 8×8
transform) and separate colour plane coding on both sides — the
three-invocation decode of §8.1 and a per-plane encoder.
oxideav-h265 gained
rate control: average-bitrate, pyramid-path, and VBV-constrained
(bufsize), plus spatial adaptive quantization — its first
cu_qp_delta writer — and a VUI frame-rate declaration.
JPEG XL and MPEG-TS
oxideav-jpegxl
reached a notable milestone: the ISO 18181-2 file format (typed
boxes, the jbrd bundle) and byte-exact JPEG reconstruction —
the JPEG XL feature that lets a recompressed JPEG be turned back
into the original file bit for bit, including subsampled transcodes.
oxideav-mpegts took
on North American broadcast: the full ATSC PSIP table family
(A/65 — STT, MGT, VCTs, RRT, EIT/ETT, DCCT) with Annex C Huffman
text decompression, CAT and TDT/TOT emission on the mux side, and
video T-STD pacing from the declared Rmax, under hostile-input and
fuzz batteries.
fstool: littlefs, FAT12/16, and a browser editor
fstool — the tool to build, inspect, convert and repack disk images, filesystems and archives — added littlefs (read, write and in-place edits of lfs2 images, the filesystem common on microcontrollers) and FAT12 / FAT16 alongside FAT32, cross-validated against dosfstools and mtools. A new in-memory authoring layer creates blank filesystems and partitioned disks, and on top of it a web build can create, edit and download images directly in the browser. ext fixes covered journal revoke records and inline symlinks; releases v0.4.21 and v0.4.22 shipped.
Also this week
- oxideav-av1 — encoder work on S-frames (switch frames), film grain across formats, superres with multiple tiles, and error-resilient inter frames, taking its self-encoded corpus from 133 to 151 streams.
- oxideav-h263 — Annex V data-partitioned slices, Annex R independent segment decoding, UMV+ motion vectors, and a four-target fuzz harness that found an infinite loop and a quadratic re-decode.
- oxideav-ape — the predictor cascade landed, so Monkey's Audio decodes whole files byte-exact on the fixture corpus; it's now wired into the registry.
- oxideav-vorbis moved the IMDCT to an FFT decomposition (O(N log N)); oxideav-mp2 gained the §2.5 multichannel encoder; oxideav-wma got lapped reconstruction and a registry entry; oxideav-basic learned automatic WAVE_FORMAT_EXTENSIBLE promotion.
- oxideav-png and oxideav-raster — profiling rounds with byte-exact performance work (single-allocation PNG decode, cached sampling taps, O(1)-radius morphology).
- oxideav-nsf — a sub-instruction DMA engine with halt-cycle-exact DMC/OAM timing for the NES sound player's emulated CPU.
Next week
The codec rounds continue — H.266 has a short list of failing streams left, and the encoders keep widening. fstool has more container and filesystem formats queued behind its new authoring layer.