在前两篇文章中,首先介绍了HEVC标准和编码流程,然后介绍了在HEVC中采用的全新的R-λ模型,本文将基于前面的内容和相应代码对码率控制算法进行详细的分析。
下面基于JCTVC-K0103提案详细介绍一下HEVC中基于R-λ模型的码率控制方法。同时基于HM-10对码率控制部分的代码做一个简要分析,相比于JM,HM中更多的使用了面向对象技术,结构更加清楚明了,码率控制相关代码的基本调用层次如下,纵向上即层层调用的关系,横向上是对几个比较重要的函数的内部调用情况列了出来。
跟以前的方法类似,码率控制方法还是分为两大步骤:比特分配以及调整编码参数来达到目标码率,在第二步中才会用到R-λ模型。
下面先看比特分配。分为三个级别,GOP层、图片层和基本编码单元层。
首先计算每幅图片的目标比特数,f为帧率,Rtar为目标码率
设已编码图片的数量为Ncoded,这些图片用掉的比特数为Rcoded,当前GO