From 9ce3f7d29cbc9dcd81d62671df97840b7e4e4e4f Mon Sep 17 00:00:00 2001 From: Stuart Cameron Date: Wed, 19 Aug 2026 10:58:37 +1000 Subject: [PATCH] docs(readme): record colour handling, and the new 4:2:0 10-bit format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three gaps against what 1.0 actually ships. The output colour format list was missing 4:2:0 10-bit, added so a 10-bit source can keep its grading through a GPU encoder — no NVIDIA card before the RTX 50 series can encode 4:2:2 at all, which the row now says, since "matching the source" being unplayable is only half the reason to change it. The hardware encoding row now says a format the GPU cannot take is converted rather than failing the job, and that the panel says so first. And colour tagging went undocumented entirely, despite being one of the larger behavioural fixes in this release: without it every output was untagged and so read as BT.601 limited, shifting the colours of any BT.709 or full-range source. That, the depth handling, and the 8-bit-units convention for every threshold in the interface now have a details block of their own — the same ground the new in-app explanation covers. --- README.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 657f776..7585b92 100644 --- a/README.md +++ b/README.md @@ -81,12 +81,12 @@ GPU-accelerated deinterlacing (NNEDI3CL) needs your GPU's OpenCL driver installe | | | |---|---| -| **Video** | H.264, H.265, ProRes, FFV1 (lossless), with hardware encoding via VideoToolbox, NVENC, Quick Sync or AMF where available | +| **Video** | H.264, H.265, ProRes, FFV1 (lossless), with hardware encoding via VideoToolbox, NVENC, Quick Sync or AMF where available. A colour format the GPU can't encode is converted rather than failing the job, and the panel says which and why before you start | | **Audio** | Passthrough, or re-encode to AAC, Opus or FLAC, or strip | | **Containers** | MKV, MP4, MOV, AVI | | **Reads** | `.dv` · `.mts` `.m2ts` (AVCHD) · `.vob` `.m2v` `.mpg` `.mpeg` · `.mxf` · `.avi` `.mov` `.mp4` `.mkv` `.ts` `.wmv` `.webm` `.flv`, plus DVD discs and `VIDEO_TS` folders | | **Source formats** | 4:1:1 (NTSC DV), 4:1:0, 4:2:0/4:2:2/4:4:4 up to 16-bit, RGB, grayscale | -| **Colour format out** | Match the source, or convert to 4:2:0 8-bit (plays everywhere), 4:2:2 8-bit, or 4:2:2 10-bit. Worth setting for a 10-bit source: matching it produces a 10-bit file that some players and browsers refuse to open | +| **Colour format out** | Match the source, or convert to 4:2:0 8-bit (plays everywhere), 4:2:0 10-bit, 4:2:2 8-bit or 4:2:2 10-bit. Worth setting for a 10-bit source: matching it produces a 10-bit 4:2:2 file that some players and browsers refuse to open, and that no GPU encoder before the RTX 50 series can encode at all. 4:2:0 10-bit is the one that keeps the precision and still encodes everywhere | | **Aspect ratio** | Non-square pixels preserved through the pipeline, including through a resize; or square up anamorphic pixels, force a display aspect, or letterbox to a target size | ## The filter pipeline @@ -166,6 +166,19 @@ VapourBox decides between the two by looking for a DVD IFO: a folder is only tre +
+How colour is handled + +Filters run in whatever format the source arrived in, and the output conversion is applied last — so the whole pipeline works at full precision even when the output is 8-bit. Where a filter can't handle the depth, only that pass is converted down and back, rather than the whole clip. Reducing depth dithers rather than rounds, so gradients stay smooth instead of breaking into bands. + +Every threshold and level in the interface is expressed in 8-bit terms (0–255), because that is the vocabulary the underlying filters were documented in. Those values are rescaled to the actual bit depth internally, so an adjustment does the same thing to a 10-bit source as to an 8-bit one. + +**Colour tags are carried through.** Matrix, primaries, transfer and range are read from the source and re-declared on the output. This matters more than it sounds: the connection between the processing stage and the encoder carries pixels only, so without this every output would be untagged — and an untagged file is read as BT.601 limited by every player, silently shifting the colours of any BT.709 or full-range source. Tags are never invented; a source that declares nothing stays undeclared. + +There is a fuller explanation in the app, next to the colour format setting. + +
+
Presets