void ms_yuv_buf_copy(uint8_t *src_planes[], const int src_strides[], uint8_t *dst_planes[], const int dst_strides[3], MSVideoSize roi){ plane_copy(src_planes[0],src_strides[0],dst_planes[0],dst_strides[0],roi); roi.width=roi.width/2; roi.height=roi.height/2; plane_copy(src_planes[1],src_strides[1],dst_planes[1],dst_strides[1],roi); plane_copy(src_planes[2],src_strides[2],dst_planes[2],dst_strides[2],roi); }
static void pic_copy(uint8_t *dest, int dw, int dh, uint8_t *src, int sw, int sh, MSPixFmt fmt){ if (fmt==MS_YUV420P){ plane_copy(dest,dw,dh,src,sw,sh,1); dest+=dw*dh; src+=sw*sh; plane_copy(dest,dw/2,dh/2,src,sw/2,sh/2,1); dest+=dw*dh/4; src+=sw*sh/4; plane_copy(dest,dw/2,dh/2,src,sw/2,sh/2,1); }else if (fmt==MS_RGB24){ plane_copy(dest,dw,dh,src,sw,sh,3); }else if (fmt==MS_YUYV||fmt==MS_UYVY){ plane_copy(dest,dw,dh,src,sw,sh,4); } }