[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.12, Thu Jun 20 14:05:57 2002 UTC revision 1.17.2.15, Sat Dec 14 06:07:03 2002 UTC
# Line 37  Line 37 
37  #define _XVID_H_  #define _XVID_H_
38    
39  #ifdef __cplusplus  #ifdef __cplusplus
40  *  $Id$  extern "C" {
41  #endif  #endif
42    
43  /*****************************************************************************  /*****************************************************************************
# Line 47  Line 47 
47  /* API Version : 2.1 */  /* API Version : 2.1 */
48  #define API_VERSION ((2 << 16) | (1))  #define API_VERSION ((2 << 16) | (1))
49    
50    /* Bitstream Version
51     * this will be writen into the bitstream to allow easy detection of xvid
52     * encoder bugs in the decoder, without this it might not possible to
53     * automatically distinquish between a file which has been encoded with an
54     * old & buggy XVID from a file which has been encoded with a bugfree version
55     * see the infamous interlacing bug ...
56     *
57     * this MUST be increased if an encoder bug is fixed, increasing it too often
58     * doesnt hurt but not increasing it could cause difficulty for decoders in the
59     * future
60     */
61    #define XVID_BS_VERSION "0003"
62    
63    
64  /* Error codes */  /* Error codes */
65  #define XVID_ERR_FAIL           -1  #define XVID_ERR_FAIL           -1
# Line 56  Line 69 
69    
70    
71  /* Colorspaces */  /* Colorspaces */
72  #define XVID_CSP_RGB24  0  #define XVID_CSP_RGB24  0               /* [b|g|r] */
73  #define XVID_CSP_YV12   1  #define XVID_CSP_YV12   1
74  #define XVID_CSP_YUY2   2  #define XVID_CSP_YUY2   2
75  #define XVID_CSP_UYVY   3  #define XVID_CSP_UYVY   3
# Line 66  Line 79 
79  #define XVID_CSP_USER   12  #define XVID_CSP_USER   12
80  #define XVID_CSP_EXTERN      1004  // per slice rendering  #define XVID_CSP_EXTERN      1004  // per slice rendering
81  #define XVID_CSP_YVYU   1002  #define XVID_CSP_YVYU   1002
82  #define XVID_CSP_RGB32  1000  #define XVID_CSP_RGB32  1000    /* [b|g|r|a] */
83    #define XVID_CSP_ABGR   1006    /* [a|b|g|r] */
84    #define XVID_CSP_RGBA   1005    /* [r|g|b|a] */
85    
86    
87    
88  #define XVID_CSP_NULL   9999  #define XVID_CSP_NULL   9999
89    
90  #define XVID_CSP_VFLIP  0x80000000      // flip mask  #define XVID_CSP_VFLIP  0x80000000      // flip mask
91    
92    
93  /*****************************************************************************  /*****************************************************************************
94     *  Initialization constants
95   ****************************************************************************/   ****************************************************************************/
96    
97  /* CPU flags for XVID_INIT_PARAM.cpu_flags */  /* CPU flags for XVID_INIT_PARAM.cpu_flags */
# Line 91  Line 110 
110  #define XVID_CPU_CHKONLY        0x40000000              /* check cpu only; dont init globals */  #define XVID_CPU_CHKONLY        0x40000000              /* check cpu only; dont init globals */
111  #define XVID_CPU_FORCE          0x80000000  #define XVID_CPU_FORCE          0x80000000
112    
113            typedef struct
114            {
115                    int colorspace;
116                    void * y;
117                    void * u;
118                    void * v;
119                    int y_stride;
120                    int uv_stride;
121            } XVID_IMAGE;           /* from yv12 */
122    
123    #define XVID_INIT_INIT          0
124    #define XVID_INIT_CONVERT       1
125    
126  /*****************************************************************************  /*****************************************************************************
127   *  Initialization structures   *  Initialization structures
128   ****************************************************************************/   ****************************************************************************/
129    
130          typedef struct          typedef struct
131            {
132                  int cpu_flags;                  int cpu_flags;
133                  int api_version;                  int api_version;
134                  int core_build;                  int core_build;
135          }          }
136          XVID_INIT_PARAM;          XVID_INIT_PARAM;
137    
138            typedef struct
139            {
140                    XVID_IMAGE input;
141                    XVID_IMAGE output;
142                    int width;
143                    int height;
144                    int interlacing;
145            } XVID_INIT_CONVERTINFO;
146    
147  /*****************************************************************************  /*****************************************************************************
148   *  Initialization entry point   *  Initialization entry point
149   ****************************************************************************/   ****************************************************************************/
# Line 118  Line 159 
159   ****************************************************************************/   ****************************************************************************/
160    
161  /* Flags for XVID_DEC_FRAME.general */  /* Flags for XVID_DEC_FRAME.general */
162    #define XVID_DEC_LOWDELAY               0x00000001      /* decode lowdelay mode (ie. video-for-windows) */
163    #define XVID_DEC_DEBLOCKY               0x00000002      /* luma deblocking */
164    #define XVID_DEC_DEBLOCKUV              0x00000002      /* chroma deblocking */
165  #define XVID_QUICK_DECODE               0x00000010  #define XVID_QUICK_DECODE               0x00000010
166    
167  /*****************************************************************************  /*****************************************************************************
# Line 133  Line 177 
177          XVID_DEC_PARAM;          XVID_DEC_PARAM;
178    
179    
180    #define XVID_DEC_VOP    0
181    #define XVID_DEC_VOL    1
182    #define XVID_DEC_NOTHING        2       /* nothing was decoded */
183    
184            typedef struct
185            {
186                    int notify;                     /* [out]        output 'mode' */
187                    union
188                    {
189                            struct  /* XVID_DEC_VOP */
190                            {
191                                    int time_base;          /* [out]        time base */
192                                    int time_increment;     /* [out]        time increment */
193                            } vop;
194                            struct  /* XVID_DEC_VOL */
195                            {
196                                    int general;            /* [out]        flags: eg. frames are interlaced */
197                                    int width;                      /* [out]        width */
198                                    int height;                     /* [out]        height */
199                                    int aspect_ratio;       /* [out]        aspect ratio */
200                                    int par_width;          /* [out]        aspect ratio width */
201                                    int par_height;         /* [out]        aspect ratio height */
202                            } vol;
203                    } data;
204            } XVID_DEC_STATS;
205    
206    
207          typedef struct          typedef struct
208          {          {
209                  int general;                  int general;
# Line 153  Line 224 
224                  int stride_y, stride_u,stride_v;                  int stride_y, stride_u,stride_v;
225          } XVID_DEC_PICTURE;          } XVID_DEC_PICTURE;
226    
227    
228    /*****************************************************************************
229     * Decoder entry point
230     ****************************************************************************/
231    
232    /* decoder options */
233    #define XVID_DEC_DECODE         0
234    #define XVID_DEC_CREATE         1
235  #define XVID_DEC_DESTROY        2  #define XVID_DEC_DESTROY        2
236    
237          int xvid_decore(void *handle,          int xvid_decore(void *handle,
# Line 169  Line 248 
248  #define XVID_GLOBAL_PACKED              0x00000001      /* packed bitstream */  #define XVID_GLOBAL_PACKED              0x00000001      /* packed bitstream */
249  #define XVID_GLOBAL_DX50BVOP    0x00000002      /* dx50 bvop compatibility */  #define XVID_GLOBAL_DX50BVOP    0x00000002      /* dx50 bvop compatibility */
250  #define XVID_GLOBAL_DEBUG               0x00000004      /* print debug info on each frame */  #define XVID_GLOBAL_DEBUG               0x00000004      /* print debug info on each frame */
251    #define XVID_GLOBAL_REDUCED             0x04000000      /* reduced resolution vop enable */
252    
253  /* Flags for XVID_ENC_FRAME.general */  /* Flags for XVID_ENC_FRAME.general */
254  #define XVID_VALID_FLAGS                0x80000000  #define XVID_VALID_FLAGS                0x80000000
255    
256  #define XVID_CUSTOM_QMATRIX             0x00000004      /* use custom quant matrix */  #define XVID_CUSTOM_QMATRIX             0x00000004      /* use custom quant matrix */
257    #define XVID_H263QUANT                  0x00000010
258    #define XVID_MPEGQUANT                  0x00000020
259    #define XVID_HALFPEL                    0x00000040      /* use halfpel interpolation */
260    #define XVID_QUARTERPEL                 0x02000000
261    #define XVID_ADAPTIVEQUANT              0x00000080
262    #define XVID_LUMIMASKING                0x00000100
263  #define XVID_LATEINTRA                  0x00000200  #define XVID_LATEINTRA                  0x00000200
264    
265  #define XVID_INTERLACING                0x00000400      /* enable interlaced encoding */  #define XVID_INTERLACING                0x00000400      /* enable interlaced encoding */
# Line 191  Line 277 
277  #define XVID_ME_PMVFAST                 0x00080000  #define XVID_ME_PMVFAST                 0x00080000
278  #define XVID_ME_EPZS                    0x00100000  #define XVID_ME_EPZS                    0x00100000
279    
   
280  #define XVID_GREYSCALE                  0x01000000      /* enable greyscale only mode (even for */  #define XVID_GREYSCALE                  0x01000000      /* enable greyscale only mode (even for */
281  #define XVID_GRAYSCALE                  0x01000000      /* color input material chroma is ignored) */  #define XVID_GRAYSCALE                  0x01000000      /* color input material chroma is ignored) */
282    
283    #define XVID_GMC                                0x20000000
284    #define XVID_ME_COLOUR                  0x40000000
285    
286    #define XVID_REDUCED                    0x04000000      /* reduced resolution vop */
287    
288  /* Flags for XVID_ENC_FRAME.motion */  /* Flags for XVID_ENC_FRAME.motion */
289  #define PMV_ADVANCEDDIAMOND8    0x00004000  #define PMV_ADVANCEDDIAMOND8    0x00004000
290  #define PMV_ADVANCEDDIAMOND16   0x00008000  #define PMV_ADVANCEDDIAMOND16   0x00008000
291  #define PMV_EARLYSTOP16                 0x00080000  
292    #define PMV_HALFPELDIAMOND16    0x00010000
293    #define PMV_HALFPELREFINE16     0x00020000
294    #define PMV_QUARTERPELREFINE16  0x00040000
295    #define PMV_EXTSEARCH16                 0x00080000      /* extend PMV by more searches */
296  #define PMV_QUICKSTOP16                 0x00100000      /* like early, but without any more refinement */  #define PMV_QUICKSTOP16                 0x00100000      /* like early, but without any more refinement */
297  #define PMV_UNRESTRICTED16      0x00200000      /* unrestricted ME, not implemented */  #define PMV_UNRESTRICTED16      0x00200000      /* unrestricted ME, not implemented */
298  #define PMV_OVERLAPPING16       0x00400000      /* overlapping ME, not implemented */  #define PMV_OVERLAPPING16       0x00400000      /* overlapping ME, not implemented */
# Line 207  Line 300 
300    
301  #define PMV_HALFPELDIAMOND8     0x01000000  #define PMV_HALFPELDIAMOND8     0x01000000
302  #define PMV_HALFPELREFINE8              0x02000000  #define PMV_HALFPELREFINE8              0x02000000
303  #define PMV_EXTSEARCH8                  0x04000000      /* extend PMV by more searches */  #define PMV_QUARTERPELREFINE8   0x04000000
304  #define PMV_EARLYSTOP8                  0x08000000  #define PMV_EXTSEARCH8                  0x08000000      /* extend PMV by more searches */
305  #define PMV_QUICKSTOP8                  0x10000000      /* like early, but without any more refinement */  #define PMV_QUICKSTOP8                  0x10000000      /* like early, but without any more refinement */
306  #define PMV_UNRESTRICTED8       0x20000000      /* unrestricted ME, not implemented */  #define PMV_UNRESTRICTED8       0x20000000      /* unrestricted ME, not implemented */
307  #define PMV_OVERLAPPING8                0x40000000      /* overlapping ME, not implemented */  #define PMV_OVERLAPPING8                0x40000000      /* overlapping ME, not implemented */
308  #define PMV_USESQUARES8                 0x80000000  #define PMV_USESQUARES8                 0x80000000
309    
310    
311    
312  /*****************************************************************************  /*****************************************************************************
313   * Encoder structures   * Encoder structures
314   ****************************************************************************/   ****************************************************************************/
# Line 233  Line 327 
327  #ifdef _SMP  #ifdef _SMP
328                  int num_threads;                /* number of threads */                  int num_threads;                /* number of threads */
329  #endif  #endif
 #ifdef BFRAMES  
330                  int global;                             /* global/debug options */                  int global;                             /* global/debug options */
331                  int max_bframes;                /* max sequential bframes (0=disable bframes) */                  int max_bframes;                /* max sequential bframes (0=disable bframes) */
332                  int bquant_ratio;               /* bframe quantizer multipier (percentage).                  int bquant_ratio;               /* bframe quantizer multipier (percentage).
333                                                                   * used only when bquant < 1                                                                   * used only when bquant < 1
334                                                                   * eg. 200 = x2 multiplier                                                                   * eg. 200 = x2 multiplier
335  #endif                                                                   * quant = ((past_quant + future_quant) * bquant_ratio)/200
336                  int packed;                             /* enable packed mode */                                                                   */
337                    int bquant_offset;              /* bquant += bquant_offset */
338                    int frame_drop_ratio;   /* frame dropping: 0=drop none... 100=drop all */
339                    void *handle;                   /* [out] encoder instance handle */
340          }          }
341          XVID_ENC_PARAM;          XVID_ENC_PARAM;
342    
343          typedef struct          typedef struct
344          {          {
345                  int x;                  int x;
346                    int y;
347          }          }
348          VECTOR;          VECTOR;
349    
# Line 283  Line 380 
380                  int length;                             /* [out] bitstream length (bytes) */                  int length;                             /* [out] bitstream length (bytes) */
381    
382                  void *image;                    /* [in] image ptr */                  void *image;                    /* [in] image ptr */
383                    int stride;
384                  int colorspace;                 /* [in] source colorspace */                  int colorspace;                 /* [in] source colorspace */
385    
386                  unsigned char *quant_intra_matrix;      // [in] custom intra qmatrix */                  unsigned char *quant_intra_matrix;      // [in] custom intra qmatrix */
# Line 293  Line 391 
391                                                                   */                                                                   */
392                  HINTINFO hint;                  /* [in/out] mv hint information */                  HINTINFO hint;                  /* [in/out] mv hint information */
393    
 #ifdef BFRAMES  
394                  int bquant;                             /* [in] bframe quantizer */                  int bquant;                             /* [in] bframe quantizer */
 #endif  
395    
396          }          }
397          XVID_ENC_FRAME;          XVID_ENC_FRAME;
# Line 306  Line 402 
402                  int quant;                              /* [out] frame quantizer */                  int quant;                              /* [out] frame quantizer */
403                  int hlength;                    /* [out] header length (bytes) */                  int hlength;                    /* [out] header length (bytes) */
404                  int kblks, mblks, ublks;        /* [out] */                  int kblks, mblks, ublks;        /* [out] */
   
405          }          }
406          XVID_ENC_STATS;          XVID_ENC_STATS;
407    

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.17.2.15

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