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.1.2.1 2003-01-12 17:21:43 edgomez Exp $ |
* $Id: xvid_encraw.c,v 1.1.2.2 2003-01-13 00:36:27 edgomez Exp $ |
23 |
* |
* |
24 |
****************************************************************************/ |
****************************************************************************/ |
25 |
|
|
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; |
104 |
|
static int ARG_BQRATIO = 150; |
105 |
|
static int ARG_BQOFFSET = 100; |
106 |
|
static int ARG_MAXBFRAMES = 0; |
107 |
#define IMAGE_SIZE(x,y) ((x)*(y)*3/2) |
#define IMAGE_SIZE(x,y) ((x)*(y)*3/2) |
108 |
|
|
109 |
#define MAX(A,B) ( ((A)>(B)) ? (A) : (B) ) |
#define MAX(A,B) ( ((A)>(B)) ? (A) : (B) ) |
203 |
i++; |
i++; |
204 |
ARG_BITRATE = atoi(argv[i]); |
ARG_BITRATE = atoi(argv[i]); |
205 |
} |
} |
206 |
|
else if (strcmp("-bn", argv[i]) == 0 && i < argc - 1 ) { |
207 |
|
i++; |
208 |
|
ARG_MAXBFRAMES = atoi(argv[i]); |
209 |
|
} |
210 |
|
else if (strcmp("-bqr", argv[i]) == 0 && i < argc - 1 ) { |
211 |
|
i++; |
212 |
|
ARG_BQRATIO = atoi(argv[i]); |
213 |
|
} |
214 |
|
else if (strcmp("-bqo", argv[i]) == 0 && i < argc - 1 ) { |
215 |
|
i++; |
216 |
|
ARG_BQOFFSET = atoi(argv[i]); |
217 |
|
} |
218 |
else if (strcmp("-q", argv[i]) == 0 && i < argc - 1 ) { |
else if (strcmp("-q", argv[i]) == 0 && i < argc - 1 ) { |
219 |
i++; |
i++; |
220 |
ARG_QUALITY = atoi(argv[i]); |
ARG_QUALITY = atoi(argv[i]); |
447 |
totalenctime += enctime; |
totalenctime += enctime; |
448 |
totalsize += m4v_size; |
totalsize += m4v_size; |
449 |
|
|
450 |
printf("Frame %5d: intra %1d, enctime=%6.1f ms, size=%6dbytes\n", |
{ |
451 |
(int)filenr, (int)frame_type, (float)enctime, (int)m4v_size); |
char *type; |
452 |
|
|
453 |
|
switch(frame_type) { |
454 |
|
case 0: type = "P"; break; |
455 |
|
case 1: type = "I"; break; |
456 |
|
case 2: type = "B"; break; |
457 |
|
default: type = "N"; break; |
458 |
|
} |
459 |
|
|
460 |
|
printf("Frame %5d: type %s, enctime=%6.1f ms, size=%6d bytes\n", |
461 |
|
(int)filenr, type, (float)enctime, (int)m4v_size); |
462 |
|
|
463 |
|
} |
464 |
|
|
465 |
/***************************************************************************** |
/***************************************************************************** |
466 |
* Save hints to file |
* Save hints to file |
518 |
totalsize /= filenr; |
totalsize /= filenr; |
519 |
totalenctime /= filenr; |
totalenctime /= filenr; |
520 |
|
|
521 |
printf("Avg: enctime %5.2f ms, %5.2f fps, filesize %7d bytes\n", |
printf("Avg: enctime %5.2f ms, %5.2f fps, size %7d bytes\n", |
522 |
totalenctime, 1000/totalenctime, (int)totalsize); |
totalenctime, 1000/totalenctime, (int)totalsize); |
523 |
|
|
524 |
/***************************************************************************** |
/***************************************************************************** |
586 |
fprintf(stderr, " -w integer : frame width ([1.2048])\n"); |
fprintf(stderr, " -w integer : frame width ([1.2048])\n"); |
587 |
fprintf(stderr, " -h integer : frame height ([1.2048])\n"); |
fprintf(stderr, " -h integer : frame height ([1.2048])\n"); |
588 |
fprintf(stderr, " -b integer : target bitrate (>0 | default=900kbit)\n"); |
fprintf(stderr, " -b integer : target bitrate (>0 | default=900kbit)\n"); |
589 |
|
fprintf(stderr, " -b integer : target bitrate (>0 | default=900kbit)\n"); |
590 |
|
fprintf(stderr, " -bn integer : max bframes (default=0)\n"); |
591 |
|
fprintf(stderr, " -bqr integer : bframe quantizer ratio (default=150)\n"); |
592 |
|
fprintf(stderr, " -bqo integer : bframe quantizer offset (default=100)\n"); |
593 |
fprintf(stderr, " -f float : target framerate (>0)\n"); |
fprintf(stderr, " -f float : target framerate (>0)\n"); |
594 |
fprintf(stderr, " -i string : input filename (default=stdin)\n"); |
fprintf(stderr, " -i string : input filename (default=stdin)\n"); |
595 |
fprintf(stderr, " -t integer : input data type (yuv=0, pgm=1)\n"); |
fprintf(stderr, " -t integer : input data type (yuv=0, pgm=1)\n"); |
730 |
xparam.min_quantizer = ARG_MINQUANT; |
xparam.min_quantizer = ARG_MINQUANT; |
731 |
xparam.max_quantizer = ARG_MAXQUANT; |
xparam.max_quantizer = ARG_MAXQUANT; |
732 |
xparam.max_key_interval = (int)ARG_FRAMERATE*10; |
xparam.max_key_interval = (int)ARG_FRAMERATE*10; |
733 |
xparam.bquant_ratio = 150; |
xparam.bquant_ratio = ARG_BQRATIO; |
734 |
xparam.bquant_offset = 100; |
xparam.bquant_offset = ARG_BQOFFSET; |
735 |
xparam.max_bframes = 0; |
xparam.max_bframes = ARG_MAXBFRAMES; |
736 |
|
xparam.frame_drop_ratio = 0; |
737 |
xparam.global = 0; |
xparam.global = 0; |
738 |
|
|
739 |
/* 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 */ |