--- xvid.h 2004/05/09 14:00:35 1.27.2.67 +++ xvid.h 2006/01/08 22:25:57 1.54 @@ -3,7 +3,7 @@ * XVID MPEG-4 VIDEO CODEC * - XviD Main header file - * - * Copyright(C) 2001-2003 Peter Ross + * Copyright(C) 2001-2004 Peter Ross * * 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 @@ -19,7 +19,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: xvid.h,v 1.27.2.67 2004/05/09 14:00:35 chl Exp $ + * $Id: xvid.h,v 1.54 2006/01/08 22:25:57 Isibaar Exp $ * ****************************************************************************/ @@ -57,8 +57,8 @@ #define XVID_API_MAJOR(a) (((a)>>16) & 0xff) #define XVID_API_MINOR(a) (((a)>> 0) & 0xff) -#define XVID_VERSION XVID_MAKE_VERSION(1,0,-124) -#define XVID_API XVID_MAKE_API(4, 0) +#define XVID_VERSION XVID_MAKE_VERSION(1,2,-127) +#define XVID_API XVID_MAKE_API(4, 1) #define XVID_UNSTABLE @@ -73,8 +73,7 @@ * doesnt hurt but not increasing it could cause difficulty for decoders in the * future */ -#define XVID_BS_VERSION "0030" - +#define XVID_BS_VERSION 43 /***************************************************************************** * error codes @@ -251,6 +250,12 @@ #define XVID_DEBLOCKY (1<<2) /* perform luma deblocking */ #define XVID_DEBLOCKUV (1<<3) /* perform chroma deblocking */ #define XVID_FILMEFFECT (1<<4) /* adds film grain */ +#define XVID_DERINGUV (1<<5) /* perform chroma deringing, requires deblocking to work */ +#define XVID_DERINGY (1<<6) /* perform luma deringing, requires deblocking to work */ + +#define XVID_DEC_FAST (1<<29) /* disable postprocessing to decrease cpu usage *todo* */ +#define XVID_DEC_DROP (1<<30) /* drop bframes to decrease cpu usage *todo* */ +#define XVID_DEC_PREROLL (1<<31) /* decode as fast as you can, don't even show output *todo* */ typedef struct { int version; @@ -258,6 +263,8 @@ void *bitstream; /* [in] bitstream (read from)*/ int length; /* [in] bitstream length */ xvid_image_t output; /* [in] output image (written to) */ +/* ------- v1.1.x ------- */ + int brightness; /* [in] brightness offset (0=none) */ } xvid_dec_frame_t; @@ -354,6 +361,7 @@ #define XVID_REQORIGINAL (1<<0) /* plugin requires a copy of the original (uncompressed) image */ #define XVID_REQPSNR (1<<1) /* plugin requires psnr between the uncompressed and compressed image*/ #define XVID_REQDQUANTS (1<<2) /* plugin requires access to the dquant table */ +#define XVID_REQLAMBDA (1<<3) /* plugin requires access to the lambda table */ typedef struct @@ -419,6 +427,9 @@ int vol_flags; /* [in,out] */ int motion_flags; /* [in,out] */ + /* Lambda table for HVSPlugins */ + float * lambda; /* [in,out] six floats for each macroblock. read, multiply, write back */ + /* Deprecated, use the stats field instead. * Will disapear before 1.0 */ int length; /* [out] after: length of encoded frame */ @@ -501,7 +512,7 @@ typedef struct { int version; - int bitrate; /* [in] bits per second */ + int bitrate; /* [in] target bitrate (bits per second) */ char * filename; /* [in] first pass stats filename */ int keyframe_boost; /* [in] keyframe boost percentage: [0..100] */ @@ -519,12 +530,11 @@ int container_frame_overhead; /* [in] How many bytes the controller has to compensate per frame due to container format overhead */ -#ifdef VBV - int vbvsize; - int vbvinitial; - int vbv_maxrate; - int vbv_peakrate; -#endif +/* ------- v1.1.x ------- */ + int vbv_size; /* [in] buffer size (bits) */ + int vbv_initial; /* [in] initial buffer occupancy (bits) */ + int vbv_maxrate; /* [in] max processing bitrate (bits per second) */ + int vbv_peakrate; /* [in:opt] max average bitrate over 3 seconds (bits per second) */ }xvid_plugin_2pass2_t; @@ -587,7 +597,8 @@ #define XVID_GLOBAL_VOL_AT_IVOP (1<<3) /* write vol at every ivop: WIN32/divx compatibility */ #define XVID_GLOBAL_FORCE_VOL (1<<4) /* when vol-based parameters are changed, insert an ivop NOT recommended */ #endif - +#define XVID_GLOBAL_DIVX5_USERDATA (1<<5) /* write divx5 userdata string + this is implied if XVID_GLOBAL_PACKED is set */ /*---------------------------------------------------------------------------- * "VOL" flags @@ -601,6 +612,7 @@ #define XVID_VOL_QUARTERPEL (1<<2) /* enable quarterpel: frames will encoded as quarterpel */ #define XVID_VOL_GMC (1<<3) /* enable GMC; frames will be checked for gmc suitability */ #define XVID_VOL_REDUCED_ENABLE (1<<4) /* enable reduced resolution vops: frames will be checked for rrv suitability */ + /* NOTE: the reduced resolution feature is not supported anymore. This flag will have no effect! */ #define XVID_VOL_INTERLACING (1<<5) /* enable interlaced encoding */ @@ -622,6 +634,7 @@ #define XVID_VOP_HQACPRED (1<< 7) /* high quality ac prediction */ #define XVID_VOP_MODEDECISION_RD (1<< 8) /* enable DCT-ME and use it for mode decision */ #define XVID_VOP_FAST_MODEDECISION_RD (1<<12) /* use simplified R-D mode decision */ +#define XVID_VOP_RD_BVOP (1<<13) /* enable rate-distortion mode decision in b-frames */ /* Only valid for vol_flags|=XVID_VOL_INTERLACING */ #define XVID_VOP_TOPFIELDFIRST (1<< 9) /* set top-field-first flag */ @@ -629,7 +642,7 @@ /* only valid for vol_flags|=XVID_VOL_REDUCED_ENABLED */ #define XVID_VOP_REDUCED (1<<11) /* reduced resolution vop */ - + /* NOTE: reduced resolution feature is not supported anymore. This flag will have no effect! */ /*---------------------------------------------------------------------------- * "Motion" flags