⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xvid.h

📁 用vc++实现的xvid编码器实现的压缩解压缩
💻 H
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************** * *  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 + -