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

📄 global.h

📁 davinci avs.......................................................
💻 H
📖 第 1 页 / 共 2 页
字号:
/*!
 ***************************************************************************
 * \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 + -