--- global.h 2003/01/11 14:59:23 1.13.2.8 +++ global.h 2003/03/16 12:04:14 1.21.2.2 @@ -23,6 +23,39 @@ #define MODE_DIRECT_NONE_MV 4 #define MODE_DIRECT_NO4V 5 + +// vop coding types +// intra, prediction, backward, sprite, not_coded +#define I_VOP 0 +#define P_VOP 1 +#define B_VOP 2 +#define S_VOP 3 +#define N_VOP 4 + +/* convert mpeg-4 coding type i/p/b/s_VOP to XVID_TYPE_xxx */ +static __inline int +coding2type(int coding_type) +{ + return coding_type + 1; +} + +/* convert XVID_TYPE_xxx to bitstream coding type i/p/b/s_VOP */ +static __inline int +type2coding(int xvid_type) +{ + return xvid_type - 1; +} + + +typedef struct +{ + int x; + int y; +} +VECTOR; + + + typedef struct { VECTOR duv[3]; @@ -56,18 +89,22 @@ int j0s; int i1s; int j1s; -// int i2s; -// int j2s; + int i2s; + int j2s; int i1ss; int j1ss; -// int i2ss; -// int j2ss; + int i2ss; + int j2ss; int alpha; -// int beta; + int beta; int Ws; -// int Hs; + int Hs; + + int dxF, dyF, dxG, dyG; + int Fo, Go; + int cFo, cGo; } GMC_DATA; @@ -129,25 +166,12 @@ VECTOR b_mvs[4]; VECTOR b_qmvs[4]; -// VECTOR b_pmvs[1]; - - // bframe direct mode - -// VECTOR directmv[4]; -// VECTOR deltamv; int mb_type; - int dbquant; // stuff for block based ME (needed for Qpel ME) // backup of last integer ME vectors/sad -// VECTOR i_mv16; - VECTOR i_mvs[4]; - - int32_t i_sad8[4]; // SAD values for inter4v-VECTORs -// int32_t i_sad16; // SAD value for inter-VECTOR - VECTOR amv; // average motion vectors from GMC int32_t mcsel; @@ -156,7 +180,7 @@ } MACROBLOCK; -static __inline int8_t +static __inline uint32_t get_dc_scaler(uint32_t quant, uint32_t lum) { @@ -186,6 +210,7 @@ #define SIGN(X) (((X)>0)?1:-1) #define CLIP(X,AMIN,AMAX) (((X)<(AMIN)) ? (AMIN) : ((X)>(AMAX)) ? (AMAX) : (X)) #define DIV_DIV(a,b) (((a)>0) ? ((a)+((b)>>1))/(b) : ((a)-((b)>>1))/(b)) +#define SWAP(_T_,A,B) { _T_ tmp = A; A = B; B = tmp; } #endif /* _GLOBAL_H_ */