Newer
Older

Karsten Suehring
committed
/* The copyright in this software is being made available under the BSD
* License, included below. This software may be subject to other third party
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2019, ITU/ISO/IEC

Karsten Suehring
committed
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
/** \file EncCfg.h
\brief encoder configuration class (header)
*/
#ifndef __ENCCFG__
#define __ENCCFG__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "CommonLib/CommonDef.h"
#include "CommonLib/Slice.h"
#include "CommonLib/Unit.h"
#if JVET_O0756_CALCULATE_HDRMETRICS
#include "HDRLib/inc/DistortionMetric.H"
#endif

Karsten Suehring
committed
struct GOPEntry
{
int m_POC;
int m_QPOffset;
#if X0038_LAMBDA_FROM_QP_CAPABILITY
double m_QPOffsetModelOffset;
double m_QPOffsetModelScale;
#endif
#if W0038_CQP_ADJ
int m_CbQPoffset;
int m_CrQPoffset;
#endif
double m_QPFactor;
int m_tcOffsetDiv2;
int m_betaOffsetDiv2;
int m_temporalId;
bool m_refPic;
int8_t m_sliceType;
int m_numRefPicsActive0;
int m_numRefPics0;
int m_deltaRefPics0[MAX_NUM_REF_PICS];
int m_numRefPicsActive1;
int m_numRefPics1;
int m_deltaRefPics1[MAX_NUM_REF_PICS];

Karsten Suehring
committed
bool m_isEncoded;
Philip Cowan
committed
#if JVET_N0100_PROPOSAL1
bool m_ltrp_in_slice_header_flag;
#endif

Karsten Suehring
committed
GOPEntry()
: m_POC(-1)
, m_QPOffset(0)
#if X0038_LAMBDA_FROM_QP_CAPABILITY
, m_QPOffsetModelOffset(0)
, m_QPOffsetModelScale(0)
#endif
#if W0038_CQP_ADJ
, m_CbQPoffset(0)
, m_CrQPoffset(0)
#endif
, m_QPFactor(0)
, m_tcOffsetDiv2(0)
, m_betaOffsetDiv2(0)
, m_temporalId(0)
, m_refPic(false)
, m_sliceType('P')
, m_numRefPicsActive0(0)
, m_numRefPics0(0)
, m_numRefPicsActive1(0)
, m_numRefPics1(0)
Philip Cowan
committed
, m_isEncoded(false)
#if JVET_N0100_PROPOSAL1
, m_ltrp_in_slice_header_flag(false)
#endif

Karsten Suehring
committed
{
::memset(m_deltaRefPics0, 0, sizeof(m_deltaRefPics0));
::memset(m_deltaRefPics1, 0, sizeof(m_deltaRefPics1));
}
};
struct RPLEntry
{
int m_POC;
int m_temporalId;
bool m_refPic;
int m_numRefPicsActive;
int8_t m_sliceType;
int m_numRefPics;
int m_deltaRefPics[MAX_NUM_REF_PICS];
bool m_isEncoded;
Philip Cowan
committed
#if JVET_N0100_PROPOSAL1
bool m_ltrp_in_slice_header_flag;
#endif
RPLEntry()
: m_POC(-1)
, m_temporalId(0)
, m_refPic(false)
, m_numRefPicsActive(0)
, m_sliceType('P')
, m_numRefPics(0)
, m_isEncoded(false)
Philip Cowan
committed
#if JVET_N0100_PROPOSAL1
, m_ltrp_in_slice_header_flag(false)
#endif
{
::memset(m_deltaRefPics, 0, sizeof(m_deltaRefPics));

Karsten Suehring
committed
}
};
std::istringstream &operator>>(std::istringstream &in, GOPEntry &entry); //input
struct BrickSplit
{
int m_tileIdx;
bool m_uniformSplit;
int m_uniformHeight;
int m_numSplits;
int m_brickHeight[MAX_NUM_BRICKS_PER_TILE];
BrickSplit()
: m_tileIdx(-1)
, m_uniformSplit(true)
, m_uniformHeight(0)
, m_numSplits(0)
{
::memset( m_brickHeight, 0, sizeof(m_brickHeight) );
}
};
typedef std::map<int, BrickSplit> BrickSplitMap;
std::istringstream &operator>>(std::istringstream &in, BrickSplit &entry); //input

