📄 global.h
字号:
/*!
***************************************************************************
* \file
* global.h
*
* \brief
* global variables and structures.
*
*
* \date
* 01. Apr 2005
***************************************************************************
*/
#ifndef _GLOBAL_H_
#define _GLOBAL_H_
#include <stdio.h> //!< for FILE
#include "defines.h"
/*
#ifdef WIN32
#define snprintf _snprintf
#endif
*/
typedef unsigned char byte; //!< 8 bit unsigned
typedef int INT32; //!< 32 bit signed
typedef unsigned int UINT32; //!< 32 bit unsigned
// global picture format dependend buffers, mem allocation in decod.c ******************
extern int **refFrArr; //!< Array for reference frames of each block
extern byte **imgY; //!< array for the decoded luma component
extern byte ***imgUV; //!< array for the chroma component
extern byte **imgY_ref; //!< reference frame find snr
extern byte ***imgUV_ref;
/*
**********************************************************************
* AVSM Decoder Trace Definition
**********************************************************************
*/
#if TRACE
extern byte MB_Y[16][16];
extern byte MB_UV[2][8][8];
extern int MB_H_coeff_Y[16][16];
extern int MB_H_coeff_UV[2][8][8];
extern int MB_IDCT_Y[16][16];
extern int MB_IDCT_UV[2][8][8];
extern int MB_IQ_Y[16][16];
extern int MB_IQ_UV[2][8][8];
extern int MB_intrapred_Y[16][16];
extern int MB_intrapred_UV[2][8][8];
extern int MB_interpred_Y[16][16];
extern int MB_interpred_UV[2][8][8]; //!<all above defined for trace printout
extern int MB_ipredmode_Y[4][4]; // not for decoding process
extern int MB_ipredmode_UV[2][2];
extern FILE *p_trace;
extern char se_type[30];
typedef struct DecoderTrace
{
byte **luma_residual; /*luma residual of a macroblock 16x16*/
byte ***chroma_residual; /*chroma residual of a macroblock 2*8*8*/
int **H_coeff_luma; /*H matrix coeff after inverse transform 16x16*/
int ***H_coeff_chroma; /*H matrix coeff after inverse transform 2*8*8*/
int **dct_luma;
int ***dct_chroma;
int **dequant_luma;
int ***dequant_chroma;
int **intrapred_luma;
int ***intrapred_chroma;
int **interpred_luma;
int ***interpred_chroma;
int **intrapred_mode_luma;
int **intrapred_mode_chroma;
//int ***mvd;
} decoder_trace_t;
extern decoder_trace_t *dec_trace;
#endif
//cbzhu 12-15
#ifdef _ISOLATED_REGION_
extern int iREGenable;
extern int iREGrate;
extern int **iREGmap;
extern int iREGstate;
#endif
extern int nb_references;
extern int first_mb_nr_in_slice;
#define ET_SIZE 300 //!< size of error text buffer
extern char errortext[ET_SIZE]; //!< buffer for error message for exit with error()
//WJP FOR SLICE
extern int Slice_Enable;
extern int Position_of_Slice_in_Picbuff[1700];
//WJP END
/*
**********************************************************************
* T y p e d e f i n i t i o n s f o r AVSM
**********************************************************************
*/
typedef enum {
I_IMG = 0,
P_IMG
} PictureType;
/*
**********************************************************************
* N e w D a t a t y p e s f o r AVSM
**********************************************************************
*/
//!<Picture Header parameter set
typedef struct{
unsigned int picture_coding_type;
int picture_distance;
int pic_parameter_set_id;
int picture_distance_gap_minus1;
int frame_num;
int picture_qp;
int alpha_ci_offset;
int cp_offset;
int loopfilter_qp_offset;
int sliding_window_size_minus1;
} picture_header;
//!<Sequene Parameter Set
typedef struct{
unsigned int profile_idc;
unsigned int level_idc;
unsigned int seq_parameter_set_id;
int num_ref_frames;
int horizontal_size_minus1;
int vertical_size_minus1;
int aspect_ratio;
int frame_cropping_flag;
unsigned int frame_cropping_left_offset;
unsigned int frame_crop_right_offset;
unsigned int frame_crop_top_offset;
unsigned int frame_crop_bottom_offset;
int delta_time_picture_distance_1;
int hrd_parameters_present_flag;
#ifdef _HRD_
unsigned int bit_rate_scale;
unsigned int cpb_size_scale;
unsigned int dpb_size_scale;
unsigned int initial_cpb_removal_delay_length;
unsigned int initial_dpb_output_delay_length;
#endif // _HRD_
}seq_parameter_set;
//!<Picture Parameter Set
typedef struct{
unsigned int pic_parameter_set_id;
unsigned int seq_parameter_set_id;
int fixed_picture_qp_flag;
int picture_reference_flag;
int sliding_window_size_flag;
int skip_mode_flag;
int loop_filter_disable_flag;
int loop_filter_parameter_flag;
int constrained_intra_pred_flag;
int half_pixel_mv_flag;
}pic_parameter_set;
//! Syntaxelement
typedef struct syntaxelement
{
int type; //!< type of syntax element for data part.
int value1; //!< numerical value of syntax element
int value2; //!< for blocked symbols, e.g. run/level
int len; //!< length of code
int inf; //!< info part of UVLC code
unsigned int bitpattern; //!< UVLC bitpattern
int context; //!< CABAC context
int k; //!< CABAC context for coeff_count,uv
int golomb_grad; //!< Needed if type is a golomb element
int golomb_maxlevels; //!< If this is zero, do not use the golomb coding
#if TRACE
#define TRACESTRING_SIZE 100 //!< size of trace string
char tracestring[TRACESTRING_SIZE]; //!< trace string
#endif
//! for mapping of UVLC to syntaxElement
void (*mapping)(int len, int info, int *value1);
} SyntaxElement;
//! Macroblock
typedef struct macroblock
{
int qp;
int slice_nr;
int delta_quant; //!< for rate control
struct macroblock *mb_available[3][3]; /*!< pointer to neighboring MBs in a 3x3 window of current MB, which is located at [1][1]
NULL pointer identifies neighboring MBs which are unavailable */
// some storage of macroblock syntax elements for global access
int mb_type;
int mvd[BLOCK_MULTIPLE][BLOCK_MULTIPLE][2]; //!< indices correspond to [forw,backw][block_y][block_x][x,y]
int mvb[BLOCK_MULTIPLE][BLOCK_MULTIPLE][2];
int cbp, cbp_blk ;
int cbp_4x4[6]; // dongjie //WJP FOR CBP4X4
int abt_block_size_flag; // qhg for abt
int sub_mb_type[4];
int b8mode[4];
//int c_ipred_mode_2; //!< chroma intra prediction mode MZ delete
int c_ipred_mode; //!< chroma intra prediction mode
int lf_disable;
int lf_alpha_c0_offset;
int lf_beta_offset;
int pred_sample[6][4][4][4];
int pred_residual[6][4][4][4];
int I_MODE;//WJP FOR I_DIRECT
} Macroblock;
//! Bitstream
typedef struct
{
// CABAC Decoding
int read_len; //!< actual position in the codebuffer, CABAC only
int code_len; //!< overall codebuffer length, CABAC only
// UVLC Decoding
int frame_bitoffset; //!< actual position in the codebuffer, bit-oriented, UVLC only
int bitstream_length; //!< over codebuffer lnegth, byte oriented, UVLC only
// ErrorConcealment
byte *streamBuffer; //!< actual codebuffer for read bytes
} Bitstream;
//****************************** ~DM ***********************************
//! Image parameters
#define MAX_SLICE_NR 128
typedef struct img_par
{
int number; //<! frame number indicator
int current_mb_nr; //<! bitstream order
int max_mb_nr; //<! picture format
int current_slice_nr;
int disable_loop_filter_slice_flag; //WJP FOR SLICE_DEBLOCK 050321
int SliceLFDisbaleFlag[MAX_SLICE_NR];
int qp; //<! quant for the current frame
/* reference frames selection rules relative variables -- zhan ma */
int pic_ref_flag; //!<
int active_num_ref_frames; //!< number of active reference pictures
int picture_reference_flag;
int num_ref_frames; //!< global number of reference frame indicator
int is_ref0_an_IDR;
int active_num_ref_frame;
int ssw;
int idr_flag;
int type; //<! image type INTER/INTRA
int width;
int height;
int width_cr; //<! width chroma
int height_cr; //<! height chroma
int mb_y;
int mb_x;
int block_y;
int pix_y;
int pix_x;
int pix_c_y;
int block_x;
int pix_c_x;
int m7[16][16];
int m8[2][8][8]; //<! final 4x4 block. Extended to 16x16 for AVS
int cof[4][6][4][4]; //<! correction coefficients from predicted
int **ipredmode; //<! prediction type [90][74]
int quad[256];
int cod_counter; //<! Current count of number of skipped macroblocks in a row
int ***mv;
int PicWidthInMbs;
int PicHeightInMbs;
int PicSizeInMbs;
//qwang 2004-3-9
int block4_x, block4_y;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -