The nv212yuv4
function converts an image in the NV21 format to a
YUV444 format. The function outputs separate U and V planes. Y plane is
same for both formats. The UV planes are duplicated 2x2 times to
represent one U plane and V plane of YUV444 format.
API Syntax
template<int SRC_T, int UV_T, int ROWS, int COLS, int NPC=1,int NPC_UV=1, int XFCVDEPTH_IN_0 = _XFCVDEPTH_DEFAULT, int XFCVDEPTH_IN_1 = _XFCVDEPTH_DEFAULT, int XFCVDEPTH_IN_2 = _XFCVDEPTH_DEFAULT, int XFCVDEPTH_IN_3 = _XFCVDEPTH_DEFAULT, int XFCVDEPTH_IN_4 = _XFCVDEPTH_DEFAULT>
void nv212yuv4(xf::cv::Mat<SRC_T, ROWS, COLS, NP, XFCVDEPTH_IN_0C> & src_y, xf::cv::Mat<UV_T, ROWS/2, COLS/2, NPC_UV, XFCVDEPTH_IN_1> & src_uv, xf::cv::Mat<SRC_T, ROWS, COLS, NPC, XFCVDEPTH_IN_2> & _y_image, xf::cv::Mat<SRC_T, ROWS, COLS, NPC, XFCVDEPTH_IN_3> & _u_image, xf::cv::Mat<SRC_T, ROWS, COLS, NPC, XFCVDEPTH_IN_4> & _v_image)
Parameter Descriptions
The following table describes the template and the function parameters.
Parameter | Description |
---|---|
SRC_T | Input pixel type. Only 8-bit, unsigned, 1-channel is supported (XF_8UC1). |
UV_T | Input pixel type. Only 8-bit, unsigned, 2-channel is supported (XF_8UC2). |
ROWS | Maximum height of input and output image. |
COLS | Maximum width of input and output image (must be a multiple of 8, for 8 pixel mode). |
NPC | Number of pixels to be processed per cycle; possible options are XF_NPPC1 and XF_NPPC8 for 1 pixel and 8 pixel operations respectively. |
NPC_UV | Number of UV image Pixels to be processed per cycle; possible options are XF_NPPC1 and XF_NPPC4 for 1 pixel and 4-pixel operations respectively. |
XFCVDEPTH_IN_0 | Depth of input image |
XFCVDEPTH_IN_1 | Depth of input image |
XFCVDEPTH_IN_2 | Depth of input image |
XFCVDEPTH_IN_3 | Depth of input image |
XFCVDEPTH_IN_4 | Depth of input image |
src_y | Input Y plane of size (ROWS, COLS). |
src_uv | Input UV plane of size (ROWS/2, COLS/2). |
_y_image | Output Y plane of size (ROWS, COLS). |
_u_image | Output U plane of size (ROWS, COLS). |
_v_image | Output V plane of size (ROWS, COLS). |
Resource Utilization
The following table summarizes the resource utilization of NV21 to YUV4 for different configurations, as generated in the Vivado HLS 2019.1 version tool for the Xczu9eg-ffvb1156-1-i-es1 FPGA, to process a HD (1080x1920) image.
Operating Mode | Operating Frequency (MHz) | Utilization Estimate | ||||
---|---|---|---|---|---|---|
BRAM_18K | DSP_48Es | FF | LUT | CLB | ||
1 Pixel | 300 | 0 | 0 | 1383 | 817 | 233 |
8 Pixel | 150 | 0 | 0 | 1887 | 1087 | 287 |
Performance Estimate
The following table summarizes the performance of NV21 to YUV4 for different configurations, as generated using the Vivado HLS 2019.1 version tool for the Xczu9eg-ffvb1156-1-i-es1, to process a grayscale HD (1080x1920) image.
Operating Mode | Latency Estimate |
---|---|
Max Latency (ms) | |
1 pixel operation (300 MHz) | 13.8 |
8 pixel operation (150 MHz) | 3.5 |