這個函數主要是用來計算鎮內預測的一個PU單元的DC值
//psrc爲預測單元的第一個像素,isrcstride爲政府圖片的寬度,pDcVal爲返回的DC值
Pel TComPrediction::predIntraGetPredValDC( const Pel* pSrc, Int iSrcStride, UInt iWidth, UInt iHeight, ChannelType channelType, ChromaFormat format, Bool bAbove, Bool bLeft )
{assert(iWidth > 0 && iHeight > 0);
Int iInd, iSum = 0;
Pel pDcVal;
//計算預測單元above的像素值總和
if (bAbove)
{
for (iInd = 0;iInd < iWidth;iInd++)
{
iSum += pSrc[iInd-iSrcStride];
}
}
//計算預測單元左半部分的值總和
if (bLeft){
for (iInd = 0;iInd < iHeight;iInd++)
{
iSum += pSrc[iInd*iSrcStride-1];
}
}
//算這些值的平均值
if (bAbove && bLeft)
{
pDcVal = (iSum + iWidth) / (iWidth + iHeight);
}
else if (bAbove)
{
pDcVal = (iSum + iWidth/2) / iWidth;
}
else if (bLeft)
{
pDcVal = (iSum + iHeight/2) / iHeight;
}
else
{
pDcVal = pSrc[-1]; // Default DC value already calculated and placed in the prediction array if no neighbors are available
}
return pDcVal;
}