101 |
static int ARG_HINTMODE = HINT_MODE_NONE; |
static int ARG_HINTMODE = HINT_MODE_NONE; |
102 |
static int XDIM = 0; |
static int XDIM = 0; |
103 |
static int YDIM = 0; |
static int YDIM = 0; |
|
static int ARG_BQRATIO = 150; |
|
|
static int ARG_BQOFFSET = 100; |
|
|
static int ARG_MAXBFRAMES = 0; |
|
104 |
#define IMAGE_SIZE(x,y) ((x)*(y)*3/2) |
#define IMAGE_SIZE(x,y) ((x)*(y)*3/2) |
105 |
|
|
106 |
#define MAX(A,B) ( ((A)>(B)) ? (A) : (B) ) |
#define MAX(A,B) ( ((A)>(B)) ? (A) : (B) ) |
200 |
i++; |
i++; |
201 |
ARG_BITRATE = atoi(argv[i]); |
ARG_BITRATE = atoi(argv[i]); |
202 |
} |
} |
|
else if (strcmp("-bn", argv[i]) == 0 && i < argc - 1 ) { |
|
|
i++; |
|
|
ARG_MAXBFRAMES = atoi(argv[i]); |
|
|
} |
|
|
else if (strcmp("-bqr", argv[i]) == 0 && i < argc - 1 ) { |
|
|
i++; |
|
|
ARG_BQRATIO = atoi(argv[i]); |
|
|
} |
|
|
else if (strcmp("-bqo", argv[i]) == 0 && i < argc - 1 ) { |
|
|
i++; |
|
|
ARG_BQOFFSET = atoi(argv[i]); |
|
|
} |
|
203 |
else if (strcmp("-q", argv[i]) == 0 && i < argc - 1 ) { |
else if (strcmp("-q", argv[i]) == 0 && i < argc - 1 ) { |
204 |
i++; |
i++; |
205 |
ARG_QUALITY = atoi(argv[i]); |
ARG_QUALITY = atoi(argv[i]); |
432 |
totalenctime += enctime; |
totalenctime += enctime; |
433 |
totalsize += m4v_size; |
totalsize += m4v_size; |
434 |
|
|
435 |
{ |
printf("Frame %5d: intra %1d, enctime=%6.1f ms, size=%6dbytes\n", |
436 |
char *type; |
(int)filenr, (int)frame_type, (float)enctime, (int)m4v_size); |
|
|
|
|
switch(frame_type) { |
|
|
case 0: type = "P"; break; |
|
|
case 1: type = "I"; break; |
|
|
case 2: type = "B"; break; |
|
|
default: type = "N"; break; |
|
|
} |
|
|
|
|
|
printf("Frame %5d: type %s, enctime=%6.1f ms, size=%6d bytes\n", |
|
|
(int)filenr, type, (float)enctime, (int)m4v_size); |
|
|
|
|
|
} |
|
437 |
|
|
438 |
/***************************************************************************** |
/***************************************************************************** |
439 |
* Save hints to file |
* Save hints to file |
491 |
totalsize /= filenr; |
totalsize /= filenr; |
492 |
totalenctime /= filenr; |
totalenctime /= filenr; |
493 |
|
|
494 |
printf("Avg: enctime %5.2f ms, %5.2f fps, size %7d bytes\n", |
printf("Avg: enctime %5.2f ms, %5.2f fps, filesize %7d bytes\n", |
495 |
totalenctime, 1000/totalenctime, (int)totalsize); |
totalenctime, 1000/totalenctime, (int)totalsize); |
496 |
|
|
497 |
/***************************************************************************** |
/***************************************************************************** |
536 |
/* Return time elapsed time in miliseconds since the program started */ |
/* Return time elapsed time in miliseconds since the program started */ |
537 |
static double msecond() |
static double msecond() |
538 |
{ |
{ |
539 |
#ifndef _MSC_VER |
#ifndef WIN32 |
540 |
struct timeval tv; |
struct timeval tv; |
541 |
gettimeofday(&tv, 0); |
gettimeofday(&tv, 0); |
542 |
return tv.tv_sec*1.0e3 + tv.tv_usec * 1.0e-3; |
return tv.tv_sec*1.0e3 + tv.tv_usec * 1.0e-3; |
559 |
fprintf(stderr, " -w integer : frame width ([1.2048])\n"); |
fprintf(stderr, " -w integer : frame width ([1.2048])\n"); |
560 |
fprintf(stderr, " -h integer : frame height ([1.2048])\n"); |
fprintf(stderr, " -h integer : frame height ([1.2048])\n"); |
561 |
fprintf(stderr, " -b integer : target bitrate (>0 | default=900kbit)\n"); |
fprintf(stderr, " -b integer : target bitrate (>0 | default=900kbit)\n"); |
|
fprintf(stderr, " -b integer : target bitrate (>0 | default=900kbit)\n"); |
|
|
fprintf(stderr, " -bn integer : max bframes (default=0)\n"); |
|
|
fprintf(stderr, " -bqr integer : bframe quantizer ratio (default=150)\n"); |
|
|
fprintf(stderr, " -bqo integer : bframe quantizer offset (default=100)\n"); |
|
562 |
fprintf(stderr, " -f float : target framerate (>0)\n"); |
fprintf(stderr, " -f float : target framerate (>0)\n"); |
563 |
fprintf(stderr, " -i string : input filename (default=stdin)\n"); |
fprintf(stderr, " -i string : input filename (default=stdin)\n"); |
564 |
fprintf(stderr, " -t integer : input data type (yuv=0, pgm=1)\n"); |
fprintf(stderr, " -t integer : input data type (yuv=0, pgm=1)\n"); |
699 |
xparam.min_quantizer = ARG_MINQUANT; |
xparam.min_quantizer = ARG_MINQUANT; |
700 |
xparam.max_quantizer = ARG_MAXQUANT; |
xparam.max_quantizer = ARG_MAXQUANT; |
701 |
xparam.max_key_interval = (int)ARG_FRAMERATE*10; |
xparam.max_key_interval = (int)ARG_FRAMERATE*10; |
|
xparam.bquant_ratio = ARG_BQRATIO; |
|
|
xparam.bquant_offset = ARG_BQOFFSET; |
|
|
xparam.max_bframes = ARG_MAXBFRAMES; |
|
|
xparam.frame_drop_ratio = 0; |
|
|
xparam.global = 0; |
|
702 |
|
|
703 |
/* I use a small value here, since will not encode whole movies, but short clips */ |
/* I use a small value here, since will not encode whole movies, but short clips */ |
704 |
|
|
735 |
xframe.intra = -1; /* let the codec decide between I-frame (1) and P-frame (0) */ |
xframe.intra = -1; /* let the codec decide between I-frame (1) and P-frame (0) */ |
736 |
|
|
737 |
xframe.quant = ARG_QUANTI; /* is quant != 0, use a fixed quant (and ignore bitrate) */ |
xframe.quant = ARG_QUANTI; /* is quant != 0, use a fixed quant (and ignore bitrate) */ |
|
xframe.bquant = 0; |
|
738 |
|
|
739 |
xframe.motion = motion_presets[ARG_QUALITY]; |
xframe.motion = motion_presets[ARG_QUALITY]; |
740 |
xframe.general = general_presets[ARG_QUALITY]; |
xframe.general = general_presets[ARG_QUALITY]; |
741 |
xframe.quant_intra_matrix = xframe.quant_inter_matrix = NULL; |
xframe.quant_intra_matrix = xframe.quant_inter_matrix = NULL; |
|
xframe.stride = XDIM; |
|
742 |
|
|
743 |
xframe.hint.hintstream = hints_buffer; |
xframe.hint.hintstream = hints_buffer; |
744 |
|
|