36 |
|
|
37 |
#include <stdio.h> |
#include <stdio.h> |
38 |
#include <stdlib.h> |
#include <stdlib.h> |
39 |
|
#include <string.h> |
40 |
#include <math.h> |
#include <math.h> |
41 |
#ifndef _MSC_VER |
#ifndef _MSC_VER |
42 |
#include <sys/time.h> |
#include <sys/time.h> |
51 |
****************************************************************************/ |
****************************************************************************/ |
52 |
|
|
53 |
static int const motion_presets[7] = { |
static int const motion_presets[7] = { |
54 |
0, // Q 0 |
0, /* Q 0 */ |
55 |
PMV_EARLYSTOP16, // Q 1 |
PMV_EARLYSTOP16, /* Q 1 */ |
56 |
PMV_EARLYSTOP16, // Q 2 |
PMV_EARLYSTOP16, /* Q 2 */ |
57 |
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16, // Q 3 |
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16, /* Q 3 */ |
58 |
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16, // Q 4 |
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16, /* Q 4 */ |
59 |
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EARLYSTOP8 | // Q 5 |
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EARLYSTOP8 | /* Q 5 */ |
60 |
PMV_HALFPELREFINE8, |
PMV_HALFPELREFINE8, |
61 |
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EXTSEARCH16 | // Q 6 |
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EXTSEARCH16 | /* Q 6 */ |
62 |
PMV_USESQUARES16 | PMV_EARLYSTOP8 | PMV_HALFPELREFINE8 |
PMV_USESQUARES16 | PMV_EARLYSTOP8 | PMV_HALFPELREFINE8 |
63 |
}; |
}; |
64 |
|
|
65 |
static int const general_presets[7] = { |
static int const general_presets[7] = { |
66 |
XVID_H263QUANT, // Q 0 |
XVID_H263QUANT, /* Q 0 */ |
67 |
XVID_MPEGQUANT, // Q 1 |
XVID_MPEGQUANT, /* Q 1 */ |
68 |
XVID_H263QUANT, // Q 2 |
XVID_H263QUANT, /* Q 2 */ |
69 |
XVID_H263QUANT | XVID_HALFPEL, // Q 3 |
XVID_H263QUANT | XVID_HALFPEL, /* Q 3 */ |
70 |
XVID_H263QUANT | XVID_HALFPEL | XVID_INTER4V, // Q 4 |
XVID_H263QUANT | XVID_HALFPEL | XVID_INTER4V, /* Q 4 */ |
71 |
XVID_H263QUANT | XVID_HALFPEL | XVID_INTER4V, // Q 5 |
XVID_H263QUANT | XVID_HALFPEL | XVID_INTER4V, /* Q 5 */ |
72 |
XVID_H263QUANT | XVID_HALFPEL | XVID_INTER4V // Q 6 |
XVID_H263QUANT | XVID_HALFPEL | XVID_INTER4V /* Q 6 */ |
73 |
}; |
}; |
74 |
|
|
75 |
|
|
354 |
do { |
do { |
355 |
|
|
356 |
if (ARG_INPUTTYPE) |
if (ARG_INPUTTYPE) |
357 |
status = read_pgmdata(in_file, in_buffer); // read PGM data (YUV-format) |
status = read_pgmdata(in_file, in_buffer); /* read PGM data (YUV-format) */ |
358 |
else |
else |
359 |
status = read_yuvdata(in_file, in_buffer); // read raw data (YUV-format) |
status = read_yuvdata(in_file, in_buffer); /* read raw data (YUV-format) */ |
360 |
|
|
361 |
if (status) |
if (status) |
362 |
{ |
{ |
649 |
XVID_ENC_STATS xstats; |
XVID_ENC_STATS xstats; |
650 |
|
|
651 |
xframe.bitstream = bitstream; |
xframe.bitstream = bitstream; |
652 |
xframe.length = -1; // this is written by the routine |
xframe.length = -1; /* this is written by the routine */ |
653 |
|
|
654 |
xframe.image = image; |
xframe.image = image; |
655 |
xframe.colorspace = XVID_CSP_YV12; // defined in <xvid.h> |
xframe.colorspace = XVID_CSP_YV12; /* defined in <xvid.h> */ |
656 |
|
|
657 |
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) */ |
658 |
|
|
659 |
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) */ |
660 |
|
|
661 |
xframe.motion = motion_presets[ARG_QUALITY]; |
xframe.motion = motion_presets[ARG_QUALITY]; |
662 |
xframe.general = general_presets[ARG_QUALITY]; |
xframe.general = general_presets[ARG_QUALITY]; |