⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 global.h

📁 JM 11.0 KTA 2.1 Source Code
💻 H
📖 第 1 页 / 共 5 页
字号:
RD_DATA rddata_FDSD_coding;
RD_DATA rddata_FDSD_coding_interlace;
RD_DATA *rdopt_FDSD; 
RD_DATA *rdopt_FDSD_interlace; 
#endif

extern InputParameters *input;
extern ImageParameters *img;
extern StatParameters  *stats;

extern SNRParameters *snr;

// files
FILE *p_stat;                    //!< status file for the last encoding session
FILE *p_log;                     //!< SNR file
FILE *p_trace;                   //!< Trace file
int  p_in;                       //!< original YUV file handle
int  p_dec;                      //!< decoded image file handle

#ifdef USE_POST_FILTER
int  p_post_dec;
#endif
                                 /***********************************************************************
                                 * P r o t o t y p e s   f o r    T M L
                                 ***********************************************************************
*/

void intrapred_luma(int CurrPixX,int CurrPixY, int *left_available, int *up_available, int *all_available);
void init(void);
#ifdef USE_INTRA_MDDT
int klt_luma_sep(int block_x,int block_y,int *coeff_cost, int ipmode);
int  dct_luma(int pos_mb1,int pos_mb2,int *cnt_nonz, int intra,  int ipmode);
#else
int  dct_luma(int pos_mb1,int pos_mb2,int *cnt_nonz, int intra);
#endif
int  dct_luma_sp(int pos_mb1,int pos_mb2,int *cnt_nonz);
void copyblock_sp(int pos_mb1,int pos_mb2);
int  dct_chroma(int uv,int i11);
int  dct_chroma_sp(int uv,int i11);
// Residue Color Transform
int  dct_chroma4x4(int uv, int b8, int b4);
int  dct_chroma_DC(int uv, int cr_cbp);

int  motion_search(int isi);
int  sign(int a,int b);
void intrapred_chroma(int,int,int uv);
void intrapred_luma_16x16(void);
int  find_sad_16x16(int *intra_mode);

int dct_luma_16x16(int);
#ifdef USE_INTRA_MDDT
int klt_luma16x16_sep_fast (int ipmode);
#endif

void init_poc(void);

void init_img(void);
void report(void);
void information_init(void);
int  get_picture_type(void);
int clip1a(int a);
void DeblockFrame(ImageParameters *img, imgpel **, imgpel ***) ;
void MarkAllMacroblockModes(ImageParameters *img, imgpel **, imgpel ***);

int  TransformDecision(int, int*);
int  SATD8X8(int*, int);

void LumaPrediction4x4 (int, int, int, int, int, short, short);
int  SATD (int*, int);
int  find_SATD (int c_diff[MB_PIXELS], int blocktype);

void LumaResidualCoding (void);
void ChromaResidualCoding (int*);
void IntraChromaPrediction (int*, int*, int*);
void ChromaPrediction4x4 (int, int, int, int, int, int, short, short);

int writeMBLayer (int rdopt, int *coeff_rate);

extern int*   refbits;
extern int**** motion_cost;

void  Get_Direct_Motion_Vectors (void);
#ifdef RDO_Q
void  PartitionMotionSearch     (int, int, int, int);
#else
void  PartitionMotionSearch     (int, int, int);
#endif
int   BIDPartitionCost          (int, int, short, short, int);
int   LumaResidualCoding8x8     (int*, int64*, int, short, int, int, short, short);
int   writeLumaCoeff8x8         (int, int, int);
#ifdef USE_INTRA_MDDT
int   writeLumaCoeff16x16       (void);
#endif
int   writeMotionVector8x8      (int  i0, int  j0, int  i1, int  j1, int  refframe, int  list_idx, int  mv_mode);
int   writeReferenceFrame       (int, int, int, int, int);
int   writeAbpCoeffIndex        (int, int, int, int);
int   writeChromaIntraPredMode  (void);

void estimate_weighting_factor_B_slice(void);
void estimate_weighting_factor_P_slice(int offset);
int  test_wp_P_slice(int offset);
int  test_wp_B_slice(int method);
void poc_based_ref_management(int current_pic_num);
int  picture_coding_decision (Picture *picture1, Picture *picture2, int qp);

#ifdef ADAPTIVE_QUANTIZATION
int  picture_coding_decision_for_AQMS (Picture *picture1, Picture *picture2, int qp);
#endif

unsigned CeilLog2( unsigned uiVal);

int  Get_Direct_Cost8x8 (int, int*);

