Convert from YUV with 4:2:0 sampling to 16-bit per pixel RGB

Supported Technologies

MT, SSE2, Family10h


FwStatus   fwiYUV420ToRGB565_8u16u_P3C3R ( const Fw8u * const pSrc[3]int srcStep[3]Fw16u * pDstint dstStepFwiSize roiSize );
FwStatus   fwiYUV420ToRGB555_8u16u_P3C3R ( const Fw8u * const pSrc[3]int srcStep[3]Fw16u * pDstint dstStepFwiSize roiSize );
FwStatus   fwiYUV420ToRGB444_8u16u_P3C3R ( const Fw8u * const pSrc[3]int srcStep[3]Fw16u * pDstint dstStepFwiSize roiSize );


dstStep   Destination buffer step size (width of the buffer in bytes).
pDst   Pointer to a location in a destination buffer.
pSrc[3]   Pointer to a location in a three-channel planar source buffer (array values point to a location in each plane).
roiSize   Specifies the height and width of an ROI.
srcStep[3]   Source three-channel planar buffer step size (array values define width of each plane in bytes).


These functions step through an ROI in a source buffer, convert the source data from the YUV color space with 4:2:0 chroma subsampling to the 16-bit RGB model, and write the converted data to a destination buffer.

A YUV image with 4:2:0 chroma subsampling (pSrc) is converted to a gamma-corrected RGB image (pDst).

The following conversion formulas are used:

 R = Y + 1.140*V
 G = Y - 0.394*U - 0.581*V
 B = Y + 2.032*U

*The destination image is a packed RGB 16-bit per pixel image with reduced bit depth. The three channel intensities are packed into two consecutive bytes. After the conversion is performed, the bit reduction discards the least significant bits in the image.

There are 3 possible packed formats:

 RGB565 - 5 bits for Red, 6 bits for Green, 5 bits for Blue
 RGB555 - 5 bits for Red, 5 bits for Green, 5 bits for Blue
 RGB444 - 4 bits for Red, 4 bits for Green, 4 bits for Blue