帧内预测:xPredIntraPlanar函数

来源:互联网 发布:wpf和windows窗体 编辑:程序博客网 时间:2024/06/05 18:15
xPredIntraPlanar
/** Function for deriving planar intra prediction.  * \param pSrc pointer to reconstructed sample array  * \param srcStride the stride of the reconstructed sample array  * \param rpDst reference to pointer for the prediction sample array  * \param dstStride the stride of the prediction sample array  * \param width the width of the block  * \param height the height of the block  *  * This function derives the prediction samples for planar mode (intra coding).  */  Void TComPrediction::xPredIntraPlanar( Int* pSrc, Int srcStride, Pel* rpDst, Int dstStride, UInt width, UInt height )  {    assert(width == height);      Int k, l, bottomLeft, topRight;    Int horPred;    Int leftColumn[MAX_CU_SIZE], topRow[MAX_CU_SIZE], bottomRow[MAX_CU_SIZE], rightColumn[MAX_CU_SIZE];    UInt blkSize = width;    UInt offset2D = width;    UInt shift1D = g_aucConvertToBit[ width ] + 2;  //!< 加2才是得到实际的宽度取Log2的结果     UInt shift2D = shift1D + 1;      // Get left and above reference column and row    for(k=0;k<blkSize+1;k++)    {      topRow[k] = pSrc[k-srcStride];   //!< p[x][-1], x = 0, 1, 2, ..., nT,即上边界      leftColumn[k] = pSrc[k*srcStride-1]; //!< p[-1][y], y = 0, 1, 2, ..., nT,即左边界    }      // Prepare intermediate variables used in interpolation    bottomLeft = leftColumn[blkSize]; //!< 左下边界    topRight   = topRow[blkSize]; //!< 右上边界    for (k=0;k<blkSize;k++)    {      bottomRow[k]   = bottomLeft - topRow[k];      rightColumn[k] = topRight   - leftColumn[k];      topRow[k]      <<= shift1D;      leftColumn[k]  <<= shift1D;    }<span style="color:#000000"> //! 上边那个循环过程参考下图</span>  


原创粉丝点击