RC代码一些不明白的地方,网上参考

1、RC总体框架参考http://blog.csdn.net/hevc_cjl/article/details/109826992、码率控制的一个大致流程图:来自于http://blog.csdn.net/cpp12341234/article/details/460436153、copressGOP函数:HM16.0中TEncGop类中compressGop函数RC部分在1447-1543行(初...
摘要由CSDN通过智能技术生成

1、RC总体框架

参考http://blog.csdn.net/hevc_cjl/article/details/10982699

2、 码率控制的一个大致流程图:

来自于http://blog.csdn.net/cpp12341234/article/details/46043615

3、copressGOP函数:HM16.0中TEncGop类中compressGop函数RC部分在1447-1543行(初始化相关参数),1838-1864行(每编码完一张图片更新参数)。

参考http://blog.csdn.net/cpp12341234/article/details/45766687

http://blog.csdn.net/hevc_cjl/article/details/11115721

  1.     Double lambda            = 0.0;  
  2.     Int actualHeadBits       = 0;  
  3.     Int actualTotalBits      = 0;  
  4.     Int estimatedBits        = 0;  
  5.     Int tmpBitsBeforeWriting = 0;  
  6.     if ( m_pcCfg->getUseRateCtrl() )  
  7.     {  
  8.       Int frameLevel = m_pcRateCtrl->getRCSeq()->getGOPID2Level( iGOPid );  
  9.       if ( pcPic->getSlice(0)->getSliceType() == I_SLICE )  
  10.       {  
  11.         frameLevel = 0;  
  12.       }  
  13.       m_pcRateCtrl->initRCPic( frameLevel ); //!< picture level 初始化  
  14.       estimatedBits = m_pcRateCtrl->getRCPic()->getTargetBits(); //!< 在initRCPic中已经计算出了targetBits  
  15.         
  16.       Int sliceQP = m_pcCfg->getInitialQP(); //!< 对应于配置文件中的InitalQP  
  17.       if ( ( pcSlice->getPOC() == 0 && m_pcCfg->getInitialQP() > 0 ) || ( frameLevel == 0 && m_pcCfg->getForceIntraQP() ) ) // QP is specified  
  18.       { //!< 如果配置文件对序列第一帧指定了初始QP,则基于这个QP计算出lamda  
  19.         Int    NumberBFrames = ( m_pcCfg->getGOPSize() - 1 );  
  20.         Double dLambda_scale = 1.0 - Clip3( 0.0, 0.5, 0.05*(Double)NumberBFrames );  
  21.         Double dQPFactor     = 0.57*dLambda_scale;  
  22.         Int    SHIFT_QP      = 12;  
  23.         Int    bitdepth_luma_qp_scale = 0;  
  24.         Double qp_temp = (Double) sliceQP + bitdepth_luma_qp_scale - SHIFT_QP;  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值