HEVC Study One(基于HM14.0平台)

HM14.0下载地址:http://download.csdn.net/detail/frd2009041510/7707363

一、程序从TAppEncoder中的encmain.cpp开始,在主程序中按顺序做了以下几件事情:

①、创建类cTAppEncTop,为TAppEncTop.cpp做准备,同时在TAppEncTop.cpp中初始化m_iFrameRcvd(number of received frames)、m_totalBytes和m_essentialBytes(其实,利用Step Into调试可以发现里面涉及众多的初始化工作,不详)。

②、打印相关信息,如软件版本等,见下图。

HEVC Study One(基于HM14.0平台)

③、解析配置文件

HEVC Study One(基于HM14.0平台)

④、调用编码函数cTAppEncTop.encode()(这里有个小插曲,即编码时间从此刻开始计时)。

TAppEncoderencmain.cpp中剩余部分都无关紧要,也就是结束编码时间和破坏类等琐事。


二、接着程序进入TAppEncTop.cpp中的TAppEncTop::encode(),主要按顺序完成了以下几件事情:

①、利用fstream构造命名文件并指定模式(这里涉及一坨C文件,不详)。

②、图像YUV缓冲区类创建: 

TComPicYuv*       pcPicYuvOrg = new TComPicYuv;

TComPicYuv*       pcPicYuvRec = NULL;

具体细节在TComPicYuv.cppTComPicYuv.h中,very important.

③、初始化内部类和成员变量: 

xInitLibCfg();( initialize internal variables 

xCreateLib();( create files & encoder class 

xInitLib(m_isField);( initialize encoder class 

 

④、初始化编码循环变量iNumEncoded和bEos;

⑤、分配原始YUV缓冲区;

、进入编码循环,利用bEos控制(最关键部分);

⑦、释放原始YUV缓冲区;

⑧、释放在编码类中使用的缓冲区;

⑨、释放缓冲区和类;

⑩、打印总结信息(Bitrate、PSNR、编码时间等)。


待续。。。。。。


上一篇:x265探索与研究(七):encode()函数


下一篇:HEVC Study Two(基于HM14.0平台)--如何在HEVC中加入背景建模技术(一)