在之前的学习中进行了TappENcTOp函数中的encode函数进行了代码解读,下面对它调用的TEncTop::encode函数进行跟踪解读
函数TEncTop::encode的主要作用是为GOP压缩之前做一些准备工作,包括创建当前图像缓冲区、设定QP是否自适应、根据码率控制模式来确定是否需要先初始化GOP,然后调用TEncGop::compressGOP来压缩GOP。
其为GOP压缩之前做一些准备工作,包括创建当前图像缓冲区、设定QP是否自适应、根据码率控制模式来确定是否需要先初始化GOP,然后调用TEncGop::compressGOP来压缩GOP。
代码如下:
Void TEncTop::encode(Bool flush, TComPicYuv* pcPicYuvOrg, TComPicYuv* pcPicYuvTrueOrg, const InputColourSpaceConversion snrCSC, TComList<TComPicYuv*>& rcListPicYuvRecOut, std::list<AccessUnit>& accessUnitsOut, Int& iNumEncoded, Bool isTff)
{
iNumEncoded = 0;//已编码的帧数为零
for (Int fieldNum=0; fieldNum<2; fieldNum++) //当场数量小于2时进行循环
{
if (pcPicYuvOrg)
{
/* -- field initialization --场帧初始化 */
const Bool isTopField=isTff==(fieldNum==0); //顶场和底场的部分,可忽略不看
TComPic *pcField;
xGetNew