Changeset 1313 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncCu.h
- Timestamp:
- 13 Aug 2015, 17:38:13 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibEncoder/TEncCu.h
r1196 r1313 2 2 * License, included below. This software may be subject to other third party 3 3 * and contributor rights, including patent rights, and no such rights are 4 * granted under this license. 5 * 6 * Copyright (c) 2010-2015, ITU/ISO/IEC4 * granted under this license. 5 * 6 * Copyright (c) 2010-2015, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 66 66 { 67 67 private: 68 68 69 69 TComDataCU** m_ppcBestCU; ///< Best CUs in each depth 70 70 TComDataCU** m_ppcTempCU; ///< Temporary CUs in each depth 71 #if H_3D_ARP71 #if NH_3D_ARP 72 72 TComDataCU** m_ppcWeightedTempCU; 73 73 #endif 74 74 UChar m_uhTotalDepth; 75 75 76 76 TComYuv** m_ppcPredYuvBest; ///< Best Prediction Yuv for each depth 77 77 TComYuv** m_ppcResiYuvBest; ///< Best Residual Yuv for each depth … … 81 81 TComYuv** m_ppcRecoYuvTemp; ///< Temporary Reconstruction Yuv for each depth 82 82 TComYuv** m_ppcOrigYuv; ///< Original Yuv for each depth 83 84 #if H_3D_DBBP83 84 #if NH_3D_DBBP 85 85 TComYuv** m_ppcOrigYuvDBBP; 86 86 #endif … … 88 88 // Data : encoder control 89 89 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 91 94 // Access channel 92 95 TEncCfg* m_pcEncCfg; 93 96 TEncSearch* m_pcPredSearch; 94 97 TComTrQuant* m_pcTrQuant; 95 TComBitCounter* m_pcBitCounter;96 98 TComRdCost* m_pcRdCost; 97 99 98 100 TEncEntropy* m_pcEntropyCoder; 99 TEncCavlc* m_pcCavlcCoder;100 TEncSbac* m_pcSbacCoder;101 101 TEncBinCABAC* m_pcBinCABAC; 102 102 103 103 // SBAC RD 104 104 TEncSbac*** m_pppcRDSbacCoder; 105 105 TEncSbac* m_pcRDGoOnSbacCoder; 106 106 TEncRateCtrl* m_pcRateCtrl; 107 107 108 #if KWU_RC_MADPRED_E0227 108 109 UInt m_LCUPredictionSAD; … … 114 115 /// copy parameters from encoder class 115 116 Void init ( TEncTop* pcEncTop ); 116 117 117 118 /// 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 120 121 /// destroy internal buffers 121 122 Void destroy (); 122 123 /// C U analysis function124 Void compressC U ( TComDataCU*& rpcCU);125 126 /// C U encoding function127 Void encodeC U ( 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 ); 130 131 #if KWU_RC_MADPRED_E0227 131 132 UInt getLCUPredictionSAD() { return m_LCUPredictionSAD; } 132 133 #endif 133 Int updateLCUDataISlice ( TComDataCU* pcCU, Int LCUIdx, Int width, Int height ); 134 135 Void setFastDeltaQp ( Bool b) { m_bFastDeltaQP = b; } 136 134 137 protected: 135 Void finishCU ( TComDataCU* pcCU, UInt uiAbsPartIdx , UInt uiDepth);138 Void finishCU ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 136 139 #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 ); 140 143 #endif 141 144 Void xEncodeCU ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 142 145 143 146 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 ); 147 150 148 151 #if AMP_MRG 149 #if H_3D_FAST_TEXTURE_ENCODING150 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 ); 153 156 #endif 154 157 #else 155 158 Void xCheckRDCostInter ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize ); 156 159 #endif 157 #if H_3D_DBBP160 #if NH_3D_DBBP 158 161 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_3D162 Void xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU DEBUG_STRING_FN_DECLARE(sDebug), Bool bUseMRG = false ); 163 #endif 164 #if NH_3D_DIS 162 165 Void xCheckRDCostDIS ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize ); 163 166 #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 ); 169 176 Void xCheckDQP ( TComDataCU* pcCU ); 170 177 171 178 Void xCheckIntraPCM ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU ); 172 179 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 ); 174 181 Void xCopyYuv2Tmp ( UInt uhPartUnitIdx, UInt uiDepth ); 175 182 … … 177 184 Void setdQPFlag ( Bool b ) { m_bEncodeDQP = b; } 178 185 186 Bool getFastDeltaQp () const { return m_bFastDeltaQP; } 187 188 Bool getCodeChromaQpAdjFlag() { return m_stillToCodeChromaQpOffsetFlag; } 189 Void setCodeChromaQpAdjFlag( Bool b ) { m_stillToCodeChromaQpOffsetFlag = b; } 190 179 191 #if ADAPTIVE_QP_SELECTION 180 192 // Adaptive reconstruction level (ARL) statistics collection functions 181 Void x LcuCollectARLStats(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 186 198 #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 ); 194 206 }; 195 207
Note: See TracChangeset for help on using the changeset viewer.