Macroblock-Oriented Picture Decoding
The macroblock is a fundamental unit of the video decoding process. A macroblock consists of a rectangular array of luminance (Y) samples and two corresponding arrays of chroma (Cb and Cr) samples. In the established video coding standards, the macroblocks are 16x16 blocks in luminance sample dimensions. If the video is coded in 4:2:0 format, the two chroma arrays each have half the height and half the width of the luma array for the macroblock. If the video is coded in 4:2:2 format, the two chrominance arrays, each have the same height and half the width of the luminance array for the macroblock. If the video is coded in the 4:4:4 format, the two chrominance arrays each have the same size as the luminance array for the macroblock.
A macroblock may be predicted using motion compensation with one or more motion vectors, or may be coded as intra without such prediction. After determining whether the macroblock is predicted or not, the remaining signal refinement, if any, is added in the form of residual difference data blocks. In the established video coding standards, these residual difference data blocks are 8x8, so that four residual difference data blocks are needed to cover a 16x16 luminance macroblock.