📄 xvid2.h
字号:
void *bitstream; /* [in] bitstream (read from)*/ int length; /* [in] bitstream length */ xvid_image_t output; /* [in] output image (written to) */} 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] pixel aspect ratio (refer to XVID_PAR_xxx above) */ int par_width; /* [out] aspect ratio width [1..255] */ int par_height; /* [out] aspect ratio height [1..255] */ } 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_enc_stats_t structure * * Used in: * - xvid_plg_data_t structure * - optional parameter in xvid_encore() function * * .coding_type = XVID_TYPE_NOTHING if the stats are not given *--------------------------------------------------------------------------*/typedef struct { int version; /* encoding parameters */ int type; /* [out] coding type */ int quant; /* [out] frame quantizer */ int vol_flags; /* [out] vol flags (see above) */ int vop_flags; /* [out] vop flags (see above) */ /* bitrate */ int length; /* [out] frame length */ int hlength; /* [out] header length (bytes) */ int kblks; /* [out] number of blocks compressed as Intra */ int mblks; /* [out] number of blocks compressed as Inter */ int ublks; /* [out] number of blocks marked as not_coded */ int sse_y; /* [out] Y plane's sse */ int sse_u; /* [out] U plane's sse */ int sse_v; /* [out] V plane's sse */} xvid_enc_stats_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;typedef struct{ int version; xvid_enc_zone_t * zone; /* [out] current zone */ int width; /* [out] */ int height; /* [out] */ int mb_width; /* [out] */ int mb_height; /* [out] */ int fincr; /* [out] */ int fbase; /* [out] */ int min_quant[3]; /* [out] */ int max_quant[3]; /* [out] */ xvid_image_t reference; /* [out] -> [out] */ xvid_image_t current; /* [out] -> [in,out] */ xvid_image_t original; /* [out] after: points the original (uncompressed) copy of the current frame */ int frame_num; /* [out] frame number */ int type; /* [in,out] */ int quant; /* [in,out] */ int * dquant; /* [in,out] pointer to diff quantizer table */ int dquant_stride; /* [in,out] diff quantizer stride */ int vop_flags; /* [in,out] */ int vol_flags; /* [in,out] */ int motion_flags; /* [in,out] *//* Deprecated, use the stats field instead. * Will disapear before 1.0 */ int length; /* [out] after: length of encoded frame */ int kblks; /* [out] number of blocks compressed as Intra */ int mblks; /* [out] number of blocks compressed as Inter */ int ublks; /* [out] number of blocks marked not_coded */ int sse_y; /* [out] Y plane's sse */ int sse_u; /* [out] U plane's sse */ int sse_v; /* [out] V plane's sse *//* End of duplicated data, kept only for binary compatibility */ int bquant_ratio; /* [in] */ int bquant_offset; /* [in] */ xvid_enc_stats_t stats; /* [out] frame statistics */} xvid_plg_data_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;extern xvid_plugin_func xvid_plugin_single; /* single-pass rate control */extern xvid_plugin_func xvid_plugin_2pass1; /* two-pass rate control: first pass */extern xvid_plugin_func xvid_plugin_2pass2; /* two-pass rate control: second pass */extern xvid_plugin_func xvid_plugin_lumimasking; /* lumimasking */extern xvid_plugin_func xvid_plugin_psnr; /* write psnr values to stdout */extern 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -