FilterStep
The typed filter DSL: a compilation layer onto the description STRINGS the existing FilterGraph.buildVideo/buildAudio already take. Nothing here crosses into C; the rules that bind it:
Values, not magic: 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: the typed set below covers the few dozen filters most chains use; Raw carries any chain the typed set lacks, verbatim.
Capability-honest: 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.