--- trunk/vfw/src/xvid.h 2002/04/05 14:40:36 101 +++ trunk/vfw/src/xvid.h 2002/04/05 14:42:37 102 @@ -104,13 +104,22 @@ #define XVID_HALFPEL 0x00000040 /* use halfpel interpolation */ #define XVID_ADAPTIVEQUANT 0x00000080 #define XVID_LUMIMASKING 0x00000100 +#define XVID_LATEINTRA 0x00000200 -#define XVID_INTER4V 0x00000800 - -#define XVID_ME_ZERO 0x00001000 -#define XVID_ME_LOGARITHMIC 0x00002000 -#define XVID_ME_FULLSEARCH 0x00004000 -#define XVID_ME_PMVFAST 0x00008000 +#define XVID_INTERLACING 0x00000400 /* enable interlaced encoding */ +#define XVID_TOPFIELDFIRST 0x00000800 /* set top-field-first flag (cosmetic only) */ +#define XVID_ALTERNATESCAN 0x00001000 /* ?? sets alternate vertical scan flag */ + +#define XVID_HINTEDME_GET 0x00002000 /* receive mv hint data from core (1st pass) */ +#define XVID_HINTEDME_SET 0x00004000 /* send mv hint data to core (2nd pass) */ + +#define XVID_INTER4V 0x00008000 + +#define XVID_ME_ZERO 0x00010000 +#define XVID_ME_LOGARITHMIC 0x00020000 +#define XVID_ME_FULLSEARCH 0x00040000 +#define XVID_ME_PMVFAST 0x00080000 +#define XVID_ME_EPZS 0x00100000 #define PMV_HALFPELDIAMOND16 0x00010000 #define PMV_HALFPELREFINE16 0x00020000 @@ -119,6 +128,7 @@ #define PMV_QUICKSTOP16 0x00100000 /* like early, but without any more refinement */ #define PMV_UNRESTRICTED16 0x00200000 /* unrestricted ME, not implemented */ #define PMV_OVERLAPPING16 0x00400000 /* overlapping ME, not implemented */ +#define PMV_USESQUARES16 0x00800000 #define PMV_HALFPELDIAMOND8 0x01000000 #define PMV_HALFPELREFINE8 0x02000000 @@ -127,6 +137,8 @@ #define PMV_QUICKSTOP8 0x10000000 /* like early, but without any more refinement */ #define PMV_UNRESTRICTED8 0x20000000 /* unrestricted ME, not implemented */ #define PMV_OVERLAPPING8 0x40000000 /* overlapping ME, not implemented */ +#define PMV_USESQUARES8 0x80000000 + typedef struct { @@ -145,6 +157,34 @@ typedef struct { + int x; + int y; +} VECTOR; + +typedef struct +{ + int mode; // macroblock mode + VECTOR mvs[4]; +} MVBLOCKHINT; + +typedef struct +{ + int intra; // frame intra choice + int fcode; // frame fcode + MVBLOCKHINT * block; // caller-allocated array of block hints (mb_width * mb_height) +} MVFRAMEHINT; + +typedef struct +{ + int rawhints; // if set, use MVFRAMEHINT, else use compressed buffer + + MVFRAMEHINT mvhint; + void * hintstream; // compressed hint buffer + int hintlength; // length of buffer (bytes) +} HINTINFO; + +typedef struct +{ int general; // [in] general options int motion; // [in] ME options void * bitstream; // [in] bitstream ptr @@ -158,6 +198,7 @@ int quant; // [in] frame quantizer (vbr) int intra; // [in] force intra frame (vbr only) // [out] intra state + HINTINFO hint; // [in/out] mv hint information } XVID_ENC_FRAME;