HEVC码率控制: Unified R-Q Model

本文详细介绍了HEVC码率控制中的Unified R-Q Model算法,特别是其独特的双编码缓冲区机制和QP计算方法。针对第一帧的特殊处理以及非GOP首帧参考帧的二次模型求解QP的过程进行了探讨,同时也指出了HM-6.2和HM-9.0版本中存在的问题和错误。
摘要由CSDN通过智能技术生成

这几天在看HM-6.2的Unified R-Q Model码率控制算法的代码,对应的提案是JCTVC-H0213,对应的文章是“Pixel-Wise Unified Rate-Quantization Model for Multi-Level Rate Control”。该模型与lambda域码率控制一样,不支持AI配置。该模型使用二次模型计算QP。本文主要阐述其中两点:编码缓冲区、QP计算。
经典算法JVT-GO12只有一个编码缓冲区,本文要描述的模型的编码缓冲区比较奇葩,它有两个编码缓冲区,代码中的变量分别是:

class TEncRateCtrl
{
  ...
  Int             m_occupancyVB;
  Int             m_initialOVB;
  ...
}

第一帧带来的缓冲区占用量放在m_initialOVB中。该模型必须给一个初始QP,然而初始QP可能偏大也可能偏小,使得m_initialOVB为负或为正。其他帧带来的缓存区状态的变化会同时影响m_occupancyVB和m_initialOVB,并使得m_initialOVB越来越接近0。m_initialOVB等于0后,就只影响m_occupancyVB了。m_occupancyVB从编码第二个GOP中的图像后不为0。
之所以单独列出一个m_initialOVB,在他们的文章“Pixel-Wise Unified Rate-Quantization Model for Multi-Level Rate Control”中给出的原因:

Note that only the first frame encoded by intra is taken into account for this paper. The actual generated bit for the first frame has a quite decisive effect on the accuracy of rate control.

跟新缓冲区状态的核心代码如下:

Void  TEncRateCtrl::updataRCFrameStatus(Int frameBits, SliceType eSliceType)
{
  FrameData* pcFrameData = &m_pcFrameData[m_indexPOCInGOP];
  Int occupancyBits;
  Double adjustmentBits;

  m_remainingBitsInGOP = m_remainingBitsInGOP + ( ((m_currBitrate-m_prevBitrate)/m_frameRate)*(m_sizeGOP-m_indexFrame) ) - frameBits;
  occupancyBits        = (Int)((Double)frameBits - (m_currBitrate/(Double)m_frameRate));

  if( (occupancyBits < 0) && (m_initialOVB > 0) )
  {
    adjustmentBits = xAdjustmentBits(occupancyBits, m_initialOVB );

    if(m_initialOVB < 0)
    {
      adjustmentBits = m_initialOVB;
      occupancyBits += (Int)adjustmentBits;
      m_initialOVB   =  0;
    }
  }
  else if( (occupancyBits > 0) && (m_initialOVB < 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值