📄 xvid.h
字号:
/***************************************************************************** * * XVID MPEG-4 VIDEO CODEC * - XviD Main header file - * * This file is part of XviD, a free MPEG-4 video encoder/decoder * * XviD is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Under section 8 of the GNU General Public License, the copyright * holders of XVID explicitly forbid distribution in the following * countries: * * - Japan * - United States of America * * Linking XviD statically or dynamically with other modules is making a * combined work based on XviD. Thus, the terms and conditions of the * GNU General Public License cover the whole combination. * * As a special exception, the copyright holders of XviD give you * permission to link XviD with independent modules that communicate with * XviD solely through the VFW1.1 and DShow interfaces, regardless of the * license terms of these independent modules, and to copy and distribute * the resulting combined work under terms of your choice, provided that * every copy of the combined work is accompanied by a complete copy of * the source code of XviD (the version of XviD used to produce the * combined work), being distributed under the terms of the GNU General * Public License plus this exception. An independent module is a module * which is not derived from or based on XviD. * * Note that people who make modified versions of XviD are not obligated * to grant this special exception for their modified versions; it is * their choice whether to do so. The GNU General Public License gives * permission to release a modified version without this exception; this * exception also makes it possible to release a modified version which * carries forward this exception. * * $Id: xvid.h,v 1.24 2002/11/26 23:44:10 edgomez Exp $ * *****************************************************************************/#ifndef _XVID_H_#define _XVID_H_#ifdef __cplusplusextern "C" {#endif/** * \defgroup global_grp Global constants used in both encoder and decoder. * * This module describe all constants used in both the encoder and the decoder. * @{ *//***************************************************************************** * API version number ****************************************************************************//** * \defgroup api_grp API version * @{ */#define API_VERSION ((2 << 16) | (1))/**< This constant tells you what XviD's * version this header defines. * * You can use it to check if the host XviD library API is the same as the one * you used to build you client program. If versions mismatch, then it is * highly possible that your application will segfault because the host XviD * library and your application use different structures. * *//** @} *//***************************************************************************** * Error codes ****************************************************************************//** * \defgroup error_grp Error codes returned by XviD API entry points. * @{ */#define XVID_ERR_FAIL -1 /**< Operation failed. * * The requested XviD operation failed. If this error code is returned from : * <ul> * <li>the xvid_init function : you must not try to use an XviD's instance from * this point of the code. Clean all instances you * already created and exit the program cleanly. * <li>xvid_encore or xvid_decore : something was wrong and en/decoding * operation was not completed sucessfully. * you can stop the en/decoding process or just * ignore and go on. * <li>xvid_stop : you can safely ignore it if you call this function at the * end of your program. * </ul> */#define XVID_ERR_OK 0 /**< Operation succeed. * * The requested XviD operation succeed, you can continue to use XviD's * functions. */#define XVID_ERR_MEMORY 1 /**< Operation failed. * * Insufficent memory was available on the host system. */#define XVID_ERR_FORMAT 2 /**< Operation failed. * * The format of the parameters or input stream were incorrect. *//** @} *//***************************************************************************** * Color space constants ****************************************************************************//** * \defgroup csp_grp Colorspaces constants. * @{ */#define XVID_CSP_RGB24 0 /**< 24-bit RGB colorspace (b,g,r packed) */#define XVID_CSP_YV12 1 /**< YV12 colorspace (y,v,u planar) */#define XVID_CSP_YUY2 2 /**< YUY2 colorspace (y,u,y,v packed) */#define XVID_CSP_UYVY 3 /**< UYVY colorspace (u,y,v,y packed) */#define XVID_CSP_I420 4 /**< I420 colorsapce (y,u,v planar) */#define XVID_CSP_RGB555 10 /**< 16-bit RGB555 colorspace */#define XVID_CSP_RGB565 11 /**< 16-bit RGB565 colorspace */#define XVID_CSP_USER 12 /**< user colorspace format, where the image buffer points * to a DEC_PICTURE (y,u,v planar) structure. * * For encoding, image is read from the DEC_PICTURE * parameter values. For decoding, the DEC_PICTURE * parameters are set, pointing to the internal XviD * image buffer. */#define XVID_CSP_EXTERN 1004 /**< Special colorspace used for slice rendering * * The application provides an external buffer to XviD. * This way, XviD works directly into the final rendering * buffer, no need to specify this is a speed boost feature. * This feature is only used by mplayer at the moment, refer * to mplayer code to see how it can be used. */#define XVID_CSP_YVYU 1002 /**< YVYU colorspace (y,v,y,u packed) */#define XVID_CSP_RGB32 1000 /**< 32-bit RGB colorspace (b,g,r,a packed) */#define XVID_CSP_NULL 9999 /**< NULL colorspace; no conversion is performed */#define XVID_CSP_VFLIP 0x80000000 /**< (flag) Flip frame vertically during conversion *//** @} *//** @} *//** * \defgroup init_grp Initialization constants, structures and functions. * * This section describes all the constants, structures and functions used to * initialize the XviD core library * * @{ *//***************************************************************************** * CPU flags ****************************************************************************//** * \defgroup cpu_grp Flags for XVID_INIT_PARAM.cpu_flags. * * This section describes all constants that show host cpu available features, * and allow a client application to force usage of some cpu instructions sets. * @{ *//** * \defgroup x86_grp x86 specific cpu flags * @{ */#define XVID_CPU_MMX 0x00000001 /**< use/has MMX instruction set */#define XVID_CPU_MMXEXT 0x00000002 /**< use/has MMX-ext (pentium3) instruction set */#define XVID_CPU_SSE 0x00000004 /**< use/has SSE (pentium3) instruction set */#define XVID_CPU_SSE2 0x00000008 /**< use/has SSE2 (pentium4) instruction set */#define XVID_CPU_3DNOW 0x00000010 /**< use/has 3dNOW (k6-2) instruction set */#define XVID_CPU_3DNOWEXT 0x00000020 /**< use/has 3dNOW-ext (athlon) instruction set */#define XVID_CPU_TSC 0x00000040 /**< has TimeStampCounter instruction *//** @} *//** * \defgroup ia64_grp ia64 specific cpu flags. * @{ */#define XVID_CPU_IA64 0x00000080 /**< Forces ia64 optimized code usage * * This flags allow client applications to force IA64 optimized functions. * This feature is considered exeperimental and should be treated as is. *//** @} *//** * \defgroup iniflags_grp Initialization commands. * * @{ */#define XVID_CPU_CHKONLY 0x40000000 /**< Check cpu features * * When this flag is set, the xvid_init function performs just a cpu feature * checking and then fills the cpu field. This flag is usefull when client * applications want to know what instruction sets the host cpu supports. */#define XVID_CPU_FORCE 0x80000000 /**< Force input flags to be used * * When this flag is set, client application forces XviD to use other flags * set in cpu_flags. \b Use this at your own risk. *//** @} *//** @} *//***************************************************************************** * Initialization structures ****************************************************************************//** Structure used in xvid_init function. */ typedef struct { int cpu_flags; /**< [in/out] * * Filled with desired[in] or available[out] * cpu instruction sets. */ int api_version; /**< [out] * * xvid_init will initialize this field with * the API_VERSION used in this XviD core * library */ int core_build; /**< [out] * \todo Unused. */ } XVID_INIT_PARAM;/***************************************************************************** * Initialization entry point ****************************************************************************//** * \defgroup inientry_grp Initialization entry point. * @{ *//** * \brief Initialization entry point. * * This is the XviD's initialization entry point, it is only used to initialize * the XviD internal data (function pointers, vector length code tables, * rgb2yuv lookup tables). * * \param handle Reserved for future use. * \param opt Reserved for future use (set it to 0). * \param param1 Used to pass an XVID_INIT_PARAM parameter. * \param param2 Reserved for future use. */ int xvid_init(void *handle, int opt, void *param1, void *param2);/** @} *//** @} *//***************************************************************************** * Decoder constant ****************************************************************************//** * \defgroup decoder_grp Decoder related functions and structures. * * This part describes all the structures/functions from XviD's API needed for * decoding a MPEG4 compliant streams. * @{ *//** * \defgroup decframe_grp Flags for XVID_DEC_FRAME.general * * Flags' description for the XVID_DEC_FRAME.general member. * * @{ *//** Not used at the moment */#define XVID_QUICK_DECODE 0x00000010/** * @} *//***************************************************************************** * Decoder structures ****************************************************************************/ typedef struct { int width; int height; void *handle; } XVID_DEC_PARAM; typedef struct { int general; void *bitstream; int length; void *image; int stride; int colorspace; } XVID_DEC_FRAME; /* This struct is used for per slice rendering */ typedef struct { void *y,*u,*v; int stride_y, stride_u,stride_v; } XVID_DEC_PICTURE;/***************************************************************************** * Decoder entry point ****************************************************************************//** * \defgroup decops_grp Decoder operations * * These are all the operations XviD's decoder can perform. * * @{ */#define XVID_DEC_DECODE 0 /**< Decodes a frame * * This operation constant is used when client application wants to decode a * frame. Client application must also fill XVID_DEC_FRAME appropriately. */#define XVID_DEC_CREATE 1 /**< Creates a decoder instance * * This operation constant is used by a client application in order to create * a decoder instance. Decoder instances are independant from each other, and * can be safely threaded. */#define XVID_DEC_DESTROY 2 /**< Destroys a decoder instance * * This operation constant is used by the client application to destroy a * previously created decoder instance. *//** * @} *//** * \defgroup decentry_grp Decoder entry point * * @{ *//** * \brief Decoder entry point. *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -