Changeset 56 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncCfg.h
- Timestamp:
- 11 May 2012, 21:20:17 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibEncoder/TEncCfg.h
r42 r56 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. 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 1,ISO/IEC6 * Copyright (c) 2010-2012, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 15 15 * this list of conditions and the following disclaimer in the documentation 16 16 * and/or other materials provided with the distribution. 17 * * Neither the name of the I SO/IEC nor the names of its contributors may17 * * Neither the name of the ITU/ISO/IEC nor the names of its contributors may 18 18 * be used to endorse or promote products derived from this software without 19 19 * specific prior written permission. … … 32 32 */ 33 33 34 35 34 /** \file TEncCfg.h 36 35 \brief encoder configuration class (header) … … 44 43 #endif // _MSC_VER > 1000 45 44 46 #include "../TLibCommon/CommonDef.h" 47 #include "TEncSeqStructure.h" 45 #include "TLibCommon/CommonDef.h" 48 46 #include <assert.h> 49 47 50 #include <vector> 48 struct GOPEntryMvc 49 { 50 Int m_POC; 51 Int m_QPOffset; 52 Double m_QPFactor; 53 Int m_temporalId; 54 Bool m_refPic; 55 Int m_numRefPicsActive; 56 Char m_sliceType; 57 Int m_numRefPics; 58 Int m_referencePics[MAX_NUM_REF_PICS]; 59 Int m_usedByCurrPic[MAX_NUM_REF_PICS]; 60 Bool m_interRPSPrediction; 61 Int m_deltaRIdxMinus1; 62 Int m_deltaRPS; 63 Int m_numRefIdc; 64 Int m_refIdc[MAX_NUM_REF_PICS+1]; 65 Int m_numInterViewRefPics; 66 Int m_interViewRefs[MAX_NUM_REF_PICS]; 67 Int m_interViewRefPosL0[MAX_NUM_REF_PICS]; 68 Int m_interViewRefPosL1[MAX_NUM_REF_PICS]; 69 GOPEntryMvc() 70 : m_POC(-1) 71 , m_QPOffset() 72 , m_QPFactor() 73 , m_temporalId() 74 , m_refPic() 75 , m_numRefPicsActive() 76 , m_sliceType() 77 , m_numRefPics() 78 , m_interRPSPrediction() 79 , m_deltaRIdxMinus1() 80 , m_deltaRPS() 81 , m_numRefIdc() 82 , m_numInterViewRefPics() 83 { 84 ::memset( m_referencePics, 0, sizeof(m_referencePics) ); 85 ::memset( m_usedByCurrPic, 0, sizeof(m_usedByCurrPic) ); 86 ::memset( m_refIdc, 0, sizeof(m_refIdc) ); 87 ::memset( m_interViewRefs, 0, sizeof(m_interViewRefs) ); 88 ::memset( m_interViewRefPosL0, 0, sizeof(m_interViewRefPosL0) ); 89 ::memset( m_interViewRefPosL1, 0, sizeof(m_interViewRefPosL1) ); 90 } 91 }; 92 93 std::istringstream &operator>>(std::istringstream &in, GOPEntryMvc &entry); 94 95 //! \ingroup TLibEncoder 96 //! \{ 51 97 52 98 // ==================================================================================================================== … … 63 109 Int m_iSourceWidth; 64 110 Int m_iSourceHeight; 111 #if PIC_CROPPING 112 Int m_croppingMode; 113 Int m_cropLeft; 114 Int m_cropRight; 115 Int m_cropTop; 116 Int m_cropBottom; 117 #endif 65 118 Int m_iFrameToBeEncoded; 119 Double m_adLambdaModifier[ MAX_TLAYER ]; 66 120 67 121 //====== Coding Structure ======== 68 #if DCM_DECODING_REFRESH 122 UInt m_uiIntraPeriod; 69 123 UInt m_uiDecodingRefreshType; ///< the type of decoding refresh employed for the random access. 70 #endif71 72 UInt m_uiCodedPictureStoreSize ;73 124 Int m_iGOPSize; 74 Int m_iRateGOPSize; 75 76 std::string m_cInputFormatString ; 77 125 GOPEntryMvc m_GOPList[MAX_GOP+1]; 126 Int m_extraRPSs; 127 #if H0567_DPB_PARAMETERS_PER_TEMPORAL_LAYER 128 Int m_maxDecPicBuffering[MAX_TLAYER]; 129 Int m_numReorderPics[MAX_TLAYER]; 130 #else 131 Int m_maxNumberOfReferencePictures; 132 Int m_numReorderFrames; 133 #endif 134 78 135 Int m_iQP; // if (AdaptiveQP == OFF) 79 136 80 137 Int m_aiTLayerQPOffset[MAX_TLAYER]; 81 138 Int m_aiPad[2]; 82 139 140 141 Int m_iMaxRefPicNum; ///< this is used to mimic the sliding mechanism used by the decoder 142 // TODO: We need to have a common sliding mechanism used by both the encoder and decoder 143 144 #if H0566_TLA 145 Int m_maxTempLayer; ///< Max temporal layer 146 #else 147 Bool m_bTLayering; ///< indicates whether temporal IDs are set based on the hierarchical coding structure 148 Bool m_abTLayerSwitchingFlag[MAX_TLAYER]; ///< temporal layer switching flags corresponding to temporal layer 149 #endif 150 Bool m_bDisInter4x4; 151 Bool m_useAMP; 83 152 //======= Transform ============= 84 153 UInt m_uiQuadtreeTULog2MaxSize; … … 86 155 UInt m_uiQuadtreeTUMaxDepthInter; 87 156 UInt m_uiQuadtreeTUMaxDepthIntra; 88 89 //====== B Slice ======== 90 91 //====== Entropy Coding ======== 92 Int m_iSymbolMode; // (CAVLC, CABAC) 93 157 158 Bool m_useNSQT; 159 94 160 //====== Loop/Deblock Filter ======== 95 161 Bool m_bLoopFilterDisable; 96 Int m_iLoopFilterAlphaC0Offset; 97 Int m_iLoopFilterBetaOffset; 98 99 #if MTK_SAO 162 Bool m_loopFilterOffsetInAPS; 163 Int m_loopFilterBetaOffsetDiv2; 164 Int m_loopFilterTcOffsetDiv2; 165 #if DBL_CONTROL 166 Bool m_DeblockingFilterControlPresent; 167 #endif 100 168 Bool m_bUseSAO; 101 #endif 102 169 #if SAO_UNIT_INTERLEAVING 170 Int m_maxNumOffsetsPerPic; 171 Bool m_saoInterleavingFlag; 172 #endif 173 174 //====== Lossless ======== 175 #if LOSSLESS_CODING 176 Bool m_useLossless; 177 #endif 103 178 //====== Motion search ======== 104 179 Int m_iFastSearch; // 0:Full search 1:Diamond 2:PMVFAST 105 180 Int m_iSearchRange; // 0:Full frame 106 181 Int m_bipredSearchRange; 182 183 //====== Quality control ======== 107 184 Int m_iMaxDeltaQP; // Max. absolute delta QP (1:default) 108 185 Int m_iMaxCuDQPDepth; // Max. depth for a minimum CuDQP (0:default) 186 187 Int m_iChromaQpOffset ; // ChromaQpOffset (0:default) 188 Int m_iChromaQpOffset2nd; // ChromaQpOffset2nd (0:default) 189 190 #if ADAPTIVE_QP_SELECTION 191 Bool m_bUseAdaptQpSelect; 192 #endif 193 194 Bool m_bUseAdaptiveQP; 195 Int m_iQPAdaptationRange; 196 109 197 #if HHI_VSO 110 198 //====== View Synthesis Optimization ====== 199 Bool m_bUseVSO; 111 200 Bool m_bForceLambdaScale; 112 201 #if HHI_VSO_DIST_INT … … 120 209 Bool m_bUseSBACRD; 121 210 Bool m_bUseALF; 122 #if MQT_ALF_NPASS123 211 Int m_iALFEncodePassReduction; 124 #endif 212 213 Int m_iALFMaxNumberFilters; 214 #if LCU_SYNTAX_ALF 215 Bool m_bALFParamInSlice; 216 Bool m_bALFPicBasedEncode; 217 #endif 218 125 219 Bool m_bUseASR; 126 220 Bool m_bUseHADME; 127 #if DCM_COMB_LIST128 221 Bool m_bUseLComb; 129 222 Bool m_bLCMod; 130 #endif131 223 Bool m_bUseRDOQ; 132 #if !HHI_NO_LowDelayCoding 133 Bool m_bUseLDC; 134 #endif 224 #if !PIC_CROPPING 135 225 Bool m_bUsePAD; 226 #endif 136 227 Bool m_bUseFastEnc; 137 138 #if HHI_VSO 139 Bool m_bUseVSO; 140 #endif 141 Bool m_bUseMRG; // SOPH: 142 #if LM_CHROMA 143 Bool m_bUseLMChroma; 228 Bool m_bUseEarlyCU; 229 230 #if FAST_DECISION_FOR_MRG_RD_COST 231 Bool m_useFastDecisionForMerge; 232 #endif 233 Bool m_bUseCbfFastMode; 234 Bool m_bUseLMChroma; 235 #if HHI_MPI 236 Bool m_bUseMVI; 144 237 #endif 145 238 146 239 Int* m_aidQP; 147 240 UInt m_uiDeltaQpRD; 148 149 #if HHI_RMP_SWITCH 150 Bool m_bUseRMP; 151 #endif 152 #ifdef ROUNDING_CONTROL_BIPRED 153 Bool m_useRoundingControlBipred; 154 #endif 155 #if CONSTRAINED_INTRA_PRED 241 156 242 Bool m_bUseConstrainedIntraPred; 157 #endif 158 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 159 Bool m_bUseDMM; 160 #endif 161 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 162 Bool m_bUseDMM34; 163 #endif 164 #if HHI_MPI 165 Bool m_bUseMVI; 166 #endif 167 243 Bool m_usePCM; 244 UInt m_pcmLog2MaxSize; 245 UInt m_uiPCMLog2MinSize; 168 246 //====== Slice ======== 169 247 Int m_iSliceMode; 170 Int m_iSliceArgument; 248 Int m_iSliceArgument; 171 249 //====== Entropy Slice ======== 172 250 Int m_iEntropySliceMode; 173 251 Int m_iEntropySliceArgument; 174 #if MTK_NONCROSS_INLOOP_FILTER 252 Int m_iSliceGranularity; 175 253 Bool m_bLFCrossSliceBoundaryFlag; 176 #endif 254 255 Bool m_bPCMInputBitDepthFlag; 256 UInt m_uiPCMBitDepthLuma; 257 UInt m_uiPCMBitDepthChroma; 258 Bool m_bPCMFilterDisableFlag; 259 Int m_iTileBehaviorControlPresentFlag; 260 Bool m_bLFCrossTileBoundaryFlag; 261 Int m_iColumnRowInfoPresent; 262 Int m_iUniformSpacingIdr; 263 Int m_iTileBoundaryIndependenceIdr; 264 Int m_iNumColumnsMinus1; 265 UInt* m_puiColumnWidth; 266 Int m_iNumRowsMinus1; 267 UInt* m_puiRowHeight; 268 Int m_iTileLocationInSliceHeaderFlag; //< enable(1)/disable(0) transmitssion of tile location in slice header 269 270 Int m_iTileMarkerFlag; //< enable(1)/disable(0) transmitssion of light weight tile marker 271 Int m_iMaxTileMarkerEntryPoints; //< maximum number of tile markers allowed in a slice (controls degree of parallelism) 272 Double m_dMaxTileMarkerOffset; //< Calculated offset. Light weight tile markers will be transmitted for TileIdx= Offset, 2*Offset, 3*Offset ... 273 274 Int m_iWaveFrontSynchro; 275 Int m_iWaveFrontFlush; 276 Int m_iWaveFrontSubstreams; 177 277 178 278 bool m_pictureDigestEnabled; ///< enable(1)/disable(0) md5 computation and SEI signalling 179 279 180 #ifdef WEIGHT_PRED181 280 //====== Weighted Prediction ======== 182 Bool m_bUseWeightPred; // Use of Weighting Prediction (P_SLICE) 183 UInt m_uiBiPredIdc; // Use of Bi-Directional Weighting Prediction (B_SLICE) 184 #endif 185 186 TEncSeqStructure m_cSequenceStructure; 187 //std::vector<int> m_aiLayerQPOffset; 188 189 #if BITSTREAM_EXTRACTION 190 UInt m_uiLayerId; 191 #endif 192 UInt m_uiViewId; 193 Int m_iViewOrderIdx; 194 Bool m_bIsDepth; 195 UInt m_uiCamParPrecision; 196 Bool m_bCamParInSliceHeader; 197 Int** m_aaiCodedScale; 198 Int** m_aaiCodedOffset; 281 Bool m_bUseWeightPred; //< Use of Weighting Prediction (P_SLICE) 282 UInt m_uiBiPredIdc; //< Use of Bi-Directional Weighting Prediction (B_SLICE) 283 Int m_useScalingListId; ///< Using quantization matrix i.e. 0=off, 1=default, 2=file. 284 char* m_scalingListFile; ///< quantization matrix file name 285 286 Bool m_bEnableTMVP; 287 #if MULTIBITS_DATA_HIDING 288 Int m_signHideFlag; 289 Int m_signHidingThreshold; 290 #endif 291 292 Int m_viewId; 293 Bool m_isDepth; 294 295 #if HHI_INTERVIEW_SKIP 296 Bool m_bInterViewSkip; 297 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 298 Double m_dInterViewSkipLambdaScale; 299 #endif 300 #endif 301 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 302 Bool m_bUseDMM; 303 #endif 304 305 Int m_iViewOrderIdx; 306 307 UInt m_uiCamParPrecision; 308 Bool m_bCamParInSliceHeader; 309 Int** m_aaiCodedScale; 310 Int** m_aaiCodedOffset; 199 311 200 312 #if DEPTH_MAP_GENERATION 201 UInt m_uiPredDepthMapGeneration; 202 UInt m_uiPdmPrecision; 203 Int** m_aaiPdmScaleNomDelta; 204 Int** m_aaiPdmOffset; 205 #endif 313 UInt m_uiPredDepthMapGeneration; 314 UInt m_uiPdmPrecision; 315 Int** m_aaiPdmScaleNomDelta; 316 Int** m_aaiPdmOffset; 317 #endif 318 206 319 #if HHI_INTER_VIEW_MOTION_PRED 207 320 UInt m_uiMultiviewMvPredMode; … … 213 326 #endif 214 327 215 PicOrderCnt m_iQpChangeFrame;216 Int m_iQpChangeOffsetVideo;217 Int m_iQpChangeOffsetDepth;218 #if HHI_INTERVIEW_SKIP219 UInt m_uiInterViewSkip;220 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE221 Double m_dInterViewSkipLambdaScale;222 #endif223 #endif224 225 328 public: 226 329 TEncCfg() {} 227 virtual ~TEncCfg() {} 228 330 virtual ~TEncCfg() 331 { 332 if( m_iUniformSpacingIdr == 0 ) 333 { 334 if( m_iNumColumnsMinus1 ) 335 { 336 delete[] m_puiColumnWidth; 337 m_puiColumnWidth = NULL; 338 } 339 if( m_iNumRowsMinus1 ) 340 { 341 delete[] m_puiRowHeight; 342 m_puiRowHeight = NULL; 343 } 344 } 345 m_iTileLocationInSliceHeaderFlag = 0; 346 m_iTileMarkerFlag = 0; 347 } 348 229 349 Void setFrameRate ( Int i ) { m_iFrameRate = i; } 230 350 Void setFrameSkip ( unsigned int i ) { m_FrameSkip = i; } 231 351 Void setSourceWidth ( Int i ) { m_iSourceWidth = i; } 232 352 Void setSourceHeight ( Int i ) { m_iSourceHeight = i; } 353 #if PIC_CROPPING 354 Void setCroppingMode ( Int i ) { m_croppingMode = i; } 355 Void setCropLeft ( Int i ) { m_cropLeft = i; } 356 Void setCropRight ( Int i ) { m_cropRight = i; } 357 Void setCropTop ( Int i ) { m_cropTop = i; } 358 Void setCropBottom ( Int i ) { m_cropBottom = i; } 359 #endif 233 360 Void setFrameToBeEncoded ( Int i ) { m_iFrameToBeEncoded = i; } 234 361 235 362 //====== Coding Structure ======== 236 #if DCM_DECODING_REFRESH 363 Void setIntraPeriod ( Int i ) { m_uiIntraPeriod = (UInt)i; } 237 364 Void setDecodingRefreshType ( Int i ) { m_uiDecodingRefreshType = (UInt)i; } 238 #endif239 Void setCPSSize ( Int i ) { m_uiCodedPictureStoreSize = (UInt) i ;}240 365 Void setGOPSize ( Int i ) { m_iGOPSize = i; } 241 Void setRateGOPSize ( Int i ) { m_iRateGOPSize = i; } 242 243 #if BITSTREAM_EXTRACTION 244 Void setLayerId ( UInt u ) { m_uiLayerId = u; } 245 UInt getLayerId ( ) { return m_uiLayerId; } 246 #endif 247 Void setViewId ( UInt u ) { m_uiViewId = u; } 248 Void setViewOrderIdx ( Int i ) { m_iViewOrderIdx = i; } 249 Void setIsDepth ( Bool b ) { m_bIsDepth = b; } 250 Void setCamParPrecision ( UInt u ) { m_uiCamParPrecision = u; } 251 Void setCamParInSliceHeader ( Bool b ) { m_bCamParInSliceHeader = b; } 252 Void setCodedScale ( Int** p ) { m_aaiCodedScale = p; } 253 Void setCodedOffset ( Int** p ) { m_aaiCodedOffset = p; } 254 366 Void setGopList ( GOPEntryMvc* GOPList ) { for( Int i = 0; i < MAX_GOP+1; i++ ) m_GOPList[i] = GOPList[i]; } 367 Void setExtraRPSs ( Int i ) { m_extraRPSs = i; } 368 GOPEntryMvc getGOPEntry ( Int i ) { return m_GOPList[i]; } 369 #if H0567_DPB_PARAMETERS_PER_TEMPORAL_LAYER 370 Void setMaxDecPicBuffering ( UInt u, UInt tlayer ) { m_maxDecPicBuffering[tlayer] = u; } 371 Void setNumReorderPics ( Int i, UInt tlayer ) { m_numReorderPics[tlayer] = i; } 372 #else 373 Void setMaxNumberOfReferencePictures ( Int u ) { m_maxNumberOfReferencePictures = u; } 374 Void setNumReorderFrames ( Int i ) { m_numReorderFrames = i; } 375 #endif 376 377 #if HHI_INTERVIEW_SKIP 378 Void setInterViewSkip ( UInt u ) { m_bInterViewSkip = u; } 379 Bool getInterViewSkip ( ) { return m_bInterViewSkip ;} 380 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 381 Void setInterViewSkipLambdaScale ( UInt u ) { m_dInterViewSkipLambdaScale = u; } 382 Double getInterViewSkipLambdaScale () { return m_dInterViewSkipLambdaScale; } 383 #endif 384 #endif 385 Void setQP ( Int i ) { m_iQP = i; } 386 387 Void setTemporalLayerQPOffset ( Int* piTemporalLayerQPOffset ) { for ( Int i = 0; i < MAX_TLAYER; i++ ) m_aiTLayerQPOffset[i] = piTemporalLayerQPOffset[i]; } 388 Void setPad ( Int* iPad ) { for ( Int i = 0; i < 2; i++ ) m_aiPad[i] = iPad[i]; } 389 390 Int getMaxRefPicNum () { return m_iMaxRefPicNum; } 391 Void setMaxRefPicNum ( Int iMaxRefPicNum ) { m_iMaxRefPicNum = iMaxRefPicNum; } 392 393 #if H0566_TLA 394 Bool getMaxTempLayer () { return m_maxTempLayer; } 395 Void setMaxTempLayer ( Int maxTempLayer ) { m_maxTempLayer = maxTempLayer; } 396 #else 397 Bool getTLayering () { return m_bTLayering; } 398 Void setTLayering ( Bool bTLayering ) { m_bTLayering = bTLayering; } 399 Bool getTLayerSwitchingFlag ( UInt uiTLayer ) { assert (uiTLayer < MAX_TLAYER ); return m_abTLayerSwitchingFlag[uiTLayer]; } 400 Void setTLayerSwitchingFlag ( Bool* pbTLayerSwitchingFlag ) { for ( Int i = 0; i < MAX_TLAYER; i++ ) m_abTLayerSwitchingFlag[i] = pbTLayerSwitchingFlag[i]; } 401 #endif 402 403 Bool getDisInter4x4 () { return m_bDisInter4x4; } 404 Void setDisInter4x4 ( Bool b ) { m_bDisInter4x4 = b; } 405 Bool isDepthCoder () { return m_isDepth; } 406 255 407 #if DEPTH_MAP_GENERATION 256 408 Void setPredDepthMapGeneration ( UInt u ) { m_uiPredDepthMapGeneration = u; } … … 259 411 Void setPdmOffset ( Int** p ) { m_aaiPdmOffset = p; } 260 412 #endif 413 261 414 #if HHI_INTER_VIEW_MOTION_PRED 262 415 Void setMultiviewMvPredMode ( UInt u ) { m_uiMultiviewMvPredMode = u; } … … 267 420 Void setMultiviewResPredMode ( UInt u ) { m_uiMultiviewResPredMode = u; } 268 421 #endif 269 270 #if HHI_INTERVIEW_SKIP 271 Void setInterViewSkip ( UInt u ) { m_uiInterViewSkip = u; } 272 Bool getInterViewSkip ( ) { return (m_uiInterViewSkip?true:false) ;} 273 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 274 Void setInterViewSkipLambdaScale ( UInt u ) { m_dInterViewSkipLambdaScale = u; } 275 Double getInterViewSkipLambdaScale () { return m_dInterViewSkipLambdaScale; } 276 #endif 277 #endif 278 279 Bool isDepthCoder () { return m_bIsDepth; } 280 281 Void setSeqStructure( std::string s ) { m_cSequenceStructure.init( s ); } 282 283 Void setQP ( Int i ) { m_iQP = i; } 284 285 Void setTemporalLayerQPOffset ( Int* piTemporalLayerQPOffset ) { for ( Int i = 0; i < MAX_TLAYER; i++ ) m_aiTLayerQPOffset[i] = piTemporalLayerQPOffset[i]; } 286 Void setPad ( Int* iPad ) { for ( Int i = 0; i < 2; i++ ) m_aiPad[i] = iPad[i]; } 287 422 288 423 //======== Transform ============= 289 424 Void setQuadtreeTULog2MaxSize ( UInt u ) { m_uiQuadtreeTULog2MaxSize = u; } … … 291 426 Void setQuadtreeTUMaxDepthInter ( UInt u ) { m_uiQuadtreeTUMaxDepthInter = u; } 292 427 Void setQuadtreeTUMaxDepthIntra ( UInt u ) { m_uiQuadtreeTUMaxDepthIntra = u; } 293 294 //====== b; Slice ======== 295 296 //====== Entropy Coding ======== 297 Void setSymbolMode ( Int i ) { m_iSymbolMode = i; } 298 428 429 Void setUseNSQT( Bool b ) { m_useNSQT = b; } 430 Void setUseAMP( Bool b ) { m_useAMP = b; } 431 299 432 //====== Loop/Deblock Filter ======== 300 433 Void setLoopFilterDisable ( Bool b ) { m_bLoopFilterDisable = b; } 301 Void setLoopFilterAlphaC0Offset ( Int i ) { m_iLoopFilterAlphaC0Offset = i; } 302 Void setLoopFilterBetaOffset ( Int i ) { m_iLoopFilterBetaOffset = i; } 434 Void setLoopFilterOffsetInAPS ( Bool b ) { m_loopFilterOffsetInAPS = b; } 435 Void setLoopFilterBetaOffset ( Int i ) { m_loopFilterBetaOffsetDiv2 = i; } 436 Void setLoopFilterTcOffset ( Int i ) { m_loopFilterTcOffsetDiv2 = i; } 437 #if DBL_CONTROL 438 Void setDeblockingFilterControlPresent ( Bool b ) { m_DeblockingFilterControlPresent = b; } 439 #endif 303 440 304 441 //====== Motion search ======== … … 306 443 Void setSearchRange ( Int i ) { m_iSearchRange = i; } 307 444 Void setBipredSearchRange ( Int i ) { m_bipredSearchRange = i; } 308 Void setMaxDeltaQP ( Int i ) { m_iMaxDeltaQP = i; } 445 446 #if HHI_INTER_VIEW_MOTION_PRED 447 UInt getMultiviewMvRegMode () { return m_uiMultiviewMvRegMode; } 448 Double getMultiviewMvRegLambdaScale () { return m_dMultiviewMvRegLambdaScale; } 449 #endif 309 450 310 451 #if HHI_VSO … … 318 459 #endif 319 460 461 //====== Quality control ======== 462 Void setMaxDeltaQP ( Int i ) { m_iMaxDeltaQP = i; } 463 Void setMaxCuDQPDepth ( Int i ) { m_iMaxCuDQPDepth = i; } 464 465 Void setChromaQpOffset ( Int i ) { m_iChromaQpOffset = i; } 466 Void setChromaQpOffset2nd ( Int i ) { m_iChromaQpOffset2nd = i; } 467 468 #if ADAPTIVE_QP_SELECTION 469 Void setUseAdaptQpSelect ( Bool i ) { m_bUseAdaptQpSelect = i; } 470 Bool getUseAdaptQpSelect () { return m_bUseAdaptQpSelect; } 471 #endif 472 473 Void setUseAdaptiveQP ( Bool b ) { m_bUseAdaptiveQP = b; } 474 Void setQPAdaptationRange ( Int i ) { m_iQPAdaptationRange = i; } 475 476 //====== Lossless ======== 477 #if LOSSLESS_CODING 478 Void setUseLossless (Bool b ) { m_useLossless = b; } 479 #endif 320 480 //====== Sequence ======== 321 481 Int getFrameRate () { return m_iFrameRate; } … … 323 483 Int getSourceWidth () { return m_iSourceWidth; } 324 484 Int getSourceHeight () { return m_iSourceHeight; } 485 #if PIC_CROPPING 486 Int getCroppingMode () { return m_croppingMode; } 487 Int getCropLeft () { return m_cropLeft; } 488 Int getCropRight () { return m_cropRight; } 489 Int getCropTop () { return m_cropTop; } 490 Int getCropBottom () { return m_cropBottom; } 491 #endif 325 492 Int getFrameToBeEncoded () { return m_iFrameToBeEncoded; } 493 void setLambdaModifier ( UInt uiIndex, Double dValue ) { m_adLambdaModifier[ uiIndex ] = dValue; } 494 Double getLambdaModifier ( UInt uiIndex ) const { return m_adLambdaModifier[ uiIndex ]; } 326 495 327 496 //==== Coding Structure ======== 328 #if DCM_DECODING_REFRESH 497 UInt getIntraPeriod () { return m_uiIntraPeriod; } 329 498 UInt getDecodingRefreshType () { return m_uiDecodingRefreshType; } 330 #endif331 UInt getCodedPictureBufferSize () { return m_uiCodedPictureStoreSize ;}332 333 499 Int getGOPSize () { return m_iGOPSize; } 334 Int getRateGOPSize () { return m_iRateGOPSize; } 335 500 #if H0567_DPB_PARAMETERS_PER_TEMPORAL_LAYER 501 Int getMaxDecPicBuffering (UInt tlayer) { return m_maxDecPicBuffering[tlayer]; } 502 Int getNumReorderPics (UInt tlayer) { return m_numReorderPics[tlayer]; } 503 #else 504 Int getMaxNumberOfReferencePictures () { return m_maxNumberOfReferencePictures; } 505 Int geNumReorderFrames () { return m_numReorderFrames; } 506 #endif 336 507 Int getQP () { return m_iQP; } 337 508 338 509 Int getTemporalLayerQPOffset ( Int i ) { assert (i < MAX_TLAYER ); return m_aiTLayerQPOffset[i]; } 339 510 Int getPad ( Int i ) { assert (i < 2 ); return m_aiPad[i]; } 340 511 341 512 //======== Transform ============= 342 513 UInt getQuadtreeTULog2MaxSize () const { return m_uiQuadtreeTULog2MaxSize; } … … 344 515 UInt getQuadtreeTUMaxDepthInter () const { return m_uiQuadtreeTUMaxDepthInter; } 345 516 UInt getQuadtreeTUMaxDepthIntra () const { return m_uiQuadtreeTUMaxDepthIntra; } 346 347 //==== b; Slice ======== 348 349 //==== Entropy Coding ======== 350 Int getSymbolMode () { return m_iSymbolMode; } 351 517 352 518 //==== Loop/Deblock Filter ======== 353 519 Bool getLoopFilterDisable () { return m_bLoopFilterDisable; } 354 Int getLoopFilterAlphaC0Offget () { return m_iLoopFilterAlphaC0Offset; } 355 Int getLoopFilterBetaOffget () { return m_iLoopFilterBetaOffset; } 520 Bool getLoopFilterOffsetInAPS () { return m_loopFilterOffsetInAPS; } 521 Int getLoopFilterBetaOffset () { return m_loopFilterBetaOffsetDiv2; } 522 Int getLoopFilterTcOffset () { return m_loopFilterTcOffsetDiv2; } 523 #if DBL_CONTROL 524 Bool getDeblockingFilterControlPresent() { return m_DeblockingFilterControlPresent; } 525 #endif 356 526 357 527 //==== Motion search ======== 358 528 Int getFastSearch () { return m_iFastSearch; } 359 529 Int getSearchRange () { return m_iSearchRange; } 360 Int getMaxDeltaQP () { return m_iMaxDeltaQP; }361 362 #if HHI_INTER_VIEW_MOTION_PRED363 UInt getMultiviewMvRegMode () { return m_uiMultiviewMvRegMode; }364 Double getMultiviewMvRegLambdaScale () { return m_dMultiviewMvRegLambdaScale; }365 #endif366 367 #if SONY_COLPIC_AVAILABILITY368 Int getViewOrderIdx () { return m_iViewOrderIdx; }369 #endif370 530 371 531 #if HHI_VSO … … 379 539 #endif 380 540 541 //==== Quality control ======== 542 Int getMaxDeltaQP () { return m_iMaxDeltaQP; } 543 Int getMaxCuDQPDepth () { return m_iMaxCuDQPDepth; } 544 Bool getUseAdaptiveQP () { return m_bUseAdaptiveQP; } 545 Int getQPAdaptationRange () { return m_iQPAdaptationRange; } 546 //====== Lossless ======== 547 #if LOSSLESS_CODING 548 Bool getUseLossless () { return m_useLossless; } 549 #endif 550 381 551 //==== Tool list ======== 382 552 Void setUseSBACRD ( Bool b ) { m_bUseSBACRD = b; } … … 384 554 Void setUseHADME ( Bool b ) { m_bUseHADME = b; } 385 555 Void setUseALF ( Bool b ) { m_bUseALF = b; } 386 #if DCM_COMB_LIST387 556 Void setUseLComb ( Bool b ) { m_bUseLComb = b; } 388 557 Void setLCMod ( Bool b ) { m_bLCMod = b; } 389 #endif390 558 Void setUseRDOQ ( Bool b ) { m_bUseRDOQ = b; } 391 #if !HHI_NO_LowDelayCoding 392 Void setUseLDC ( Bool b ) { m_bUseLDC = b; } 393 #endif 559 #if !PIC_CROPPING 394 560 Void setUsePAD ( Bool b ) { m_bUsePAD = b; } 395 Void setUseFastEnc ( Bool b ) { m_bUseFastEnc = b; } 561 #endif 396 562 #if HHI_VSO 397 563 Void setUseVSO ( Bool b ) { m_bUseVSO = b; } 398 564 #endif 399 Void setUseMRG ( Bool b ) { m_bUseMRG = b; } // SOPH: 400 #if CONSTRAINED_INTRA_PRED 565 566 Void setUseFastEnc ( Bool b ) { m_bUseFastEnc = b; } 567 Void setUseEarlyCU ( Bool b ) { m_bUseEarlyCU = b; } 568 #if FAST_DECISION_FOR_MRG_RD_COST 569 Void setUseFastDecisionForMerge ( Bool b ) { m_useFastDecisionForMerge = b; } 570 #endif 571 Void setUseCbfFastMode ( Bool b ) { m_bUseCbfFastMode = b; } 401 572 Void setUseConstrainedIntraPred ( Bool b ) { m_bUseConstrainedIntraPred = b; } 402 #endif 573 Void setPCMInputBitDepthFlag ( Bool b ) { m_bPCMInputBitDepthFlag = b; } 574 Void setPCMFilterDisableFlag ( Bool b ) { m_bPCMFilterDisableFlag = b; } 575 Void setUsePCM ( Bool b ) { m_usePCM = b; } 576 Void setPCMLog2MaxSize ( UInt u ) { m_pcmLog2MaxSize = u; } 577 Void setPCMLog2MinSize ( UInt u ) { m_uiPCMLog2MinSize = u; } 403 578 Void setdQPs ( Int* p ) { m_aidQP = p; } 404 579 Void setDeltaQpRD ( UInt u ) {m_uiDeltaQpRD = u; } 405 406 580 Bool getUseSBACRD () { return m_bUseSBACRD; } 407 581 Bool getUseASR () { return m_bUseASR; } 408 582 Bool getUseHADME () { return m_bUseHADME; } 409 583 Bool getUseALF () { return m_bUseALF; } 410 #if MQT_ALF_NPASS411 584 Void setALFEncodePassReduction (Int i) { m_iALFEncodePassReduction = i; } 412 585 Int getALFEncodePassReduction () { return m_iALFEncodePassReduction; } 413 #endif 414 #if DCM_COMB_LIST 586 587 Void setALFMaxNumberFilters (Int i) { m_iALFMaxNumberFilters = i; } 588 Int getALFMaxNumberFilters () { return m_iALFMaxNumberFilters; } 589 #if LCU_SYNTAX_ALF 590 Void setALFParamInSlice (Bool b) {m_bALFParamInSlice = b;} 591 Bool getALFParamInSlice () {return m_bALFParamInSlice;} 592 Void setALFPicBasedEncode (Bool b) {m_bALFPicBasedEncode = b;} 593 Bool getALFPicBasedEncode () {return m_bALFPicBasedEncode;} 594 #endif 595 415 596 Bool getUseLComb () { return m_bUseLComb; } 416 597 Bool getLCMod () { return m_bLCMod; } 417 #endif418 598 Bool getUseRDOQ () { return m_bUseRDOQ; } 419 #if !HHI_NO_LowDelayCoding 420 Bool getUseLDC () { return m_bUseLDC; } 421 #endif 599 #if !PIC_CROPPING 422 600 Bool getUsePAD () { return m_bUsePAD; } 423 Bool getUseFastEnc () { return m_bUseFastEnc; } 601 #endif 424 602 425 603 #if HHI_VSO 426 604 Bool getUseVSO () { return m_bUseVSO; } 427 605 #endif 428 Bool getUseMRG () { return m_bUseMRG; } // SOPH: 429 #if CONSTRAINED_INTRA_PRED 606 Bool getUseFastEnc () { return m_bUseFastEnc; } 607 Bool getUseEarlyCU () { return m_bUseEarlyCU; } 608 #if FAST_DECISION_FOR_MRG_RD_COST 609 Bool getUseFastDecisionForMerge () { return m_useFastDecisionForMerge; } 610 #endif 611 Bool getUseCbfFastMode () { return m_bUseCbfFastMode; } 430 612 Bool getUseConstrainedIntraPred () { return m_bUseConstrainedIntraPred; } 431 #endif 432 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 433 Void setUseDMM( Bool b) { m_bUseDMM = b; } 434 Bool getUseDMM() { return m_bUseDMM; } 435 #endif 436 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 437 Void setUseDMM34( Bool b) { m_bUseDMM34 = b; } 438 Bool getUseDMM34() { return m_bUseDMM34; } 439 #endif 440 #if LM_CHROMA 613 #if NS_HAD 614 Bool getUseNSQT () { return m_useNSQT; } 615 #endif 616 Bool getPCMInputBitDepthFlag () { return m_bPCMInputBitDepthFlag; } 617 Bool getPCMFilterDisableFlag () { return m_bPCMFilterDisableFlag; } 618 Bool getUsePCM () { return m_usePCM; } 619 UInt getPCMLog2MaxSize () { return m_pcmLog2MaxSize; } 620 UInt getPCMLog2MinSize () { return m_uiPCMLog2MinSize; } 621 441 622 Bool getUseLMChroma () { return m_bUseLMChroma; } 442 623 Void setUseLMChroma ( Bool b ) { m_bUseLMChroma = b; } 443 #endif444 624 445 625 Int* getdQPs () { return m_aidQP; } 446 626 UInt getDeltaQpRD () { return m_uiDeltaQpRD; } 447 #if HHI_RMP_SWITCH 448 Void setUseRMP ( Bool b ) { m_bUseRMP = b; } 449 Bool getUseRMP () {return m_bUseRMP; } 450 #endif 451 #ifdef ROUNDING_CONTROL_BIPRED 452 Void setUseRoundingControlBipred(Bool b) { m_useRoundingControlBipred = b; } 453 Bool getUseRoundingControlBipred() { return m_useRoundingControlBipred; } 454 #endif 627 455 628 //====== Slice ======== 456 629 Void setSliceMode ( Int i ) { m_iSliceMode = i; } … … 463 636 Int getEntropySliceMode () { return m_iEntropySliceMode; } 464 637 Int getEntropySliceArgument () { return m_iEntropySliceArgument;} 465 #if MTK_NONCROSS_INLOOP_FILTER 638 Void setSliceGranularity ( Int i ) { m_iSliceGranularity = i; } 639 Int getSliceGranularity () { return m_iSliceGranularity; } 466 640 Void setLFCrossSliceBoundaryFlag ( Bool bValue ) { m_bLFCrossSliceBoundaryFlag = bValue; } 467 641 Bool getLFCrossSliceBoundaryFlag () { return m_bLFCrossSliceBoundaryFlag; } 468 #endif 469 #if MTK_SAO 642 643 #if HHI_MPI 644 Void setUseMVI (Bool bVal) {m_bUseMVI = bVal;} 645 #endif 470 646 Void setUseSAO (Bool bVal) {m_bUseSAO = bVal;} 471 647 Bool getUseSAO () {return m_bUseSAO;} 472 #endif 473 #if HHI_MPI 474 Void setUseMVI (Bool bVal) {m_bUseMVI = bVal;} 475 #endif 476 648 #if SAO_UNIT_INTERLEAVING 649 Void setMaxNumOffsetsPerPic (Int iVal) { m_maxNumOffsetsPerPic = iVal; } 650 Int getMaxNumOffsetsPerPic () { return m_maxNumOffsetsPerPic; } 651 Void setSaoInterleavingFlag (bool bVal) { m_saoInterleavingFlag = bVal; } 652 Bool getSaoInterleavingFlag () { return m_saoInterleavingFlag; } 653 #endif 654 Void setTileBehaviorControlPresentFlag ( Int i ) { m_iTileBehaviorControlPresentFlag = i; } 655 Int getTileBehaviorControlPresentFlag () { return m_iTileBehaviorControlPresentFlag; } 656 Void setLFCrossTileBoundaryFlag ( Bool bValue ) { m_bLFCrossTileBoundaryFlag = bValue; } 657 Bool getLFCrossTileBoundaryFlag () { return m_bLFCrossTileBoundaryFlag; } 658 Void setColumnRowInfoPresent ( Int i ) { m_iColumnRowInfoPresent = i; } 659 Int getColumnRowInfoPresent () { return m_iColumnRowInfoPresent; } 660 Void setUniformSpacingIdr ( Int i ) { m_iUniformSpacingIdr = i; } 661 Int getUniformSpacingIdr () { return m_iUniformSpacingIdr; } 662 #if !REMOVE_TILE_DEPENDENCE 663 Void setTileBoundaryIndependenceIdr ( Int i ) { m_iTileBoundaryIndependenceIdr = i; } 664 Int getTileBoundaryIndependenceIdr () { return m_iTileBoundaryIndependenceIdr; } 665 #endif 666 Void setNumColumnsMinus1 ( Int i ) { m_iNumColumnsMinus1 = i; } 667 Int getNumColumnsMinus1 () { return m_iNumColumnsMinus1; } 668 Void setColumnWidth ( char* str ) 669 { 670 char *columnWidth; 671 int i=0; 672 Int m_iWidthInCU = ( m_iSourceWidth%g_uiMaxCUWidth ) ? m_iSourceWidth/g_uiMaxCUWidth + 1 : m_iSourceWidth/g_uiMaxCUWidth; 673 674 if( m_iUniformSpacingIdr == 0 && m_iNumColumnsMinus1 > 0 ) 675 { 676 m_puiColumnWidth = new UInt[m_iNumColumnsMinus1]; 677 678 columnWidth = strtok(str, " ,-"); 679 while(columnWidth!=NULL) 680 { 681 if( i>=m_iNumColumnsMinus1 ) 682 { 683 printf( "The number of columns whose width are defined is larger than the allowed number of columns.\n" ); 684 exit( EXIT_FAILURE ); 685 } 686 *( m_puiColumnWidth + i ) = atoi( columnWidth ); 687 printf("col: m_iWidthInCU= %4d i=%4d width= %4d\n",m_iWidthInCU,i,m_puiColumnWidth[i]); //AFU 688 columnWidth = strtok(NULL, " ,-"); 689 i++; 690 } 691 if( i<m_iNumColumnsMinus1 ) 692 { 693 printf( "The width of some columns is not defined.\n" ); 694 exit( EXIT_FAILURE ); 695 } 696 } 697 } 698 UInt getColumnWidth ( UInt columnidx ) { return *( m_puiColumnWidth + columnidx ); } 699 Void setNumRowsMinus1 ( Int i ) { m_iNumRowsMinus1 = i; } 700 Int getNumRowsMinus1 () { return m_iNumRowsMinus1; } 701 Void setRowHeight (char* str) 702 { 703 char *rowHeight; 704 int i=0; 705 Int m_iHeightInCU = ( m_iSourceHeight%g_uiMaxCUHeight ) ? m_iSourceHeight/g_uiMaxCUHeight + 1 : m_iSourceHeight/g_uiMaxCUHeight; 706 707 if( m_iUniformSpacingIdr == 0 && m_iNumRowsMinus1 > 0 ) 708 { 709 m_puiRowHeight = new UInt[m_iNumRowsMinus1]; 710 711 rowHeight = strtok(str, " ,-"); 712 while(rowHeight!=NULL) 713 { 714 if( i>=m_iNumRowsMinus1 ) 715 { 716 printf( "The number of rows whose height are defined is larger than the allowed number of rows.\n" ); 717 exit( EXIT_FAILURE ); 718 } 719 *( m_puiRowHeight + i ) = atoi( rowHeight ); 720 printf("row: m_iHeightInCU=%4d i=%4d height=%4d\n",m_iHeightInCU,i,m_puiRowHeight[i]); //AFU 721 rowHeight = strtok(NULL, " ,-"); 722 i++; 723 } 724 if( i<m_iNumRowsMinus1 ) 725 { 726 printf( "The height of some rows is not defined.\n" ); 727 exit( EXIT_FAILURE ); 728 } 729 } 730 } 731 UInt getRowHeight ( UInt rowIdx ) { return *( m_puiRowHeight + rowIdx ); } 732 Void xCheckGSParameters(); 733 Int getTileLocationInSliceHeaderFlag () { return m_iTileLocationInSliceHeaderFlag; } 734 Void setTileLocationInSliceHeaderFlag ( Int iFlag ) { m_iTileLocationInSliceHeaderFlag = iFlag;} 735 Int getTileMarkerFlag () { return m_iTileMarkerFlag; } 736 Void setTileMarkerFlag ( Int iFlag ) { m_iTileMarkerFlag = iFlag; } 737 Int getMaxTileMarkerEntryPoints () { return m_iMaxTileMarkerEntryPoints; } 738 Void setMaxTileMarkerEntryPoints ( Int iCount ) { m_iMaxTileMarkerEntryPoints = iCount; } 739 Double getMaxTileMarkerOffset () { return m_dMaxTileMarkerOffset; } 740 Void setMaxTileMarkerOffset ( Double dCount ) { m_dMaxTileMarkerOffset = dCount; } 741 Void setWaveFrontSynchro(Int iWaveFrontSynchro) { m_iWaveFrontSynchro = iWaveFrontSynchro; } 742 Int getWaveFrontsynchro() { return m_iWaveFrontSynchro; } 743 Void setWaveFrontFlush(Int iWaveFrontFlush) { m_iWaveFrontFlush = iWaveFrontFlush; } 744 Int getWaveFrontFlush() { return m_iWaveFrontFlush; } 745 Void setWaveFrontSubstreams(Int iWaveFrontSubstreams) { m_iWaveFrontSubstreams = iWaveFrontSubstreams; } 746 Int getWaveFrontSubstreams() { return m_iWaveFrontSubstreams; } 477 747 void setPictureDigestEnabled(bool b) { m_pictureDigestEnabled = b; } 478 748 bool getPictureDigestEnabled() { return m_pictureDigestEnabled; } 479 749 480 #ifdef WEIGHT_PRED 481 Void setUseWP ( Bool b ) { m_bUseWeightPred = b; } 482 Void setWPBiPredIdc ( UInt u ) { m_uiBiPredIdc = u; } 483 Bool getUseWP () { return m_bUseWeightPred; } 484 UInt getWPBiPredIdc () { return m_uiBiPredIdc; } 485 #endif 486 487 Void setQpChangeFrame( PicOrderCnt iPoc ) { m_iQpChangeFrame = iPoc; } 488 Int getQpChangeFrame() { return (Int)m_iQpChangeFrame; } 489 Void setQpChangeOffsetVideo( Int iOffset ) { m_iQpChangeOffsetVideo = iOffset; } 490 Int getQpChangeOffsetVideo() { return m_iQpChangeOffsetVideo; } 491 Void setQpChangeOffsetDepth( Int iOffset ) { m_iQpChangeOffsetDepth = iOffset; } 492 Int getQpChangeOffsetDepth() { return m_iQpChangeOffsetDepth; } 750 Void setUseWP ( Bool b ) { m_bUseWeightPred = b; } 751 Void setWPBiPredIdc ( UInt u ) { m_uiBiPredIdc = u; } 752 Bool getUseWP () { return m_bUseWeightPred; } 753 UInt getWPBiPredIdc () { return m_uiBiPredIdc; } 754 Void setUseScalingListId ( Int u ) { m_useScalingListId = u; } 755 Int getUseScalingListId () { return m_useScalingListId; } 756 Void setScalingListFile ( char* pch ){ m_scalingListFile = pch; } 757 char* getScalingListFile () { return m_scalingListFile; } 758 759 Void setEnableTMVP ( Bool b ) { m_bEnableTMVP = b; } 760 Bool getEnableTMVP () { return m_bEnableTMVP; } 761 #if MULTIBITS_DATA_HIDING 762 Void setSignHideFlag( Int signHideFlag ) { m_signHideFlag = signHideFlag; } 763 Void setTSIG( Int tsig ) { m_signHidingThreshold = tsig; } 764 Int getSignHideFlag() { return m_signHideFlag; } 765 Int getTSIG() { return m_signHidingThreshold; } 766 #endif 767 768 Void setViewId ( Int viewId ) { m_viewId = viewId; } 769 Int getViewId () { return m_viewId; } 770 Void setIsDepth ( Bool isDepth ) { m_isDepth = isDepth; } 771 Bool getIsDepth () { return m_isDepth; } 772 773 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 774 Void setUseDMM( Bool b) { m_bUseDMM = b; } 775 Bool getUseDMM() { return m_bUseDMM; } 776 #endif 777 778 Void setViewOrderIdx ( Int i ) { m_iViewOrderIdx = i; } 779 Void setCamParPrecision ( UInt u ) { m_uiCamParPrecision = u; } 780 Void setCamParInSliceHeader ( Bool b ) { m_bCamParInSliceHeader = b; } 781 Void setCodedScale ( Int** p ) { m_aaiCodedScale = p; } 782 Void setCodedOffset ( Int** p ) { m_aaiCodedOffset = p; } 783 784 #if SONY_COLPIC_AVAILABILITY 785 Int getViewOrderIdx () { return m_iViewOrderIdx; } 786 #endif 493 787 }; 494 788 789 //! \} 790 495 791 #endif // !defined(AFX_TENCCFG_H__6B99B797_F4DA_4E46_8E78_7656339A6C41__INCLUDED_) 496
Note: See TracChangeset for help on using the changeset viewer.