天天看點

HEVC-編碼器入口

1.encmain.cpp:

 //call encoding function調用編碼函數===>編碼函數入口!!!

 cTAppEncTop.encode(); 


 2.TAppEncTop.cpp:

 //call encoding function for one frame每讀入一幀YUV調用一次!!!

 m_cTEncTop.encode( bEos, flush ? 0 : pcPicYuvOrg, m_cListPicYuvRec, outputAccessUnits, iNumEncoded );


 3.TEncTop.cpp:

 //compress GOP幀編碼相關函數!!!

 m_cGOPEncoder.compressGOP(m_iPOCLast, m_iNumPicRcvd, m_cListPic, rcListPicYuvRecOut, accessUnitsOut);


 4.TEnGOP:cpp:

 //在最好的lamuda下進行編碼。對每個sice進行編碼!!!

 m_pcSliceEncoder->compressSlice   ( pcPic );


 5.TEncSlice.cpp:

 //run CU encoder 進行CU編碼!!!

 m_pcCuEncoder->compressCU( pcCU );


 6.TEncCu.cpp:

 //analysis of CU  擷取最佳PU為m_ppcBestCU[0]!!!

 xCompressCU( m_ppcBestCU[0], m_ppcTempCU[0], 0 );


 7.TEncCu.cpp:

 Void TEncCu::xCheckRDCostInter( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bUseMRG)

 Void TEncCu::xCheckRDCostIntra( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize )


 8.TEncCu.cpp:

 Void TEncCu::xCheckRDCostIntra( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize )

 這個函數内部實作對亮度和色度的預測;即:estIntraPredQT和estIntraPredChromaQT


 9.TEnSearch.cpp:

 Void TEncSearch::estIntraPredQT(......)中有四個關鍵的函數!

 ①:predIntraLumaAng實作了方向的預測

 ②:calcHAD函數計算了SATD

 ③:xModeBitsIntra函數計算編碼的碼率

 ④:xUpdateCandList更新最好的RDCost所使用的模式      

繼續閱讀