#include
#include
#include
#include
//src_filename out_filename src_width src_height frameno
int main(int argc, char* argv)
else
src_size = (src_width * src_height) << 1 ;//對於yuy2 4:2:2
src_buf = (unsigned char *)malloc(src_size*sizeof(char));
memset(src_buf, 0, src_size);
tem_size = (src_width * src_height) << 1; ///對於yuv 4:2:2
tem_buf = (unsigned char *)malloc(tem_size*sizeof(char));
memset(tem_buf, 0, tem_size);
out_size = src_width*src_height * 1.5;//對於yuv 4:2:0
out_buf = (unsigned char *)malloc(out_size*sizeof(char));
memset(out_buf, 0, out_size);
in_file = fopen(src_filename, "rb");
if (!in_file)
out_file = fopen(out_filename, "wb");
if (!out_file)
while(framenum>0 && !feof(in_file))
p = p + src_width*2;
y = y + src_width;
u = u + (src_width>>1);
v = v + (src_width>>1);
}//復位
y = tem_buf;
u = y + src_width*src_height;
v = u + (src_width*src_height>>1);
for(int l=0; l>1);
memcpy(v2, v, src_width>>1);
u2 = u2 + (src_width>>1);
v2 = v2 + (src_width>>1);
u = u + (src_width);
v = v + (src_width);
}memcpy(y2, y, src_width*src_height);
fwrite(out_buf, sizeof(char), out_size, out_file);
printf(".");
framenum--;
}fflush(out_file);
free(src_buf); src_buf=null;
free(tem_buf); tem_buf=null;
free(out_buf); out_buf=null;
fclose(in_file);
fclose(out_file);
return 0;
}
YUY2 YUYV 轉YUV420原始碼分析
原始碼思路 1 yuv有打包 packed 格式和平面 planar 格式。yuy2是packed格式,而yuv420是planar格式,需要轉換。提取出原影象中每個y u v分量,放入陣列中,在根據這些分量組合成新的yuv420格式。2 yuv420相比yuy2,在y分量上沒有變化,對u v進行各...
yuv420和yuv420p的區別
yv12和i420的區別 在採集到rgb24資料後,需要對這個格式的資料進行第一次壓縮。即將影象的顏色空間由rgb2yuv。因為,x264在進行編碼的時候需要標準的yuv 4 2 0 但是這裡需要注意的是,雖然yv12也是 4 2 0 但是yv12和i420的卻是不同的,在儲存空間上面有些區別。如下...
yuv420 轉bmp的方法
yuv420 轉bmp的方法 我找到了乙個c寫的exe 但是c的水平我實在是不敢去修改那個原始碼,所以我乾脆就呼叫這個dll,在c 裡建立了下面這個類,然後呼叫 y2b.exe 來轉換,而且不會顯示出來那個黑屏.要知道怎麼回事,就看 吧 呵呵.using system using system.co...