--- global.h 2003/06/28 15:50:55 1.21.2.7 +++ global.h 2003/12/08 13:20:59 1.21.2.11 @@ -19,7 +19,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: global.h,v 1.21.2.7 2003/06/28 15:50:55 chl Exp $ + * $Id: global.h,v 1.21.2.11 2003/12/08 13:20:59 syskin Exp $ * ****************************************************************************/ @@ -50,7 +50,7 @@ /* - * vop coding types + * vop coding types * intra, prediction, backward, sprite, not_coded */ #define I_VOP 0 @@ -83,20 +83,20 @@ -typedef struct +typedef struct { VECTOR duv[3]; } WARPPOINTS; -/* save all warping parameters for GMC once and for all, instead of +/* save all warping parameters for GMC once and for all, instead of recalculating for every block. This is needed for encoding&decoding - When switching to incremental calculations, this will get much shorter + When switching to incremental calculations, this will get much shorter */ /* we don't include WARPPOINTS wp here, but in FRAMEINFO itself */ -typedef struct +typedef struct { int num_wp; /* [input]: 0=none, 1=translation, 2,3 = warping */ /* a value of -1 means: "structure not initialized!" */ @@ -104,13 +104,13 @@ int W; int H; - - int ss; - int smask; - int sigma; - - int r; - int rho; + + int ss; + int smask; + int sigma; + + int r; + int rho; int i0s; int j0s; @@ -118,43 +118,47 @@ int j1s; int i2s; int j2s; - - int i1ss; - int j1ss; - int i2ss; - int j2ss; + + int i1ss; + int j1ss; + int i2ss; + int j2ss; int alpha; int beta; - int Ws; - int Hs; - - int dxF, dyF, dxG, dyG; + int Ws; + int Hs; + + int dxF, dyF, dxG, dyG; int Fo, Go; int cFo, cGo; -} -GMC_DATA; +} GMC_DATA; -typedef struct NEW_GMC_DATA NEW_GMC_DATA; -struct NEW_GMC_DATA +typedef struct _NEW_GMC_DATA { - int num_wp; // 0=none, 1=translation, 2,3 = warping - // a value of -1 means: "structure not initialized!" - int accuracy; // {0,1,2,3} => {1/2,1/4,1/8,1/16} pel - - int sW, sH; // sprite size * 16 - int dU[2], dV[2], Uo, Vo, Uco, Vco; // gradient, calculated from warp points - - void (*predict_16x16)(const NEW_GMC_DATA * const This, - uint8_t *dst, const uint8_t *src, - int dststride, int srcstride, int x, int y, int rounding); - void (*predict_8x8) (const NEW_GMC_DATA * const This, - uint8_t *uDst, const uint8_t *uSrc, - uint8_t *vDst, const uint8_t *vSrc, - int dststride, int srcstride, int x, int y, int rounding); - void (*get_average_mv)(NEW_GMC_DATA *Dsp, VECTOR * const mv, - int x, int y, int qpel); -}; + /* 0=none, 1=translation, 2,3 = warping + * a value of -1 means: "structure not initialized!" */ + int num_wp; + + /* {0,1,2,3} => {1/2,1/4,1/8,1/16} pel */ + int accuracy; + + /* sprite size * 16 */ + int sW, sH; + + /* gradient, calculated from warp points */ + int dU[2], dV[2], Uo, Vo, Uco, Vco; + + void (*predict_16x16)(const struct _NEW_GMC_DATA * const This, + uint8_t *dst, const uint8_t *src, + int dststride, int srcstride, int x, int y, int rounding); + void (*predict_8x8) (const struct _NEW_GMC_DATA * const This, + uint8_t *uDst, const uint8_t *uSrc, + uint8_t *vDst, const uint8_t *vSrc, + int dststride, int srcstride, int x, int y, int rounding); + void (*get_average_mv)(const struct _NEW_GMC_DATA * const Dsp, VECTOR * const mv, + int x, int y, int qpel); +} NEW_GMC_DATA; typedef struct { @@ -200,7 +204,6 @@ /* encoder specific */ - VECTOR mv16; VECTOR pmvs[4]; VECTOR qmvs[4]; /* mvs in quarter pixel resolution */ @@ -215,17 +218,10 @@ VECTOR b_mvs[4]; VECTOR b_qmvs[4]; - int mb_type; - - /* - * stuff for block based ME (needed for Qpel ME) - * backup of last integer ME vectors/sad - */ - VECTOR amv; /* average motion vectors from GMC */ int32_t mcsel; -/* This structure has become way to big! What to do? Split it up? */ +/* This structure has become way to big! What to do? Split it up? */ } MACROBLOCK;