H.266/VVC-VTM代码学习-帧内预测08-MIP模式(2)predBlock函数完成Mip预测

H.266/VVC专栏传送

上一篇:H.266/VVC-VTM代码学习-帧内预测07-MIP模式(1)initIntraMip函数初始化Mip
下一篇:H.266/VVC-VTM代码学习-帧内预测09-色度预测的CCLM模式(1)xGetLumaRecPixels函数对重建亮度块下采样

前言

VTM是H.266/VVC视频编码标准的参考软件,研究VTM代码给研究人员解释了VVC编码标准的详细标准规范与细节。

本文是笔者对VTM代码的一点学习记录,成文于笔者刚开始接触VVC期间,期间很多概念和理论框架还很不成熟,若文中存在错误欢迎批评指正,也欢迎广大视频编码学习者沟通交流、共同进步。

VTM代码的下载及编译请参考博文:
【视频编码学习】H.266/VVC参考软件VTM配置运行(VTM-6.0版本)

本文涉及的代码主要存在于工程下的Lib\CommonLib\MatrixIntraPrediction.cpp文件中。

一、MIP模式简述

MIP技术,即Matrix Weighted Intra Prediction,矩阵加权帧内预测技术,是VVC中的一种帧内预测技术。

该技术的设计源于最初对神经网络用于对参考像素进行处理从而实现帧内预测的设想。但直接运用神经网络对参考像素处理内存和时间的花费较大,故MIP技术使用脱机训练好的矩阵与下采样的参考像素向量相乘得到部分预测值,再通过上采样获得所有预测值。

简言之,MIP模式主要分为以下几个步骤。

1.参考像素下采样

在这里插入图片描述

MIP只能处理最小4×4,最大64×64的块。如上图所示,第一步是将左侧和上侧的参考像素进行下采样得到上图右侧的下采样结果,代码中是以向量的形式存储下采样结果。下采样的结果尺寸按照原块大小有如下表的规定。

mipSizeId块尺寸下采样后边界长度(m_reducedBdrySize)
04×42
14×N、N×4、8×84
2其余尺寸(最大64×64)4

下采样就是按照块大小指定的下采样后尺寸,对参考像素进行相应数量的参考像素取平均的操作。具体实现见上一篇博客代码注释。

2.矩阵运算

将下采样得到的参考像素按向量形式存放,根据Mip模式号索引与当前块对应的脱机训练好的矩阵A和偏移向量,将矩阵和下采样得到的参考像素向量相乘,相乘后的结果加上偏移向量得到最终运算结果。最终运算结果的尺寸和不同mipSizeId对应的矩阵A维度如下表所示。

mipSizeId块尺寸下采样后边界长度(m_reducedBdrySize)矩阵A维度矩阵乘法输出边界长度(m_reducedPredSize)
04×4216×44
14×N、N×4、8×8416×84
2其余尺寸(最大64×64)464×78

如下图,矩阵运算的结果可以填充部分当前块的预测值,其他部分的预测值需要通过双线性插值完成。

在这里插入图片描述

3.上采样

如下图所示,通过先水平、再垂直的线性插值可以得到当前块所有点的预测值。线性插值的具体细节见本篇博客的代码注释。

在这里插入图片描述

二、主要函数

1.函数代码与分析

本篇博客涉及的predBlock函数主要内容集中在Mip算法的后两步,即根据上篇博客介绍的initIntraMip函数获得矩阵乘法的输入向量后,predBlock函数开始进行矩阵乘法,并对乘法结果根据情况进行上采样获得完整预测结果值。

(1)predBlock函数进行矩阵乘法与上采样
void MatrixIntraPrediction::predBlock(int *const result, const int modeIdx, const bool transpose, const int bitDepth,
                                      const ComponentID compId)
{
  CHECK(m_component != compId, "Boundary has not been prepared for this component.");

  //上采样因子是m_blockSize  / m_reducedPredSize,该语句用于判断是否需要上采样
  //只有当水平或垂直上采样因子大于1时才需要上采样
  const bool needUpsampling = ( m_upsmpFactorHor > 1 ) || ( m_upsmpFactorVer > 1 );
  
  //根据mipSizeId和modeIdx获取对应MIP矩阵
  //modeIdx是Mip的模式号,0~31,由编码端根据RD决定
  const uint8_t* matrix = getMatrixData(modeIdx);
  
  //用于存储矩阵乘法结果,即缩减预测像素
  static_vector<int, MIP_MAX_REDUCED_OUTPUT_SAMPLES> bufReducedPred( m_reducedPredSize * m_reducedPredSize );
  //如果不需要上采样,则将结果还是放于result中
  int* const       reducedPred     = needUpsampling ? bufReducedPred.data() : result;
  //取出缩减后的参考像素,即矩阵乘法的输入
  const int* const reducedBoundary = transpose ? m_reducedBoundaryTransposed.data() : m_reducedBoundary.data();
  //计算矩阵乘法得到缩减预测像素
  computeReducedPred(reducedPred, reducedBoundary, matrix, transpose, bitDepth);
  //如果需要上采样
  if( needUpsampling )
  {
    //上采样函数,利用缩减预测像素插值获得整个块的预测像素
    predictionUpsampling( result, reducedPred );
  }
}
(2)computeReducedPred函数完成计算矩阵乘法【入口在(1)】
void MatrixIntraPrediction::computeReducedPred( int*const result, const int* const input,
                                                const uint8_t* matrix,
                                                const bool transpose, const int bitDepth )
{
  //下采样的输出向量长度,即矩阵乘法输入的向量长度,4 or 8
  const int inputSize = 2 * m_reducedBdrySize;

  // use local buffer for transposed result对转置结果使用本地缓冲区
  static_vector<int, MIP_MAX_REDUCED_OUTPUT_SAMPLES> resBufTransposed( m_reducedPredSize * m_reducedPredSize );
  int*const resPtr = (transpose) ? resBufTransposed.data() : result;

  //求输入向量各值的和
  int sum = 0;
  for( int i = 0; i < inputSize; i++ ) { sum += input[i]; }
  
  //移位因子MIP_SHIFT_MATRIX是6,偏移因子MIP_OFFSET_MATRIX是32
  const int offset = (1 << (MIP_SHIFT_MATRIX - 1)) - MIP_OFFSET_MATRIX * sum;
  CHECK( inputSize != 4 * (inputSize >> 2), "Error, input size not divisible by four" );

  //权重矩阵
  const uint8_t *weight = matrix;
  //获取输入偏移值,即下采样时的偏移值
  const int   inputOffset = transpose ? m_inputOffsetTransp : m_inputOffset;
  //ID是否为2,即是否大于8×8
  const bool redSize = (m_sizeId == 2);
  int posRes = 0;
  //遍历矩阵乘法后的结果矩阵计算矩阵乘法结果
  for( int y = 0; y < m_reducedPredSize; y++ )
  {
    for( int x = 0; x < m_reducedPredSize; x++ )
    {
      //每次循环计算结果向量中的一个值,即计算矩阵的当前行与输入向量对应相乘的结果
      if( redSize ) weight -= 1;
      int tmp0 = redSize ? 0 : (input[0] * weight[0]);
      int tmp1 = input[1] * weight[1];
      int tmp2 = input[2] * weight[2];
      int tmp3 = input[3] * weight[3];
      for (int i = 4; i < inputSize; i += 4)
      {
        tmp0 += input[i]     * weight[i];
        tmp1 += input[i + 1] * weight[i + 1];
        tmp2 += input[i + 2] * weight[i + 2];
        tmp3 += input[i + 3] * weight[i + 3];
      }
      //移位因子MIP_SHIFT_MATRIX是6,  offset=(1<<5)-32*sum
      //inputOffset是下采样时的偏移值,即下采样结果第一位的原值
      resPtr[posRes++] = ClipBD<int>(((tmp0 + tmp1 + tmp2 + tmp3 + offset) >> MIP_SHIFT_MATRIX) + inputOffset, bitDepth);
      
      //移动到weight矩阵下一行
      weight += inputSize;
    }
  }

  //将矩阵乘法结果进行转置
  if( transpose )
  {
    for( int y = 0; y < m_reducedPredSize; y++ )
    {
      for( int x = 0; x < m_reducedPredSize; x++ )
      {
        result[ y * m_reducedPredSize + x ] = resPtr[ x * m_reducedPredSize + y ];
      }
    }
  }
}
(3)predictionUpsampling函数进行上采样【入口在(1)】
void MatrixIntraPrediction::predictionUpsampling( int* const dst, const int* const src ) const
{
  const int* verSrc     = src;
  SizeType   verSrcStep = m_blockSize.width;

  //如果需要水平插值(block_size / reduced_size > 1)
  if( m_upsmpFactorHor > 1 )
  {
    //将指针移动到水平插值的起始位置
    int* const horDst = dst + (m_upsmpFactorVer - 1) * m_blockSize.width;
    //水平插值的结果作为垂直插值的输入
    verSrc = horDst;
    //垂直插值步长block width * (block height / reduced height)
    verSrcStep *= m_upsmpFactorVer;
    //水平插值
    predictionUpsampling1D( horDst, src, m_refSamplesLeft.data(),
                            m_reducedPredSize, m_reducedPredSize,
                            1, m_reducedPredSize, 1, verSrcStep,
                            m_upsmpFactorVer, m_upsmpFactorHor );
  }

  //垂直插值
  if( m_upsmpFactorVer > 1 )
  {
    predictionUpsampling1D( dst, verSrc, m_refSamplesTop.data(),
                            m_reducedPredSize, m_blockSize.width,
                            verSrcStep, 1, m_blockSize.width, 1,
                            1, m_upsmpFactorVer );
  }
}

