KNOWLEDGE MAP · VIDEO & CAMERAS

Same numbers. Different result.

Encode a signal as Video or Full, then read it using the same or a different mapping. Codes, black and white show the error without grading by eye.

Read the numbers. Notice the assumptions. Then apply the idea to your footage.

02 / RANGE / SIGNAL LAB

Read what was written.

Input Y′0.500VIDEO · 10b502InterpretationVIDEO → 0.500
Original scale
0 → 1
After decoding
0 → 1.0000
Integer code502color_range = tv
Decoded level0.50000Δ = 0
Read black / white0 / 1.0000
Mappings agree. Rounding is still separate.

A scalar Y′/RGB range mapping, not a full Y′CbCr decoder. Output numbers retain excursions; only the screen ramp is clipped to 0…1. Tags shown here are labels for this experiment, not inspected file metadata.

COLOR SCIENCE / 02 / VIDEO & CAMERAS

An experiment, not a preset.

On this page ↓
TOPIC ILLUSTRATION

THE ESSENTIAL IDEA

Video signal: YCbCr, levels, bit depth and chroma

A video file is not a single colour setting. Coordinates, curve, matrix, range, bit depth, component sampling and compression serve distinct purposes. Diagnosis becomes easier when you name the failing layer instead of trying to fix everything with one LUT.

  • Identify the failing layer before correcting it.
  • Interpret Video and Full consistently with encoding.
  • Inspect the final stream, not only export settings.
Topic artwork, not an application screenshot, camera measurement or an exact sensor diagram.
01

Read a file by layers, not one label

Start with independent questions. Which primaries and white? Which transfer function? RGB or Y′CbCr? Which matrix? How are normalised values mapped to codes? How many bits, and what is the component grid? Only then ask which codec and container store it. This is an inspection map, not a mandatory sequence of operations inside every encoder.

“10-bit ProRes” does not specify gamut, curve or whether a LUT was baked in. A MOV extension does not answer those questions either. Compare shooting notes, stream properties and decoded output. If several layers are called a “profile”, establish whether the word refers to a codec, colour definition or camera mode.

What this means in practice

Create a source record with separate fields. An unknown matrix is better documented as unknown than guessed from frame dimensions.

02

Signal representation is not a quality score

RGB and Y′CbCr represent image components differently. Conventional NCL Y′CbCr is calculated from nonlinear R′G′B′. With full sampling, a matching matrix and no rounding, the conversion is reversible; it need not degrade the image on its own.

Losses arise from clipping, quantisation, subsampling and compression. These often accompany a representation change in practice, so their effects get incorrectly attributed to the name Y′CbCr. An RGB file can likewise be heavily compressed or low precision. Compare actual properties and the next processing task, not merely the representation name.

What this means in practice

In the Y′CbCr lab use matching encode and decode matrices. Error is almost zero. Then enable rounding: the source of the deviation is now isolated.

03

The matrix is not a gamut switch

Matrix coefficients define how to derive Y′ and colour differences from R′G′B′ and reconstruct them. BT.709 uses weights 0.2126 / 0.7152 / 0.0722; BT.601 uses 0.299 / 0.587 / 0.114; BT.2020 NCL uses 0.2627 / 0.6780 / 0.0593. A wrong inverse matrix alters coloured regions differently.

Changing coefficients from 709 to 2020 does not convert RGB primaries into another colour space. That requires a separate colour transform. Primaries and matrix are different metadata fields because they describe different operations. Resolution alone cannot establish the matrix: resized older material may retain its original encoding.

What this means in practice

Use coloured patches and a known source when investigating a matrix mismatch. A neutral ramp may look correct under both matrices.

04

Video and Full: where black and white sit

In nominal 8-bit video-range Y′, black is code 16 and white is 235; in 10-bit they are 64 and 940. Chroma uses a different span: 16–240 centred on 128, or 64–960 centred on 512. Applying the Y′ span to all three components introduces additional colour errors.

Nominal endpoints do not make every outside value meaningless or require immediate clipping. Excursion handling and reserved codes depend on the transport and format. In the lab, Full for Y′/RGB maps 0…1 to 0…2ⁿ−1. Full-range chroma must follow its particular format definition rather than inherit the luma formula.

What this means in practice

Choose 10-bit Video: zero and one map to 64 and 940. Changing only the reading rule leaves stored codes untouched and changes their interpretation.

05

Two range errors that a LUT should not conceal

When Video codes are read as Full, nominal black becomes positive and white falls short of one, often appearing washed out. Reading Full as Video instead reconstructs values below zero and above one. If a later stage clips them, endpoint detail disappears.

