📄 global.h
字号:
#ifndef _GLOBAL_H_#define _GLOBAL_H_//#include "xvid.h"#include "portab.h"/* --- macroblock modes --- */#define MODE_INTER 0#define MODE_INTER_Q 1#define MODE_INTER4V 2#define MODE_INTRA 3#define MODE_INTRA_Q 4#define MODE_STUFFING 7#define MODE_NOT_CODED 16/* --- bframe specific --- */#define MODE_DIRECT 0#define MODE_INTERPOLATE 1#define MODE_BACKWARD 2#define MODE_FORWARD 3#define MODE_DIRECT_NONE_MV 4typedef struct{ uint32_t bufa; uint32_t bufb; uint32_t buf; int32_t pos; int32_t start_pos; uint32_t *tail; uint32_t *start; uint32_t length; uint32_t * start_phy; uint32_t * tail_phy;}Bitstream;union VECTOR1{ uint32_t u32num; struct { int16_t s16y; int16_t s16x; } vec; // current mb Motion Vector for UV};#define MBPRED_SIZE 15typedef struct{// int32_t x; // current mb x// int32_t y; // current mb y// int32_t mbpos; // current mb position// uint32_t toggle; // indicate which table will be used; int32_t mb_jump; // mb jump offset from the prevous// VECTOR MVuv; // current mb Motion Vector for UV union VECTOR1 MVuv;// int quant; // absolute quant// int cbp; int mode;// VECTOR mvs[4]; union VECTOR1 mvs[4];/* short int pred_values[6][MBPRED_SIZE]; int acpred_directions[6]; int mode; int quant; // absolute quant int field_dct; int field_pred; int field_for_top; int field_for_bot; // encoder specific int32_t sad8[4]; // SAD values for inter4v-VECTORs int32_t sad16; // SAD value for inter-VECTOR int dquant; // bframe stuff VECTOR b_mvs[4]; VECTOR b_pmvs[4]; // bframe direct mode VECTOR directmv[4]; VECTOR deltamv; int mb_type; int dbquant; // stuff for block based ME (needed for Qpel ME) // backup of last integer ME vectors/sad VECTOR i_mv16; VECTOR i_mvs[4]; int32_t i_sad8[4]; // SAD values for inter4v-VECTORs int32_t i_sad16; // SAD value for inter-VECTOR*/}MACROBLOCK;typedef struct{ int32_t x; // current mb x uint32_t y; // current mb y int32_t mbpos; // current mb position uint32_t toggle; // indicate which table will be used; int quant; // absolute quant int cbp;}MACROBLOCK_b;static __inline int8_tget_dc_scaler(uint32_t quant, uint32_t lum){ if (quant < 5) return 8; if (quant < 25 && !lum) return (quant + 13) / 2; if (quant < 9) return 2 * quant; if (quant < 25) return quant + 8; if (lum) return 2 * quant - 16; else return quant - 6;}// useful macros#define MIN(X, Y) ((X)<(Y)?(X):(Y))#define MAX(X, Y) ((X)>(Y)?(X):(Y))#define ABS(X) (((X)>0)?(X):-(X))#define SIGN(X) (((X)>0)?1:-1)#endif /* _GLOBAL_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -