HEVC整个程序调用流程:
Encode -> compressGOP -> compressCU
->xCompressCU->copyFromPicYuv
->xCheckRDCostIntra-> initEstData
->xCheckRDCostInter ->xCheckRDCostMerge2Nx2N
->getNumberOfWrittenBits
->copyToPic->xCopyYuv2Pic
编码流程可简单画图如下:
其中帧间以及各层级划分省略.
由于画图比较繁琐,而且还不一定直观, 下面都按照结构抓图贴出来, 注意所有子函数都是按照函数复杂度排序的.
从xCompressCU函数这里开始进行4叉树多层划分嵌套,从下图也能看出.
编码的层次结构:
1: 下面分析帧内编码的主要函数:
进一步展开帧内最耗时estIntraPredQT函数如下:
再把xIntraCodingLumaBlk这一层展开如下:
2.下面分析帧间编码:
把第2层展开xTZSearch函数如下:
TEncSearch::xEstimateResidualQT函数展开: 也是一个嵌套.
TEncSearch::predInterSearch函数展开:
进一步把TEncSearch::xMotionEstimation函数展开:
把第4层展开 xTZSearch函数如下:
下面是各个模块在整个编码中的复杂度(占用CPU百分比), 测试按照标准encoder_lowdelay_P_main.cfg来测试!
|
TEncSearch::encodeResAndCalcRdInterCU |
57.22 |
|
TEncSearch::xEstimateResidualQT |
54.76 |
|
TEncCu::xCheckRDCostInter |
43.97 |
|
TEncCu::xCheckRDCostMerge2Nx2N |
28.46 |
|
TEncSbac::codeCoeffNxN |
25.37 |
|
TComTrQuant::transformNxN |
20.17 |
|
TEncCu::xCheckRDCostIntra |
19.04 |
|
TComTrQuant::xQuant |
16.4 |
|
TEncSearch::predInterSearch |
14.35 |
|
TEncSearch::estIntraPredQT |
14.34 |
|
TComTrQuant::xRateDistOptQuant |
11.84 |
|
TEncSearch::xMotionEstimation |
9.7 |
|
TEncSearch::xTZSearch |
8.37 |
|
TEncSearch::xRecurIntraCodingQT |
8.16 |
|
TEncSearch::xTZSearchHelp |
7.21 |
从表中可以看出: 帧内编码小于20%, I帧间隔大的话,应该是小于10%.
帧间编码60%左右, xRateDistOptQuant占用11%左右, transform占用5%, xQuant实际占用5%.
大家分析的结果如何啊,讨论下,看下一步怎么做才能更好的优化出效果了!

本文详细解析了HEVC(高效视频编码)的编码流程,包括帧内和帧间的编码过程,并通过图表形式展示了编码的不同阶段及其复杂度占比,为优化HEVC编码提供了依据。
1215

被折叠的 条评论
为什么被折叠?



