📄 encoder.h
字号:
/************************************************************************** * * Modifications: * * 22.08.2001 added support for EXT_MODE encoding mode * support for EXTENDED API * 22.08.2001 fixed bug in iDQtab * * Michael Militzer <isibaar@videocoding.de> * **************************************************************************/#ifndef _ENCODER_H_#define _ENCODER_H_#include "xvid.h"#include "portab.h"#include "global.h"#include "image/image.h"#define H263_QUANT 0#define MPEG4_QUANT 1typedef uint32_t bool;typedef enum{ I_VOP = 0, P_VOP = 1}VOP_TYPE;/*********************************** Encoding Parameters************************************/ typedef struct{ uint32_t width; uint32_t height; uint32_t edged_width; uint32_t edged_height; uint32_t mb_width; uint32_t mb_height; VOP_TYPE coding_type; /* rounding type; alternate 0-1 after each interframe */ uint32_t rounding_type; /* 1 <= fixed_code <= 4 automatically adjusted using motion vector statistics inside */ uint32_t fixed_code; uint32_t quant; uint32_t quant_type; uint32_t motion_flags; uint32_t global_flags;#ifdef MPEG4IP uint16_t fincr; uint16_t fbase; uint8_t time_inc_bits;#endif HINTINFO * hint;} MBParam;typedef struct{ int iTextBits; float fMvPrevSigma; int iMvSum; int iMvCount; int kblks; int mblks; int ublks;}Statistics;typedef struct{ MBParam mbParam; int iFrameNum; int iMaxKeyInterval; int lum_masking; int bitrate; // images IMAGE sCurrent; IMAGE sReference;#ifdef _DEBUG IMAGE sOriginal;#endif IMAGE vInterH; IMAGE vInterV; IMAGE vInterVf; IMAGE vInterHV; IMAGE vInterHVf; // macroblock MACROBLOCK * pMBs; Statistics sStat;}Encoder;// indicates no quantizer changes in INTRA_Q/INTER_Q modes#define NO_CHANGE 64void init_encoder(uint32_t cpu_flags);int encoder_create(XVID_ENC_PARAM * pParam);int encoder_destroy(Encoder * pEnc);int encoder_encode(Encoder * pEnc, XVID_ENC_FRAME * pFrame, XVID_ENC_STATS * pResult); static __inline uint8_t get_fcode(uint16_t sr){ if (sr <= 16) return 1; else if (sr <= 32) return 2; else if (sr <= 64) return 3; else if (sr <= 128) return 4; else if (sr <= 256) return 5; else if (sr <= 512) return 6; else if (sr <= 1024) return 7; else return 0;}#endif /* _ENCODER_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -