[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.17.2.27, Sun Feb 9 06:33:51 2003 UTC revision 1.18, Wed Sep 4 22:12:21 2002 UTC
# Line 3  Line 3 
3  *  XVID MPEG-4 VIDEO CODEC  *  XVID MPEG-4 VIDEO CODEC
4  *  - XviD Main header file -  *  - XviD Main header file -
5  *  *
6     *  This program is an implementation of a part of one or more MPEG-4
7     *  Video tools as specified in ISO/IEC 14496-2 standard.  Those intending
8     *  to use this software module in hardware or software products are
9     *  advised that its use may infringe existing patents or copyrights, and
10     *  any such use would be at such party's own risk.  The original
11     *  developer of this software module and his/her company, and subsequent
12     *  editors and their companies, will have no liability for use of this
13     *  software or modifications or derivatives thereof.
14     *
15  *  This program is free software ; you can redistribute it and/or modify  *  This program is free software ; you can redistribute it and/or modify
16  *  it under the terms of the GNU General Public License as published by  *  it under the terms of the GNU General Public License as published by
17  *  the Free Software Foundation ; either version 2 of the License, or  *  the Free Software Foundation ; either version 2 of the License, or
# Line 17  Line 26 
26  *  along with this program ; if not, write to the Free Software  *  along with this program ; if not, write to the Free Software
27  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
28  *  *
 *****************************************************************************/  
 /*****************************************************************************  
 *  
 *  History  
 *  
 *  - 2002/06/13 Added legal header, ANSI C comment style (only for this header  
 *               as it can be included in a ANSI C project).  
 *  
 *               ToDo ? : when BFRAMES is defined, the API_VERSION should not  
 *                        be the same (3.0 ?)  
 *  
29  *  $Id$  *  $Id$
30  *  *
31  *****************************************************************************/  *****************************************************************************/
32    
   
33  #ifndef _XVID_H_  #ifndef _XVID_H_
34  #define _XVID_H_  #define _XVID_H_
35    
# Line 46  Line 43 
43    
44  /* API Version : 2.1 */  /* API Version : 2.1 */
45  #define API_VERSION ((2 << 16) | (1))  #define API_VERSION ((2 << 16) | (1))
 #define XVID_API_UNSTABLE  
   
 /* Bitstream Version  
  * this will be writen into the bitstream to allow easy detection of xvid  
  * encoder bugs in the decoder, without this it might not possible to  
  * automatically distinquish between a file which has been encoded with an  
  * old & buggy XVID from a file which has been encoded with a bugfree version  
  * see the infamous interlacing bug ...  
  *  
  * this MUST be increased if an encoder bug is fixed, increasing it too often  
  * doesnt hurt but not increasing it could cause difficulty for decoders in the  
  * future  
  */  
 #define XVID_BS_VERSION "0009"  
46    
47    
48  /* Error codes */  /* Error codes */
# Line 70  Line 53 
53    
54    
55  /* Colorspaces */  /* Colorspaces */
56  #define XVID_CSP_RGB24  0               /* [b|g|r] */  #define XVID_CSP_RGB24  0
57  #define XVID_CSP_YV12   1  #define XVID_CSP_YV12   1
58  #define XVID_CSP_YUY2   2  #define XVID_CSP_YUY2   2
59  #define XVID_CSP_UYVY   3  #define XVID_CSP_UYVY   3
# Line 80  Line 63 
63  #define XVID_CSP_USER   12  #define XVID_CSP_USER   12
64  #define XVID_CSP_EXTERN      1004  // per slice rendering  #define XVID_CSP_EXTERN      1004  // per slice rendering
65  #define XVID_CSP_YVYU   1002  #define XVID_CSP_YVYU   1002
66  #define XVID_CSP_RGB32  1000    /* [b|g|r|a] */  #define XVID_CSP_RGB32  1000
 #define XVID_CSP_ABGR   1006    /* [a|b|g|r] */  
 #define XVID_CSP_RGBA   1005    /* [r|g|b|a] */  
   
   
   
67  #define XVID_CSP_NULL   9999  #define XVID_CSP_NULL   9999
68    
69  #define XVID_CSP_VFLIP  0x80000000      // flip mask  #define XVID_CSP_VFLIP  0x80000000      // flip mask
# Line 96  Line 74 
74   ****************************************************************************/   ****************************************************************************/
75    
76  /* CPU flags for XVID_INIT_PARAM.cpu_flags */  /* CPU flags for XVID_INIT_PARAM.cpu_flags */
 #define XVID_CPU_FORCE          0x80000000  
 #define XVID_CPU_CHKONLY        0x40000000              /* check cpu only; dont init globals */  
77    
78  #define XVID_CPU_ASM            0x00000080              /* native assembly */  #define XVID_CPU_MMX            0x00000001
79  /* ARCH_X86 */  #define XVID_CPU_MMXEXT         0x00000002
80  #define XVID_CPU_MMX            0x00000001              /* mmx: pentiumMMX,k6 */  #define XVID_CPU_SSE            0x00000004
81  #define XVID_CPU_MMXEXT         0x00000002              /* mmxx-ext: pentium2,athlon */  #define XVID_CPU_SSE2           0x00000008
82  #define XVID_CPU_SSE            0x00000004              /* sse: pentium3,athlonXP */  #define XVID_CPU_3DNOW          0x00000010
83  #define XVID_CPU_SSE2           0x00000008              /* sse2: pentium4,athlon64 */  #define XVID_CPU_3DNOWEXT       0x00000020
 #define XVID_CPU_3DNOW          0x00000010              /* 3dnow: k6-2 */  
 #define XVID_CPU_3DNOWEXT       0x00000020              /* 3dnow-ext: athlon */  
 #define XVID_CPU_TSC            0x00000040              /* timestamp counter */  
 /* ARCH_IA64 */  
 #define XVID_CPU_IA64           XVID_CPU_ASM    /* defined for backward compatibility */  
 /* ARCH_PPC */  
 #define XVID_CPU_ALTIVEC        0x00000001              /* altivec */  
84    
85    #define XVID_CPU_TSC            0x00000040
86    
87    #define XVID_CPU_IA64           0x00000080
88    
89    #define XVID_CPU_CHKONLY        0x40000000              /* check cpu only; dont init globals */
90    #define XVID_CPU_FORCE          0x80000000
91    
         typedef struct  
         {  
                 int colorspace;  
                 void * y;  
                 void * u;  
                 void * v;  
                 int y_stride;  
                 int uv_stride;  
         } XVID_IMAGE;           /* from yv12 */  
   
 #define XVID_INIT_INIT          0  
 #define XVID_INIT_CONVERT       1  
 #define XVID_INIT_TEST          2  
92    
93  /*****************************************************************************  /*****************************************************************************
94   *  Initialization structures   *  Initialization structures
# Line 140  Line 102 
102          }          }
103          XVID_INIT_PARAM;          XVID_INIT_PARAM;
104    
         typedef struct  
         {  
                 XVID_IMAGE input;  
                 XVID_IMAGE output;  
                 int width;  
                 int height;  
                 int interlacing;  
         } XVID_INIT_CONVERTINFO;  
   
105  /*****************************************************************************  /*****************************************************************************
106   *  Initialization entry point   *  Initialization entry point
107   ****************************************************************************/   ****************************************************************************/
# Line 164  Line 117 
117   ****************************************************************************/   ****************************************************************************/
118    
119  /* Flags for XVID_DEC_FRAME.general */  /* Flags for XVID_DEC_FRAME.general */
 #define XVID_DEC_LOWDELAY               0x00000001      /* decode lowdelay mode (ie. video-for-windows) */  
 #define XVID_DEC_DEBLOCKY               0x00000002      /* luma deblocking */  
 #define XVID_DEC_DEBLOCKUV              0x00000008      /* chroma deblocking */  
 #define XVID_DEC_DISCONTINUITY  0x00000004      /* indicates break in stream; instructs  
                                                                                         decoder to ignore any previous reference frames */  
120  #define XVID_QUICK_DECODE               0x00000010  #define XVID_QUICK_DECODE               0x00000010
121    
122  /*****************************************************************************  /*****************************************************************************
# Line 184  Line 132 
132          XVID_DEC_PARAM;          XVID_DEC_PARAM;
133    
134    
 #define XVID_DEC_VOP    0  
 #define XVID_DEC_VOL    1  
 #define XVID_DEC_NOTHING        2       /* nothing was decoded */  
   
         typedef struct  
         {  
                 int notify;                     /* [out]        output 'mode' */  
                 union  
                 {  
                         struct  /* XVID_DEC_VOP */  
                         {  
                                 int time_base;          /* [out]        time base */  
                                 int time_increment;     /* [out]        time increment */  
                         } vop;  
                         struct  /* XVID_DEC_VOL */  
                         {  
                                 int general;            /* [out]        flags: eg. frames are interlaced */  
                                 int width;                      /* [out]        width */  
                                 int height;                     /* [out]        height */  
                                 int aspect_ratio;       /* [out]        aspect ratio */  
                                 int par_width;          /* [out]        aspect ratio width */  
                                 int par_height;         /* [out]        aspect ratio height */  
                         } vol;  
                 } data;  
         } XVID_DEC_STATS;  
   
   
135          typedef struct          typedef struct
136          {          {
137                  int general;                  int general;
# Line 255  Line 176 
176  #define XVID_GLOBAL_PACKED              0x00000001      /* packed bitstream */  #define XVID_GLOBAL_PACKED              0x00000001      /* packed bitstream */
177  #define XVID_GLOBAL_DX50BVOP    0x00000002      /* dx50 bvop compatibility */  #define XVID_GLOBAL_DX50BVOP    0x00000002      /* dx50 bvop compatibility */
178  #define XVID_GLOBAL_DEBUG               0x00000004      /* print debug info on each frame */  #define XVID_GLOBAL_DEBUG               0x00000004      /* print debug info on each frame */
 #define XVID_GLOBAL_REDUCED             0x04000000      /* reduced resolution vop enable */  
   
 #define XVID_GLOBAL_EXTRASTATS  0x00000200      /* generate extra statistics */  
   
179    
180  /* Flags for XVID_ENC_FRAME.general */  /* Flags for XVID_ENC_FRAME.general */
181  #define XVID_VALID_FLAGS                0x80000000  #define XVID_VALID_FLAGS                0x80000000
# Line 267  Line 184 
184  #define XVID_H263QUANT                  0x00000010  #define XVID_H263QUANT                  0x00000010
185  #define XVID_MPEGQUANT                  0x00000020  #define XVID_MPEGQUANT                  0x00000020
186  #define XVID_HALFPEL                    0x00000040      /* use halfpel interpolation */  #define XVID_HALFPEL                    0x00000040      /* use halfpel interpolation */
 #define XVID_QUARTERPEL                 0x02000000  
187  #define XVID_ADAPTIVEQUANT              0x00000080  #define XVID_ADAPTIVEQUANT              0x00000080
188  #define XVID_LUMIMASKING                0x00000100  #define XVID_LUMIMASKING                0x00000100
189    #define XVID_LATEINTRA                  0x00000200
190    
191  #define XVID_INTERLACING                0x00000400      /* enable interlaced encoding */  #define XVID_INTERLACING                0x00000400      /* enable interlaced encoding */
192  #define XVID_TOPFIELDFIRST              0x00000800      /* set top-field-first flag  */  #define XVID_TOPFIELDFIRST              0x00000800      /* set top-field-first flag  */
# Line 286  Line 203 
203  #define XVID_ME_PMVFAST                 0x00080000  #define XVID_ME_PMVFAST                 0x00080000
204  #define XVID_ME_EPZS                    0x00100000  #define XVID_ME_EPZS                    0x00100000
205    
206    
207  #define XVID_GREYSCALE                  0x01000000      /* enable greyscale only mode (even for */  #define XVID_GREYSCALE                  0x01000000      /* enable greyscale only mode (even for */
208  #define XVID_GRAYSCALE                  0x01000000  /* color input material chroma is ignored) */  #define XVID_GRAYSCALE                  0x01000000  /* color input material chroma is ignored) */
209    
 #define XVID_GMC                                0x10000000  
 #define XVID_GMC_TRANSLATIONAL  0x20000000  
   
 #define XVID_REDUCED                    0x04000000      /* reduced resolution vop */  
 #define XVID_HQACPRED                   0x08000000      /* 20030209: high quality ac prediction */  
   
 #define XVID_EXTRASTATS                 0x00000200  /* generate extra statistics */  
   
210    
211  /* Flags for XVID_ENC_FRAME.motion */  /* Flags for XVID_ENC_FRAME.motion */
212  #define PMV_ADVANCEDDIAMOND8    0x00004000  #define PMV_ADVANCEDDIAMOND8    0x00004000
# Line 304  Line 214 
214    
215  #define PMV_HALFPELDIAMOND16    0x00010000  #define PMV_HALFPELDIAMOND16    0x00010000
216  #define PMV_HALFPELREFINE16     0x00020000  #define PMV_HALFPELREFINE16     0x00020000
217  #define PMV_QUARTERPELREFINE16  0x00040000  #define PMV_EXTSEARCH16                 0x00040000      /* extend PMV by more searches */
218  #define PMV_EXTSEARCH16                 0x00080000      /* extend PMV by more searches */  #define PMV_EARLYSTOP16                 0x00080000
219    #define PMV_QUICKSTOP16                 0x00100000      /* like early, but without any more refinement */
 #define PMV_CHROMA16                    0x00100000      /* also use chroma for MB-ME */  
220  #define PMV_UNRESTRICTED16      0x00200000      /* unrestricted ME, not implemented */  #define PMV_UNRESTRICTED16      0x00200000      /* unrestricted ME, not implemented */
221  #define PMV_OVERLAPPING16       0x00400000      /* overlapping ME, not implemented */  #define PMV_OVERLAPPING16       0x00400000      /* overlapping ME, not implemented */
222  #define PMV_USESQUARES16                0x00800000      /* use squares instead of diamonds as search pattern */  #define PMV_USESQUARES16                0x00800000
223    
224  #define PMV_HALFPELDIAMOND8     0x01000000  #define PMV_HALFPELDIAMOND8     0x01000000
225  #define PMV_HALFPELREFINE8              0x02000000  #define PMV_HALFPELREFINE8              0x02000000
226  #define PMV_QUARTERPELREFINE8   0x04000000  #define PMV_EXTSEARCH8                  0x04000000      /* extend PMV by more searches */
227  #define PMV_EXTSEARCH8                  0x08000000      /* extend PMV by more searches */  #define PMV_EARLYSTOP8                  0x08000000
228    #define PMV_QUICKSTOP8                  0x10000000      /* like early, but without any more refinement */
 #define PMV_CHROMA8                             0x10000000      /* also use chroma for B-ME */  
229  #define PMV_UNRESTRICTED8       0x20000000      /* unrestricted ME, not implemented */  #define PMV_UNRESTRICTED8       0x20000000      /* unrestricted ME, not implemented */
230  #define PMV_OVERLAPPING8                0x40000000      /* overlapping ME, not implemented */  #define PMV_OVERLAPPING8                0x40000000      /* overlapping ME, not implemented */
231  #define PMV_USESQUARES8                 0x80000000  #define PMV_USESQUARES8                 0x80000000
232    
233    
 /* note: old and deprecated */  
   
 /* only for compatability with old encoders */  
   
 #define PMV_EARLYSTOP16                 0x00  
 #define PMV_EARLYSTOP8                  0x00  
 #define PMV_QUICKSTOP16                 0x00  
 #define PMV_QUICKSTOP8                  0x00  
   
 #define XVID_ME_COLOUR                  0x00    /* this has been converted to PMV_COLOUR[16/8] */  
   
   
234  /*****************************************************************************  /*****************************************************************************
235   * Encoder structures   * Encoder structures
236   ****************************************************************************/   ****************************************************************************/
# Line 353  Line 249 
249  #ifdef _SMP  #ifdef _SMP
250                  int num_threads;                /* number of threads */                  int num_threads;                /* number of threads */
251  #endif  #endif
252    #ifdef BFRAMES
253                  int global;                             /* global/debug options */                  int global;                             /* global/debug options */
254                  int max_bframes;                /* max sequential bframes (0=disable bframes) */                  int max_bframes;                /* max sequential bframes (0=disable bframes) */
255                  int bquant_ratio;               /* bframe quantizer multipier (percentage).                  int bquant_ratio;               /* bframe quantizer multipier (percentage).
# Line 360  Line 257 
257                                                                   * eg. 200 = x2 multiplier                                                                   * eg. 200 = x2 multiplier
258                                                                   * quant = ((past_quant + future_quant) * bquant_ratio)/200                                                                   * quant = ((past_quant + future_quant) * bquant_ratio)/200
259                                                                   */                                                                   */
                 int bquant_offset;              /* bquant += bquant_offset */  
260                  int frame_drop_ratio;   /* frame dropping: 0=drop none... 100=drop all */                  int frame_drop_ratio;   /* frame dropping: 0=drop none... 100=drop all */
261    #endif
262                  void *handle;                   /* [out] encoder instance handle */                  void *handle;                   /* [out] encoder instance handle */
263          }          }
264          XVID_ENC_PARAM;          XVID_ENC_PARAM;
# Line 406  Line 303 
303                  int length;                             /* [out] bitstream length (bytes) */                  int length;                             /* [out] bitstream length (bytes) */
304    
305                  void *image;                    /* [in] image ptr */                  void *image;                    /* [in] image ptr */
                 int stride;  
306                  int colorspace;                 /* [in] source colorspace */                  int colorspace;                 /* [in] source colorspace */
307    
308                  unsigned char *quant_intra_matrix;      // [in] custom intra qmatrix */                  unsigned char *quant_intra_matrix;      // [in] custom intra qmatrix */
# Line 417  Line 313 
313                                                                   */                                                                   */
314                  HINTINFO hint;                  /* [in/out] mv hint information */                  HINTINFO hint;                  /* [in/out] mv hint information */
315    
316    #ifdef BFRAMES
317                  int bquant;                             /* [in] bframe quantizer */                  int bquant;                             /* [in] bframe quantizer */
318    #endif
319    
320          }          }
321          XVID_ENC_FRAME;          XVID_ENC_FRAME;
# Line 428  Line 326 
326                  int quant;                              /* [out] frame quantizer */                  int quant;                              /* [out] frame quantizer */
327                  int hlength;                    /* [out] header length (bytes) */                  int hlength;                    /* [out] header length (bytes) */
328                  int kblks, mblks, ublks;        /* [out] */                  int kblks, mblks, ublks;        /* [out] */
329                  long sse_y;                             /* [out] SSE of Y */  
                 long sse_u;                             /* [out] SSE of Cb */  
                 long sse_v;                             /* [out] SSE of Cr */  
330          }          }
331          XVID_ENC_STATS;          XVID_ENC_STATS;
332    

Legend:
Removed from v.1.17.2.27  
changed lines
  Added in v.1.18

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