GALOSH v0.4.0 — GALOSH-420: planar YCbCr containers + Vulkan YUV engine
GALOSH-420: planar YCbCr video containers + a Vulkan YUV engine with real-time 4K.
Highlights
- GALOSH-420 planar front-end on all three backends (CPU / OpenCL / Vulkan): feed 4:2:0 / 4:2:2 / 4:4:4 / 4:0:0 integer containers directly —
--pix --depth=8..16 --range=full|limited --matrix=bt601|bt709|bt2020|custom:Kr,Kb --eotf=srgb|g22|g24|bt709|hlg|pq|linear --siting=center|left|topleft— format-preserving in/out. DVD, Blu-ray, HDR10 (PQ 10-bit top-left), HLG and JPEG profiles covered. One shared header (standalone/galosh_yuv420.h) serves every backend, so flag vocabulary and chroma-siting phases cannot drift. - Design locked by experiment (SIDD 80 scenes × 3 sitings × 2 matrices): chroma is denoised at its native half-resolution lattice with a siting-phased downsampled-luma guide — beats upsample-to-444-first by +0.3–0.5 dB Cb/Cr at ~4× lower chroma cost. Siting itself does not affect denoise quality; only a guide-phase mismatch costs (−0.13/−0.19 dB), and the phase-matched guide is machine-verified by a built-in affine-field selftest (
--selftest-phase). Spec:docs/yuv420_frontend_spec.md. - New Vulkan YUV engine (
standalone/vk/galosh_yuv_vk.exe): FP16 inter-phase storage, zero mid-frame readbacks, watchdog-safe banded submissions; the heavy shrinkage / inverse-LUT shaders are shared verbatim with the raw engine. Parity 67.3 dB vs the CPU FP32 reference on NVIDIA / Arc / AMD iGPU, 95 dB cross-GPU agreement. - Video amortization ported to YUV:
--noise=hold|every:N+ state file + 32 KB LUT sidecar. A held frame skips both exact-median noise estimators and is bit-identical to a fit frame for the same model.
Measured speed (GPU time, ms (fps), fit → hold)
| GPU | Mode | 1080p | 4K | 8K |
|---|---|---|---|---|
| NVIDIA RTX 4070 Ti | 444 | 38.2 → 2.7 (376) | 50.4 → 11.0 (91) | 98.3 → 45.1 (22.2) |
| 420 | 54.4 → 2.6 (391) | 130 → 10.2 (98) | 316 → 105 (9.5) | |
| Intel Arc A310 | 444 | 139 → 34.7 (28.8) | 258 → 149 (6.7) | 754 → 625 (1.6) |
| 420 | 196 → 37.5 (26.7) | 416 → 158 (6.3) | 857 → 609 (1.6) | |
| AMD Radeon iGPU | 444 | 244 → 124 (8.1) | 593 → 499 (2.0) | 2116 → 1996 (0.5) |
| 420 | 252 → 118 (8.5) | 732 → 470 (2.1) | 2123 → 1881 (0.5) |
4:2:0 video steady state clears 4K60 with headroom on the 4070 Ti (98 fps) in the quality configuration. OpenCL (kept as the FP32 portable reference, same --pix front-end): NVIDIA 4K 444 = 79 ms — Vulkan is 1.6× faster fitting and ~7× at video steady state.
Downloads
GALOSH_YUV_win64.zip— sRGB PNG in → denoised PNG out (drag & drop or CLI). Rebuilt with the v0.4.0 engine (the bundled CLI exe also accepts the new--pixplanar container flags).GALOSH_RAW_win64.zip— DNG in → denoised DNG out (unchanged from v0.3.0).
SHA256:
e6aee6c7062b3c18e7d3d12d2f387a0a4f28d74815ca72e758eebeb5ff547e91 GALOSH_YUV_win64.zip
99730d51aae71bcb5d3e08f480a03f9874b31a39c4844d788149c177ba2a2573 GALOSH_RAW_win64.zip
See CHANGELOG.md for the complete list.