FilterStep
The typed filter DSL (KD-1): a compilation layer onto the description STRINGS the existing FilterGraph.buildVideo/buildAudio already take. Nothing here crosses into C; the laws that bind it:
Values, not magic (law 4): every construct is a plain data class first, and FilterChain.compile is a pure function whose output is inspectable, printable and golden-tested.
Curated core plus escape hatch, never a mirror (law 2): the typed set below is the register's few dozen; Raw carries any chain the typed set lacks, verbatim.
Capability-honest (law 6): FilterChain.requireAvailable asks FFmpeg.hasFilter for every typed step and fails TYPED naming the missing filter; it never silently no-ops. Raw steps are the caller's own claim and are exempt, which their KDoc says.
Inheritors
Properties
The FFmpeg filter name, for capability checks. Null for Raw, whose content is opaque.