http://blog.csdn.net/feixiang_john/article/details/7942925
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::encodeResAndCalcRdInterC | 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 |
大家分析的结果如何啊,讨论下,看下一步怎么做才能更好的优化出效果了!
- 上一篇:MV