--- trunk/xvidcore/src/xvid.h 2004/12/19 12:49:05 1582 +++ trunk/xvidcore/src/xvid.h 2006/12/06 19:55:07 1764 @@ -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.47 2004-12-19 12:49:05 edgomez Exp $ + * $Id: xvid.h,v 1.60 2006-12-06 19:55:07 Isibaar Exp $ * ****************************************************************************/ @@ -57,7 +57,7 @@ #define XVID_API_MAJOR(a) (((a)>>16) & 0xff) #define XVID_API_MINOR(a) (((a)>> 0) & 0xff) -#define XVID_VERSION XVID_MAKE_VERSION(1,1,-127) +#define XVID_VERSION XVID_MAKE_VERSION(1,2,-127) #define XVID_API XVID_MAKE_API(4, 1) #define XVID_UNSTABLE @@ -73,7 +73,7 @@ * doesnt hurt but not increasing it could cause difficulty for decoders in the * future */ -#define XVID_BS_VERSION 37 +#define XVID_BS_VERSION 47 /***************************************************************************** * error codes @@ -102,6 +102,7 @@ #define XVID_CSP_YUY2 (1<< 3) /* 4:2:2 packed */ #define XVID_CSP_UYVY (1<< 4) /* 4:2:2 packed */ #define XVID_CSP_YVYU (1<< 5) /* 4:2:2 packed */ +#define XVID_CSP_RGB (1<<16) /* 24-bit rgb packed */ #define XVID_CSP_BGRA (1<< 6) /* 32-bit bgra packed */ #define XVID_CSP_ABGR (1<< 7) /* 32-bit abgr packed */ #define XVID_CSP_RGBA (1<< 8) /* 32-bit rgba packed */ @@ -169,6 +170,7 @@ #define XVID_CPU_MMXEXT (1<< 1) /* mmx-ext : pentium2, athlon */ #define XVID_CPU_SSE (1<< 2) /* sse : pentium3, athlonXP */ #define XVID_CPU_SSE2 (1<< 3) /* sse2 : pentium4, athlon64 */ +#define XVID_CPU_SSE3 (1<< 8) /* sse3 : pentium4, athlon64 */ #define XVID_CPU_3DNOW (1<< 4) /* 3dnow : k6-2 */ #define XVID_CPU_3DNOWEXT (1<< 5) /* 3dnow-ext : athlon */ #define XVID_CPU_TSC (1<< 6) /* tsc : Pentium */ @@ -361,6 +363,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 @@ -426,6 +429,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 */ @@ -481,6 +487,8 @@ extern xvid_plugin_func xvid_plugin_psnr; /* write psnr values to stdout */ extern xvid_plugin_func xvid_plugin_dump; /* dump before and after yuvpgms */ +extern xvid_plugin_func xvid_plugin_ssim; /*write ssim values to stdout*/ + /* single pass rate control * CBR and Constant quantizer modes */ @@ -534,6 +542,20 @@ }xvid_plugin_2pass2_t; + +typedef struct{ + /*stat output*/ + int b_printstat; + char* stat_path; + + /*visualize*/ + int b_visualize; + + /*accuracy 0 very accurate 4 very fast*/ + int acc; + +} xvid_plugin_ssim_t; + /***************************************************************************** * ENCODER API ****************************************************************************/ @@ -593,7 +615,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 @@ -607,6 +630,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 */ @@ -636,7 +660,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