2.矩阵乘法中矩阵的选择

const uint8_t* MatrixIntraPrediction::getMatrixData(const int modeIdx) const
{
  switch( m_sizeId )
  {
  case 0: return &mipMatrix4x4[modeIdx][0][0];

  case 1: return &mipMatrix8x8[modeIdx][0][0];

  case 2: return &mipMatrix16x16[modeIdx][0][0];

  default: THROW( "Invalid mipSizeId" );
  }
}

首先,矩阵通过sizeId进行初步选择。如下表所示,Mip为不同mipSizeId的块准备了不同数量不同大小的用于做矩阵乘法的矩阵。

mipSizeId块尺寸MIP矩阵尺寸MIP矩阵数量
04×416×416
14×N、N×4、8×816×88
2大于8×864×76

根据sizeId选择对应位置后,根据modeIdx即Mip的模式号(0~31)选择矩阵,modeIdx由编码端根据RD决定。
所有矩阵存放在MipData.h文件中。

ALIGN_DATA(MEMORY_ALIGN_DEF_SIZE, const uint8_t mipMatrix4x4[16][16][4]) =
{
  {
    {   32,   30,   90,   28},
    {   32,   32,   72,   28},
    {   34,   77,   53,   30},
    {   51,  124,   36,   37},
    {   31,   31,   95,   37},
    {   33,   31,   70,   50},
    {   52,   80,   25,   60},
    {   78,  107,    1,   65},
    {   31,   29,   37,   95},
    {   38,   34,   19,  101},
    {   73,   85,    0,   81},
    {   92,   99,    0,   65},
    {   34,   29,   14,  111},
    {   48,   48,    7,  100},
    {   80,   91,    0,   74},
    {   89,   97,    0,   64}
  },
  {
    {   31,   23,   34,   29},
    {   31,   43,   34,   31},
    {   30,   95,   34,   32},
    {   29,  100,   35,   33},
    {   31,   23,   34,   29},
    {   31,   43,   34,   31},
    {   30,   95,   34,   32},
    {   29,   99,   35,   33},
    {   31,   24,   35,   29},
    {   31,   44,   34,   31},
    {   30,   95,   35,   32},
    {   29,   99,   35,   33},
    {   31,   24,   35,   30},
    {   31,   44,   35,   31},
    {   30,   95,   35,   32},
    {   29,   99,   35,   33}
  },
  {
    {   32,   32,   36,   58},
    {   32,   29,   26,   66},
    {   36,   37,   23,   61},
    {   79,   84,    3,   37},
    {   32,   32,   30,   69},
    {   33,   29,   24,   71},
    {   44,   16,   21,   70},
    {   96,   18,    0,   57},
    {   32,   31,   24,   74},
    {   33,   30,   23,   71},
    {   36,   24,   24,   71},
    {   59,    9,   16,   68},
    {   32,   32,   23,   75},
    {   33,   30,   24,   70},
    {   32,   30,   25,   71},
    {   36,   26,   25,   70}
  },
  {
    {   32,   33,   34,   32},
    {   32,   30,   22,   38},
    {   29,   46,   25,   38},
    {   53,  123,   28,   22},
    {   32,   33,   30,   37},
    {   32,   30,   21,   38},
    {   32,   40,   24,   38},
    {   64,  116,   26,   17},
    {   32,   32,   23,   49},
    {   32,   30,   21,   39},
    {   34,   39,   24,   37},
    {   72,  109,   23,   16},
    {   33,   31,   17,   60},
    {   32,   31,   21,   39},
    {   35,   41,   24,   37},
    {   72,  106,   22,   18}
  },
  {
    {   34,   25,   89,   20},
    {   38,   32,   47,   24},
    {   40,   86,   29,   27},
    {   38,   98,   32,   29},
    {   34,   31,   94,   40},
    {   44,   25,   83,   27},
    {   54,   72,   43,   16},
    {   47,   94,   33,   22},
    {   33,   31,   36,   94},
    {   43,   23,   51,   76},
    {   62,   55,   64,   25},
    {   57,   89,   38,   15},
    {   32,   32,   28,  101},
    {   38,   26,   33,   94},
    {   55,   38,   68,   47},
    {   59,   80,   52,   16}
  },
  {
    {   28,   30,   68,   29},
    {   23,   48,   23,   48},
    {   39,   98,   16,   42},
    {   84,   86,   20,   17},
    {   25,   31,   52,   74},
    {   38,   68,    5,   70},
    {   95,   78,    7,   21},
    {  127,   54,   12,    0},
    {   30,   47,   14,  107},
    {   79,   76,    0,   53},
    {  127,   59,    7,    1},
    {  127,   51,    9,    0},
    {   50,   71,    1,   96},
    {  109,   69,    7,   25},
    {  127,   56,    9,    0},
    {  123,   53,   13,    0}
  },
  {
    {   40,   20,   72,   18},
    {   48,   29,   44,   18},
    {   53,   81,   35,   18},
    {   48,   96,   33,   22},
    {   45,   23,   79,   49},
    {   61,   21,   56,   49},
    {   72,   52,   32,   48},
    {   65,   69,   20,   50},
    {   41,   27,   29,   96},
    {   49,   22,   28,   94},
    {   52,   22,   28,   93},
    {   49,   27,   27,   92},
    {   37,   29,   26,   98},
    {   39,   28,   28,   97},
    {   38,   28,   30,   97},
    {   38,   29,   30,   95}
  },
  {
    {   33,   27,   43,   27},
    {   32,   29,   31,   31},
    {   31,   73,   33,   31},
    {   35,  104,   34,   28},
    {   32,   30,   63,   22},
    {   33,   26,   33,   29},
    {   33,   57,   33,   30},
    {   37,  100,   35,   27},
    {   32,   31,   85,   25},
    {   34,   25,   39,   25},
    {   35,   39,   32,   28},
    {   40,   91,   35,   25},
    {   32,   30,   77,   50},
    {   34,   26,   54,   22},
    {   37,   31,   34,   27},
    {   45,   75,   34,   23}
  },
  {
    {   34,   25,   77,   19},
    {   36,   34,   56,   24},
    {   41,   83,   39,   30},
    {   47,   96,   28,   35},
    {   34,   31,   70,   65},
    {   38,   29,   53,   77},
    {   43,   36,   37,   83},
    {   48,   39,   28,   83},
    {   33,   31,   31,   98},
    {   33,   31,   30,   99},
    {   34,   30,   31,   98},
    {   36,   29,   31,   96},
    {   32,   32,   30,   97},
    {   32,   32,   31,   96},
    {   31,   33,   33,   96},
    {   32,   33,   34,   94}
  },
  {
    {   30,   30,   93,   19},
    {   31,   59,   67,   34},
    {   31,   79,   36,   59},
    {   30,   67,   17,   79},
    {   30,   38,   68,   69},
    {   29,   40,   43,   91},
    {   26,   35,   32,  101},
    {   23,   32,   30,  101},
    {   26,   34,   30,  101},
    {   23,   33,   30,  102},
    {   20,   32,   31,  102},
    {   18,   33,   32,  102},
    {   23,   33,   31,  100},
    {   20,   34,   32,  100},
    {   18,   35,   33,  100},
    {   18,   35,   33,  100}
  },
  {
    {   31,   54,   90,   26},
    {   32,   60,   53,   61},
    {   34,   49,   37,   84},
    {   34,   39,   35,   89},
    {   35,   38,   41,   88},
    {   35,   35,   32,   96},
    {   35,   31,   33,   96},
    {   35,   32,   35,   94},
    {   34,   34,   30,   97},
    {   35,   32,   33,   95},
    {   35,   32,   34,   94},
    {   35,   34,   34,   93},
    {   34,   34,   34,   93},
    {   35,   34,   34,   93},
    {   35,   34,   34,   92},
    {   36,   34,   35,   91}
  },
  {
    {   32,   29,   54,   24},
    {   31,   32,   34,   29},
    {   31,   43,   34,   29},
    {   32,   67,   36,   28},
    {   31,   34,   69,   37},
    {   31,   35,   46,   33},
    {   30,   35,   39,   33},
    {   30,   42,   39,   36},
    {   31,   35,   39,   88},
    {   30,   38,   41,   84},
    {   30,   39,   40,   81},
    {   39,   46,   38,   78},
    {   31,   36,   34,   96},
    {   34,   38,   37,   93},
    {   55,   42,   38,   82},
    {   89,   53,   38,   65}
  },
  {
    {   32,   33,   43,   29},
    {   32,   30,   29,   33},
    {   31,   47,   31,   33},
    {   33,  100,   31,   31},
    {   32,   33,   74,   25},
    {   32,   32,   34,   31},
    {   32,   33,   30,   33},
    {   32,   68,   30,   32},
    {   32,   31,   91,   40},
    {   32,   32,   58,   26},
    {   31,   31,   30,   32},
    {   31,   42,   30,   33},
    {   32,   31,   49,   85},
    {   32,   31,   83,   35},
    {   31,   33,   48,   29},
    {   31,   36,   32,   33}
  },
  {
    {   31,   29,   81,   35},
    {   32,   28,   34,   50},
    {   31,   75,   16,   43},
    {   34,  103,   29,   32},
    {   32,   32,   53,   78},
    {   31,   28,   36,   88},
    {   30,   52,   18,   73},
    {   52,   88,   17,   35},
    {   32,   32,   35,   94},
    {   30,   31,   35,   95},
    {   36,   29,   31,   92},
    {  100,   43,   16,   40},
    {   32,   32,   35,   93},
    {   30,   32,   38,   93},
    {   55,   18,   37,   83},
    {  127,    0,   30,   40}
  },
  {
    {   31,   22,   47,   30},
    {   31,   48,   25,   34},
    {   30,   95,   31,   32},
    {   32,  103,   33,   32},
    {   30,   24,   57,   31},
    {   30,   47,   26,   34},
    {   31,   95,   31,   32},
    {   43,   97,   35,   25},
    {   29,   26,   44,   63},
    {   37,   38,   24,   47},
    {   74,   63,   28,   20},
    {  110,   58,   34,    3},
    {   46,   22,    5,  108},
    {   93,    5,    9,   77},
    {  127,    0,   17,   52},
    {  127,    0,   15,   50}
  },
  {
    {   32,   27,   68,   24},
    {   35,   23,   35,   28},
    {   35,   64,   29,   29},
    {   37,  104,   33,   28},
    {   32,   32,   91,   40},
    {   36,   23,   67,   36},
    {   49,   23,   39,   28},
    {   60,   67,   30,   20},
    {   32,   32,   36,   95},
    {   35,   29,   38,   93},
    {   50,   16,   30,   84},
    {   72,   16,   15,   65},
    {   32,   32,   27,  100},
    {   33,   32,   29,  100},
    {   37,   29,   30,   98},
    {   48,   21,   29,   90}
  }
};

