HEVC参考程序--编码器性能分析

    在VC2010上利用运行时程序性能分析工具对HM编码器进行性能分析,获取代码的关键路径,为后面对算法和代码进行优化提供参考。

    参考程序版本为HM-10.1-dev,分析工具为VC2010集成代码性能分析工具,测试序列为BQSquare_416x240_60,配置文件为encoder_intra_main.cfg和BQSquare.cfg。

    有人反映VC跑测试软件编码器非常慢,需要几个小时,我测试了一下是这样的,我使用上面的测试序列和配置文件,运行编码器耗时6236s。电脑配置为Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz 八核处理器,3.39GHz, 3.40GB内存,WindowsXPSP3系统。这么小的一个视频编码耗时1.8小时,也太慢了,编码时电脑CUP占用率13%,说明代码有很多的优化潜力。后来看了下VC设置看能不能设置优化的,然后看到方案默认为Debug模式,其他优化选项好像是正常的,就将Debug改为Release模式,在编译运行上面同样的序列和配置,耗时630s,电脑CPU占用率还是13%,速度差不多快了10倍,确实是减少时间的方法,应该还是可以优化的。

    下面继续VC2010进行程序性能分析。

电脑配置:

HEVC参考程序--编码器性能分析_第1张图片

参数配置:

-c encoder_intra_main.cfg -c BQSquare.cfg           612x240x60

运行编码器:

HEVC参考程序--编码器性能分析_第2张图片

VC2010Debug模式运行编码器,612x240x60序列,耗时6226s

HEVC参考程序--编码器性能分析_第3张图片

VC2010Release模式运行编码器,612x240x60序列,耗时623s,相差10倍了

HEVC参考程序--编码器性能分析_第4张图片

两种模式下CPU占用率差不多

启动VC性能分析工具进行HM性能分析:

HEVC参考程序--编码器性能分析_第5张图片

HEVC参考程序--编码器性能分析_第6张图片

HEVC参考程序--编码器性能分析_第7张图片

关键路径:

TAppEncoder.exe          187,486

main:                                187,034

-- TAppEncTop::encode()        187,034

--TEncGOP::compressGOP()         186,972

--TEncSlice::compressSlice()           185,016

  --TEncCu::xCheckRDCostIntra()       18,236

    --TEncSearch::estIntraPredChromaQT  2,062

        --TEncSearch::estIntraPredQT         15,894

  --TEncCu::xCompressCU()                165,893

        --TEncCu::xCheckRDCostIntra()        109,110

          --TEncSearch::estIntraPredChromaQT    11,853

          --TEncSearch::extIntraPredQT()              96,206

        --TEncSearch::xRecurIntraCodingQT()    75,052

        --TComPrediction::preIntraLumaAng()    5,909

        --TComRdCost::calcHAD()                       5,276

换一个配置文件测试:

-c encoder_lowdelay_main.cfg  -c BQSquare.cfg                   612x240x60

HEVC参考程序--编码器性能分析_第8张图片

使用这个配置文件时,分析得到的关键路径与之前的路径差别较大,但是对比函数调用关系树的话还是差不多的。

主要消耗还是compressCU函数

 

HEVC参考程序--编码器性能分析_第9张图片

编码器测试:

使用编码器对-c encoder_intra_main.cfg -c BQSquare.cfg 612x240x60序列编码文件解码:

HEVC参考程序--编码器性能分析_第10张图片

解码总共耗时8sCPU占用率13%

解码速度还是可以的,但这个YUV图像大小很小,需要测试更大尺寸的序列,同时使用更高性能的配置参数进行编码和解码测试。

来对比一下编解码图像质量

原始YUV文件第一帧:HEVC参考程序--编码器性能分析_第11张图片

编解码后第一帧:

HEVC参考程序--编码器性能分析_第12张图片

整体上和原始图像差不多,注意地板的纹理,编解码后地板在亮区的纹理已经没有了,在暗区如左下角太阳伞下纹理还可以看到。

原始YUV序列第500帧:

编解码后YUV序列第500帧:

可以看出阳台瓷砖纹理、雨伞纹理、铁栅栏纹理和水面纹理都有了不同程度的模糊。

 

 

 

 

 

 

你可能感兴趣的:(HEVC参考程序--编码器性能分析)