155 |
static int ARG_GMC = 0; |
static int ARG_GMC = 0; |
156 |
static int ARG_INTERLACING = 0; |
static int ARG_INTERLACING = 0; |
157 |
static int ARG_QPEL = 0; |
static int ARG_QPEL = 0; |
158 |
|
static int ARG_VHQMODE = 0; |
159 |
static int ARG_CLOSED_GOP = 0; |
static int ARG_CLOSED_GOP = 0; |
160 |
|
|
161 |
#ifndef READ_PNM |
#ifndef READ_PNM |
240 |
int stats_type; |
int stats_type; |
241 |
int stats_quant; |
int stats_quant; |
242 |
int stats_length; |
int stats_length; |
243 |
int use_assembler = 0; |
int use_assembler = 1; |
244 |
|
|
245 |
int input_num; |
int input_num; |
246 |
int output_num; |
int output_num; |
267 |
|
|
268 |
if (strcmp("-asm", argv[i]) == 0) { |
if (strcmp("-asm", argv[i]) == 0) { |
269 |
use_assembler = 1; |
use_assembler = 1; |
270 |
|
} else if (strcmp("-noasm", argv[i]) == 0) { |
271 |
|
use_assembler = 0; |
272 |
} else if (strcmp("-w", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-w", argv[i]) == 0 && i < argc - 1) { |
273 |
i++; |
i++; |
274 |
XDIM = atoi(argv[i]); |
XDIM = atoi(argv[i]); |
315 |
} else if (strcmp("-quality", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-quality", argv[i]) == 0 && i < argc - 1) { |
316 |
i++; |
i++; |
317 |
ARG_QUALITY = atoi(argv[i]); |
ARG_QUALITY = atoi(argv[i]); |
318 |
|
} else if (strcmp("-vhqmode", argv[i]) == 0 && i < argc - 1) { |
319 |
|
i++; |
320 |
|
ARG_VHQMODE = atoi(argv[i]); |
321 |
} else if (strcmp("-framerate", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-framerate", argv[i]) == 0 && i < argc - 1) { |
322 |
i++; |
i++; |
323 |
ARG_FRAMERATE = (float) atof(argv[i]); |
ARG_FRAMERATE = (float) atof(argv[i]); |
351 |
ARG_OUTPUTFILE = argv[i]; |
ARG_OUTPUTFILE = argv[i]; |
352 |
} else if (strcmp("-vop_debug", argv[i]) == 0) { |
} else if (strcmp("-vop_debug", argv[i]) == 0) { |
353 |
ARG_VOPDEBUG = 1; |
ARG_VOPDEBUG = 1; |
354 |
} |
} else if (strcmp("-grey", argv[i]) == 0) { |
|
else if (strcmp("-grey", argv[i]) == 0) { |
|
355 |
ARG_GREYSCALE = 1; |
ARG_GREYSCALE = 1; |
356 |
} |
} else if (strcmp("-qpel", argv[i]) == 0) { |
|
else if (strcmp("-qpel", argv[i]) == 0) { |
|
357 |
ARG_QPEL = 1; |
ARG_QPEL = 1; |
358 |
} else if (strcmp("-gmc", argv[i]) == 0) { |
} else if (strcmp("-gmc", argv[i]) == 0) { |
359 |
ARG_GMC = 1; |
ARG_GMC = 1; |
705 |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
706 |
fprintf(stderr, "Other options\n"); |
fprintf(stderr, "Other options\n"); |
707 |
fprintf(stderr, " -asm : use assembly optmized code\n"); |
fprintf(stderr, " -asm : use assembly optmized code\n"); |
708 |
|
fprintf(stderr, " -noasm : do not use assembly optmized code\n"); |
709 |
fprintf(stderr, " -quality integer: quality ([0..%d])\n", ME_ELEMENTS - 1); |
fprintf(stderr, " -quality integer: quality ([0..%d])\n", ME_ELEMENTS - 1); |
710 |
|
fprintf(stderr, " -vhqmode integer: level of Rate-Distorsion optimizations ([0..4]) (default=0)\n"); |
711 |
fprintf(stderr, " -qpel : use quarter pixel ME\n"); |
fprintf(stderr, " -qpel : use quarter pixel ME\n"); |
712 |
fprintf(stderr, " -gmc : use global motion compensation\n"); |
fprintf(stderr, " -gmc : use global motion compensation\n"); |
713 |
fprintf(stderr, " -interlaced : use interlaced encoding (this is NOT a deinterlacer!)\n"); |
fprintf(stderr, " -interlaced : use interlaced encoding (this is NOT a deinterlacer!)\n"); |
1145 |
if (ARG_QPEL && (xvid_enc_frame.vop_flags & XVID_VOP_INTER4V)) |
if (ARG_QPEL && (xvid_enc_frame.vop_flags & XVID_VOP_INTER4V)) |
1146 |
xvid_enc_frame.motion |= XVID_ME_QUARTERPELREFINE8; |
xvid_enc_frame.motion |= XVID_ME_QUARTERPELREFINE8; |
1147 |
|
|
1148 |
|
switch (ARG_VHQMODE) /* this is the same code as for vfw */ |
1149 |
|
{ |
1150 |
|
case 1: /* VHQ_MODE_DECISION */ |
1151 |
|
xvid_enc_frame.vop_flags |= XVID_VOP_MODEDECISION_RD; |
1152 |
|
break; |
1153 |
|
|
1154 |
|
case 2: /* VHQ_LIMITED_SEARCH */ |
1155 |
|
xvid_enc_frame.vop_flags |= XVID_VOP_MODEDECISION_RD; |
1156 |
|
xvid_enc_frame.motion |= XVID_ME_HALFPELREFINE16_RD; |
1157 |
|
xvid_enc_frame.motion |= XVID_ME_QUARTERPELREFINE16_RD; |
1158 |
|
break; |
1159 |
|
|
1160 |
|
case 3: /* VHQ_MEDIUM_SEARCH */ |
1161 |
|
xvid_enc_frame.vop_flags |= XVID_VOP_MODEDECISION_RD; |
1162 |
|
xvid_enc_frame.motion |= XVID_ME_HALFPELREFINE16_RD; |
1163 |
|
xvid_enc_frame.motion |= XVID_ME_HALFPELREFINE8_RD; |
1164 |
|
xvid_enc_frame.motion |= XVID_ME_QUARTERPELREFINE16_RD; |
1165 |
|
xvid_enc_frame.motion |= XVID_ME_QUARTERPELREFINE8_RD; |
1166 |
|
xvid_enc_frame.motion |= XVID_ME_CHECKPREDICTION_RD; |
1167 |
|
break; |
1168 |
|
|
1169 |
|
case 4: /* VHQ_WIDE_SEARCH */ |
1170 |
|
xvid_enc_frame.vop_flags |= XVID_VOP_MODEDECISION_RD; |
1171 |
|
xvid_enc_frame.motion |= XVID_ME_HALFPELREFINE16_RD; |
1172 |
|
xvid_enc_frame.motion |= XVID_ME_HALFPELREFINE8_RD; |
1173 |
|
xvid_enc_frame.motion |= XVID_ME_QUARTERPELREFINE16_RD; |
1174 |
|
xvid_enc_frame.motion |= XVID_ME_QUARTERPELREFINE8_RD; |
1175 |
|
xvid_enc_frame.motion |= XVID_ME_CHECKPREDICTION_RD; |
1176 |
|
xvid_enc_frame.motion |= XVID_ME_EXTSEARCH_RD; |
1177 |
|
break; |
1178 |
|
|
1179 |
|
default : |
1180 |
|
break; |
1181 |
|
} |
1182 |
|
|
1183 |
/* We don't use special matrices */ |
/* We don't use special matrices */ |
1184 |
xvid_enc_frame.quant_intra_matrix = NULL; |
xvid_enc_frame.quant_intra_matrix = NULL; |
1185 |
xvid_enc_frame.quant_inter_matrix = NULL; |
xvid_enc_frame.quant_inter_matrix = NULL; |