Faded matte-black video look by API: raise the colorlevels black point

Sume's video filter allowlists colorlevels. Raising the output black point (romin, gomin, bomin) lifts pure black to dark gray for a faded, matte look.

4 min readSume
All posts

A faded or matte look has no true black: the darkest pixels sit at dark gray. In Video filter, colorlevels can do that by raising the output black point with romin, gomin and bomin, all from 0 to 1 with a default of 0. A test with ffmpeg 9.0.1 turned a pure black pixel into about 20 of 255 with 0.08 and left white untouched. The input black points rimin and the others do the opposite, crushing shadows.

Which colorlevels options matter for a matte look?

Options of colorlevels as listed in the FFmpeg filter documentation, read 2026-10-01.
OptionWhat it does
romin, gomin, bominOutput black point, 0 to 1, default 0. Raise for lifted blacks.
romax, gomax, bomaxOutput white point, 0 to 1, default 1. Lower for a dimmer white.
rimin, gimin, biminInput black point, -1 to 1, default 0. Raising it crushes shadows.
preservePreserve color mode, default none.

How do I apply a lift without changing the rest of the picture?

Set only the three output black points to the same small value. Differing values per channel give a tint, which is how a faded teal or warm shadow look is made, but equal values keep it neutral. Start at 0.05 to 0.1 and compare against the source on a short range.

curl -X POST https://api.sume.com/v1/video-filter/check \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/film-look.mp4",
    "filtergraph": "colorlevels=romin=0.08:gomin=0.08:bomin=0.08"
  }'

How is this different from brightening a dark video?

Brightening scales or shifts the whole picture; see brighten a dark video. A black-point lift raises only the shadows, so highlights stay where they were and contrast drops. It is the look you want when footage feels too crisp, not too dark.

Can I stack it with a color grade?

Yes, in one graph: lift the blacks, then add a tint with colorbalance or a temperature move. Because each filter job bills once for the whole graph, combining the steps means one billed job instead of several; the limit is 32 named filters. Compare two or three looks on the same short clip.

What does a filter job cost and where are the limits?

The docs list $0.02 per encode job, with a source of at most 300 seconds, a filtergraph of at most 2048 characters and 32 named filters. The /v1/video-filter/check route runs the same allowlist and source checks for free and returns valid and next_action; a graph that passes can still fail on the worker (bad expression, memory, time), which comes back as a structured job error.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume