📄 global.c
字号:
/*******************************************************/
/* FILE: global.c */
/* Auth: alan_liu */
/* Dest: global var */
/* */
/* Support by: QQ group: 10714050 */
/*******************************************************/
#include "global.h"
#ifdef _TMS320C6X
#undef EXTERN
#define EXTERN
EXTERN Picture *top_pic = 0;
EXTERN Picture *bottom_pic = 0;
EXTERN Picture *frame_pic = 0;
// global picture format dependend buffers, mem allocation in image.c
EXTERN byte **imgY_org = 0; //!< Reference luma image
EXTERN byte ***imgUV_org = 0; //!< Reference croma image
//int **refFrArr; //!< Array for reference frames of each block
EXTERN int **img4Y_tmp = 0; //!< for quarter pel interpolation
EXTERN unsigned int log2_max_frame_num_minus4 = 0;
EXTERN unsigned int log2_max_pic_order_cnt_lsb_minus4 = 0;
EXTERN int me_tot_time,me_time = 0;
EXTERN pic_parameter_set_rbsp_t *active_pps = 0;
EXTERN seq_parameter_set_rbsp_t *active_sps = 0;
// B pictures
// motion vector : forward, backward, direct
EXTERN int mb_adaptive = 0; //!< For MB level field/frame coding tools
EXTERN int MBPairIsField = 0; //!< For MB level field/frame coding tools
//Weighted prediction
EXTERN int ***wp_weight = 0; // weight in [list][index][component] order
EXTERN int ***wp_offset = 0; // offset in [list][index][component] order
EXTERN int ****wbp_weight = 0; // weight in [list][fwd_index][bwd_idx][component] order
EXTERN int luma_log_weight_denom = 0;
EXTERN int chroma_log_weight_denom = 0;
EXTERN int wp_luma_round = 0;
EXTERN int wp_chroma_round = 0;
// global picture format dependend buffers, mem allocation in image.c (field picture)
EXTERN byte **imgY_org_top = 0;
EXTERN byte **imgY_org_bot = 0;
EXTERN byte ***imgUV_org_top = 0;
EXTERN byte ***imgUV_org_bot = 0;
EXTERN byte **imgY_org_frm = 0;
EXTERN byte ***imgUV_org_frm = 0;
EXTERN byte **imgY_com = 0; //!< Encoded luma images
EXTERN byte ***imgUV_com = 0; //!< Encoded croma images
EXTERN int ***direct_ref_idx = 0; //!< direct mode reference index buffer
EXTERN int **direct_pdir = 0; //!< direct mode reference index buffer
// Buffers for rd optimization with packet losses, Dim. Kontopodis
EXTERN byte **pixel_map = 0; //!< Shows the latest reference frame that is reliable for each pixel
EXTERN byte **refresh_map = 0; //!< Stores the new values for pixel_map
EXTERN int intras = 0; //!< Counts the intra updates in each frame.
EXTERN int Bframe_ctr, frame_no, nextP_tr_fld, nextP_tr_frm = 0;
EXTERN int tot_time = 0;
#define ET_SIZE 300 //!< size of error text buffer
EXTERN char errortext[ET_SIZE] = {0}; //!< buffer for error message for exit with error()
EXTERN RD_DATA *rdopt = 0;
EXTERN RD_DATA rddata_top_frame_mb = {0}, rddata_bot_frame_mb = {0}; //!< For MB level field/frame coding tools
EXTERN RD_DATA rddata_top_field_mb = {0}, rddata_bot_field_mb = {0}; //!< For MB level field/frame coding tools
EXTERN FILE *p_dec = 0; //!< internal decoded image for debugging
EXTERN FILE *p_stat = 0; //!< status file for the last encoding session
EXTERN FILE *p_log = 0; //!< SNR file
EXTERN FILE *p_in = 0; //!< YUV
EXTERN FILE *p_trace = 0; //!< Trace file
EXTERN int Bytes_After_Header = 0;
// JVT-D101: the bit for redundant_pic_cnt in slice header may be changed,
// therefore the bit position in the bitstream must be stored.
EXTERN int rpc_bytes_to_go = 0;
EXTERN int rpc_bits_to_go = 0;
//////////////////////////////////////////////////////
//////////////// retectl ///////////////////////////
EXTERN double bit_rate = 0;
EXTERN double frame_rate = 0;
EXTERN double GAMMAP = 0;//LIZG, JVT019r1
EXTERN double BETAP = 0;//LIZG, JVT019r1
EXTERN int RC_MAX_QUANT = 0;//LIZG 28/10/2002
EXTERN int RC_MIN_QUANT = 0;//LIZG 28/10/2002
EXTERN double BufferSize = 0; //LIZG 25/10/2002
EXTERN double GOPTargetBufferLevel = 0;
EXTERN double CurrentBufferFullness = 0; //LIZG 25/10/2002
EXTERN double TargetBufferLevel = 0;//LIZG 25/10/2002
EXTERN double PreviousBit_Rate = 0;//LIZG 25/10/2002
EXTERN double AWp = 0;
EXTERN double AWb = 0;
EXTERN int MyInitialQp = 0;
EXTERN int PAverageQp = 0;
/*LIZG JVT50V2 distortion prediction model*/
/*coefficients of the prediction model*/
EXTERN double PreviousPictureMAD = 0;
EXTERN double MADPictureC1 = 0;
EXTERN double MADPictureC2 = 0;
EXTERN double PMADPictureC1 = 0;
EXTERN double PMADPictureC2 = 0;
/* LIZG JVT50V2 picture layer MAD */
EXTERN Boolean PictureRejected[21] = {FALSE};
EXTERN double PPictureMAD[21] = {0};
EXTERN double PictureMAD[21] = {0};
EXTERN double ReferenceMAD[21] = {0};
/*quadratic rate-distortion model*/
EXTERN Boolean m_rgRejected[21] = {FALSE};
EXTERN double m_rgQp[21] = {0};
EXTERN double m_rgRp[21] = {0};
EXTERN double m_X1 = 0;
EXTERN double m_X2 = 0;
EXTERN int m_Qc = 0;
EXTERN double m_Qstep = 0;
EXTERN int m_Qp = 0;
EXTERN int Pm_Qp = 0;
EXTERN int PreAveMBHeader = 0;
EXTERN int CurAveMBHeader = 0;
EXTERN int PPreHeader = 0;
EXTERN int PreviousQp1 = 0;
EXTERN int PreviousQp2 = 0;
EXTERN int NumberofBFrames = 0;
/*basic unit layer rate control*/
EXTERN int TotalFrameQP = 0;
EXTERN int NumberofBasicUnit = 0;
EXTERN int PAveHeaderBits1 = 0;
EXTERN int PAveHeaderBits2 = 0;
EXTERN int PAveHeaderBits3 = 0;
EXTERN int PAveFrameQP = 0;
EXTERN int TotalNumberofBasicUnit = 0;
EXTERN int CodedBasicUnit = 0;
EXTERN double MINVALUE = 0;
EXTERN double CurrentFrameMAD = 0;
EXTERN double CurrentBUMAD = 0;
EXTERN double TotalBUMAD = 0;
EXTERN double PreviousFrameMAD = 0;
EXTERN int m_Hp = 0;
EXTERN int m_windowSize = 0;
EXTERN int MADm_windowSize = 0;
EXTERN int DDquant = 0;
EXTERN int MBPerRow = 0;
EXTERN double AverageMADPreviousFrame = 0;
EXTERN int TotalBasicUnitBits = 0;
EXTERN int QPLastPFrame = 0;
EXTERN int QPLastGOP = 0;
//int MADn_windowSize;
//int n_windowSize;
EXTERN double Pm_rgQp[20] = {0};
EXTERN double Pm_rgRp[20] = {0};
EXTERN double Pm_X1 = 0;
EXTERN double Pm_X2 = 0;
EXTERN int Pm_Hp = 0;
/* adaptive field/frame coding*/
EXTERN int FieldQPBuffer = 0;
EXTERN int FrameQPBuffer = 0;
EXTERN int FrameAveHeaderBits = 0;
EXTERN int FieldAveHeaderBits = 0;
EXTERN double BUPFMAD[6336] = {0};//LIZG
EXTERN double BUCFMAD[6336] = {0};//LIZG
EXTERN double FCBUCFMAD[6336] = {0};
EXTERN double FCBUPFMAD[6336] = {0};
EXTERN Boolean GOPOverdue = FALSE;
//comput macroblock activity for rate control
//EXTERN int diffy[16][16];
EXTERN int diffyy[16][16] = {0};
EXTERN int diffy8[16][16] = {0};//for P8X8 mode
//////////////////////////////////////////
//////////// fast_me ////////////////////
EXTERN int **McostState = 0; //state for integer pel search
EXTERN int *****all_mincost = 0;//store the MV and SAD information needed;
EXTERN int *****all_bwmincost = 0;//store for backward prediction
EXTERN int pred_SAD_space,pred_SAD_time,pred_SAD_ref,pred_SAD_uplayer;//SAD prediction
EXTERN int FME_blocktype = 0; //blocktype for FME SetMotionVectorPredictor
EXTERN int pred_MV_time[2],pred_MV_ref[2],pred_MV_uplayer[2];//pred motion vector by space or tempral correlation,Median is provided
//for early termination
EXTERN float Quantize_step = 0;
EXTERN float Bsize[8] = {0};
EXTERN int Thresh4x4 = 0;
EXTERN float AlphaSec[8] = {0};
EXTERN float AlphaThird[8] = {0};
EXTERN int flag_intra[124] = {0};//HD enough
EXTERN int flag_intra_SAD = 0;
EXTERN char **SearchState = 0; //state for fractional pel search
////////////////////////////////////////////////
//////////////// nalu.h //////////////////////
EXTERN int (*WriteNALU)(NALU_t *n); //! Hides the write function in Annex B or RTP
///////////////////////////////////////////////
//////////////// sei.h //////////////////////
typedef struct
{
char *byte;
int total_byte;
Bitstream *data;
int payloadSize;
} user_data_unregistered_information_struct;
extern Boolean seiHasUser_data_unregistered_info;
extern user_data_unregistered_information_struct seiUser_data_unregistered;
typedef struct
{
char *byte;
int total_byte;
int itu_t_t35_country_code;
int itu_t_t35_country_code_extension_byte;
Bitstream *data;
int payloadSize;
} user_data_registered_itu_t_t35_information_struct;
extern Boolean seiHasUser_data_registered_itu_t_t35_info;
extern user_data_registered_itu_t_t35_information_struct seiUser_data_registered_itu_t_t35;
typedef struct
{
unsigned char recovery_point_flag;
unsigned char exact_match_flag;
unsigned char broken_link_flag;
Bitstream *data;
int payloadSize;
} randomaccess_information_struct;
extern Boolean seiHasRandomAccess_info;
extern randomaccess_information_struct seiRandomAccess;
extern InputParameters *input;
extern ImageParameters *img;
extern StatParameters *stat;
extern SNRParameters *snr;
extern Decoders *decs;
typedef struct
{
Boolean available;
int payloadSize;
unsigned char subPacketType;
byte* data;
} sei_struct;
extern sei_struct sei_message;
void clear_g_var()
{
memset(&rddata_top_frame_mb, 0, sizeof(RD_DATA));
memset(&rddata_bot_frame_mb, 0, sizeof(RD_DATA));
memset(&rddata_top_field_mb, 0, sizeof(RD_DATA));
memset(&rddata_bot_field_mb, 0, sizeof(RD_DATA));
memset(input, 0, sizeof(InputParameters));
memset(img, 0, sizeof(ImageParameters));
memset(stat, 0, sizeof(StatParameters));
memset(snr, 0, sizeof(SNRParameters));
memset(decs, 0, sizeof(Decoders));
memset(&seiUser_data_unregistered, 0, sizeof(user_data_unregistered_information_struct));
memset(&seiUser_data_registered_itu_t_t35, 0, sizeof(user_data_registered_itu_t_t35_information_struct));
memset(&seiRandomAccess, 0, sizeof(randomaccess_information_struct));
memset(&sei_message, 0, sizeof(sei_struct));
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -