SPRUHZ7K August 2015 – April 2024 AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL
The YUV420 input to Chroma Upsampler module must be in the format shown in Figure 10-43, in which the chroma sample lies in the left column of a 2x2 pixel block with half pel vertical shift.
Figure 10-43 4:2:0 YCrCb Color Space with Chroma Left-alignedThe upsampling is performed by an interpolation filter which uses Catmull-Rom algorithm. The Catmull-Rom Filter is based on four anchor pixels representing a four tap filter. The general 4-tap filter Catmull-Rom filter is defined in Figure 10-44.
Figure 10-44 4:2:0 YCrCb Color Space with Chroma Left-alignedIn the previous figure, x is the distance to the interpolated point between the two anchor points. In Figure 10-45, the example shows the desired interpolated point to be ¼ of the distance between Anchor0 and Anchor1. Thus, x = ¼.
Figure 10-45 4:2:0 YCrCb Color Space with Chroma Left-alignedThe variable 'a' determines the characteristics of the filter. a = ½ is generally used because the filter will produce an interpolated output that is an exact match to a linear input curve. In the literature, some people have noted that a=0.75 or a=1.0 may be more pleasing to the eye. In the implementation, the filter coefficients are programmable through MMR.
For the interpolated pixel, the variable x defines the positional offset relative to anchor pixel1. Figure 10-46 shows four anchor pixels with Anchor0 being near the top of the image and Anchor3 near the bottom. x is relative to Anchor1. Positive values of x goes down towards Anchor3. Negative x values imply a direction towards Anchor0. For example, if we want to interpolate a pixel midway between Anchor1 and Anchor2, x would be 2/4=1/2. There are four half pels between Anchor1 and Anchor2. Midway is two pels, so x=2/4.
Figure 10-46 Anchor PixelsIn the implementation, we need to interpolate the anchor pixel to get it on-grid. Then, we also need to interpolate a completely new pixel for YPrPb 4:2:2.
For a progressive input, x = -1/4 for getting the anchor pixel on-grid. x = 1/4 for generating the new pixel.
Lines are scanned from the top of the picture to the bottom.