📄 yuvcreate.cpp
字号:
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <SDL.h>
#include <unistd.h>
int main (int argc, char **argv)
{
FILE *yuvfile;
uint8_t *ybuf, *ubuf, *vbuf, *temp;
size_t height = 240, width = 320, ysize, uvsize;
char yval, uval, vval;
argc--;
argv++;
if (argc != 5)
return(0);
ysize = width*height;
uvsize = ysize / 4;
yuvfile = fopen(*argv, "w");
argv++;
int frames = atoi(*argv);
yval = atoi(*argv);
uval = atoi(*argv);
vval = atoi(*argv);
printf("Y %x not %x", yval, ~yval);
ybuf = (uint8_t *)malloc(ysize);
temp = ybuf;
for (size_t ix = 0; ix < height; ix++) {
memset(temp, yval, width / 2);
memset(temp + (width/2), ~yval, width / 2);
temp += width;
if (ix == height / 2) yval = ~yval;
}
ubuf = (uint8_t *)malloc(ysize);
temp = ubuf;
for (size_t ix = 0; ix < height/2; ix++) {
memset(temp, uval, width / 4);
memset(temp + (width/4), ~uval, width / 4);
if (ix == height / 4) uval = ~uval;
temp += width/2;
}
vbuf = (uint8_t *)malloc(ysize);
temp = vbuf;
for (size_t ix = 0; ix < height/2; ix++) {
memset(temp, vval, width / 4);
memset(temp + (width/4), ~vval, width / 4);
if (ix == height / 4) vval = ~vval;
temp += width/2;
}
for (int ix = 0; ix < frames; ix++) {
fwrite(ybuf, ysize, sizeof(uint8_t), yuvfile);
fwrite(ubuf, uvsize, sizeof(uint8_t), yuvfile);
fwrite(vbuf, uvsize, sizeof(uint8_t), yuvfile);
}
fclose(yuvfile);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -