版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_28446365/article/details/80422283
VTM1版本中目前只加入了QTBTTT结构。
主线代码流程:
- int main(int argc, char* argv[])调用pcEncApp->encode();
- Void EncApp::encode()调用m_cEncLib.encode( bEos, flush ? 0 : &orgPic, flush ? 0 : &trueOrgPic, snrCSC, recBufList, iNumEncoded );
- Void EncLib::encode()调用 m_cGOPEncoder.compressGOP( m_iPOCLast, m_iNumPicRcvd, m_cListPic, rcListPicYuvRecOut, false, false, snrCSC, m_printFrameMSE );
- Void EncGOP::compressGOP()调用m_pcSliceEncoder->compressSlice ( pcPic, false, false );
Void EncSlice::compressSlice()调用encodeCtus( pcPic, bCompressEntireSlice, bFastDeltaQP, startCtuTsAddr, boundingCtuTsAddr, m_pcLib );
void EncSlice::encodeCtus()调用m_pcCuEncoder->compressCtu( cs, ctuArea, ctuRsAddr, prevQP, currQP ); - void EncCu::compressCtu()调用xCompressCU( tempCS, bestCS, *partitioner );
- void EncCu::xCompressCU()调用xCheckModeSplit( tempCS, bestCS, partitioner, currTestMode );
xCheckModeSplit( tempCS, bestCS, partitioner, currTestMode )为VTM QTBTTT结构主要实现处。