1.EncGOP.Cpp中第2232行的createTempBuffers()函数
查找到的解读为:创建预测值和残差值的buffer
现在自己来读一下
void Picture::createTempBuffers( const unsigned _maxCUSize )
{
#if KEEP_PRED_AND_RESI_SIGNALS
const Area a( Position{ 0, 0 }, lumaSize() );
#else
const Area a = m_ctuArea.Y();
#endif
M_BUFS( jId, PIC_PREDICTION ).create( chromaFormat, a, _maxCUSize );
M_BUFS( jId, PIC_RESIDUAL ).create( chromaFormat, a, _maxCUSize );
if (cs)
{
cs->rebindPicBufs();
}
}
area实例化一个对象,接收m_ctuArea.Y()传来的CTU块的位置和长宽。Y()什么意思还不清楚,查看声明有y(),cb(),cr(),推测这里是CTU亮度分量的意思
两个M_BUFS()推测:create()函数为这个色度格式,位置和长宽,最大允许CU大小形成的CTU分配了内存空间。create原始函数中还有margin,alignment,scaleChromaMargin(色度缩放差额?)三个参数。
PIC_PREDICTION 和PIC_RESIDUAL 代表这个缓存空间所存储的值的类型,分别是预测值和残差值。JId不知道是什么,之后再看。