Changeset 1313 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncCu.h


Ignore:
Timestamp:
13 Aug 2015, 17:38:13 (9 years ago)
Author:
tech
Message:

Merged 14.1-update-dev1@1312.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibEncoder/TEncCu.h

    r1196 r1313  
    22 * License, included below. This software may be subject to other third party
    33 * and contributor rights, including patent rights, and no such rights are
    4  * granted under this license. 
    5  *
    6 * Copyright (c) 2010-2015, ITU/ISO/IEC
     4 * granted under this license.
     5 *
     6 * Copyright (c) 2010-2015, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    6666{
    6767private:
    68  
     68
    6969  TComDataCU**            m_ppcBestCU;      ///< Best CUs in each depth
    7070  TComDataCU**            m_ppcTempCU;      ///< Temporary CUs in each depth
    71 #if H_3D_ARP
     71#if NH_3D_ARP
    7272  TComDataCU**            m_ppcWeightedTempCU;
    7373#endif
    7474  UChar                   m_uhTotalDepth;
    75  
     75
    7676  TComYuv**               m_ppcPredYuvBest; ///< Best Prediction Yuv for each depth
    7777  TComYuv**               m_ppcResiYuvBest; ///< Best Residual Yuv for each depth
     
    8181  TComYuv**               m_ppcRecoYuvTemp; ///< Temporary Reconstruction Yuv for each depth
    8282  TComYuv**               m_ppcOrigYuv;     ///< Original Yuv for each depth
    83  
    84 #if H_3D_DBBP
     83
     84#if NH_3D_DBBP
    8585  TComYuv**               m_ppcOrigYuvDBBP;
    8686#endif
     
    8888  //  Data : encoder control
    8989  Bool                    m_bEncodeDQP;
    90  
     90  Bool                    m_bFastDeltaQP;
     91  Bool                    m_stillToCodeChromaQpOffsetFlag; //indicates whether chroma QP offset flag needs to coded at this particular CU granularity.
     92  Int                     m_cuChromaQpOffsetIdxPlus1; // if 0, then cu_chroma_qp_offset_flag will be 0, otherwise cu_chroma_qp_offset_flag will be 1.
     93
    9194  //  Access channel
    9295  TEncCfg*                m_pcEncCfg;
    9396  TEncSearch*             m_pcPredSearch;
    9497  TComTrQuant*            m_pcTrQuant;
    95   TComBitCounter*         m_pcBitCounter;
    9698  TComRdCost*             m_pcRdCost;
    97  
     99
    98100  TEncEntropy*            m_pcEntropyCoder;
    99   TEncCavlc*              m_pcCavlcCoder;
    100   TEncSbac*               m_pcSbacCoder;
    101101  TEncBinCABAC*           m_pcBinCABAC;
    102  
     102
    103103  // SBAC RD
    104104  TEncSbac***             m_pppcRDSbacCoder;
    105105  TEncSbac*               m_pcRDGoOnSbacCoder;
    106106  TEncRateCtrl*           m_pcRateCtrl;
     107
    107108#if KWU_RC_MADPRED_E0227
    108109  UInt                    m_LCUPredictionSAD;
     
    114115  /// copy parameters from encoder class
    115116  Void  init                ( TEncTop* pcEncTop );
    116  
     117
    117118  /// create internal buffers
    118   Void  create              ( UChar uhTotalDepth, UInt iMaxWidth, UInt iMaxHeight );
    119  
     119  Void  create              ( UChar uhTotalDepth, UInt iMaxWidth, UInt iMaxHeight, ChromaFormat chromaFormat );
     120
    120121  /// destroy internal buffers
    121122  Void  destroy             ();
    122  
    123   /// CU analysis function
    124   Void  compressCU          ( TComDataCU*&  rpcCU );
    125  
    126   /// CU encoding function
    127   Void  encodeCU            ( TComDataCU*    pcCU );
    128  
    129   Void setBitCounter        ( TComBitCounter* pcBitCounter ) { m_pcBitCounter = pcBitCounter; }
     123
     124  /// CTU analysis function
     125  Void  compressCtu         ( TComDataCU*  pCtu );
     126
     127  /// CTU encoding function
     128  Void  encodeCtu           ( TComDataCU*  pCtu );
     129
     130  Int   updateCtuDataISlice ( TComDataCU* pCtu, Int width, Int height );
    130131#if KWU_RC_MADPRED_E0227
    131132  UInt getLCUPredictionSAD() { return m_LCUPredictionSAD; }
    132133#endif
    133   Int   updateLCUDataISlice ( TComDataCU* pcCU, Int LCUIdx, Int width, Int height );
     134
     135  Void setFastDeltaQp       ( Bool b)                 { m_bFastDeltaQP = b;         }
     136
    134137protected:
    135   Void  finishCU            ( TComDataCU*  pcCU, UInt uiAbsPartIdx,           UInt uiDepth        );
     138  Void  finishCU            ( TComDataCU*  pcCU, UInt uiAbsPartIdx );
    136139#if AMP_ENC_SPEEDUP
    137   Void  xCompressCU         ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UInt uiDepth, PartSize eParentPartSize = SIZE_NONE );
    138 #else
    139   Void  xCompressCU         ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UInt uiDepth        );
     140  Void  xCompressCU         ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, const UInt uiDepth DEBUG_STRING_FN_DECLARE(sDebug), PartSize eParentPartSize = NUMBER_OF_PART_SIZES );
     141#else
     142  Void  xCompressCU         ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, const UInt uiDepth        );
    140143#endif
    141144  Void  xEncodeCU           ( TComDataCU*  pcCU, UInt uiAbsPartIdx,           UInt uiDepth        );
    142  
     145
    143146  Int   xComputeQP          ( TComDataCU* pcCU, UInt uiDepth );
    144   Void  xCheckBestMode      ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UInt uiDepth        );
    145  
    146   Void  xCheckRDCostMerge2Nx2N( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool *earlyDetectionSkipMode);
     147  Void  xCheckBestMode      ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UInt uiDepth DEBUG_STRING_FN_DECLARE(sParent) DEBUG_STRING_FN_DECLARE(sTest) DEBUG_STRING_PASS_INTO(Bool bAddSizeInfo=true));
     148
     149  Void  xCheckRDCostMerge2Nx2N( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU DEBUG_STRING_FN_DECLARE(sDebug), Bool *earlyDetectionSkipMode );
    147150
    148151#if AMP_MRG
    149 #if  H_3D_FAST_TEXTURE_ENCODING
    150   Void  xCheckRDCostInter   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize,  Bool bFMD, Bool bUseMRG = false  ) ;
    151 #else
    152   Void  xCheckRDCostInter   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bUseMRG = false  );
     152#if  NH_3D_FAST_TEXTURE_ENCODING
     153  Void  xCheckRDCostInter   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize DEBUG_STRING_FN_DECLARE(sDebug),  Bool bFMD, Bool bUseMRG = false  ) ;
     154#else
     155  Void  xCheckRDCostInter   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize DEBUG_STRING_FN_DECLARE(sDebug), Bool bUseMRG = false  );
    153156#endif
    154157#else
    155158  Void  xCheckRDCostInter   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize  );
    156159#endif
    157 #if H_3D_DBBP
     160#if NH_3D_DBBP
    158161  Void  xInvalidateOriginalSegments( TComYuv* pOrigYuv, TComYuv* pOrigYuvTemp, Bool* pMask, UInt uiValidSegment );
    159   Void  xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bUseMRG = false );
    160 #endif
    161 #if H_3D
     162  Void  xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU  DEBUG_STRING_FN_DECLARE(sDebug), Bool bUseMRG = false );
     163#endif
     164#if NH_3D_DIS
    162165  Void  xCheckRDCostDIS   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize  );
    163166#endif
    164 #if H_3D_DIM
    165   Void  xCheckRDCostIntra   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bOnlyIVP );
    166 #else
    167   Void  xCheckRDCostIntra   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize  );
    168 #endif
     167  Void  xCheckRDCostIntra   ( TComDataCU *&rpcBestCU,
     168                              TComDataCU *&rpcTempCU,
     169                              Double      &cost,
     170                              PartSize     ePartSize
     171                              DEBUG_STRING_FN_DECLARE(sDebug)
     172#if NH_3D_ENC_DEPTH
     173                            , Bool bOnlyIVP
     174#endif
     175                            );
    169176  Void  xCheckDQP           ( TComDataCU*  pcCU );
    170  
     177
    171178  Void  xCheckIntraPCM      ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU                      );
    172179  Void  xCopyAMVPInfo       ( AMVPInfo* pSrc, AMVPInfo* pDst );
    173   Void  xCopyYuv2Pic        (TComPic* rpcPic, UInt uiCUAddr, UInt uiAbsPartIdx, UInt uiDepth, UInt uiSrcDepth, TComDataCU* pcCU, UInt uiLPelX, UInt uiTPelY );
     180  Void  xCopyYuv2Pic        (TComPic* rpcPic, UInt uiCUAddr, UInt uiAbsPartIdx, UInt uiDepth, UInt uiSrcDepth );
    174181  Void  xCopyYuv2Tmp        ( UInt uhPartUnitIdx, UInt uiDepth );
    175182
     
    177184  Void setdQPFlag           ( Bool b )                { m_bEncodeDQP = b;           }
    178185
     186  Bool getFastDeltaQp       () const                  { return m_bFastDeltaQP;      }
     187
     188  Bool getCodeChromaQpAdjFlag() { return m_stillToCodeChromaQpOffsetFlag; }
     189  Void setCodeChromaQpAdjFlag( Bool b ) { m_stillToCodeChromaQpOffsetFlag = b; }
     190
    179191#if ADAPTIVE_QP_SELECTION
    180192  // Adaptive reconstruction level (ARL) statistics collection functions
    181   Void xLcuCollectARLStats(TComDataCU* rpcCU);
    182   Int  xTuCollectARLStats(TCoeff* rpcCoeff, Int* rpcArlCoeff, Int NumCoeffInCU, Double* cSum, UInt* numSamples );
    183 #endif
    184 
    185 #if AMP_ENC_SPEEDUP 
     193  Void xCtuCollectARLStats(TComDataCU* pCtu);
     194  Int  xTuCollectARLStats(TCoeff* rpcCoeff, TCoeff* rpcArlCoeff, Int NumCoeffInCU, Double* cSum, UInt* numSamples );
     195#endif
     196
     197#if AMP_ENC_SPEEDUP
    186198#if AMP_MRG
    187   Void deriveTestModeAMP (TComDataCU *&rpcBestCU, PartSize eParentPartSize, Bool &bTestAMP_Hor, Bool &bTestAMP_Ver, Bool &bTestMergeAMP_Hor, Bool &bTestMergeAMP_Ver);
    188 #else
    189   Void deriveTestModeAMP (TComDataCU *&rpcBestCU, PartSize eParentPartSize, Bool &bTestAMP_Hor, Bool &bTestAMP_Ver);
    190 #endif
    191 #endif
    192 
    193   Void  xFillPCMBuffer     ( TComDataCU*& pCU, TComYuv* pOrgYuv );
     199  Void deriveTestModeAMP (TComDataCU *pcBestCU, PartSize eParentPartSize, Bool &bTestAMP_Hor, Bool &bTestAMP_Ver, Bool &bTestMergeAMP_Hor, Bool &bTestMergeAMP_Ver);
     200#else
     201  Void deriveTestModeAMP (TComDataCU *pcBestCU, PartSize eParentPartSize, Bool &bTestAMP_Hor, Bool &bTestAMP_Ver);
     202#endif
     203#endif
     204
     205  Void  xFillPCMBuffer     ( TComDataCU* pCU, TComYuv* pOrgYuv );
    194206};
    195207
Note: See TracChangeset for help on using the changeset viewer.