Changeset 608 in 3DVCSoftware for trunk/source/App/TAppEncoder/TAppEncCfg.h
- Timestamp:
- 1 Sep 2013, 22:47:26 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/App/TAppEncoder/TAppEncCfg.h
r443 r608 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 2, ITU/ISO/IEC6 * Copyright (c) 2010-2013, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 42 42 43 43 #include "TLibEncoder/TEncCfg.h" 44 #include <sstream> 45 #if H_3D 44 46 #include "TAppCommon/TAppComCamPara.h" 45 #include "TLibRenderer/TRenTop.h"46 47 #include "TLibRenderer/TRenModel.h" 47 48 #include "TLibRenderer/TRenModSetupStrParser.h" 48 49 #include <sstream> 50 #include <vector> 51 49 #endif 52 50 //! \ingroup TAppEncoder 53 51 //! \{ … … 62 60 protected: 63 61 // file I/O 62 #if H_MV 64 63 std::vector<char*> m_pchInputFileList; ///< source file names 65 std::vector<char*> m_pchDepthInputFileList; ///< source depth file names 64 #else 65 Char* m_pchInputFile; ///< source file name 66 #endif 67 Char* m_pchBitstreamFile; ///< output bitstream file 68 #if H_MV 66 69 std::vector<char*> m_pchReconFileList; ///< output reconstruction file names 67 std::vector<char*> m_pchDepthReconFileList; ///< output depth reconstruction file names 68 char* m_pchBitstreamFile; ///< output bitstream file 70 Int m_numberOfLayers; ///< number of Layers to Encode 71 #if H_3D 72 Int m_iNumberOfViews; ///< number of Layers that are views 73 #endif 74 #else 75 Char* m_pchReconFile; ///< output reconstruction file 76 #endif 77 #if H_MV 78 // VPS specification 79 std::vector< std::vector<Int> > m_dimIds; ///< dimension ids ( pointers to m_viewId and m_depthFlag 80 std::vector<Int> m_viewId; ///< view id 81 #if H_3D 82 std::vector<Int> m_depthFlag; ///< depth flag 83 #endif 84 std::vector<Int> m_layerIdInNuh; ///< layer Id in Nuh for each layer 85 Bool m_splittingFlag; ///< Splitting Flag 86 Int m_scalabilityMask; ///< Mask indicating scalabilities, 1: texture; 3: texture + depth 87 std::vector<Int> m_dimensionIdLen; ///< Length of scalability dimension s 88 89 // layer sets 90 Int m_vpsNumLayerSets; ///< Number of layer sets 91 std::vector< std::vector<Int> > m_layerIdsInSets; ///< LayerIds in vps of layer set 92 Bool m_defaultOneTargetOutputLayerFlag; ///< Output highest layer of layer sets by default 93 std::vector<Int> m_outputLayerSetIdx; ///< Indices of layer sets used as additional output layer sets 94 std::vector< std::vector<Int> > m_layerIdsInAddOutputLayerSet; ///< LayerIds in vps of additional output layers 95 std::vector<Int> m_profileLevelTierIdx; ///< Indices of of profile level tier 96 97 // Dependencies 98 std::vector< std::vector<Int> > m_directRefLayers; ///< LayerIds of direct reference layers 99 std::vector< std::vector<Int> > m_dependencyTypes; ///< Dependency types of direct reference layers 100 101 #if H_3D_IV_MERGE 102 Bool m_ivMvPredFlag; ///< Interview motion vector prediction 103 #endif 104 #if H_3D_ARP /// < flag and number of weighting factors in ARP 105 UInt m_uiUseAdvResPred; 106 UInt m_uiARPStepNum; 107 #endif 108 #if H_3D_IC 109 vector<Bool> m_abUseIC; ///< flag for using illumination compensation for inter-view prediction 110 #endif 111 #if H_3D_NBDV_REF 112 Bool m_depthRefinementFlag; 113 #endif 114 #if H_3D_VSP 115 Bool m_viewSynthesisPredFlag; 116 #endif 117 #if H_3D_TMVP 118 Bool m_ivMvScalingFlag; 119 #endif 120 #endif 69 121 Double m_adLambdaModifier[ MAX_TLAYER ]; ///< Lambda modifier array for each temporal layer 70 122 // source specification 71 123 Int m_iFrameRate; ///< source frame-rates (Hz) 72 unsigned int m_FrameSkip;///< number of skipped frames from the beginning124 UInt m_FrameSkip; ///< number of skipped frames from the beginning 73 125 Int m_iSourceWidth; ///< source width in pixel 74 126 Int m_iSourceHeight; ///< source height in pixel 75 Int m_c roppingMode;76 Int m_c ropLeft;77 Int m_c ropRight;78 Int m_c ropTop;79 Int m_c ropBottom;80 Int m_ iFrameToBeEncoded; ///< number of encoded frames127 Int m_conformanceMode; 128 Int m_confLeft; 129 Int m_confRight; 130 Int m_confTop; 131 Int m_confBottom; 132 Int m_framesToBeEncoded; ///< number of encoded frames 81 133 Int m_aiPad[2]; ///< number of padded pixels for width and height 82 134 83 Int m_iNumberOfViews; ///< number Views to Encode 84 Bool m_bUsingDepthMaps; 85 86 #if FLEX_CODING_ORDER_M23723 87 Char* m_pchMVCJointCodingOrder; ///< texture-depth coding order 88 Bool m_b3DVFlexOrder; ///< flexible coding order flag 89 #endif 90 135 // profile/level 136 Profile::Name m_profile; 137 Level::Tier m_levelTier; 138 Level::Name m_level; 139 Bool m_progressiveSourceFlag; 140 Bool m_interlacedSourceFlag; 141 Bool m_nonPackedConstraintFlag; 142 Bool m_frameOnlyConstraintFlag; 143 91 144 // coding structure 92 145 Int m_iIntraPeriod; ///< period of I-slice (random access period) 93 146 Int m_iDecodingRefreshType; ///< random access type 94 147 Int m_iGOPSize; ///< GOP size of hierarchical structure 95 Int m_extraRPSs[MAX_VIEW_NUM]; 96 GOPEntryMvc m_GOPListsMvc[MAX_VIEW_NUM][MAX_GOP+1]; 97 Int m_numReorderPics[MAX_VIEW_NUM][MAX_TLAYER]; ///< total number of reorder pictures 98 Int m_maxDecPicBuffering[MAX_VIEW_NUM][MAX_TLAYER]; ///< total number of reference pictures needed for decoding 99 Bool m_bUseLComb; ///< flag for using combined reference list for uni-prediction in B-slices (JCTVC-D421) 100 Bool m_bLCMod; ///< flag for specifying whether the combined reference list for uni-prediction in B-slices is uploaded explicitly 101 Bool m_bDisInter4x4; 102 Bool m_enableNSQT; ///< flag for enabling NSQT 148 #if H_MV 149 Int m_extraRPSsMvc[MAX_NUM_LAYERS]; ///< extra RPSs added to handle CRA for each layer 150 std::vector< GOPEntry* > m_GOPListMvc; ///< the coding structure entries from the config file for each layer 151 Int m_numReorderPicsMvc[MAX_NUM_LAYERS][MAX_TLAYER]; ///< total number of reorder pictures for each layer 152 Int m_maxDecPicBufferingMvc[MAX_NUM_LAYERS][MAX_TLAYER]; ///< total number of reference pictures needed for decoding for each layer 153 #else 154 Int m_extraRPSs; ///< extra RPSs added to handle CRA 155 GOPEntry m_GOPList[MAX_GOP]; ///< the coding structure entries from the config file 156 Int m_numReorderPics[MAX_TLAYER]; ///< total number of reorder pictures 157 Int m_maxDecPicBuffering[MAX_TLAYER]; ///< total number of pictures in the decoded picture buffer 158 #endif 159 Bool m_useTransformSkip; ///< flag for enabling intra transform skipping 160 Bool m_useTransformSkipFast; ///< flag for enabling fast intra transform skipping 103 161 Bool m_enableAMP; 104 162 // coding quality 105 std::vector<Double> m_adQP; ///< QP value of key-picture (floating point) [0] video, [1] depth 106 std::vector<Int> m_aiQP; ///< QP value of key-picture (integer) [0] video, [1] depth 107 #if QC_MVHEVC_B0046 108 std::vector<Int> m_aiVId; ///< view id 109 #endif 110 Int m_aiTLayerQPOffset[MAX_TLAYER]; ///< QP offset corresponding to temporal layer depth 111 char* m_pchdQPFile; ///< QP offset for each slice (initialized from external file) 163 #if H_MV 164 std::vector<Double> m_fQP; ///< QP value of key-picture (floating point) for each layer 165 std::vector<Int> m_iQP; ///< QP value of key-picture (integer) for each layer 166 #else 167 Double m_fQP; ///< QP value of key-picture (floating point) 168 Int m_iQP; ///< QP value of key-picture (integer) 169 #endif 170 Char* m_pchdQPFile; ///< QP offset for each slice (initialized from external file) 171 #if H_MV 172 std::vector<Int*> m_aidQP; ///< array of slice QP values for each layer 173 #else 112 174 Int* m_aidQP; ///< array of slice QP values 113 Int* m_aidQPdepth; ///< array of depth slice QP values 175 #endif 114 176 Int m_iMaxDeltaQP; ///< max. |delta QP| 115 177 UInt m_uiDeltaQpRD; ///< dQP range for multi-pass slice QP optimization 116 178 Int m_iMaxCuDQPDepth; ///< Max. depth for a minimum CuDQPSize (0:default) 117 179 118 Int m_ iChromaQpOffset; ///< ChromaQpOffset(0:default)119 Int m_ iChromaQpOffset2nd; ///< ChromaQpOffset2nd(0:default)180 Int m_cbQpOffset; ///< Chroma Cb QP Offset (0:default) 181 Int m_crQpOffset; ///< Chroma Cr QP Offset (0:default) 120 182 121 183 #if ADAPTIVE_QP_SELECTION … … 126 188 Int m_iQPAdaptationRange; ///< dQP range by QP adaptation 127 189 128 Int m_maxTempLayer[MAX_VIEW_NUM]; ///< Max temporal layer 190 #if H_MV 191 Int m_maxTempLayerMvc[MAX_NUM_LAYER_IDS]; ///< Max temporal layer for each layer 192 #else 193 Int m_maxTempLayer; ///< Max temporal layer 194 #endif 129 195 130 196 // coding unit (CU) definition … … 141 207 142 208 // coding tools (bit-depth) 143 UInt m_uiInputBitDepth; ///< bit-depth of input file 144 UInt m_uiOutputBitDepth; ///< bit-depth of output file 145 UInt m_uiInternalBitDepth; ///< Internal bit-depth (BitDepth+BitIncrement) 209 Int m_inputBitDepthY; ///< bit-depth of input file (luma component) 210 Int m_inputBitDepthC; ///< bit-depth of input file (chroma component) 211 Int m_outputBitDepthY; ///< bit-depth of output file (luma component) 212 Int m_outputBitDepthC; ///< bit-depth of output file (chroma component) 213 Int m_internalBitDepthY; ///< bit-depth codec operates at in luma (input/output files will be converted) 214 Int m_internalBitDepthC; ///< bit-depth codec operates at in chroma (input/output files will be converted) 146 215 147 216 // coding tools (PCM bit-depth) 148 217 Bool m_bPCMInputBitDepthFlag; ///< 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth. 149 UInt m_uiPCMBitDepthLuma; ///< PCM bit-depth for luma150 218 151 219 // coding tool (lossless) 152 #if LOSSLESS_CODING153 220 Bool m_useLossless; ///< flag for using lossless coding 154 #endif 155 vector<Bool> m_abUseSAO; 156 #if LGE_ILLUCOMP_B0045 157 #if LGE_ILLUCOMP_DEPTH_C0046 158 vector<Bool> m_abUseIC; ///< flag for using illumination compensation for inter-view prediction 159 #else 160 Bool m_bUseIC; ///< flag for using illumination compensation for inter-view prediction 161 #endif 162 #endif 163 #if INTER_VIEW_VECTOR_SCALING_C0115 164 Bool m_bUseIVS; ///< flag for using inter-view vector scaling 221 #if H_MV 222 std::vector<Bool> m_bUseSAO; 223 #else 224 Bool m_bUseSAO; 165 225 #endif 166 226 Int m_maxNumOffsetsPerPic; ///< SAO maximun number of offset per picture 167 #if LGE_SAO_MIGRATION_D0091168 227 Bool m_saoLcuBoundary; ///< SAO parameter estimation using non-deblocked pixels for LCU bottom and right boundary areas 169 228 Bool m_saoLcuBasedOptimization; ///< SAO LCU-based optimization 170 #else171 Bool m_saoInterleavingFlag; ///< SAO interleaving flag172 #endif173 229 // coding tools (loop filter) 174 vector<Bool> m_abUseALF; ///< flag for using adaptive loop filter [0] - video, [1] - depth 175 Int m_iALFEncodePassReduction; //!< ALF encoding pass, 0 = original 16-pass, 1 = 1-pass, 2 = 2-pass 176 177 Int m_iALFMaxNumberFilters; ///< ALF Max Number Filters in one picture 178 Bool m_bALFParamInSlice; 179 Bool m_bALFPicBasedEncode; 180 181 vector<Bool> m_abLoopFilterDisable; ///< flag for using deblocking filter filter [0] - video, [1] - depth 182 Bool m_loopFilterOffsetInAPS; ///< offset for deblocking filter in 0 = slice header, 1 = APS 230 #if H_MV 231 std::vector<Bool> m_bLoopFilterDisable; ///< flag for using deblocking filter for each layer 232 #else 233 Bool m_bLoopFilterDisable; ///< flag for using deblocking filter 234 #endif 235 Bool m_loopFilterOffsetInPPS; ///< offset for deblocking filter in 0 = slice header, 1 = PPS 183 236 Int m_loopFilterBetaOffsetDiv2; ///< beta offset for deblocking filter 184 237 Int m_loopFilterTcOffsetDiv2; ///< tc offset for deblocking filter 185 238 Bool m_DeblockingFilterControlPresent; ///< deblocking filter control present flag in PPS 239 Bool m_DeblockingFilterMetric; ///< blockiness metric in encoder 186 240 187 Bool m_bUseLMChroma; ///< JL: Chroma intra prediction based on luma signal188 189 241 // coding tools (PCM) 190 242 Bool m_usePCM; ///< flag for using IPCM … … 197 249 Bool m_bUseASR; ///< flag for using adaptive motion search range 198 250 Bool m_bUseHADME; ///< flag for using HAD in sub-pel ME 199 vector<Bool> m_abUseRDOQ; ///< flag for using RD optimized quantization [0]-video, [1]-depth 251 Bool m_useRDOQ; ///< flag for using RD optimized quantization 252 Bool m_useRDOQTS; ///< flag for using RD optimized quantization for transform skip 253 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) 200 254 Int m_iFastSearch; ///< ME mode, 0 = full, 1 = diamond, 2 = PMVFAST 201 255 Int m_iSearchRange; ///< ME search range 202 #if DV_V_RESTRICTION_B0037203 Bool m_bUseDisparitySearchRangeRestriction; ///< restrict vertical search range for inter-view prediction204 Int m_iVerticalDisparitySearchRange; ///< ME vertical search range for inter-view prediction205 #endif206 256 Int m_bipredSearchRange; ///< ME search range for bipred refinement 207 257 Bool m_bUseFastEnc; ///< flag for using fast encoder setting 208 #if HHI_INTERVIEW_SKIP209 Bool m_bInterViewSkip; ///< usage of interview skip mode ( do not transmit residual)210 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE211 Double m_dInterViewSkipLambdaScale; ///< lambda scale for interview skip212 #endif213 #endif214 258 Bool m_bUseEarlyCU; ///< flag for using Early CU setting 215 216 #if DEPTH_MAP_GENERATION 217 UInt m_uiPredDepthMapGeneration; ///< using of (virtual) depth maps for texture coding 218 #endif 219 #if H3D_IVMP 220 UInt m_uiMultiviewMvPredMode; ///< usage of predictors for multi-view mv prediction 221 UInt m_uiMultiviewMvRegMode; ///< regularization for multiview motion vectors 222 Double m_dMultiviewMvRegLambdaScale; ///< lambda scale for multiview motion vectors regularization 223 #endif 224 #if H3D_IVRP 225 #if QC_ARP_D0177 226 UInt m_nUseAdvResPred; 227 #else 228 UInt m_uiMultiviewResPredMode; ///< using multiview residual prediction 229 #endif 230 #endif 231 232 Bool m_useFastDecisionForMerge; ///< flag for using Fast Decision Merge RD-Cost 233 Bool m_bUseCbfFastMode; ///< flag for using Cbf Fast PU Mode Decision 234 Int m_iSliceMode; ///< 0: Disable all Recon slice limits, 1 : Maximum number of largest coding units per slice, 2: Maximum number of bytes in a slice 235 Int m_iSliceArgument; ///< If m_iSliceMode==1, m_iSliceArgument=max. # of largest coding units. If m_iSliceMode==2, m_iSliceArgument=max. # of bytes. 236 Int m_iEntropySliceMode; ///< 0: Disable all entropy slice limits, 1 : Maximum number of largest coding units per slice, 2: Constraint based entropy slice 237 Int m_iEntropySliceArgument; ///< If m_iEntropySliceMode==1, m_iEntropySliceArgument=max. # of largest coding units. If m_iEntropySliceMode==2, m_iEntropySliceArgument=max. # of bins. 238 239 Int m_iSliceGranularity; ///< 0: Slices always end at LCU borders. 1-3: slices may end at a depth of 1-3 below LCU level. 240 Bool m_bLFCrossSliceBoundaryFlag; ///< 0: Cross-slice-boundary in-loop filtering 1: non-cross-slice-boundary in-loop filtering 241 Int m_iTileBehaviorControlPresentFlag; //!< 1: tile behavior control parameters are in PPS 0: tile behavior control parameters are not in PPS 242 Bool m_bLFCrossTileBoundaryFlag; //!< 1: Cross-tile-boundary in-loop filtering 0: non-cross-tile-boundary in-loop filtering 243 Int m_iColumnRowInfoPresent; 259 Bool m_useFastDecisionForMerge; ///< flag for using Fast Decision Merge RD-Cost 260 Bool m_bUseCbfFastMode; ///< flag for using Cbf Fast PU Mode Decision 261 Bool m_useEarlySkipDetection; ///< flag for using Early SKIP Detection 262 Int m_sliceMode; ///< 0: no slice limits, 1 : max number of CTBs per slice, 2: max number of bytes per slice, 263 ///< 3: max number of tiles per slice 264 Int m_sliceArgument; ///< argument according to selected slice mode 265 Int m_sliceSegmentMode; ///< 0: no slice segment limits, 1 : max number of CTBs per slice segment, 2: max number of bytes per slice segment, 266 ///< 3: max number of tiles per slice segment 267 Int m_sliceSegmentArgument; ///< argument according to selected slice segment mode 268 269 Bool m_bLFCrossSliceBoundaryFlag; ///< 1: filter across slice boundaries 0: do not filter across slice boundaries 270 Bool m_bLFCrossTileBoundaryFlag; ///< 1: filter across tile boundaries 0: do not filter across tile boundaries 244 271 Int m_iUniformSpacingIdr; 245 272 Int m_iNumColumnsMinus1; 246 char* m_pchColumnWidth;273 Char* m_pchColumnWidth; 247 274 Int m_iNumRowsMinus1; 248 char* m_pchRowHeight; 249 Int m_iTileLocationInSliceHeaderFlag; //< enable(1)/disable(0) transmitssion of tile location in slice header 250 Int m_iTileMarkerFlag; //< enable(1)/disable(0) transmitssion of light weight tile marker 251 Int m_iMaxTileMarkerEntryPoints; //< maximum number of tile markers allowed in a slice (controls degree of parallelism) 252 Double m_dMaxTileMarkerOffset; //< Calculated offset. Light weight tile markers will be transmitted for TileIdx= Offset, 2*Offset, 3*Offset ... 253 275 Char* m_pchRowHeight; 276 UInt* m_pColumnWidth; 277 UInt* m_pRowHeight; 254 278 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. 255 Int m_iWaveFrontFlush; //< enable(1)/disable(0) the CABAC flush at the end of each line of LCUs.256 279 Int m_iWaveFrontSubstreams; //< If iWaveFrontSynchro, this is the number of substreams per frame (dependent tiles) or per tile (independent tiles). 257 280 258 281 Bool m_bUseConstrainedIntraPred; ///< flag for using constrained intra prediction 259 282 260 bool m_pictureDigestEnabled; ///< enable(1)/disable(0) md5 computation and SEI signalling 261 283 Int m_decodedPictureHashSEIEnabled; ///< Checksum(3)/CRC(2)/MD5(1)/disable(0) acting on decoded picture hash SEI message 284 Int m_recoveryPointSEIEnabled; 285 Int m_bufferingPeriodSEIEnabled; 286 Int m_pictureTimingSEIEnabled; 287 Bool m_toneMappingInfoSEIEnabled; 288 Int m_toneMapId; 289 Bool m_toneMapCancelFlag; 290 Bool m_toneMapPersistenceFlag; 291 Int m_toneMapCodedDataBitDepth; 292 Int m_toneMapTargetBitDepth; 293 Int m_toneMapModelId; 294 Int m_toneMapMinValue; 295 Int m_toneMapMaxValue; 296 Int m_sigmoidMidpoint; 297 Int m_sigmoidWidth; 298 Int m_numPivots; 299 Int m_cameraIsoSpeedIdc; 300 Int m_cameraIsoSpeedValue; 301 Int m_exposureCompensationValueSignFlag; 302 Int m_exposureCompensationValueNumerator; 303 Int m_exposureCompensationValueDenomIdc; 304 Int m_refScreenLuminanceWhite; 305 Int m_extendedRangeWhiteLevel; 306 Int m_nominalBlackLevelLumaCodeValue; 307 Int m_nominalWhiteLevelLumaCodeValue; 308 Int m_extendedWhiteLevelLumaCodeValue; 309 Int* m_startOfCodedInterval; 310 Int* m_codedPivotValue; 311 Int* m_targetPivotValue; 312 Int m_framePackingSEIEnabled; 313 Int m_framePackingSEIType; 314 Int m_framePackingSEIId; 315 Int m_framePackingSEIQuincunx; 316 Int m_framePackingSEIInterpretation; 317 Int m_displayOrientationSEIAngle; 318 Int m_temporalLevel0IndexSEIEnabled; 319 Int m_gradualDecodingRefreshInfoEnabled; 320 Int m_decodingUnitInfoSEIEnabled; 321 Int m_SOPDescriptionSEIEnabled; 322 Int m_scalableNestingSEIEnabled; 262 323 // weighted prediction 263 Bool m_bUseWeightPred; ///< Use of explicit Weighting Prediction for P_SLICE 264 UInt m_uiBiPredIdc; ///< Use of Bi-Directional Weighting Prediction (B_SLICE): explicit(1) or implicit(2) 265 266 #if TMVP_DEPTH_SWITCH 267 vector<Bool> m_enableTMVP; ///< Enable TMVP [0] video, [1] depth 268 #else 269 Bool m_enableTMVP; 270 #endif 271 324 Bool m_useWeightedPred; ///< Use of weighted prediction in P slices 325 Bool m_useWeightedBiPred; ///< Use of bi-directional weighted prediction in B slices 326 327 UInt m_log2ParallelMergeLevel; ///< Parallel merge estimation region 328 UInt m_maxNumMergeCand; ///< Max number of merge candidates 329 330 Int m_TMVPModeId; 272 331 Int m_signHideFlag; 273 Int m_signHidingThreshold; 274 #if HHI_MPI 275 Bool m_bUseMVI; ///< flag for using Motion Vector Inheritance for depth map coding 276 #endif 277 #if RWTH_SDC_DLT_B0036 278 Bool m_bUseDLT; 279 Bool m_bUseSDC; 280 #endif 281 332 #if RATE_CONTROL_LAMBDA_DOMAIN 333 Bool m_RCEnableRateControl; ///< enable rate control or not 334 Int m_RCTargetBitrate; ///< target bitrate when rate control is enabled 335 #if M0036_RC_IMPROVEMENT 336 Int m_RCKeepHierarchicalBit; ///< 0: equal bit allocation; 1: fixed ratio bit allocation; 2: adaptive ratio bit allocation 337 #else 338 Bool m_RCKeepHierarchicalBit; ///< whether keeping hierarchical bit allocation structure or not 339 #endif 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 342 Int m_RCInitialQP; ///< inital QP for rate control 343 Bool m_RCForceIntraQP; ///< force all intra picture to use initial QP or not 344 #else 345 Bool m_enableRateCtrl; ///< Flag for using rate control algorithm 346 Int m_targetBitrate; ///< target bitrate 347 Int m_numLCUInUnit; ///< Total number of LCUs in a frame should be completely divided by the NumLCUInUnit 348 #endif 282 349 Int m_useScalingListId; ///< using quantization matrix 283 char* m_scalingListFile; ///< quantization matrix file name 284 285 // camera parameter 350 Char* m_scalingListFile; ///< quantization matrix file name 351 352 Bool m_TransquantBypassEnableFlag; ///< transquant_bypass_enable_flag setting in PPS. 353 Bool m_CUTransquantBypassFlagValue; ///< if transquant_bypass_enable_flag, the fixed value to use for the per-CU cu_transquant_bypass_flag. 354 355 Bool m_recalculateQPAccordingToLambda; ///< recalculate QP value according to the lambda value 356 Bool m_useStrongIntraSmoothing; ///< enable strong intra smoothing for 32x32 blocks where the reference samples are flat 357 Int m_activeParameterSetsSEIEnabled; 358 359 Bool m_vuiParametersPresentFlag; ///< enable generation of VUI parameters 360 Bool m_aspectRatioInfoPresentFlag; ///< Signals whether aspect_ratio_idc is present 361 Int m_aspectRatioIdc; ///< aspect_ratio_idc 362 Int m_sarWidth; ///< horizontal size of the sample aspect ratio 363 Int m_sarHeight; ///< vertical size of the sample aspect ratio 364 Bool m_overscanInfoPresentFlag; ///< Signals whether overscan_appropriate_flag is present 365 Bool m_overscanAppropriateFlag; ///< Indicates whether conformant decoded pictures are suitable for display using overscan 366 Bool m_videoSignalTypePresentFlag; ///< Signals whether video_format, video_full_range_flag, and colour_description_present_flag are present 367 Int m_videoFormat; ///< Indicates representation of pictures 368 Bool m_videoFullRangeFlag; ///< Indicates the black level and range of luma and chroma signals 369 Bool m_colourDescriptionPresentFlag; ///< Signals whether colour_primaries, transfer_characteristics and matrix_coefficients are present 370 Int m_colourPrimaries; ///< Indicates chromaticity coordinates of the source primaries 371 Int m_transferCharacteristics; ///< Indicates the opto-electronic transfer characteristics of the source 372 Int m_matrixCoefficients; ///< Describes the matrix coefficients used in deriving luma and chroma from RGB primaries 373 Bool m_chromaLocInfoPresentFlag; ///< Signals whether chroma_sample_loc_type_top_field and chroma_sample_loc_type_bottom_field are present 374 Int m_chromaSampleLocTypeTopField; ///< Specifies the location of chroma samples for top field 375 Int m_chromaSampleLocTypeBottomField; ///< Specifies the location of chroma samples for bottom field 376 Bool m_neutralChromaIndicationFlag; ///< Indicates that the value of all decoded chroma samples is equal to 1<<(BitDepthCr-1) 377 Bool m_defaultDisplayWindowFlag; ///< Indicates the presence of the default window parameters 378 Int m_defDispWinLeftOffset; ///< Specifies the left offset from the conformance window of the default window 379 Int m_defDispWinRightOffset; ///< Specifies the right offset from the conformance window of the default window 380 Int m_defDispWinTopOffset; ///< Specifies the top offset from the conformance window of the default window 381 Int m_defDispWinBottomOffset; ///< Specifies the bottom offset from the conformance window of the default window 382 Bool m_frameFieldInfoPresentFlag; ///< Indicates that pic_struct values are present in picture timing SEI messages 383 Bool m_pocProportionalToTimingFlag; ///< Indicates that the POC value is proportional to the output time w.r.t. first picture in CVS 384 Int m_numTicksPocDiffOneMinus1; ///< Number of ticks minus 1 that for a POC difference of one 385 Bool m_bitstreamRestrictionFlag; ///< Signals whether bitstream restriction parameters are present 386 Bool m_tilesFixedStructureFlag; ///< Indicates that each active picture parameter set has the same values of the syntax elements related to tiles 387 Bool m_motionVectorsOverPicBoundariesFlag; ///< Indicates that no samples outside the picture boundaries are used for inter prediction 388 Int m_minSpatialSegmentationIdc; ///< Indicates the maximum size of the spatial segments in the pictures in the coded video sequence 389 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 390 Int m_maxBitsPerMinCuDenom; ///< Indicates an upper bound for the number of bits of coding_unit() data 391 Int m_log2MaxMvLengthHorizontal; ///< Indicate the maximum absolute value of a decoded horizontal MV component in quarter-pel luma units 392 Int m_log2MaxMvLengthVertical; ///< Indicate the maximum absolute value of a decoded vertical MV component in quarter-pel luma units 393 394 #if H_3D 395 // Camera parameters 286 396 Char* m_pchCameraParameterFile; ///< camera parameter file 287 397 Char* m_pchBaseViewCameraNumbers; 288 #if !QC_MVHEVC_B0046289 398 TAppComCamPara m_cCameraData; 290 #endif291 399 Int m_iCodedCamParPrecision; ///< precision for coding of camera parameters 292 293 #if HHI_VSO 400 #if H_3D_VSO 294 401 Char* m_pchVSOConfig; 295 402 Bool m_bUseVSO; ///< flag for using View Synthesis Optimization 296 #if HHI_VSO_LS_TABLE_M23714297 403 Bool m_bVSOLSTable; ///< Depth QP dependent Lagrange parameter optimization (m23714) 298 #endif299 #if LGE_VSO_EARLY_SKIP_A0093300 404 Bool m_bVSOEarlySkip; ///< Early skip of VSO computation (JCT3V-A0093 modification 4) 301 #endif 405 302 406 //// Used for development by GT, might be removed later 303 407 Double m_dLambdaScaleVSO; ///< Scaling factor for Lambda in VSO mode 304 408 Bool m_bForceLambdaScaleVSO; ///< Use Lambda Scale for depth even if VSO is turned off 305 #if HHI_VSO_DIST_INT306 409 Bool m_bAllowNegDist; ///< Allow negative distortion in VSO 307 #endif308 410 UInt m_uiVSOMode; ///< Number of VSO Mode, 1 = , 2 = simple, org vs. ren, 3 = simple, ren vs. ren, 4 = full 309 #endif 310 #ifSAIT_VSO_EST_A0033411 412 // SAIT_VSO_EST_A0033 311 413 Bool m_bUseEstimatedVSD; ///< Flag for using model based VSD estimation instead of VSO for some encoder decisions (JCT3V-A0033 modification 3) 312 #endif 313 #ifLGE_WVSO_A0119414 415 // LGE_WVSO_A0119 314 416 Bool m_bUseWVSO; ///< flag for using View Synthesis Optimization 315 417 Int m_iVSOWeight; 316 418 Int m_iVSDWeight; 317 419 Int m_iDWeight; 318 #endif 319 // coding tools (depth intra modes) 320 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 321 Bool m_bUseDMM; ///< flag for using DMM 322 #endif 323 324 #if H3D_QTL 325 Bool m_bUseQTLPC; ///< flag for using depth QuadTree Limitation + Predictive Coding 326 #endif 327 328 #if MTK_D0156 329 330 #if MERL_VSP_COMPENSATION_C0152 331 Bool m_bUseVSPCompensation; 332 #endif 333 334 Bool m_bUseDVPRefine; 335 #endif 336 420 421 // Ren Model String 422 TRenModSetupStrParser m_cRenModStrParser; 423 #endif 424 #if H_3D_DIM 425 Bool m_useDMM; ///< flag for using DMM 426 Bool m_useRBC; ///< flag for using RBC 427 Bool m_useSDC; ///< flag for using SDC 428 Bool m_useDLT; ///< flag for using DLT 429 #endif 430 #if H_3D_QTLPC 431 Bool m_bUseQTL; ///< flag for using depth QuadTree Limitation 432 Bool m_bUsePC; ///< flag for using Predictive Coding with QTL 433 #endif 434 #if LGE_INTER_SDC_E0156 435 Bool m_bDepthInterSDCFlag; ///< flag for inter SDC of depth map coding 436 #endif 437 #endif 337 438 // internal member functions 338 439 Void xSetGlobal (); ///< set global variables … … 340 441 Void xPrintParameter (); ///< print configuration values 341 442 Void xPrintUsage (); ///< print usage 342 343 Void xCleanUpVectors (); ///< clean up vector sizes 344 Void xInitCameraPars (); ///< init camera parameters 345 346 347 // set MVD Parameters and LUTs 348 Void xSetShiftParameters(); 349 Void xGetShiftParameter( UInt uiSourceView, UInt uiTargetView, bool bExternal, double& rdScale, double& rdOffset ); ///< Get one Shift Parameters 350 351 Void xAppendToFileNameEnd( Char* pchInputFileName, const Char* pchStringToAppend, Char* & rpchOutputFileName); 352 353 Void xCheckCodingStructureMvc(); ///< validate and configure inter-view coding structure 354 355 template <class T> Void xCleanUpVector( std::vector<T>& rcVec, const T& rcInvalid ); 356 #if HHI_VSO 357 // Ren Model String 358 TRenModSetupStrParser m_cRenModStrParser; 443 #if H_MV 444 template <typename T> 445 Void xResizeVector( std::vector<T> & rpcVector ) 446 { 447 for( Int layer = 0; rpcVector.size() < m_numberOfLayers; layer++ ) 448 { 449 assert( rpcVector.size() > 0 ); 450 rpcVector.push_back( rpcVector[layer] ); 451 } 452 453 for( ; rpcVector.size() > m_numberOfLayers; ) 454 { 455 rpcVector.pop_back( ); 456 } 457 } 458 459 template <typename T> 460 Void xPrintParaVector( std::string description, std::vector<T> & rpcVector ) 461 { 462 Int iSpace = max(1, ENC_CFG_CONSOUT_SPACE - (Int) description.length() ); 463 464 for ( Int i = 0; i < iSpace; i++ ) 465 description.append( " " ); 466 467 description.append( ":" ); 468 printf( "%s", description.c_str() ); 469 470 for(Int i=0;i<rpcVector.size();i++) 471 xPrintVectorElem( rpcVector[i] ); 472 473 printf("\n"); 474 } 475 476 Void xPrintVectorElem( UInt elem ) { printf(" %d" , elem );}; 477 Void xPrintVectorElem( Int elem ) { printf(" %d" , elem );}; 478 479 Void xPrintVectorElem( Double elem ) { printf(" %5.2f", elem );}; 480 Void xPrintVectorElem( Bool elem ) { printf(" %d" , ( elem ? 1 : 0 ));}; 481 #endif 482 #if H_MV 483 Int getGOPSize() { return m_iGOPSize; } 359 484 #endif 360 485 public:
Note: See TracChangeset for help on using the changeset viewer.