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

📄 umc_h264_dec_tables.cpp

📁 audio-video-codecs.rar语音编解码器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
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 + -