HEVC/H.265整个程序调用流程分析以及函数复杂度分析 .
2013-07-09 19:54
239 查看
HEVC整个程序调用流程:
Encode -> compressGOP -> compressCU
->xCompressCU->copyFromPicYuv
->xCheckRDCostIntra-> initEstData
->xCheckRDCostInter ->xCheckRDCostMerge2Nx2N
->getNumberOfWrittenBits
->copyToPic->xCopyYuv2Pic
编码流程可简单画图如下:
![](http://img.my.csdn.net/uploads/201209/04/1346750116_8250.JPG)
其中帧间以及各层级划分省略.
由于画图比较繁琐,而且还不一定直观, 下面都按照结构抓图贴出来, 注意所有子函数都是按照函数复杂度排序的.
从xCompressCU函数这里开始进行4叉树多层划分嵌套,从下图也能看出.
编码的层次结构:
![](http://img.my.csdn.net/uploads/201209/04/1346750313_4445.JPG)
1: 下面分析帧内编码的主要函数:
![](http://img.my.csdn.net/uploads/201209/04/1346750359_4157.JPG)
进一步展开帧内最耗时estIntraPredQT函数如下:
![](http://img.my.csdn.net/uploads/201209/04/1346750392_2367.JPG)
再把xIntraCodingLumaBlk这一层展开如下:
![](http://img.my.csdn.net/uploads/201209/04/1346750411_2577.JPG)
2.下面分析帧间编码:
把第2层展开xTZSearch函数如下:
TEncSearch::xEstimateResidualQT函数展开: 也是一个嵌套.
![](http://img.my.csdn.net/uploads/201209/04/1346750484_3989.JPG)
TEncSearch::predInterSearch函数展开:
![](http://img.my.csdn.net/uploads/201209/04/1346750544_9128.JPG)
进一步把TEncSearch::xMotionEstimation函数展开:
![](http://img.my.csdn.net/uploads/201209/04/1346750564_1886.JPG)
把第4层展开 xTZSearch函数如下:
![](http://img.my.csdn.net/uploads/201209/04/1346750579_5965.JPG)
下面是各个模块在整个编码中的复杂度(占用CPU百分比), 测试按照标准encoder_lowdelay_P_main.cfg来测试!
从表中可以看出: 帧内编码小于20%, I帧间隔大的话,应该是小于10%.
帧间编码60%左右, xRateDistOptQuant占用11%左右, transform占用5%, xQuant实际占用5%.
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 |
帧间编码60%左右, xRateDistOptQuant占用11%左右, transform占用5%, xQuant实际占用5%.
相关文章推荐
- HEVC/H.265整个程序调用流程分析以及函数复杂度分析
- HEVC/H.265整个程序调用流程分析以及函数复杂度分析
- HEVC/H.265整个程序调用流程分析以及函数复杂度分析
- 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为(转)
- [授权发表]源码分析:动态分析 C 程序函数调用关系
- Oracle存储过程、存储函数以及Java程序调用存储过程和存储函数
- jQuery-1.9.1源码分析系列(十六)ajax——ajax处理流程以及核心函数
- Binder 机制详解—重要函数调用流程分析
- 源码分析:静态分析 C 程序函数调用关系图
- Java 中的 int 与 Integer 用于 List<Integer> 时,以及通过打印变量检测程序运行和函数调用次数计数
- 源码分析:静态分析 C 程序函数调用关系图
- linux 为崩溃的程序生成core文件的相关函数,调用代码生成core dump file 但程序不用退出,gdb 分析core
- Win32程序函数调用时堆栈变化情况分析
- 1.3 函数调用反汇编解析以及调用惯例案例分析
- 分析程序调用几次函数
- Linux中程序的栈帧分析以及修改函数地址
- 怎样使用gprof和oprofile来分析 linux程序的性能(每个函数的调用次数与耗时)
- HM编码器代码阅读(7)——整个编码流程以及相关的函数
- Win32程序函数调用时堆栈变化情况分析
- 程序运行 栈帧分析 以及 修改栈帧中数据以及函数地址