22.214.171.124.3 YUV420p Stream Combination for YUV444v2 mode
The RFX_AVC444V2_BITMAP_STREAM structure (section 126.96.36.199) encapsulates two RFX_AVC420_BITMAP_STREAM structures (section 188.8.131.52). These two YUV420p streams MUST be combined to produce a YUV444 frame.
Note that the process of combining the streams is similar to the process used for YUV444 mode described in section 184.108.40.206.2, but the streams have a different layout in the auxiliary view. The terminology for YUV420 and YUV444 frames refers to buffers and remains the same.
A YUV444 frame can be represented as shown in the following figure, where Y444, U444, and V444 are the Y, U, and V planes of a source YUV444 frame. It is assumed that the resolution of these planes is specified by the width W and height H.
Figure 8: A representation of a YUV444 frame as three planes
The YUV444 frame represented in the previous figure can be packed into two YUV420 frames (a main and auxiliary view) as shown in the following figure, which represents the full frame.
Figure 9: A representation of a YUV444 frame as two YUV240p frames
The areas marked as B1 to B9 make up the Y, U, and V planes of the two YUV420p macroblocks representing the main (luma) and auxiliary (chroma) views. These areas are related to Y444, U444, and V444 as follows.
Color conversion MUST occur as follows in each case:
For macroblocks that are in rectangles in a received luma subframe (refer to the regionRects field of the corresponding RFX_AVC420_METABLOCK (section 220.127.116.11.1)), color conversion MUST be performed as in YUV420p mode using only the data in the main view.
For macroblocks that are in rectangles in a received chroma subframe (refer to the regionRects field of the corresponding RFX_AVC420_METABLOCK), color conversion MUST use the Y, U, and V components from the last corresponding rectangle in a luma subframe together with the current chroma subframe.
Note that the ranges for x and y in the chroma subframe (auxiliary view) are based on 16x16 macroblock sizes, and the view in the figure captioned "A representation of a YUV444 macroblock as two YUV240p macroblocks" shows interleaving in the chroma subframe for B4 and B5 on an 8-line basis. Color conversion MUST be performed for the entire macroblock, after which the region mask in regionRects MUST be applied. The use of 2x or 2y denotes even pixels, while (2x+1) or (2y+1) denotes odd pixels.
Due to potential visual artifacts stemming from the quantization of AVC encoding, applying the reverse filter is not optimal in all cases. If the reverse filter for a pixel component (U and V separately) changes the value by less than a given threshold, then the nonreversed value SHOULD be used instead. A cutoff threshold of 30 is used for this purpose. Note that this is an optional step and is not required in decoding.