Ignore:
Timestamp:
26 Feb 2015, 00:21:54 (10 years ago)
Author:
seregin
Message:

merge with SHM-upgrade branch

Location:
branches/SHM-dev
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev

  • branches/SHM-dev/source

  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h

    r1005 r1029  
    22 * License, included below. This software may be subject to other third party
    33 * and contributor rights, including patent rights, and no such rights are
    4  * granted under this license. 
     4 * granted under this license.
    55 *
    66 * Copyright (c) 2010-2014, ITU/ISO/IEC
     
    9191  std::vector< std::vector<Int> > m_listOfOutputLayers;
    9292#endif
     93  Bool      m_isField;                                        ///< enable field coding
     94  Bool      m_isTopFieldFirst;
    9395#else
    9496  Char*     m_pchInputFile;                                   ///< source file name
     
    98100  // source specification
    99101  Int       m_iFrameRate;                                     ///< source frame-rates (Hz)
    100   UInt      m_FrameSkip;                                      ///< number of skipped frames from the beginning
     102  UInt      m_FrameSkip;                                   ///< number of skipped frames from the beginning
    101103  Int       m_iSourceWidth;                                   ///< source width in pixel
    102104  Int       m_iSourceHeight;                                  ///< source height in pixel (when interlaced = field height)
    103  
     105
    104106  Int       m_iSourceHeightOrg;                               ///< original source height in pixel (when interlaced = frame height)
    105  
    106  
     107
     108  Bool      m_isField;                                        ///< enable field coding
     109  Bool      m_isTopFieldFirst;
     110
    107111  Int       m_conformanceWindowMode;
    108112  Int       m_confWinLeft;
     
    113117  Int       m_aiPad[2];                                       ///< number of padded pixels for width and height
    114118#endif 
    115 #if AUXILIARY_PICTURES
     119  InputColourSpaceConversion m_inputColourSpaceConvert;       ///< colour space conversion to apply to input video
     120  Bool      m_snrInternalColourSpace;                       ///< if true, then no colour space conversion is applied for snr calculation, otherwise inverse of input is applied.
     121  Bool      m_outputInternalColourSpace;                    ///< if true, then no colour space conversion is applied for reconstructed video, otherwise inverse of input is applied.
     122#if !SVC_EXTENSION
    116123  ChromaFormat m_InputChromaFormatIDC;
    117124#endif
    118   Bool      m_isField;                                        ///< enable field coding
    119   Bool      m_isTopFieldFirst;
    120 
    121   // profile/level
    122 #if SVC_EXTENSION && MULTIPLE_PTL_SUPPORT
     125
     126  Bool      m_printMSEBasedSequencePSNR;
     127  Bool      m_printFrameMSE;
     128  Bool      m_printSequenceMSE;
     129  Bool      m_cabacZeroWordPaddingEnabled;
     130
     131#if MULTIPLE_PTL_SUPPORT
    123132  Int           m_numPTLInfo;
    124   Int           m_layerPTLIdx[MAX_VPS_LAYER_ID_PLUS1]; ///< scalability_mask
    125133  Profile::Name m_profileList[MAX_NUM_LAYER_IDS + 1];
    126134  Level::Tier   m_levelTierList[MAX_NUM_LAYER_IDS + 1];
     
    134142  std::vector< std::vector<Int> > m_listOfLayerPTLofOlss;
    135143#else
     144  // profile/level
    136145  Profile::Name m_profile;
    137146  Level::Tier   m_levelTier;
    138147  Level::Name   m_level;
     148  UInt          m_bitDepthConstraint;
     149  ChromaFormat  m_chromaFormatConstraint;
     150  Bool          m_intraConstraintFlag;
     151  Bool          m_lowerBitRateConstraintFlag;
    139152  Bool m_progressiveSourceFlag;
    140153  Bool m_interlacedSourceFlag;
     
    164177  Int       m_numReorderPics[MAX_TLAYER];                     ///< total number of reorder pictures
    165178  Int       m_maxDecPicBuffering[MAX_TLAYER];                 ///< total number of pictures in the decoded picture buffer
     179  Bool      m_useCrossComponentPrediction;                    ///< flag enabling the use of cross-component prediction
     180  Bool      m_reconBasedCrossCPredictionEstimate;             ///< causes the alpha calculation in encoder search to be based on the decoded residual rather than the pre-transform encoder-side residual
     181  UInt      m_saoOffsetBitShift[MAX_NUM_CHANNEL_TYPE];        ///< number of bits for the upward bit shift operation on the decoded SAO offsets
    166182  Bool      m_useTransformSkip;                               ///< flag for enabling intra transform skipping
    167183  Bool      m_useTransformSkipFast;                           ///< flag for enabling fast intra transform skipping
     184  UInt      m_transformSkipLog2MaxSize;                       ///< transform-skip maximum size (minimum of 2)
     185  Bool      m_useResidualRotation;                            ///< control flag for transform-skip/transquant-bypass residual rotation
     186  Bool      m_useSingleSignificanceMapContext;                ///< control flag for transform-skip/transquant-bypass single significance map context
     187  Bool      m_useResidualDPCM[NUMBER_OF_RDPCM_SIGNALLING_MODES];///< control flags for residual DPCM
    168188  Bool      m_enableAMP;
     189  Bool      m_useGolombRiceParameterAdaptation;               ///< control flag for Golomb-Rice parameter adaptation over each slice
     190  Bool      m_alignCABACBeforeBypass;
     191
    169192  // coding quality
    170193#if !SVC_EXTENSION
     
    177200  UInt      m_uiDeltaQpRD;                                    ///< dQP range for multi-pass slice QP optimization
    178201  Int       m_iMaxCuDQPDepth;                                 ///< Max. depth for a minimum CuDQPSize (0:default)
    179 
    180   Int       m_cbQpOffset;                                     ///< Chroma Cb QP Offset (0:default)
     202  Int       m_maxCUChromaQpAdjustmentDepth;
     203
     204  Int       m_cbQpOffset;                                     ///< Chroma Cb QP Offset (0:default)
    181205  Int       m_crQpOffset;                                     ///< Chroma Cr QP Offset (0:default)
    182206
     
    184208  Bool      m_bUseAdaptQpSelect;
    185209#endif
     210  TComSEIMasteringDisplay m_masteringDisplay;
    186211
    187212  Bool      m_bUseAdaptiveQP;                                 ///< Flag for enabling QP adaptation based on a psycho-visual model
    188213  Int       m_iQPAdaptationRange;                             ///< dQP range by QP adaptation
    189  
     214
    190215  Int       m_maxTempLayer;                                  ///< Max temporal layer
    191216#if Q0108_TSA_STSA
     
    195220#if !LAYER_CTB
    196221  // coding unit (CU) definition
     222  // TODO: Remove MaxCUWidth/MaxCUHeight and replace with MaxCUSize.
    197223  UInt      m_uiMaxCUWidth;                                   ///< max. CU width in pixel
    198224  UInt      m_uiMaxCUHeight;                                  ///< max. CU height in pixel
    199225  UInt      m_uiMaxCUDepth;                                   ///< max. CU depth
    200  
     226
    201227  // transfom unit (TU) definition
    202228  UInt      m_uiQuadtreeTULog2MaxSize;
    203229  UInt      m_uiQuadtreeTULog2MinSize;
    204  
     230
    205231  UInt      m_uiQuadtreeTUMaxDepthInter;
    206232  UInt      m_uiQuadtreeTUMaxDepthIntra;
     
    209235  // coding tools (bit-depth)
    210236#if !O0194_DIFFERENT_BITDEPTH_EL_BL
    211   Int       m_inputBitDepthY;                               ///< bit-depth of input file (luma component)
    212   Int       m_inputBitDepthC;                               ///< bit-depth of input file (chroma component)
    213   Int       m_outputBitDepthY;                              ///< bit-depth of output file (luma component)
    214   Int       m_outputBitDepthC;                              ///< bit-depth of output file (chroma component)
    215   Int       m_internalBitDepthY;                            ///< bit-depth codec operates at in luma (input/output files will be converted)
    216   Int       m_internalBitDepthC;                            ///< bit-depth codec operates at in chroma (input/output files will be converted)
    217 #endif
    218 #if AUXILIARY_PICTURES
     237  Int       m_inputBitDepth   [MAX_NUM_CHANNEL_TYPE];         ///< bit-depth of input file
     238  Int       m_outputBitDepth  [MAX_NUM_CHANNEL_TYPE];         ///< bit-depth of output file
     239  Int       m_MSBExtendedBitDepth[MAX_NUM_CHANNEL_TYPE];      ///< bit-depth of input samples after MSB extension
     240  Int       m_internalBitDepth[MAX_NUM_CHANNEL_TYPE];         ///< bit-depth codec operates at (input/output files will be converted)
     241  Bool      m_useExtendedPrecision;
     242  Bool      m_useHighPrecisionPredictionWeighting;
     243#endif
     244  //coding tools (chroma format)
     245#if !SVC_EXTENSION
    219246  ChromaFormat m_chromaFormatIDC;
    220247#endif
     
    224251
    225252  // coding tool (SAO)
    226   Bool      m_bUseSAO; 
     253  Bool      m_bUseSAO;
    227254  Int       m_maxNumOffsetsPerPic;                            ///< SAO maximun number of offset per picture
    228   Bool      m_saoLcuBoundary;                                 ///< SAO parameter estimation using non-deblocked pixels for LCU bottom and right boundary areas
     255  Bool      m_saoCtuBoundary;                                 ///< SAO parameter estimation using non-deblocked pixels for CTU bottom and right boundary areas
    229256  // coding tools (loop filter)
    230257  Bool      m_bLoopFilterDisable;                             ///< flag for using deblocking filter
     
    234261  Bool      m_DeblockingFilterControlPresent;                 ///< deblocking filter control present flag in PPS
    235262  Bool      m_DeblockingFilterMetric;                         ///< blockiness metric in encoder
    236  
     263
    237264  // coding tools (PCM)
    238265  Bool      m_usePCM;                                         ///< flag for using IPCM
     
    240267  UInt      m_uiPCMLog2MinSize;                               ///< log2 of minimum PCM block size
    241268  Bool      m_bPCMFilterDisableFlag;                          ///< PCM filter disable flag
     269  Bool      m_enableIntraReferenceSmoothing;                  ///< flag for enabling(default)/disabling intra reference smoothing/filtering
    242270
    243271  // coding tools (encoder-only parameters)
     
    246274  Bool      m_useRDOQ;                                       ///< flag for using RD optimized quantization
    247275  Bool      m_useRDOQTS;                                     ///< flag for using RD optimized quantization for transform skip
    248   Int       m_rdPenalty;                                      ///< RD-penalty for 32x32 TU for intra in non-intra slices (0: no RD-penalty, 1: RD-penalty, 2: maximum RD-penalty) 
     276  Int       m_rdPenalty;                                      ///< RD-penalty for 32x32 TU for intra in non-intra slices (0: no RD-penalty, 1: RD-penalty, 2: maximum RD-penalty)
    249277  Int       m_iFastSearch;                                    ///< ME mode, 0 = full, 1 = diamond, 2 = PMVFAST
    250278  Int       m_iSearchRange;                                   ///< ME search range
     
    252280  Bool      m_bUseFastEnc;                                    ///< flag for using fast encoder setting
    253281  Bool      m_bUseEarlyCU;                                    ///< flag for using Early CU setting
    254   Bool      m_useFastDecisionForMerge;                        ///< flag for using Fast Decision Merge RD-Cost 
     282  Bool      m_useFastDecisionForMerge;                        ///< flag for using Fast Decision Merge RD-Cost
    255283  Bool      m_bUseCbfFastMode;                              ///< flag for using Cbf Fast PU Mode Decision
    256284  Bool      m_useEarlySkipDetection;                         ///< flag for using Early SKIP Detection
    257 #if FAST_INTRA_SHVC
    258   Bool      m_useFastIntraScalable;                          ///< flag for using Fast Intra Decision for Scalable HEVC
    259 #endif
    260   Int       m_sliceMode;                                     ///< 0: no slice limits, 1 : max number of CTBs per slice, 2: max number of bytes per slice,
     285  Int       m_sliceMode;                                     ///< 0: no slice limits, 1 : max number of CTBs per slice, 2: max number of bytes per slice,
    261286                                                             ///< 3: max number of tiles per slice
    262287  Int       m_sliceArgument;                                 ///< argument according to selected slice mode
    263   Int       m_sliceSegmentMode;                              ///< 0: no slice segment limits, 1 : max number of CTBs per slice segment, 2: max number of bytes per slice segment, 
     288  Int       m_sliceSegmentMode;                              ///< 0: no slice segment limits, 1 : max number of CTBs per slice segment, 2: max number of bytes per slice segment,
    264289                                                             ///< 3: max number of tiles per slice segment
    265290  Int       m_sliceSegmentArgument;                          ///< argument according to selected slice segment mode
     
    274299#if !SVC_EXTENSION
    275300  Int       m_iWaveFrontSynchro; //< 0: no WPP. >= 1: WPP is enabled, the "Top right" from which inheritance occurs is this LCU offset in the line above the current.
     301  Int       m_iWaveFrontFlush; //< enable(1)/disable(0) the CABAC flush at the end of each line of LCUs.
    276302  Int       m_iWaveFrontSubstreams; //< If iWaveFrontSynchro, this is the number of substreams per frame (dependent tiles) or per tile (independent tiles).
    277303#endif
    278304  Bool      m_bUseConstrainedIntraPred;                       ///< flag for using constrained intra prediction
     305
    279306  Int       m_decodedPictureHashSEIEnabled;                    ///< Checksum(3)/CRC(2)/MD5(1)/disable(0) acting on decoded picture hash SEI message
    280307  Int       m_recoveryPointSEIEnabled;
     
    282309  Int       m_pictureTimingSEIEnabled;
    283310  Bool      m_toneMappingInfoSEIEnabled;
     311  Bool      m_chromaSamplingFilterSEIenabled;
     312  Int       m_chromaSamplingHorFilterIdc;
     313  Int       m_chromaSamplingVerFilterIdc;
    284314  Int       m_toneMapId;
    285315  Bool      m_toneMapCancelFlag;
     
    287317  Int       m_toneMapCodedDataBitDepth;
    288318  Int       m_toneMapTargetBitDepth;
    289   Int       m_toneMapModelId; 
     319  Int       m_toneMapModelId;
    290320  Int       m_toneMapMinValue;
    291321  Int       m_toneMapMaxValue;
     
    313343  Int       m_framePackingSEIQuincunx;
    314344  Int       m_framePackingSEIInterpretation;
     345  Int       m_segmentedRectFramePackingSEIEnabled;
     346  Bool      m_segmentedRectFramePackingSEICancel;
     347  Int       m_segmentedRectFramePackingSEIType;
     348  Bool      m_segmentedRectFramePackingSEIPersistence;
    315349  Int       m_displayOrientationSEIAngle;
    316350  Int       m_temporalLevel0IndexSEIEnabled;
    317351  Int       m_gradualDecodingRefreshInfoEnabled;
     352  Int       m_noDisplaySEITLayer;
    318353  Int       m_decodingUnitInfoSEIEnabled;
    319 #if LAYERS_NOT_PRESENT_SEI
    320   Int       m_layersNotPresentSEIEnabled;
    321 #endif
    322354  Int       m_SOPDescriptionSEIEnabled;
    323355  Int       m_scalableNestingSEIEnabled;
    324 #if Q0189_TMVP_CONSTRAINTS
    325   Int       m_TMVPConstraintsSEIEnabled;
    326 #endif
     356  Bool      m_tmctsSEIEnabled;
     357  Bool      m_timeCodeSEIEnabled;
     358  Int       m_timeCodeSEINumTs;
     359  TComSEITimeSet m_timeSetArray[MAX_TIMECODE_SEI_SETS];
     360  Bool      m_kneeSEIEnabled;
     361  Int       m_kneeSEIId;
     362  Bool      m_kneeSEICancelFlag;
     363  Bool      m_kneeSEIPersistenceFlag;
     364  Int       m_kneeSEIInputDrange;
     365  Int       m_kneeSEIInputDispLuminance;
     366  Int       m_kneeSEIOutputDrange;
     367  Int       m_kneeSEIOutputDispLuminance;
     368  Int       m_kneeSEINumKneePointsMinus1;
     369  Int*      m_kneeSEIInputKneePoint;
     370  Int*      m_kneeSEIOutputKneePoint;
    327371  // weighted prediction
    328372  Bool      m_useWeightedPred;                    ///< Use of weighted prediction in P slices
    329373  Bool      m_useWeightedBiPred;                  ///< Use of bi-directional weighted prediction in B slices
    330  
     374
    331375  UInt      m_log2ParallelMergeLevel;                         ///< Parallel merge estimation region
    332376  UInt      m_maxNumMergeCand;                                ///< Max number of merge candidates
     
    338382  Int       m_RCTargetBitrate;                    ///< target bitrate when rate control is enabled
    339383  Int       m_RCKeepHierarchicalBit;              ///< 0: equal bit allocation; 1: fixed ratio bit allocation; 2: adaptive ratio bit allocation
    340   Bool      m_RCLCULevelRC;                       ///< true: LCU level rate control; false: picture level rate control
    341   Bool      m_RCUseLCUSeparateModel;              ///< use separate R-lambda model at LCU level
     384  Bool      m_RCLCULevelRC;                       ///< true: LCU level rate control; false: picture level rate control NOTE: code-tidy - rename to m_RCCtuLevelRC
     385  Bool      m_RCUseLCUSeparateModel;              ///< use separate R-lambda model at LCU level                        NOTE: code-tidy - rename to m_RCUseCtuSeparateModel
    342386  Int       m_RCInitialQP;                        ///< inital QP for rate control
    343387  Bool      m_RCForceIntraQP;                     ///< force all intra picture to use initial QP or not
    344388#endif
    345   Int       m_useScalingListId;                               ///< using quantization matrix
     389  ScalingListMode m_useScalingListId;                         ///< using quantization matrix
    346390  Char*     m_scalingListFile;                                ///< quantization matrix file name
    347391
    348392  Bool      m_TransquantBypassEnableFlag;                     ///< transquant_bypass_enable_flag setting in PPS.
    349393  Bool      m_CUTransquantBypassFlagForce;                    ///< if transquant_bypass_enable_flag, then, if true, all CU transquant bypass flags will be set to true.
     394  CostMode  m_costMode;                                       ///< Cost mode to use
    350395
    351396  Bool      m_recalculateQPAccordingToLambda;                 ///< recalculate QP value according to the lambda value
     
    387432  Int       m_log2MaxMvLengthHorizontal;                      ///< Indicate the maximum absolute value of a decoded horizontal MV component in quarter-pel luma units
    388433  Int       m_log2MaxMvLengthVertical;                        ///< Indicate the maximum absolute value of a decoded vertical MV component in quarter-pel luma units
     434
     435#if LAYERS_NOT_PRESENT_SEI
     436  Int       m_layersNotPresentSEIEnabled;
     437#endif
     438
     439#if SVC_EXTENSION
     440#if FAST_INTRA_SHVC
     441  Bool      m_useFastIntraScalable;                          ///< flag for using Fast Intra Decision for Scalable HEVC
     442#endif
     443#if Q0189_TMVP_CONSTRAINTS
     444  Int       m_TMVPConstraintsSEIEnabled;
     445#endif
    389446#if O0153_ALT_OUTPUT_LAYER_FLAG
    390447  Bool      m_altOutputLayerFlag;                             ///< Specifies the value of alt_output_laye_flag in VPS extension
    391448#endif
    392 
    393 #if SVC_EXTENSION
    394449  Int       m_elRapSliceBEnabled;
    395450#endif
    396451#if Q0074_COLOUR_REMAPPING_SEI
    397452#if !SVC_EXTENSION
    398   string    m_colourRemapSEIFile;
     453  Char*     m_colourRemapSEIFile;
    399454  Int       m_colourRemapSEIId;
    400455  Bool      m_colourRemapSEICancelFlag;
     
    424479  Void  xSetGlobal      ();                                   ///< set global variables
    425480#endif
     481#if SVC_EXTENSION
     482  Void  xCheckParameter (UInt layerId);                       ///< check validity of configuration values per layer
     483#else
    426484  Void  xCheckParameter ();                                   ///< check validity of configuration values
     485#endif
    427486  Void  xPrintParameter ();                                   ///< print configuration values
    428487  Void  xPrintUsage     ();                                   ///< print usage
     
    452511#endif
    453512  Bool      m_crossLayerIrapAlignFlag;
    454 #if P0050_KNEE_FUNCTION_SEI
    455   Bool      m_kneeSEIEnabled;
    456   Int       m_kneeSEIId;
    457   Bool      m_kneeSEICancelFlag;
    458   Bool      m_kneeSEIPersistenceFlag;
    459   Bool      m_kneeSEIMappingFlag;
    460   Int       m_kneeSEIInputDrange;
    461   Int       m_kneeSEIInputDispLuminance;
    462   Int       m_kneeSEIOutputDrange;
    463   Int       m_kneeSEIOutputDispLuminance;
    464   Int       m_kneeSEINumKneePointsMinus1;
    465   Int*      m_kneeSEIInputKneePoint;
    466   Int*      m_kneeSEIOutputKneePoint;
    467 #endif
    468513#if Q0096_OVERLAY_SEI
    469514  Bool                                m_overlaySEIEnabled;
     
    514559  TAppEncCfg();
    515560  virtual ~TAppEncCfg();
    516  
     561
    517562public:
    518563  Void  create    ();                                         ///< create option handling class
     
    525570  Int  getGOPSize()                {return m_iGOPSize;          }
    526571#if O0194_DIFFERENT_BITDEPTH_EL_BL
    527   UInt getInternalBitDepthY(Int iLayer)      {return m_acLayerCfg[iLayer].m_internalBitDepthY; }
    528   UInt getInternalBitDepthC(Int iLayer)      {return m_acLayerCfg[iLayer].m_internalBitDepthC; }
     572  UInt getInternalBitDepth(Int iLayer, ChannelType type)      {return m_acLayerCfg[iLayer].m_internalBitDepth[type]; }
    529573  Bool getPCMInputBitDepthFlag()             {return m_bPCMInputBitDepthFlag;                  }
    530574#else
    531   UInt getInternalBitDepthY()      {return m_internalBitDepthY; }
    532   UInt getInternalBitDepthC()      {return m_internalBitDepthC; }
     575  UInt getInternalBitDepth( ChannelType type )      {return m_internalBitDepth[type]; } 
    533576#endif
    534577#if !LAYER_CTB
Note: See TracChangeset for help on using the changeset viewer.