[2017.1.20]x265更新日志之CBR模式下填充空数据

本文翻译自x265的更新日志,讲述了在CBR(恒定比特率)模式下,当帧位元小于VBV目标时如何添加填充位。在VBV缓冲区接近满载的情况下,编码器会使用0xFFFF来避免添加实际数据,确保解码器不会处理这些无效数据,从而维持恒定的比特率。
摘要由CSDN通过智能技术生成

翻译自:x265: cf2a247e31f0

Add filler bits when frame bits < vbv target in strict-cbr

 CBR模式下,vbv池子满的情况下,即缓冲区马上上溢的情况下,就不要往池子里填数据,填oxffff,这样解码器就不会解这些空数据。

--- a/source/encoder/frameencoder.cpp	Fri Jan 20 16:44:03 2017 +0530
+++ b/source/encoder/frameencoder.cpp	Fri Jan 20 10:27:41 2017 +0530
@@ -969,12 +969,29 @@ void FrameEncoder::compressFrame()
     }
     m_accessUnitBits = bytes << 3;
 
-    m_endCompressTime = x265_mdate();
-
+    int filler = 0;
     /* rateControlEnd may also block for earlier frames to call rateControlUpdateStats */
-    if (m_top->m_rateControl->rateControlEnd(m_frame, m_accessUnitBits, &m_rce) < 0)
+    if (m_top->m_rateControl->rateControlEnd(m_frame, m_accessUnitBits, &m_rce, &filler) < 0)
         m_top->m_aborted = true;
 
+    if (filler > 0)
+    {
+        filler = (filler - FILLER_OVERHEAD * 8) >> 3;
+        m_bs.resetBits();
+        while (filler > 0)
+        {
+            m_bs.write(0xff, 8);
+            filler--;
+        }
+        m_bs.writeByteAlignment();
+        m_nalList.serialize(NAL_UNIT_FILLER_DATA, m_bs);
+        byte
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值