4:2:0 chroma subsampling 2026-11-05
4:2:0 chroma subsampling keeps the full luma grid while halving each colour-difference component's sampling rate horizontally and vertically. For even width and height , it retains Y samples and samples each of Cb and Cr.[ref]
Recommended 8-Bit YUV Formats for Video Rendering by Gary Sullivan and Stephen Estrop. YUV Sampling,4:2:0 definition
The zero in the notation does not mean that one colour-difference component has disappeared.For an original six-by-four eight-bit image, the active payload iscompared with 72 bytes for 4:4:4 chroma sampling and 48 bytes for 4:2:2 chroma subsampling. Thus the 4:2:0 payload is half the 4:4:4 payload and three quarters of the 4:2:2 payload under these declared assumptions. It averages 12 bits per original pixel, without row padding or alpha.
Both colour components have fewer samples, so chroma reconstruction must estimate values at additional positions before a full-resolution colour conversion. It cannot generally reverse information discarded during downsampling. The chroma sample location also matters: identical counts can correspond to different spatial offsets.
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]
YUV Formats in the Linux Kernel documentation. Subsampling discussion and centered/co-sited examples
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 givesOn the second grid it givesThe 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 subsampling 2026-11-05
Chroma subsampling represents colour-difference components on a coarser spatial grid than luma. In YCbCr video, 4:4:4 chroma sampling keeps full sample counts for every component; 4:2:2 chroma subsampling halves the colour-difference count horizontally; 4:2:0 chroma subsampling halves it horizontally and vertically.[ref]
Recommended 8-Bit YUV Formats for Video Rendering by Gary Sullivan and Stephen Estrop. YUV Sampling, definitions of4:4:4,4:2:2 and4:2:0
For an original eight-bit image with no padding or alpha, full sampling uses eight samples in each of three components: 24 bytes. With horizontal halving, the count becomes bytes. Halving in both directions gives bytes. These count active samples, not the allocation overhead of a particular pixel format.
The reduction loses information unless the discarded variations are otherwise constrained. For a stipulated pair of neighbouring samples with constant luma, let one colour-difference channel have values and . Averaging the pair and retaining only the average stores zero. Reconstructing both positions as zero cannot recover which one was originally positive. Fine colour variation can therefore disappear even though both luma samples remain intact.
A low-pass filter before reducing the sampling rate controls aliasing; merely dropping alternate samples need not. Later chroma reconstruction estimates the missing positions. It must respect chroma sample location: equal sample counts do not determine where those samples lie relative to the luma grid. The Microsoft primary guide explicitly distinguishes different 4:2:0 grids and discusses interpolation during format conversion.[ref]
Recommended 8-Bit YUV Formats for Video Rendering by Gary Sullivan and Stephen Estrop. YUV Sampling diagrams; Converting4:2:0 YUV to4:2:2 YUV
Storage organization is independent of this sampling ratio. NV12 interleaves the two reduced components in a second plane, while a fully planar pixel format can store them in separate planes. Rearranging the same samples changes layout, not sampling resolution.
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]
Recommended 8-Bit YUV Formats for Video Rendering by Gary Sullivan and Stephen Estrop. Converting4:2:0 YUV to4:2:2 YUV and Converting4:2:2 YUV to4:4:4 YUV
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 filterIt 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]
Recommended 8-Bit YUV Formats for Video Rendering by Gary Sullivan and Stephen Estrop. 4:2:0-to4:2:2 method and edge equations
Upsampling quality therefore depends on chroma sample location, filter choice and boundary treatment, rather than only on output dimensions.