Colour science/09/Digital signal

Digital signal

Video signal: YCbCr, levels, bit depth and chroma

A decomposition of digital video into independent layers: primaries, transfer, RGB↔YCbCr matrix, full/narrow range, bit depth, chroma sampling, codec and metadata, with diagnosis of common Resolve errors.

PrimariesTransferMatrixRangeBit depth4:2:2
In plain language

The phrase '10-bit 4:2:2 Rec.709' describes several independent properties at once. None replaces the others. Correct decoding requires reconstructing the complete signal state rather than guessing one dropdown.

12 sections4 primary references

Quick reference

Definitions and numbers worth keeping in view

Signal state
Primaries · Transfer · Matrix · Range

Independent interpretation layers.

10-bit narrow Y′
64 black · 940 white
10-bit narrow Cb/Cr
64…960 · neutral 512
Sampling
4:4:4 · 4:2:2 · 4:2:0

Spatial chroma resolution, not bit depth/gamut.

VIDEO SIGNAL STATE

A file is not one format. It carries several independent descriptions of the signal.

01
PRIMARIES
Rec.709 / BT.2020
02
TRANSFER
BT.1886 / PQ / HLG
03
MATRIX
RGB ↔ Y′CbCr
04
RANGE
full / narrow
05
BIT DEPTH
8 / 10 / 12
06
CHROMA
4:4:4 / 4:2:2 / 4:2:0
07
CODEC + META
H.264 / H.265 / ProRes…
For example, '10-bit 4:2:2 Rec.709' still does not automatically tell you the actual range, transfer and matrix encoded/signalled in a given file.
01

Seven layers that should not be mixed

A useful model is: colorimetry/primaries → transfer → representation/matrix → numeric range → bit depth → chroma sampling → codec/container metadata. For example, 10-bit describes quantisation precision, 4:2:2 describes spatial chroma sampling, Rec.709 describes colorimetry/transfer context, and ProRes/H.265 describes the codec. These are different axes.

02

RGB and Y′CbCr are representations, not quality rankings

Video can be stored as RGB/R′G′B′ or Y′CbCr. Y′CbCr is built from nonlinear R′G′B′ using a standard-specific matrix and colour-difference components. With correct 4:4:4 sampling and sufficient precision, both representations can describe the same visual signal without one name being magically superior.

03

Matrix coefficients must match the colorimetry

BT.709 uses Y′=0.2126R′+0.7152G′+0.0722B′; BT.2020 NCL uses 0.2627/0.6780/0.0593; SD BT.601 uses 0.299/0.587/0.114. If a decoder applies the wrong matrix, luma/chroma relationships shift and systematic hue/luminance errors appear, easily mistaken for a bad grade.

04

Full and narrow/video range are separate numeric mappings

In common 8-bit narrow video, nominal luma black/white are 16/235 and chroma nominal extremes are 16/240 with neutral at 128. In 10-bit they are 64/940 for Y′ and 64/960 for Cb/Cr with neutral at 512. Full range uses 0…2^n−1. Range does not change primaries or gamma; it only defines how the normalized signal is packed into integers.

05

What a levels error looks like

If a full-range signal is mistakenly read as video/narrow, black/white can clip and contrast becomes excessive. If narrow range is read as full, black lifts, white falls and the picture looks washed out. This is a numeric remapping issue, not a colour-space transform. Resolve exposes Data Levels interpretation/export settings for this reason.

06

Bit depth defines quantisation precision

8/10/12-bit provide 256/1024/4096 possible integer values per component before range restrictions. More bits reduce quantisation step size and give transforms more numerical headroom. But 10-bit does not mean HDR, wide gamut or 4:2:2; each of those attributes is chosen separately.

07

Chroma subsampling reduces spatial colour resolution

4:4:4 keeps chroma on the full sample grid, 4:2:2 halves chroma resolution horizontally, and 4:2:0 halves it horizontally and vertically. The luma grid remains full. Subsampling is therefore most visible on fine coloured detail, key edges, UI/text and repeated encode/decode cycles.

08

Even 4:2:0 can use different chroma siting

A sampling ratio describes how many chroma samples exist, but not always their exact spatial phase/location relative to luma. Codec/VUI metadata can signal chroma sample location. Incorrect resampling/siting can shift coloured edges by fractions of a pixel or a pixel, which is especially visible on graphics and keying.

09

Codec is another independent layer

ProRes, DNxHR, H.264/H.265/AV1 define compression and coding tools, but a codec can have different profiles/pixel formats. The word H.265 alone does not tell you 8/10-bit, 4:2:0/4:4:4, PQ/HLG or full/video range without inspecting metadata and actual stream parameters.

10

Metadata/signalling tells the decoder how to read the numbers

Modern bitstreams/container tags can carry colour_primaries, transfer_characteristics, matrix_coefficients, video_full_range_flag and chroma location. These tags do not change pixels, but they change interpretation. Wrong or missing tags are a classic cause of 'it looks fine in Resolve but different after upload/player'.

11

Resolve: diagnose the signal layer by layer

First identify the media pixel format/bit depth/chroma, then Data Levels, then input colour space/gamma/transfer. If washed/clipped blacks are fixed only by changing Data Levels, do not add a CST. If skin/hues shift because of a matrix mismatch, do not repair them with Lift/Gamma/Gain. Technical diagnosis should match the layer where the error exists.

12

Render: inspect the actual file, not only the settings

After export, inspect stream metadata with an external inspector/ffprobe-like tool: pixel format, bit depth, colour primaries, transfer, matrix and range. An encoder/container can constrain the profile or rewrite tags. Final verification should be performed on the actual render artifact delivered to the client/platform.

What this changes in post

The most useful habit when a file has a colour problem is to write down `primaries / transfer / matrix / range / bit depth / chroma`. If one of those is unknown, the signal state is incomplete.

Common mistakes
Treating YCbCr as a synonym for Rec.709.
Trying to fix range with CST/gamma.
Assuming 10-bit automatically means HDR.
Assuming 4:4:4 automatically means RGB or lossless.
Ignoring matrix_coefficients/metadata.
Trusting Deliver settings without inspecting the final stream.