int   BPredPartitionCost  (int, int, short, short, int, int);
void  LumaPrediction4x4Bi (int, int,   int,   int, int, short, short, int);
int   SATDBI (int* , int );

int  Get_Direct_CostMB  (int);
int  B8Mode2Value (int b8mode, int b8pdir);

int  GetSkipCostMB (int lambda_factor);
void FindSkipModeMotionVector (void);


// dynamic mem allocation
int  init_global_buffers(void);
void free_global_buffers(void);
void no_mem_exit  (char *where);

int  get_mem_mv  (short*******);
void free_mem_mv (short******);
void free_img    (void);

int  get_mem_ACcoeff  (int*****);
int  get_mem_DCcoeff  (int****);
void free_mem_ACcoeff (int****);
void free_mem_DCcoeff (int***);

int  decide_fld_frame(float snr_frame_Y, float snr_field_Y, int bit_field, int bit_frame, double lambda_picture);
void combine_field(void);

Picture *malloc_picture(void);
void     free_picture (Picture *pic);

int   encode_one_slice(int SLiceGroupId, Picture *pic, int TotalCodedMBs);   //! returns the number of MBs in the slice

void  start_macroblock(int mb_addr, int mb_field);
void  set_MB_parameters (int mb_addr);           //! sets up img-> according to input-> and currSlice->

int   writeMotionInfo2NAL (void);

void  terminate_macroblock(Boolean *end_of_slice, Boolean *recode_macroblock);
int   slice_too_big(int rlc_bits);
void  write_one_macroblock(int eos_bit);
void  proceed2nextMacroblock(void);

void free_slice_list(Picture *currPic);

void report_stats_on_error(void);

#ifdef RDO_Q
typedef struct 
{
  int significantBits[16][2];
  int lastBits[16][2];
  int greaterOneBits[2][5][2]; // c1 and c2
  int greaterOneState[5];
  int blockCbpBits[4][2]; // c1 and c2
} estBitsCabacStruct;

typedef struct 
{
  int64 level[3];
  int pre_level;//TREL_CAVLC
  int coeff_ctr;//TREL_CAVLC
  int64 levelDouble;
  double errLevel[3];
  int noLevels;
} levelDataStruct;


void estRunLevel_CABAC (int context);
void est_writeRunLevel_CABAC1(levelDataStruct levelData[], int levelTabMin[], int type, double lambda, int kStart, 
                              int kStop, int noCoeff, int estCBP);
void est_writeRunLevel_CABAC2(levelDataStruct levelData[], int levelTabMin[], int type, double lambda, int kStart, 
                              int kStop, int noCoeff, int estCBP);
void est_writeRunLevel_CABAC(levelDataStruct levelData[], int levelTabMin[], int type, double lambda, int kStart, 
                             int kStop, int noCoeff, int estCBP);
int est_write_and_store_CBP_block_bit(Macroblock* currMB, int type);
#endif

#if TRACE
void  trace2out(SyntaxElement *se);
#endif


void error(char *text, int code);
int  start_sequence(void);
int  terminate_sequence(void);
int  start_slice(void);
int  terminate_slice(int);
int  write_PPS(int, int);
#ifdef USE_POST_FILTER
int start_post_sequence(void);
int  terminate_post_sequence(void);
#endif
// B pictures
int  get_fwMV(int *min_fw_sad, int tot_intra_sad);
void get_bwMV(int *min_bw_sad);
void get_bid(int *bid_sad, int fw_predframe_no);
void get_dir(int *dir_sad);
void compare_sad(int tot_intra_sad, int fw_sad, int bw_sad, int bid_sad, int dir_sad, int);
int  BlkSize2CodeNumber(int blc_size_h, int blc_size_v);

void InitMotionVectorSearchModule(void);

int  field_flag_inference(void);

void set_mbaff_parameters(void);  // For MB AFF
void writeVlcByteAlign(Bitstream* currStream);


int   writeLumaCoeff4x4_CABAC     (int, int, int);
int   writeLumaCoeff8x8_CABAC     (int, int);
#ifdef USE_INTRA_MDDT
int   writeLumaCoeff16x16_CABAC   (void);
int   writeCBPandLumaCoeff        (int);
#else
int   writeCBPandLumaCoeff        (void);
#endif
int   writeChromaCoeff            (void);
int   writeMB_bits_for_4x4_luma   (int, int, int);
int   writeMB_bits_for_16x16_luma (void);
int   writeMB_bits_for_luma       (int);
int   writeMB_bits_for_DC_chroma  (int);
int   writeMB_bits_for_AC_chroma  (int);
int   writeMB_bits_for_CBP        (void);

