A chroma interpolation filter combines retained colour-difference samples to estimate values at the output locations required by chroma upsampling. It acts on the components of YCbCr separately from full-resolution luma. The filter coefficients and the assumed chroma sample location jointly determine the reconstruction. Microsoft's primary conversion guide gives a four-sample interpolation example and states its progressive-scan and edge-handling assumptions.[ref]
For an original one-dimensional linear interpolation rule, let retained samples lie at positions . Define output samples by
The two coefficient sets, one for each output parity, both sum to one. A constant input is therefore reproduced at every output position. With , and , the outputs through are . The values at odd-integer positions are estimates, while the retained even-integer positions are unchanged.
Higher-order interpolation need not remain between neighbouring input values. As an original exact-arithmetic illustration, take a half-position rule with coefficients applied to four consecutive samples. Their sum is one, so constants are preserved. But the sample sequence yields between the two central samples; yields . Negative coefficients permit overshoot. Quantization and clipping then change the result further. The primary Microsoft example uses these interpolation coefficients with integer rounding and clipping.[ref]
The same numerical coefficients can produce spatially misplaced colour if their assumed input grid is wrong. Centered chroma and co-sited chroma require their actual coordinates to be respected. At image boundaries, missing neighbours require an explicit extension rule. No choice of chroma interpolation filter can uniquely recover arbitrary colour variation discarded by chroma subsampling.
Chroma sample location 2026-11-05
A chroma sample location specifies where a colour-difference sample is positioned relative to the luma sampling grid. The counts in 4:2:2 chroma subsampling or 4:2:0 chroma subsampling do not fully specify those positions. Co-sited chroma shares selected luma positions; centered chroma lies between them.[ref]
Use an original one-dimensional coordinate system with luma samples at integers. A colour-difference grid at is co-sited with every second luma sample. The equally dense grid at is centered between successive pairs. Both contain half as many horizontal samples, but they have different offsets.
Suppose the first two stored component codes are 20 and 100. At the luma position , linear interpolation on the first grid gives
On the second grid it gives
The same stored array and interpolation rule yield different reconstructed values because the sample coordinates differ. An incorrect location convention can therefore shift colour relative to luma without corrupting the byte buffer.
Horizontal and vertical choices also need not match. The Linux documentation illustrates 4:2:0 with horizontally centered and vertically co-sited colour-difference samples.[ref] By contrast, the original grid diagram in 4:2:0 chroma subsampling deliberately chooses centering in both directions. That is an illustration, not a claim that every format follows it.
A framebuffer stride locates rows in computer memory; it does not identify the physical sampling offset. A decoder performing chroma reconstruction therefore needs both the storage layout and the sample-location convention.
Chroma upsampling 2026-11-05
Chroma upsampling increases the spatial sample count of the colour-difference components after chroma subsampling. For example, converting 4:2:0 chroma subsampling to 4:2:2 chroma subsampling doubles the vertical colour sample count, while conversion to 4:4:4 chroma sampling also doubles it horizontally.[ref] The added values are estimates, not newly measured image detail.
An original one-dimensional derivation separates increasing the grid density from interpolation. Start with samples and insert zero-valued placeholders:
Apply the chroma interpolation filter
It follows that and . Thus this stipulated filter preserves the original positions and fills the intervening positions by linear interpolation.
The scaling is essential. For a constant input , the correctly scaled result is128 at every output position. Using the ordinary three-tap averaging coefficients on the zero-inserted sequence would instead give64 everywhere. Those coefficients are suitable for a different operation; their unit sum alone does not preserve a constant after zero insertion.
The derivation assumes the retained samples occupy the even positions of the output grid and ignores image boundaries. Centered chroma can require a different alignment, and finite images require an edge rule. The Microsoft example specifies progressive scanning, interpolation and edge handling explicitly.[ref] Upsampling quality therefore depends on chroma sample location, filter choice and boundary treatment, rather than only on output dimensions.
Co-sited chroma 2026-11-05
Co-sited chroma places a retained colour-difference sample at the same spatial coordinate as a selected luma sample along the relevant axis. With horizontal reduction by two, an illustrative co-sited grid occupies when luma samples occupy all integer positions. The Linux video documentation distinguishes this from centered chroma.[ref]
Co-siting does not require simply discarding alternate original samples. An original symmetric three-tap filter can produce
For a linear ramp , the terms simplify to . This filter's output is therefore aligned with the middle luma position for the ramp, even though it combines neighbouring samples.
An alternating input shows why filtering matters. Let . Keeping only even-indexed samples without filtering gives the constant148, losing the alternating pattern through aliasing. The stated three-tap filter instead gives at every retained position. This demonstrates suppression of this particular pattern; it does not prove rejection of every frequency that could alias.
Horizontal and vertical alignment are separate choices. A 4:2:0 chroma subsampling grid can be co-sited vertically while centered horizontally. During chroma reconstruction, using the correct coordinates and an appropriate low-pass filter are related but distinct requirements: correct placement cannot undo detail already discarded during sampling.