1. 裁剪時,Y和UV的地址計算: / **** * pa_yuv_main: yuv首地址 * video_frame.loff: 行偏移量 lineoffset * VDO_SIZE_W、VDO_SIZE_H: 原視頻寬高 * CROP_X、CROP_Y: 裁剪座標值 ****/ video_frame.phy_addr[0] = pa_yuv_main + video_frame.loff[0] * CROP_Y + CROP_X; // Y video_frame.phy_addr[1] = pa_yuv_main + VDO_SIZE_W * VDO_SIZE_H + video_frame.loff[1] * (CROP_Y/2) + CROP_X; // UV pack
而非:ide
video_frame.phy_addr[0] = pa_yuv_main + video_frame.loff[0] * CROP_Y + CROP_X; // Y video_frame.phy_addr[1] = pa_yuv_main + ( video_frame.loff[0] * CROP_Y + CROP_X) / 2; // UV pack
由於NV12在豎直方向上進行了1/2下采樣,水平方向上並未作下采樣,因此只需CROP_Y減半:
code
crop_x = crop_x & 0xFFFE; crop_y = crop_y & 0xFFFE;