Intra Mode Coding With 4-tap Interpolation Filter

来源:互联网 发布:ccer数据库 豆掰 编辑:程序博客网 时间:2024/05/21 19:25
  • HEVC帧内预测滤波回顾

    • 参考标准文档的8.4.4.2.3,对帧内预测的预测参考值插值滤波
    • 当满足条件:帧内预测模式为0或者PU为4x4时,则不做滤波。否则需要做滤波。对不同大小的PU,不同的方向,进行不同的滤波操作,且滤波器采用3-tap (121)/4的线性插值滤波具体可参考标准文档。
    • 参考文献:http://blog.csdn.net/shaqoneal/article/details/39378973
  • JEVT的4-tap插值滤波

    • 对4x4,8x8的PU采用cubic插值滤波,对大于等于16x16的PU采用高斯插值滤波
    • 对于水平(18)、垂直(50)、DC模式(1)、方向模式2、方向模式34、方向模式66不采用,其余模式都采用
    • 针对每一个预测模式,都有特定的滤波参数,参见数组g_aiIntraCubicFilter[32][4]g_aiIntraGaussFilter
    • SPS内包含标识m_useIntra4TapFilter,即在sps level可决策是否使用4-tap插值滤波,通测情况下打开
    • 代码具体可见,xPredIntraAng函数
      //关键代码 
      p[1] = refMain[refMainIndex];
      p[2] = refMain[refMainIndex+1];
      p[0] = x==0 ? p[1] : refMain[refMainIndex-1];
      p[3] = x==(width-1) ? p[2] : refMain[refMainIndex+2];
      //p:ref sample
      //f:filter parameter
      //pDst: the final ref sample
      pDst[y*dstStride+x] = (Pel)( ( f[0]*p[0] + f[1]*p[1] + f[2]*p[2] + f[3]*p[3] + 128 ) >> 8 );