📄 umc_h264_dec_tables.cpp
字号:
const Ipp8u above_right_avail_8x4[16] = {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0};
const Ipp8u above_right_avail_4x8[16] = {0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0};
// Table for 4x4 intra prediction to find if a subblock can use predictors
// from above right. Also used for motion vector prediction availability.
// JVT CD block order.
const Ipp8u above_right_avail_4x4[16] = {1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0};
const Ipp8u above_right_avail_4x4_lin[16] = {
1,1,1,1,
1,0,1,0,
1,1,1,0,
1,0,1,0
};
const Ipp8u subblock_block_membership[16] = {
0,0,1,1,
0,0,1,1,
2,2,3,3,
2,2,3,3
};
const Ipp8u default_intra_scaling_list4x4[16]=
{
6, 13, 20, 28, 13, 20, 28, 32, 20, 28, 32, 37, 28, 32, 37, 42
};
const Ipp8u default_inter_scaling_list4x4[16]=
{
10, 14, 20, 24, 14, 20, 24, 27, 20, 24, 27, 30, 24, 27, 30, 34
};
const Ipp8u default_intra_scaling_list8x8[64]=
{
6, 10, 13, 16, 18, 23, 25, 27, 10, 11, 16, 18, 23, 25, 27, 29,
13, 16, 18, 23, 25, 27, 29, 31, 16, 18, 23, 25, 27, 29, 31, 33,
18, 23, 25, 27, 29, 31, 33, 36, 23, 25, 27, 29, 31, 33, 36, 38,
25, 27, 29, 31, 33, 36, 38, 40, 27, 29, 31, 33, 36, 38, 40, 42
};
const Ipp8u default_inter_scaling_list8x8[64]=
{
9, 13, 15, 17, 19, 21, 22, 24, 13, 13, 17, 19, 21, 22, 24, 25,
15, 17, 19, 21, 22, 24, 25, 27, 17, 19, 21, 22, 24, 25, 27, 28,
19, 21, 22, 24, 25, 27, 28, 30, 21, 22, 24, 25, 27, 28, 30, 32,
22, 24, 25, 27, 28, 30, 32, 33, 24, 25, 27, 28, 30, 32, 33, 35
};
const Ipp32s pre_norm_adjust_index4x4[16] =
{// 0 1 2 3
0,2,0,2,//0
2,1,2,1,//1
0,2,0,2,//2
2,1,2,1 //3
};
const Ipp32s pre_norm_adjust4x4[6][3] =
{
{10,16,13},
{11,18,14},
{13,20,16},
{14,23,18},
{16,25,20},
{18,29,23}
};
const Ipp32s pre_norm_adjust8x8[6][6] =
{
{20, 18, 32, 19, 25, 24},
{22, 19, 35, 21, 28, 26},
{26, 23, 42, 24, 33, 31},
{28, 25, 45, 26, 35, 33},
{32, 28, 51, 30, 40, 38},
{36, 32, 58, 34, 46, 43}
};
const Ipp32s pre_norm_adjust_index8x8[64] =
{// 0 1 2 3 4 5 6 7
0,3,4,3,0,3,4,3,//0
3,1,5,1,3,1,5,1,//1
4,5,2,5,4,5,2,5,//2
3,1,5,1,3,1,5,1,//3
0,3,4,3,0,3,4,3,//4
3,1,5,1,3,1,5,1,//5
4,5,2,5,4,5,2,5,//6
3,1,5,1,3,1,5,1 //7
};
const Ipp8s ClipQPTable[52*3]=
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10,11,12,13,14,15,16,17,18,19,
20,21,22,23,24,25,26,27,28,29,
30,31,32,33,34,35,36,37,38,39,
40,41,42,43,44,45,46,47,48,49,
50,51,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10,11,12,13,14,15,16,17,18,19,
20,21,22,23,24,25,26,27,28,29,
30,31,32,33,34,35,36,37,38,39,
40,41,42,43,44,45,46,47,48,49,
50,51,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10,11,12,13,14,15,16,17,18,19,
20,21,22,23,24,25,26,27,28,29,
30,31,32,33,34,35,36,37,38,39,
40,41,42,43,44,45,46,47,48,49,
50,51
};
const Ipp32u num_blocks[]={4,4,8,16};
const Ipp32u x_pos_value[4][16]=
{
{//400
0,1,
0,1
},
{//420
0,1,
0,1
},
{//422
0,1,
0,1,
0,1,
0,1
},
{//444
0,1,2,3,
0,1,2,3,
0,1,2,3,
0,1,2,3
}
};
const Ipp32u y_pos_value[4][16]={
{//400
0,0,
1,1
},
{//420
0,0,
1,1
},
{//422
0,0,
1,1,
2,2,
3,3
},
{//444
0,0,0,0,
1,1,1,1,
2,2,2,2,
3,3,3,3
}
};
const Ipp32u block_y_values[4][4]=
{
{
0, 2, 0, 2
},
{
0, 2, 0, 2
},
{
0, 2, 4, 6
},
{
0, 4, 8, 12,
}
};
const Ipp32s dec_values[]={20,20,24,32};
const Ipp32u mb_c_width[]={2,2,2,4};
const Ipp32u mb_c_height[]={2,2,4,4};
const Ipp32u first_v_ac_block[]={23,23,27,35};
const Ipp32u last_v_ac_block[]={26,26,34,50};
const
Ipp8u SbPartNumMinus1[2][17] =
{
{
3, // SBTYPE_DIRECT
0, // SBTYPE_8x8
1, // SBTYPE_8x4
1, // SBTYPE_4x8
3, // SBTYPE_4x4
0, // SBTYPE_FORWARD_8x8
0, // SBTYPE_BACKWARD_8x8
0, // SBTYPE_BIDIR_8x8
1, // SBTYPE_FORWARD_8x4
1, // SBTYPE_FORWARD_4x8
1, // SBTYPE_BACKWARD_8x4
1, // SBTYPE_BACKWARD_4x8
1, // SBTYPE_BIDIR_8x4
1, // SBTYPE_BIDIR_4x8
3, // SBTYPE_FORWARD_4x4
3, // SBTYPE_BACKWARD_4x4
3 // SBTYPE_BIDIR_4x4
},
{
0, // SBTYPE_DIRECT
0, // SBTYPE_8x8
1, // SBTYPE_8x4
1, // SBTYPE_4x8
3, // SBTYPE_4x4
0, // SBTYPE_FORWARD_8x8
0, // SBTYPE_BACKWARD_8x8
0, // SBTYPE_BIDIR_8x8
1, // SBTYPE_FORWARD_8x4
1, // SBTYPE_FORWARD_4x8
1, // SBTYPE_BACKWARD_8x4
1, // SBTYPE_BACKWARD_4x8
1, // SBTYPE_BIDIR_8x4
1, // SBTYPE_BIDIR_4x8
3, // SBTYPE_FORWARD_4x4
3, // SBTYPE_BACKWARD_4x4
3 // SBTYPE_BIDIR_4x4
}
};
const Ipp32s ChromaDC422RasterScan[8] =
{
0,2,
1,4,
6,3,
5,7
};
const Ipp32u mask_[] = //(1 << (i >> 2))
{
1,1,1,1,
2,2,2,2,
4,4,4,4,
8,8,8,8
};
const Ipp32u mask_bit[] =
{
1<< 0,1<< 1,1<< 2,1<< 3,
1<< 4,1<< 5,1<< 6,1<< 7,
1<< 8,1<< 9,1<<10,1<<11,
1<<12,1<<13,1<<14,1<<15,
1<<16,1<<17,1<<18,1<<19,
1<<20,1<<21,1<<22,1<<23,
1<<24,1<<25,1<<26,1<<27,
1<<28,1<<29,1<<30, (Ipp32u) 1<<31
};
const Ipp32s iLeftBlockMask[] =
{
0x00040, 0x00002, 0x00100, 0x00008,
0x00004, 0x00020, 0x00010, 0x00080,
0x04000, 0x00200, 0x10000, 0x00800,
0x00400, 0x02000, 0x01000, 0x08000
};
const Ipp32s iTopBlockMask[] =
{
0x00800, 0x01000, 0x00002, 0x00004,
0x08000, 0x10000, 0x00020, 0x00040,
0x00008, 0x00010, 0x00200, 0x00400,
0x00080, 0x00100, 0x02000, 0x04000
};
// Lookup table to get the 4 bit positions for the 4x4 blocks in the
// blockcbp from the coded bits in 8x8 bitstream cbp.
const Ipp32u blockcbp_table[] =
{
(0xf<<1), (0xf0<<1), (0xf00<<1), (0xf000<<1), (0x30000<<1)
};
// Lookup table to obtain NumCoefToLeft index (0..7) from block number in
// decodeCoefficients, block 0 is INTRA16 DC. Used for luma and chroma.
const Ipp32u BlockNumToMBRowLuma[17] =
{ 0,0,0,1,1,0,0,1,1,2,2,3,3,2,2,3,3};
const Ipp32u BlockNumToMBRowChromaAC[4][32] =
{
{ 0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1},
{ 0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1},
{ 0,0,1,1,2,2,3,3,0,0,1,1,2,2,3,3,0,0,1,1,2,2,3,3,0,0,1,1,2,2,3,3},
{ 0,0,1,1,0,0,1,1,2,2,3,3,2,2,3,3,0,0,1,1,0,0,1,1,2,2,3,3,2,2,3,3}
};
// Lookup table to obtain NumCoefAbove index (0..7) from block number in
// decodeCoefficients, block 0 is INTRA16 DC. Used for luma and chroma.
const Ipp32u BlockNumToMBColLuma[17] =
{ 0,0,1,0,1,2,3,2,3,0,1,0,1,2,3,2,3};
const Ipp32u BlockNumToMBColChromaAC[4][32] =
{
{ 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{ 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{ 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{ 0,1,0,1,2,3,2,3,0,1,0,1,2,3,2,3,0,1,0,1,2,3,2,3,0,1,0,1,2,3,2,3}
};
const Ipp32s iBlockCBPMask[16] =
{
0x00002, 0x00004, 0x00020, 0x00040,
0x00008, 0x00010, 0x00080, 0x00100,
0x00200, 0x00400, 0x02000, 0x04000,
0x00800, 0x01000, 0x08000, 0x10000
};
const Ipp32s iBlockCBPMaskChroma[8] =
{
0x00002, 0x00004,
0x00008, 0x00010,
0x00020, 0x00040,
0x00080, 0x00100
};
const Ipp32s SAspectRatio[14][2] =
{
{ 1, 1}, { 1, 1}, {12, 11}, {10, 11}, {16, 11}, {40, 33}, { 24, 11},
{20, 11}, {32, 11}, {80, 33}, {18, 11}, {15, 11}, {64, 33}, {160, 99}
};
const Ipp8u SubWidthC[4] = { 1, 2, 2, 1 };
const Ipp8u SubHeightC[4] = { 1, 2, 1, 1 };
} // namespace UMC
#endif // UMC_ENABLE_H264_VIDEO_DECODER
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -