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

📄 xvid.h

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 H
📖 第 1 页 / 共 2 页
字号:
int xvid_global(void *handle, int opt, void *param1, void *param2);class C_xvid_image{public:   byte *y;   byte *u;   byte *v;   C_xvid_image():      y(NULL),      u(NULL),      v(NULL)   {}};void * InitCodec(dword sx, dword sy, dword fcc);void CloseCodec(void *handle);//int DecodeFrame(void *handle, const void *buf, dword sz_in, byte **y, byte **u, byte **v, dword *pitch);int DecodeFrame(void *handle, const void *buf, dword sz_in, byte *&y, byte *&u, byte *&v, dword &pitch);/***************************************************************************** * xvid_decore() ****************************************************************************/#define XVID_DEC_CREATE  0 /* create decore instance; return 0 on success */#define XVID_DEC_DESTROY 1 /* destroy decore instance: return 0 on success */#define XVID_DEC_DECODE  2 /* decode a frame: returns number of bytes consumed >= 0 */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. */typedef struct {	int version;	int width;     /* [in:opt] image width */	int height;    /* [in:opt] image width */	void *handle; /* [out]	   decore context handle */#ifdef PROFILE   C_profiler *prof;#endif} xvid_dec_create_t;/* XVID_DEC_DECODE param1 *//* general flags */#define XVID_LOWDELAY      (1<<0) /* lowdelay mode  */#define XVID_DISCONTINUITY (1<<1) /* indicates break in stream */typedef struct {	int version;	int general;         /* [in:opt] general flags */	const void *bitstream;     /* [in]     bitstream (read from)*/	int length;          /* [in]     bitstream length */	//xvid_image_t output; /* [in]     output image (written to) */   const C_xvid_image *img_out;} xvid_dec_frame_t;/* XVID_DEC_DECODE param2 :: optional */typedef struct{	int version;	int type;                   /* [out] output data type */	union {		struct { /* type>0 {XVID_TYPE_IVOP,XVID_TYPE_PVOP,XVID_TYPE_BVOP,XVID_TYPE_SVOP} */			int general;        /* [out] flags */			int time_base;      /* [out] time base */			int time_increment; /* [out] time increment */			/* XXX: external deblocking stuff */			int * qscale;	    /* [out] pointer to quantizer table */			int qscale_stride;  /* [out] quantizer scale stride */		} vop;		struct {	/* XVID_TYPE_VOL */			int general;        /* [out] flags */			int width;          /* [out] width */			int height;         /* [out] height */			int par;            /* [out] picture aspect ratio (refer to XVID_PAR_xxx above) */			int par_width;      /* [out] aspect ratio width */			int par_height;     /* [out] aspect ratio height */		} vol;	} data;} xvid_dec_stats_t;#define XVID_ZONE_QUANT  (1<<0)#define XVID_ZONE_WEIGHT (1<<1)typedef struct{	int frame;	int mode;	int increment;	int base;} xvid_enc_zone_t;/*****************************************************************************  xvid plugin system -- internals  xvidcore will call XVID_PLG_INFO and XVID_PLG_CREATE during XVID_ENC_CREATE  before encoding each frame xvidcore will call XVID_PLG_BEFORE  after encoding each frame xvidcore will call XVID_PLG_AFTER  xvidcore will call XVID_PLG_DESTROY during XVID_ENC_DESTROY ****************************************************************************/#define XVID_PLG_CREATE  (1<<0)#define XVID_PLG_DESTROY (1<<1)#define XVID_PLG_INFO    (1<<2)#define XVID_PLG_BEFORE  (1<<3)#define XVID_PLG_FRAME   (1<<4)#define XVID_PLG_AFTER   (1<<5)/* xvid_plg_info_t.flags */#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 */typedef struct{	int version;	int flags;   /* [in:opt] plugin flags */} xvid_plg_info_t;typedef struct{	int version;	int num_zones;           /* [out] */	xvid_enc_zone_t * zones; /* [out] */	int width;               /* [out] */	int height;              /* [out] */	int mb_width;            /* [out] */	int mb_height;           /* [out] */	int fincr;               /* [out] */	int fbase;               /* [out] */	void * param;            /* [out] */} xvid_plg_create_t;typedef struct{	int version;	int num_frames; /* [out] total frame encoded */} xvid_plg_destroy_t;/*****************************************************************************  xvid plugin system -- external  the application passes xvid an array of "xvid_plugin_t" at XVID_ENC_CREATE. the array  indicates the plugin function pointer and plugin-specific data.  xvidcore handles the rest. example:  xvid_enc_create_t create;  xvid_enc_plugin_t plugins[2];  plugins[0].func = xvid_psnr_func;  plugins[0].param = NULL;  plugins[1].func = xvid_cbr_func;  plugins[1].param = &cbr_data;  create.num_plugins = 2;  create.plugins = plugins; ****************************************************************************/typedef int (xvid_plugin_func)(void * handle, int opt, void * param1, void * param2);typedef struct{	xvid_plugin_func * func;	void * param;} xvid_enc_plugin_t;xvid_plugin_func xvid_plugin_single;   /* single-pass rate control */xvid_plugin_func xvid_plugin_2pass1;   /* two-pass rate control: first pass */xvid_plugin_func xvid_plugin_2pass2;   /* two-pass rate control: second pass */xvid_plugin_func xvid_plugin_lumimasking;  /* lumimasking */xvid_plugin_func xvid_plugin_psnr;	/* write psnr values to stdout */xvid_plugin_func xvid_plugin_dump;	/* dump before and after yuvpgms *//* single pass rate control * CBR and Constant quantizer modes */typedef struct{	int version;	int bitrate;               /* [in] bits per second */	int reaction_delay_factor; /* [in] */	int averaging_period;      /* [in] */	int buffer;                /* [in] */} xvid_plugin_single_t;typedef struct {	int version;	char * filename;} xvid_plugin_2pass1_t;#define XVID_PAYBACK_BIAS 0 /* payback with bias */#define XVID_PAYBACK_PROP 1 /* payback proportionally */typedef struct {	int version;	int bitrate;                  /* [in] bits per second */	char * filename;              /* [in] first pass stats filename */	int keyframe_boost;           /* [in] keyframe boost percentage: [0..100] */	int curve_compression_high;   /* [in] percentage of compression performed on the high part of the curve (above average) */	int curve_compression_low;    /* [in] percentage of compression performed on the low  part of the curve (below average) */	int overflow_control_strength;/* [in] Payback delay expressed in number of frames */	int max_overflow_improvement; /* [in] percentage of allowed range for a frame that gets bigger because of overflow bonus */	int max_overflow_degradation; /* [in] percentage of allowed range for a frame that gets smaller because of overflow penalty */	int kfreduction;              /* [in] maximum bitrate reduction applied to an iframe under the kfthreshold distance limit */	int kfthreshold;              /* [in] if an iframe is closer to the next iframe than this distance, a quantity of bits								   *      is substracted from its bit allocation. The reduction is computed as multiples of								   *      kfreduction/kthreshold. It reaches kfreduction when the distance == kfthreshold,								   *      0 for 1<distance<kfthreshold */	int container_frame_overhead; /* [in] How many bytes the controller has to compensate per frame due to container format overhead */} xvid_plugin_2pass2_t;#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -