--- xvid.h 2007/06/27 18:57:42 1.51.2.5 +++ xvid.h 2010/10/10 19:19:55 1.69 @@ -1,9 +1,9 @@ /***************************************************************************** * * XVID MPEG-4 VIDEO CODEC - * - XviD Main header file - + * - Xvid Main header file - * - * Copyright(C) 2001-2004 Peter Ross + * Copyright(C) 2001-2010 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.51.2.5 2007/06/27 18:57:42 Isibaar Exp $ + * $Id: xvid.h,v 1.69 2010/10/10 19:19:55 Isibaar Exp $ * ****************************************************************************/ @@ -57,8 +57,10 @@ #define XVID_API_MAJOR(a) (((a)>>16) & 0xff) #define XVID_API_MINOR(a) (((a)>> 0) & 0xff) -#define XVID_VERSION XVID_MAKE_VERSION(1,1,3) -#define XVID_API XVID_MAKE_API(4, 1) +#define XVID_VERSION XVID_MAKE_VERSION(1,3,-127) +#define XVID_API XVID_MAKE_API(4, 3) + +#define XVID_UNSTABLE /* Bitstream Version * this will be writen into the bitstream to allow easy detection of xvid @@ -71,7 +73,7 @@ * doesnt hurt but not increasing it could cause difficulty for decoders in the * future */ -#define XVID_BS_VERSION 46 +#define XVID_BS_VERSION 57 /***************************************************************************** * error codes @@ -100,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 */ @@ -126,6 +129,9 @@ #define XVID_PROFILE_S_L1 0x01 #define XVID_PROFILE_S_L2 0x02 #define XVID_PROFILE_S_L3 0x03 +#define XVID_PROFILE_S_L4a 0x04 +#define XVID_PROFILE_S_L5 0x05 +#define XVID_PROFILE_S_L6 0x06 #define XVID_PROFILE_ARTS_L1 0x91 /* advanced realtime simple */ #define XVID_PROFILE_ARTS_L2 0x92 #define XVID_PROFILE_ARTS_L3 0x93 @@ -167,6 +173,8 @@ #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_SSE41 (1<< 9) /* sse41: penryn */ #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 */ @@ -231,13 +239,14 @@ extern int xvid_decore(void *handle, int opt, void *param1, void *param2); /* XVID_DEC_CREATE param 1 - image width & height may be specified here when the dimensions are - known in advance. */ + image width & height as well as FourCC code may be specified + here when known in advance (e.g. being read from container) */ typedef struct { int version; - int width; /* [in:opt] image width */ - int height; /* [in:opt] image width */ - void * handle; /* [out] decore context handle */ + int width; /* [in:opt] image width */ + int height; /* [in:opt] image width */ + void * handle; /* [out] decore context handle */ + int fourcc; /* [in:opt] fourcc of the video */ } xvid_dec_create_t; @@ -359,6 +368,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 @@ -424,6 +434,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 */ @@ -479,6 +492,9 @@ 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*/ +extern xvid_plugin_func xvid_plugin_psnrhvsm; /*write psnrhvsm values to stdout*/ + /* single pass rate control * CBR and Constant quantizer modes */ @@ -532,6 +548,28 @@ }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; + + int cpu_flags; /* XVID_CPU_XXX flags */ + +} xvid_plugin_ssim_t; + +typedef struct { + int version; + + int method; /* [in] masking method to apply. 0 for luminance masking, 1 for variance masking */ +} xvid_plugin_lumimasking_t; + /***************************************************************************** * ENCODER API ****************************************************************************/ @@ -729,6 +767,9 @@ /* ---------------------------------------------- */ void *handle; /* [out] encoder instance handle */ + + /* ------- v1.3.x ------- */ + int start_frame_num; /* [in:opt] frame number of start frame relative to zones definitions. allows to encode sub-sequences */ } xvid_enc_create_t;