This is an affine change of code scale and offset, not a new gamma, white balance or primary set. The lab retains out-of-range values in its readouts and clips only the screen swatch. Appearance alone is not a diagnosis: a soft look can resemble the error. Confirm it using metadata, a known ramp and re-import.

What this means in practice

For 8-bit Video→Full, black code 16 becomes 16/255 ≈ 0.06275. This explains the raised black without hunting for a magic Lift adjustment.

06

Bit depth describes the value grid

n bits provide 2ⁿ possible integer words: 256, 1024 and 4096 for 8, 10 and 12 bits. The range determines where nominal signal values sit within those words. Codes 64…940, for example, contain 877 values but 876 intervals between endpoints; do not confuse these counts when computing a step.

Additional bits reduce quantisation error for a fixed range. They do not expand sensor headroom or the primary triangle. Converting 8 to 10 bits permits finer subsequent arithmetic but cannot recreate distinctions already merged into one source code. Storage depth is also not necessarily the effective precision of the measurement.

What this means in practice

Compare the reconstruction error for 0.37 at 8 and 10 bits. It depends on the value’s location between levels as well as the number of levels.

07

The chroma grid is a separate information limit

In 4:4:4, Y′, Cb and Cr have equal spatial sample counts. In 4:2:2, each chroma plane has half as many horizontal samples. Common progressive 4:2:0 halves both chroma dimensions. The luma grid need not shrink.

This does not mean 4:2:0 “has no blue channel”: both Cb and Cr remain, just at lower density. Fewer component samples save data before entropy coding. For single-pixel coloured lines this is a different limitation from 8-bit steps on a gradient. Interlaced material additionally requires correct field handling.

What this means in practice

For progressive 1920×1080 4:2:0, each chroma plane has 960×540 samples. This is not a prediction of compressed file size.

08

Sample position matters too

Grid density does not specify chroma position relative to Y′. A sample may be co-sited with luma or lie between luma samples. Full-grid reconstruction needs the correct phase. A wrong assumption shifts a colour boundary even when sample counts and depth agree.

Resizing and transcoding therefore need compatible filters, chroma positions and, where relevant, field handling. Metadata may be absent, leaving format conventions and documented decoder assumptions important. The lab explicitly uses centred blocks and a simple reconstruction rather than claiming to reproduce every codec’s 4:2:0 behaviour.

What this means in practice

If a red outline shifts after transcoding while a monochrome boundary stays aligned, inspect chroma location before changing a tracker or mask.

09

Codec, profile and container

A codec defines coding and compression methods; a profile constrains available tools and representations. A container combines streams, timing information and metadata. Neither MOV nor MP4 is itself a colour space. Files sharing an extension can contain very different video streams.

Even within one codec family, sampling, depth, alpha support and loss behaviour differ. Apple’s documentation distinguishes ProRes 422 and 4444 variants; these are not one identical quality at different sizes. Visually lossless does not mean mathematically identical either. For important intermediate processing, inspect the exact profile and decoded result.

What this means in practice

When handing over transparent titles, agree on alpha support separately. The word ProRes in an export preset does not guarantee it.

10

A tag describes meaning without changing samples

A stream can signal primaries, transfer, matrix, range and chroma location, while its container may carry additional information. These guide interpretation but do not prove that the encoded samples actually follow them. Fields can be missing, wrong or contradictory.

Changing a tag does not perform a colour conversion. The range lab makes this explicit: identical codes yield different normalised values under different interpretations. Correct assignment fixes an incorrect description; assigning a desired label does not convert the material into that standard. Keep the source and document which values were actually transformed.

What this means in practice

FFmpeg setparams changes frame properties rather than pixel values. Actual conversion requires a suitable conversion filter with a correctly specified input.

11

Diagnose before applying the look

Compare source properties with decoding first. Range, matrix and transfer mismatches produce different classes of error. Data Levels controls numeric-range interpretation; Input Color Space describes the colour state. They are not interchangeable “fix image” buttons.

For a suspect clip create a test version without creative nodes and with known colour management. Compare source and intermediate on identical frames, checking neutral ramps and coloured regions. A change that helps only one object may hide the cause rather than remove it. Automatic detection is useful but does not replace verification of ambiguous media.

What this means in practice

Do not compensate a Video→Full mismatch with a contrast curve: later correct decoding would apply both the right mapping and your unnecessary compensation.

12

Inspect the delivered file, not just the export dialog

Inspect the rendered file itself: dimensions, pixel format, profile, colour fields and frame rate. Then re-import it into a controlled project and compare it with the timeline under matched viewing. The first check reads file descriptions; the second exposes decoding consequences. Neither alone certifies the entire delivery.

