关于HM配置文件的TEncCfg类

来源:互联网 发布:python tushare可视化 编辑:程序博客网 时间:2024/05/21 19:46

在使用HM的过程中,某函数体内经常会有配置文件中的参数传递,涉及到的类就是TEncCfg,详细如下:

class TEncCfg{protected:  //==== File I/O ========  Int       m_iFrameRate;//帧率  Int       m_FrameSkip;//跳帧  Int       m_iSourceWidth;//宽度  Int       m_iSourceHeight;//高度  Int       m_conformanceMode;  Window    m_conformanceWindow;  Int       m_framesToBeEncoded;//待编码帧数  Double    m_adLambdaModifier[ MAX_TLAYER ];  /* profile & level */  Profile::Name m_profile;  Level::Tier   m_levelTier;  Level::Name   m_level;#if L0046_CONSTRAINT_FLAGS//若无定义,则不预编译  Bool m_progressiveSourceFlag;  Bool m_interlacedSourceFlag;  Bool m_nonPackedConstraintFlag;  Bool m_frameOnlyConstraintFlag;#endif  //====== Coding Structure ========  UInt      m_uiIntraPeriod;//帧内间隔,用来设定I帧间隔  UInt      m_uiDecodingRefreshType;///< the type of decoding refresh employed for the random access.  Int       m_iGOPSize;//GOP大小  GOPEntry  m_GOPList[MAX_GOP];  Int       m_extraRPSs;  Int       m_maxDecPicBuffering[MAX_TLAYER];  Int       m_numReorderPics[MAX_TLAYER];    Int       m_iQP;        //  if (AdaptiveQP == OFF)    Int       m_aiPad[2]; Int       m_iMaxRefPicNum;///< this is used to mimic the sliding mechanism used by the decoder                          // TODO: We need to have a common sliding mechanism used by both the encoder and decoder  Int       m_maxTempLayer;  ///< Max temporal layer  Bool m_useAMP;  //======= Transform =============  UInt      m_uiQuadtreeTULog2MaxSize;  UInt      m_uiQuadtreeTULog2MinSize;  UInt      m_uiQuadtreeTUMaxDepthInter;  UInt      m_uiQuadtreeTUMaxDepthIntra;    //====== Loop/Deblock Filter ========  Bool      m_bLoopFilterDisable;  Bool      m_loopFilterOffsetInPPS;  Int       m_loopFilterBetaOffsetDiv2;  Int       m_loopFilterTcOffsetDiv2;  Bool      m_DeblockingFilterControlPresent;  Bool      m_bUseSAO;  Int       m_maxNumOffsetsPerPic;  Bool      m_saoLcuBoundary;  Bool      m_saoLcuBasedOptimization;  //====== Lossless ========  Bool      m_useLossless;  //====== Motion search ========  Int       m_iFastSearch;          //  0:Full search  1:Diamond  2:PMVFAST  Int       m_iSearchRange;        //  0:Full frame  Int       m_bipredSearchRange;  //====== Quality control ========  Int       m_iMaxDeltaQP;        //  Max. absolute delta QP (1:default)  Int       m_iMaxCuDQPDepth;     //  Max. depth for a minimum CuDQP (0:default)  Int       m_chromaCbQpOffset;   //  Chroma Cb QP Offset (0:default)  Int       m_chromaCrQpOffset;  //  Chroma Cr Qp Offset (0:default)#if ADAPTIVE_QP_SELECTION  Bool      m_bUseAdaptQpSelect;#endif  Bool      m_bUseAdaptiveQP;  Int       m_iQPAdaptationRange;    //====== Tool list ========  Bool      m_bUseSBACRD;  Bool      m_bUseASR;//使用ASR  Bool      m_bUseHADME;//  Bool      m_bUseLComb;  Bool      m_useRDOQ;//使用RDOQ  Bool      m_useRDOQTS;#if L0232_RD_PENALTY  UInt      m_rdPenalty;#endif  Bool      m_bUseFastEnc;//FE快速算法  Bool      m_bUseEarlyCU;//EU快速算法  Bool      m_useFastDecisionForMerge;//FDM快速算法  Bool      m_bUseCbfFastMode;//CFM快速算法  Bool      m_useEarlySkipDetection;//ESD快速算法  Bool      m_useTransformSkip;//TS快速算法  Bool      m_useTransformSkipFast;//TSF快速算法  Int*      m_aidQP;  UInt      m_uiDeltaQpRD;    Bool      m_bUseConstrainedIntraPred;  Bool      m_usePCM;  UInt      m_pcmLog2MaxSize;  UInt      m_uiPCMLog2MinSize;  //====== Slice ========  Int       m_sliceMode;  Int       m_sliceArgument;   //====== Dependent Slice ========  Int       m_sliceSegmentMode;  Int       m_sliceSegmentArgument;  Bool      m_bLFCrossSliceBoundaryFlag;  Bool      m_bPCMInputBitDepthFlag;  UInt      m_uiPCMBitDepthLuma;  UInt      m_uiPCMBitDepthChroma;  Bool      m_bPCMFilterDisableFlag;  Bool      m_loopFilterAcrossTilesEnabledFlag;  Int       m_iUniformSpacingIdr;  Int       m_iNumColumnsMinus1;  UInt*     m_puiColumnWidth;  Int       m_iNumRowsMinus1;  UInt*     m_puiRowHeight;  Int       m_iWaveFrontSynchro;  Int       m_iWaveFrontSubstreams;  Int       m_decodedPictureHashSEIEnabled;///< Checksum(3)/CRC(2)/MD5(1)/disable(0) acting on decoded picture hash SEI message  Int       m_bufferingPeriodSEIEnabled;  Int       m_pictureTimingSEIEnabled;  Int       m_recoveryPointSEIEnabled;  Int       m_framePackingSEIEnabled;  Int       m_framePackingSEIType;  Int       m_framePackingSEIId;  Int       m_framePackingSEIQuincunx;  Int       m_framePackingSEIInterpretation;  Int       m_displayOrientationSEIAngle;  Int       m_temporalLevel0IndexSEIEnabled;  Int       m_gradualDecodingRefreshInfoEnabled;  Int       m_decodingUnitInfoSEIEnabled;  //====== Weighted Prediction ========  Bool      m_useWeightedPred;    //< Use of Weighting Prediction (P_SLICE)  Bool      m_useWeightedBiPred; //< Use of Bi-directional Weighting Prediction (B_SLICE)  UInt      m_log2ParallelMergeLevelMinus2; ///< Parallel merge estimation region  UInt      m_maxNumMergeCand;             ///< Maximum number of merge candidates  Int       m_useScalingListId;    ///< Using quantization matrix i.e. 0=off, 1=default, 2=file.  Char*     m_scalingListFile;    ///< quantization matrix file name  Int       m_TMVPModeId;  Int       m_signHideFlag;#if RATE_CONTROL_LAMBDA_DOMAIN  Bool      m_RCEnableRateControl;  Int       m_RCTargetBitrate;  Bool      m_RCKeepHierarchicalBit;  Bool      m_RCLCULevelRC;  Bool      m_RCUseLCUSeparateModel;  Int       m_RCInitialQP;  Bool      m_RCForceIntraQP;#else  Bool      m_enableRateCtrl;  ///< Flag for using rate control algorithm  Int       m_targetBitrate;   ///< target bitrate  Int       m_numLCUInUnit;   //< Total number of LCUs in a frame should be divided by the NumLCUInUnit#endif//...中间部分省略public:  TEncCfg()  : m_puiColumnWidth()  , m_puiRowHeight()  {}
  virtual ~TEncCfg()  {    delete[] m_puiColumnWidth;    delete[] m_puiRowHeight;  }    Void setProfile(Profile::Name profile) { m_profile = profile; }  Void setLevel(Level::Tier tier, Level::Name level) { m_levelTier = tier; m_level = level; }  Void  setFrameRate ( Int   i )      { m_iFrameRate = i; }//设定帧率  Void  setFrameSkip ( UInt i ) { m_FrameSkip = i; }//设置跳帧数目  Void  setSourceWidth  ( Int   i )   { m_iSourceWidth = i; }//设定宽度  Void  setSourceHeight ( Int   i )   { m_iSourceHeight = i; }//设定高度//...中间部分省略   //====== Loop/Deblock Filter ========  Void  setLoopFilterDisable            ( Bool  b )      { m_bLoopFilterDisable       = b; }  Void  setLoopFilterOffsetInPPS        ( Bool  b )      { m_loopFilterOffsetInPPS      = b; }  Void  setLoopFilterBetaOffset         ( Int   i )      { m_loopFilterBetaOffsetDiv2  = i; }  Void  setLoopFilterTcOffset           ( Int   i )      { m_loopFilterTcOffsetDiv2    = i; }  Void  setDeblockingFilterControlPresent ( Bool b ) { m_DeblockingFilterControlPresent = b; }  //====== Motion search ========  Void setFastSearch  ( Int   i )      { m_iFastSearch = i; }  Void setSearchRange  ( Int   i )      { m_iSearchRange = i; }//设定搜索范围  Void setBipredSearchRange  ( Int   i ){ m_bipredSearchRange = i; }//设定双向搜索范围  //====== Quality control ========  Void  setMaxDeltaQP                   ( Int   i )      { m_iMaxDeltaQP = i; }  Void  setMaxCuDQPDepth                ( Int   i )      { m_iMaxCuDQPDepth = i; }  Void  setChromaCbQpOffset             ( Int   i )      { m_chromaCbQpOffset = i; }  Void  setChromaCrQpOffset             ( Int   i )      { m_chromaCrQpOffset = i; }#if ADAPTIVE_QP_SELECTION  Void  setUseAdaptQpSelect             ( Bool   i ) { m_bUseAdaptQpSelect    = i; }  Bool  getUseAdaptQpSelect             ()           { return   m_bUseAdaptQpSelect; }#endif  Void  setUseAdaptiveQP                ( Bool  b )      { m_bUseAdaptiveQP = b; }  Void  setQPAdaptationRange            ( Int   i )      { m_iQPAdaptationRange = i; }    //====== Lossless ========  Void      setUseLossless                  (Bool    b  )        { m_useLossless = b;  }  //====== Sequence ========  Int getFrameRate () { return  m_iFrameRate; }//获得帧率  UInt getFrameSkip() { return  m_FrameSkip; }//获得跳帧数目  Int getSourceWidth () { return  m_iSourceWidth; }//获得宽度  Int getSourceHeight () { return  m_iSourceHeight; }//获得高度  Int getFramesToBeEncoded () { return  m_framesToBeEncoded; }//获得待编码数目  void setLambdaModifier ( UInt uiIndex, Double dValue ){ m_adLambdaModifier[ uiIndex ] = dValue;}  Double getLambdaModifier( UInt uiIndex ) const { return m_adLambdaModifier[ uiIndex ]; }  //==== Coding Structure ========  UInt getIntraPeriod ()      { return  m_uiIntraPeriod; }//获得帧内间隔  UInt getDecodingRefreshType ()      { return  m_uiDecodingRefreshType; }  Int  getGOPSize ()      { return  m_iGOPSize; }//获得GOP大小  Int  getMaxDecPicBuffering (UInt tlayer) { return m_maxDecPicBuffering[tlayer]; }  Int  getNumReorderPics  (UInt tlayer) { return m_numReorderPics[tlayer]; }  Int  getQP  ()      { return  m_iQP; }//获得QP    Int  getPad  ( Int i )  { assert (i < 2 );    return  m_aiPad[i]; }    //======== Transform =============  UInt  getQuadtreeTULog2MaxSize ()const { return m_uiQuadtreeTULog2MaxSize; }  UInt  getQuadtreeTULog2MinSize ()const { return m_uiQuadtreeTULog2MinSize; }  UInt  getQuadtreeTUMaxDepthInter ()const { return m_uiQuadtreeTUMaxDepthInter; }  UInt  getQuadtreeTUMaxDepthIntra ()const { return m_uiQuadtreeTUMaxDepthIntra; }    //==== Loop/Deblock Filter ========  Bool  getLoopFilterDisable ()      { return  m_bLoopFilterDisable;       }  Bool  getLoopFilterOffsetInPPS ()  { return m_loopFilterOffsetInPPS; }  Int   getLoopFilterBetaOffset  ()  { return m_loopFilterBetaOffsetDiv2; }  Int   getLoopFilterTcOffset    ()  { return m_loopFilterTcOffsetDiv2; }  Bool  getDeblockingFilterControlPresent()  { return  m_DeblockingFilterControlPresent; }  //==== Motion search ========  Int       getFastSearch                   ()      { return  m_iFastSearch; }  Int       getSearchRange                  ()      { return  m_iSearchRange; }  //==== Quality control ========  Int       getMaxDeltaQP                   ()      { return  m_iMaxDeltaQP; }  Int       getMaxCuDQPDepth                ()      { return  m_iMaxCuDQPDepth; }  Bool      getUseAdaptiveQP                ()      { return  m_bUseAdaptiveQP; }  Int       getQPAdaptationRange            ()      { return  m_iQPAdaptationRange; }  //====== Lossless ========  Bool      getUseLossless                  ()      { return  m_useLossless;  }    //==== Tool list ========  Void      setUseSBACRD                    ( Bool  b )     { m_bUseSBACRD  = b; }  Void      setUseASR                       ( Bool  b )     { m_bUseASR     = b; }  Void      setUseHADME                     ( Bool  b )     { m_bUseHADME   = b; }  Void      setUseLComb                     ( Bool  b )     { m_bUseLComb   = b; }  Void      setUseRDOQ                      ( Bool  b )     { m_useRDOQ    = b; }  Void      setUseRDOQTS                    ( Bool  b )     { m_useRDOQTS  = b; }#if L0232_RD_PENALTY  Void      setRDpenalty                 ( UInt  b )     { m_rdPenalty  = b; }#endif  Void  setUseFastEnc                   ( Bool  b )     { m_bUseFastEnc = b; }  Void  setUseEarlyCU                   ( Bool  b )     { m_bUseEarlyCU = b; }  Void  setUseFastDecisionForMerge      ( Bool  b )     { m_useFastDecisionForMerge = b; }  Void  setUseCbfFastMode            ( Bool  b )     { m_bUseCbfFastMode = b; }  Void  setUseEarlySkipDetection        ( Bool  b )     { m_useEarlySkipDetection = b; }  Void  setUseConstrainedIntraPred      ( Bool  b )     { m_bUseConstrainedIntraPred = b; }  Void  setPCMInputBitDepthFlag         ( Bool  b )     { m_bPCMInputBitDepthFlag = b; }  Void  setPCMFilterDisableFlag         ( Bool  b )     {  m_bPCMFilterDisableFlag = b; }  Void  setUsePCM                       ( Bool  b )     {  m_usePCM = b;               }  Void  setPCMLog2MaxSize               ( UInt u )      { m_pcmLog2MaxSize = u;      }  Void  setPCMLog2MinSize               ( UInt u )     { m_uiPCMLog2MinSize = u;      }  Void  setdQPs                         ( Int*  p )     { m_aidQP       = p; }  Void  setDeltaQpRD                    ( UInt  u )     {m_uiDeltaQpRD  = u; }  Bool  getUseSBACRD                    ()      { return m_bUseSBACRD;  }  Bool  getUseASR                       ()      { return m_bUseASR;     }  Bool  getUseHADME                     ()      { return m_bUseHADME;   }  Bool  getUseLComb                     ()      { return m_bUseLComb;   }  Bool  getUseRDOQ                      ()      { return m_useRDOQ;    }  Bool  getUseRDOQTS                    ()      { return m_useRDOQTS;  }#if L0232_RD_PENALTY  Int      getRDpenalty                  ()      { return m_rdPenalty;  }#endif  Bool getUseFastEnc () { return m_bUseFastEnc; }//获得是否进行FE算法的标志  Bool getUseEarlyCU () { return m_bUseEarlyCU; }//获得是否进行EC算法的标志  Bool getUseFastDecisionForMerge (){ return m_useFastDecisionForMerge; }//获得是否进行FDM算法的标志  Bool getUseCbfFastMode () { return m_bUseCbfFastMode; }//获得是否进行CFM算法的标志  Bool getUseEarlySkipDetection (){ return m_useEarlySkipDetection; }//获得是否进行ESD算法的标志  Bool getUseConstrainedIntraPred () { return m_bUseConstrainedIntraPred; }  Bool getPCMInputBitDepthFlag () { return m_bPCMInputBitDepthFlag;   }  Bool getPCMFilterDisableFlag () { return m_bPCMFilterDisableFlag;   }   Bool getUsePCM () { return m_usePCM;                 }  UInt getPCMLog2MaxSize () { return m_pcmLog2MaxSize;  }  UInt getPCMLog2MinSize () { return  m_uiPCMLog2MinSize;  }//...后面省略


                                             
0 0
原创粉丝点击