Open Qengineering opened 2 weeks ago
When converting 1920x1080 4:2:0 YUV (NV12) to BGR (8-bits) you get a misalignment in the green channel. Tested on the Rock5C
Code:
// Create RGA input buffer (NV12) rga_buffer_t src; memset(&src, 0, sizeof(rga_buffer_t)); src.width = tmp_frame->width; src.height = tmp_frame->height; src.wstride = tmp_frame->linesize[0]; src.hstride = tmp_frame->height; src.format = RK_FORMAT_YCbCr_420_SP; src.vir_addr = tmp_frame->data[0]; src.phy_addr = 0; // Create RGA output buffer (BGR) rga_buffer_t dst; memset(&dst, 0, sizeof(rga_buffer_t)); dst.width = TmpMat.cols; dst.height = TmpMat.rows; dst.wstride = TmpMat.cols; dst.hstride = TmpMat.rows; dst.format = RK_FORMAT_BGR_888; dst.vir_addr = TmpMat.data; dst.phy_addr = 0; // Perform color space conversion int ret = imcvtcolor(src, dst, src.format, dst.format);//, &opt); if (ret != IM_STATUS_SUCCESS) { std::cerr << "RGA color conversion failed: " << imStrError(ret) << std::endl; }
https://github.com/rockchip-linux/mpp/blob/develop/doc/Rockchip_Developer_Guide_MPP_EN.md#361-widthand-height-of-input-image-and-stride
Thanks!
When converting 1920x1080 4:2:0 YUV (NV12) to BGR (8-bits) you get a misalignment in the green channel. Tested on the Rock5C
Code: