Intraprediction(帧内预测):
预测方向拓展到33个,另外加上一个DC和一个planar,一共35中预测模式,使得预测更加精细,但是为了控制编码复杂度,所以对4x4和64x64的尺寸的预测模式进行了限制。下图对比了HEVC和AVC的Intra预测模式:
INTERPREDICTION(帧间预测):
Transformation(变换)
Transformation的一些改进在上一篇文章中有提及,不再重复
Quantization(量化)
loop filtering
Entropy Coding
后面的文章将对HEVC的各个模块所使用的Coding tools进行详细的分析,包括对编码器效率的影响,快速算法,SIMD优化等。
第一条预测和变换的快速模式选择,我们讲在后面的文章中进行讨论,这篇文章我们先讨论一下找出HEVC编码框架中最耗时的部分。
#======== Unit definition ================
MaxCUWidth
MaxCUHeight
MaxPartitionDepth
QuadtreeTULog2MaxSize
QuadtreeTULog2MinSize
QuadtreeTUMaxDepthInter
QuadtreeTUMaxDepthIntra
CU的大小为16x16,TU的大小为8x8,开启VS2010的性能分析工具,可以找到最耗时的几个模块
1.RDOQ
2.HAD
3.transform
4.quant
其中RDOQ不是必须的模块,但是测试发现RDOQ对编码的效果有很大的提升,在开启RDOQ的情况下,同等PNSR情况下码率会降低5%左右。
还好这几个模块都可以很好的用SIMD来进行汇编优化,由此可见标准组织设计的巧妙。这些模块的具体算法,后面将会有详尽的论述。
下面整理出HEVC中需要汇编优化的一些关键函数,其中HAD是比较简单,但是占CPU比重非常高的函数,从此入手
TComPrediction::predIntraLumaAng
TComRdCost::calcHAD,TEncSearch::xIntraCodingLumaBlk
TEncSearch::xIntraCodingChromaBlk
TComTrQuant::transformNxN
TComTrQuant::invtransformNxN
TComTrQuant::xDeQuant
TComTrQuant::xIT
TComRdCost::getDistPart
TComRdCost::xGetSSE32
TEncSearch::xGetIntraBitsQT
TEncSearch::xEncCoeffQT
Void TEncCu::xCheckRDCostMerge2Nx2N
TComPrediction::motionCompensation
Void TEncSearch::encodeResAndCalcRdInterC
TComPrediction::xPredInterLumaBlk
TComRdCost::getDistPart
TComRdCost::xGetSAD64 // TComRdCost::init()
FpDistFunc DistFunc;
TEncSearch::xEstimateResidualQT