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

📄 umc_vc1_enc_def.h

📁 audio-video-codecs.rar语音编解码器
💻 H
字号:
/* /////////////////////////////////////////////////////////////////////////////
//
//                  INTEL CORPORATION PROPRIETARY INFORMATION
//     This software is supplied under the terms of a license agreement or
//     nondisclosure agreement with Intel Corporation and may not be copied
//     or disclosed except in accordance with the terms of that agreement.
//          Copyright(c) 2007 Intel Corporation. All Rights Reserved.
//
//
//          VC-1 (VC1) encoder, common definitions
//
*/
#include "umc_defs.h"

#if defined (UMC_ENABLE_VC1_VIDEO_ENCODER)

#ifndef _ENCODER_VC1_DEF_H_
#define _ENCODER_VC1_DEF_H_
namespace UMC_VC1_ENCODER
{

//#define VC1_ENC_STAT

#define VC1_ENC_STR_LEN             200
#define VC1_ENC_LUMA_SIZE           16
#define VC1_ENC_CHROMA_SIZE         8
#define VC1_ENC_DC_ESCAPE_INDEX     119
#define VC1_ENC_BLOCK_SIZE          64
#define VC1_ENC_NUMBER_OF_BLOCKS    6

#define VC1_ENC_MV_LIMIT            159
#define VC1_ENC_HALF_MV_LIMIT       95

#define VC1_ENC_CHECK(err) if (err != UMC::UMC_OK) {return err;}
#define VC1_ENC_IPP_CHECK(Sts) if(Sts != ippStsNoErr) {return Sts;}
#define VC_ENC_PATTERN_POS(blk, subblk) (((5-(blk))<<2)+ (subblk))
typedef enum
{
    VC1_ENC_PROFILE_S = 0x00,
    VC1_ENC_PROFILE_M = 0x04,
    VC1_ENC_PROFILE_A = 0x0C,

}eProfile;

typedef enum
{
    VC1_ENC_I_FRAME    =  0 ,
    VC1_ENC_P_FRAME         ,
    VC1_ENC_B_FRAME         ,
    VC1_ENC_BI_FRAME        ,
} ePType;

typedef enum
{
    VC1_ENC_I_MB      =  0 ,
    VC1_ENC_P_MB_1MV       ,
    VC1_ENC_P_MB_4MV       ,
    VC1_ENC_P_MB_INTRA     ,
    VC1_ENC_P_MB_SKIP      ,
    VC1_ENC_B_MB_F         ,
    VC1_ENC_B_MB_B         ,
    VC1_ENC_B_MB_FB        ,
    VC1_ENC_B_MB_INTRA     ,
    VC1_ENC_B_MB_SKIP_F    ,
    VC1_ENC_B_MB_SKIP_B    ,
    VC1_ENC_B_MB_SKIP_FB   ,
    VC1_ENC_B_MB_DIRECT

} eMBType;

typedef enum
{
    VC1_ENC_QTYPE_IMPL = 0, /*from table*/
    VC1_ENC_QTYPE_EXPL = 1, /*from stream*/
    VC1_ENC_QTYPE_UF   = 2, /*uniform*/
    VC1_ENC_QTYPE_NUF  = 3, /*non-uniform*/

} eQuantType;
typedef enum
{
    VC1_ENC_RES_FULL_HOR = 0,
    VC1_ENC_RES_FULL_VER = 0,
    VC1_ENC_RES_HALF_HOR = 1,
    VC1_ENC_RES_HALF_VER = 2,

} eResolution;
typedef
struct
{
    Ipp8u num;
    Ipp8u denom;
} sFraction;

typedef struct
{
   const Ipp8u * pTableDL;
   const Ipp8u * pTableDR;
   const Ipp8u * pTableInd;
   const Ipp8u * pTableDLLast;
   const Ipp8u * pTableDRLast;
   const Ipp8u * pTableIndLast;
   const Ipp32u* pEncTable;
} sACTablesSet;

typedef struct
{
    const Ipp8u * pLSizeTable;
    Ipp8u         levelSize;
    Ipp8u         runSize;
} sACEscInfo;



enum
{
  VC1_ENC_PAT_POS_Y0 = 5,
  VC1_ENC_PAT_POS_Y1 = 4,
  VC1_ENC_PAT_POS_Y2 = 3,
  VC1_ENC_PAT_POS_Y3 = 2,
  VC1_ENC_PAT_POS_Cb = 1,
  VC1_ENC_PAT_POS_Cr = 0,
};
enum
{
    VC1_ENC_PAT_MASK_Y0  = 1 << VC1_ENC_PAT_POS_Y0,
    VC1_ENC_PAT_MASK_Y1  = 1 << VC1_ENC_PAT_POS_Y1,
    VC1_ENC_PAT_MASK_Y2  = 1 << VC1_ENC_PAT_POS_Y2,
    VC1_ENC_PAT_MASK_Y3  = 1 << VC1_ENC_PAT_POS_Y3,
    VC1_ENC_PAT_MASK_Cb  = 1 << VC1_ENC_PAT_POS_Cb,
    VC1_ENC_PAT_MASK_Cr  = 1 << VC1_ENC_PAT_POS_Cr,
    VC1_ENC_PAT_MASK_LUMA   =  VC1_ENC_PAT_MASK_Y0|VC1_ENC_PAT_MASK_Y1|VC1_ENC_PAT_MASK_Y2|VC1_ENC_PAT_MASK_Y3,
    VC1_ENC_PAT_MASK_CHROMA =  VC1_ENC_PAT_MASK_Cb|VC1_ENC_PAT_MASK_Cr,
    VC1_ENC_PAT_MASK_MB     =  VC1_ENC_PAT_MASK_LUMA|VC1_ENC_PAT_MASK_CHROMA
};
typedef enum
{
    VC1_ENC_NONE = 0,
    VC1_ENC_LEFT = 1,
    VC1_ENC_TOP  = 2,
}eDirection;

typedef enum
{
    VC1_ENC_LEV_DELTA_NOT_LAST  = 0,
    VC1_ENC_RUN_DELTA_NOT_LAST  = 1,
    VC1_ENC_IND_DELTA_NOT_LAST  = 2,
    VC1_ENC_LEV_DELTA_LAST      = 3,
    VC1_ENC_RUN_DELTA_LAST      = 4,
    VC1_ENC_IND_DELTA_LAST      = 5,

}eDeltaTableNum;

typedef enum
{
    VC1_ENC_HIGH_MOTION_INTRA   = 0,
    VC1_ENC_LOW_MOTION_INTRA    = 1,
    VC1_ENC_MID_RATE_INTRA      = 2,
    VC1_ENC_HIGH_RATE_INTRA     = 3,
    VC1_ENC_HIGH_MOTION_INTER   = 4,
    VC1_ENC_LOW_MOTION_INTER    = 5,
    VC1_ENC_MID_RATE_INTER      = 6,
    VC1_ENC_HIGH_RATE_INTER     = 7,
}eCodingSet;

typedef enum
{
    VC1_ENC_CURR_PLANE          = 0,
    VC1_ENC_RAISED_PLANE        = 1,
    VC1_ENC_FORWARD_PLANE       = 2,
    VC1_ENC_BACKWARD_PLANE      = 3,

}ePlaneType;

typedef enum
{
    VC1_ENC_1MV_HALF_BILINEAR             = 0,
    VC1_ENC_1MV_QUARTER_BICUBIC           = 1,
    VC1_ENC_1MV_HALF_BICUBIC              = 2,
    VC1_ENC_MIXED_QUARTER_BICUBIC         = 3,
}eMVModes;

typedef enum
{
    VC1_ENC_QUANT_SINGLE                  = 0,
    VC1_ENC_QUANT_MB_ANY                  = 1,
    VC1_ENC_QUANT_MB_PAIR                 = 2,
    VC1_ENC_QUANT_EDGE_ALL                = 3,
    VC1_ENC_QUANT_EDGE_LEFT               = 4,
    VC1_ENC_QUANT_EDGE_TOP                = 5,
    VC1_ENC_QUANT_EDGE_RIGHT              = 6,
    VC1_ENC_QUANT_EDGE_BOTTOM             = 7,
    VC1_ENC_QUANT_EDGES_LEFT_TOP          = 8,
    VC1_ENC_QUANT_EDGES_TOP_RIGHT         = 9,
    VC1_ENC_QUANT_EDGES_RIGHT_BOTTOM      = 10,
    VC1_ENC_QUANT_EDGSE_BOTTOM_LEFT       = 11,

}eQuantMode;

typedef enum
{
   VC1_ENC_8x8_TRANSFORM = 0,
   VC1_ENC_8x4_TRANSFORM = 1,
   VC1_ENC_4x8_TRANSFORM = 2,
   VC1_ENC_4x4_TRANSFORM = 3,
}eTransformType;

typedef enum
{
   VC1_ENC_FORWARD = 0,
   VC1_ENC_BACKWARD =1,
   VC1_ENC_INTERPOLATED = 2,
}eBMVType;

struct sPlanes
{
    Ipp8u* pY;
    Ipp8u* pU;
    Ipp8u* pV;
    Ipp32u YStep;
    Ipp32u UStep;
    Ipp32u VStep;
};
struct sCoordinate
{
    Ipp16s x;
    Ipp16s y;

};
}

#endif
#endif //defined (UMC_ENABLE_VC1_VIDEO_ENCODER)

⌨️ 快捷键说明

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