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>
![](https://img-my.csdn.net/uploads/201211/30/1354244429_4774.jpg)