1 #include "colormodels.h"
8 //#define COMPRESSOR QUICKTIME_JPEG
9 #define COMPRESSOR QUICKTIME_MP4V
14 #define FRAMERATE (24000.0 / 1001.0)
15 #define QUANTIZATION 5
17 void signal_handler(int signum)
19 printf("Got signal %d\n", signum);
22 quicktime_close(file);
28 int main(int argc, char *argv[])
32 printf("Usage: cat yuvstream | yuv2mov movie.mov\n"
33 " Create a movie from a yuv 4:2:0 planar stream.\n");
37 signal(SIGINT, signal_handler);
42 for(i = 1; i < argc; i++)
46 strcpy(filename, argv[i]);
50 printf("Unknown option %s\n", argv[i]);
57 printf("No output filename provided.\n");
61 if(!(file = quicktime_open(filename, 0, 1)))
63 printf("Open '%s' failed\n", filename);
67 quicktime_set_video(file,
76 quicktime_set_parameter(file, "ffmpeg_bitrate", &value);
78 quicktime_set_parameter(file, "ffmpeg_bitrate_tolerance", &value);
80 quicktime_set_parameter(file, "ffmpeg_interlaced", &value);
82 quicktime_set_parameter(file, "ffmpeg_quantizer", &value);
84 quicktime_set_parameter(file, "ffmpeg_gop_size", &value);
86 quicktime_set_parameter(file, "ffmpeg_fix_bitrate", &value);
89 quicktime_set_parameter(file, "jpeg_quality", &value);
91 int ysize = INWIDTH * INHEIGHT;
92 int csize = INWIDTH * INHEIGHT / 4;
93 unsigned char *buffer = malloc(INWIDTH * INHEIGHT * 3 / 2);
94 unsigned char *outrows[3];
96 outrows[0] = buffer + CROP_Y1 * INWIDTH;
97 outrows[1] = buffer + ysize + CROP_Y1 / 2 * INWIDTH / 2;
98 outrows[2] = buffer + ysize + csize + CROP_Y1 / 2 * INWIDTH / 2;
102 fread(buffer, INWIDTH * INHEIGHT * 3 / 2, 1, stdin);
103 quicktime_set_cmodel(file, BC_YUV420P);
104 quicktime_encode_video(file,
107 printf("Wrote frame %d\r", frame++);
110 quicktime_close(file);