關於HM配置文件的TEncCfg類

http://blog.csdn.net/u012539514/article/details/17952873
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()  
  {}  
[cpp] view plain copy
  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;  }  
//...後面省略  

發佈了10 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章