x265探索与研究(十):encodeSlice()函数、encodeCTU()函数、encodeCU()函数与finishCU()函数分析
encodeSlice()函数、encodeCTU()函数、encodeCU()函数与finishCU()函数都是编码的重要函数,根据函数命名均可得知其各自的功能。下面首先给出这几个函数之间的调用关系图。
1、encodeSlice()函数
encodeSlice()函数位于frameencoder.cpp中,其主要功能就是遍历当前Slice中的CTU,并调用encodeCTU()函数对每个CTU进行进一步地处理,对应的代码分析如下:
/*=============================================================*/
/*
====== Analysed by: RuiDong Fang
====== Csdn Blog: http://blog.csdn.net/frd2009041510
====== Date: 2016.04.19
====== Funtion: encodeSlice()函数
*/
/*=============================================================*/
void FrameEncoder::encodeSlice()
{
Slice* slice = m_frame->m_encData->m_slice; //获取当前slice,通常一帧中包括很多Slice,但默认情况一帧即一个Slice
const uint32_t widthInLCUs = slice->m_sps->numCuInWidth;
// printf("widthInLCUs=%d",widthInLCUs);
const uint32_t lastCUAddr = (slice->m_endCUAddr + NUM_4x4_PARTITIONS - 1) / NUM_4x