上一篇是简单的对top层的encode函数做了阅读,接下来进入其中调用的、更为具体的encode函数,对其做解读。
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;//编码帧数为0
for (Int fieldNum=0; fieldNum<2; fieldNum++)//当场数量小于2时
{
if (pcPicYuvOrg)
{
/* -- field initialization场帧初始化 -- */
const Bool isTopField=isTff==(fieldNum==0);//顶场和底场的部分,忽略不看
TComPic *pcField;
xGetNewPicBuffer( pcField );
pcField->setReconMark (false); // where is this normally?
if (fieldNum==1) // where is this normally?
{
TComPicYuv* rpcPicYuvRec;
// org. buffer
if ( rcListPicYuvRecOut.siz