HM学习(一):梳理帧内预测编码过程

HM学习(一):梳理帧内编码过程

在HEVC中,帧内预测的过程大致可以分为三步,首先是参考像素的填充,参考像素的平滑滤波,利用参考像素值求出预测块像素的预测值

将HM工程在VS中打开后可以看到9个主要的工程,此次主要梳理的是使用TAppEncoder进行帧内预测的过程。

HM结构

我们展开TAppEncoder,可以看到其中有一个encmain.cpp文件,这无疑就是工程运行的main文件,首先我的思路是从入口一层一层的往里找,但是实际上这样做非常浪费时间,并且作为梳理流程来说并不适合,这样的方式做适合精读代码。

TAppEncoder

于是在试错后转变了思路,从帧内预测的函数入口往回一层层的解析,整个结构如下图,这里要感谢博主https://blog.csdn.net/nb_vol_1做的很多HEVC的总结,让我少走了不少弯路。

帧内预测流程

通过上图我们可以看到整个帧内预测的过程实际上是非常清晰的

这里不得不感叹,一个好用的工具(VS)能给你的工作带来巨大的效率提升,具体怎么能够得到这样的结构图呢,首先我们需要在VS的解决方案里面搜索帧内预测的函数xCheckRDCostIntra(TComDataCU *& rpcBestCU, TComDataCU *& rpcTempCU, PartSize eSize DEBUG_STRING_FN_DECLARE) (TEncCu)这里实际上只用输入xCheckRDCostIntra即可

这里写图片描述
通过搜索得到的帧内预测的入口函数,我们就可以进入到对应的位置
这里写图片描述
在代码函数处右键, 查看调用层次结构,然后一步一步的点开调用当前函数即可。到此我们就可以清晰的了解整个帧内编码的大致流程了,首先编码GOP,然后是Slice,然后是CTU,与理论知识也就一一对应起来了。
今天就先记录到这里,因为梳理完整体结构的下一步就是阅读代码了。

猜你喜欢

转载自blog.csdn.net/jrrrj/article/details/80917476