source: 3DVCSoftware/branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCfg.h @ 539

Last change on this file since 539 was 539, checked in by orange, 11 years ago

Integrated QTLPC and added new line mark at the end of TComWedgelet.cpp for MERL

  • Property svn:eol-style set to native
File size: 55.6 KB
Line 
1/* The copyright in this software is being made available under the BSD
2 * License, included below. This software may be subject to other third party
3 * and contributor rights, including patent rights, and no such rights are
4 * granted under this license. 
5 *
6 * Copyright (c) 2010-2013, ITU/ISO/IEC
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 *  * Redistributions of source code must retain the above copyright notice,
13 *    this list of conditions and the following disclaimer.
14 *  * Redistributions in binary form must reproduce the above copyright notice,
15 *    this list of conditions and the following disclaimer in the documentation
16 *    and/or other materials provided with the distribution.
17 *  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
18 *    be used to endorse or promote products derived from this software without
19 *    specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34/** \file     TEncCfg.h
35    \brief    encoder configuration class (header)
36*/
37
38#ifndef __TENCCFG__
39#define __TENCCFG__
40
41#if _MSC_VER > 1000
42#pragma once
43#endif // _MSC_VER > 1000
44
45#include "TLibCommon/CommonDef.h"
46#include "TLibCommon/TComSlice.h"
47#include <assert.h>
48#if H_3D
49#include "TAppCommon/TAppComCamPara.h"
50#include "TLibRenderer/TRenModSetupStrParser.h"
51#endif
52
53struct GOPEntry
54{
55  Int m_POC;
56  Int m_QPOffset;
57  Double m_QPFactor;
58  Int m_tcOffsetDiv2;
59  Int m_betaOffsetDiv2;
60  Int m_temporalId;
61  Bool m_refPic;
62  Int m_numRefPicsActive;
63  Char m_sliceType;
64  Int m_numRefPics;
65  Int m_referencePics[MAX_NUM_REF_PICS];
66  Int m_usedByCurrPic[MAX_NUM_REF_PICS];
67#if AUTO_INTER_RPS
68  Int m_interRPSPrediction;
69#else
70  Bool m_interRPSPrediction;
71#endif
72  Int m_deltaRPS;
73  Int m_numRefIdc;
74  Int m_refIdc[MAX_NUM_REF_PICS+1];
75#if H_MV
76  Int m_numActiveRefLayerPics;
77  Int m_interLayerPredLayerIdc [MAX_NUM_REF_PICS];
78  Int m_interViewRefPosL[2][MAX_NUM_REF_PICS]; 
79  Int m_collocatedRefLayerIdx; 
80#endif
81  GOPEntry()
82  : m_POC(-1)
83  , m_QPOffset(0)
84  , m_QPFactor(0)
85  , m_tcOffsetDiv2(0)
86  , m_betaOffsetDiv2(0)
87  , m_temporalId(0)
88  , m_refPic(false)
89  , m_numRefPicsActive(0)
90  , m_sliceType('P')
91  , m_numRefPics(0)
92  , m_interRPSPrediction(false)
93  , m_deltaRPS(0)
94  , m_numRefIdc(0)
95#if H_MV
96  , m_numActiveRefLayerPics(0)
97  , m_collocatedRefLayerIdx(-1)
98#endif
99  {
100    ::memset( m_referencePics, 0, sizeof(m_referencePics) );
101    ::memset( m_usedByCurrPic, 0, sizeof(m_usedByCurrPic) );
102    ::memset( m_refIdc,        0, sizeof(m_refIdc) );
103#if H_MV
104    ::memset( m_interLayerPredLayerIdc,   0, sizeof(m_interLayerPredLayerIdc) );
105    ::memset( m_interViewRefPosL[0], -1, sizeof(m_interViewRefPosL[0]) );
106    ::memset( m_interViewRefPosL[1], -1, sizeof(m_interViewRefPosL[1]) );
107#endif
108  }
109};
110
111std::istringstream &operator>>(std::istringstream &in, GOPEntry &entry);     //input
112//! \ingroup TLibEncoder
113//! \{
114
115// ====================================================================================================================
116// Class definition
117// ====================================================================================================================
118
119/// encoder configuration class
120class TEncCfg
121{
122protected:
123  //==== File I/O ========
124  Int       m_iFrameRate;
125  Int       m_FrameSkip;
126  Int       m_iSourceWidth;
127  Int       m_iSourceHeight;
128  Int       m_conformanceMode;
129  Window    m_conformanceWindow;
130  Int       m_framesToBeEncoded;
131  Double    m_adLambdaModifier[ MAX_TLAYER ];
132
133  /* profile & level */
134  Profile::Name m_profile;
135  Level::Tier   m_levelTier;
136  Level::Name   m_level;
137  Bool m_progressiveSourceFlag;
138  Bool m_interlacedSourceFlag;
139  Bool m_nonPackedConstraintFlag;
140  Bool m_frameOnlyConstraintFlag;
141
142  //====== Coding Structure ========
143  UInt      m_uiIntraPeriod;
144  UInt      m_uiDecodingRefreshType;            ///< the type of decoding refresh employed for the random access.
145  Int       m_iGOPSize;
146#if H_MV
147  GOPEntry  m_GOPList[MAX_GOP+1];
148#else
149  GOPEntry  m_GOPList[MAX_GOP];
150#endif
151  Int       m_extraRPSs;
152  Int       m_maxDecPicBuffering[MAX_TLAYER];
153  Int       m_numReorderPics[MAX_TLAYER];
154 
155  Int       m_iQP;                              //  if (AdaptiveQP == OFF)
156 
157  Int       m_aiPad[2];
158 
159
160  Int       m_iMaxRefPicNum;                     ///< this is used to mimic the sliding mechanism used by the decoder
161                                                 // TODO: We need to have a common sliding mechanism used by both the encoder and decoder
162
163  Int       m_maxTempLayer;                      ///< Max temporal layer
164  Bool m_useAMP;
165  //======= Transform =============
166  UInt      m_uiQuadtreeTULog2MaxSize;
167  UInt      m_uiQuadtreeTULog2MinSize;
168  UInt      m_uiQuadtreeTUMaxDepthInter;
169  UInt      m_uiQuadtreeTUMaxDepthIntra;
170 
171  //====== Loop/Deblock Filter ========
172  Bool      m_bLoopFilterDisable;
173  Bool      m_loopFilterOffsetInPPS;
174  Int       m_loopFilterBetaOffsetDiv2;
175  Int       m_loopFilterTcOffsetDiv2;
176  Bool      m_DeblockingFilterControlPresent;
177  Bool      m_DeblockingFilterMetric;
178  Bool      m_bUseSAO;
179  Int       m_maxNumOffsetsPerPic;
180  Bool      m_saoLcuBoundary;
181  Bool      m_saoLcuBasedOptimization;
182
183  //====== Lossless ========
184  Bool      m_useLossless;
185  //====== Motion search ========
186  Int       m_iFastSearch;                      //  0:Full search  1:Diamond  2:PMVFAST
187  Int       m_iSearchRange;                     //  0:Full frame
188  Int       m_bipredSearchRange;
189
190  //====== Quality control ========
191  Int       m_iMaxDeltaQP;                      //  Max. absolute delta QP (1:default)
192  Int       m_iMaxCuDQPDepth;                   //  Max. depth for a minimum CuDQP (0:default)
193
194  Int       m_chromaCbQpOffset;                 //  Chroma Cb QP Offset (0:default)
195  Int       m_chromaCrQpOffset;                 //  Chroma Cr Qp Offset (0:default)
196
197#if ADAPTIVE_QP_SELECTION
198  Bool      m_bUseAdaptQpSelect;
199#endif
200
201  Bool      m_bUseAdaptiveQP;
202  Int       m_iQPAdaptationRange;
203 
204  //====== Tool list ========
205  Bool      m_bUseSBACRD;
206  Bool      m_bUseASR;
207  Bool      m_bUseHADME;
208  Bool      m_useRDOQ;
209  Bool      m_useRDOQTS;
210  UInt      m_rdPenalty;
211  Bool      m_bUseFastEnc;
212  Bool      m_bUseEarlyCU;
213  Bool      m_useFastDecisionForMerge;
214  Bool      m_bUseCbfFastMode;
215  Bool      m_useEarlySkipDetection;
216  Bool      m_useTransformSkip;
217  Bool      m_useTransformSkipFast;
218  Int*      m_aidQP;
219  UInt      m_uiDeltaQpRD;
220 
221  Bool      m_bUseConstrainedIntraPred;
222  Bool      m_usePCM;
223  UInt      m_pcmLog2MaxSize;
224  UInt      m_uiPCMLog2MinSize;
225  //====== Slice ========
226  Int       m_sliceMode;
227  Int       m_sliceArgument; 
228  //====== Dependent Slice ========
229  Int       m_sliceSegmentMode;
230  Int       m_sliceSegmentArgument;
231  Bool      m_bLFCrossSliceBoundaryFlag;
232
233  Bool      m_bPCMInputBitDepthFlag;
234  UInt      m_uiPCMBitDepthLuma;
235  UInt      m_uiPCMBitDepthChroma;
236  Bool      m_bPCMFilterDisableFlag;
237  Bool      m_loopFilterAcrossTilesEnabledFlag;
238  Int       m_iUniformSpacingIdr;
239  Int       m_iNumColumnsMinus1;
240  UInt*     m_puiColumnWidth;
241  Int       m_iNumRowsMinus1;
242  UInt*     m_puiRowHeight;
243
244  Int       m_iWaveFrontSynchro;
245  Int       m_iWaveFrontSubstreams;
246
247  Int       m_decodedPictureHashSEIEnabled;              ///< Checksum(3)/CRC(2)/MD5(1)/disable(0) acting on decoded picture hash SEI message
248  Int       m_bufferingPeriodSEIEnabled;
249  Int       m_pictureTimingSEIEnabled;
250  Int       m_recoveryPointSEIEnabled;
251  Bool      m_toneMappingInfoSEIEnabled;
252  Int       m_toneMapId;
253  Bool      m_toneMapCancelFlag;
254  Bool      m_toneMapPersistenceFlag;
255  Int       m_codedDataBitDepth;
256  Int       m_targetBitDepth;
257  Int       m_modelId; 
258  Int       m_minValue;
259  Int       m_maxValue;
260  Int       m_sigmoidMidpoint;
261  Int       m_sigmoidWidth;
262  Int       m_numPivots;
263  Int       m_cameraIsoSpeedIdc;
264  Int       m_cameraIsoSpeedValue;
265  Int       m_exposureCompensationValueSignFlag;
266  Int       m_exposureCompensationValueNumerator;
267  Int       m_exposureCompensationValueDenomIdc;
268  Int       m_refScreenLuminanceWhite;
269  Int       m_extendedRangeWhiteLevel;
270  Int       m_nominalBlackLevelLumaCodeValue;
271  Int       m_nominalWhiteLevelLumaCodeValue;
272  Int       m_extendedWhiteLevelLumaCodeValue;
273  Int*      m_startOfCodedInterval;
274  Int*      m_codedPivotValue;
275  Int*      m_targetPivotValue;
276  Int       m_framePackingSEIEnabled;
277  Int       m_framePackingSEIType;
278  Int       m_framePackingSEIId;
279  Int       m_framePackingSEIQuincunx;
280  Int       m_framePackingSEIInterpretation;
281  Int       m_displayOrientationSEIAngle;
282  Int       m_temporalLevel0IndexSEIEnabled;
283  Int       m_gradualDecodingRefreshInfoEnabled;
284  Int       m_decodingUnitInfoSEIEnabled;
285  Int       m_SOPDescriptionSEIEnabled;
286  Int       m_scalableNestingSEIEnabled;
287  //====== Weighted Prediction ========
288  Bool      m_useWeightedPred;       //< Use of Weighting Prediction (P_SLICE)
289  Bool      m_useWeightedBiPred;    //< Use of Bi-directional Weighting Prediction (B_SLICE)
290  UInt      m_log2ParallelMergeLevelMinus2;       ///< Parallel merge estimation region
291  UInt      m_maxNumMergeCand;                    ///< Maximum number of merge candidates
292  Int       m_useScalingListId;            ///< Using quantization matrix i.e. 0=off, 1=default, 2=file.
293  Char*     m_scalingListFile;          ///< quantization matrix file name
294  Int       m_TMVPModeId;
295  Int       m_signHideFlag;
296#if RATE_CONTROL_LAMBDA_DOMAIN
297  Bool      m_RCEnableRateControl;
298  Int       m_RCTargetBitrate;
299#if M0036_RC_IMPROVEMENT
300  Int       m_RCKeepHierarchicalBit;
301#else
302  Bool      m_RCKeepHierarchicalBit;
303#endif
304  Bool      m_RCLCULevelRC;
305  Bool      m_RCUseLCUSeparateModel;
306  Int       m_RCInitialQP;
307  Bool      m_RCForceIntraQP;
308#else
309  Bool      m_enableRateCtrl;                                ///< Flag for using rate control algorithm
310  Int       m_targetBitrate;                                 ///< target bitrate
311  Int       m_numLCUInUnit;                                  ///< Total number of LCUs in a frame should be divided by the NumLCUInUnit
312#endif
313  Bool      m_TransquantBypassEnableFlag;                     ///< transquant_bypass_enable_flag setting in PPS.
314  Bool      m_CUTransquantBypassFlagValue;                    ///< if transquant_bypass_enable_flag, the fixed value to use for the per-CU cu_transquant_bypass_flag.
315#if H_MV_FIX_VPS_POINTER
316  TComVPS*  m_cVPS;                                           ///< pointer to VPS, same for all layers
317#else
318  TComVPS                    m_cVPS;
319#endif
320  Bool      m_recalculateQPAccordingToLambda;                 ///< recalculate QP value according to the lambda value
321  Int       m_activeParameterSetsSEIEnabled;                  ///< enable active parameter set SEI message
322  Bool      m_vuiParametersPresentFlag;                       ///< enable generation of VUI parameters
323  Bool      m_aspectRatioInfoPresentFlag;                     ///< Signals whether aspect_ratio_idc is present
324  Int       m_aspectRatioIdc;                                 ///< aspect_ratio_idc
325  Int       m_sarWidth;                                       ///< horizontal size of the sample aspect ratio
326  Int       m_sarHeight;                                      ///< vertical size of the sample aspect ratio
327  Bool      m_overscanInfoPresentFlag;                        ///< Signals whether overscan_appropriate_flag is present
328  Bool      m_overscanAppropriateFlag;                        ///< Indicates whether conformant decoded pictures are suitable for display using overscan
329  Bool      m_videoSignalTypePresentFlag;                     ///< Signals whether video_format, video_full_range_flag, and colour_description_present_flag are present
330  Int       m_videoFormat;                                    ///< Indicates representation of pictures
331  Bool      m_videoFullRangeFlag;                             ///< Indicates the black level and range of luma and chroma signals
332  Bool      m_colourDescriptionPresentFlag;                   ///< Signals whether colour_primaries, transfer_characteristics and matrix_coefficients are present
333  Int       m_colourPrimaries;                                ///< Indicates chromaticity coordinates of the source primaries
334  Int       m_transferCharacteristics;                        ///< Indicates the opto-electronic transfer characteristics of the source
335  Int       m_matrixCoefficients;                             ///< Describes the matrix coefficients used in deriving luma and chroma from RGB primaries
336  Bool      m_chromaLocInfoPresentFlag;                       ///< Signals whether chroma_sample_loc_type_top_field and chroma_sample_loc_type_bottom_field are present
337  Int       m_chromaSampleLocTypeTopField;                    ///< Specifies the location of chroma samples for top field
338  Int       m_chromaSampleLocTypeBottomField;                 ///< Specifies the location of chroma samples for bottom field
339  Bool      m_neutralChromaIndicationFlag;                    ///< Indicates that the value of all decoded chroma samples is equal to 1<<(BitDepthCr-1)
340  Window    m_defaultDisplayWindow;                           ///< Represents the default display window parameters
341  Bool      m_frameFieldInfoPresentFlag;                      ///< Indicates that pic_struct and other field coding related values are present in picture timing SEI messages
342  Bool      m_pocProportionalToTimingFlag;                    ///< Indicates that the POC value is proportional to the output time w.r.t. first picture in CVS
343  Int       m_numTicksPocDiffOneMinus1;                       ///< Number of ticks minus 1 that for a POC difference of one
344  Bool      m_bitstreamRestrictionFlag;                       ///< Signals whether bitstream restriction parameters are present
345  Bool      m_tilesFixedStructureFlag;                        ///< Indicates that each active picture parameter set has the same values of the syntax elements related to tiles
346  Bool      m_motionVectorsOverPicBoundariesFlag;             ///< Indicates that no samples outside the picture boundaries are used for inter prediction
347  Int       m_minSpatialSegmentationIdc;                      ///< Indicates the maximum size of the spatial segments in the pictures in the coded video sequence
348  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
349  Int       m_maxBitsPerMinCuDenom;                           ///< Indicates an upper bound for the number of bits of coding_unit() data
350  Int       m_log2MaxMvLengthHorizontal;                      ///< Indicate the maximum absolute value of a decoded horizontal MV component in quarter-pel luma units
351  Int       m_log2MaxMvLengthVertical;                        ///< Indicate the maximum absolute value of a decoded vertical MV component in quarter-pel luma units
352
353  Bool      m_useStrongIntraSmoothing;                        ///< enable the use of strong intra smoothing (bi_linear interpolation) for 32x32 blocks when reference samples are flat.
354
355#if H_MV
356  Int       m_layerId;
357  Int       m_layerIdInVps;
358  Int       m_viewId;
359#endif
360
361#if H_3D
362  Int       m_viewIndex; 
363  Bool      m_isDepth;
364
365  //====== Camera Parameters ======
366  UInt      m_uiCamParPrecision;
367  Bool      m_bCamParInSliceHeader;
368  Int**     m_aaiCodedScale;
369  Int**     m_aaiCodedOffset;
370  TAppComCamPara* m_cameraParameters; 
371 
372#if H_3D_VSO
373  //====== View Synthesis Optimization ======
374  TRenModSetupStrParser* m_renderModelParameters; 
375  Bool      m_bUseVSO;
376  Bool      m_bForceLambdaScale;
377  Bool      m_bAllowNegDist;
378  Double    m_dLambdaScaleVSO;
379  UInt      m_uiVSOMode;
380  // LGE_WVSO_A0119
381  Bool      m_bUseWVSO;
382  Int       m_iVSOWeight;
383  Int       m_iVSDWeight;
384  Int       m_iDWeight;
385  // SAIT_VSO_EST_A0033
386  Bool      m_bUseEstimatedVSD; 
387  Double    m_dDispCoeff;
388#endif
389#if H_3D_ARP
390  UInt      m_uiUseAdvResPred;
391  UInt      m_uiARPStepNum;
392#endif
393#if H_3D_IC
394  Bool      m_bUseIC;
395#endif
396  //====== Depth Intra Modes ======
397#if H_3D_DIM
398  Bool      m_useDMM;
399  Bool      m_useRBC;
400  Bool      m_useSDC;
401  Bool      m_useDLT;
402#endif
403
404#if H_3D_QTLPC
405  Bool      m_bUseQTL;
406  Bool      m_bUsePC;
407#endif
408
409#endif
410public:
411  TEncCfg()
412  : m_puiColumnWidth()
413  , m_puiRowHeight()
414#if H_MV
415  , m_layerId(-1)
416  , m_layerIdInVps(-1)
417  , m_viewId(-1)
418#if H_3D
419  , m_viewIndex(-1)
420  , m_isDepth(false)
421  , m_bUseVSO(false)
422#endif
423#endif
424  {}
425
426  virtual ~TEncCfg()
427  {
428    delete[] m_puiColumnWidth;
429    delete[] m_puiRowHeight;
430  }
431 
432  Void setProfile(Profile::Name profile) { m_profile = profile; }
433  Void setLevel(Level::Tier tier, Level::Name level) { m_levelTier = tier; m_level = level; }
434
435  Void      setFrameRate                    ( Int   i )      { m_iFrameRate = i; }
436  Void      setFrameSkip                    ( UInt i ) { m_FrameSkip = i; }
437  Void      setSourceWidth                  ( Int   i )      { m_iSourceWidth = i; }
438  Void      setSourceHeight                 ( Int   i )      { m_iSourceHeight = i; }
439
440  Window   &getConformanceWindow()                           { return m_conformanceWindow; }
441  Void      setConformanceWindow (Int confLeft, Int confRight, Int confTop, Int confBottom ) { m_conformanceWindow.setWindow (confLeft, confRight, confTop, confBottom); }
442
443  Void      setFramesToBeEncoded            ( Int   i )      { m_framesToBeEncoded = i; }
444 
445#if H_MV
446  Void      setLayerId                       ( Int layerId )      { m_layerId = layerId; }
447  Int       getLayerId                       ()                   { return m_layerId;    }
448  Int       getLayerIdInVps                  ()                   { return m_layerIdInVps; }
449  Void      setLayerIdInVps                  ( Int layerIdInVps)  { m_layerIdInVps = layerIdInVps; }
450  Void      setViewId                        ( Int viewId  )      { m_viewId  = viewId;  }
451  Int       getViewId                        ()                   { return m_viewId;    }
452#if H_3D
453  Void      setViewIndex                     ( Int viewIndex  )   { m_viewIndex  = viewIndex;  }
454  Int       getViewIndex                     ()                   { return m_viewIndex;    }
455  Void      setIsDepth                       ( Bool isDepth )   { m_isDepth = isDepth; }
456  Bool      getIsDepth                       ()                 { return m_isDepth; }
457#endif
458#endif
459  //====== Coding Structure ========
460  Void      setIntraPeriod                  ( Int   i )      { m_uiIntraPeriod = (UInt)i; }
461  Void      setDecodingRefreshType          ( Int   i )      { m_uiDecodingRefreshType = (UInt)i; }
462  Void      setGOPSize                      ( Int   i )      { m_iGOPSize = i; }
463#if H_MV
464  Void      setGopList                      ( GOPEntry*  GOPList ) {  for ( Int i = 0; i < MAX_GOP+1; i++ ) m_GOPList[i] = GOPList[i]; }
465#else
466  Void      setGopList                      ( GOPEntry*  GOPList ) {  for ( Int i = 0; i < MAX_GOP; i++ ) m_GOPList[i] = GOPList[i]; }
467#endif
468  Void      setExtraRPSs                    ( Int   i )      { m_extraRPSs = i; }
469  GOPEntry  getGOPEntry                     ( Int   i )      { return m_GOPList[i]; }
470  Void      setMaxDecPicBuffering           ( UInt u, UInt tlayer ) { m_maxDecPicBuffering[tlayer] = u;    }
471  Void      setNumReorderPics               ( Int  i, UInt tlayer ) { m_numReorderPics[tlayer] = i;    }
472 
473  Void      setQP                           ( Int   i )      { m_iQP = i; }
474 
475  Void      setPad                          ( Int*  iPad                   )      { for ( Int i = 0; i < 2; i++ ) m_aiPad[i] = iPad[i]; }
476 
477  Int       getMaxRefPicNum                 ()                              { return m_iMaxRefPicNum;           }
478  Void      setMaxRefPicNum                 ( Int iMaxRefPicNum )           { m_iMaxRefPicNum = iMaxRefPicNum;  }
479
480  Bool      getMaxTempLayer                 ()                              { return m_maxTempLayer;              } 
481  Void      setMaxTempLayer                 ( Int maxTempLayer )            { m_maxTempLayer = maxTempLayer;      }
482
483#if H_3D_ARP
484  UInt       getUseAdvRP                    ( )              { return m_uiUseAdvResPred; }
485  Void       setUseAdvRP                    ( UInt  u )      { m_uiUseAdvResPred = u;    }
486
487  UInt       getARPStepNum                  ()               { return m_uiARPStepNum;    }
488  Void       setARPStepNum                  ( UInt  u )      { m_uiARPStepNum = u;       }
489#endif
490
491#if H_3D_IC
492  Void       setUseIC                       ( Bool bVal )    { m_bUseIC = bVal; }
493  Bool       getUseIC                       ()               { return m_bUseIC; }
494#endif
495  //======== Transform =============
496  Void      setQuadtreeTULog2MaxSize        ( UInt  u )      { m_uiQuadtreeTULog2MaxSize = u; }
497  Void      setQuadtreeTULog2MinSize        ( UInt  u )      { m_uiQuadtreeTULog2MinSize = u; }
498  Void      setQuadtreeTUMaxDepthInter      ( UInt  u )      { m_uiQuadtreeTUMaxDepthInter = u; }
499  Void      setQuadtreeTUMaxDepthIntra      ( UInt  u )      { m_uiQuadtreeTUMaxDepthIntra = u; }
500 
501  Void setUseAMP( Bool b ) { m_useAMP = b; }
502 
503  //====== Loop/Deblock Filter ========
504  Void      setLoopFilterDisable            ( Bool  b )      { m_bLoopFilterDisable       = b; }
505  Void      setLoopFilterOffsetInPPS        ( Bool  b )      { m_loopFilterOffsetInPPS      = b; }
506  Void      setLoopFilterBetaOffset         ( Int   i )      { m_loopFilterBetaOffsetDiv2  = i; }
507  Void      setLoopFilterTcOffset           ( Int   i )      { m_loopFilterTcOffsetDiv2    = i; }
508  Void      setDeblockingFilterControlPresent ( Bool b ) { m_DeblockingFilterControlPresent = b; }
509  Void      setDeblockingFilterMetric       ( Bool  b )      { m_DeblockingFilterMetric = b; }
510
511  //====== Motion search ========
512  Void      setFastSearch                   ( Int   i )      { m_iFastSearch = i; }
513  Void      setSearchRange                  ( Int   i )      { m_iSearchRange = i; }
514  Void      setBipredSearchRange            ( Int   i )      { m_bipredSearchRange = i; }
515
516  //====== Quality control ========
517  Void      setMaxDeltaQP                   ( Int   i )      { m_iMaxDeltaQP = i; }
518  Void      setMaxCuDQPDepth                ( Int   i )      { m_iMaxCuDQPDepth = i; }
519
520  Void      setChromaCbQpOffset             ( Int   i )      { m_chromaCbQpOffset = i; }
521  Void      setChromaCrQpOffset             ( Int   i )      { m_chromaCrQpOffset = i; }
522
523#if ADAPTIVE_QP_SELECTION
524  Void      setUseAdaptQpSelect             ( Bool   i ) { m_bUseAdaptQpSelect    = i; }
525  Bool      getUseAdaptQpSelect             ()           { return   m_bUseAdaptQpSelect; }
526#endif
527
528  Void      setUseAdaptiveQP                ( Bool  b )      { m_bUseAdaptiveQP = b; }
529  Void      setQPAdaptationRange            ( Int   i )      { m_iQPAdaptationRange = i; }
530 
531  //====== Lossless ========
532  Void      setUseLossless                  (Bool    b  )        { m_useLossless = b;  }
533  //====== Sequence ========
534  Int       getFrameRate                    ()      { return  m_iFrameRate; }
535  UInt      getFrameSkip                    ()      { return  m_FrameSkip; }
536  Int       getSourceWidth                  ()      { return  m_iSourceWidth; }
537  Int       getSourceHeight                 ()      { return  m_iSourceHeight; }
538  Int       getFramesToBeEncoded            ()      { return  m_framesToBeEncoded; }
539  void setLambdaModifier                    ( UInt uiIndex, Double dValue ) { m_adLambdaModifier[ uiIndex ] = dValue; }
540  Double getLambdaModifier                  ( UInt uiIndex ) const { return m_adLambdaModifier[ uiIndex ]; }
541
542  //==== Coding Structure ========
543  UInt      getIntraPeriod                  ()      { return  m_uiIntraPeriod; }
544  UInt      getDecodingRefreshType          ()      { return  m_uiDecodingRefreshType; }
545  Int       getGOPSize                      ()      { return  m_iGOPSize; }
546  Int       getMaxDecPicBuffering           (UInt tlayer) { return m_maxDecPicBuffering[tlayer]; }
547  Int       getNumReorderPics               (UInt tlayer) { return m_numReorderPics[tlayer]; }
548  Int       getQP                           ()      { return  m_iQP; }
549 
550  Int       getPad                          ( Int i )      { assert (i < 2 );                      return  m_aiPad[i]; }
551 
552  //======== Transform =============
553  UInt      getQuadtreeTULog2MaxSize        ()      const { return m_uiQuadtreeTULog2MaxSize; }
554  UInt      getQuadtreeTULog2MinSize        ()      const { return m_uiQuadtreeTULog2MinSize; }
555  UInt      getQuadtreeTUMaxDepthInter      ()      const { return m_uiQuadtreeTUMaxDepthInter; }
556  UInt      getQuadtreeTUMaxDepthIntra      ()      const { return m_uiQuadtreeTUMaxDepthIntra; }
557 
558  //==== Loop/Deblock Filter ========
559  Bool      getLoopFilterDisable            ()      { return  m_bLoopFilterDisable;       }
560  Bool      getLoopFilterOffsetInPPS        ()      { return m_loopFilterOffsetInPPS; }
561  Int       getLoopFilterBetaOffset         ()      { return m_loopFilterBetaOffsetDiv2; }
562  Int       getLoopFilterTcOffset           ()      { return m_loopFilterTcOffsetDiv2; }
563  Bool      getDeblockingFilterControlPresent()  { return  m_DeblockingFilterControlPresent; }
564  Bool      getDeblockingFilterMetric       ()      { return m_DeblockingFilterMetric; }
565
566  //==== Motion search ========
567  Int       getFastSearch                   ()      { return  m_iFastSearch; }
568  Int       getSearchRange                  ()      { return  m_iSearchRange; }
569
570  //==== Quality control ========
571  Int       getMaxDeltaQP                   ()      { return  m_iMaxDeltaQP; }
572  Int       getMaxCuDQPDepth                ()      { return  m_iMaxCuDQPDepth; }
573  Bool      getUseAdaptiveQP                ()      { return  m_bUseAdaptiveQP; }
574  Int       getQPAdaptationRange            ()      { return  m_iQPAdaptationRange; }
575  //====== Lossless ========
576  Bool      getUseLossless                  ()      { return  m_useLossless;  }
577 
578  //==== Tool list ========
579  Void      setUseSBACRD                    ( Bool  b )     { m_bUseSBACRD  = b; }
580  Void      setUseASR                       ( Bool  b )     { m_bUseASR     = b; }
581  Void      setUseHADME                     ( Bool  b )     { m_bUseHADME   = b; }
582  Void      setUseRDOQ                      ( Bool  b )     { m_useRDOQ    = b; }
583  Void      setUseRDOQTS                    ( Bool  b )     { m_useRDOQTS  = b; }
584  Void      setRDpenalty                 ( UInt  b )     { m_rdPenalty  = b; }
585  Void      setUseFastEnc                   ( Bool  b )     { m_bUseFastEnc = b; }
586  Void      setUseEarlyCU                   ( Bool  b )     { m_bUseEarlyCU = b; }
587  Void      setUseFastDecisionForMerge      ( Bool  b )     { m_useFastDecisionForMerge = b; }
588  Void      setUseCbfFastMode            ( Bool  b )     { m_bUseCbfFastMode = b; }
589  Void      setUseEarlySkipDetection        ( Bool  b )     { m_useEarlySkipDetection = b; }
590  Void      setUseConstrainedIntraPred      ( Bool  b )     { m_bUseConstrainedIntraPred = b; }
591  Void      setPCMInputBitDepthFlag         ( Bool  b )     { m_bPCMInputBitDepthFlag = b; }
592  Void      setPCMFilterDisableFlag         ( Bool  b )     {  m_bPCMFilterDisableFlag = b; }
593  Void      setUsePCM                       ( Bool  b )     {  m_usePCM = b;               }
594  Void      setPCMLog2MaxSize               ( UInt u )      { m_pcmLog2MaxSize = u;      }
595  Void      setPCMLog2MinSize               ( UInt u )     { m_uiPCMLog2MinSize = u;      }
596  Void      setdQPs                         ( Int*  p )     { m_aidQP       = p; }
597  Void      setDeltaQpRD                    ( UInt  u )     {m_uiDeltaQpRD  = u; }
598  Bool      getUseSBACRD                    ()      { return m_bUseSBACRD;  }
599  Bool      getUseASR                       ()      { return m_bUseASR;     }
600  Bool      getUseHADME                     ()      { return m_bUseHADME;   }
601  Bool      getUseRDOQ                      ()      { return m_useRDOQ;    }
602  Bool      getUseRDOQTS                    ()      { return m_useRDOQTS;  }
603  Int      getRDpenalty                  ()      { return m_rdPenalty;  }
604  Bool      getUseFastEnc                   ()      { return m_bUseFastEnc; }
605  Bool      getUseEarlyCU                   ()      { return m_bUseEarlyCU; }
606  Bool      getUseFastDecisionForMerge      ()      { return m_useFastDecisionForMerge; }
607  Bool      getUseCbfFastMode           ()      { return m_bUseCbfFastMode; }
608  Bool      getUseEarlySkipDetection        ()      { return m_useEarlySkipDetection; }
609  Bool      getUseConstrainedIntraPred      ()      { return m_bUseConstrainedIntraPred; }
610  Bool      getPCMInputBitDepthFlag         ()      { return m_bPCMInputBitDepthFlag;   }
611  Bool      getPCMFilterDisableFlag         ()      { return m_bPCMFilterDisableFlag;   } 
612  Bool      getUsePCM                       ()      { return m_usePCM;                 }
613  UInt      getPCMLog2MaxSize               ()      { return m_pcmLog2MaxSize;  }
614  UInt      getPCMLog2MinSize               ()      { return  m_uiPCMLog2MinSize;  }
615
616  Bool getUseTransformSkip                             ()      { return m_useTransformSkip;        }
617  Void setUseTransformSkip                             ( Bool b ) { m_useTransformSkip  = b;       }
618  Bool getUseTransformSkipFast                         ()      { return m_useTransformSkipFast;    }
619  Void setUseTransformSkipFast                         ( Bool b ) { m_useTransformSkipFast  = b;   }
620  Int*      getdQPs                         ()      { return m_aidQP;       }
621  UInt      getDeltaQpRD                    ()      { return m_uiDeltaQpRD; }
622
623  //====== Slice ========
624  Void  setSliceMode                   ( Int  i )       { m_sliceMode = i;              }
625  Void  setSliceArgument               ( Int  i )       { m_sliceArgument = i;          }
626  Int   getSliceMode                   ()              { return m_sliceMode;           }
627  Int   getSliceArgument               ()              { return m_sliceArgument;       }
628  //====== Dependent Slice ========
629  Void  setSliceSegmentMode            ( Int  i )      { m_sliceSegmentMode = i;       }
630  Void  setSliceSegmentArgument        ( Int  i )      { m_sliceSegmentArgument = i;   }
631  Int   getSliceSegmentMode            ()              { return m_sliceSegmentMode;    }
632  Int   getSliceSegmentArgument        ()              { return m_sliceSegmentArgument;}
633  Void      setLFCrossSliceBoundaryFlag     ( Bool   bValue  )    { m_bLFCrossSliceBoundaryFlag = bValue; }
634  Bool      getLFCrossSliceBoundaryFlag     ()                    { return m_bLFCrossSliceBoundaryFlag;   }
635
636  Void      setUseSAO                  (Bool bVal)     {m_bUseSAO = bVal;}
637  Bool      getUseSAO                  ()              {return m_bUseSAO;}
638  Void  setMaxNumOffsetsPerPic                   (Int iVal)            { m_maxNumOffsetsPerPic = iVal; }
639  Int   getMaxNumOffsetsPerPic                   ()                    { return m_maxNumOffsetsPerPic; }
640  Void  setSaoLcuBoundary              (Bool val)      { m_saoLcuBoundary = val; }
641  Bool  getSaoLcuBoundary              ()              { return m_saoLcuBoundary; }
642  Void  setSaoLcuBasedOptimization               (Bool val)            { m_saoLcuBasedOptimization = val; }
643  Bool  getSaoLcuBasedOptimization               ()                    { return m_saoLcuBasedOptimization; }
644  Void  setLFCrossTileBoundaryFlag               ( Bool   val  )       { m_loopFilterAcrossTilesEnabledFlag = val; }
645  Bool  getLFCrossTileBoundaryFlag               ()                    { return m_loopFilterAcrossTilesEnabledFlag;   }
646  Void  setUniformSpacingIdr           ( Int i )           { m_iUniformSpacingIdr = i; }
647  Int   getUniformSpacingIdr           ()                  { return m_iUniformSpacingIdr; }
648  Void  setNumColumnsMinus1            ( Int i )           { m_iNumColumnsMinus1 = i; }
649  Int   getNumColumnsMinus1            ()                  { return m_iNumColumnsMinus1; }
650  Void  setColumnWidth ( UInt* columnWidth )
651  {
652    if( m_iUniformSpacingIdr == 0 && m_iNumColumnsMinus1 > 0 )
653    {
654      Int  m_iWidthInCU = ( m_iSourceWidth%g_uiMaxCUWidth ) ? m_iSourceWidth/g_uiMaxCUWidth + 1 : m_iSourceWidth/g_uiMaxCUWidth;
655      m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ];
656
657      for(Int i=0; i<m_iNumColumnsMinus1; i++)
658      {
659        m_puiColumnWidth[i] = columnWidth[i];
660        printf("col: m_iWidthInCU= %4d i=%4d width= %4d\n",m_iWidthInCU,i,m_puiColumnWidth[i]); //AFU
661      }
662    }
663  }
664  UInt  getColumnWidth                 ( UInt columnidx )  { return *( m_puiColumnWidth + columnidx ); }
665  Void  setNumRowsMinus1               ( Int i )           { m_iNumRowsMinus1 = i; }
666  Int   getNumRowsMinus1               ()                  { return m_iNumRowsMinus1; }
667  Void  setRowHeight (UInt* rowHeight)
668  {
669    if( m_iUniformSpacingIdr == 0 && m_iNumRowsMinus1 > 0 )
670    {
671      Int  m_iHeightInCU = ( m_iSourceHeight%g_uiMaxCUHeight ) ? m_iSourceHeight/g_uiMaxCUHeight + 1 : m_iSourceHeight/g_uiMaxCUHeight;
672      m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ];
673
674      for(Int i=0; i<m_iNumRowsMinus1; i++)
675      {
676        m_puiRowHeight[i] = rowHeight[i];
677        printf("row: m_iHeightInCU=%4d i=%4d height=%4d\n",m_iHeightInCU,i,m_puiRowHeight[i]); //AFU
678      }
679    }
680  }
681  UInt  getRowHeight                   ( UInt rowIdx )     { return *( m_puiRowHeight + rowIdx ); }
682  Void  xCheckGSParameters();
683  Void  setWaveFrontSynchro(Int iWaveFrontSynchro)       { m_iWaveFrontSynchro = iWaveFrontSynchro; }
684  Int   getWaveFrontsynchro()                            { return m_iWaveFrontSynchro; }
685  Void  setWaveFrontSubstreams(Int iWaveFrontSubstreams) { m_iWaveFrontSubstreams = iWaveFrontSubstreams; }
686  Int   getWaveFrontSubstreams()                         { return m_iWaveFrontSubstreams; }
687  Void  setDecodedPictureHashSEIEnabled(Int b)           { m_decodedPictureHashSEIEnabled = b; }
688  Int   getDecodedPictureHashSEIEnabled()                { return m_decodedPictureHashSEIEnabled; }
689  Void  setBufferingPeriodSEIEnabled(Int b)              { m_bufferingPeriodSEIEnabled = b; }
690  Int   getBufferingPeriodSEIEnabled()                   { return m_bufferingPeriodSEIEnabled; }
691  Void  setPictureTimingSEIEnabled(Int b)                { m_pictureTimingSEIEnabled = b; }
692  Int   getPictureTimingSEIEnabled()                     { return m_pictureTimingSEIEnabled; }
693  Void  setRecoveryPointSEIEnabled(Int b)                { m_recoveryPointSEIEnabled = b; }
694  Int   getRecoveryPointSEIEnabled()                     { return m_recoveryPointSEIEnabled; }
695  Void  setToneMappingInfoSEIEnabled(Bool b)                 {  m_toneMappingInfoSEIEnabled = b;  }
696  Bool  getToneMappingInfoSEIEnabled()                       {  return m_toneMappingInfoSEIEnabled;  }
697  Void  setTMISEIToneMapId(Int b)                            {  m_toneMapId = b;  }
698  Int   getTMISEIToneMapId()                                 {  return m_toneMapId;  }
699  Void  setTMISEIToneMapCancelFlag(Bool b)                   {  m_toneMapCancelFlag=b;  }
700  Bool  getTMISEIToneMapCancelFlag()                         {  return m_toneMapCancelFlag;  }
701  Void  setTMISEIToneMapPersistenceFlag(Bool b)              {  m_toneMapPersistenceFlag = b;  }
702  Bool   getTMISEIToneMapPersistenceFlag()                   {  return m_toneMapPersistenceFlag;  }
703  Void  setTMISEICodedDataBitDepth(Int b)                    {  m_codedDataBitDepth = b;  }
704  Int   getTMISEICodedDataBitDepth()                         {  return m_codedDataBitDepth;  }
705  Void  setTMISEITargetBitDepth(Int b)                       {  m_targetBitDepth = b;  }
706  Int   getTMISEITargetBitDepth()                            {  return m_targetBitDepth;  }
707  Void  setTMISEIModelID(Int b)                              {  m_modelId = b;  }
708  Int   getTMISEIModelID()                                   {  return m_modelId;  }
709  Void  setTMISEIMinValue(Int b)                             {  m_minValue = b;  }
710  Int   getTMISEIMinValue()                                  {  return m_minValue;  }
711  Void  setTMISEIMaxValue(Int b)                             {  m_maxValue = b;  }
712  Int   getTMISEIMaxValue()                                  {  return m_maxValue;  }
713  Void  setTMISEISigmoidMidpoint(Int b)                      {  m_sigmoidMidpoint = b;  }
714  Int   getTMISEISigmoidMidpoint()                           {  return m_sigmoidMidpoint;  }
715  Void  setTMISEISigmoidWidth(Int b)                         {  m_sigmoidWidth = b;  }
716  Int   getTMISEISigmoidWidth()                              {  return m_sigmoidWidth;  }
717  Void  setTMISEIStartOfCodedInterva( Int*  p )              {  m_startOfCodedInterval = p;  }
718  Int*  getTMISEIStartOfCodedInterva()                       {  return m_startOfCodedInterval;  }
719  Void  setTMISEINumPivots(Int b)                            {  m_numPivots = b;  }
720  Int   getTMISEINumPivots()                                 {  return m_numPivots;  }
721  Void  setTMISEICodedPivotValue( Int*  p )                  {  m_codedPivotValue = p;  }
722  Int*  getTMISEICodedPivotValue()                           {  return m_codedPivotValue;  }
723  Void  setTMISEITargetPivotValue( Int*  p )                 {  m_targetPivotValue = p;  }
724  Int*  getTMISEITargetPivotValue()                          {  return m_targetPivotValue;  }
725  Void  setTMISEICameraIsoSpeedIdc(Int b)                    {  m_cameraIsoSpeedIdc = b;  }
726  Int   getTMISEICameraIsoSpeedIdc()                         {  return m_cameraIsoSpeedIdc;  }
727  Void  setTMISEICameraIsoSpeedValue(Int b)                  {  m_cameraIsoSpeedValue = b;  }
728  Int   getTMISEICameraIsoSpeedValue()                       {  return m_cameraIsoSpeedValue;  }
729  Void  setTMISEIExposureCompensationValueSignFlag(Int b)    {  m_exposureCompensationValueSignFlag = b;  }
730  Int   getTMISEIExposureCompensationValueSignFlag()         {  return m_exposureCompensationValueSignFlag;  }
731  Void  setTMISEIExposureCompensationValueNumerator(Int b)   {  m_exposureCompensationValueNumerator = b;  }
732  Int   getTMISEIExposureCompensationValueNumerator()        {  return m_exposureCompensationValueNumerator;  }
733  Void  setTMISEIExposureCompensationValueDenomIdc(Int b)    {  m_exposureCompensationValueDenomIdc =b;  }
734  Int   getTMISEIExposureCompensationValueDenomIdc()         {  return m_exposureCompensationValueDenomIdc;  }
735  Void  setTMISEIRefScreenLuminanceWhite(Int b)              {  m_refScreenLuminanceWhite = b;  }
736  Int   getTMISEIRefScreenLuminanceWhite()                   {  return m_refScreenLuminanceWhite;  }
737  Void  setTMISEIExtendedRangeWhiteLevel(Int b)              {  m_extendedRangeWhiteLevel = b;  }
738  Int   getTMISEIExtendedRangeWhiteLevel()                   {  return m_extendedRangeWhiteLevel;  }
739  Void  setTMISEINominalBlackLevelLumaCodeValue(Int b)       {  m_nominalBlackLevelLumaCodeValue = b;  }
740  Int   getTMISEINominalBlackLevelLumaCodeValue()            {  return m_nominalBlackLevelLumaCodeValue;  }
741  Void  setTMISEINominalWhiteLevelLumaCodeValue(Int b)       {  m_nominalWhiteLevelLumaCodeValue = b;  }
742  Int   getTMISEINominalWhiteLevelLumaCodeValue()            {  return m_nominalWhiteLevelLumaCodeValue;  }
743  Void  setTMISEIExtendedWhiteLevelLumaCodeValue(Int b)      {  m_extendedWhiteLevelLumaCodeValue =b;  }
744  Int   getTMISEIExtendedWhiteLevelLumaCodeValue()           {  return m_extendedWhiteLevelLumaCodeValue;  }
745  Void  setFramePackingArrangementSEIEnabled(Int b)      { m_framePackingSEIEnabled = b; }
746  Int   getFramePackingArrangementSEIEnabled()           { return m_framePackingSEIEnabled; }
747  Void  setFramePackingArrangementSEIType(Int b)         { m_framePackingSEIType = b; }
748  Int   getFramePackingArrangementSEIType()              { return m_framePackingSEIType; }
749  Void  setFramePackingArrangementSEIId(Int b)           { m_framePackingSEIId = b; }
750  Int   getFramePackingArrangementSEIId()                { return m_framePackingSEIId; }
751  Void  setFramePackingArrangementSEIQuincunx(Int b)     { m_framePackingSEIQuincunx = b; }
752  Int   getFramePackingArrangementSEIQuincunx()          { return m_framePackingSEIQuincunx; }
753  Void  setFramePackingArrangementSEIInterpretation(Int b)  { m_framePackingSEIInterpretation = b; }
754  Int   getFramePackingArrangementSEIInterpretation()    { return m_framePackingSEIInterpretation; }
755  Void  setDisplayOrientationSEIAngle(Int b)             { m_displayOrientationSEIAngle = b; }
756  Int   getDisplayOrientationSEIAngle()                  { return m_displayOrientationSEIAngle; }
757  Void  setTemporalLevel0IndexSEIEnabled(Int b)          { m_temporalLevel0IndexSEIEnabled = b; }
758  Int   getTemporalLevel0IndexSEIEnabled()               { return m_temporalLevel0IndexSEIEnabled; }
759  Void  setGradualDecodingRefreshInfoEnabled(Int b)      { m_gradualDecodingRefreshInfoEnabled = b;    }
760  Int   getGradualDecodingRefreshInfoEnabled()           { return m_gradualDecodingRefreshInfoEnabled; }
761  Void  setDecodingUnitInfoSEIEnabled(Int b)                { m_decodingUnitInfoSEIEnabled = b;    }
762  Int   getDecodingUnitInfoSEIEnabled()                     { return m_decodingUnitInfoSEIEnabled; }
763  Void  setSOPDescriptionSEIEnabled(Int b)                { m_SOPDescriptionSEIEnabled = b; }
764  Int   getSOPDescriptionSEIEnabled()                     { return m_SOPDescriptionSEIEnabled; }
765  Void  setScalableNestingSEIEnabled(Int b)                { m_scalableNestingSEIEnabled = b; }
766  Int   getScalableNestingSEIEnabled()                     { return m_scalableNestingSEIEnabled; }
767  Void      setUseWP               ( Bool b )    { m_useWeightedPred   = b;    }
768  Void      setWPBiPred            ( Bool b )    { m_useWeightedBiPred = b;    }
769  Bool      getUseWP               ()            { return m_useWeightedPred;   }
770  Bool      getWPBiPred            ()            { return m_useWeightedBiPred; }
771  Void      setLog2ParallelMergeLevelMinus2   ( UInt u )    { m_log2ParallelMergeLevelMinus2       = u;    }
772  UInt      getLog2ParallelMergeLevelMinus2   ()            { return m_log2ParallelMergeLevelMinus2;       }
773  Void      setMaxNumMergeCand                ( UInt u )    { m_maxNumMergeCand = u;      }
774  UInt      getMaxNumMergeCand                ()            { return m_maxNumMergeCand;   }
775  Void      setUseScalingListId    ( Int  u )    { m_useScalingListId       = u;   }
776  Int       getUseScalingListId    ()            { return m_useScalingListId;      }
777  Void      setScalingListFile     ( Char*  pch ){ m_scalingListFile     = pch; }
778  Char*     getScalingListFile     ()            { return m_scalingListFile;    }
779  Void      setTMVPModeId ( Int  u ) { m_TMVPModeId = u;    }
780  Int       getTMVPModeId ()         { return m_TMVPModeId; }
781  Void      setSignHideFlag( Int signHideFlag ) { m_signHideFlag = signHideFlag; }
782  Int       getSignHideFlag()                    { return m_signHideFlag; }
783#if RATE_CONTROL_LAMBDA_DOMAIN
784  Bool      getUseRateCtrl         ()              { return m_RCEnableRateControl;   }
785  Void      setUseRateCtrl         ( Bool b )      { m_RCEnableRateControl = b;      }
786  Int       getTargetBitrate       ()              { return m_RCTargetBitrate;       }
787  Void      setTargetBitrate       ( Int bitrate ) { m_RCTargetBitrate  = bitrate;   }
788#if M0036_RC_IMPROVEMENT
789  Int       getKeepHierBit         ()              { return m_RCKeepHierarchicalBit; }
790  Void      setKeepHierBit         ( Int i )       { m_RCKeepHierarchicalBit = i;    }
791#else
792  Bool      getKeepHierBit         ()              { return m_RCKeepHierarchicalBit; }
793  Void      setKeepHierBit         ( Bool b )      { m_RCKeepHierarchicalBit = b;    }
794#endif
795  Bool      getLCULevelRC          ()              { return m_RCLCULevelRC; }
796  Void      setLCULevelRC          ( Bool b )      { m_RCLCULevelRC = b; }
797  Bool      getUseLCUSeparateModel ()              { return m_RCUseLCUSeparateModel; }
798  Void      setUseLCUSeparateModel ( Bool b )      { m_RCUseLCUSeparateModel = b;    }
799  Int       getInitialQP           ()              { return m_RCInitialQP;           }
800  Void      setInitialQP           ( Int QP )      { m_RCInitialQP = QP;             }
801  Bool      getForceIntraQP        ()              { return m_RCForceIntraQP;        }
802  Void      setForceIntraQP        ( Bool b )      { m_RCForceIntraQP = b;           }
803#else
804  Bool      getUseRateCtrl    ()                { return m_enableRateCtrl;    }
805  Void      setUseRateCtrl    (Bool flag)       { m_enableRateCtrl = flag;    }
806  Int       getTargetBitrate  ()                { return m_targetBitrate;     }
807  Void      setTargetBitrate  (Int target)      { m_targetBitrate  = target;  }
808  Int       getNumLCUInUnit   ()                { return m_numLCUInUnit;      }
809  Void      setNumLCUInUnit   (Int numLCUs)     { m_numLCUInUnit   = numLCUs; }
810#endif
811  Bool      getTransquantBypassEnableFlag()           { return m_TransquantBypassEnableFlag; }
812  Void      setTransquantBypassEnableFlag(Bool flag)  { m_TransquantBypassEnableFlag = flag; }
813  Bool      getCUTransquantBypassFlagValue()          { return m_CUTransquantBypassFlagValue; }
814  Void      setCUTransquantBypassFlagValue(Bool flag) { m_CUTransquantBypassFlagValue = flag; }
815#if H_MV_FIX_VPS_POINTER
816  Void      setVPS           ( TComVPS *p ) { m_cVPS = p;    }
817  TComVPS*  getVPS           ()             { return m_cVPS; }
818#else
819  Void setVPS(TComVPS *p) { m_cVPS = *p; }
820  TComVPS *getVPS() { return &m_cVPS; }
821#endif
822  Void      setUseRecalculateQPAccordingToLambda ( Bool b ) { m_recalculateQPAccordingToLambda = b;    }
823  Bool      getUseRecalculateQPAccordingToLambda ()         { return m_recalculateQPAccordingToLambda; }
824
825  Void      setUseStrongIntraSmoothing ( Bool b ) { m_useStrongIntraSmoothing = b;    }
826  Bool      getUseStrongIntraSmoothing ()         { return m_useStrongIntraSmoothing; }
827
828  Void      setActiveParameterSetsSEIEnabled ( Int b )  { m_activeParameterSetsSEIEnabled = b; } 
829  Int       getActiveParameterSetsSEIEnabled ()         { return m_activeParameterSetsSEIEnabled; }
830  Bool      getVuiParametersPresentFlag()                 { return m_vuiParametersPresentFlag; }
831  Void      setVuiParametersPresentFlag(Bool i)           { m_vuiParametersPresentFlag = i; }
832  Bool      getAspectRatioInfoPresentFlag()               { return m_aspectRatioInfoPresentFlag; }
833  Void      setAspectRatioInfoPresentFlag(Bool i)         { m_aspectRatioInfoPresentFlag = i; }
834  Int       getAspectRatioIdc()                           { return m_aspectRatioIdc; }
835  Void      setAspectRatioIdc(Int i)                      { m_aspectRatioIdc = i; }
836  Int       getSarWidth()                                 { return m_sarWidth; }
837  Void      setSarWidth(Int i)                            { m_sarWidth = i; }
838  Int       getSarHeight()                                { return m_sarHeight; }
839  Void      setSarHeight(Int i)                           { m_sarHeight = i; }
840  Bool      getOverscanInfoPresentFlag()                  { return m_overscanInfoPresentFlag; }
841  Void      setOverscanInfoPresentFlag(Bool i)            { m_overscanInfoPresentFlag = i; }
842  Bool      getOverscanAppropriateFlag()                  { return m_overscanAppropriateFlag; }
843  Void      setOverscanAppropriateFlag(Bool i)            { m_overscanAppropriateFlag = i; }
844  Bool      getVideoSignalTypePresentFlag()               { return m_videoSignalTypePresentFlag; }
845  Void      setVideoSignalTypePresentFlag(Bool i)         { m_videoSignalTypePresentFlag = i; }
846  Int       getVideoFormat()                              { return m_videoFormat; }
847  Void      setVideoFormat(Int i)                         { m_videoFormat = i; }
848  Bool      getVideoFullRangeFlag()                       { return m_videoFullRangeFlag; }
849  Void      setVideoFullRangeFlag(Bool i)                 { m_videoFullRangeFlag = i; }
850  Bool      getColourDescriptionPresentFlag()             { return m_colourDescriptionPresentFlag; }
851  Void      setColourDescriptionPresentFlag(Bool i)       { m_colourDescriptionPresentFlag = i; }
852  Int       getColourPrimaries()                          { return m_colourPrimaries; }
853  Void      setColourPrimaries(Int i)                     { m_colourPrimaries = i; }
854  Int       getTransferCharacteristics()                  { return m_transferCharacteristics; }
855  Void      setTransferCharacteristics(Int i)             { m_transferCharacteristics = i; }
856  Int       getMatrixCoefficients()                       { return m_matrixCoefficients; }
857  Void      setMatrixCoefficients(Int i)                  { m_matrixCoefficients = i; }
858  Bool      getChromaLocInfoPresentFlag()                 { return m_chromaLocInfoPresentFlag; }
859  Void      setChromaLocInfoPresentFlag(Bool i)           { m_chromaLocInfoPresentFlag = i; }
860  Int       getChromaSampleLocTypeTopField()              { return m_chromaSampleLocTypeTopField; }
861  Void      setChromaSampleLocTypeTopField(Int i)         { m_chromaSampleLocTypeTopField = i; }
862  Int       getChromaSampleLocTypeBottomField()           { return m_chromaSampleLocTypeBottomField; }
863  Void      setChromaSampleLocTypeBottomField(Int i)      { m_chromaSampleLocTypeBottomField = i; }
864  Bool      getNeutralChromaIndicationFlag()              { return m_neutralChromaIndicationFlag; }
865  Void      setNeutralChromaIndicationFlag(Bool i)        { m_neutralChromaIndicationFlag = i; }
866  Window   &getDefaultDisplayWindow()                     { return m_defaultDisplayWindow; }
867  Void      setDefaultDisplayWindow (Int offsetLeft, Int offsetRight, Int offsetTop, Int offsetBottom ) { m_defaultDisplayWindow.setWindow (offsetLeft, offsetRight, offsetTop, offsetBottom); }
868  Bool      getFrameFieldInfoPresentFlag()                { return m_frameFieldInfoPresentFlag; }
869  Void      setFrameFieldInfoPresentFlag(Bool i)          { m_frameFieldInfoPresentFlag = i; } 
870  Bool      getPocProportionalToTimingFlag()              { return m_pocProportionalToTimingFlag; }
871  Void      setPocProportionalToTimingFlag(Bool x)        { m_pocProportionalToTimingFlag = x;    }
872  Int       getNumTicksPocDiffOneMinus1()                 { return m_numTicksPocDiffOneMinus1;    }
873  Void      setNumTicksPocDiffOneMinus1(Int x)            { m_numTicksPocDiffOneMinus1 = x;       }
874  Bool      getBitstreamRestrictionFlag()                 { return m_bitstreamRestrictionFlag; }
875  Void      setBitstreamRestrictionFlag(Bool i)           { m_bitstreamRestrictionFlag = i; }
876  Bool      getTilesFixedStructureFlag()                  { return m_tilesFixedStructureFlag; }
877  Void      setTilesFixedStructureFlag(Bool i)            { m_tilesFixedStructureFlag = i; }
878  Bool      getMotionVectorsOverPicBoundariesFlag()       { return m_motionVectorsOverPicBoundariesFlag; }
879  Void      setMotionVectorsOverPicBoundariesFlag(Bool i) { m_motionVectorsOverPicBoundariesFlag = i; }
880  Int       getMinSpatialSegmentationIdc()                { return m_minSpatialSegmentationIdc; }
881  Void      setMinSpatialSegmentationIdc(Int i)           { m_minSpatialSegmentationIdc = i; }
882  Int       getMaxBytesPerPicDenom()                      { return m_maxBytesPerPicDenom; }
883  Void      setMaxBytesPerPicDenom(Int i)                 { m_maxBytesPerPicDenom = i; }
884  Int       getMaxBitsPerMinCuDenom()                     { return m_maxBitsPerMinCuDenom; }
885  Void      setMaxBitsPerMinCuDenom(Int i)                { m_maxBitsPerMinCuDenom = i; }
886  Int       getLog2MaxMvLengthHorizontal()                { return m_log2MaxMvLengthHorizontal; }
887  Void      setLog2MaxMvLengthHorizontal(Int i)           { m_log2MaxMvLengthHorizontal = i; }
888  Int       getLog2MaxMvLengthVertical()                  { return m_log2MaxMvLengthVertical; }
889  Void      setLog2MaxMvLengthVertical(Int i)             { m_log2MaxMvLengthVertical = i; }
890 
891  Bool getProgressiveSourceFlag() const { return m_progressiveSourceFlag; }
892  Void setProgressiveSourceFlag(Bool b) { m_progressiveSourceFlag = b; }
893 
894  Bool getInterlacedSourceFlag() const { return m_interlacedSourceFlag; }
895  Void setInterlacedSourceFlag(Bool b) { m_interlacedSourceFlag = b; }
896 
897  Bool getNonPackedConstraintFlag() const { return m_nonPackedConstraintFlag; }
898  Void setNonPackedConstraintFlag(Bool b) { m_nonPackedConstraintFlag = b; }
899 
900  Bool getFrameOnlyConstraintFlag() const { return m_frameOnlyConstraintFlag; }
901  Void setFrameOnlyConstraintFlag(Bool b) { m_frameOnlyConstraintFlag = b; }
902#if H_3D
903  /// 3D Tools
904
905 //==== CAMERA PARAMETERS  ==========
906  Void      setCamParPrecision              ( UInt  u )      { m_uiCamParPrecision      = u; }
907  Void      setCamParInSliceHeader          ( Bool  b )      { m_bCamParInSliceHeader   = b; }
908  Void      setCodedScale                   ( Int** p )      { m_aaiCodedScale          = p; }
909  Void      setCodedOffset                  ( Int** p )      { m_aaiCodedOffset         = p; }
910  Void      setCameraParameters             ( TAppComCamPara* c) { m_cameraParameters   = c; }
911
912#if H_3D_VSO
913 //==== VSO  ==========
914  Void      setRenderModelParameters ( TRenModSetupStrParser* c ) { m_renderModelParameters = c; }
915  Bool      getUseVSO                       ()              { return m_bUseVSO;     }
916  Void      setUseVSO                       ( Bool  b  )    { m_bUseVSO     = b; }
917  UInt      getVSOMode                      ()              { return m_uiVSOMode; }
918  Void      setVSOMode                      ( UInt  ui )    { m_uiVSOMode   = ui; }
919  Bool      getForceLambdaScaleVSO          ()              { return m_bForceLambdaScale; }
920  Void      setForceLambdaScaleVSO          ( Bool   b )    { m_bForceLambdaScale = b; };
921  Double    getLambdaScaleVSO               ()              { return m_dLambdaScaleVSO;   }
922  Void      setLambdaScaleVSO               ( Double d )    { m_dLambdaScaleVSO   = d; };
923  Bool      getAllowNegDist                 ()              { return m_bAllowNegDist;     }
924  Void      setAllowNegDist                 ( Bool   b )    { m_bAllowNegDist     = b; };
925
926  // LGE_WVSO_A0119
927  Bool      getUseWVSO                      ()              { return m_bUseWVSO;     }
928  Void      setUseWVSO                      ( Bool  b )     { m_bUseWVSO   = b; }
929  Int       getVSOWeight                    ()              { return m_iVSOWeight;    }
930  Void      setVSOWeight                    ( Int   i )     { m_iVSOWeight = i; }
931  Int       getVSDWeight                    ()              { return m_iVSDWeight;    }
932  Void      setVSDWeight                    ( Int   i )     { m_iVSDWeight = i; }
933  Int       getDWeight                      ()              { return m_iDWeight;    }
934  Void      setDWeight                      ( Int   i )     { m_iDWeight   = i; }
935
936  // SAIT_VSO_EST_A0033
937  Bool      getUseEstimatedVSD              ()              { return m_bUseEstimatedVSD; }
938  Void      setUseEstimatedVSD              ( Bool  b )     { m_bUseEstimatedVSD = b; }
939  Double    getDispCoeff                    ()              { return m_dDispCoeff;    }
940  Void      setDispCoeff                    ( Double  d )   { m_dDispCoeff  = d; }
941#endif // H_3D_VSO
942
943 //==== DIM  ==========
944#if H_3D_DIM
945  Bool      getUseDMM                       ()        { return m_useDMM; }
946  Void      setUseDMM                       ( Bool b) { m_useDMM = b;    }
947  Bool      getUseRBC                       ()        { return m_useRBC; }
948  Void      setUseRBC                       ( Bool b) { m_useRBC = b;    }
949  Bool      getUseSDC                       ()        { return m_useSDC; }
950  Void      setUseSDC                       ( Bool b) { m_useSDC = b;    }
951  Bool      getUseDLT                       ()        { return m_useDLT; }
952  Void      setUseDLT                       ( Bool b) { m_useDLT = b;    }
953#endif
954
955#if H_3D_QTLPC
956  Void      setUseQTL                       ( Bool b ) { m_bUseQTL = b;    }
957  Bool      getUseQTL                       ()         { return m_bUseQTL; }
958  Void      setUsePC                        ( Bool b ) { m_bUsePC  = b;    }
959  Bool      getUsePC                        ()         { return m_bUsePC;  }
960#endif
961
962#endif // H_3D
963};
964
965//! \}
966
967#endif // !defined(AFX_TENCCFG_H__6B99B797_F4DA_4E46_8E78_7656339A6C41__INCLUDED_)
Note: See TracBrowser for help on using the repository browser.