ALIGN_DATA(MEMORY_ALIGN_DEF_SIZE, const uint8_t mipMatrix8x8[8][16][8]) =
{
  {
    {   30,   63,   46,   37,   25,   33,   33,   34},
    {   30,   60,   66,   38,   32,   31,   32,   33},
    {   29,   45,   74,   42,   32,   32,   32,   33},
    {   30,   39,   62,   58,   32,   33,   32,   33},
    {   30,   66,   55,   39,   32,   30,   30,   36},
    {   29,   54,   69,   40,   33,   31,   31,   33},
    {   28,   48,   71,   43,   32,   33,   32,   33},
    {   28,   41,   72,   46,   32,   34,   32,   33},
    {   30,   66,   56,   40,   32,   33,   28,   33},
    {   29,   55,   69,   39,   33,   33,   30,   32},
    {   27,   46,   72,   43,   33,   33,   32,   33},
    {   27,   42,   69,   48,   32,   34,   32,   33},
    {   30,   63,   55,   40,   32,   33,   35,   30},
    {   29,   56,   66,   40,   33,   33,   33,   30},
    {   27,   47,   69,   44,   33,   33,   33,   32},
    {   27,   42,   65,   50,   32,   34,   32,   33}
  },
  {
    {   32,   33,   30,   31,   74,   30,   31,   32},
    {   33,   56,   28,   30,   41,   29,   32,   32},
    {   33,   77,   52,   26,   29,   34,   30,   32},
    {   33,   37,   80,   41,   31,   34,   30,   32},
    {   32,   32,   33,   31,   59,   76,   28,   31},
    {   33,   31,   31,   30,   78,   40,   28,   32},
    {   33,   47,   28,   29,   53,   27,   31,   31},
    {   33,   61,   44,   28,   34,   32,   31,   31},
    {   32,   31,   34,   30,   26,   64,   76,   27},
    {   32,   31,   34,   29,   45,   86,   36,   29},
    {   33,   27,   34,   29,   73,   55,   25,   32},
    {   33,   33,   34,   30,   62,   33,   30,   31},
    {   32,   31,   34,   30,   30,   29,   58,   74},
    {   32,   31,   35,   29,   27,   53,   77,   35},
    {   32,   30,   36,   29,   40,   80,   44,   31},
    {   33,   28,   37,   30,   58,   60,   31,   33}
  },
  {
    {   32,   51,   27,   32,   27,   50,   29,   32},
    {   32,   95,   42,   29,   29,   42,   30,   32},
    {   32,   27,   99,   34,   31,   41,   29,   32},
    {   32,   34,   21,  104,   31,   42,   30,   32},
    {   32,   45,   30,   32,    9,   88,   40,   30},
    {   32,   77,   38,   30,    9,   76,   38,   30},
    {   32,   38,   78,   33,   14,   67,   37,   30},
    {   32,   30,   30,   87,   20,   59,   38,   31},
    {   33,   37,   32,   32,   27,   18,  106,   34},
    {   34,   44,   34,   31,   25,   17,  108,   31},
    {   36,   39,   45,   31,   24,   15,  108,   30},
    {   37,   31,   31,   54,   25,   14,  101,   32},
    {   36,   33,   32,   30,   29,   37,   13,  110},
    {   39,   32,   32,   29,   27,   37,   15,  108},
    {   44,   33,   31,   27,   25,   37,   16,  106},
    {   47,   30,   31,   32,   25,   34,   19,  102}
  },
  {
    {   32,   48,   35,   35,   47,   68,   31,   31},
    {   32,   33,   59,   40,   27,   71,   33,   30},
    {   32,   29,   47,   65,   24,   62,   37,   30},
    {   33,   33,   31,   81,   26,   50,   42,   32},
    {   32,   30,   40,   38,   30,   70,   55,   31},
    {   32,   20,   46,   50,   26,   55,   64,   31},
    {   33,   30,   29,   66,   25,   41,   72,   33},
    {   36,   34,   27,   69,   26,   31,   67,   39},
    {   33,   28,   36,   40,   30,   26,   85,   47},
    {   36,   27,   33,   50,   31,   20,   79,   53},
    {   43,   30,   26,   57,   28,   17,   67,   62},
    {   51,   27,   28,   55,   22,   23,   49,   70},
    {   38,   29,   32,   39,   28,   30,   22,  104},
    {   51,   31,   28,   43,   24,   31,   17,  102},
    {   69,   23,   30,   40,   15,   38,   10,   95},
    {   77,   13,   35,   38,    8,   43,    8,   90}
  },
  {
    {   32,   38,   32,   33,  101,   40,   29,   32},
    {   32,   40,   37,   32,  100,   36,   30,   32},
    {   32,   37,   46,   35,   94,   33,   30,   31},
    {   33,   34,   30,   62,   81,   35,   30,   31},
    {   32,   32,   33,   32,   22,  102,   39,   29},
    {   32,   31,   33,   33,   26,  104,   34,   28},
    {   33,   33,   33,   33,   31,  103,   32,   28},
    {   33,   32,   34,   36,   37,   94,   33,   28},
    {   32,   33,   32,   32,   34,   24,   99,   36},
    {   32,   34,   33,   33,   33,   30,   98,   32},
    {   33,   33,   34,   33,   31,   37,   95,   29},
    {   33,   33,   33,   36,   30,   46,   85,   31},
    {   32,   33,   32,   33,   30,   34,   23,  104},
    {   32,   34,   33,   33,   31,   32,   30,   98},
    {   32,   33,   34,   34,   31,   29,   39,   91},
    {   33,   33,   32,   37,   32,   30,   47,   82}
  },
  {
    {   32,   52,   48,   31,   38,   76,   26,   32},
    {   33,   19,   62,   50,   25,   50,   51,   31},
    {   33,   30,   20,   74,   29,   29,   54,   51},
    {   34,   35,   23,   56,   31,   25,   41,   76},
    {   33,   25,   38,   39,   28,   39,   83,   35},
    {   35,   28,   25,   47,   31,   23,   57,   74},
    {   37,   35,   22,   38,   31,   27,   30,  101},
    {   38,   32,   33,   29,   30,   31,   27,  103},
    {   34,   32,   27,   37,   32,   25,   41,   92},
    {   38,   33,   28,   32,   30,   31,   18,  111},
    {   40,   32,   33,   27,   29,   33,   18,  111},
    {   40,   32,   34,   27,   28,   33,   23,  105},
    {   35,   32,   30,   33,   31,   33,   20,  107},
    {   38,   31,   33,   30,   29,   33,   21,  106},
    {   40,   32,   33,   29,   29,   34,   22,  105},
    {   40,   32,   33,   30,   29,   34,   24,  101}
  },
  {
    {   32,   28,   31,   33,   92,   33,   30,   31},
    {   33,   30,   28,   33,   71,   26,   32,   30},
    {   33,   60,   26,   33,   47,   28,   33,   30},
    {   33,   63,   44,   36,   37,   31,   33,   30},
    {   33,   30,   31,   33,   43,   90,   33,   29},
    {   33,   28,   29,   34,   71,   71,   26,   30},
    {   33,   30,   26,   33,   86,   45,   28,   30},
    {   33,   38,   29,   32,   74,   32,   33,   29},
    {   33,   32,   30,   32,   29,   41,   95,   27},
    {   34,   31,   29,   33,   26,   71,   73,   22},
    {   34,   31,   29,   33,   37,   88,   46,   25},
    {   33,   32,   28,   34,   55,   75,   36,   28},
    {   34,   31,   30,   32,   33,   27,   43,   89},
    {   35,   32,   28,   33,   33,   23,   77,   59},
    {   34,   33,   28,   33,   30,   35,   91,   37},
    {   34,   34,   28,   34,   33,   53,   74,   31}
  },
  {
    {   33,   49,   26,   32,   26,   52,   28,   31},
    {   33,   71,   72,   24,   30,   32,   34,   31},
    {   32,   23,   70,   68,   32,   32,   32,   32},
    {   31,   33,   21,  106,   33,   32,   32,   33},
    {   34,   47,   32,   29,    5,   86,   44,   26},
    {   34,   44,   89,   28,   28,   37,   33,   30},
    {   32,   27,   46,   89,   33,   31,   31,   32},
    {   30,   33,   20,  107,   33,   33,   32,   33},
    {   35,   39,   42,   27,   26,   24,   92,   35},
    {   34,   27,   87,   43,   30,   34,   38,   31},
    {   31,   31,   32,  100,   32,   33,   30,   32},
    {   29,   32,   22,  106,   33,   33,   32,   33},
    {   35,   29,   47,   32,   32,   32,   17,  100},
    {   34,   24,   69,   60,   34,   33,   28,   44},
    {   31,   33,   31,   99,   32,   33,   32,   31},
    {   29,   33,   25,  103,   33,   33,   32,   35}
  }
};