int   SingleUnifiedMotionSearch   (int, int, int**, int***, int*****, int, int*****, double);

//============= rate-distortion optimization ===================
void  clear_rdopt      (void);
void  init_rdopt       (void);
void  RD_Mode_Decision (void);
//============= rate-distortion opt with packet losses ===========
void decode_one_macroblock(void);
void decode_one_mb (int, Macroblock*);
void decode_one_b8block (int, int, int, int, int);
void Get_Reference_Block(imgpel **imY, int block_y, int block_x, int mvhor, int mvver, imgpel **out);
byte Get_Reference_Pixel(imgpel **imY, int y, int x);
int  Half_Upsample(imgpel **imY, int j, int i);
void DecOneForthPix(imgpel **dY, imgpel ***dref);
void compute_residue(int mode);
void compute_residue_b8block (int, int);
void compute_residue_mb (int);
void UpdateDecoders(void);
void Build_Status_Map(byte **s_map);
void Error_Concealment(imgpel **inY, byte **s_map, imgpel ***refY);
void Conceal_Error(imgpel **inY, int mb_y, int mb_x, imgpel ***refY, byte **s_map);
//============= restriction of reference frames based on the latest intra-refreshes==========
void UpdatePixelMap(void);

//============= fast full integer search =======================
#ifdef _FAST_FULL_ME_
void  ClearFastFullIntegerSearch    (void);
void  ResetFastFullIntegerSearch    (void);
#endif

void process_2nd_IGOP(void);
void SetImgType(void);

// Tian Dong: for IGOPs
extern Boolean In2ndIGOP;
extern int start_frame_no_in_this_IGOP;
extern int start_tr_in_this_IGOP;
extern int FirstFrameIn2ndIGOP;
#define IMG_NUMBER (img->number-start_frame_no_in_this_IGOP)

void AllocNalPayloadBuffer(void);
void FreeNalPayloadBuffer(void);
void SODBtoRBSP(Bitstream *currStream);
int RBSPtoEBSP(byte *streamBuffer, int begin_bytepos, int end_bytepos, int min_num_bytes);
int Bytes_After_Header;

// Fast ME enable
int BlockMotionSearch (short,int,int,int,int,int, int);
void low_complexity_encode_md (void);
void encode_one_macroblock (void);
void fasthigh_complexity_encode_md (void);

int RDCost_for_4x4Blocks_Chroma (int b8, int b4, int  chroma);

void set_chroma_qp(Macroblock *currMB);


#include "context_ini.h"

void store_coding_state_cs_cm(void);
void reset_coding_state_cs_cm(void);

int writeIPCMBytes(Bitstream *currStream);
int writePCMByteAlign(Bitstream *currStream);


int  dct_luma_sp2(int pos_mb1,int pos_mb2,int *cnt_nonz);
int  dct_chroma_sp2(int ,int);

int check_for_SI16();
int **lrec ;
int ***lrec_uv;
int si_frame_indicator;

int sp2_frame_indicator;
int number_sp2_frames;
//#define sp_output_indicator 0 //will be in the config file
//#define sp_output_filename "sp_stored.txt" // will be in the config file
void output_SP_coefficients();
void read_SP_coefficients();

int giRDOpt_B8OnlyFlag;

#ifdef BEST_NZ_COEFF
int gaaiMBAFF_NZCoeff[4][12];
#endif

// Redundant picture
imgpel **imgY_tmp;
imgpel **imgUV_tmp[2];
int frameNuminGOP;
int redundant_coding;
int key_frame;
int redundant_ref_idx;
void Init_redundant_frame(void);
void Set_redundant_frame(void);
void encode_one_redundant_frame(void);



#ifdef ADAPTIVE_FD_SD_CODING

#define ROUNDING_WEIGHT_SD 0.003
#define ROUNDING_STEP      0.15
float adaptive_f_spatial_domain_4x4[2];
float adaptive_f_spatial_domain_8x8[2];
#endif

#ifdef DIRECTIONAL_FILTER
int FILTCOEF_BITS;
#endif
#endif
#ifdef ADAPTIVE_FILTER
int nBitsAIF(void);
int nBitsAIF_Sep(void); // separable aif
#endif

#ifdef USE_INTRA_MDDT
void updateScanOrder(int first);
void normalizeScanStats();
#endif 

#ifdef ADAPTIVE_QUANTIZATION
#define PPSID_AQMS 3
#define NUM_OF_IAQMS_MAT 4
#define VALUE_OF_QM_PARAM0 32
#define VALUE_OF_QM_PARAM1 16
#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -