320
人物
HEVC Study One(基於HM14.0平台)
HM14.0下載地址:https://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調試可以發現裏麵涉及眾多的初始化工作,不詳)。
②、打印相關信息,如軟件版本等,見下圖。
③、解析配置文件

④、調用編碼函數cTAppEncTop.encode()(這裏有個小插曲,即編碼時間從此刻開始計時)。
TAppEncoder的encmain.cpp中剩餘部分都無關緊要,也就是結束編碼時間和破壞類等瑣事。
二、接著程序進入TAppEncTop.cpp中的TAppEncTop::encode(),主要按順序完成了以下幾件事情:
①、利用fstream構造命名文件並指定模式(這裏涉及一坨C文件,不詳)。
②、圖像YUV緩衝區類創建:
TComPicYuv* pcPicYuvOrg = new TComPicYuv;
TComPicYuv* pcPicYuvRec = NULL;
具體細節在TComPicYuv.cpp和TComPicYuv.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、編碼時間等)。
待續。。。。。。
最後更新:2017-04-03 05:40:13