[cvs] / xvidcore / src / global.h Repository:
ViewVC logotype

Diff of /xvidcore/src/global.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.21.2.11, Mon Dec 8 13:20:59 2003 UTC revision 1.22, Fri Apr 4 22:16:15 2003 UTC
# Line 1  Line 1 
 /*****************************************************************************  
  *  
  *  XVID MPEG-4 VIDEO CODEC  
  *  - Global definitions  -  
  *  
  *  Copyright(C) 2002 Michael Militzer <isibaar@xvid.org>  
  *  
  *  This program is free software ; you can redistribute it and/or modify  
  *  it under the terms of the GNU General Public License as published by  
  *  the Free Software Foundation ; either version 2 of the License, or  
  *  (at your option) any later version.  
  *  
  *  This program is distributed in the hope that it will be useful,  
  *  but WITHOUT ANY WARRANTY ; without even the implied warranty of  
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
  *  GNU General Public License for more details.  
  *  
  *  You should have received a copy of the GNU General Public License  
  *  along with this program ; if not, write to the Free Software  
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  
  *  
  * $Id$  
  *  
  ****************************************************************************/  
   
1  #ifndef _GLOBAL_H_  #ifndef _GLOBAL_H_
2  #define _GLOBAL_H_  #define _GLOBAL_H_
3    
# Line 48  Line 23 
23  #define MODE_DIRECT_NONE_MV     4  #define MODE_DIRECT_NONE_MV     4
24  #define MODE_DIRECT_NO4V        5  #define MODE_DIRECT_NO4V        5
25    
   
 /*  
  * 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;  
   
   
   
26  typedef struct  typedef struct
27  {  {
28          VECTOR duv[3];          VECTOR duv[3];
# Line 98  Line 38 
38    
39  typedef struct  typedef struct
40  {  {
41          int num_wp;             /* [input]: 0=none, 1=translation, 2,3 = warping */          int num_wp;             //      [input]: 0=none, 1=translation, 2,3 = warping
42                                                          /* a value of -1 means: "structure not initialized!" */                                                          //  a value of -1 means: "structure not initialized!"
43          int s;                                  /* [input]: calc is done with 1/s pel resolution */          int s;                                  //  [input]: calc is done with 1/s pel resolution
44    
45          int W;          int W;
46          int H;          int H;
# Line 132  Line 72 
72          int dxF, dyF, dxG, dyG;          int dxF, dyF, dxG, dyG;
73          int Fo, Go;          int Fo, Go;
74          int cFo, cGo;          int cFo, cGo;
75  } GMC_DATA;  }
76    GMC_DATA;
77    
 typedef struct _NEW_GMC_DATA  
 {  
    /*  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;  
78    
79  typedef struct  typedef struct
80  {  {
# Line 188  Line 104 
104    
105  typedef struct  typedef struct
106  {  {
107          /* decoder/encoder */          // decoder/encoder
108          VECTOR mvs[4];          VECTOR mvs[4];
109    
110          short int pred_values[6][MBPRED_SIZE];          short int pred_values[6][MBPRED_SIZE];
111          int acpred_directions[6];          int acpred_directions[6];
112    
113          int mode;          int mode;
114          int quant;                                      /* absolute quant */          int quant;                                      // absolute quant
115    
116          int field_dct;          int field_dct;
117          int field_pred;          int field_pred;
118          int field_for_top;          int field_for_top;
119          int field_for_bot;          int field_for_bot;
120    
121          /* encoder specific */          // encoder specific
122    
123            VECTOR mv16;
124          VECTOR pmvs[4];          VECTOR pmvs[4];
125          VECTOR qmvs[4];                         /* mvs in quarter pixel resolution */          VECTOR qmvs[4];                         // mvs in quarter pixel resolution
126    
127          int32_t sad8[4];                        /* SAD values for inter4v-VECTORs */          int32_t sad8[4];                        // SAD values for inter4v-VECTORs
128          int32_t sad16;                          /* SAD value for inter-VECTOR */          int32_t sad16;                          // SAD value for inter-VECTOR
129    
130          int dquant;          int dquant;
131          int cbp;          int cbp;
132    
133          /* bframe stuff */          // bframe stuff
134    
135          VECTOR b_mvs[4];          VECTOR b_mvs[4];
136          VECTOR b_qmvs[4];          VECTOR b_qmvs[4];
137    
138          VECTOR amv; /* average motion vectors from GMC  */          int mb_type;
139    
140            // stuff for block based ME (needed for Qpel ME)
141            // backup of last integer ME vectors/sad
142    
143            VECTOR amv; // average motion vectors from GMC
144          int32_t mcsel;          int32_t mcsel;
145    
146  /* 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?   */
# Line 248  Line 170 
170                  return quant - 6;                  return quant - 6;
171  }  }
172    
173  /* useful macros */  // useful macros
174    
175  #define MIN(X, Y) ((X)<(Y)?(X):(Y))  #define MIN(X, Y) ((X)<(Y)?(X):(Y))
176  #define MAX(X, Y) ((X)>(Y)?(X):(Y))  #define MAX(X, Y) ((X)>(Y)?(X):(Y))
177  /* #define ABS(X)    (((X)>0)?(X):-(X)) */  #define ABS(X)    (((X)>0)?(X):-(X))
178  #define SIGN(X)   (((X)>0)?1:-1)  #define SIGN(X)   (((X)>0)?1:-1)
179  #define CLIP(X,AMIN,AMAX)   (((X)<(AMIN)) ? (AMIN) : ((X)>(AMAX)) ? (AMAX) : (X))  #define CLIP(X,AMIN,AMAX)   (((X)<(AMIN)) ? (AMIN) : ((X)>(AMAX)) ? (AMAX) : (X))
180  #define DIV_DIV(a,b)    (((a)>0) ? ((a)+((b)>>1))/(b) : ((a)-((b)>>1))/(b))  #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; }  
181    
182    
183  #endif                                                  /* _GLOBAL_H_ */  #endif                                                  /* _GLOBAL_H_ */

Legend:
Removed from v.1.21.2.11  
changed lines
  Added in v.1.22

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4