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

Diff of /xvidcore/src/xvid.h

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

revision 1.14, Fri Jul 12 12:26:24 2002 UTC revision 1.17.2.10, Fri Nov 8 10:10:48 2002 UTC
# Line 1  Line 1 
1    #define KOEPI_2PASS
2  /*****************************************************************************  /*****************************************************************************
3  *  *
4  *  XVID MPEG-4 VIDEO CODEC  *  XVID MPEG-4 VIDEO CODEC
# Line 37  Line 38 
38  #define _XVID_H_  #define _XVID_H_
39    
40  #ifdef __cplusplus  #ifdef __cplusplus
41  *  $Id$  extern "C" {
42  #endif  #endif
43    
44  /*****************************************************************************  /*****************************************************************************
# Line 47  Line 48 
48  /* API Version : 2.1 */  /* API Version : 2.1 */
49  #define API_VERSION ((2 << 16) | (1))  #define API_VERSION ((2 << 16) | (1))
50    
51    /* Bitstream Version
52     * this will be writen into the bitstream to allow easy detection of xvid
53     * encoder bugs in the decoder, without this it might not possible to
54     * automatically distinquish between a file which has been encoded with an
55     * old & buggy XVID from a file which has been encoded with a bugfree version
56     * see the infamous interlacing bug ...
57     *
58     * this MUST be increased if an encoder bug is fixed, increasing it too often
59     * doesnt hurt but not increasing it could cause difficulty for decoders in the
60     * future
61     */
62    #define XVID_BS_VERSION "0003"
63    
64    
65  /* Error codes */  /* Error codes */
66  #define XVID_ERR_FAIL           -1  #define XVID_ERR_FAIL           -1
# Line 56  Line 70 
70    
71    
72  /* Colorspaces */  /* Colorspaces */
73  #define XVID_CSP_RGB24  0  #define XVID_CSP_RGB24  0               /* [b|g|r] */
74  #define XVID_CSP_YV12   1  #define XVID_CSP_YV12   1
75  #define XVID_CSP_YUY2   2  #define XVID_CSP_YUY2   2
76  #define XVID_CSP_UYVY   3  #define XVID_CSP_UYVY   3
# Line 66  Line 80 
80  #define XVID_CSP_USER   12  #define XVID_CSP_USER   12
81  #define XVID_CSP_EXTERN      1004  // per slice rendering  #define XVID_CSP_EXTERN      1004  // per slice rendering
82  #define XVID_CSP_YVYU   1002  #define XVID_CSP_YVYU   1002
83  #define XVID_CSP_RGB32  1000  #define XVID_CSP_RGB32  1000    /* [b|g|r|a] */
84    #define XVID_CSP_ABGR   1006    /* [a|b|g|r] */
85    #define XVID_CSP_RGBA   1005    /* [r|g|b|a] */
86    
87    
88    
89  #define XVID_CSP_NULL   9999  #define XVID_CSP_NULL   9999
90    
91  #define XVID_CSP_VFLIP  0x80000000      // flip mask  #define XVID_CSP_VFLIP  0x80000000      // flip mask
92    
93    
94  /*****************************************************************************  /*****************************************************************************
95     *  Initialization constants
96   ****************************************************************************/   ****************************************************************************/
97    
98  /* CPU flags for XVID_INIT_PARAM.cpu_flags */  /* CPU flags for XVID_INIT_PARAM.cpu_flags */
# Line 91  Line 111 
111  #define XVID_CPU_CHKONLY        0x40000000              /* check cpu only; dont init globals */  #define XVID_CPU_CHKONLY        0x40000000              /* check cpu only; dont init globals */
112  #define XVID_CPU_FORCE          0x80000000  #define XVID_CPU_FORCE          0x80000000
113    
114            typedef struct
115            {
116                    int colorspace;
117                    void * y;
118                    void * u;
119                    void * v;
120                    int y_stride;
121                    int uv_stride;
122            } XVID_IMAGE;           /* from yv12 */
123    
124    #define XVID_INIT_INIT          0
125    #define XVID_INIT_CONVERT       1
126    
127  /*****************************************************************************  /*****************************************************************************
128   *  Initialization structures   *  Initialization structures
# Line 104  Line 136 
136          }          }
137          XVID_INIT_PARAM;          XVID_INIT_PARAM;
138    
139            typedef struct
140            {
141                    XVID_IMAGE input;
142                    XVID_IMAGE output;
143                    int width;
144                    int height;
145                    int interlacing;
146            } XVID_INIT_CONVERTINFO;
147    
148  /*****************************************************************************  /*****************************************************************************
149   *  Initialization entry point   *  Initialization entry point
150   ****************************************************************************/   ****************************************************************************/
# Line 134  Line 175 
175          XVID_DEC_PARAM;          XVID_DEC_PARAM;
176    
177    
178    #define XVID_DEC_VOP    0
179    #define XVID_DEC_VOL    1
180    
181            typedef struct
182            {
183                    int notify;                     /* [out]        output 'mode' */
184                    union
185                    {
186                            struct  /* XVID_DEC_VOP */
187                            {
188                                    int time_base;          /* [out]        time base */
189                                    int time_increment;     /* [out]        time increment */
190                            } vop;
191                            struct  /* XVID_DEC_VOL */
192                            {
193                                    int general;            /* [out]        flags: eg. frames are interlaced */
194                                    int width;                      /* [out]        width */
195                                    int height;                     /* [out]        height */
196                                    int aspect_ratio;       /* [out]        aspect ratio */
197                                    int par_width;          /* [out]        aspect ratio width */
198                                    int par_height;         /* [out]        aspect ratio height */
199                            } vol;
200                    } data;
201            } XVID_DEC_STATS;
202    
203    
204          typedef struct          typedef struct
205          {          {
206                  int general;                  int general;
# Line 154  Line 221 
221                  int stride_y, stride_u,stride_v;                  int stride_y, stride_u,stride_v;
222          } XVID_DEC_PICTURE;          } XVID_DEC_PICTURE;
223    
224    
225    /*****************************************************************************
226     * Decoder entry point
227     ****************************************************************************/
228    
229    /* decoder options */
230    #define XVID_DEC_DECODE         0
231    #define XVID_DEC_CREATE         1
232  #define XVID_DEC_DESTROY        2  #define XVID_DEC_DESTROY        2
233    
234          int xvid_decore(void *handle,          int xvid_decore(void *handle,
# Line 178  Line 253 
253  #define XVID_H263QUANT                  0x00000010  #define XVID_H263QUANT                  0x00000010
254  #define XVID_MPEGQUANT                  0x00000020  #define XVID_MPEGQUANT                  0x00000020
255  #define XVID_HALFPEL                    0x00000040      /* use halfpel interpolation */  #define XVID_HALFPEL                    0x00000040      /* use halfpel interpolation */
256    #define XVID_QUARTERPEL                 0x02000000
257  #define XVID_ADAPTIVEQUANT              0x00000080  #define XVID_ADAPTIVEQUANT              0x00000080
258  #define XVID_LUMIMASKING                0x00000100  #define XVID_LUMIMASKING                0x00000100
259  #define XVID_LATEINTRA                  0x00000200  #define XVID_LATEINTRA                  0x00000200
# Line 197  Line 273 
273  #define XVID_ME_PMVFAST                 0x00080000  #define XVID_ME_PMVFAST                 0x00080000
274  #define XVID_ME_EPZS                    0x00100000  #define XVID_ME_EPZS                    0x00100000
275    
   
276  #define XVID_GREYSCALE                  0x01000000      /* enable greyscale only mode (even for */  #define XVID_GREYSCALE                  0x01000000      /* enable greyscale only mode (even for */
277  #define XVID_GRAYSCALE                  0x01000000      /* color input material chroma is ignored) */  #define XVID_GRAYSCALE                  0x01000000      /* color input material chroma is ignored) */
278    
279    #define XVID_GMC                                0x20000000
280    #define XVID_ME_COLOUR                  0x40000000
281    
282  /* Flags for XVID_ENC_FRAME.motion */  /* Flags for XVID_ENC_FRAME.motion */
283  #define PMV_ADVANCEDDIAMOND8    0x00004000  #define PMV_ADVANCEDDIAMOND8    0x00004000
284  #define PMV_ADVANCEDDIAMOND16   0x00008000  #define PMV_ADVANCEDDIAMOND16   0x00008000
285  #define PMV_EARLYSTOP16                 0x00080000  
286    #define PMV_HALFPELDIAMOND16    0x00010000
287    #define PMV_HALFPELREFINE16     0x00020000
288    #define PMV_QUARTERPELREFINE16  0x00040000
289    #define PMV_EXTSEARCH16                 0x00080000      /* extend PMV by more searches */
290  #define PMV_QUICKSTOP16                 0x00100000      /* like early, but without any more refinement */  #define PMV_QUICKSTOP16                 0x00100000      /* like early, but without any more refinement */
291  #define PMV_UNRESTRICTED16      0x00200000      /* unrestricted ME, not implemented */  #define PMV_UNRESTRICTED16      0x00200000      /* unrestricted ME, not implemented */
292  #define PMV_OVERLAPPING16       0x00400000      /* overlapping ME, not implemented */  #define PMV_OVERLAPPING16       0x00400000      /* overlapping ME, not implemented */
# Line 213  Line 294 
294    
295  #define PMV_HALFPELDIAMOND8     0x01000000  #define PMV_HALFPELDIAMOND8     0x01000000
296  #define PMV_HALFPELREFINE8              0x02000000  #define PMV_HALFPELREFINE8              0x02000000
297  #define PMV_EXTSEARCH8                  0x04000000      /* extend PMV by more searches */  #define PMV_QUARTERPELREFINE8   0x04000000
298  #define PMV_EARLYSTOP8                  0x08000000  #define PMV_EXTSEARCH8                  0x08000000      /* extend PMV by more searches */
299  #define PMV_QUICKSTOP8                  0x10000000      /* like early, but without any more refinement */  #define PMV_QUICKSTOP8                  0x10000000      /* like early, but without any more refinement */
300  #define PMV_UNRESTRICTED8       0x20000000      /* unrestricted ME, not implemented */  #define PMV_UNRESTRICTED8       0x20000000      /* unrestricted ME, not implemented */
301  #define PMV_OVERLAPPING8                0x40000000      /* overlapping ME, not implemented */  #define PMV_OVERLAPPING8                0x40000000      /* overlapping ME, not implemented */
302  #define PMV_USESQUARES8                 0x80000000  #define PMV_USESQUARES8                 0x80000000
303    
304    
305    
306  /*****************************************************************************  /*****************************************************************************
307   * Encoder structures   * Encoder structures
308   ****************************************************************************/   ****************************************************************************/
# Line 239  Line 321 
321  #ifdef _SMP  #ifdef _SMP
322                  int num_threads;                /* number of threads */                  int num_threads;                /* number of threads */
323  #endif  #endif
 #ifdef BFRAMES  
324                  int global;                             /* global/debug options */                  int global;                             /* global/debug options */
325                  int max_bframes;                /* max sequential bframes (0=disable bframes) */                  int max_bframes;                /* max sequential bframes (0=disable bframes) */
326                  int bquant_ratio;               /* bframe quantizer multipier (percentage).                  int bquant_ratio;               /* bframe quantizer multipier (percentage).
# Line 248  Line 329 
329                                                                   * quant = ((past_quant + future_quant) * bquant_ratio)/200                                                                   * quant = ((past_quant + future_quant) * bquant_ratio)/200
330                                                                   */                                                                   */
331                  int frame_drop_ratio;   /* frame dropping: 0=drop none... 100=drop all */                  int frame_drop_ratio;   /* frame dropping: 0=drop none... 100=drop all */
 #endif  
332                  void *handle;                   /* [out] encoder instance handle */                  void *handle;                   /* [out] encoder instance handle */
333          }          }
334          XVID_ENC_PARAM;          XVID_ENC_PARAM;
# Line 256  Line 336 
336          typedef struct          typedef struct
337          {          {
338                  int x;                  int x;
339                    int y;
340          }          }
341          VECTOR;          VECTOR;
342    
# Line 292  Line 373 
373                  int length;                             /* [out] bitstream length (bytes) */                  int length;                             /* [out] bitstream length (bytes) */
374    
375                  void *image;                    /* [in] image ptr */                  void *image;                    /* [in] image ptr */
376                    int stride;
377                  int colorspace;                 /* [in] source colorspace */                  int colorspace;                 /* [in] source colorspace */
378    
379                  unsigned char *quant_intra_matrix;      // [in] custom intra qmatrix */                  unsigned char *quant_intra_matrix;      // [in] custom intra qmatrix */
# Line 302  Line 384 
384                                                                   */                                                                   */
385                  HINTINFO hint;                  /* [in/out] mv hint information */                  HINTINFO hint;                  /* [in/out] mv hint information */
386    
 #ifdef BFRAMES  
387                  int bquant;                             /* [in] bframe quantizer */                  int bquant;                             /* [in] bframe quantizer */
 #endif  
388    
389          }          }
390          XVID_ENC_FRAME;          XVID_ENC_FRAME;
# Line 315  Line 395 
395                  int quant;                              /* [out] frame quantizer */                  int quant;                              /* [out] frame quantizer */
396                  int hlength;                    /* [out] header length (bytes) */                  int hlength;                    /* [out] header length (bytes) */
397                  int kblks, mblks, ublks;        /* [out] */                  int kblks, mblks, ublks;        /* [out] */
   
398          }          }
399          XVID_ENC_STATS;          XVID_ENC_STATS;
400    

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

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