📄 umc_h264_tables.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) 2004 - 2005 Intel Corporation. All Rights Reserved.//#ifndef TTABLES_H__#define TTABLES_H__#include "umc_h264_pub.h"namespace UMC_H264_ENCODER{/////////////////////////////////////////////////////////// offsets for 4x4 blocksextern const Ipp8u xoff[16];extern const Ipp8u yoff[16];extern const Ipp8s xyoff[16][2];// Offset for 8x8 blocksextern const Ipp8u xoff8[4];extern const Ipp8u yoff8[4];// Offset for 16x16 blockextern const Ipp8u yoff16[1];//////////////////////////////////////////////////////////// scan matrices//extern const Ipp8u single_scan[16];//extern const Ipp8u dec_single_scan[16];// bit index mask used in RLEextern const Ipp16u bit_index_mask[16];//////////////////////////////////////////////////////////// Mapping from luma QP to chroma QPextern const Ipp8u QPtoChromaQP[52];///////////////////////////////////////// Tables for decoding CBPextern const Ipp8u dec_cbp_intra[48];extern const Ipp8u dec_cbp_inter[48];extern const Ipp32u CBP4x4Mask[24];// CBP4x4 bits to map 8x8 block to corresponding luma 4x4 blocks#define CBP4x4_FROM8x8_0 0x000f // luma 0,1,2,3#define CBP4x4_FROM8x8_1 0x00f0 // luma 4,5,6,7#define CBP4x4_FROM8x8_2 0x0f00 // luma 8,9,10,11#define CBP4x4_FROM8x8_3 0xf000 // luma 12,13,14,15////////////////////////////////////////////////////////// Mappings from block number in loop to 8x8 block numberextern const Ipp8u subblock_block_ss[24];extern const Ipp8u subblock_block_ds[32];// Mapping from 8x8 block number to 4x4 block numberextern const Ipp8u block_subblock_mapping[16];// Mapping from block number in loop to 8x8 block numberextern const Ipp8u subblock_block_mapping[16];// chroma block re-mappingextern const Ipp8u subblock_block_chroma[8];// Mapping from chroma block number to luma block number where the vector// to be used for chroma can be foundextern const Ipp8u chroma_block_address[4];// Encoder tables for coefficient encodingextern const Ipp8u enc_levrun_inter[16];extern const Ipp8u enc_levrun_intra[8];extern const Ipp8u enc_ntab_inter[10][4];extern const Ipp8u enc_ntab_intra[5][9];extern const Ipp8u enc_ntab_cDC[2][2];extern const Ipp8u enc_levrun_cDC[4];////////////////////////////////////////////////////////////////////// Translation from block number in chroma loop to// actual chroma block numberextern const Ipp8u block_trans[8];/////////////////////////////////////////////////////////////////////// RD multiplier (Lagrange factor)extern Ipp16u rd_quant[52];extern Ipp16u rd_quant_intra[52];extern Ipp16u rd_quant_intra_min[52];#ifdef _TEST_PARM_extern Ipp16u uTestValue;#endif// used for SSE2 AIModeSelectextern Ipp16u uSADTable[11];// Table used to prevent single or 'expensive' coefficients are codedextern const Ipp8u coeff_importance[16];extern const Ipp32s COEFF_BLOCK_THRESHOLD;extern const Ipp32s COEFF_MB_THRESHOLD ;// Tables used for finding if a block is on the edge// of a macroblockextern const Ipp8u left_edge_tab4[4];extern const Ipp8u top_edge_tab4[4];extern const Ipp8u right_edge_tab4[4];extern const Ipp8u left_edge_tab16[16];extern const Ipp8u top_edge_tab16[16];extern const Ipp8u right_edge_tab16[16];extern const Ipp8u left_edge_tab16_8x4[16];extern const Ipp8u top_edge_tab16_8x4[16];extern const Ipp8u right_edge_tab16_8x4[16];extern const Ipp8u left_edge_tab16_4x8[16];extern const Ipp8u top_edge_tab16_4x8[16];extern const Ipp8u right_edge_tab16_4x8[16];extern const Ipp8u above_right_avail_8x4[16];extern const Ipp8u above_right_avail_4x8[16];extern const Ipp8u above_right_avail_4x4[16];extern const Ipp8u intra4x4_below_left_avail[16];// chroma vector mappingextern const Ipp8u c2x2m[4][4];// empty threshold tableextern Ipp32u EmptyThreshold[52];// encode Shortcut thresh tablesextern Ipp32u DirectBSkipMEThres[52];extern Ipp32u PSkipMEThres[52];extern Ipp32s BestOf5EarlyExitThres[52];// gc_Zeroes is a constant array of zeroes. It is useful for the decoder's// reconstruction functions, to quickly emulate a non-coded block or subblock.// The "gc_" prefix indicates this is a global, constant table.// Because it's constant, you can use it in contexts expecting other// than an Ipp32s, via an appropriate cast.extern const Ipp32s gc_Zeroes[8*8];// MB part widths and heights according to mb_type.extern const Ipp8u MbPartWidth[UMC::NUMBER_OF_MBTYPES];extern const Ipp8u MbPartHeight[UMC::NUMBER_OF_MBTYPES];extern Ipp32u C1MV_offset[16];extern Ipp8u C1MVtable[2048];extern IppiSize size16x16;extern IppiSize size16x8;extern IppiSize size8x16;extern IppiSize size8x8;extern IppiSize size8x4;extern IppiSize size4x8;extern IppiSize size4x4;extern IppiSize size4x2;extern IppiSize size2x4;extern IppiSize size2x2;} //namespace UMC#endif // TTABLES_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -