HEVC/H.265整个程序调用流程分析以及函数复杂度分析

原创 2012年09月04日 18:00:56

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%.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

大家分析的结果如何啊,讨论下,看下一步怎么做才能更好的优化出效果了!

 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feixiang_john/article/details/7942925

视频编解码之HEVC

-
  • 1970年01月01日 08:00

if(!m_isField){Void TEncTop::encode}

Void TEncTop::encode( Bool flush, TComPicYuv* pcPicYuvOrg, TComPicYuv* pcPicYuvTrueOrg, const InputC...
  • xhyan523
  • xhyan523
  • 2018-03-19 11:17:11
  • 11

estIntraPredLumaQT函数

Void TEncSearch::estIntraPredLumaQT(TComDataCU* pcCU, TComYuv* pcO...
  • Villa_7
  • Villa_7
  • 2017-04-12 11:02:30
  • 708

HEVC代码学习5:cross-component prediction代码实现2

在之前的学习中,主要对CCP的整体代码思路进行了学习,下面将再进一步研究一下其相关的函数以及其重要参数。...
  • lin453701006
  • lin453701006
  • 2016-10-26 15:33:44
  • 839

HM过程

HM的代码流程 CSDN博客2013.12.13 转自http://blog.csdn.net/hq2902108007/article/details/8965090 1....
  • cpp12341234
  • cpp12341234
  • 2015-05-03 22:22:35
  • 2069

HEVC学习(十) —— 与变换有关的几个主要函数及重要变量

本文主要是列出几个与变换有关的函数,以及涉及到的比较重要的变量,但不会去深入讨论函数的实现,日后有机会的话会更详细地讨论这几个函数,这里仅是列举出来,起到备忘的作用,也能供大家参考。   如何定位...
  • HEVC_CJL
  • HEVC_CJL
  • 2012-11-30 19:25:28
  • 8075

HEVC学习(六) —— 帧内预测系列之四

本文主要把实现亮度分量帧内预测的主函数的大体框架通过代码注释的方式介绍一下。   Void TEncSearch::estIntraPredQT( TComDataCU* pcCU, ...
  • HEVC_CJL
  • HEVC_CJL
  • 2012-11-19 18:55:37
  • 17838

HEVC代码学习37:帧内预测代码整体学习

最近一直在看变换部分的东西,由于很多变换模式是针对帧内预测模式设计的,来简单学习一下帧内预测流程。通过之前xCompressCU的学习,我们知道了帧内、帧间的入口函数都在xCompressCU中,下面...
  • lin453701006
  • lin453701006
  • 2018-01-22 17:53:16
  • 168

HEVC中的帧内预测

今日对照HEVC标准TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (04/2013)阅读HM代码,代码版本2016-8-18,karls...
  • dragon_dy
  • dragon_dy
  • 2016-09-02 17:31:47
  • 1361

hevc代码阅读框架

北京工业大学 朱维佳 邮箱: sparkjj@emails.bjut.edu.cn(欢迎探讨任何关于编码的问题) 如转发本文章,请注明出处 1. 环境配置 这个...
  • u010289908
  • u010289908
  • 2015-08-13 10:45:47
  • 1617
收藏助手
不良信息举报
您举报文章:HEVC/H.265整个程序调用流程分析以及函数复杂度分析
举报原因:
原因补充:

(最多只允许输入30个字)