21 |
* along with this program; if not, write to the Free Software |
* along with this program; if not, write to the Free Software |
22 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
23 |
* |
* |
24 |
* $Id: xvid_encraw.c,v 1.11.2.36 2003-10-27 00:48:29 edgomez Exp $ |
* $Id: xvid_encraw.c,v 1.11.2.39 2003-12-16 09:24:48 chl Exp $ |
25 |
* |
* |
26 |
****************************************************************************/ |
****************************************************************************/ |
27 |
|
|
141 |
static char *ARG_INPUTFILE = NULL; |
static char *ARG_INPUTFILE = NULL; |
142 |
static int ARG_INPUTTYPE = 0; |
static int ARG_INPUTTYPE = 0; |
143 |
static int ARG_SAVEMPEGSTREAM = 0; |
static int ARG_SAVEMPEGSTREAM = 0; |
144 |
|
static int ARG_SAVEINDIVIDUAL = 0; |
145 |
static char *ARG_OUTPUTFILE = NULL; |
static char *ARG_OUTPUTFILE = NULL; |
146 |
static int XDIM = 0; |
static int XDIM = 0; |
147 |
static int YDIM = 0; |
static int YDIM = 0; |
328 |
} else if (strcmp("-type", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-type", argv[i]) == 0 && i < argc - 1) { |
329 |
i++; |
i++; |
330 |
ARG_INPUTTYPE = atoi(argv[i]); |
ARG_INPUTTYPE = atoi(argv[i]); |
331 |
} else if (strcmp("-nframes", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-frames", argv[i]) == 0 && i < argc - 1) { |
332 |
i++; |
i++; |
333 |
ARG_MAXFRAMENR = atoi(argv[i]); |
ARG_MAXFRAMENR = atoi(argv[i]); |
334 |
} else if (strcmp("-save", argv[i]) == 0) { |
} else if (strcmp("-save", argv[i]) == 0) { |
335 |
ARG_SAVEMPEGSTREAM = 1; |
ARG_SAVEMPEGSTREAM = 1; |
336 |
|
ARG_SAVEINDIVIDUAL = 1; |
337 |
} else if (strcmp("-debug", argv[i]) == 0) { |
} else if (strcmp("-debug", argv[i]) == 0) { |
338 |
i++; |
i++; |
339 |
if (sscanf(argv[i],"0x%x", &ARG_DEBUG) || sscanf(argv[i],"%d", &ARG_DEBUG)) ; |
if (sscanf(argv[i],"0x%x", &ARG_DEBUG) || sscanf(argv[i],"%d", &ARG_DEBUG)) ; |
340 |
} else if (strcmp("-o", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-o", argv[i]) == 0 && i < argc - 1) { |
341 |
|
ARG_SAVEMPEGSTREAM = 1; |
342 |
i++; |
i++; |
343 |
ARG_OUTPUTFILE = argv[i]; |
ARG_OUTPUTFILE = argv[i]; |
344 |
} else if (strcmp("-vop_debug", argv[i]) == 0) { |
} else if (strcmp("-vop_debug", argv[i]) == 0) { |
363 |
* Arguments checking |
* Arguments checking |
364 |
****************************************************************************/ |
****************************************************************************/ |
365 |
|
|
366 |
if (XDIM <= 0 || XDIM >= 2048 || YDIM <= 0 || YDIM >= 2048) { |
if (XDIM <= 0 || XDIM >= 4096 || YDIM <= 0 || YDIM >= 4096) { |
367 |
fprintf(stderr, |
fprintf(stderr, |
368 |
"Trying to retreive width and height from PGM header\n"); |
"Trying to retreive width and height from PGM header\n"); |
369 |
ARG_INPUTTYPE = 1; /* pgm */ |
ARG_INPUTTYPE = 1; /* pgm */ |
547 |
****************************************************************************/ |
****************************************************************************/ |
548 |
|
|
549 |
if (m4v_size > 0 && ARG_SAVEMPEGSTREAM) { |
if (m4v_size > 0 && ARG_SAVEMPEGSTREAM) { |
550 |
|
|
551 |
/* Save single files */ |
/* Save single files */ |
552 |
if (out_file == NULL) { |
if (ARG_SAVEINDIVIDUAL) { |
553 |
|
FILE *out; |
554 |
sprintf(filename, "%sframe%05d.m4v", filepath, output_num); |
sprintf(filename, "%sframe%05d.m4v", filepath, output_num); |
555 |
out_file = fopen(filename, "wb"); |
out = fopen(filename, "w+b"); |
556 |
fwrite(mp4_buffer, m4v_size, 1, out_file); |
fwrite(mp4_buffer, m4v_size, 1, out); |
557 |
fclose(out_file); |
fclose(out); |
|
out_file = NULL; |
|
558 |
output_num++; |
output_num++; |
559 |
} else { |
} |
560 |
|
|
561 |
/* Write mp4 data */ |
/* Save ES stream */ |
562 |
|
if (ARG_OUTPUTFILE && out_file) |
563 |
fwrite(mp4_buffer, 1, m4v_size, out_file); |
fwrite(mp4_buffer, 1, m4v_size, out_file); |
|
|
|
|
} |
|
564 |
} |
} |
565 |
|
|
566 |
input_num++; |
input_num++; |
669 |
fprintf(stderr, " -type integer: input data type (yuv=0, pgm=1)\n"); |
fprintf(stderr, " -type integer: input data type (yuv=0, pgm=1)\n"); |
670 |
fprintf(stderr, " -w integer: frame width ([1.2048])\n"); |
fprintf(stderr, " -w integer: frame width ([1.2048])\n"); |
671 |
fprintf(stderr, " -h integer: frame height ([1.2048])\n"); |
fprintf(stderr, " -h integer: frame height ([1.2048])\n"); |
672 |
fprintf(stderr, " -nframes integer: number of frames to encode\n"); |
fprintf(stderr, " -frames integer: number of frames to encode\n"); |
673 |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
674 |
fprintf(stderr, "Output options:\n"); |
fprintf(stderr, "Output options:\n"); |
675 |
fprintf(stderr, " -dump : save decoder output\n"); |
fprintf(stderr, " -dump : save decoder output\n"); |
676 |
fprintf(stderr, " -save : save mpeg4 raw stream\n"); |
fprintf(stderr, " -save : save an Elementary Stream file per frame\n"); |
677 |
fprintf(stderr, " -o string: output filename\n"); |
fprintf(stderr, " -o string: save an Elementary Stream for the complete sequence\n"); |
678 |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
679 |
fprintf(stderr, "BFrames options:\n"); |
fprintf(stderr, "BFrames options:\n"); |
680 |
fprintf(stderr, " -max_bframes integer: max bframes (default=0)\n"); |
fprintf(stderr, " -max_bframes integer: max bframes (default=0)\n"); |
925 |
/* Width and Height of input frames */ |
/* Width and Height of input frames */ |
926 |
xvid_enc_create.width = XDIM; |
xvid_enc_create.width = XDIM; |
927 |
xvid_enc_create.height = YDIM; |
xvid_enc_create.height = YDIM; |
928 |
|
xvid_enc_create.profile = XVID_PROFILE_AS_L4; |
929 |
|
|
930 |
/* init plugins */ |
/* init plugins */ |
931 |
xvid_enc_create.zones = ZONES; |
xvid_enc_create.zones = ZONES; |
1095 |
/* Set up core's general features */ |
/* Set up core's general features */ |
1096 |
xvid_enc_frame.vop_flags = vop_presets[ARG_QUALITY]; |
xvid_enc_frame.vop_flags = vop_presets[ARG_QUALITY]; |
1097 |
if (ARG_GMC) |
if (ARG_GMC) |
1098 |
xvid_enc_frame.vop_flags |= XVID_ME_GME_REFINE; |
xvid_enc_frame.vol_flags |= XVID_ME_GME_REFINE; |
1099 |
|
|
1100 |
if (ARG_VOPDEBUG) { |
if (ARG_VOPDEBUG) { |
1101 |
xvid_enc_frame.vop_flags |= XVID_VOP_DEBUG; |
xvid_enc_frame.vop_flags |= XVID_VOP_DEBUG; |