c yuv422转yuv420p

思路:

yuv422 存储格式为 y   u   y    v   y  u   y   v 

                                y  u    y    v   y   u   y   v

yuv420p  存储最简单,先存所以的y,再存u,最后v

所以先把422所有的y存在一起,再提奇数行的u  ,偶数行舍弃。提完u后,再提v,v也是偶数行不提取。



#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include  
#include 
#include 
#include 
#include 
#define PI 3.1415926


#define  pic_width   640
#define  pic_heigth  480


#define filename  "/home/wjs/Pictures/my.yuv"
#define file_out  "/home/wjs/Pictures/"           //输出文件目录


int  main(void) {
	FILE *f=fopen(filename,"rb");

	unsigned char i[2*pic_heigth*pic_width]={};
	fread(i,2*pic_heigth*pic_width,1,f);
	
	unsigned char out[pic_heigth*pic_width*3/2]={};
	int t=0;
    for(int a=0;a<2*pic_heigth*pic_width;a=a+2){
		out[t]=i[a];
		t++;
	}
	for(int a=0;a

 

 

你可能感兴趣的:(c语言,linux,开发语言)