1.YUV4:4:4格式意味着Y、U、V三个分量的采集比例相同,因此在生成的图像里,每个像素的三个分量信息完整,都是8bit,也就是一个字节。YUV4:2:2格式的采样特征是在每相邻的两个像素,一个丢弃U分量,一个丢弃V分量.YUV4:2:0格式的采样特征是所有像素都保留Y分量,同一行的像素只保留U分量,或者是V分量,同一行中相邻的两个像素只保留同一个Y分量或者U分量。
2.将YUV444转换为NV12(YUV420):从偶数行(YUV444)提取U分量,且从每一偶数行(YUV444)的每四个像素提取2个U分量。同理从奇数行(YUV444)提取V分量,且从每一偶数行(YUV444)的每四个像素提取2个V分量.若将一幅格式为YUV444,分辨率为n x m的图片转换为NV12.YUV444格式图片大小M=n x m x 3.转换为NV12后大小M=3 / 2 x n x m.实现代码如下:
int yuv444_to_nv12(unsigned char *buffer_src,int fd)
{
unsigned char *yuvIn,*yuvOutput,*y_in,*u_in,*v_in,*y_output,*u_output,*v_output;
int i,j,u_count=0,v_count=0,temp_count=0;
int ret;
//yuv444------->NV12
yuvOutput =(unsigned char*) malloc(SIZE_NV12);
if(yuvOutput == NULL){
ALOGE("malloc memory failed\n");
return -1;
}
yuvIn = buffer_src;