For external inspection, ffprobe uses -select_streams v:0 to select the first video stream, -show_entries to choose fields and -of json for structured output. A missing or unknown field indicates missing information, not automatically Rec.709. Do not deliver a “fixed” file solely because one player makes it look more pleasing.

What this means in practice

This command reads metadata without modifying the file: ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,pix_fmt,color_range,color_space,color_transfer,color_primaries,chroma_location -of json "input.mov".

A MODEL YOU CAN CHECK

Do not confuse a file description with conversion.

Keep the meaning, the calculation and the limitation together.

8-bit Video: C = round(16 + 219Y′); Full: C = round(255Y′)

Ten-bit Video uses 64 + 876Y′; Full uses 1023Y′. Decoding must match encoding. This lab concerns luma/RGB levels; chroma has a different offset and span. Excursions beyond the nominal range remain visible numerically.

ConceptWhat it describesWhat not to conclude
RangeMapping between integer code and normalised level.Full does not automatically mean better colour.
MatrixConversion between R′G′B′ and Y′CbCr.Is not a primaries conversion.
Codec / profileCompression method and permitted stream properties.A MOV extension does not define its entire contents.
MetadataA description of how to interpret values.Correct tags do not prove correct samples.

DO. OBSERVE. EXPLAIN.

Catch interpretation errors before grading.

The lab needs no file. For footage practice use a test copy and ffprobe; the command in the export section only reads the file.

  1. 01

    Match the ranges

    Choose Video → Video at 8 bits. Check Y′ = 0 and 1, then Full → Full.

    CHECK

    Both matched mappings return correct endpoints.

  2. 02

    Introduce one mismatch

    Keep Video encoding but read as Full without changing the code, then test the reverse mismatch.

    CHECK

    You can explain lifted black or excursions beyond 0…1 numerically.

  3. 03

    Inspect an actual stream

    Save ffprobe JSON for source and export. Compare codec, pix_fmt and colour fields.

    CHECK

    Unknown fields remain unknown instead of being guessed.

  4. 04

    Compare description with image

    Re-import into a controlled project and compare ramp, coloured patches and edges.

    CHECK

    You did not compensate a range mismatch with a creative curve.

Check your understanding

0 / 4

Tick only what you can explain yourself.

TEST THE EXPLANATION

A situation, not a trick question.

Answer first. Open the reasoning afterwards.

01Changing only a tag changes the picture. Were pixels re-encoded?

Not necessarily. The receiver may interpret the same numbers differently. Inspect metadata and conversion operations separately.

02The file is ten-bit UHD. Does that mean HDR Rec.2020?

No: depth and dimensions do not establish primaries and transfer. Relevant fields and source confirmation are required.

03One player looks correct. Can export checking be skipped?

No: it may interpret ambiguous metadata differently or hide an error. Compare stream properties and a controlled import.

Avoid these shortcuts

  • 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.
COLOR / DAVINCI RESOLVE

From the model to your workflow.

First identify the incoming values and operations already applied. Then check decoding, colour processing and the final export separately. The lab demonstrates its stated calculation; it does not measure your display, decode uploaded footage or certify camera settings.

Color Management ↗Scopes ↗Color Space Transform ↗

CHECK THE FOUNDATION

Sources and model limits.

Editorial review: 1 October 2026. Links identify the definitions and formulas; exercises are independent teaching examples.

  1. [4]
    ITU-R · BT.709-6, §3–4 ↗

    Y′CbCr matrix, quantisation, nominal Y′ and Cb/Cr levels and 4:2:2 sampling.

  2. [5]
    ITU-R · BT.601-7, Part A §2.5 ↗

    SD matrix coefficients and colour-difference normalisation.

  3. [6]
    ITU-R · BT.2020-2, Table 4 ↗

    NCL versus constant-luminance. Only NCL is implemented in the lab.

  4. [7]
    FFmpeg · ffprobe documentation ↗

    Stream selection, fields and JSON inspection of a rendered file. Metadata is evidence, not proof of image correctness.

  5. [8]
    FFmpeg · setparams / scale / zscale ↗

    Frame-property assignment versus value conversion; range and chroma location during resampling.

  6. [9]
    FFmpeg · pixel formats and chroma locations ↗

    Component dimensions, pixel-format names and chroma locations. The yuv API prefix does not mean analogue YUV.

  7. [10]
    Apple · ProRes white paper, April 2022 ↗

    Different family profiles: depth, chroma, alpha and visually versus mathematically lossless.

  8. [12]
    Blackmagic Design · DaVinci Resolve Color ↗

    Colour management and RAW processing. Available controls depend on the format, version and project mode.