Karsten Suehring
committed
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
//! \ingroup EncoderLib
//! \{
// ====================================================================================================================
// Class definition
// ====================================================================================================================
/// encoder configuration class
class EncCfg
{
protected:
//==== File I/O ========
int m_iFrameRate;
int m_FrameSkip;
uint32_t m_temporalSubsampleRatio;
int m_iSourceWidth;
int m_iSourceHeight;
Window m_conformanceWindow;
int m_framesToBeEncoded;
double m_adLambdaModifier[ MAX_TLAYER ];
std::vector<double> m_adIntraLambdaModifier;
double m_dIntraQpFactor; ///< Intra Q Factor. If negative, use a default equation: 0.57*(1.0 - Clip3( 0.0, 0.5, 0.05*(double)(isField ? (GopSize-1)/2 : GopSize-1) ))
bool m_printMSEBasedSequencePSNR;
bool m_printHexPsnr;
bool m_printFrameMSE;
bool m_printSequenceMSE;
bool m_cabacZeroWordPaddingEnabled;
Zhipin Deng
committed
bool m_bIntraOnlyConstraintFlag;
uint32_t m_maxBitDepthConstraintIdc;
uint32_t m_maxChromaFormatConstraintIdc;
bool m_bFrameConstraintFlag;
bool m_bNoQtbttDualTreeIntraConstraintFlag;
bool m_noPartitionConstraintsOverrideConstraintFlag;
Zhipin Deng
committed
bool m_bNoSaoConstraintFlag;
bool m_bNoAlfConstraintFlag;
Zhipin Deng
committed
bool m_bNoPcmConstraintFlag;
bool m_bNoRefWraparoundConstraintFlag;
Zhipin Deng
committed
bool m_bNoTemporalMvpConstraintFlag;
bool m_bNoSbtmvpConstraintFlag;
bool m_bNoAmvrConstraintFlag;
bool m_bNoBdofConstraintFlag;
bool m_bNoCclmConstraintFlag;
Zhipin Deng
committed
bool m_bNoMtsConstraintFlag;
bool m_bNoAffineMotionConstraintFlag;
bool m_bNoGbiConstraintFlag;
bool m_bNoMhIntraConstraintFlag;
bool m_bNoTriangleConstraintFlag;
Zhipin Deng
committed
bool m_bNoLadfConstraintFlag;
#if JVET_O1136_TS_BDPCM_SIGNALLING
bool m_noBDPCMConstraintFlag;
#endif
#if JVET_O0376_SPS_JOINTCBCR_FLAG
bool m_noJointCbCrConstraintFlag;
#endif
bool m_bNoQpDeltaConstraintFlag;
Zhipin Deng
committed
bool m_bNoDepQuantConstraintFlag;
bool m_bNoSignDataHidingConstraintFlag;

Karsten Suehring
committed
/* profile & level */
Profile::Name m_profile;
Level::Tier m_levelTier;
Level::Name m_level;

Karsten Suehring
committed
bool m_progressiveSourceFlag;
bool m_interlacedSourceFlag;
bool m_nonPackedConstraintFlag;
bool m_frameOnlyConstraintFlag;
uint32_t m_bitDepthConstraintValue;
ChromaFormat m_chromaFormatConstraintValue;
bool m_intraConstraintFlag;
bool m_onePictureOnlyConstraintFlag;
bool m_lowerBitRateConstraintFlag;
//====== Coding Structure ========
int m_uiIntraPeriod; // needs to be signed to allow '-1' for no intra period

Karsten Suehring
committed
uint32_t m_uiDecodingRefreshType; ///< the type of decoding refresh employed for the random access.
bool m_rewriteParamSets;

Karsten Suehring
committed
int m_iGOPSize;
RPLEntry m_RPLList0[MAX_GOP];
RPLEntry m_RPLList1[MAX_GOP];

Karsten Suehring
committed
GOPEntry m_GOPList[MAX_GOP];
int m_maxDecPicBuffering[MAX_TLAYER];
int m_numReorderPics[MAX_TLAYER];
int m_iQP; // if (AdaptiveQP == OFF)
Adarsh Krishnan Ramasubramonian
committed
#if JVET_O0650_SIGNAL_CHROMAQP_MAPPING_TABLE
ChromaQpMappingTableParams m_chromaQpMappingTableParams;
Adarsh Krishnan Ramasubramonian
committed
#endif

Karsten Suehring
committed
#if X0038_LAMBDA_FROM_QP_CAPABILITY
int m_intraQPOffset; ///< QP offset for intra slice (integer)
int m_lambdaFromQPEnable; ///< enable lambda derivation from QP
#endif
int m_aiPad[2];
bool m_AccessUnitDelimiter; ///< add Access Unit Delimiter NAL units
int m_iMaxRefPicNum; ///< this is used to mimic the sliding mechanism used by the decoder
// TODO: We need to have a common sliding mechanism used by both the encoder and decoder
int m_maxTempLayer; ///< Max temporal layer
unsigned m_CTUSize;
bool m_useSplitConsOverride;

Karsten Suehring
committed
unsigned m_uiMinQT[3]; //0: I slice; 1: P/B slice, 2: I slice chroma
unsigned m_uiMaxBTDepth;
unsigned m_uiMaxBTDepthI;
unsigned m_uiMaxBTDepthIChroma;
bool m_dualITree;
unsigned m_maxCUWidth;
unsigned m_maxCUHeight;
unsigned m_maxTotalCUDepth;
unsigned m_log2DiffMaxMinCodingBlockSize;
int m_LMChroma;
int m_IntraMTS;
int m_InterMTS;
int m_IntraMTSMaxCand;
int m_InterMTSMaxCand;
bool m_SBT; ///< Sub-Block Transform for inter blocks
bool m_LFNST;
bool m_useFastLFNST;

Karsten Suehring
committed
int m_SubPuMvpMode;
bool m_Affine;
bool m_AffineType;
#if JVET_O0070_PROF
bool m_PROF;
#endif

Karsten Suehring
committed
bool m_compositeRefEnabled; //composite reference
Shunsuke Iwamura
committed
#if LUMA_ADAPTIVE_DEBLOCKING_FILTER_QP_OFFSET
bool m_LadfEnabled;
int m_LadfNumIntervals;
int m_LadfQpOffset[MAX_LADF_INTERVALS];
int m_LadfIntervalLowerBound[MAX_LADF_INTERVALS];
bool m_MHIntra;
bool m_Triangle;
bool m_allowDisFracMMVD;
bool m_AffineAmvr;
Hongbin Liu
committed
bool m_AffineAmvrEncOpt;
#if !JVET_O1136_TS_BDPCM_SIGNALLING
Yung-Hsuan Chao (Jessie)
committed
#if JVET_O0119_BASE_PALETTE_444
unsigned m_PLTMode;
#if JVET_O0376_SPS_JOINTCBCR_FLAG
bool m_JointCbCrMode;
Yung-Hsuan Chao (Jessie)
committed
#endif
unsigned m_IBCMode;
unsigned m_IBCLocalSearchRangeX;
unsigned m_IBCLocalSearchRangeY;
unsigned m_IBCHashSearch;
unsigned m_IBCHashSearchMaxCand;
unsigned m_IBCHashSearchRange4SmallBlk;
unsigned m_IBCFastMethod;
bool m_wrapAround;
unsigned m_wrapAroundOffset;

Karsten Suehring
committed
// ADD_NEW_TOOL : (encoder lib) add tool enabling flags and associated parameters here
Sheng-Yen Lin
committed
bool m_loopFilterAcrossVirtualBoundariesDisabledFlag;
unsigned m_numVerVirtualBoundaries;
unsigned m_numHorVirtualBoundaries;
unsigned m_virtualBoundariesPosX[3];
unsigned m_virtualBoundariesPosY[3];
bool m_lumaReshapeEnable;
unsigned m_reshapeSignalType;
unsigned m_intraCMD;

Karsten Suehring
committed
bool m_useFastLCTU;
bool m_useFastMrg;
bool m_usePbIntraFast;
bool m_useAMaxBT;
bool m_e0023FastEnc;
bool m_contentBasedFastQtbt;
bool m_useNonLinearAlfLuma;
bool m_useNonLinearAlfChroma;
#if JVET_O0090_ALF_CHROMA_FILTER_ALTERNATIVES_CTB
unsigned m_maxNumAlfAlternativesChroma;
#endif
Philipp Merkle
committed
bool m_useFastMIP;
#if JVET_O0050_LOCAL_DUAL_TREE
int m_fastLocalDualTreeMode;
#endif
#if MAX_TB_SIZE_SIGNALLING
uint32_t m_log2MaxTbSize;
#endif

Karsten Suehring
committed
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
//====== Loop/Deblock Filter ========
bool m_bLoopFilterDisable;
bool m_loopFilterOffsetInPPS;
int m_loopFilterBetaOffsetDiv2;
int m_loopFilterTcOffsetDiv2;
#if W0038_DB_OPT
int m_deblockingFilterMetric;
#else
bool m_DeblockingFilterMetric;
#endif
bool m_bUseSAO;
bool m_bTestSAODisableAtPictureLevel;
double m_saoEncodingRate; // When non-0 SAO early picture termination is enabled for luma and chroma
double m_saoEncodingRateChroma; // The SAO early picture termination rate to use for chroma (when m_SaoEncodingRate is >0). If <=0, use results for luma.
int m_maxNumOffsetsPerPic;
bool m_saoCtuBoundary;
bool m_saoGreedyMergeEnc;
//====== Motion search ========
bool m_bDisableIntraPUsInInterSlices;
MESearchMethod m_motionEstimationSearchMethod;
int m_iSearchRange; // 0:Full frame
int m_bipredSearchRange;
bool m_bClipForBiPredMeEnabled;
bool m_bFastMEAssumingSmootherMVEnabled;
int m_minSearchWindow;
bool m_bRestrictMESampling;
//====== Quality control ========
int m_iMaxDeltaQP; // Max. absolute delta QP (1:default)
int m_cuQpDeltaSubdiv; // Max. subdivision level for a CuDQP (0:default)
int m_cuChromaQpOffsetSubdiv; ///< If negative, then do not apply chroma qp offsets.

Karsten Suehring
committed
int m_chromaCbQpOffset; // Chroma Cb QP Offset (0:default)
int m_chromaCrQpOffset; // Chroma Cr Qp Offset (0:default)
int m_chromaCbQpOffsetDualTree; // Chroma Cb QP Offset for dual tree
int m_chromaCrQpOffsetDualTree; // Chroma Cr Qp Offset for dual tree
int m_chromaCbCrQpOffset; // QP Offset for the joint Cb-Cr mode
int m_chromaCbCrQpOffsetDualTree; // QP Offset for the joint Cb-Cr mode in dual tree

Karsten Suehring
committed
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
#if ER_CHROMA_QP_WCG_PPS
WCGChromaQPControl m_wcgChromaQpControl; ///< Wide-colour-gamut chroma QP control.
#endif
#if W0038_CQP_ADJ
uint32_t m_sliceChromaQpOffsetPeriodicity; ///< Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
int m_sliceChromaQpOffsetIntraOrPeriodic[2/*Cb,Cr*/]; ///< Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
#endif
ChromaFormat m_chromaFormatIDC;
bool m_extendedPrecisionProcessingFlag;
bool m_highPrecisionOffsetsEnabledFlag;
bool m_bUseAdaptiveQP;
int m_iQPAdaptationRange;
#if ENABLE_QPA
bool m_bUsePerceptQPA;
bool m_bUseWPSNR;
#endif
//====== Tool list ========
int m_inputBitDepth[MAX_NUM_CHANNEL_TYPE]; ///< bit-depth of input file
int m_bitDepth[MAX_NUM_CHANNEL_TYPE];
bool m_bUseASR;
bool m_bUseHADME;
bool m_useRDOQ;
bool m_useRDOQTS;
#if T0196_SELECTIVE_RDOQ
bool m_useSelectiveRDOQ;
#endif
uint32_t m_rdPenalty;
FastInterSearchMode m_fastInterSearchMode;
bool m_bUseEarlyCU;
bool m_useFastDecisionForMerge;
bool m_bUseCbfFastMode;
bool m_useEarlySkipDetection;
bool m_crossComponentPredictionEnabledFlag;
bool m_reconBasedCrossCPredictionEstimate;
uint32_t m_log2SaoOffsetScale[MAX_NUM_CHANNEL_TYPE];
bool m_useTransformSkip;
bool m_useTransformSkipFast;
#if JVET_O1136_TS_BDPCM_SIGNALLING
bool m_useBDPCM;
#endif

Karsten Suehring
committed
uint32_t m_log2MaxTransformSkipBlockSize;
bool m_transformSkipRotationEnabledFlag;
bool m_transformSkipContextEnabledFlag;
bool m_persistentRiceAdaptationEnabledFlag;
bool m_cabacBypassAlignmentEnabledFlag;
bool m_rdpcmEnabledFlag[NUMBER_OF_RDPCM_SIGNALLING_MODES];
#if SHARP_LUMA_DELTA_QP
LumaLevelToDeltaQPMapping m_lumaLevelToDeltaQPMapping; ///< mapping from luma level to delta QP.
#endif
int* m_aidQP;
uint32_t m_uiDeltaQpRD;
bool m_bFastDeltaQP;
Santiago de Luxán Hernández
committed
bool m_useFastISP;

Karsten Suehring
committed
bool m_bUseConstrainedIntraPred;
bool m_bFastUDIUseMPMEnabled;
bool m_bFastMEForGenBLowDelayEnabled;
bool m_bUseBLambdaForNonKeyLowDelayPictures;

Karsten Suehring
committed
bool m_usePCM;
int m_PCMBitDepth[MAX_NUM_CHANNEL_TYPE];
uint32_t m_pcmLog2MaxSize;
uint32_t m_uiPCMLog2MinSize;

Karsten Suehring
committed
//====== Slice ========
SliceConstraint m_sliceMode;
int m_sliceArgument;
//====== Dependent Slice ========
SliceConstraint m_sliceSegmentMode;
int m_sliceSegmentArgument;
bool m_bLFCrossSliceBoundaryFlag;

Karsten Suehring
committed
bool m_bPCMInputBitDepthFlag;
bool m_bPCMFilterDisableFlag;

Karsten Suehring
committed
bool m_intraSmoothingDisabledFlag;

Karsten Suehring
committed
bool m_tileUniformSpacingFlag;
int m_iNumColumnsMinus1;
int m_iNumRowsMinus1;
std::vector<int> m_tileColumnWidth;
std::vector<int> m_tileRowHeight;
bool m_entropyCodingSyncEnabledFlag;
bool m_rectSliceFlag;
int m_numSlicesInPicMinus1;
std::vector<int> m_topLeftBrickIdx;
std::vector<int> m_bottomRightBrickIdx;
bool m_loopFilterAcrossSlicesEnabledFlag;
bool m_signalledSliceIdFlag;
int m_signalledSliceIdLengthMinus1;
std::vector<int> m_sliceId;
BrickSplitMap m_brickSplitMap;

Karsten Suehring
committed
HashType m_decodedPictureHashSEIType;
bool m_bufferingPeriodSEIEnabled;
bool m_pictureTimingSEIEnabled;
#if HEVC_SEI

Karsten Suehring
committed
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
bool m_recoveryPointSEIEnabled;
bool m_toneMappingInfoSEIEnabled;
int m_toneMapId;
bool m_toneMapCancelFlag;
bool m_toneMapPersistenceFlag;
int m_codedDataBitDepth;
int m_targetBitDepth;
int m_modelId;
int m_minValue;
int m_maxValue;
int m_sigmoidMidpoint;
int m_sigmoidWidth;
int m_numPivots;
int m_cameraIsoSpeedIdc;
int m_cameraIsoSpeedValue;
int m_exposureIndexIdc;
int m_exposureIndexValue;
bool m_exposureCompensationValueSignFlag;
int m_exposureCompensationValueNumerator;
int m_exposureCompensationValueDenomIdc;
int m_refScreenLuminanceWhite;
int m_extendedRangeWhiteLevel;
int m_nominalBlackLevelLumaCodeValue;
int m_nominalWhiteLevelLumaCodeValue;
int m_extendedWhiteLevelLumaCodeValue;
int* m_startOfCodedInterval;
int* m_codedPivotValue;
int* m_targetPivotValue;
bool m_framePackingSEIEnabled;
int m_framePackingSEIType;
int m_framePackingSEIId;
int m_framePackingSEIQuincunx;
int m_framePackingSEIInterpretation;
bool m_segmentedRectFramePackingSEIEnabled;
bool m_segmentedRectFramePackingSEICancel;
int m_segmentedRectFramePackingSEIType;
bool m_segmentedRectFramePackingSEIPersistence;
int m_displayOrientationSEIAngle;
bool m_temporalLevel0IndexSEIEnabled;
bool m_gradualDecodingRefreshInfoEnabled;
int m_noDisplaySEITLayer;
#endif

Karsten Suehring
committed
bool m_decodingUnitInfoSEIEnabled;
#if HEVC_SEI

Karsten Suehring
committed
bool m_SOPDescriptionSEIEnabled;
bool m_scalableNestingSEIEnabled;
bool m_tmctsSEIEnabled;
#endif
#if HEVC_SEI

Karsten Suehring
committed
bool m_timeCodeSEIEnabled;
int m_timeCodeSEINumTs;
SEITimeSet m_timeSetArray[MAX_TIMECODE_SEI_SETS];
bool m_kneeSEIEnabled;
int m_kneeSEIId;
bool m_kneeSEICancelFlag;
bool m_kneeSEIPersistenceFlag;
int m_kneeSEIInputDrange;
int m_kneeSEIInputDispLuminance;
int m_kneeSEIOutputDrange;
int m_kneeSEIOutputDispLuminance;
int m_kneeSEINumKneePointsMinus1;
int* m_kneeSEIInputKneePoint;
int* m_kneeSEIOutputKneePoint;
std::string m_colourRemapSEIFileRoot; ///< SEI Colour Remapping File (initialized from external file)
SEIMasteringDisplay m_masteringDisplay;
#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
bool m_alternativeTransferCharacteristicsSEIEnabled;
uint8_t m_preferredTransferCharacteristics;
#endif
bool m_greenMetadataInfoSEIEnabled;
uint8_t m_greenMetadataType;
uint8_t m_xsdMetricType;
#endif

Karsten Suehring
committed
//====== Weighted Prediction ========
bool m_useWeightedPred; //< Use of Weighting Prediction (P_SLICE)
bool m_useWeightedBiPred; //< Use of Bi-directional Weighting Prediction (B_SLICE)
WeightedPredictionMethod m_weightedPredictionMethod;
uint32_t m_log2ParallelMergeLevelMinus2; ///< Parallel merge estimation region
uint32_t m_maxNumMergeCand; ///< Maximum number of merge candidates
uint32_t m_maxNumAffineMergeCand; ///< Maximum number of affine merge candidates
#if JVET_O0455_IBC_MAX_MERGE_NUM
uint32_t m_maxNumIBCMergeCand; ///< Max number of IBC merge candidates
#endif

Karsten Suehring
committed
ScalingListMode m_useScalingListId; ///< Using quantization matrix i.e. 0=off, 1=default, 2=file.
std::string m_scalingListFileName; ///< quantization matrix file name
int m_TMVPModeId;
#if JVET_O0238_PPS_OR_SLICE
bool m_constantSliceHeaderParamsEnabledFlag;
int m_PPSDepQuantEnabledIdc;
int m_PPSRefPicListSPSIdc0;
int m_PPSRefPicListSPSIdc1;
int m_PPSTemporalMVPEnabledIdc;
Martin Pettersson
committed
int m_PPSMvdL1ZeroIdc;
int m_PPSCollocatedFromL0Idc;
uint32_t m_PPSSixMinusMaxNumMergeCandPlus1;
uint32_t m_PPSFiveMinusMaxNumSubblockMergeCandPlus1;
uint32_t m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1;
#endif

Karsten Suehring
committed
bool m_DepQuantEnabledFlag;
bool m_SignDataHidingEnabledFlag;
bool m_RCEnableRateControl;
int m_RCTargetBitrate;
int m_RCKeepHierarchicalBit;
bool m_RCLCULevelRC;
bool m_RCUseLCUSeparateModel;
int m_RCInitialQP;
bool m_RCForceIntraQP;
#if U0132_TARGET_BITS_SATURATION
bool m_RCCpbSaturationEnabled;
uint32_t m_RCCpbSize;
double m_RCInitialCpbFullness;
#endif
bool m_TransquantBypassEnabledFlag; ///< transquant_bypass_enabled_flag setting in PPS.
bool m_CUTransquantBypassFlagForce; ///< if transquant_bypass_enabled_flag, then, if true, all CU transquant bypass flags will be set to true.
CostMode m_costMode; ///< The cost function to use, primarily when considering lossless coding.
VPS m_cVPS;
DPS m_dps;
bool m_decodingParameterSetEnabled; ///< enable decoding parameter set

Karsten Suehring
committed
bool m_recalculateQPAccordingToLambda; ///< recalculate QP value according to the lambda value
#if HEVC_SEI

Karsten Suehring
committed
int m_activeParameterSetsSEIEnabled; ///< enable active parameter set SEI message
#endif
bool m_vuiParametersPresentFlag; ///< enable generation of VUI parameters
bool m_aspectRatioInfoPresentFlag; ///< Signals whether aspect_ratio_idc is present
#if HEVC_SEI
bool m_chromaResamplingFilterHintEnabled; ///< Signals whether chroma sampling filter hint data is present
int m_chromaResamplingHorFilterIdc; ///< Specifies the Index of filter to use
int m_chromaResamplingVerFilterIdc; ///< Specifies the Index of filter to use
#endif
int m_aspectRatioIdc; ///< aspect_ratio_idc
int m_sarWidth; ///< horizontal size of the sample aspect ratio
int m_sarHeight; ///< vertical size of the sample aspect ratio
bool m_colourDescriptionPresentFlag; ///< Signals whether colour_primaries, transfer_characteristics and matrix_coefficients are present
int m_colourPrimaries; ///< Indicates chromaticity coordinates of the source primaries
int m_transferCharacteristics; ///< Indicates the opto-electronic transfer characteristics of the source
int m_matrixCoefficients; ///< Describes the matrix coefficients used in deriving luma and chroma from RGB primaries
bool m_chromaLocInfoPresentFlag; ///< Signals whether chroma_sample_loc_type_top_field and chroma_sample_loc_type_bottom_field are present
int m_chromaSampleLocTypeTopField; ///< Specifies the location of chroma samples for top field
int m_chromaSampleLocTypeBottomField; ///< Specifies the location of chroma samples for bottom field
int m_chromaSampleLocType; ///< Specifies the location of chroma samples for progressive content
bool m_overscanInfoPresentFlag; ///< Signals whether overscan_appropriate_flag is present
bool m_overscanAppropriateFlag; ///< Indicates whether conformant decoded pictures are suitable for display using overscan
bool m_videoSignalTypePresentFlag; ///< Signals whether video_format, video_full_range_flag, and colour_description_present_flag are present
bool m_videoFullRangeFlag; ///< Indicates the black level and range of luma and chroma signals

Karsten Suehring
committed
bool m_bEfficientFieldIRAPEnabled; ///< enable to code fields in a specific, potentially more efficient, order.
bool m_bHarmonizeGopFirstFieldCoupleEnabled;
std::string m_summaryOutFilename; ///< filename to use for producing summary output file.
std::string m_summaryPicFilenameBase; ///< Base filename to use for producing summary picture output files. The actual filenames used will have I.txt, P.txt and B.txt appended.
uint32_t m_summaryVerboseness; ///< Specifies the level of the verboseness of the text output.
int m_ImvMode;
int m_Imv4PelFast;
std::string m_decodeBitstreams[2]; ///< filename for decode bitstreams.
bool m_forceDecodeBitstream1; ///< guess what it means
int m_switchPOC; ///< dbg poc.
int m_switchDQP; ///< dqp applied to switchPOC and subsequent pictures.
int m_fastForwardToPOC; ///<
bool m_stopAfterFFtoPOC; ///<

Karsten Suehring
committed
bool m_bs2ModPOCAndType;
#if ENABLE_SPLIT_PARALLELISM
int m_numSplitThreads;
bool m_forceSingleSplitThread;
#endif
#if ENABLE_WPP_PARALLELISM
int m_numWppThreads;
int m_numWppExtraLines;
bool m_ensureWppBitEqual;
#endif
bool m_alf; ///< Adaptive Loop Filter
#if JVET_O0756_CALCULATE_HDRMETRICS
double m_whitePointDeltaE[hdrtoolslib::NB_REF_WHITE];
double m_maxSampleValue;
hdrtoolslib::SampleRange m_sampleRange;
hdrtoolslib::ColorPrimaries m_colorPrimaries;
bool m_enableTFunctionLUT;
hdrtoolslib::ChromaLocation m_chromaLocation[2];
int m_chromaUPFilter;
int m_cropOffsetLeft;
int m_cropOffsetTop;
int m_cropOffsetRight;
int m_cropOffsetBottom;
bool m_calculateHdrMetrics;
#endif
#if JVET_O1164_RPR
double m_scalingRatioHor;
double m_scalingRatioVer;
bool m_rprEnabled;
int m_switchPocPeriod;

Karsten Suehring
committed
public:
EncCfg()
: m_tileColumnWidth()
, m_tileRowHeight()
{

Karsten Suehring
committed
m_PCMBitDepth[CHANNEL_TYPE_LUMA]=8;
m_PCMBitDepth[CHANNEL_TYPE_CHROMA]=8;

Karsten Suehring
committed
}
virtual ~EncCfg()
{}
void setProfile(Profile::Name profile) { m_profile = profile; }
void setLevel(Level::Tier tier, Level::Name level) { m_levelTier = tier; m_level = level; }
void setSubProfile(uint32_t subProfile) { m_subProfile = subProfile; }
Zhipin Deng
committed
bool getIntraOnlyConstraintFlag() const { return m_bIntraOnlyConstraintFlag; }
void setIntraOnlyConstraintFlag(bool bVal) { m_bIntraOnlyConstraintFlag = bVal; }
uint32_t getMaxBitDepthConstraintIdc() const { return m_maxBitDepthConstraintIdc; }
void setMaxBitDepthConstraintIdc(uint32_t u) { m_maxBitDepthConstraintIdc = u; }
uint32_t getMaxChromaFormatConstraintIdc() const { return m_maxChromaFormatConstraintIdc; }
void setMaxChromaFormatConstraintIdc(uint32_t u) { m_maxChromaFormatConstraintIdc = u; }
bool getFrameConstraintFlag() const { return m_bFrameConstraintFlag; }
void setFrameConstraintFlag(bool bVal) { m_bFrameConstraintFlag = bVal; }
bool getNoQtbttDualTreeIntraConstraintFlag() const { return m_bNoQtbttDualTreeIntraConstraintFlag; }
void setNoQtbttDualTreeIntraConstraintFlag(bool bVal) { m_bNoQtbttDualTreeIntraConstraintFlag = bVal; }
bool getNoPartitionConstraintsOverrideConstraintFlag() const { return m_noPartitionConstraintsOverrideConstraintFlag; }
void setNoPartitionConstraintsOverrideConstraintFlag(bool bVal) { m_noPartitionConstraintsOverrideConstraintFlag = bVal; }
Zhipin Deng
committed
bool getNoSaoConstraintFlag() const { return m_bNoSaoConstraintFlag; }
void setNoSaoConstraintFlag(bool bVal) { m_bNoSaoConstraintFlag = bVal; }
bool getNoAlfConstraintFlag() const { return m_bNoAlfConstraintFlag; }
void setNoAlfConstraintFlag(bool bVal) { m_bNoAlfConstraintFlag = bVal; }
Zhipin Deng
committed
bool getNoPcmConstraintFlag() const { return m_bNoPcmConstraintFlag; }
void setNoPcmConstraintFlag(bool bVal) { m_bNoPcmConstraintFlag = bVal; }
bool getNoRefWraparoundConstraintFlag() const { return m_bNoRefWraparoundConstraintFlag; }
void setNoRefWraparoundConstraintFlag(bool bVal) { m_bNoRefWraparoundConstraintFlag = bVal; }
Zhipin Deng
committed
bool getNoTemporalMvpConstraintFlag() const { return m_bNoTemporalMvpConstraintFlag; }
void setNoTemporalMvpConstraintFlag(bool bVal) { m_bNoTemporalMvpConstraintFlag = bVal; }
bool getNoSbtmvpConstraintFlag() const { return m_bNoSbtmvpConstraintFlag; }
void setNoSbtmvpConstraintFlag(bool bVal) { m_bNoSbtmvpConstraintFlag = bVal; }
bool getNoAmvrConstraintFlag() const { return m_bNoAmvrConstraintFlag; }
void setNoAmvrConstraintFlag(bool bVal) { m_bNoAmvrConstraintFlag = bVal; }
bool getNoBdofConstraintFlag() const { return m_bNoBdofConstraintFlag; }
void setNoBdofConstraintFlag(bool bVal) { m_bNoBdofConstraintFlag = bVal; }
bool getNoDmvrConstraintFlag() const { return m_noDmvrConstraintFlag; }
void setNoDmvrConstraintFlag(bool bVal) { m_noDmvrConstraintFlag = bVal; }
bool getNoCclmConstraintFlag() const { return m_bNoCclmConstraintFlag; }
void setNoCclmConstraintFlag(bool bVal) { m_bNoCclmConstraintFlag = bVal; }
Zhipin Deng
committed
bool getNoMtsConstraintFlag() const { return m_bNoMtsConstraintFlag; }
void setNoMtsConstraintFlag(bool bVal) { m_bNoMtsConstraintFlag = bVal; }
bool getNoSbtConstraintFlag() const { return m_noSbtConstraintFlag; }
void setNoSbtConstraintFlag(bool bVal) { m_noSbtConstraintFlag = bVal; }
bool getNoAffineMotionConstraintFlag() const { return m_bNoAffineMotionConstraintFlag; }
void setNoAffineMotionConstraintFlag(bool bVal) { m_bNoAffineMotionConstraintFlag = bVal; }
bool getNoGbiConstraintFlag() const { return m_bNoGbiConstraintFlag; }
void setNoGbiConstraintFlag(bool bVal) { m_bNoGbiConstraintFlag = bVal; }
bool getNoIbcConstraintFlag() const { return m_noIbcConstraintFlag; }
void setNoIbcConstraintFlag(bool bVal) { m_noIbcConstraintFlag = bVal; }
bool getNoMhIntraConstraintFlag() const { return m_bNoMhIntraConstraintFlag; }
void setNoMhIntraConstraintFlag(bool bVal) { m_bNoMhIntraConstraintFlag = bVal; }
bool getNoFPelMmvdConstraintFlag() const { return m_noFPelMmvdConstraintFlag; }
void setNoFPelMmvdConstraintFlag(bool bVal) { m_noFPelMmvdConstraintFlag = bVal; }
bool getNoTriangleConstraintFlag() const { return m_bNoTriangleConstraintFlag; }
void setNoTriangleConstraintFlag(bool bVal) { m_bNoTriangleConstraintFlag = bVal; }
Zhipin Deng
committed
bool getNoLadfConstraintFlag() const { return m_bNoLadfConstraintFlag; }
void setNoLadfConstraintFlag(bool bVal) { m_bNoLadfConstraintFlag = bVal; }
bool getNoTransformSkipConstraintFlag() const { return m_noTransformSkipConstraintFlag; }
void setNoTransformSkipConstraintFlag(bool bVal) { m_noTransformSkipConstraintFlag = bVal; }
#if JVET_O1136_TS_BDPCM_SIGNALLING
bool getNoBDPCMConstraintFlag() const { return m_noBDPCMConstraintFlag; }
void setNoBDPCMConstraintFlag(bool bVal) { m_noBDPCMConstraintFlag = bVal; }
#endif
#if JVET_O0376_SPS_JOINTCBCR_FLAG
bool getNoJointCbCrConstraintFlag() const { return m_noJointCbCrConstraintFlag; }
void setNoJointCbCrConstraintFlag(bool bVal) { m_noJointCbCrConstraintFlag = bVal; }
#endif
bool getNoQpDeltaConstraintFlag() const { return m_bNoQpDeltaConstraintFlag; }
void setNoQpDeltaConstraintFlag(bool bVal) { m_bNoQpDeltaConstraintFlag = bVal; }
Zhipin Deng
committed
bool getNoDepQuantConstraintFlag() const { return m_bNoDepQuantConstraintFlag; }
void setNoDepQuantConstraintFlag(bool bVal) { m_bNoDepQuantConstraintFlag = bVal; }
bool getNoSignDataHidingConstraintFlag() const { return m_bNoSignDataHidingConstraintFlag; }
void setNoSignDataHidingConstraintFlag(bool bVal) { m_bNoSignDataHidingConstraintFlag = bVal; }

Karsten Suehring
committed
void setFrameRate ( int i ) { m_iFrameRate = i; }
void setFrameSkip ( uint32_t i ) { m_FrameSkip = i; }
void setTemporalSubsampleRatio ( uint32_t i ) { m_temporalSubsampleRatio = i; }
void setSourceWidth ( int i ) { m_iSourceWidth = i; }
void setSourceHeight ( int i ) { m_iSourceHeight = i; }
Window &getConformanceWindow() { return m_conformanceWindow; }
void setConformanceWindow (int confLeft, int confRight, int confTop, int confBottom ) { m_conformanceWindow.setWindow (confLeft, confRight, confTop, confBottom); }
void setFramesToBeEncoded ( int i ) { m_framesToBeEncoded = i; }
bool getPrintMSEBasedSequencePSNR () const { return m_printMSEBasedSequencePSNR; }
void setPrintMSEBasedSequencePSNR (bool value) { m_printMSEBasedSequencePSNR = value; }
bool getPrintHexPsnr () const { return m_printHexPsnr; }
void setPrintHexPsnr (bool value) { m_printHexPsnr = value; }

Karsten Suehring
committed
bool getPrintFrameMSE () const { return m_printFrameMSE; }
void setPrintFrameMSE (bool value) { m_printFrameMSE = value; }
bool getPrintSequenceMSE () const { return m_printSequenceMSE; }
void setPrintSequenceMSE (bool value) { m_printSequenceMSE = value; }
bool getCabacZeroWordPaddingEnabled() const { return m_cabacZeroWordPaddingEnabled; }
void setCabacZeroWordPaddingEnabled(bool value) { m_cabacZeroWordPaddingEnabled = value; }
//====== Coding Structure ========
void setIntraPeriod (int i) { m_uiIntraPeriod = i; }

Karsten Suehring
committed
void setDecodingRefreshType ( int i ) { m_uiDecodingRefreshType = (uint32_t)i; }
void setReWriteParamSets ( bool b ) { m_rewriteParamSets = b; }
void setIDRRefParamListPresent ( bool b ) { m_idrRefParamList = b; }
bool getIDRRefParamListPresent () const { return m_idrRefParamList; }

Karsten Suehring
committed
void setGOPSize ( int i ) { m_iGOPSize = i; }
void setGopList(const GOPEntry GOPList[MAX_GOP]) { for (int i = 0; i < MAX_GOP; i++) m_GOPList[i] = GOPList[i]; }

Karsten Suehring
committed
const GOPEntry &getGOPEntry ( int i ) const { return m_GOPList[i]; }
void setRPLList0(const RPLEntry RPLList[MAX_GOP])
{
m_numRPLList0 = 0;
for (int i = 0; i < MAX_GOP; i++)
{
m_RPLList0[i] = RPLList[i];
if (m_RPLList0[i].m_POC != -1) m_numRPLList0++;
}
}
void setRPLList1(const RPLEntry RPLList[MAX_GOP])
{
m_numRPLList1 = 0;
for (int i = 0; i < MAX_GOP; i++)
{
m_RPLList1[i] = RPLList[i];
if (m_RPLList1[i].m_POC != -1) m_numRPLList1++;
}
}
const RPLEntry &getRPLEntry(int L01, int idx) const { return (L01 == 0) ? m_RPLList0[idx] : m_RPLList1[idx]; }
int getRPLCandidateSize(int L01) const { return (L01 == 0) ? m_numRPLList0 : m_numRPLList1; }
void setEncodedFlag(uint32_t i, bool value) { m_RPLList0[i].m_isEncoded = value; m_RPLList1[i].m_isEncoded = value; }

Karsten Suehring
committed
void setMaxDecPicBuffering ( uint32_t u, uint32_t tlayer ) { m_maxDecPicBuffering[tlayer] = u; }
void setNumReorderPics ( int i, uint32_t tlayer ) { m_numReorderPics[tlayer] = i; }
void setBaseQP ( int i ) { m_iQP = i; }
#if X0038_LAMBDA_FROM_QP_CAPABILITY
void setIntraQPOffset ( int i ) { m_intraQPOffset = i; }
void setLambdaFromQPEnable ( bool b ) { m_lambdaFromQPEnable = b; }
#endif
Adarsh Krishnan Ramasubramonian
committed
#if JVET_O0650_SIGNAL_CHROMAQP_MAPPING_TABLE
void setChromaQpMappingTableParams (const ChromaQpMappingTableParams ¶ms) { m_chromaQpMappingTableParams = params; }

Karsten Suehring
committed
#endif

Karsten Suehring
committed
void setPad ( int* iPad ) { for ( int i = 0; i < 2; i++ ) m_aiPad[i] = iPad[i]; }
int getMaxRefPicNum () { return m_iMaxRefPicNum; }
void setMaxRefPicNum ( int iMaxRefPicNum ) { m_iMaxRefPicNum = iMaxRefPicNum; }
int getMaxTempLayer () { return m_maxTempLayer; }
void setMaxTempLayer ( int maxTempLayer ) { m_maxTempLayer = maxTempLayer; }
void setCTUSize ( unsigned u ) { m_CTUSize = u; }
void setMinQTSizes ( unsigned* minQT) { m_uiMinQT[0] = minQT[0]; m_uiMinQT[1] = minQT[1]; m_uiMinQT[2] = minQT[2]; }
void setMaxBTDepth ( unsigned uiMaxBTDepth, unsigned uiMaxBTDepthI, unsigned uiMaxBTDepthIChroma )
{ m_uiMaxBTDepth = uiMaxBTDepth; m_uiMaxBTDepthI = uiMaxBTDepthI; m_uiMaxBTDepthIChroma = uiMaxBTDepthIChroma; }
unsigned getMaxBTDepth () const { return m_uiMaxBTDepth; }
unsigned getMaxBTDepthI () const { return m_uiMaxBTDepthI; }
unsigned getMaxBTDepthIChroma () const { return m_uiMaxBTDepthIChroma; }
int getCTUSize () const { return m_CTUSize; }
void setUseSplitConsOverride (bool n) { m_useSplitConsOverride = n; }
bool getUseSplitConsOverride () const { return m_useSplitConsOverride; }

Karsten Suehring
committed
void setDualITree ( bool b ) { m_dualITree = b; }
bool getDualITree () const { return m_dualITree; }
void setLFNST ( bool b ) { m_LFNST = b; }
bool getLFNST() const { return m_LFNST; }
void setUseFastLFNST ( bool b ) { m_useFastLFNST = b; }
bool getUseFastLFNST() const { return m_useFastLFNST; }

Karsten Suehring
committed
void setUseLMChroma ( int n ) { m_LMChroma = n; }
int getUseLMChroma() const { return m_LMChroma; }
void setCclmCollocatedChromaFlag ( bool b ) { m_cclmCollocatedChromaFlag = b; }
bool getCclmCollocatedChromaFlag () const { return m_cclmCollocatedChromaFlag; }

Karsten Suehring
committed
void setSubPuMvpMode(int n) { m_SubPuMvpMode = n; }
bool getSubPuMvpMode() const { return m_SubPuMvpMode; }
void setAffine ( bool b ) { m_Affine = b; }
bool getAffine () const { return m_Affine; }
void setAffineType( bool b ) { m_AffineType = b; }
bool getAffineType() const { return m_AffineType; }
#if JVET_O0070_PROF
void setPROF (bool b) { m_PROF = b; }
bool getPROF () const { return m_PROF; }
#endif
void setBIO(bool b) { m_BIO = b; }
bool getBIO() const { return m_BIO; }

Karsten Suehring
committed
void setIntraMTSMaxCand ( unsigned u ) { m_IntraMTSMaxCand = u; }
unsigned getIntraMTSMaxCand () const { return m_IntraMTSMaxCand; }
void setInterMTSMaxCand ( unsigned u ) { m_InterMTSMaxCand = u; }
unsigned getInterMTSMaxCand () const { return m_InterMTSMaxCand; }
void setIntraMTS ( bool b ) { m_IntraMTS = b; }
bool getIntraMTS () const { return m_IntraMTS; }
void setInterMTS ( bool b ) { m_InterMTS = b; }
bool getInterMTS () const { return m_InterMTS; }
void setImplicitMTS ( bool b ) { m_ImplicitMTS = b; }
bool getImplicitMTS () const { return m_ImplicitMTS; }
void setUseSBT ( bool b ) { m_SBT = b; }
bool getUseSBT () const { return m_SBT; }

Karsten Suehring
committed
void setUseCompositeRef (bool b) { m_compositeRefEnabled = b; }
bool getUseCompositeRef () const { return m_compositeRefEnabled; }
void setUseSMVD ( bool b ) { m_SMVD = b; }
bool getUseSMVD () const { return m_SMVD; }
void setUseGBi ( bool b ) { m_GBi = b; }
bool getUseGBi () const { return m_GBi; }
void setUseGBiFast ( uint32_t b ) { m_GBiFast = b; }
bool getUseGBiFast () const { return m_GBiFast; }
Shunsuke Iwamura
committed
#if LUMA_ADAPTIVE_DEBLOCKING_FILTER_QP_OFFSET
void setUseLadf ( bool b ) { m_LadfEnabled = b; }
bool getUseLadf () const { return m_LadfEnabled; }
void setLadfNumIntervals ( int i ) { m_LadfNumIntervals = i; }
int getLadfNumIntervals () const { return m_LadfNumIntervals; }
void setLadfQpOffset ( int value, int idx ){ m_LadfQpOffset[ idx ] = value; }
int getLadfQpOffset ( int idx ) const { return m_LadfQpOffset[ idx ]; }
void setLadfIntervalLowerBound ( int value, int idx ){ m_LadfIntervalLowerBound[ idx ] = value; }
int getLadfIntervalLowerBound ( int idx ) const { return m_LadfIntervalLowerBound[ idx ]; }
void setUseMHIntra ( bool b ) { m_MHIntra = b; }
bool getUseMHIntra () const { return m_MHIntra; }
void setUseTriangle ( bool b ) { m_Triangle = b; }
bool getUseTriangle () const { return m_Triangle; }
void setAllowDisFracMMVD ( bool b ) { m_allowDisFracMMVD = b; }
bool getAllowDisFracMMVD () const { return m_allowDisFracMMVD; }
void setUseHashME ( bool b ) { m_HashME = b; }
bool getUseHashME () const { return m_HashME; }
void setUseAffineAmvr ( bool b ) { m_AffineAmvr = b; }
bool getUseAffineAmvr () const { return m_AffineAmvr; }
Hongbin Liu
committed
void setUseAffineAmvrEncOpt ( bool b ) { m_AffineAmvrEncOpt = b; }
bool getUseAffineAmvrEncOpt () const { return m_AffineAmvrEncOpt; }
void setDMVR ( bool b ) { m_DMVR = b; }
bool getDMVR () const { return m_DMVR; }
void setMMVD (bool b) { m_MMVD = b; }
bool getMMVD () const { return m_MMVD; }
void setMmvdDisNum ( int b ) { m_MmvdDisNum = b; }
int getMmvdDisNum () const { return m_MmvdDisNum; }
#if !JVET_O1136_TS_BDPCM_SIGNALLING
void setRDPCM ( bool b ) { m_RdpcmMode = b; }
bool getRDPCM () const { return m_RdpcmMode; }
Yung-Hsuan Chao (Jessie)
committed
#if JVET_O0119_BASE_PALETTE_444
void setPLTMode ( unsigned n) { m_PLTMode = n; }
unsigned getPLTMode () const { return m_PLTMode; }
void setJointCbCr ( bool b ) { m_JointCbCrMode = b; }
bool getJointCbCr () const { return m_JointCbCrMode; }
Yung-Hsuan Chao (Jessie)
committed
#endif
void setIBCMode (unsigned n) { m_IBCMode = n; }
unsigned getIBCMode () const { return m_IBCMode; }
void setIBCLocalSearchRangeX (unsigned n) { m_IBCLocalSearchRangeX = n; }
unsigned getIBCLocalSearchRangeX () const { return m_IBCLocalSearchRangeX; }
void setIBCLocalSearchRangeY (unsigned n) { m_IBCLocalSearchRangeY = n; }
unsigned getIBCLocalSearchRangeY () const { return m_IBCLocalSearchRangeY; }
void setIBCHashSearch (unsigned n) { m_IBCHashSearch = n; }
unsigned getIBCHashSearch () const { return m_IBCHashSearch; }
void setIBCHashSearchMaxCand (unsigned n) { m_IBCHashSearchMaxCand = n; }
unsigned getIBCHashSearchMaxCand () const { return m_IBCHashSearchMaxCand; }
void setIBCHashSearchRange4SmallBlk (unsigned n) { m_IBCHashSearchRange4SmallBlk = n; }
unsigned getIBCHashSearchRange4SmallBlk () const { return m_IBCHashSearchRange4SmallBlk; }
void setIBCFastMethod (unsigned n) { m_IBCFastMethod = n; }
unsigned getIBCFastMethod () const { return m_IBCFastMethod; }