HEVC代码学习26:率失真代价类TComRdCost

HEVC的率失真优化通过权衡码率R和失真D来实现高效编码,主要由TComRdCost类负责相关计算。该类包含了失真、码率和权重λ的函数,如calcRdCost函数,以及利用FpDistFunc指针进行失真计算。通过对TComRdCost的深入研究,可以更好地理解HEVC编码过程。
摘要由CSDN通过智能技术生成

率失真优化是HEVC中的重要内容,通过基本形式如下图的公式求率失真代价J,权衡码率R和失真D,为编码器选择最优编码参数,实现高效编码。
这里写图片描述

HM中,对于率失真相关的计算都是通过TComRdCost类指针m_pcRdCost调用其成员函数实现的,那就来看下TComRdCost类。
TComRdCost类中定义了失真D、码率R和λ有关的函数,其中计算RD代价的函数为:calcRdCost(详见http://blog.csdn.net/lin453701006/article/details/78145247)。失真计算函数会通过FpDistFunc m_afpDistortFunc[DF_TOTAL_FUNCTIONS]函数指针来调用。

/// RD cost computation class
//率失真
class TComRdCost
{
private:
  // for distortion

  FpDistFunc              m_afpDistortFunc[DF_TOTAL_FUNCTIONS];      // [eDFunc] 失真函数指针
  CostMode                m_costMode;       //失真模式
  Double                  m_distortionWeight[MAX_NUM_COMPONENT]; // only chroma values are used.    //色度失真权重
  Double                  m_dLambda;        
  Double                  m_sqrtLambda;     
#if RExt__HIGH_BIT_DEPTH_SUPPORT
  Double                  m_dLambdaMotionSAD[2 /* 0=standard, 1=for transquant bypass when mixed-lossless cost evaluation enabled*/];
  Double                  m_dLambdaMotionSSE[2 /* 0=standard, 1=for transquant bypass when mixed-lossless cost evaluation enabled*/];
#else
  UInt                    m_uiLambdaMotionSAD[2 /* 0=standard, 1=for transquant bypass when mixed-lossless cost evaluation enabled*/];  
  UInt                    m_uiLambdaMotionSSE[2 /* 0=standard, 1=for transquant bypass when mixed-lossless cost evaluation enabled*/];
#endif
  Double                  m_dFrameLambda;

  // for motion cost
  TComMv                  m_mvPredictor;
#if RExt__HIGH_BIT_DEPTH_SUPPORT
  Double                  m_dCost;
#else
  UInt                    m_uiCost;
#endif
  Int                     m_iCostScale;

public:
  TComRdCost();
  virtual ~TComRdCost();

  //计算RD代价
  Double  calcRdCost  ( UInt   uiBits, Distortion uiDistortion, Bool bFlag = false, DFunc eDFunc = DF_DEFAULT );        
  Double  calcRdCost64( UInt64 uiBits, UInt64 uiDistortion, Bool bFlag = false, DFunc eDFunc = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值