ALIGN_DATA(MEMORY_ALIGN_DEF_SIZE, const uint8_t mipMatrix16x16[6][64][7]) =
{
  {
    {   42,   37,   33,   27,   44,   33,   35},
    {   71,   39,   34,   24,   36,   35,   36},
    {   77,   46,   35,   33,   30,   34,   36},
    {   64,   60,   35,   33,   31,   32,   36},
    {   49,   71,   38,   32,   32,   31,   36},
    {   42,   66,   50,   33,   31,   32,   36},
    {   40,   52,   67,   33,   31,   32,   35},
    {   38,   43,   75,   33,   32,   32,   35},
    {   56,   40,   33,   26,   43,   38,   36},
    {   70,   49,   34,   30,   28,   38,   38},
    {   65,   57,   36,   34,   28,   33,   39},
    {   59,   60,   39,   33,   30,   31,   38},
    {   55,   60,   43,   33,   30,   31,   38},
    {   51,   61,   47,   33,   30,   32,   37},
    {   46,   62,   51,   34,   30,   32,   37},
    {   42,   60,   55,   33,   31,   32,   37},
    {   60,   42,   34,   30,   37,   43,   38},
    {   68,   52,   35,   35,   22,   37,   40},
    {   62,   58,   37,   34,   28,   31,   40},
    {   58,   59,   41,   33,   30,   30,   39},
    {   56,   59,   44,   34,   30,   31,   38},
    {   53,   60,   45,   33,   30,   31,   38},
    {   49,   65,   45,   33,   30,   31,   38},
    {   45,   64,   47,   33,   31,   32,   38},
    {   59,   44,   35,   31,   34,   43,   41},
    {   66,   53,   36,   35,   25,   31,   43},
    {   61,   58,   38,   34,   29,   30,   40},
    {   59,   57,   41,   33,   30,   31,   39},
    {   57,   58,   43,   33,   30,   31,   39},
    {   54,   61,   43,   33,   31,   31,   39},
    {   51,   64,   43,   33,   31,   31,   39},
    {   48,   64,   45,   33,   32,   31,   39},
    {   57,   45,   35,   30,   35,   40,   44},
    {   65,   54,   37,   33,   33,   24,   44},
    {   63,   56,   38,   34,   30,   29,   39},
    {   61,   56,   41,   34,   30,   32,   39},
    {   58,   58,   42,   33,   31,   31,   39},
    {   54,   62,   41,   33,   31,   31,   39},
    {   51,   65,   42,   33,   31,   31,   39},
    {   48,   63,   43,   33,   32,   31,   39},
    {   55,   46,   35,   30,   36,   38,   47},
    {   65,   53,   37,   32,   36,   26,   40},
    {   65,   54,   38,   33,   31,   30,   38},
    {   63,   55,   39,   33,   30,   32,   38},
    {   59,   58,   40,   33,   31,   31,   39},
    {   54,   64,   40,   33,   31,   30,   40},
    {   49,   66,   40,   32,   32,   30,   41},
    {   48,   64,   42,   32,   32,   30,   41},
    {   54,   46,   35,   30,   34,   39,   49},
    {   64,   52,   36,   32,   34,   34,   35},
    {   65,   53,   37,   33,   32,   32,   37},
    {   63,   55,   38,   33,   31,   31,   39},
    {   59,   60,   38,   33,   31,   31,   40},
    {   54,   64,   38,   33,   32,   30,   40},
    {   49,   66,   39,   33,   32,   29,   41},
    {   47,   64,   42,   32,   33,   29,   42},
    {   51,   46,   35,   31,   33,   37,   54},
    {   61,   51,   36,   32,   33,   38,   36},
    {   63,   53,   37,   32,   32,   34,   37},
    {   62,   55,   37,   33,   32,   32,   39},
    {   58,   59,   37,   33,   32,   31,   40},
    {   53,   63,   38,   33,   32,   31,   40},
    {   49,   64,   40,   33,   33,   30,   41},
    {   46,   62,   42,   33,   33,   30,   42}
  },
  {
    {   39,   34,   33,   58,   44,   31,   32},
    {   60,   38,   32,   40,   51,   30,   31},
    {   73,   49,   31,   39,   48,   32,   31},
    {   60,   73,   30,   39,   46,   33,   32},
    {   43,   87,   35,   38,   45,   33,   32},
    {   35,   78,   54,   36,   45,   33,   32},
    {   33,   47,   86,   35,   44,   33,   32},
    {   31,   17,  114,   34,   44,   34,   33},
    {   43,   37,   32,   53,   70,   30,   31},
    {   53,   50,   30,   42,   72,   31,   30},
    {   52,   66,   30,   39,   70,   32,   30},
    {   46,   78,   35,   37,   68,   34,   30},
    {   43,   75,   48,   37,   66,   34,   30},
    {   40,   62,   68,   35,   65,   35,   30},
    {   33,   37,   97,   33,   62,   37,   31},
    {   26,   14,  122,   32,   59,   38,   33},
    {   40,   39,   33,   34,   87,   37,   30},
    {   45,   54,   32,   34,   84,   41,   29},
    {   41,   70,   35,   33,   83,   40,   29},
    {   37,   73,   44,   32,   82,   40,   30},
    {   37,   65,   60,   31,   81,   41,   29},
    {   35,   48,   82,   30,   79,   43,   29},
    {   28,   27,  108,   28,   76,   45,   30},
    {   19,   11,  127,   27,   70,   46,   32},
    {   38,   40,   34,   27,   73,   62,   28},
    {   39,   54,   35,   30,   73,   62,   28},
    {   33,   65,   41,   29,   75,   59,   28},
    {   30,   65,   53,   27,   76,   58,   29},
    {   29,   53,   72,   26,   77,   58,   29},
    {   27,   35,   95,   24,   77,   60,   28},
    {   19,   19,  117,   23,   74,   61,   30},
    {    9,   16,  127,   23,   68,   60,   34},
    {   35,   40,   35,   29,   44,   89,   30},
    {   33,   51,   39,   29,   49,   86,   30},
    {   28,   57,   49,   28,   53,   83,   30},
    {   24,   52,   65,   26,   56,   82,   30},
    {   22,   39,   86,   24,   58,   82,   30},
    {   18,   22,  108,   23,   59,   82,   31},
    {   10,   13,  125,   22,   58,   80,   33},
    {    0,   19,  127,   22,   56,   74,   40},
    {   33,   40,   36,   31,   28,   90,   45},
    {   29,   46,   44,   29,   31,   92,   43},
    {   24,   45,   58,   28,   34,   91,   43},
    {   19,   37,   78,   26,   37,   91,   43},
    {   15,   22,   99,   25,   38,   91,   42},
    {   11,   11,  118,   24,   39,   90,   44},
    {    2,   11,  127,   23,   41,   85,   48},
    {    0,   17,  127,   23,   43,   75,   55},
    {   31,   37,   39,   30,   28,   54,   82},
    {   27,   37,   52,   28,   30,   58,   79},
    {   22,   30,   70,   27,   32,   58,   79},
    {   15,   19,   91,   26,   33,   58,   79},
    {   10,    8,  111,   25,   34,   58,   79},
    {    5,    2,  125,   25,   35,   57,   80},
    {    0,    9,  127,   25,   36,   53,   84},
    {    0,   13,  127,   25,   39,   47,   88},
    {   28,   29,   46,   28,   39,    2,  123},
    {   24,   24,   62,   27,   41,    1,  125},
    {   19,   14,   81,   25,   43,    0,  126},
    {   13,    4,  101,   24,   44,    0,  127},
    {    6,    0,  116,   23,   45,    0,  127},
    {    0,    0,  126,   23,   45,    1,  127},
    {    0,    4,  127,   25,   44,    2,  127},
    {    0,    9,  127,   25,   44,    3,  127}
  },
  {
    {   30,   32,   32,   42,   34,   32,   32},
    {   63,   26,   34,   16,   38,   32,   32},
    {   98,   26,   34,   25,   34,   33,   32},
    {   75,   61,   30,   31,   32,   33,   32},
    {   36,   94,   32,   30,   33,   32,   32},
    {   26,   76,   58,   30,   33,   32,   32},
    {   30,   39,   91,   31,   32,   33,   31},
    {   32,   23,  105,   32,   32,   32,   32},
    {   34,   30,   33,   31,   52,   29,   32},
    {   66,   24,   34,   11,   41,   33,   32},
    {   97,   28,   34,   24,   34,   33,   32},
    {   71,   65,   30,   30,   32,   33,   32},
    {   34,   92,   35,   30,   33,   32,   32},
    {   26,   70,   64,   29,   34,   32,   32},
    {   30,   37,   94,   30,   33,   32,   31},
    {   32,   23,  105,   31,   33,   33,   31},
    {   37,   29,   33,    8,   79,   27,   32},
    {   71,   22,   35,    5,   50,   32,   32},
    {   98,   29,   34,   23,   34,   34,   32},
    {   66,   70,   30,   31,   31,   33,   32},
    {   31,   92,   38,   30,   33,   32,   32},
    {   26,   66,   68,   29,   34,   32,   31},
    {   30,   34,   97,   30,   34,   33,   31},
    {   31,   22,  106,   30,   34,   33,   31},
    {   40,   28,   34,    0,   76,   46,   28},
    {   76,   21,   35,    0,   55,   35,   32},
    {   97,   32,   34,   21,   37,   33,   33},
    {   61,   75,   29,   30,   32,   32,   32},
    {   29,   92,   40,   29,   33,   32,   32},
    {   26,   62,   73,   29,   34,   32,   31},
    {   29,   32,   99,   30,   34,   33,   30},
    {   31,   22,  107,   30,   34,   33,   31},
    {   42,   27,   34,    1,   48,   79,   25},
    {   80,   20,   35,    0,   48,   47,   31},
    {   94,   36,   32,   17,   40,   33,   33},
    {   55,   80,   29,   27,   35,   31,   32},
    {   27,   90,   43,   28,   34,   32,   31},
    {   26,   58,   76,   29,   33,   33,   30},
    {   29,   30,  101,   29,   34,   34,   30},
    {   31,   21,  108,   29,   35,   34,   30},
    {   44,   26,   34,    6,   30,   80,   40},
    {   81,   21,   35,    0,   41,   52,   35},
    {   90,   41,   31,   14,   41,   35,   33},
    {   51,   82,   29,   24,   37,   32,   32},
    {   27,   87,   47,   27,   35,   32,   31},
    {   26,   54,   79,   29,   34,   33,   30},
    {   29,   29,  102,   28,   34,   33,   30},
    {   31,   21,  108,   28,   35,   33,   31},
    {   47,   26,   34,    7,   34,   44,   75},
    {   80,   24,   34,    0,   41,   41,   50},
    {   84,   45,   31,   12,   40,   36,   36},
    {   49,   81,   31,   22,   37,   33,   32},
    {   28,   81,   51,   26,   35,   33,   31},
    {   28,   51,   81,   28,   34,   33,   30},
    {   29,   30,  101,   28,   35,   33,   31},
    {   31,   22,  107,   28,   35,   33,   32},
    {   48,   27,   34,   10,   40,   16,   97},
    {   75,   27,   34,    3,   42,   26,   66},
    {   77,   47,   33,   12,   40,   32,   43},
    {   49,   75,   36,   21,   37,   33,   35},
    {   32,   72,   55,   25,   36,   33,   32},
    {   30,   49,   81,   27,   35,   33,   31},
    {   30,   32,   98,   28,   35,   32,   32},
    {   31,   24,  104,   28,   35,   32,   33}
  },
  {
    {   36,   29,   33,   43,   47,   29,   31},
    {   74,   20,   35,   19,   47,   34,   32},
    {   92,   35,   32,   29,   31,   40,   34},
    {   53,   80,   26,   33,   28,   36,   37},
    {   24,   91,   41,   31,   31,   31,   38},
    {   25,   57,   74,   31,   32,   30,   37},
    {   32,   28,   99,   32,   32,   29,   36},
    {   34,   20,  105,   33,   32,   30,   35},
    {   50,   26,   34,   33,   74,   30,   31},
    {   75,   28,   33,   23,   46,   47,   33},
    {   64,   58,   29,   30,   26,   46,   40},
    {   31,   85,   37,   31,   27,   33,   44},
    {   22,   67,   64,   30,   31,   28,   42},
    {   29,   35,   93,   31,   32,   27,   40},
    {   33,   20,  105,   32,   33,   27,   37},
    {   34,   19,  106,   33,   32,   29,   36},
    {   51,   29,   33,   25,   72,   51,   30},
    {   61,   42,   31,   30,   31,   60,   39},
    {   40,   70,   34,   32,   24,   41,   50},
    {   22,   72,   54,   30,   31,   27,   50},
    {   25,   44,   83,   30,   33,   25,   44},
    {   32,   23,  102,   32,   33,   26,   40},
    {   34,   18,  107,   32,   33,   28,   37},
    {   34,   19,  105,   33,   32,   30,   35},
    {   45,   35,   32,   30,   39,   79,   33},
    {   43,   53,   33,   35,   24,   53,   55},
    {   27,   67,   45,   32,   29,   27,   61},
    {   22,   53,   72,   30,   33,   22,   52},
    {   28,   31,   95,   31,   33,   25,   43},
    {   32,   20,  105,   32,   33,   27,   38},
    {   34,   18,  107,   32,   32,   29,   36},
    {   34,   20,  105,   33,   31,   31,   35},
    {   38,   40,   32,   35,   23,   72,   54},
    {   31,   55,   39,   34,   29,   32,   73},
    {   22,   57,   60,   31,   35,   18,   64},
    {   25,   39,   86,   31,   35,   22,   49},
    {   30,   24,  101,   32,   33,   27,   40},
    {   33,   19,  106,   32,   32,   30,   36},
    {   34,   18,  107,   33,   31,   31,   35},
    {   34,   20,  104,   33,   31,   32,   34},
    {   33,   42,   35,   34,   28,   39,   82},
    {   26,   51,   50,   33,   34,   18,   80},
    {   23,   46,   74,   31,   35,   20,   59},
    {   27,   32,   93,   32,   34,   26,   44},
    {   31,   22,  103,   32,   32,   30,   37},
    {   33,   19,  106,   33,   31,   31,   35},
    {   34,   19,  106,   33,   31,   32,   34},
    {   35,   21,  103,   34,   31,   32,   34},
    {   29,   41,   41,   33,   34,   20,   92},
    {   24,   44,   62,   34,   35,   18,   73},
    {   24,   37,   83,   34,   33,   25,   52},
    {   28,   28,   97,   33,   32,   30,   40},
    {   32,   23,  103,   33,   31,   32,   36},
    {   34,   20,  105,   34,   30,   33,   34},
    {   35,   20,  104,   34,   30,   33,   33},
    {   35,   22,  102,   34,   30,   33,   34},
    {   27,   38,   51,   34,   34,   20,   86},
    {   26,   37,   71,   35,   34,   24,   64},
    {   27,   33,   87,   35,   32,   30,   47},
    {   30,   28,   96,   34,   31,   32,   39},
    {   32,   24,  100,   35,   30,   32,   36},
    {   34,   23,  101,   34,   30,   33,   34},
    {   35,   23,  101,   34,   30,   32,   34},
    {   34,   24,   99,   35,   30,   33,   34}
  },
  {
    {   39,   30,   31,   67,   33,   34,   31},
    {   72,   21,   32,   43,   39,   33,   31},
    {  100,   23,   32,   35,   39,   34,   31},
    {   75,   63,   24,   32,   38,   34,   32},
    {   32,   98,   26,   29,   37,   35,   32},
    {   22,   77,   55,   29,   36,   35,   31},
    {   31,   37,   90,   31,   35,   35,   32},
    {   35,   22,  100,   33,   33,   36,   33},
    {   47,   29,   32,   74,   54,   32,   31},
    {   71,   24,   32,   60,   50,   36,   30},
    {   86,   31,   30,   46,   48,   37,   30},
    {   65,   63,   25,   34,   46,   39,   30},
    {   33,   85,   32,   28,   43,   40,   30},
    {   26,   64,   60,   27,   39,   41,   30},
    {   33,   33,   87,   29,   35,   41,   31},
    {   37,   23,   93,   32,   33,   41,   32},
    {   41,   32,   32,   45,   84,   32,   32},
    {   55,   31,   32,   50,   70,   40,   30},
    {   62,   37,   31,   45,   61,   45,   29},
    {   53,   55,   31,   36,   55,   48,   29},
    {   38,   63,   40,   29,   48,   50,   28},
    {   34,   49,   60,   27,   43,   51,   29},
    {   38,   30,   78,   28,   38,   50,   31},
    {   40,   24,   83,   30,   36,   48,   33},
    {   35,   33,   33,   29,   75,   58,   29},
    {   39,   35,   33,   34,   68,   59,   29},
    {   41,   39,   34,   36,   61,   62,   29},
    {   41,   43,   37,   33,   54,   64,   28},
    {   41,   43,   45,   30,   48,   65,   29},
    {   42,   36,   56,   27,   44,   63,   30},
    {   42,   30,   65,   27,   41,   60,   33},
    {   42,   28,   68,   28,   37,   56,   36},
    {   33,   34,   33,   31,   42,   88,   30},
    {   31,   36,   34,   31,   44,   84,   31},
    {   31,   37,   35,   32,   43,   83,   31},
    {   35,   35,   39,   32,   40,   82,   31},
    {   40,   32,   44,   31,   38,   81,   31},
    {   44,   30,   48,   30,   37,   78,   33},
    {   44,   30,   52,   28,   37,   72,   36},
    {   43,   30,   55,   29,   35,   66,   40},
    {   32,   33,   33,   34,   25,   85,   48},
    {   30,   34,   34,   33,   25,   88,   44},
    {   30,   34,   36,   34,   25,   90,   41},
    {   33,   32,   38,   34,   25,   90,   40},
    {   38,   29,   41,   34,   26,   88,   40},
    {   42,   29,   41,   33,   27,   85,   41},
    {   43,   30,   42,   31,   28,   80,   43},
    {   42,   31,   45,   31,   30,   72,   47},
    {   32,   33,   33,   33,   26,   54,   79},
    {   31,   32,   34,   35,   20,   68,   68},
    {   32,   32,   35,   36,   17,   76,   62},
    {   34,   31,   36,   36,   17,   79,   59},
    {   37,   29,   37,   36,   18,   78,   58},
    {   39,   29,   37,   35,   20,   77,   58},
    {   41,   30,   37,   34,   22,   74,   58},
    {   40,   31,   40,   32,   26,   68,   59},
    {   33,   31,   34,   33,   29,   31,   98},
    {   34,   30,   34,   35,   23,   45,   88},
    {   34,   31,   34,   36,   20,   54,   82},
    {   35,   31,   34,   36,   18,   59,   78},
    {   36,   31,   34,   37,   19,   60,   76},
    {   38,   30,   34,   36,   20,   61,   74},
    {   39,   31,   35,   35,   22,   60,   73},
    {   39,   31,   37,   34,   24,   59,   71}
  },
  {
    {   30,   33,   32,   55,   32,   32,   32},
    {   47,   30,   31,   29,   36,   32,   32},
    {   81,   28,   32,   28,   34,   32,   32},
    {   85,   46,   29,   32,   32,   33,   32},
    {   54,   82,   26,   32,   32,   33,   32},
    {   30,   90,   38,   31,   32,   33,   32},
    {   30,   56,   73,   31,   33,   32,   32},
    {   37,   21,  102,   32,   32,   32,   32},
    {   33,   32,   31,   68,   39,   31,   31},
    {   38,   32,   31,   43,   34,   33,   31},
    {   63,   30,   31,   29,   34,   32,   32},
    {   82,   37,   30,   29,   33,   32,   32},
    {   71,   63,   27,   31,   32,   33,   32},
    {   44,   86,   30,   30,   33,   33,   32},
    {   33,   72,   55,   30,   32,   32,   31},
    {   37,   37,   86,   31,   32,   33,   31},
    {   34,   33,   32,   60,   61,   29,   32},
    {   36,   33,   31,   56,   38,   32,   31},
    {   51,   30,   31,   38,   33,   33,   32},
    {   75,   31,   31,   30,   33,   33,   32},
    {   80,   47,   29,   30,   32,   33,   31},
    {   60,   73,   27,   30,   33,   33,   31},
    {   41,   78,   41,   30,   33,   32,   31},
    {   38,   53,   68,   30,   32,   33,   31},
    {   33,   33,   32,   43,   77,   35,   30},
    {   35,   33,   31,   55,   54,   29,   32},
    {   43,   32,   31,   46,   39,   31,   32},
    {   64,   30,   31,   35,   34,   33,   32},
    {   79,   37,   30,   31,   32,   33,   31},
    {   73,   57,   28,   30,   32,   33,   31},
    {   54,   73,   33,   30,   32,   33,   31},
    {   43,   64,   52,   30,   32,   33,   31},
    {   33,   33,   32,   34,   68,   58,   28},
    {   34,   33,   31,   45,   70,   33,   31},
    {   38,   33,   31,   48,   52,   29,   32},
    {   54,   31,   31,   40,   39,   31,   32},
    {   73,   32,   31,   34,   34,   33,   31},
    {   77,   45,   29,   31,   32,   32,   32},
    {   65,   63,   30,   31,   31,   33,   31},
    {   51,   66,   42,   30,   32,   33,   31},
    {   33,   32,   32,   34,   44,   81,   31},
    {   34,   33,   31,   38,   66,   52,   28},
    {   36,   33,   30,   44,   62,   34,   31},
    {   47,   31,   31,   43,   48,   30,   32},
    {   64,   31,   31,   38,   38,   32,   32},
    {   75,   38,   30,   33,   34,   32,   32},
    {   71,   53,   30,   31,   32,   33,   32},
    {   59,   61,   37,   30,   32,   33,   32},
    {   33,   32,   31,   35,   31,   71,   54},
    {   34,   33,   31,   37,   49,   70,   33},
    {   36,   33,   31,   41,   60,   48,   30},
    {   43,   32,   31,   43,   54,   35,   31},
    {   56,   31,   31,   40,   44,   32,   32},
    {   68,   35,   30,   36,   37,   32,   32},
    {   70,   45,   30,   33,   34,   33,   32},
    {   63,   55,   35,   31,   33,   33,   32},
    {   33,   32,   31,   33,   34,   36,   87},
    {   34,   32,   31,   36,   38,   62,   52},
    {   36,   33,   31,   39,   50,   57,   36},
    {   41,   33,   31,   41,   53,   43,   33},
    {   50,   33,   31,   41,   48,   36,   32},
    {   59,   35,   31,   37,   41,   34,   32},
    {   65,   42,   31,   35,   36,   33,   32},
    {   62,   49,   35,   33,   34,   34,   33}
  }

上一篇:H.266/VVC-VTM代码学习-帧内预测07-MIP模式(1)initIntraMip函数初始化Mip
下一篇:H.266/VVC-VTM代码学习-帧内预测09-色度预测的CCLM模式(1)xGetLumaRecPixels函数对重建亮度块下采样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值