📄 umc_vc1_enc_def.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 + -