4:4:4 chroma sampling (source code)

= 4:4:4 chroma sampling

\b[4:4:4 chroma sampling] retains one sample of each colour-difference component for every <luma (video)> sample position. In a <YCbCr> image, the Y, Cb and Cr sample grids therefore have equal counts. The notation describes sampling density, not the number of <bits> in a sample.<Recommended 8-Bit YUV Formats for Video Rendering by Gary Sullivan and Stephen Estrop>[YUV Sampling,4:4:4 definition]{ref}

For an original $2\times2$ eight-bit image, there are four Y samples, four Cb samples and four Cr samples: 12 active <bytes>. Declare the row-major component arrays to be
$$
Y=(20,40,60,80),\qquad C_b=(80,160,80,160),\qquad C_r=(160,80,160,80).
$$
Every image location has its own colour-difference values. Averaging each pair of Cb values would discard the alternating pattern; 4:4:4 sampling itself has not performed that averaging.

A <planar pixel format> can store those three arrays separately. A <packed pixel format> can instead put each location's three samples together. Both can represent the same 4:4:4 data, while dimensions, <framebuffer stride> and component order determine how to address the stored <bytes>.

Full component sampling also does not promise a lossless pipeline. <YCbCr> conversion can include rounding, and an <image compression> method can discard information even when its input uses 4:4:4. Conversely, a decoder that expands <4:2:0 chroma subsampling> to a full grid by <chroma reconstruction> has not necessarily restored the original missing colour detail. Equal output counts and preservation of the original samples are distinct properties.