1.术语
- IPP:Inter plane prediction
- CCP:Cross component predition
CCLM:Cross-component linear model prediction
CfL:Chroma from luma
2.背景
因为原来发的paper是基于RGB编码,看过相关性的paper;也就在那段时间,range extension software引入了CCP。
最早是RGB编码中的inter plane prediction,由Woo-Shik Kim搞出来的。265时代,被引入HEVC range extension,技术命名为cross component prediction,至此主要还是支持444 format;到了266、av1时代,JEM和BMS,改名为cross-component linear model prediction,增加了下采样对YUV420 format的支持,而AV1中叫chroma from luma,由Mozilla贡献;后面的提案又引入的5种enhanced linear model,在最近的会议中,enhanced linear model并没有被接受,仅保留CCLM。
但换汤不换药,最根源的思想还是在去除分量间的相关性。
E0077:enhanced linear model
K0190:only keep CCLM
3.算法详解
4.代码
预测流程
//! 预测流程
//! 调用1:编码:模式预测
//! 调用2:编码:实际编码
//! 调用3:解码:重构
...
//===== get prediction signal =====
#if COM16_C806_LMCHROMA
if( uiChFinalMode == LM_CHROMA_IDX )///< 使用cclm mode
{
predLMIntraChroma(rTu, compID, piPred, uiStride, uiWidth, uiHeight);
}
else ///< 使用正常intra mode
{
#endif
predIntraAng( compID, uiChFinalMode, piOrg, uiStride, piPred, uiStride, rTu, bUseFilteredPredictions );
#if COM16_C806_LMCHROMA
if( compID == COMPONENT_Cr && pcCU->getSlice()->getSPS()->getUseLMChroma() )
{ ///< Cb-to-Cr
addCrossColorResi( rTu, compID, piPred, uiStride, uiWidth, uiHeight, pcResiYuv->getAddr( COMPONENT_Cb, uiAbsPartIdx ), pcResiYuv->getStride(COMPONENT_Cb) );
}
}
#endif
...
预测流程之Luma-to-Chroma
Void TComPrediction::predLMIntraChroma( TComTU& rTu, const ComponentID compID, Pel* pPred, UInt uiPredStride, UInt uiCWidth, UInt uiCHeight )
{
// LLS parameters estimation -->
Int a, b, iShift;
xGetLMParameters( rTu, compID, uiCWidth, uiCHeight, 0, a, b, iShift );
// get prediction -->
Int iLumaStride = m_iLumaRecStride;
Pel *pLuma = m_pLumaRecBuffer + iLumaStride +