yuv422 p 是yuv的一种格式,如何提取yuv分量,以下是程序
#include<stdio.h>
#include <stdlib.h>
int simple_yuv422_split(char *url,int w,int h)
{
int i = 0;
FILE *fp = fopen(url,"rb+");
FILE *fp1 = fopen("output_yuv422_y.yuv","wb+");
FILE *fp2 = fopen("output_yuv422_u.yuv","wb+");
FILE *fp3 = fopen("output_yuv422_v.yuv","wb+");
unsigned char *pic = (unsigned char*)malloc(w * h * 2);
if(pic == NULL){
printf("can not malloc %d bytes\n",w * h);
return -1;
}
fread(pic,w * h * 2,1,fp);
fwrite(pic + 0,w * h,1,fp1);
fwrite(pic + w * h ,w * h/2,1,fp2);
fwrite(pic + w * h*3/2, w * h/2,1,fp3);
fflush(fp1);
fflush(fp2);
fflush(fp3);
fclose(fp1);
fclose(fp2);
fclose(fp3);
free(pic);
}
int main()
{
simple_yuv422_split("test.yuv",640,400);
}