19 |
* along with this program; if not, write to the Free Software |
* along with this program; if not, write to the Free Software |
20 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 |
* |
* |
22 |
* $Id: xvid_encraw.c,v 1.11.2.24 2003-05-15 17:53:11 edgomez Exp $ |
* $Id: xvid_encraw.c,v 1.11.2.25 2003-05-17 13:21:26 suxen_drol Exp $ |
23 |
* |
* |
24 |
****************************************************************************/ |
****************************************************************************/ |
25 |
|
|
131 |
static int ARG_QUALITY = ME_ELEMENTS - 1; |
static int ARG_QUALITY = ME_ELEMENTS - 1; |
132 |
static float ARG_FRAMERATE = 25.00f; |
static float ARG_FRAMERATE = 25.00f; |
133 |
static int ARG_MAXFRAMENR = ABS_MAXFRAMENR; |
static int ARG_MAXFRAMENR = ABS_MAXFRAMENR; |
134 |
|
static int ARG_MAXKEYINTERVAL = 0; |
135 |
static char *ARG_INPUTFILE = NULL; |
static char *ARG_INPUTFILE = NULL; |
136 |
static int ARG_INPUTTYPE = 0; |
static int ARG_INPUTTYPE = 0; |
137 |
static int ARG_SAVEMPEGSTREAM = 0; |
static int ARG_SAVEMPEGSTREAM = 0; |
143 |
static int ARG_MAXBFRAMES = 0; |
static int ARG_MAXBFRAMES = 0; |
144 |
static int ARG_PACKED = 0; |
static int ARG_PACKED = 0; |
145 |
static int ARG_DEBUG = 0; |
static int ARG_DEBUG = 0; |
146 |
|
static int ARG_VOPDEBUG = 0; |
147 |
|
|
148 |
#define IMAGE_SIZE(x,y) ((x)*(y)*3/2) |
#define IMAGE_SIZE(x,y) ((x)*(y)*3/2) |
149 |
|
|
293 |
} else if (strcmp("-framerate", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-framerate", argv[i]) == 0 && i < argc - 1) { |
294 |
i++; |
i++; |
295 |
ARG_FRAMERATE = (float) atof(argv[i]); |
ARG_FRAMERATE = (float) atof(argv[i]); |
296 |
|
} else if (strcmp("-max_key_interval", argv[i]) == 0 && i < argc - 1) { |
297 |
|
i++; |
298 |
|
ARG_MAXKEYINTERVAL = atoi(argv[i]); |
299 |
} else if (strcmp("-i", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-i", argv[i]) == 0 && i < argc - 1) { |
300 |
i++; |
i++; |
301 |
ARG_INPUTFILE = argv[i]; |
ARG_INPUTFILE = argv[i]; |
314 |
} else if (strcmp("-save", argv[i]) == 0) { |
} else if (strcmp("-save", argv[i]) == 0) { |
315 |
ARG_SAVEMPEGSTREAM = 1; |
ARG_SAVEMPEGSTREAM = 1; |
316 |
} else if (strcmp("-debug", argv[i]) == 0) { |
} else if (strcmp("-debug", argv[i]) == 0) { |
317 |
ARG_DEBUG = 1; |
i++; |
318 |
|
if (sscanf(argv[i],"0x%x", &ARG_DEBUG) || sscanf(argv[i],"%d", &ARG_DEBUG)) ; |
319 |
} else if (strcmp("-o", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-o", argv[i]) == 0 && i < argc - 1) { |
320 |
i++; |
i++; |
321 |
ARG_OUTPUTFILE = argv[i]; |
ARG_OUTPUTFILE = argv[i]; |
322 |
|
} else if (strcmp("-vop_debug", argv[i]) == 0) { |
323 |
|
ARG_VOPDEBUG = 1; |
324 |
|
|
325 |
} else if (strcmp("-help", argv[i])) { |
} else if (strcmp("-help", argv[i])) { |
326 |
usage(); |
usage(); |
327 |
return (0); |
return (0); |
455 |
|
|
456 |
/* Write the Frame statistics */ |
/* Write the Frame statistics */ |
457 |
|
|
458 |
printf("%5d: key=%i, time= %6.0f, length= %7d", !result ? input_num : -1, |
printf("%5d: key=%i, time= %6.0f, len= %7d", !result ? input_num : -1, |
459 |
key, (float) enctime, (int) m4v_size); |
key, (float) enctime, (int) m4v_size); |
460 |
|
|
461 |
if (stats_type > 0) { /* !XVID_TYPE_NOTHING */ |
if (stats_type > 0) { /* !XVID_TYPE_NOTHING */ |
478 |
break; |
break; |
479 |
} |
} |
480 |
|
|
481 |
printf(" | type=%s, quant= %2d, length= %7d", type, stats_quant, |
printf(" | type=%s, quant= %2d, len= %7d", type, stats_quant, |
482 |
stats_length); |
stats_length); |
483 |
|
|
484 |
#define SSE2PSNR(sse, width, height) ((!(sse))?0.0f : 48.131f - 10*(float)log10((float)(sse)/((float)((width)*(height))))) |
#define SSE2PSNR(sse, width, height) ((!(sse))?0.0f : 48.131f - 10*(float)log10((float)(sse)/((float)((width)*(height))))) |
651 |
fprintf(stderr, " -pass2 filename : twopass mode (2nd pass)\n"); |
fprintf(stderr, " -pass2 filename : twopass mode (2nd pass)\n"); |
652 |
fprintf(stderr, " -zq starting_frame float : bitrate zone; quant\n"); |
fprintf(stderr, " -zq starting_frame float : bitrate zone; quant\n"); |
653 |
fprintf(stderr, " -zw starting_frame float : bitrate zone; weight\n"); |
fprintf(stderr, " -zw starting_frame float : bitrate zone; weight\n"); |
654 |
|
fprintf(stderr, " -max_key_interval integer : maximum keyframe interval\n"); |
655 |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
656 |
fprintf(stderr, "Other options\n"); |
fprintf(stderr, "Other options\n"); |
657 |
fprintf(stderr, " -asm : use assembly optmized code\n"); |
fprintf(stderr, " -asm : use assembly optmized code\n"); |
813 |
/* Set version -- version checking will done by xvidcore */ |
/* Set version -- version checking will done by xvidcore */ |
814 |
memset(&xvid_gbl_init, 0, sizeof(xvid_gbl_init)); |
memset(&xvid_gbl_init, 0, sizeof(xvid_gbl_init)); |
815 |
xvid_gbl_init.version = XVID_VERSION; |
xvid_gbl_init.version = XVID_VERSION; |
816 |
|
printf("0x%x\n", ARG_DEBUG); |
817 |
|
xvid_gbl_init.debug = ARG_DEBUG; |
818 |
|
|
819 |
|
|
820 |
/* Do we have to enable ASM optimizations ? */ |
/* Do we have to enable ASM optimizations ? */ |
894 |
xvid_enc_create.num_plugins++; |
xvid_enc_create.num_plugins++; |
895 |
} |
} |
896 |
|
|
897 |
if (ARG_DEBUG) { |
/* if (ARG_DEBUG) { |
898 |
plugins[xvid_enc_create.num_plugins].func = rawenc_debug; |
plugins[xvid_enc_create.num_plugins].func = rawenc_debug; |
899 |
plugins[xvid_enc_create.num_plugins].param = NULL; |
plugins[xvid_enc_create.num_plugins].param = NULL; |
900 |
xvid_enc_create.num_plugins++; |
xvid_enc_create.num_plugins++; |
901 |
} |
}*/ |
902 |
|
|
903 |
/* No fancy thread tests */ |
/* No fancy thread tests */ |
904 |
xvid_enc_create.num_threads = 0; |
xvid_enc_create.num_threads = 0; |
913 |
} |
} |
914 |
|
|
915 |
/* Maximum key frame interval */ |
/* Maximum key frame interval */ |
916 |
|
|
917 |
|
if (ARG_MAXKEYINTERVAL > 0) { |
918 |
|
xvid_enc_create.max_key_interval = ARG_MAXKEYINTERVAL; |
919 |
|
}else { |
920 |
xvid_enc_create.max_key_interval = (int) ARG_FRAMERATE *10; |
xvid_enc_create.max_key_interval = (int) ARG_FRAMERATE *10; |
921 |
|
} |
922 |
|
|
923 |
/* Bframes settings */ |
/* Bframes settings */ |
924 |
xvid_enc_create.max_bframes = ARG_MAXBFRAMES; |
xvid_enc_create.max_bframes = ARG_MAXBFRAMES; |
998 |
|
|
999 |
/* Set up core's general features */ |
/* Set up core's general features */ |
1000 |
xvid_enc_frame.vop_flags = vop_presets[ARG_QUALITY]; |
xvid_enc_frame.vop_flags = vop_presets[ARG_QUALITY]; |
1001 |
|
if (ARG_VOPDEBUG) { |
1002 |
|
xvid_enc_frame.vop_flags |= XVID_VOP_DEBUG; |
1003 |
|
} |
1004 |
|
|
1005 |
/* Frame type -- let core decide for us */ |
/* Frame type -- let core decide for us */ |
1006 |
xvid_enc_frame.type = XVID_TYPE_AUTO; |
xvid_enc_frame.type = XVID_TYPE_AUTO; |