Videre app icon

The decode path

What happens between the file and the number on screen. One decode at the stream's own bit depth, an interpretation you can see and change, and a measurement path that reads the decoded codes themselves.

Native bit depth Explicit interpretation Codes, not previews

one-time purchase · macOS 14+

One decode

Videre decodes once, at the stream's own depth: a 10-bit HEVC file becomes 10-bit planes, a 12-bit raw dump is read as 12-bit codes, and nothing passes through an 8-bit intermediate on the way in. MP4 and MOV decode through the system decoder in the codec's native format; files with in-band parameter sets (hev1 / avc3) decode through Videre's own decode path. Raw and y4m are read exactly as the bytes declare, with a parameter sheet for headerless files.

The decoded frame is one set of stored code values, and everything in the app reads that same frame. The picture, the pixel readout, the loupe, every scope, and every compare metric look at identical data. There is no second decode that could disagree with the first.

the file MP4/MOV · y4m · raw decode at native depth stored codes 10-bit = 0..1023 measure reads codes display converts codes readout · loupe · scopes · PSNR / SSIM / ΔE: every number is a code the file contains matrix · range · transfer, then float math on the GPU, no re-quantizing in between the file MP4/MOV · y4m · raw decode at native depth stored codes 10-bit = 0..1023 measure readout · scopes read codes display interpretation, then float math
The decode path. One decode, at the stream's own depth, into one set of stored codes. Measurement reads the codes directly; the display converts them through the interpretation you set.

Interpretation

Between codes and colors sits the interpretation: which matrix (BT.601 / 709 / 2020), which range (video or full), which transfer (sRGB, gamma 2.2, gamma 2.4, PQ, HLG). Videre keeps it explicit and live. The pills in the transport bar show what is applied; flip one and the frame re-renders, with an amber marker whenever your choice diverges from what the file declares. The conversion math is one implementation shared by the display shader and the pixel readout, so the picture and the numbers cannot drift apart.

In a compare session each side converts under its own interpretation. A BT.601 master against a BT.709 encode is a well-defined comparison, not an undefined one, and the ΔE metric measures exactly that difference.

Bit depth, stage by stage

Where a 10-bit sample keeps its depth, and the one place it does not. The GPU receives deep sources as 16-bit textures carrying the exact code values and does all conversion in floating point. What reaches the glass depends on the transfer: PQ and HLG render to a 16-bit float surface that macOS composites through EDR, at the full depth a capable display offers. SDR renders to an 8-bit surface, so a subtle 10-bit SDR gradient can show 8-bit steps on the canvas that are not in the file. The measurement path is unaffected either way: every measurement surface still reports the 10-bit codes.

file Y = 581 of 1023 decoded plane still 581 GPU math floating point PQ / HLG 16-bit float · EDR SDR 8-bit surface the readout still says 581 measurement never leaves the code domain file Y = 581 of 1023 decoded plane still 581 GPU math floating point PQ / HLG 16-bit float via EDR SDR 8-bit surface the readout still says 581 measurement never leaves the code domain
Bit depth, stage by stage. A 10-bit code keeps its value through decode and GPU math. PQ and HLG reach the screen at full depth through EDR; SDR reaches it through an 8-bit surface. The readout reports the code either way.

Depth by stage

In the file
Whatever the stream declares: 8-, 10-, 12-, or 16-bit raw and y4m; encoded streams at their coded depth.
Decoded planes
The declared depth, unchanged. A 10-bit source decodes to 10-bit code values.
Readout, loupe, scopes
The decoded codes at file depth. A 10-bit pixel reads as 0 to 1023; the loupe magnifies from the same codes the readout reports.
Compare metrics
PSNR and SSIM on the code values; ΔE through each side's own interpretation in floating point. Cross-validated against the reference implementations.
HDR canvas (PQ / HLG)
A 16-bit float surface composited through EDR: full depth to a capable display, with real headroom above SDR white.
SDR canvas
An 8-bit surface. Deep SDR content displays through it; the numbers on every measurement surface stay at file depth.
Exports
Raw and y4m at the chosen output format and depth, every frame verified against a freshly opened source before the file is kept.

Go deeper

The user guide covers the parameter sheet, the interpretation controls, the scopes, and the compare session in detail.

Read the user guide About Videre