📄 global.h
字号:
int coding_stage;/*lgp*/
int block8_x;/*lgp*/
int block8_y;/*lgp*/
int coded_mb_nr;
int***** omv;
int***** all_omv; //!< replaces local all_mv
int***** omv_fld;
int***** all_omv_fld; //!< replaces local all_mv
int current_slice_start_mb;
int current_slice_qp;
int progressive_frame;
int picture_structure;
int dropflag;
int advanced_pred_mode_disable;
int old_type;
int current_mb_nr_fld;
// !! for weighting prediction
int LumVarFlag ;
int lum_scale[4] ;
int lum_shift[4] ;
int chroma_scale[4] ;
int chroma_shift[4] ;
int mb_weighting_flag ; //0 all MB in one frame should be weighted, 1 use the mb_weight_flag
int weighting_prediction ;
int mpr_weight[16][16];
int top_bot; // -1: frame / 0: top field / 1: bottom field / Yulj 2004.07.14
int mb_no_currSliceLastMB; // the last MB no in current slice. Yulj 2004.07.15
/*rate control*/
int NumberofHeaderBits;
int NumberofTextureBits;
int NumberofBasicUnitHeaderBits;
int NumberofBasicUnitTextureBits;
double TotalMADBasicUnit;
int NumberofMBTextureBits;
int NumberofMBHeaderBits;
int NumberofCodedBFrame;
int NumberofCodedPFrame;
int NumberofGOP;
int TotalQpforPPicture;
int NumberofPPicture;
double MADofMB[10000];
int BasicUnitQP;
int TopFieldFlag;
int FieldControl;
int FieldFrame;
int Frame_Total_Number_MB;
int IFLAG;
int NumberofCodedMacroBlocks;
int BasicUnit;
int bot_MB;
// int VEC_FLAG; // Commented by cjw, 20070327
int Seqheader_flag; // Added by cjw, 20070327
int curr_picture_distance; // Added by Xiaozhen Zheng, 20070405
int last_picture_distance; // Added by Xiaozhen Zheng, 20070405
int count;
int count_PAFF;
} ImageParameters;
//!< statistics
typedef struct
{
int quant0; //!< quant for the first frame
int quant1; //!< average quant for the remaining frames
float bitr; //!< bit rate for current frame, used only for output til terminal
float bitr0; //!< stored bit rate for the first frame
float bitrate; //!< average bit rate for the sequence except first frame
int bit_ctr; //!< counter for bit usage
int bit_ctr_0; //!< stored bit use for the first frame
int bit_ctr_n; //!< bit usage for the current frame
int bit_slice; //!< number of bits in current slice
int bit_use_mode_inter[2][MAXMODE]; //!< statistics of bit usage
int bit_ctr_emulationprevention; //!< stored bits needed to prevent start code emulation
int mode_use_intra[25]; //!< Macroblock mode usage for Intra frames
int mode_use_inter[2][MAXMODE];
int mb_use_mode[2];/*lgp*/
// B pictures
int *mode_use_Bframe;
int *bit_use_mode_Bframe;
int bit_ctr_P;
int bit_ctr_B;
float bitrate_P;
float bitrate_B;
#define NUM_PIC_TYPE 5
int bit_use_stuffingBits[NUM_PIC_TYPE];
int bit_use_mb_type[NUM_PIC_TYPE];
int bit_use_header[NUM_PIC_TYPE];
int tmp_bit_use_cbp[NUM_PIC_TYPE];
int bit_use_coeffY[NUM_PIC_TYPE];
int bit_use_coeffC[NUM_PIC_TYPE];
int bit_use_delta_quant[NUM_PIC_TYPE];
int em_prev_bits_frm;
int em_prev_bits_fld;
int *em_prev_bits;
int bit_ctr_parametersets;
} StatParameters;
//!< For MB level field/frame coding tools
//!< temporary structure to store MB data for field/frame coding
typedef struct
{
double min_rdcost;
int tmp_mv[2][2][2]; // to hold the motion vectors for each block
int tmp_fwMV[2][2][2]; // to hold forward motion vectors for B MB's
int tmp_bwMV[2][2][2]; // to hold backward motion vectors for B MBs
int dfMV[2][2][2], dbMV[2][2][2]; // to hold direct motion vectors for B MB's
int rec_mbY[16][16]; // hold the Y component of reconstructed MB
int rec_mbU[8][8], rec_mbV[8][8];
int ****cofAC;
int ****chromacofAC;/*lgp*/
int ***cofDC;
int mvd[2][BLOCK_MULTIPLE][BLOCK_MULTIPLE][2];/*lgp*/
int mb_type;
int b8mode[4], b8pdir[4];
int frefar[2][2], brefar[2][2];
int **ipredmode;
int intra_pred_modes[4];
int cbp, cbp_blk;
int mode;
int *****mv, *****p_fwMV, *****p_bwMV ;
int *****all_mv;
int *****all_bmv;
int c_ipred_mode;
} RD_DATA;
RD_DATA *rdopt;
float singlefactor;
/*
RD_DATA rddata_top_frame_mb, rddata_bot_frame_mb; //!< For MB level field/frame coding tools
RD_DATA rddata_top_field_mb, rddata_bot_field_mb; //!< For MB level field/frame coding tools
*/
/*lgp*/
extern InputParameters *input;
extern ImageParameters *img;
extern StatParameters *stat;
extern SNRParameters *snr;
// cjw for WP prediction
int *allalpha_lum, *allbelta_lum;
int second_IField;
// cjw for mv limit
int mv_out_of_range;
// Tsinghua for picture_distance 200701
int picture_distance;
// files
FILE *p_dec,*p_dec_u,*p_dec_v; //!< internal decoded image for debugging
FILE *p_stat; //!< status file for the last encoding session
FILE *p_log; //!< SNR file
FILE *p_in; //!< YUV
FILE *p_datpart; //!< file to write bitlength and id of all partitions
FILE *p_trace; //!< Trace file
int sign(int a,int b);
void init_img();
void report();
void information_init();
void LumaPrediction4x4 (int, int, int, int, int, int);
int SATD (int*, int);
pel_t* FastLineX (int, pel_t*, int, int);
pel_t* UMVLineX (int, pel_t*, int, int);
void LumaResidualCoding ();
void ChromaResidualCoding (int*);
void IntraChromaPrediction8x8 (int*, int*, int*);
int writeMBHeader (int rdopt);
extern int* refbits;
extern int*** motion_cost;
/*Lou 1016 Start*/
//int calculate_distance(int blkref, int smbtype, int coding_stage, int ref);
int scale_motion_vector(int motion_vector, int currblkref, int neighbourblkref, int currsmbtype, int neighboursmbtype, int block_y_pos, int curr_block_y, int ref, int direct_mv);
/*Lou 1016 End*/
int calculate_distance(int blkref, int fw_bw ); // Yulj 2004.07.14
void PartitionMotionSearch (int, int, double);
void PartitionMotionSearch_bid (int, int, double);
int BIDPartitionCost (int, int, int, int,int);
int LumaResidualCoding8x8 (int*, int*, int, int, int, int, int);
int writeLumaCoeff8x8 (int, int);
int writeMotionVector8x8 (int, int, int, int, int, int, int, int);
int writeIntra4x4Modes (int);
int writeChromaIntraPredMode ();
int Get_Direct_Cost8x8 (int, double);
int Get_Direct_CostMB (double);
int B8Mode2Value (int b8mode, int b8pdir);
int GetSkipCostMB (double lambda);
void FindSkipModeMotionVector ();
// dynamic mem allocation
int init_global_buffers();
void free_global_buffers();
void no_mem_exit (char *where);
int get_mem_mv (int******);
void free_mem_mv (int*****);
void free_img ();
int get_mem_ACcoeff (int*****);
int get_mem_DCcoeff (int****);
void free_mem_ACcoeff (int****);
void free_mem_DCcoeff (int***);
void split_field_top();
void split_field_bot();
int writeBlockCoeff (int block8x8);
int storeMotionInfo (int pos);
void intrapred_luma_AVS(int img_x,int img_y);
// Added for (re-) structuring the TML soft
Picture *malloc_picture();
void free_picture (Picture *pic);
int encode_one_slice(Picture *pic); //! returns the number of MBs in the slice
void encode_one_macroblock();
void start_macroblock();
void set_MB_parameters (int mb); //! sets up img-> according to input-> and currSlice->
void terminate_macroblock(Boolean *end_of_picture);
void write_one_macroblock(int eos_bit);
void proceed2nextMacroblock();
void CheckAvailabilityOfNeighbors();
void free_slice_list(Picture *currPic);
#if TRACE
void trace2out(SyntaxElement *se);
#endif
void error(char *text, int code);
int start_sequence();
int terminate_sequence();
int start_slice();
void stuffing_byte(int n);
int writeCBPandLumaCoeff ();
int writeChromaCoeff ();
//============= rate-distortion optimization ===================
void clear_rdopt ();
void init_rdopt ();
void SetImgType();
#define IMG_NUMBER (img->number)
extern int*** motion_cost_bid;
int ipdirect_x,ipdirect_y;
void Get_IP_direct();
void FreeBitstream();
void AllocateBitstream();
// reference frame buffer
unsigned char **reference_frame[3][3]; //[refnum][yuv][height][width]
unsigned char **reference_field[6][3]; //[refnum][yuv][height/2][width]
unsigned char ***ref[4]; //[refnum(4 for filed)][yuv][height(height/2)][width]
unsigned char ***ref_frm[2]; //[refnum(4 for filed)][yuv][height(height/2)][width]
unsigned char ***ref_fld[6]; //[refnum(4 for filed)][yuv][height(height/2)][width]
unsigned char ***b_ref[2],***f_ref[2];
unsigned char ***b_ref_frm[2],***f_ref_frm[2];
unsigned char ***b_ref_fld[2],***f_ref_fld[2];
unsigned char ***current_frame;//[yuv][height][width]
unsigned char ***current_field;//[yuv][height/2][width]
//qhg for demulation
Bitstream *tmpStream;
int current_slice_bytepos;
//qhg 20060327 for de-emulation
void AllocatetmpBitstream();
void FreetmpBitstream();
void Demulate(Bitstream *currStream, int current_slice_bytepos);
void SetModesAndRefframeForBlocks (int mode);
void SetModesAndRefframe (int b8, int* fw_mode, int* bw_mode, int* fw_ref, int* bw_ref);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -