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

📄 define.h

📁 AVS是中国自己推出的视频图像音频编解码标准。包中是AVS 源代码
💻 H
字号:
/*************************************************************************
 AVS1-P2视频解码器源码
 版权所有:联合信源数字音视频技术(北京)有限公司, (c) 2005-2006 

 AVS1-P2 Video Decoder Source Code
 (c) Copyright, NSCC All Rights Reserved, 2005-2006
 *************************************************************************
 Distributed under the terms of the GNU General Public License as
 published by the Free Software Foundation; either version 2 of the
 License, or (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*************************************************************************/
/*************************************************************************
  文件名称:	define.h
  描    述: 常数宏定义,结构体定义,常用函数宏定义
*************************************************************************/
/*************************************************************************
  Revision History
  data          Modification                                    Author
  2005-2-8      Created                                          jthou
 *************************************************************************/
#ifndef _DEFINE_H_
#define _DEFINE_H_
#include "windows.h"


//constant------------------------------------------------------
#define MBSIZE    16
#define INBUFLEN  1024*1024*5

#define AVS_MAX_HORIZONTAL 2000
#define AVS_MAX_VERTICAL   2000

#define MAX_MB_NUM 15625
#define CLIPSIZE   1024
#define TEMP_HALF_PIX_LEN 18
#define TEMP_JPIE_PIX_LEN 9
//return value--------------------------------------------------
#define AVS_NOERROR                   0x00000000
#define AVS_FALSE                     0xffffffff
#define AVS_ERROR                     0xffffffff
#define AVS_CAN_NOT_OPEN_FILE         0xF0000001
#define AVS_NOT_ENOUGH_DATA            0xF0000002
#define AVS_NOT_ENOUGH_MEM            0xF0000003
#define AVS_NOT_VALID_PIC_DATA        0xF0000004
#define AVS_INVALID_PIC_START_CODE    0xF0000005

#define THIS_VERSION_NOT_SUPPORT      0xF00000FF

#define TRUE  1
#define FALSE 0

#define NULL  0

//constant in avs video standard -------------------------------
#define SEQENCE_START_CODE   0X000001B0
#define SEQENCE_END_CODE     0X000001B1
#define USER_DATA_START_CODE 0X000001B2
#define I_FRAME_START_CODE   0X000001B3
#define EXTENSION_START_CODE 0X000001B5 
#define PB_FRAME_START_CODE  0X000001B6
#define EDIT_CODE            0X000001B7

#define SLICE_START_CODE_MIN 0X00000100
#define SLICE_START_CODE_MAX 0X000001AF
#define IS_START_CODE(data) ((data & 0x00FFFFFF) == 0x00010000)
#define IS_SLICE_START_CODE(data)       (((data) >= SLICE_START_CODE_MIN)  \
                                      && ((data) <= SLICE_START_CODE_MAX))

//stream constant-----------------------------------------------
#define BASE_PROFILE    0X20

#define LEVEL40         0X20
#define LEVEL42         0x22
#define LEVEL60         0x40
#define LEVEL62         0x42

#define CHROMA420       0X01
#define CHROMA422       0X10

#define I_IMG           0
#define P_IMG           1
#define B_IMG           2

// Intra Mode
#define I_8x8           0

//P Mb mode
#define P_Skip          1
#define P_16x16         2
#define P_16x8          3
#define P_8x16          4
#define P_8x8           5

//B Mb mode
#define B_Skip          6
#define B_Direct_16x16  7
#define B_Fwd_16x16     8
#define B_Bck_16x16     9
#define B_Sym_16x16     10
#define B_Fwd_Fwd_16x8  11
#define B_Fwd_Fwd_8x16  12
#define B_Bck_Bck_16x8  13
#define B_Bck_Bck_8x16  14
#define B_Fwd_Bck_16x8  15
#define B_Fwd_Bck_8x16  16
#define B_Bck_Fwd_16x8  17
#define B_Bck_Fwd_8x16  18
#define B_Fwd_Sym_16x8  19
#define B_Fwd_Sym_8x16  20
#define B_Bck_Sym_16x8  21
#define B_Bck_Sym_8x16  22
#define B_Sym_Fwd_16x8  23
#define B_Sym_Fwd_8x16  24
#define B_Sym_Bck_16x8  25
#define B_Sym_Bck_8x16  26
#define B_Sym_Sym_16x8  27
#define B_Sym_Sym_8x16  28
#define B_8x8           29      

// B_8x8 Part Mode
#define SB_Direct_8x8   30
#define SB_Fwd_8x8      31
#define SB_Bck_8x8      32
#define SB_Sym_8x8      33

//IntraLumaPredMode
#define Intra_8x8_Vertical      0
#define Intra_8x8_Horizontal    1
#define Intra_8x8_DC            2
#define Intra_8x8_Down_Left     3
#define Intra_8x8_Down_Right    4

//IntraChromaPredMode
#define Intra_Chroma_DC         0
#define Intra_Chroma_Horizontal 1
#define Intra_Chroma_Vertical   2
#define Intra_Chroma_Plane      3


#define PREDDIRFWD              1
#define PREDDIRBWD              0
#define PREDDIRSYM              2
// Vlc constant-------------------------------------------------
#define CODE2D_ESCAPE_SYMBOL 59


//type define---------------------------------------------------
typedef unsigned char         BYTE;
typedef unsigned char         byte;
typedef unsigned long         DWORD;

typedef unsigned long         AVS_DWORD;
typedef unsigned char         AVS_BYTE;
typedef short                 AVS_SHORT;
typedef long                  AVS_LONG;
typedef unsigned int          AVS_UINT;
typedef unsigned short        AVS_USHORT;

typedef char                  AVS_I8;
typedef unsigned char         AVS_U8;
typedef short                 AVS_I16;
typedef unsigned short        AVS_U16;
typedef int                   AVS_I32;
typedef unsigned int          AVS_U32;
typedef __int64               AVS_I64;
typedef unsigned __int64      AVS_U64;

typedef boolean               AVS_BOOL;
typedef int                   AVS_INT;
typedef float                 AVS_FLOAT;
typedef double                AVS_DOUBLE;

typedef unsigned int          AVS_HRESULT;
//enum -------------------------------------------------------
typedef enum {
  SE_HEADER,
  SE_PTYPE,
  SE_MBTYPE,
  SE_REFFRAME,
  SE_INTRAPREDMODE,
  SE_MVD,
  SE_CBP_INTRA,
  SE_LUM_DC_INTRA,
  SE_CHR_DC_INTRA,
  SE_LUM_AC_INTRA,
  SE_CHR_AC_INTRA,
  SE_CBP_INTER,
  SE_LUM_DC_INTER,
  SE_CHR_DC_INTER,
  SE_LUM_AC_INTER,
  SE_CHR_AC_INTER,
  SE_DELTA_QUANT_INTER,
  SE_DELTA_QUANT_INTRA,
  SE_BFRAME,
  SE_EOS,
  SE_MAX_ELEMENTS  //!< number of maximum syntax elements
} SE_type;         // substituting the definitions in elements.h
//structures----------------------------------------------------

struct VIDEODATA
{
  AVS_DWORD dwDistanceIndex;
  AVS_BYTE* y;
  AVS_BYTE* u;
  AVS_BYTE* v;
  AVS_BYTE* reserve;
};

struct MOTIONVECTOR{
  AVS_INT x;
  AVS_INT y;
};

struct MBINFO {
  AVS_DWORD dwMbType;
  AVS_DWORD dwMvNum; 
  AVS_DWORD dwMbPartType[4];           //B_8x8 only
  AVS_DWORD dwCBPCodeNum;
  AVS_DWORD  bPredModeFlag[4];         //I_8x8 only
  AVS_INT   iIntraLumaPredMode[4];     //I_8x8 only
  AVS_INT   iIntraLumaPredModeNew[4];
  AVS_DWORD dwintraChromaPredMode;
  AVS_DWORD dwintraChromaPredMode422;  //Chroma 4:2:2 only

  AVS_DWORD dwMbReferenceIndex[4];
  AVS_DWORD dwMbReferenceIndexBw[4];
  
  AVS_INT   iMvDiffX[4];
  AVS_INT   iMvDiffY[4];
  AVS_DWORD dwWeightingPrediction;
  AVS_DWORD  bHasCbp;
  AVS_DWORD dwCbp;
  AVS_DWORD dwCbp422;
  AVS_INT   iMbQpDelta;
  AVS_INT   predDir[4];    //fwd: 1, bwd: 0, sym: 2
  AVS_INT   iBlockDistance[4];
  AVS_INT   iBlockDistanceBw[4];
  MOTIONVECTOR mv[4];
  MOTIONVECTOR mvBw[4];

  AVS_DWORD dwMbQp;
};

struct SEQENCEINFO {
  AVS_DWORD dwWidth;
  AVS_DWORD dwHeight;
  AVS_DWORD dwChromaFormat;
  AVS_DWORD dwAspectRatio;
  AVS_FLOAT fFrameRate;
  AVS_DWORD dwMbWidth;
  AVS_DWORD dwMbHeight;
  AVS_BOOL  bProgressive;
  AVS_DWORD dwProfile;
  AVS_DWORD dwLevel;
  AVS_BOOL  bLowDelay;
};

struct IMAGEINFO {
  AVS_DWORD dwImageType;
  AVS_DWORD dwImageType1;
  AVS_DWORD dwPictureDistance;
  AVS_BOOL  bProgressiveFrame;
  AVS_BOOL  bPictureStructure;
  AVS_BOOL  bTopFieldFirst;
  AVS_BOOL  bRepeatFirstField;
  AVS_BOOL  bFixedPictureQp;
  AVS_DWORD dwPictureQp;
  AVS_BOOL  bSkipModeFlag;
  AVS_BOOL  bLoopFilterDisable;
  AVS_INT   iAlphaCOffset;
  AVS_INT   iBetaOffset;
  //pb frame
  AVS_BOOL  bPictureReferenceFlag;
};

struct SLICEINFO {
  AVS_DWORD  bFixedSliceQp;
  AVS_DWORD dwSliceQp;
  AVS_DWORD LumaScale[4];
  AVS_DWORD LumaShift[4];
  AVS_DWORD ChromaScale[4];
  AVS_DWORD ChromaShift[4];
  AVS_DWORD  bMbWeightingFlag;
};

struct STREAMINFO {
  SEQENCEINFO SeqInfo;
  IMAGEINFO ImgInfo;
  SLICEINFO SlcInfo;
};

struct BWREFINFO{
  AVS_DWORD    dwMbType;
  MOTIONVECTOR mvRef[4];
  AVS_INT      iBlockDistanceRef[4];
  AVS_INT      iDistanceIndexRef[4];
  AVS_INT      PictureStructure;
};

#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#define min1(a,b) (((a) < (b)) ? (a) : (b))
#define Clip(a) ( (a)<(0) ? (0) : ((a)>(255)?(255):(a)) ) 
#define Median(a,b,c) (a + b + c - min(a, min(b, c)) - max(a, max(b, c)));
#define sign1(x) (x < 0 ? -1 : 1)
#define sign(x) (x < 0 ? -1 : 1)
#define Clip3(min,max,val) (((val)<(min))?(min):(((val)>(max))?(max):(val)))

#endif

⌨️ 快捷键说明

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