[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.13.2.10, Sun Feb 9 06:33:51 2003 UTC revision 1.14, Wed Sep 4 21:59:27 2002 UTC
# Line 1  Line 1 
1    /*****************************************************************************
2     *
3     *  XVID MPEG-4 VIDEO CODEC
4     *  - Global structures, constants -
5     *
6     *  Copyright(C) 2002 Michael Militzer
7     *
8     *  This program is an implementation of a part of one or more MPEG-4
9     *  Video tools as specified in ISO/IEC 14496-2 standard.  Those intending
10     *  to use this software module in hardware or software products are
11     *  advised that its use may infringe existing patents or copyrights, and
12     *  any such use would be at such party's own risk.  The original
13     *  developer of this software module and his/her company, and subsequent
14     *  editors and their companies, will have no liability for use of this
15     *  software or modifications or derivatives thereof.
16     *
17     *  This program is free software ; you can redistribute it and/or modify
18     *  it under the terms of the GNU General Public License as published by
19     *  the Free Software Foundation ; either version 2 of the License, or
20     *  (at your option) any later version.
21     *
22     *  This program is distributed in the hope that it will be useful,
23     *  but WITHOUT ANY WARRANTY ; without even the implied warranty of
24     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25     *  GNU General Public License for more details.
26     *
27     *  You should have received a copy of the GNU General Public License
28     *  along with this program ; if not, write to the Free Software
29     *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
30     *
31     * $Id$
32     *
33     ****************************************************************************/
34    
35  #ifndef _GLOBAL_H_  #ifndef _GLOBAL_H_
36  #define _GLOBAL_H_  #define _GLOBAL_H_
37    
# Line 11  Line 45 
45  #define MODE_INTER4V    2  #define MODE_INTER4V    2
46  #define MODE_INTRA              3  #define MODE_INTRA              3
47  #define MODE_INTRA_Q    4  #define MODE_INTRA_Q    4
48    #define MODE_STUFFING   7
49  #define MODE_NOT_CODED  16  #define MODE_NOT_CODED  16
 #define MODE_NOT_CODED_GMC      17  
50    
51  /* --- bframe specific --- */  /* --- bframe specific --- */
52    
# Line 21  Line 55 
55  #define MODE_BACKWARD           2  #define MODE_BACKWARD           2
56  #define MODE_FORWARD            3  #define MODE_FORWARD            3
57  #define MODE_DIRECT_NONE_MV     4  #define MODE_DIRECT_NONE_MV     4
 #define MODE_DIRECT_NO4V        5  
   
 typedef struct  
 {  
         VECTOR duv[3];  
 }  
 WARPPOINTS;  
   
 /* 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  
 */  
   
 /*      we don't include WARPPOINTS wp  here, but in FRAMEINFO itself */  
   
 typedef struct  
 {  
         int num_wp;             //      [input]: 0=none, 1=translation, 2,3 = warping  
                                                         //  a value of -1 means: "structure not initialized!"  
         int s;                                  //  [input]: calc is done with 1/s pel resolution  
   
         int W;  
         int H;  
   
         int ss;  
         int smask;  
         int sigma;  
   
         int r;  
         int rho;  
   
         int i0s;  
         int j0s;  
         int i1s;  
         int j1s;  
         int i2s;  
         int j2s;  
   
         int i1ss;  
         int j1ss;  
         int i2ss;  
         int j2ss;  
   
         int alpha;  
         int beta;  
         int Ws;  
         int Hs;  
   
         int dxF, dyF, dxG, dyG;  
         int Fo, Go;  
         int cFo, cGo;  
 }  
 GMC_DATA;  
   
   
 typedef struct  
 {  
         uint8_t *y;  
         uint8_t *u;  
         uint8_t *v;  
 }  
 IMAGE;  
58    
59    
60  typedef struct  typedef struct
# Line 121  Line 93 
93    
94          VECTOR mv16;          VECTOR mv16;
95          VECTOR pmvs[4];          VECTOR pmvs[4];
         VECTOR qmvs[4];                         // mvs in quarter pixel resolution  
96    
97          int32_t sad8[4];                        // SAD values for inter4v-VECTORs          int32_t sad8[4];                        // SAD values for inter4v-VECTORs
98          int32_t sad16;                          // SAD value for inter-VECTOR          int32_t sad16;                          // SAD value for inter-VECTOR
# Line 132  Line 103 
103          // bframe stuff          // bframe stuff
104    
105          VECTOR b_mvs[4];          VECTOR b_mvs[4];
106          VECTOR b_qmvs[4];          VECTOR b_pmvs[4];
 //      VECTOR b_pmvs[1];  
107    
108          // bframe direct mode          // bframe direct mode
109    
110  //      VECTOR directmv[4];          VECTOR directmv[4];
111  //      VECTOR deltamv;          VECTOR deltamv;
112    
113          int mb_type;          int mb_type;
114          int dbquant;          int dbquant;
# Line 146  Line 116 
116          // stuff for block based ME (needed for Qpel ME)          // stuff for block based ME (needed for Qpel ME)
117          // backup of last integer ME vectors/sad          // backup of last integer ME vectors/sad
118    
119  //      VECTOR i_mv16;          VECTOR i_mv16;
120          VECTOR i_mvs[4];          VECTOR i_mvs[4];
121    
122          int32_t i_sad8[4];      // SAD values for inter4v-VECTORs          int32_t i_sad8[4];      // SAD values for inter4v-VECTORs
123  //      int32_t i_sad16;        // SAD value for inter-VECTOR          int32_t i_sad16;        // SAD value for inter-VECTOR
   
         VECTOR amv; // average motion vectors from GMC  
         int32_t mcsel;  
   
 /* This structure has become way to big! What to do? Split it up?   */  
124    
125  }  }
126  MACROBLOCK;  MACROBLOCK;
127    
128  static __inline uint32_t  static __inline int8_t
129  get_dc_scaler(uint32_t quant,  get_dc_scaler(uint32_t quant,
130                            uint32_t lum)                            uint32_t lum)
131  {  {
# Line 188  Line 153 
153  #define MAX(X, Y) ((X)>(Y)?(X):(Y))  #define MAX(X, Y) ((X)>(Y)?(X):(Y))
154  #define ABS(X)    (((X)>0)?(X):-(X))  #define ABS(X)    (((X)>0)?(X):-(X))
155  #define SIGN(X)   (((X)>0)?1:-1)  #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))  
156    
157    
158  #endif                                                  /* _GLOBAL_H_ */  #endif                                                  /* _GLOBAL_H_ */

Legend:
Removed from v.1.13.2.10  
changed lines
  Added in v.1.14

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