1 /* The copyright in this software is being made available under the BSD 2 * License, included below. This software may be subject to other third party 3 * and contributor rights, including patent rights, and no such rights are 4 * granted under this license. 5 * 6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions are met: 11 * 12 * * Redistributions of source code must retain the above copyright notice, 13 * this list of conditions and the following disclaimer. 14 * * Redistributions in binary form must reproduce the above copyright notice, 15 * this list of conditions and the following disclaimer in the documentation 16 * and/or other materials provided with the distribution. 17 * * Neither the name of the ITU/ISO/IEC nor the names of its contributors may 18 * be used to endorse or promote products derived from this software without 19 * specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS 25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 31 * THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 /** \file TEncCfg.h 35 \brief encoder configuration class (header) 36 */ 37 38 #ifndef __TENCCFG__ 39 #define __TENCCFG__ 40 41 #if _MSC_VER > 1000 42 #pragma once 43 #endif // _MSC_VER > 1000 44 45 #include "TLibCommon/CommonDef.h" 46 #include "TLibCommon/TComSlice.h" 47 #include <assert.h> 48 49 struct GOPEntry 50 { 51 Int m_POC; 52 Int m_QPOffset; 53 Double m_QPFactor; 54 Int m_tcOffsetDiv2; 55 Int m_betaOffsetDiv2; 56 Int m_temporalId; 57 Bool m_refPic; 58 Int m_numRefPicsActive; 59 Char m_sliceType; 60 Int m_numRefPics; 61 Int m_referencePics[MAX_NUM_REF_PICS]; 62 Int m_usedByCurrPic[MAX_NUM_REF_PICS]; 63 #if AUTO_INTER_RPS 64 Int m_interRPSPrediction; 65 #else 66 Bool m_interRPSPrediction; 67 #endif 68 Int m_deltaRPS; 69 Int m_numRefIdc; 70 Int m_refIdc[MAX_NUM_REF_PICS+1]; 71 Bool m_isEncoded; GOPEntryGOPEntry72 GOPEntry() 73 : m_POC(-1) 74 , m_QPOffset(0) 75 , m_QPFactor(0) 76 , m_tcOffsetDiv2(0) 77 , m_betaOffsetDiv2(0) 78 , m_temporalId(0) 79 , m_refPic(false) 80 , m_numRefPicsActive(0) 81 , m_sliceType('P') 82 , m_numRefPics(0) 83 , m_interRPSPrediction(false) 84 , m_deltaRPS(0) 85 , m_numRefIdc(0) 86 , m_isEncoded(false) 87 { 88 ::memset( m_referencePics, 0, sizeof(m_referencePics) ); 89 ::memset( m_usedByCurrPic, 0, sizeof(m_usedByCurrPic) ); 90 ::memset( m_refIdc, 0, sizeof(m_refIdc) ); 91 } 92 }; 93 94 std::istringstream &operator>>(std::istringstream &in, GOPEntry &entry); //input 95 //! \ingroup TLibEncoder 96 //! \{ 97 98 // ==================================================================================================================== 99 // Class definition 100 // ==================================================================================================================== 101 102 /// encoder configuration class 103 class TEncCfg 104 { 105 protected: 106 //==== File I/O ======== 107 Int m_iFrameRate; 108 Int m_FrameSkip; 109 Int m_iSourceWidth; 110 Int m_iSourceHeight; 111 Window m_conformanceWindow; 112 Int m_framesToBeEncoded; 113 Double m_adLambdaModifier[ MAX_TLAYER ]; 114 115 Bool m_printMSEBasedSequencePSNR; 116 Bool m_printFrameMSE; 117 Bool m_printSequenceMSE; 118 Bool m_cabacZeroWordPaddingEnabled; 119 120 /* profile & level */ 121 Profile::Name m_profile; 122 Level::Tier m_levelTier; 123 Level::Name m_level; 124 Bool m_progressiveSourceFlag; 125 Bool m_interlacedSourceFlag; 126 Bool m_nonPackedConstraintFlag; 127 Bool m_frameOnlyConstraintFlag; 128 UInt m_bitDepthConstraintValue; 129 ChromaFormat m_chromaFormatConstraintValue; 130 Bool m_intraConstraintFlag; 131 Bool m_lowerBitRateConstraintFlag; 132 133 //====== Coding Structure ======== 134 UInt m_uiIntraPeriod; 135 UInt m_uiDecodingRefreshType; ///< the type of decoding refresh employed for the random access. 136 Int m_iGOPSize; 137 GOPEntry m_GOPList[MAX_GOP]; 138 Int m_extraRPSs; 139 Int m_maxDecPicBuffering[MAX_TLAYER]; 140 Int m_numReorderPics[MAX_TLAYER]; 141 142 Int m_iQP; // if (AdaptiveQP == OFF) 143 144 Int m_aiPad[2]; 145 146 147 Int m_iMaxRefPicNum; ///< this is used to mimic the sliding mechanism used by the decoder 148 // TODO: We need to have a common sliding mechanism used by both the encoder and decoder 149 150 Int m_maxTempLayer; ///< Max temporal layer 151 Bool m_useAMP; 152 //======= Transform ============= 153 UInt m_uiQuadtreeTULog2MaxSize; 154 UInt m_uiQuadtreeTULog2MinSize; 155 UInt m_uiQuadtreeTUMaxDepthInter; 156 UInt m_uiQuadtreeTUMaxDepthIntra; 157 158 //====== Loop/Deblock Filter ======== 159 Bool m_bLoopFilterDisable; 160 Bool m_loopFilterOffsetInPPS; 161 Int m_loopFilterBetaOffsetDiv2; 162 Int m_loopFilterTcOffsetDiv2; 163 Bool m_DeblockingFilterControlPresent; 164 Bool m_DeblockingFilterMetric; 165 Bool m_bUseSAO; 166 Int m_maxNumOffsetsPerPic; 167 Bool m_saoCtuBoundary; 168 169 //====== Motion search ======== 170 Int m_iFastSearch; // 0:Full search 1:Diamond 2:PMVFAST 171 Int m_iSearchRange; // 0:Full frame 172 Int m_bipredSearchRange; 173 174 //====== Quality control ======== 175 Int m_iMaxDeltaQP; // Max. absolute delta QP (1:default) 176 Int m_iMaxCuDQPDepth; // Max. depth for a minimum CuDQP (0:default) 177 Int m_maxCUChromaQpAdjustmentDepth; 178 179 Int m_chromaCbQpOffset; // Chroma Cb QP Offset (0:default) 180 Int m_chromaCrQpOffset; // Chroma Cr Qp Offset (0:default) 181 ChromaFormat m_chromaFormatIDC; 182 183 #if ADAPTIVE_QP_SELECTION 184 Bool m_bUseAdaptQpSelect; 185 #endif 186 Bool m_useExtendedPrecision; 187 Bool m_useHighPrecisionPredictionWeighting; 188 Bool m_bUseAdaptiveQP; 189 Int m_iQPAdaptationRange; 190 191 //====== Tool list ======== 192 Bool m_bUseASR; 193 Bool m_bUseHADME; 194 Bool m_useRDOQ; 195 Bool m_useRDOQTS; 196 UInt m_rdPenalty; 197 Bool m_bUseFastEnc; 198 Bool m_bUseEarlyCU; 199 Bool m_useFastDecisionForMerge; 200 Bool m_bUseCbfFastMode; 201 Bool m_useEarlySkipDetection; 202 Bool m_useCrossComponentPrediction; 203 Bool m_reconBasedCrossCPredictionEstimate; 204 UInt m_saoOffsetBitShift[MAX_NUM_CHANNEL_TYPE]; 205 Bool m_useTransformSkip; 206 Bool m_useTransformSkipFast; 207 UInt m_transformSkipLog2MaxSize; 208 Bool m_useResidualRotation; 209 Bool m_useSingleSignificanceMapContext; 210 Bool m_useGolombRiceParameterAdaptation; 211 Bool m_alignCABACBeforeBypass; 212 Bool m_useResidualDPCM[NUMBER_OF_RDPCM_SIGNALLING_MODES]; 213 Int* m_aidQP; 214 UInt m_uiDeltaQpRD; 215 216 Bool m_bUseConstrainedIntraPred; 217 Bool m_usePCM; 218 UInt m_pcmLog2MaxSize; 219 UInt m_uiPCMLog2MinSize; 220 //====== Slice ======== 221 SliceConstraint m_sliceMode; 222 Int m_sliceArgument; 223 //====== Dependent Slice ======== 224 SliceConstraint m_sliceSegmentMode; 225 Int m_sliceSegmentArgument; 226 Bool m_bLFCrossSliceBoundaryFlag; 227 228 Bool m_bPCMInputBitDepthFlag; 229 UInt m_uiPCMBitDepthLuma; 230 UInt m_uiPCMBitDepthChroma; 231 Bool m_bPCMFilterDisableFlag; 232 Bool m_disableIntraReferenceSmoothing; 233 Bool m_loopFilterAcrossTilesEnabledFlag; 234 Bool m_tileUniformSpacingFlag; 235 Int m_iNumColumnsMinus1; 236 Int m_iNumRowsMinus1; 237 std::vector<Int> m_tileColumnWidth; 238 std::vector<Int> m_tileRowHeight; 239 240 Int m_iWaveFrontSynchro; 241 Int m_iWaveFrontSubstreams; 242 243 Int m_decodedPictureHashSEIEnabled; ///< Checksum(3)/CRC(2)/MD5(1)/disable(0) acting on decoded picture hash SEI message 244 Int m_bufferingPeriodSEIEnabled; 245 Int m_pictureTimingSEIEnabled; 246 Int m_recoveryPointSEIEnabled; 247 Bool m_toneMappingInfoSEIEnabled; 248 Int m_toneMapId; 249 Bool m_toneMapCancelFlag; 250 Bool m_toneMapPersistenceFlag; 251 Int m_codedDataBitDepth; 252 Int m_targetBitDepth; 253 Int m_modelId; 254 Int m_minValue; 255 Int m_maxValue; 256 Int m_sigmoidMidpoint; 257 Int m_sigmoidWidth; 258 Int m_numPivots; 259 Int m_cameraIsoSpeedIdc; 260 Int m_cameraIsoSpeedValue; 261 Int m_exposureIndexIdc; 262 Int m_exposureIndexValue; 263 Int m_exposureCompensationValueSignFlag; 264 Int m_exposureCompensationValueNumerator; 265 Int m_exposureCompensationValueDenomIdc; 266 Int m_refScreenLuminanceWhite; 267 Int m_extendedRangeWhiteLevel; 268 Int m_nominalBlackLevelLumaCodeValue; 269 Int m_nominalWhiteLevelLumaCodeValue; 270 Int m_extendedWhiteLevelLumaCodeValue; 271 Int* m_startOfCodedInterval; 272 Int* m_codedPivotValue; 273 Int* m_targetPivotValue; 274 Int m_framePackingSEIEnabled; 275 Int m_framePackingSEIType; 276 Int m_framePackingSEIId; 277 Int m_framePackingSEIQuincunx; 278 Int m_framePackingSEIInterpretation; 279 Int m_segmentedRectFramePackingSEIEnabled; 280 Bool m_segmentedRectFramePackingSEICancel; 281 Int m_segmentedRectFramePackingSEIType; 282 Bool m_segmentedRectFramePackingSEIPersistence; 283 Int m_displayOrientationSEIAngle; 284 Int m_temporalLevel0IndexSEIEnabled; 285 Int m_gradualDecodingRefreshInfoEnabled; 286 Int m_noDisplaySEITLayer; 287 Int m_decodingUnitInfoSEIEnabled; 288 Int m_SOPDescriptionSEIEnabled; 289 Int m_scalableNestingSEIEnabled; 290 Bool m_tmctsSEIEnabled; 291 Bool m_timeCodeSEIEnabled; 292 Int m_timeCodeSEINumTs; 293 TComSEITimeSet m_timeSetArray[MAX_TIMECODE_SEI_SETS]; 294 Bool m_kneeSEIEnabled; 295 Int m_kneeSEIId; 296 Bool m_kneeSEICancelFlag; 297 Bool m_kneeSEIPersistenceFlag; 298 Int m_kneeSEIInputDrange; 299 Int m_kneeSEIInputDispLuminance; 300 Int m_kneeSEIOutputDrange; 301 Int m_kneeSEIOutputDispLuminance; 302 Int m_kneeSEINumKneePointsMinus1; 303 Int* m_kneeSEIInputKneePoint; 304 Int* m_kneeSEIOutputKneePoint; 305 TComSEIMasteringDisplay m_masteringDisplay; 306 //====== Weighted Prediction ======== 307 Bool m_useWeightedPred; //< Use of Weighting Prediction (P_SLICE) 308 Bool m_useWeightedBiPred; //< Use of Bi-directional Weighting Prediction (B_SLICE) 309 UInt m_log2ParallelMergeLevelMinus2; ///< Parallel merge estimation region 310 UInt m_maxNumMergeCand; ///< Maximum number of merge candidates 311 ScalingListMode m_useScalingListId; ///< Using quantization matrix i.e. 0=off, 1=default, 2=file. 312 Char* m_scalingListFile; ///< quantization matrix file name 313 Int m_TMVPModeId; 314 Int m_signHideFlag; 315 Bool m_RCEnableRateControl; 316 Int m_RCTargetBitrate; 317 Int m_RCKeepHierarchicalBit; 318 Bool m_RCLCULevelRC; 319 Bool m_RCUseLCUSeparateModel; 320 Int m_RCInitialQP; 321 Bool m_RCForceIntraQP; 322 Bool m_TransquantBypassEnableFlag; ///< transquant_bypass_enable_flag setting in PPS. 323 Bool m_CUTransquantBypassFlagForce; ///< if transquant_bypass_enable_flag, then, if true, all CU transquant bypass flags will be set to true. 324 325 CostMode m_costMode; ///< The cost function to use, primarily when considering lossless coding. 326 327 TComVPS m_cVPS; 328 Bool m_recalculateQPAccordingToLambda; ///< recalculate QP value according to the lambda value 329 Int m_activeParameterSetsSEIEnabled; ///< enable active parameter set SEI message 330 Bool m_vuiParametersPresentFlag; ///< enable generation of VUI parameters 331 Bool m_aspectRatioInfoPresentFlag; ///< Signals whether aspect_ratio_idc is present 332 Bool m_chromaSamplingFilterHintEnabled; ///< Signals whether chroma sampling filter hint data is present 333 Int m_chromaSamplingHorFilterIdc; ///< Specifies the Index of filter to use 334 Int m_chromaSamplingVerFilterIdc; ///< Specifies the Index of filter to use 335 Int m_aspectRatioIdc; ///< aspect_ratio_idc 336 Int m_sarWidth; ///< horizontal size of the sample aspect ratio 337 Int m_sarHeight; ///< vertical size of the sample aspect ratio 338 Bool m_overscanInfoPresentFlag; ///< Signals whether overscan_appropriate_flag is present 339 Bool m_overscanAppropriateFlag; ///< Indicates whether conformant decoded pictures are suitable for display using overscan 340 Bool m_videoSignalTypePresentFlag; ///< Signals whether video_format, video_full_range_flag, and colour_description_present_flag are present 341 Int m_videoFormat; ///< Indicates representation of pictures 342 Bool m_videoFullRangeFlag; ///< Indicates the black level and range of luma and chroma signals 343 Bool m_colourDescriptionPresentFlag; ///< Signals whether colour_primaries, transfer_characteristics and matrix_coefficients are present 344 Int m_colourPrimaries; ///< Indicates chromaticity coordinates of the source primaries 345 Int m_transferCharacteristics; ///< Indicates the opto-electronic transfer characteristics of the source 346 Int m_matrixCoefficients; ///< Describes the matrix coefficients used in deriving luma and chroma from RGB primaries 347 Bool m_chromaLocInfoPresentFlag; ///< Signals whether chroma_sample_loc_type_top_field and chroma_sample_loc_type_bottom_field are present 348 Int m_chromaSampleLocTypeTopField; ///< Specifies the location of chroma samples for top field 349 Int m_chromaSampleLocTypeBottomField; ///< Specifies the location of chroma samples for bottom field 350 Bool m_neutralChromaIndicationFlag; ///< Indicates that the value of all decoded chroma samples is equal to 1<<(BitDepthCr-1) 351 Window m_defaultDisplayWindow; ///< Represents the default display window parameters 352 Bool m_frameFieldInfoPresentFlag; ///< Indicates that pic_struct and other field coding related values are present in picture timing SEI messages 353 Bool m_pocProportionalToTimingFlag; ///< Indicates that the POC value is proportional to the output time w.r.t. first picture in CVS 354 Int m_numTicksPocDiffOneMinus1; ///< Number of ticks minus 1 that for a POC difference of one 355 Bool m_bitstreamRestrictionFlag; ///< Signals whether bitstream restriction parameters are present 356 Bool m_tilesFixedStructureFlag; ///< Indicates that each active picture parameter set has the same values of the syntax elements related to tiles 357 Bool m_motionVectorsOverPicBoundariesFlag; ///< Indicates that no samples outside the picture boundaries are used for inter prediction 358 Int m_minSpatialSegmentationIdc; ///< Indicates the maximum size of the spatial segments in the pictures in the coded video sequence 359 Int m_maxBytesPerPicDenom; ///< Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units associated with any coded picture 360 Int m_maxBitsPerMinCuDenom; ///< Indicates an upper bound for the number of bits of coding_unit() data 361 Int m_log2MaxMvLengthHorizontal; ///< Indicate the maximum absolute value of a decoded horizontal MV component in quarter-pel luma units 362 Int m_log2MaxMvLengthVertical; ///< Indicate the maximum absolute value of a decoded vertical MV component in quarter-pel luma units 363 364 Bool m_useStrongIntraSmoothing; ///< enable the use of strong intra smoothing (bi_linear interpolation) for 32x32 blocks when reference samples are flat. 365 366 public: TEncCfg()367 TEncCfg() 368 : m_tileColumnWidth() 369 , m_tileRowHeight() 370 {} 371 ~TEncCfg()372 virtual ~TEncCfg() 373 {} 374 setProfile(Profile::Name profile)375 Void setProfile(Profile::Name profile) { m_profile = profile; } setLevel(Level::Tier tier,Level::Name level)376 Void setLevel(Level::Tier tier, Level::Name level) { m_levelTier = tier; m_level = level; } 377 setFrameRate(Int i)378 Void setFrameRate ( Int i ) { m_iFrameRate = i; } setFrameSkip(UInt i)379 Void setFrameSkip ( UInt i ) { m_FrameSkip = i; } setSourceWidth(Int i)380 Void setSourceWidth ( Int i ) { m_iSourceWidth = i; } setSourceHeight(Int i)381 Void setSourceHeight ( Int i ) { m_iSourceHeight = i; } 382 getConformanceWindow()383 Window &getConformanceWindow() { return m_conformanceWindow; } setConformanceWindow(Int confLeft,Int confRight,Int confTop,Int confBottom)384 Void setConformanceWindow (Int confLeft, Int confRight, Int confTop, Int confBottom ) { m_conformanceWindow.setWindow (confLeft, confRight, confTop, confBottom); } 385 setFramesToBeEncoded(Int i)386 Void setFramesToBeEncoded ( Int i ) { m_framesToBeEncoded = i; } 387 getPrintMSEBasedSequencePSNR()388 Bool getPrintMSEBasedSequencePSNR () const { return m_printMSEBasedSequencePSNR; } setPrintMSEBasedSequencePSNR(Bool value)389 Void setPrintMSEBasedSequencePSNR (Bool value) { m_printMSEBasedSequencePSNR = value; } 390 getPrintFrameMSE()391 Bool getPrintFrameMSE () const { return m_printFrameMSE; } setPrintFrameMSE(Bool value)392 Void setPrintFrameMSE (Bool value) { m_printFrameMSE = value; } 393 getPrintSequenceMSE()394 Bool getPrintSequenceMSE () const { return m_printSequenceMSE; } setPrintSequenceMSE(Bool value)395 Void setPrintSequenceMSE (Bool value) { m_printSequenceMSE = value; } 396 getCabacZeroWordPaddingEnabled()397 Bool getCabacZeroWordPaddingEnabled() const { return m_cabacZeroWordPaddingEnabled; } setCabacZeroWordPaddingEnabled(Bool value)398 Void setCabacZeroWordPaddingEnabled(Bool value) { m_cabacZeroWordPaddingEnabled = value; } 399 400 //====== Coding Structure ======== setIntraPeriod(Int i)401 Void setIntraPeriod ( Int i ) { m_uiIntraPeriod = (UInt)i; } setDecodingRefreshType(Int i)402 Void setDecodingRefreshType ( Int i ) { m_uiDecodingRefreshType = (UInt)i; } setGOPSize(Int i)403 Void setGOPSize ( Int i ) { m_iGOPSize = i; } setGopList(GOPEntry * GOPList)404 Void setGopList ( GOPEntry* GOPList ) { for ( Int i = 0; i < MAX_GOP; i++ ) m_GOPList[i] = GOPList[i]; } setExtraRPSs(Int i)405 Void setExtraRPSs ( Int i ) { m_extraRPSs = i; } getGOPEntry(Int i)406 GOPEntry getGOPEntry ( Int i ) { return m_GOPList[i]; } setEncodedFlag(Int i,Bool value)407 Void setEncodedFlag ( Int i, Bool value ) { m_GOPList[i].m_isEncoded = value; } setMaxDecPicBuffering(UInt u,UInt tlayer)408 Void setMaxDecPicBuffering ( UInt u, UInt tlayer ) { m_maxDecPicBuffering[tlayer] = u; } setNumReorderPics(Int i,UInt tlayer)409 Void setNumReorderPics ( Int i, UInt tlayer ) { m_numReorderPics[tlayer] = i; } 410 setQP(Int i)411 Void setQP ( Int i ) { m_iQP = i; } 412 setPad(Int * iPad)413 Void setPad ( Int* iPad ) { for ( Int i = 0; i < 2; i++ ) m_aiPad[i] = iPad[i]; } 414 getMaxRefPicNum()415 Int getMaxRefPicNum () { return m_iMaxRefPicNum; } setMaxRefPicNum(Int iMaxRefPicNum)416 Void setMaxRefPicNum ( Int iMaxRefPicNum ) { m_iMaxRefPicNum = iMaxRefPicNum; } 417 getMaxTempLayer()418 Int getMaxTempLayer () { return m_maxTempLayer; } setMaxTempLayer(Int maxTempLayer)419 Void setMaxTempLayer ( Int maxTempLayer ) { m_maxTempLayer = maxTempLayer; } 420 //======== Transform ============= setQuadtreeTULog2MaxSize(UInt u)421 Void setQuadtreeTULog2MaxSize ( UInt u ) { m_uiQuadtreeTULog2MaxSize = u; } setQuadtreeTULog2MinSize(UInt u)422 Void setQuadtreeTULog2MinSize ( UInt u ) { m_uiQuadtreeTULog2MinSize = u; } setQuadtreeTUMaxDepthInter(UInt u)423 Void setQuadtreeTUMaxDepthInter ( UInt u ) { m_uiQuadtreeTUMaxDepthInter = u; } setQuadtreeTUMaxDepthIntra(UInt u)424 Void setQuadtreeTUMaxDepthIntra ( UInt u ) { m_uiQuadtreeTUMaxDepthIntra = u; } 425 setUseAMP(Bool b)426 Void setUseAMP( Bool b ) { m_useAMP = b; } 427 428 //====== Loop/Deblock Filter ======== setLoopFilterDisable(Bool b)429 Void setLoopFilterDisable ( Bool b ) { m_bLoopFilterDisable = b; } setLoopFilterOffsetInPPS(Bool b)430 Void setLoopFilterOffsetInPPS ( Bool b ) { m_loopFilterOffsetInPPS = b; } setLoopFilterBetaOffset(Int i)431 Void setLoopFilterBetaOffset ( Int i ) { m_loopFilterBetaOffsetDiv2 = i; } setLoopFilterTcOffset(Int i)432 Void setLoopFilterTcOffset ( Int i ) { m_loopFilterTcOffsetDiv2 = i; } setDeblockingFilterControlPresent(Bool b)433 Void setDeblockingFilterControlPresent ( Bool b ) { m_DeblockingFilterControlPresent = b; } setDeblockingFilterMetric(Bool b)434 Void setDeblockingFilterMetric ( Bool b ) { m_DeblockingFilterMetric = b; } 435 436 //====== Motion search ======== setFastSearch(Int i)437 Void setFastSearch ( Int i ) { m_iFastSearch = i; } setSearchRange(Int i)438 Void setSearchRange ( Int i ) { m_iSearchRange = i; } setBipredSearchRange(Int i)439 Void setBipredSearchRange ( Int i ) { m_bipredSearchRange = i; } 440 441 //====== Quality control ======== setMaxDeltaQP(Int i)442 Void setMaxDeltaQP ( Int i ) { m_iMaxDeltaQP = i; } setMaxCuDQPDepth(Int i)443 Void setMaxCuDQPDepth ( Int i ) { m_iMaxCuDQPDepth = i; } 444 getMaxCUChromaQpAdjustmentDepth()445 Int getMaxCUChromaQpAdjustmentDepth () const { return m_maxCUChromaQpAdjustmentDepth; } setMaxCUChromaQpAdjustmentDepth(Int value)446 Void setMaxCUChromaQpAdjustmentDepth (Int value) { m_maxCUChromaQpAdjustmentDepth = value; } 447 setChromaCbQpOffset(Int i)448 Void setChromaCbQpOffset ( Int i ) { m_chromaCbQpOffset = i; } setChromaCrQpOffset(Int i)449 Void setChromaCrQpOffset ( Int i ) { m_chromaCrQpOffset = i; } 450 setChromaFormatIdc(ChromaFormat cf)451 Void setChromaFormatIdc ( ChromaFormat cf ) { m_chromaFormatIDC = cf; } getChromaFormatIdc()452 ChromaFormat getChromaFormatIdc ( ) { return m_chromaFormatIDC; } 453 454 #if ADAPTIVE_QP_SELECTION setUseAdaptQpSelect(Bool i)455 Void setUseAdaptQpSelect ( Bool i ) { m_bUseAdaptQpSelect = i; } getUseAdaptQpSelect()456 Bool getUseAdaptQpSelect () { return m_bUseAdaptQpSelect; } 457 #endif 458 getUseExtendedPrecision()459 Bool getUseExtendedPrecision () const { return m_useExtendedPrecision; } setUseExtendedPrecision(Bool value)460 Void setUseExtendedPrecision (Bool value) { m_useExtendedPrecision = value; } 461 getUseHighPrecisionPredictionWeighting()462 Bool getUseHighPrecisionPredictionWeighting() const { return m_useHighPrecisionPredictionWeighting; } setUseHighPrecisionPredictionWeighting(Bool value)463 Void setUseHighPrecisionPredictionWeighting(Bool value) { m_useHighPrecisionPredictionWeighting = value; } 464 setUseAdaptiveQP(Bool b)465 Void setUseAdaptiveQP ( Bool b ) { m_bUseAdaptiveQP = b; } setQPAdaptationRange(Int i)466 Void setQPAdaptationRange ( Int i ) { m_iQPAdaptationRange = i; } 467 468 //====== Sequence ======== getFrameRate()469 Int getFrameRate () { return m_iFrameRate; } getFrameSkip()470 UInt getFrameSkip () { return m_FrameSkip; } getSourceWidth()471 Int getSourceWidth () { return m_iSourceWidth; } getSourceHeight()472 Int getSourceHeight () { return m_iSourceHeight; } getFramesToBeEncoded()473 Int getFramesToBeEncoded () { return m_framesToBeEncoded; } setLambdaModifier(UInt uiIndex,Double dValue)474 Void setLambdaModifier ( UInt uiIndex, Double dValue ) { m_adLambdaModifier[ uiIndex ] = dValue; } getLambdaModifier(UInt uiIndex)475 Double getLambdaModifier ( UInt uiIndex ) const { return m_adLambdaModifier[ uiIndex ]; } 476 477 //==== Coding Structure ======== getIntraPeriod()478 UInt getIntraPeriod () { return m_uiIntraPeriod; } getDecodingRefreshType()479 UInt getDecodingRefreshType () { return m_uiDecodingRefreshType; } getGOPSize()480 Int getGOPSize () { return m_iGOPSize; } getMaxDecPicBuffering(UInt tlayer)481 Int getMaxDecPicBuffering (UInt tlayer) { return m_maxDecPicBuffering[tlayer]; } getNumReorderPics(UInt tlayer)482 Int getNumReorderPics (UInt tlayer) { return m_numReorderPics[tlayer]; } getQP()483 Int getQP () { return m_iQP; } 484 getPad(Int i)485 Int getPad ( Int i ) { assert (i < 2 ); return m_aiPad[i]; } 486 487 //======== Transform ============= getQuadtreeTULog2MaxSize()488 UInt getQuadtreeTULog2MaxSize () const { return m_uiQuadtreeTULog2MaxSize; } getQuadtreeTULog2MinSize()489 UInt getQuadtreeTULog2MinSize () const { return m_uiQuadtreeTULog2MinSize; } getQuadtreeTUMaxDepthInter()490 UInt getQuadtreeTUMaxDepthInter () const { return m_uiQuadtreeTUMaxDepthInter; } getQuadtreeTUMaxDepthIntra()491 UInt getQuadtreeTUMaxDepthIntra () const { return m_uiQuadtreeTUMaxDepthIntra; } 492 493 //==== Loop/Deblock Filter ======== getLoopFilterDisable()494 Bool getLoopFilterDisable () { return m_bLoopFilterDisable; } getLoopFilterOffsetInPPS()495 Bool getLoopFilterOffsetInPPS () { return m_loopFilterOffsetInPPS; } getLoopFilterBetaOffset()496 Int getLoopFilterBetaOffset () { return m_loopFilterBetaOffsetDiv2; } getLoopFilterTcOffset()497 Int getLoopFilterTcOffset () { return m_loopFilterTcOffsetDiv2; } getDeblockingFilterControlPresent()498 Bool getDeblockingFilterControlPresent() { return m_DeblockingFilterControlPresent; } getDeblockingFilterMetric()499 Bool getDeblockingFilterMetric () { return m_DeblockingFilterMetric; } 500 501 //==== Motion search ======== getFastSearch()502 Int getFastSearch () { return m_iFastSearch; } getSearchRange()503 Int getSearchRange () { return m_iSearchRange; } 504 505 //==== Quality control ======== getMaxDeltaQP()506 Int getMaxDeltaQP () { return m_iMaxDeltaQP; } getMaxCuDQPDepth()507 Int getMaxCuDQPDepth () { return m_iMaxCuDQPDepth; } getUseAdaptiveQP()508 Bool getUseAdaptiveQP () { return m_bUseAdaptiveQP; } getQPAdaptationRange()509 Int getQPAdaptationRange () { return m_iQPAdaptationRange; } 510 511 //==== Tool list ======== setUseASR(Bool b)512 Void setUseASR ( Bool b ) { m_bUseASR = b; } setUseHADME(Bool b)513 Void setUseHADME ( Bool b ) { m_bUseHADME = b; } setUseRDOQ(Bool b)514 Void setUseRDOQ ( Bool b ) { m_useRDOQ = b; } setUseRDOQTS(Bool b)515 Void setUseRDOQTS ( Bool b ) { m_useRDOQTS = b; } setRDpenalty(UInt b)516 Void setRDpenalty ( UInt b ) { m_rdPenalty = b; } setUseFastEnc(Bool b)517 Void setUseFastEnc ( Bool b ) { m_bUseFastEnc = b; } setUseEarlyCU(Bool b)518 Void setUseEarlyCU ( Bool b ) { m_bUseEarlyCU = b; } setUseFastDecisionForMerge(Bool b)519 Void setUseFastDecisionForMerge ( Bool b ) { m_useFastDecisionForMerge = b; } setUseCbfFastMode(Bool b)520 Void setUseCbfFastMode ( Bool b ) { m_bUseCbfFastMode = b; } setUseEarlySkipDetection(Bool b)521 Void setUseEarlySkipDetection ( Bool b ) { m_useEarlySkipDetection = b; } setUseConstrainedIntraPred(Bool b)522 Void setUseConstrainedIntraPred ( Bool b ) { m_bUseConstrainedIntraPred = b; } setPCMInputBitDepthFlag(Bool b)523 Void setPCMInputBitDepthFlag ( Bool b ) { m_bPCMInputBitDepthFlag = b; } setPCMFilterDisableFlag(Bool b)524 Void setPCMFilterDisableFlag ( Bool b ) { m_bPCMFilterDisableFlag = b; } setUsePCM(Bool b)525 Void setUsePCM ( Bool b ) { m_usePCM = b; } setPCMLog2MaxSize(UInt u)526 Void setPCMLog2MaxSize ( UInt u ) { m_pcmLog2MaxSize = u; } setPCMLog2MinSize(UInt u)527 Void setPCMLog2MinSize ( UInt u ) { m_uiPCMLog2MinSize = u; } setdQPs(Int * p)528 Void setdQPs ( Int* p ) { m_aidQP = p; } setDeltaQpRD(UInt u)529 Void setDeltaQpRD ( UInt u ) {m_uiDeltaQpRD = u; } getUseASR()530 Bool getUseASR () { return m_bUseASR; } getUseHADME()531 Bool getUseHADME () { return m_bUseHADME; } getUseRDOQ()532 Bool getUseRDOQ () { return m_useRDOQ; } getUseRDOQTS()533 Bool getUseRDOQTS () { return m_useRDOQTS; } getRDpenalty()534 Int getRDpenalty () { return m_rdPenalty; } getUseFastEnc()535 Bool getUseFastEnc () { return m_bUseFastEnc; } getUseEarlyCU()536 Bool getUseEarlyCU () { return m_bUseEarlyCU; } getUseFastDecisionForMerge()537 Bool getUseFastDecisionForMerge () { return m_useFastDecisionForMerge; } getUseCbfFastMode()538 Bool getUseCbfFastMode () { return m_bUseCbfFastMode; } getUseEarlySkipDetection()539 Bool getUseEarlySkipDetection () { return m_useEarlySkipDetection; } getUseConstrainedIntraPred()540 Bool getUseConstrainedIntraPred () { return m_bUseConstrainedIntraPred; } getPCMInputBitDepthFlag()541 Bool getPCMInputBitDepthFlag () { return m_bPCMInputBitDepthFlag; } getPCMFilterDisableFlag()542 Bool getPCMFilterDisableFlag () { return m_bPCMFilterDisableFlag; } getUsePCM()543 Bool getUsePCM () { return m_usePCM; } getPCMLog2MaxSize()544 UInt getPCMLog2MaxSize () { return m_pcmLog2MaxSize; } getPCMLog2MinSize()545 UInt getPCMLog2MinSize () { return m_uiPCMLog2MinSize; } 546 getUseCrossComponentPrediction()547 Bool getUseCrossComponentPrediction () const { return m_useCrossComponentPrediction; } setUseCrossComponentPrediction(const Bool value)548 Void setUseCrossComponentPrediction (const Bool value) { m_useCrossComponentPrediction = value; } getUseReconBasedCrossCPredictionEstimate()549 Bool getUseReconBasedCrossCPredictionEstimate () const { return m_reconBasedCrossCPredictionEstimate; } setUseReconBasedCrossCPredictionEstimate(const Bool value)550 Void setUseReconBasedCrossCPredictionEstimate (const Bool value) { m_reconBasedCrossCPredictionEstimate = value; } setSaoOffsetBitShift(ChannelType type,UInt uiBitShift)551 Void setSaoOffsetBitShift(ChannelType type, UInt uiBitShift) { m_saoOffsetBitShift[type] = uiBitShift; } 552 getUseTransformSkip()553 Bool getUseTransformSkip () { return m_useTransformSkip; } setUseTransformSkip(Bool b)554 Void setUseTransformSkip ( Bool b ) { m_useTransformSkip = b; } getUseResidualRotation()555 Bool getUseResidualRotation () const { return m_useResidualRotation; } setUseResidualRotation(const Bool value)556 Void setUseResidualRotation (const Bool value) { m_useResidualRotation = value; } getUseSingleSignificanceMapContext()557 Bool getUseSingleSignificanceMapContext () const { return m_useSingleSignificanceMapContext; } setUseSingleSignificanceMapContext(const Bool value)558 Void setUseSingleSignificanceMapContext (const Bool value) { m_useSingleSignificanceMapContext = value; } getUseGolombRiceParameterAdaptation()559 Bool getUseGolombRiceParameterAdaptation () const { return m_useGolombRiceParameterAdaptation; } setUseGolombRiceParameterAdaptation(const Bool value)560 Void setUseGolombRiceParameterAdaptation (const Bool value) { m_useGolombRiceParameterAdaptation = value; } getAlignCABACBeforeBypass()561 Bool getAlignCABACBeforeBypass () const { return m_alignCABACBeforeBypass; } setAlignCABACBeforeBypass(const Bool value)562 Void setAlignCABACBeforeBypass (const Bool value) { m_alignCABACBeforeBypass = value; } getUseResidualDPCM(const RDPCMSignallingMode signallingMode)563 Bool getUseResidualDPCM (const RDPCMSignallingMode signallingMode) const { return m_useResidualDPCM[signallingMode]; } setUseResidualDPCM(const RDPCMSignallingMode signallingMode,const Bool value)564 Void setUseResidualDPCM (const RDPCMSignallingMode signallingMode, const Bool value) { m_useResidualDPCM[signallingMode] = value; } getUseTransformSkipFast()565 Bool getUseTransformSkipFast () { return m_useTransformSkipFast; } setUseTransformSkipFast(Bool b)566 Void setUseTransformSkipFast ( Bool b ) { m_useTransformSkipFast = b; } getTransformSkipLog2MaxSize()567 UInt getTransformSkipLog2MaxSize () const { return m_transformSkipLog2MaxSize; } setTransformSkipLog2MaxSize(UInt u)568 Void setTransformSkipLog2MaxSize ( UInt u ) { m_transformSkipLog2MaxSize = u; } setDisableIntraReferenceSmoothing(Bool bValue)569 Void setDisableIntraReferenceSmoothing (Bool bValue) { m_disableIntraReferenceSmoothing=bValue; } getDisableIntraReferenceSmoothing()570 Bool getDisableIntraReferenceSmoothing () const { return m_disableIntraReferenceSmoothing; } 571 getdQPs()572 Int* getdQPs () { return m_aidQP; } getDeltaQpRD()573 UInt getDeltaQpRD () { return m_uiDeltaQpRD; } 574 575 //====== Slice ======== setSliceMode(SliceConstraint i)576 Void setSliceMode ( SliceConstraint i ) { m_sliceMode = i; } setSliceArgument(Int i)577 Void setSliceArgument ( Int i ) { m_sliceArgument = i; } getSliceMode()578 SliceConstraint getSliceMode () const { return m_sliceMode; } getSliceArgument()579 Int getSliceArgument () { return m_sliceArgument; } 580 //====== Dependent Slice ======== setSliceSegmentMode(SliceConstraint i)581 Void setSliceSegmentMode ( SliceConstraint i ) { m_sliceSegmentMode = i; } setSliceSegmentArgument(Int i)582 Void setSliceSegmentArgument ( Int i ) { m_sliceSegmentArgument = i; } getSliceSegmentMode()583 SliceConstraint getSliceSegmentMode () const { return m_sliceSegmentMode; } getSliceSegmentArgument()584 Int getSliceSegmentArgument () { return m_sliceSegmentArgument;} setLFCrossSliceBoundaryFlag(Bool bValue)585 Void setLFCrossSliceBoundaryFlag ( Bool bValue ) { m_bLFCrossSliceBoundaryFlag = bValue; } getLFCrossSliceBoundaryFlag()586 Bool getLFCrossSliceBoundaryFlag () { return m_bLFCrossSliceBoundaryFlag; } 587 setUseSAO(Bool bVal)588 Void setUseSAO (Bool bVal) { m_bUseSAO = bVal; } getUseSAO()589 Bool getUseSAO () { return m_bUseSAO; } setMaxNumOffsetsPerPic(Int iVal)590 Void setMaxNumOffsetsPerPic (Int iVal) { m_maxNumOffsetsPerPic = iVal; } getMaxNumOffsetsPerPic()591 Int getMaxNumOffsetsPerPic () { return m_maxNumOffsetsPerPic; } setSaoCtuBoundary(Bool val)592 Void setSaoCtuBoundary (Bool val) { m_saoCtuBoundary = val; } getSaoCtuBoundary()593 Bool getSaoCtuBoundary () { return m_saoCtuBoundary; } setLFCrossTileBoundaryFlag(Bool val)594 Void setLFCrossTileBoundaryFlag ( Bool val ) { m_loopFilterAcrossTilesEnabledFlag = val; } getLFCrossTileBoundaryFlag()595 Bool getLFCrossTileBoundaryFlag () { return m_loopFilterAcrossTilesEnabledFlag; } setTileUniformSpacingFlag(Bool b)596 Void setTileUniformSpacingFlag ( Bool b ) { m_tileUniformSpacingFlag = b; } getTileUniformSpacingFlag()597 Bool getTileUniformSpacingFlag () { return m_tileUniformSpacingFlag; } setNumColumnsMinus1(Int i)598 Void setNumColumnsMinus1 ( Int i ) { m_iNumColumnsMinus1 = i; } getNumColumnsMinus1()599 Int getNumColumnsMinus1 () { return m_iNumColumnsMinus1; } setColumnWidth(const std::vector<Int> & columnWidth)600 Void setColumnWidth ( const std::vector<Int>& columnWidth ) { m_tileColumnWidth = columnWidth; } getColumnWidth(UInt columnIdx)601 UInt getColumnWidth ( UInt columnIdx ) { return m_tileColumnWidth[columnIdx]; } setNumRowsMinus1(Int i)602 Void setNumRowsMinus1 ( Int i ) { m_iNumRowsMinus1 = i; } getNumRowsMinus1()603 Int getNumRowsMinus1 () { return m_iNumRowsMinus1; } setRowHeight(const std::vector<Int> & rowHeight)604 Void setRowHeight ( const std::vector<Int>& rowHeight) { m_tileRowHeight = rowHeight; } getRowHeight(UInt rowIdx)605 UInt getRowHeight ( UInt rowIdx ) { return m_tileRowHeight[rowIdx]; } 606 Void xCheckGSParameters(); setWaveFrontSynchro(Int iWaveFrontSynchro)607 Void setWaveFrontSynchro(Int iWaveFrontSynchro) { m_iWaveFrontSynchro = iWaveFrontSynchro; } getWaveFrontsynchro()608 Int getWaveFrontsynchro() { return m_iWaveFrontSynchro; } setWaveFrontSubstreams(Int iWaveFrontSubstreams)609 Void setWaveFrontSubstreams(Int iWaveFrontSubstreams) { m_iWaveFrontSubstreams = iWaveFrontSubstreams; } getWaveFrontSubstreams()610 Int getWaveFrontSubstreams() { return m_iWaveFrontSubstreams; } setDecodedPictureHashSEIEnabled(Int b)611 Void setDecodedPictureHashSEIEnabled(Int b) { m_decodedPictureHashSEIEnabled = b; } getDecodedPictureHashSEIEnabled()612 Int getDecodedPictureHashSEIEnabled() { return m_decodedPictureHashSEIEnabled; } setBufferingPeriodSEIEnabled(Int b)613 Void setBufferingPeriodSEIEnabled(Int b) { m_bufferingPeriodSEIEnabled = b; } getBufferingPeriodSEIEnabled()614 Int getBufferingPeriodSEIEnabled() { return m_bufferingPeriodSEIEnabled; } setPictureTimingSEIEnabled(Int b)615 Void setPictureTimingSEIEnabled(Int b) { m_pictureTimingSEIEnabled = b; } getPictureTimingSEIEnabled()616 Int getPictureTimingSEIEnabled() { return m_pictureTimingSEIEnabled; } setRecoveryPointSEIEnabled(Int b)617 Void setRecoveryPointSEIEnabled(Int b) { m_recoveryPointSEIEnabled = b; } getRecoveryPointSEIEnabled()618 Int getRecoveryPointSEIEnabled() { return m_recoveryPointSEIEnabled; } setToneMappingInfoSEIEnabled(Bool b)619 Void setToneMappingInfoSEIEnabled(Bool b) { m_toneMappingInfoSEIEnabled = b; } getToneMappingInfoSEIEnabled()620 Bool getToneMappingInfoSEIEnabled() { return m_toneMappingInfoSEIEnabled; } setTMISEIToneMapId(Int b)621 Void setTMISEIToneMapId(Int b) { m_toneMapId = b; } getTMISEIToneMapId()622 Int getTMISEIToneMapId() { return m_toneMapId; } setTMISEIToneMapCancelFlag(Bool b)623 Void setTMISEIToneMapCancelFlag(Bool b) { m_toneMapCancelFlag=b; } getTMISEIToneMapCancelFlag()624 Bool getTMISEIToneMapCancelFlag() { return m_toneMapCancelFlag; } setTMISEIToneMapPersistenceFlag(Bool b)625 Void setTMISEIToneMapPersistenceFlag(Bool b) { m_toneMapPersistenceFlag = b; } getTMISEIToneMapPersistenceFlag()626 Bool getTMISEIToneMapPersistenceFlag() { return m_toneMapPersistenceFlag; } setTMISEICodedDataBitDepth(Int b)627 Void setTMISEICodedDataBitDepth(Int b) { m_codedDataBitDepth = b; } getTMISEICodedDataBitDepth()628 Int getTMISEICodedDataBitDepth() { return m_codedDataBitDepth; } setTMISEITargetBitDepth(Int b)629 Void setTMISEITargetBitDepth(Int b) { m_targetBitDepth = b; } getTMISEITargetBitDepth()630 Int getTMISEITargetBitDepth() { return m_targetBitDepth; } setTMISEIModelID(Int b)631 Void setTMISEIModelID(Int b) { m_modelId = b; } getTMISEIModelID()632 Int getTMISEIModelID() { return m_modelId; } setTMISEIMinValue(Int b)633 Void setTMISEIMinValue(Int b) { m_minValue = b; } getTMISEIMinValue()634 Int getTMISEIMinValue() { return m_minValue; } setTMISEIMaxValue(Int b)635 Void setTMISEIMaxValue(Int b) { m_maxValue = b; } getTMISEIMaxValue()636 Int getTMISEIMaxValue() { return m_maxValue; } setTMISEISigmoidMidpoint(Int b)637 Void setTMISEISigmoidMidpoint(Int b) { m_sigmoidMidpoint = b; } getTMISEISigmoidMidpoint()638 Int getTMISEISigmoidMidpoint() { return m_sigmoidMidpoint; } setTMISEISigmoidWidth(Int b)639 Void setTMISEISigmoidWidth(Int b) { m_sigmoidWidth = b; } getTMISEISigmoidWidth()640 Int getTMISEISigmoidWidth() { return m_sigmoidWidth; } setTMISEIStartOfCodedInterva(Int * p)641 Void setTMISEIStartOfCodedInterva( Int* p ) { m_startOfCodedInterval = p; } getTMISEIStartOfCodedInterva()642 Int* getTMISEIStartOfCodedInterva() { return m_startOfCodedInterval; } setTMISEINumPivots(Int b)643 Void setTMISEINumPivots(Int b) { m_numPivots = b; } getTMISEINumPivots()644 Int getTMISEINumPivots() { return m_numPivots; } setTMISEICodedPivotValue(Int * p)645 Void setTMISEICodedPivotValue( Int* p ) { m_codedPivotValue = p; } getTMISEICodedPivotValue()646 Int* getTMISEICodedPivotValue() { return m_codedPivotValue; } setTMISEITargetPivotValue(Int * p)647 Void setTMISEITargetPivotValue( Int* p ) { m_targetPivotValue = p; } getTMISEITargetPivotValue()648 Int* getTMISEITargetPivotValue() { return m_targetPivotValue; } setTMISEICameraIsoSpeedIdc(Int b)649 Void setTMISEICameraIsoSpeedIdc(Int b) { m_cameraIsoSpeedIdc = b; } getTMISEICameraIsoSpeedIdc()650 Int getTMISEICameraIsoSpeedIdc() { return m_cameraIsoSpeedIdc; } setTMISEICameraIsoSpeedValue(Int b)651 Void setTMISEICameraIsoSpeedValue(Int b) { m_cameraIsoSpeedValue = b; } getTMISEICameraIsoSpeedValue()652 Int getTMISEICameraIsoSpeedValue() { return m_cameraIsoSpeedValue; } setTMISEIExposureIndexIdc(Int b)653 Void setTMISEIExposureIndexIdc(Int b) { m_exposureIndexIdc = b; } getTMISEIExposurIndexIdc()654 Int getTMISEIExposurIndexIdc() { return m_exposureIndexIdc; } setTMISEIExposureIndexValue(Int b)655 Void setTMISEIExposureIndexValue(Int b) { m_exposureIndexValue = b; } getTMISEIExposurIndexValue()656 Int getTMISEIExposurIndexValue() { return m_exposureIndexValue; } setTMISEIExposureCompensationValueSignFlag(Int b)657 Void setTMISEIExposureCompensationValueSignFlag(Int b) { m_exposureCompensationValueSignFlag = b; } getTMISEIExposureCompensationValueSignFlag()658 Int getTMISEIExposureCompensationValueSignFlag() { return m_exposureCompensationValueSignFlag; } setTMISEIExposureCompensationValueNumerator(Int b)659 Void setTMISEIExposureCompensationValueNumerator(Int b) { m_exposureCompensationValueNumerator = b; } getTMISEIExposureCompensationValueNumerator()660 Int getTMISEIExposureCompensationValueNumerator() { return m_exposureCompensationValueNumerator; } setTMISEIExposureCompensationValueDenomIdc(Int b)661 Void setTMISEIExposureCompensationValueDenomIdc(Int b) { m_exposureCompensationValueDenomIdc =b; } getTMISEIExposureCompensationValueDenomIdc()662 Int getTMISEIExposureCompensationValueDenomIdc() { return m_exposureCompensationValueDenomIdc; } setTMISEIRefScreenLuminanceWhite(Int b)663 Void setTMISEIRefScreenLuminanceWhite(Int b) { m_refScreenLuminanceWhite = b; } getTMISEIRefScreenLuminanceWhite()664 Int getTMISEIRefScreenLuminanceWhite() { return m_refScreenLuminanceWhite; } setTMISEIExtendedRangeWhiteLevel(Int b)665 Void setTMISEIExtendedRangeWhiteLevel(Int b) { m_extendedRangeWhiteLevel = b; } getTMISEIExtendedRangeWhiteLevel()666 Int getTMISEIExtendedRangeWhiteLevel() { return m_extendedRangeWhiteLevel; } setTMISEINominalBlackLevelLumaCodeValue(Int b)667 Void setTMISEINominalBlackLevelLumaCodeValue(Int b) { m_nominalBlackLevelLumaCodeValue = b; } getTMISEINominalBlackLevelLumaCodeValue()668 Int getTMISEINominalBlackLevelLumaCodeValue() { return m_nominalBlackLevelLumaCodeValue; } setTMISEINominalWhiteLevelLumaCodeValue(Int b)669 Void setTMISEINominalWhiteLevelLumaCodeValue(Int b) { m_nominalWhiteLevelLumaCodeValue = b; } getTMISEINominalWhiteLevelLumaCodeValue()670 Int getTMISEINominalWhiteLevelLumaCodeValue() { return m_nominalWhiteLevelLumaCodeValue; } setTMISEIExtendedWhiteLevelLumaCodeValue(Int b)671 Void setTMISEIExtendedWhiteLevelLumaCodeValue(Int b) { m_extendedWhiteLevelLumaCodeValue =b; } getTMISEIExtendedWhiteLevelLumaCodeValue()672 Int getTMISEIExtendedWhiteLevelLumaCodeValue() { return m_extendedWhiteLevelLumaCodeValue; } setFramePackingArrangementSEIEnabled(Int b)673 Void setFramePackingArrangementSEIEnabled(Int b) { m_framePackingSEIEnabled = b; } getFramePackingArrangementSEIEnabled()674 Int getFramePackingArrangementSEIEnabled() { return m_framePackingSEIEnabled; } setFramePackingArrangementSEIType(Int b)675 Void setFramePackingArrangementSEIType(Int b) { m_framePackingSEIType = b; } getFramePackingArrangementSEIType()676 Int getFramePackingArrangementSEIType() { return m_framePackingSEIType; } setFramePackingArrangementSEIId(Int b)677 Void setFramePackingArrangementSEIId(Int b) { m_framePackingSEIId = b; } getFramePackingArrangementSEIId()678 Int getFramePackingArrangementSEIId() { return m_framePackingSEIId; } setFramePackingArrangementSEIQuincunx(Int b)679 Void setFramePackingArrangementSEIQuincunx(Int b) { m_framePackingSEIQuincunx = b; } getFramePackingArrangementSEIQuincunx()680 Int getFramePackingArrangementSEIQuincunx() { return m_framePackingSEIQuincunx; } setFramePackingArrangementSEIInterpretation(Int b)681 Void setFramePackingArrangementSEIInterpretation(Int b) { m_framePackingSEIInterpretation = b; } getFramePackingArrangementSEIInterpretation()682 Int getFramePackingArrangementSEIInterpretation() { return m_framePackingSEIInterpretation; } setSegmentedRectFramePackingArrangementSEIEnabled(Int b)683 Void setSegmentedRectFramePackingArrangementSEIEnabled(Int b) { m_segmentedRectFramePackingSEIEnabled = b; } getSegmentedRectFramePackingArrangementSEIEnabled()684 Int getSegmentedRectFramePackingArrangementSEIEnabled() { return m_segmentedRectFramePackingSEIEnabled; } setSegmentedRectFramePackingArrangementSEICancel(Int b)685 Void setSegmentedRectFramePackingArrangementSEICancel(Int b) { m_segmentedRectFramePackingSEICancel = b; } getSegmentedRectFramePackingArrangementSEICancel()686 Int getSegmentedRectFramePackingArrangementSEICancel() { return m_segmentedRectFramePackingSEICancel; } setSegmentedRectFramePackingArrangementSEIType(Int b)687 Void setSegmentedRectFramePackingArrangementSEIType(Int b) { m_segmentedRectFramePackingSEIType = b; } getSegmentedRectFramePackingArrangementSEIType()688 Int getSegmentedRectFramePackingArrangementSEIType() { return m_segmentedRectFramePackingSEIType; } setSegmentedRectFramePackingArrangementSEIPersistence(Int b)689 Void setSegmentedRectFramePackingArrangementSEIPersistence(Int b) { m_segmentedRectFramePackingSEIPersistence = b; } getSegmentedRectFramePackingArrangementSEIPersistence()690 Int getSegmentedRectFramePackingArrangementSEIPersistence() { return m_segmentedRectFramePackingSEIPersistence; } setDisplayOrientationSEIAngle(Int b)691 Void setDisplayOrientationSEIAngle(Int b) { m_displayOrientationSEIAngle = b; } getDisplayOrientationSEIAngle()692 Int getDisplayOrientationSEIAngle() { return m_displayOrientationSEIAngle; } setTemporalLevel0IndexSEIEnabled(Int b)693 Void setTemporalLevel0IndexSEIEnabled(Int b) { m_temporalLevel0IndexSEIEnabled = b; } getTemporalLevel0IndexSEIEnabled()694 Int getTemporalLevel0IndexSEIEnabled() { return m_temporalLevel0IndexSEIEnabled; } setGradualDecodingRefreshInfoEnabled(Int b)695 Void setGradualDecodingRefreshInfoEnabled(Int b) { m_gradualDecodingRefreshInfoEnabled = b; } getGradualDecodingRefreshInfoEnabled()696 Int getGradualDecodingRefreshInfoEnabled() { return m_gradualDecodingRefreshInfoEnabled; } setNoDisplaySEITLayer(Int b)697 Void setNoDisplaySEITLayer(Int b) { m_noDisplaySEITLayer = b; } getNoDisplaySEITLayer()698 Int getNoDisplaySEITLayer() { return m_noDisplaySEITLayer; } setDecodingUnitInfoSEIEnabled(Int b)699 Void setDecodingUnitInfoSEIEnabled(Int b) { m_decodingUnitInfoSEIEnabled = b; } getDecodingUnitInfoSEIEnabled()700 Int getDecodingUnitInfoSEIEnabled() { return m_decodingUnitInfoSEIEnabled; } setSOPDescriptionSEIEnabled(Int b)701 Void setSOPDescriptionSEIEnabled(Int b) { m_SOPDescriptionSEIEnabled = b; } getSOPDescriptionSEIEnabled()702 Int getSOPDescriptionSEIEnabled() { return m_SOPDescriptionSEIEnabled; } setScalableNestingSEIEnabled(Int b)703 Void setScalableNestingSEIEnabled(Int b) { m_scalableNestingSEIEnabled = b; } getScalableNestingSEIEnabled()704 Int getScalableNestingSEIEnabled() { return m_scalableNestingSEIEnabled; } setTMCTSSEIEnabled(Bool b)705 Void setTMCTSSEIEnabled(Bool b) { m_tmctsSEIEnabled = b; } getTMCTSSEIEnabled()706 Bool getTMCTSSEIEnabled() { return m_tmctsSEIEnabled; } setTimeCodeSEIEnabled(Bool b)707 Void setTimeCodeSEIEnabled(Bool b) { m_timeCodeSEIEnabled = b; } getTimeCodeSEIEnabled()708 Bool getTimeCodeSEIEnabled() { return m_timeCodeSEIEnabled; } setNumberOfTimeSets(Int value)709 Void setNumberOfTimeSets(Int value) { m_timeCodeSEINumTs = value; } getNumberOfTimesets()710 Int getNumberOfTimesets() { return m_timeCodeSEINumTs; } setTimeSet(TComSEITimeSet element,Int index)711 Void setTimeSet(TComSEITimeSet element, Int index) { m_timeSetArray[index] = element; } getTimeSet(Int index)712 TComSEITimeSet &getTimeSet(Int index) { return m_timeSetArray[index]; } getTimeSet(Int index)713 const TComSEITimeSet &getTimeSet(Int index) const { return m_timeSetArray[index]; } setKneeSEIEnabled(Int b)714 Void setKneeSEIEnabled(Int b) { m_kneeSEIEnabled = b; } getKneeSEIEnabled()715 Bool getKneeSEIEnabled() { return m_kneeSEIEnabled; } setKneeSEIId(Int b)716