/* The copyright in this software is being made available under the BSD * License, included below. This software may be subject to other third party * and contributor rights, including patent rights, and no such rights are * granted under this license. * * Copyright (c) 2010-2012, ITU/ISO/IEC * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of the ITU/ISO/IEC nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ /** \file TComSlice.h \brief slice header and SPS class (header) */ #ifndef __TCOMSLICE__ #define __TCOMSLICE__ #include #include #include #include "CommonDef.h" #include "TComRom.h" #include "TComList.h" //! \ingroup TLibCommon //! \{ class TComPic; class TComTrQuant; #if DEPTH_MAP_GENERATION class TComDepthMapGenerator; #endif #if HHI_INTER_VIEW_RESIDUAL_PRED class TComResidualGenerator; #endif // ==================================================================================================================== // Constants // ==================================================================================================================== /// max number of supported APS in software #define MAX_NUM_SUPPORTED_APS 1 // ==================================================================================================================== // Class definition // ==================================================================================================================== #if RPS_IN_SPS /// Reference Picture Set class class TComReferencePictureSet { private: Int m_numberOfPictures; Int m_numberOfNegativePictures; Int m_numberOfPositivePictures; Int m_numberOfLongtermPictures; Int m_deltaPOC[MAX_NUM_REF_PICS]; Int m_POC[MAX_NUM_REF_PICS]; Bool m_used[MAX_NUM_REF_PICS]; Bool m_interRPSPrediction; Int m_deltaRIdxMinus1; Int m_deltaRPS; Int m_numRefIdc; Int m_refIdc[MAX_NUM_REF_PICS+1]; public: TComReferencePictureSet(); virtual ~TComReferencePictureSet(); Void setNumberOfPictures(Int numberOfPictures); Int getNumberOfPictures(); Void setNumberOfNegativePictures(Int number) { m_numberOfNegativePictures = number; } Int getNumberOfNegativePictures() { return m_numberOfNegativePictures; } Void setNumberOfPositivePictures(Int number) { m_numberOfPositivePictures = number; } Int getNumberOfPositivePictures() { return m_numberOfPositivePictures; } Void setNumberOfLongtermPictures(Int number) { m_numberOfLongtermPictures = number; } Int getNumberOfLongtermPictures() { return m_numberOfLongtermPictures; } Void setDeltaPOC(Int bufferNum, Int deltaPOC); Int getDeltaPOC(Int bufferNum); Void setPOC(Int bufferNum, Int deltaPOC); Int getPOC(Int bufferNum); Void setUsed(Int bufferNum, Bool used); Int getUsed(Int bufferNum); Void setInterRPSPrediction(Bool flag) { m_interRPSPrediction = flag; } Bool getInterRPSPrediction() { return m_interRPSPrediction; } Void setDeltaRIdxMinus1(Int x) { m_deltaRIdxMinus1 = x; } Int getDeltaRIdxMinus1() { return m_deltaRIdxMinus1; } Void setDeltaRPS(Int x) { m_deltaRPS = x; } Int getDeltaRPS() { return m_deltaRPS; } Void setNumRefIdc(Int x) { m_numRefIdc = x; } Int getNumRefIdc() { return m_numRefIdc; } Void setRefIdc(Int bufferNum, Int refIdc); Int getRefIdc(Int bufferNum); Void sortDeltaPOC(); Void printDeltaPOC(); }; /// Reference Picture Set set class class TComRPSList { private: Int m_numberOfReferencePictureSets; TComReferencePictureSet* m_referencePictureSets; public: TComRPSList(); virtual ~TComRPSList(); Void create (Int numberOfEntries); Void destroy (); TComReferencePictureSet* getReferencePictureSet(Int referencePictureSetNum); Int getNumberOfReferencePictureSets(); Void setNumberOfReferencePictureSets(Int numberOfReferencePictureSets); }; #endif #if VIDYO_VPS_INTEGRATION /// VPS class class TComVPS { private: Int m_VPSId; UInt m_uiMaxTLayers; UInt m_uiMaxLayers; Bool m_bTemporalIdNestingFlag; UInt m_uiExtensionType; Bool m_bDependentFlag[MAX_LAYER_NUM]; UInt m_uiViewId[MAX_LAYER_NUM]; Bool m_bDepthFlag[MAX_LAYER_NUM]; Int m_iViewOrderIdx[MAX_LAYER_NUM]; UInt m_uiDependentLayer[MAX_LAYER_NUM]; UInt m_numReorderPics[MAX_TLAYER]; UInt m_uiMaxDecPicBuffering[MAX_TLAYER]; UInt m_uiMaxLatencyIncrease[MAX_TLAYER]; public: TComVPS(); virtual ~TComVPS(); Int getVPSId () { return m_VPSId; } Void setVPSId (Int i) { m_VPSId = i; } UInt getMaxTLayers () { return m_uiMaxTLayers; } Void setMaxTLayers (UInt t) { m_uiMaxTLayers = t; } UInt getMaxLayers () { return m_uiMaxLayers; } Void setMaxLayers (UInt l) { m_uiMaxLayers = l; } Bool getTemporalNestingFlag () { return m_uiMaxLayers; } Void setTemporalNestingFlag (UInt t) { m_bTemporalIdNestingFlag = t; } Void setExtensionType(UInt v) { m_uiExtensionType = v; } UInt getExtensionType() { return m_uiExtensionType; } Void setDependentFlag(Bool d, UInt layer) { m_bDependentFlag[layer] = d; } Bool getDependentFlag(UInt layer) { return m_bDependentFlag[layer]; } Void setViewId(UInt v, UInt layer) { m_uiViewId[layer] = v; } UInt getViewId(UInt layer) { return m_uiViewId[layer]; } Void setDepthFlag(Bool d, UInt layer) { m_bDepthFlag[layer] = d; } Bool getDepthFlag(UInt layer) { return m_bDepthFlag[layer]; } Void setViewOrderIdx(Int v, UInt layer) { m_iViewOrderIdx[layer] = v; } Int getViewOrderIdx(UInt layer) { return m_iViewOrderIdx[layer]; } Void setDependentLayer(UInt v, UInt layer) { m_uiDependentLayer[layer] = v; } UInt getDependentLayer(UInt layer) { return m_uiDependentLayer[layer]; } Void setNumReorderPics(UInt v, UInt tLayer) { m_numReorderPics[tLayer] = v; } UInt getNumReorderPics(UInt tLayer) { return m_numReorderPics[tLayer]; } Void setMaxDecPicBuffering(UInt v, UInt tLayer) { m_uiMaxDecPicBuffering[tLayer] = v; } UInt getMaxDecPicBuffering(UInt tLayer) { return m_uiMaxDecPicBuffering[tLayer]; } Void setMaxLatencyIncrease(UInt v, UInt tLayer) { m_uiMaxLatencyIncrease[tLayer] = v; } UInt getMaxLatencyIncrease(UInt tLayer) { return m_uiMaxLatencyIncrease[tLayer]; } }; #endif /// SPS class class TComSPS { private: #if VIDYO_VPS_INTEGRATION Int m_VPSId; #endif Int m_SPSId; Int m_ProfileIdc; Int m_LevelIdc; Int m_chromaFormatIdc; UInt m_uiMaxTLayers; // maximum number of temporal layers UInt m_uiViewId; Int m_iViewOrderIdx; Bool m_bDepth; UInt m_uiCamParPrecision; Bool m_bCamParInSliceHeader; Int m_aaiCodedScale [2][MAX_VIEW_NUM]; Int m_aaiCodedOffset[2][MAX_VIEW_NUM]; // Structure UInt m_picWidthInLumaSamples; UInt m_picHeightInLumaSamples; #if PIC_CROPPING Bool m_picCroppingFlag; Int m_picCropLeftOffset; Int m_picCropRightOffset; Int m_picCropTopOffset; Int m_picCropBottomOffset; #else Int m_aiPad[2]; #endif UInt m_uiMaxCUWidth; UInt m_uiMaxCUHeight; UInt m_uiMaxCUDepth; UInt m_uiMinTrDepth; UInt m_uiMaxTrDepth; #if RPS_IN_SPS TComRPSList* m_RPSList; Bool m_bLongTermRefsPresent; #endif #if H0567_DPB_PARAMETERS_PER_TEMPORAL_LAYER Int m_numReorderPics[MAX_TLAYER]; #else Int m_maxNumberOfReferencePictures; Int m_numReorderFrames; #endif Int m_iNumberOfUsableInterViewRefs; Int m_aiUsableInterViewRefs[MAX_VIEW_NUM]; // Tool list UInt m_uiQuadtreeTULog2MaxSize; UInt m_uiQuadtreeTULog2MinSize; UInt m_uiQuadtreeTUMaxDepthInter; UInt m_uiQuadtreeTUMaxDepthIntra; Bool m_usePCM; UInt m_pcmLog2MaxSize; UInt m_uiPCMLog2MinSize; Bool m_bDisInter4x4; Bool m_useAMP; Bool m_bUseALF; #if LCU_SYNTAX_ALF Bool m_bALFCoefInSlice; #endif #if !PIC_CROPPING Bool m_bUsePAD; #endif Bool m_bUseLMChroma; // JL: Bool m_bUseLComb; Bool m_bLCMod; Bool m_useNSQT; #if H0412_REF_PIC_LIST_RESTRICTION Bool m_restrictedRefPicListsFlag; Bool m_listsModificationPresentFlag; #endif // Parameter AMVP_MODE m_aeAMVPMode[MAX_CU_DEPTH]; UInt m_uiBitDepth; UInt m_uiBitIncrement; #if H0736_AVC_STYLE_QP_RANGE Int m_qpBDOffsetY; Int m_qpBDOffsetC; #endif #if LOSSLESS_CODING Bool m_useLossless; #endif UInt m_uiPCMBitDepthLuma; UInt m_uiPCMBitDepthChroma; Bool m_bPCMFilterDisableFlag; UInt m_uiBitsForPOC; // Max physical transform size UInt m_uiMaxTrSize; Int m_iAMPAcc[MAX_CU_DEPTH]; Bool m_bLFCrossSliceBoundaryFlag; Bool m_bUseSAO; #if HHI_MPI Bool m_bUseMVI; #endif Bool m_bLFCrossTileBoundaryFlag; Int m_iUniformSpacingIdr; Int m_iTileBoundaryIndependenceIdr; Int m_iNumColumnsMinus1; UInt* m_puiColumnWidth; Int m_iNumRowsMinus1; UInt* m_puiRowHeight; Bool m_bTemporalIdNestingFlag; // temporal_id_nesting_flag Bool m_scalingListEnabledFlag; #if H0567_DPB_PARAMETERS_PER_TEMPORAL_LAYER UInt m_uiMaxDecPicBuffering[MAX_TLAYER]; UInt m_uiMaxLatencyIncrease[MAX_TLAYER]; #else UInt m_uiMaxDecFrameBuffering; UInt m_uiMaxLatencyIncrease; #endif Bool m_useDF; #if TILES_WPP_ENTRY_POINT_SIGNALLING UInt m_tilesOrEntropyCodingSyncIdc; Int m_numSubstreams; #endif #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX Bool m_bUseDMM; #endif #if OL_DEPTHLIMIT Bool m_bDepthPartitionLimiting; #endif #if DEPTH_MAP_GENERATION UInt m_uiPredDepthMapGeneration; UInt m_uiPdmPrecision; Int m_aiPdmScaleNomDelta[MAX_VIEW_NUM]; Int m_aiPdmOffset [MAX_VIEW_NUM]; #endif #if HHI_INTER_VIEW_MOTION_PRED UInt m_uiMultiviewMvPredMode; #endif #if HHI_INTER_VIEW_RESIDUAL_PRED UInt m_uiMultiviewResPredMode; #endif #if DEPTH_MAP_GENERATION TComDepthMapGenerator* m_pcDepthMapGenerator; #endif #if HHI_INTER_VIEW_RESIDUAL_PRED TComResidualGenerator* m_pcResidualGenerator; #endif public: TComSPS(); virtual ~TComSPS(); #if VIDYO_VPS_INTEGRATION Int getVPSId () { return m_VPSId; } Void setVPSId (Int i) { m_VPSId = i; } #endif Int getSPSId () { return m_SPSId; } Void setSPSId (Int i) { m_SPSId = i; } Int getProfileIdc () { return m_ProfileIdc; } Void setProfileIdc (Int i) { m_ProfileIdc = i; } Int getLevelIdc () { return m_LevelIdc; } Void setLevelIdc (Int i) { m_LevelIdc = i; } Int getChromaFormatIdc () { return m_chromaFormatIdc; } Void setChromaFormatIdc (Int i) { m_chromaFormatIdc = i; } // structure Void setPicWidthInLumaSamples ( UInt u ) { m_picWidthInLumaSamples = u; } UInt getPicWidthInLumaSamples () { return m_picWidthInLumaSamples; } Void setPicHeightInLumaSamples ( UInt u ) { m_picHeightInLumaSamples = u; } UInt getPicHeightInLumaSamples () { return m_picHeightInLumaSamples; } #if PIC_CROPPING Bool getPicCroppingFlag() const { return m_picCroppingFlag; } Void setPicCroppingFlag(Bool val) { m_picCroppingFlag = val; } Int getPicCropLeftOffset() const { return m_picCropLeftOffset; } Void setPicCropLeftOffset(Int val) { m_picCropLeftOffset = val; } Int getPicCropRightOffset() const { return m_picCropRightOffset; } Void setPicCropRightOffset(Int val) { m_picCropRightOffset = val; } Int getPicCropTopOffset() const { return m_picCropTopOffset; } Void setPicCropTopOffset(Int val) { m_picCropTopOffset = val; } Int getPicCropBottomOffset() const { return m_picCropBottomOffset; } Void setPicCropBottomOffset(Int val) { m_picCropBottomOffset = val; } #endif Void setMaxCUWidth ( UInt u ) { m_uiMaxCUWidth = u; } UInt getMaxCUWidth () { return m_uiMaxCUWidth; } Void setMaxCUHeight ( UInt u ) { m_uiMaxCUHeight = u; } UInt getMaxCUHeight () { return m_uiMaxCUHeight; } Void setMaxCUDepth ( UInt u ) { m_uiMaxCUDepth = u; } UInt getMaxCUDepth () { return m_uiMaxCUDepth; } Void setUsePCM ( Bool b ) { m_usePCM = b; } Bool getUsePCM () { return m_usePCM; } Void setPCMLog2MaxSize ( UInt u ) { m_pcmLog2MaxSize = u; } UInt getPCMLog2MaxSize () { return m_pcmLog2MaxSize; } Void setPCMLog2MinSize ( UInt u ) { m_uiPCMLog2MinSize = u; } UInt getPCMLog2MinSize () { return m_uiPCMLog2MinSize; } Void setBitsForPOC ( UInt u ) { m_uiBitsForPOC = u; } UInt getBitsForPOC () { return m_uiBitsForPOC; } Bool getDisInter4x4() { return m_bDisInter4x4; } Void setDisInter4x4 ( Bool b ) { m_bDisInter4x4 = b; } Bool getUseAMP() { return m_useAMP; } Void setUseAMP( Bool b ) { m_useAMP = b; } Void setMinTrDepth ( UInt u ) { m_uiMinTrDepth = u; } UInt getMinTrDepth () { return m_uiMinTrDepth; } Void setMaxTrDepth ( UInt u ) { m_uiMaxTrDepth = u; } UInt getMaxTrDepth () { return m_uiMaxTrDepth; } Void setQuadtreeTULog2MaxSize( UInt u ) { m_uiQuadtreeTULog2MaxSize = u; } UInt getQuadtreeTULog2MaxSize() { return m_uiQuadtreeTULog2MaxSize; } Void setQuadtreeTULog2MinSize( UInt u ) { m_uiQuadtreeTULog2MinSize = u; } UInt getQuadtreeTULog2MinSize() { return m_uiQuadtreeTULog2MinSize; } Void setQuadtreeTUMaxDepthInter( UInt u ) { m_uiQuadtreeTUMaxDepthInter = u; } Void setQuadtreeTUMaxDepthIntra( UInt u ) { m_uiQuadtreeTUMaxDepthIntra = u; } UInt getQuadtreeTUMaxDepthInter() { return m_uiQuadtreeTUMaxDepthInter; } UInt getQuadtreeTUMaxDepthIntra() { return m_uiQuadtreeTUMaxDepthIntra; } #if !PIC_CROPPING Void setPad (Int iPad[2]) { m_aiPad[0] = iPad[0]; m_aiPad[1] = iPad[1]; } #endif #if H0567_DPB_PARAMETERS_PER_TEMPORAL_LAYER Void setNumReorderPics(Int i, UInt tlayer) { m_numReorderPics[tlayer] = i; } Int getNumReorderPics(UInt tlayer) { return m_numReorderPics[tlayer]; } #else Void setMaxNumberOfReferencePictures( Int u ) { m_maxNumberOfReferencePictures = u; } Int getMaxNumberOfReferencePictures() { return m_maxNumberOfReferencePictures; } Void setNumReorderFrames( Int i ) { m_numReorderFrames = i; } Int getNumReorderFrames() { return m_numReorderFrames; } #endif #if RPS_IN_SPS Void setRPSList( TComRPSList* RPSList ) { m_RPSList = RPSList; } TComRPSList* getRPSList() { return m_RPSList; } Bool getLongTermRefsPresent() { return m_bLongTermRefsPresent; } Void setLongTermRefsPresent(Bool b) { m_bLongTermRefsPresent=b; } #endif Void setNumberOfUsableInterViewRefs( Int number ) { m_iNumberOfUsableInterViewRefs = number; } Int getNumberOfUsableInterViewRefs() { return m_iNumberOfUsableInterViewRefs; } Void setUsableInterViewRef( Int pos, Int deltaViewId ) { m_aiUsableInterViewRefs[pos] = deltaViewId; } Int getUsableInterViewRef( Int pos ) { return m_aiUsableInterViewRefs[pos]; } #if !PIC_CROPPING Void setPadX ( Int u ) { m_aiPad[0] = u; } Void setPadY ( Int u ) { m_aiPad[1] = u; } Int getPad ( Int u ) { assert(u < 2); return m_aiPad[u];} Int* getPad ( ) { return m_aiPad; } #endif // physical transform Void setMaxTrSize ( UInt u ) { m_uiMaxTrSize = u; } UInt getMaxTrSize () { return m_uiMaxTrSize; } // Tool list Bool getUseALF () { return m_bUseALF; } #if LCU_SYNTAX_ALF Void setUseALFCoefInSlice(Bool b) {m_bALFCoefInSlice = b;} Bool getUseALFCoefInSlice() {return m_bALFCoefInSlice;} #endif #if !PIC_CROPPING Bool getUsePAD () { return m_bUsePAD; } Void setUsePAD ( Bool b ) { m_bUsePAD = b; } #endif Void setUseALF ( Bool b ) { m_bUseALF = b; } Void setUseLComb (Bool b) { m_bUseLComb = b; } Bool getUseLComb () { return m_bUseLComb; } Void setLCMod (Bool b) { m_bLCMod = b; } Bool getLCMod () { return m_bLCMod; } Bool getUseLMChroma () { return m_bUseLMChroma; } Void setUseLMChroma ( Bool b ) { m_bUseLMChroma = b; } #if LOSSLESS_CODING Bool getUseLossless () { return m_useLossless; } Void setUseLossless ( Bool b ) { m_useLossless = b; } #endif Bool getUseNSQT() { return m_useNSQT; } Void setUseNSQT( Bool b ) { m_useNSQT = b; } #if H0412_REF_PIC_LIST_RESTRICTION Bool getRestrictedRefPicListsFlag () { return m_restrictedRefPicListsFlag; } Void setRestrictedRefPicListsFlag ( Bool b ) { m_restrictedRefPicListsFlag = b; } Bool getListsModificationPresentFlag () { return m_listsModificationPresentFlag; } Void setListsModificationPresentFlag ( Bool b ) { m_listsModificationPresentFlag = b; } #endif // AMVP mode (for each depth) AMVP_MODE getAMVPMode ( UInt uiDepth ) { assert(uiDepth < g_uiMaxCUDepth); return m_aeAMVPMode[uiDepth]; } Void setAMVPMode ( UInt uiDepth, AMVP_MODE eMode) { assert(uiDepth < g_uiMaxCUDepth); m_aeAMVPMode[uiDepth] = eMode; } // AMP accuracy Int getAMPAcc ( UInt uiDepth ) { return m_iAMPAcc[uiDepth]; } Void setAMPAcc ( UInt uiDepth, Int iAccu ) { assert( uiDepth < g_uiMaxCUDepth); m_iAMPAcc[uiDepth] = iAccu; } // Bit-depth UInt getBitDepth () { return m_uiBitDepth; } Void setBitDepth ( UInt u ) { m_uiBitDepth = u; } UInt getBitIncrement () { return m_uiBitIncrement; } Void setBitIncrement ( UInt u ) { m_uiBitIncrement = u; } #if H0736_AVC_STYLE_QP_RANGE Int getQpBDOffsetY () { return m_qpBDOffsetY; } Void setQpBDOffsetY ( Int value ) { m_qpBDOffsetY = value; } Int getQpBDOffsetC () { return m_qpBDOffsetC; } Void setQpBDOffsetC ( Int value ) { m_qpBDOffsetC = value; } #endif Void setLFCrossSliceBoundaryFlag ( Bool bValue ) { m_bLFCrossSliceBoundaryFlag = bValue; } Bool getLFCrossSliceBoundaryFlag () { return m_bLFCrossSliceBoundaryFlag; } Void setUseDF ( Bool b ) { m_useDF = b; } Bool getUseDF () { return m_useDF; } Void setUseSAO (Bool bVal) {m_bUseSAO = bVal;} Bool getUseSAO () {return m_bUseSAO;} #if HHI_MPI Void setUseMVI (Bool bVal) {m_bUseMVI = bVal;} Bool getUseMVI () {return m_bUseMVI;} #endif UInt getMaxTLayers() { return m_uiMaxTLayers; } Void setMaxTLayers( UInt uiMaxTLayers ) { assert( uiMaxTLayers <= MAX_TLAYER ); m_uiMaxTLayers = uiMaxTLayers; } Bool getTemporalIdNestingFlag() { return m_bTemporalIdNestingFlag; } Void setTemporalIdNestingFlag( Bool bValue ) { m_bTemporalIdNestingFlag = bValue; } UInt getPCMBitDepthLuma () { return m_uiPCMBitDepthLuma; } Void setPCMBitDepthLuma ( UInt u ) { m_uiPCMBitDepthLuma = u; } UInt getPCMBitDepthChroma () { return m_uiPCMBitDepthChroma; } Void setPCMBitDepthChroma ( UInt u ) { m_uiPCMBitDepthChroma = u; } Void setPCMFilterDisableFlag ( Bool bValue ) { m_bPCMFilterDisableFlag = bValue; } Bool getPCMFilterDisableFlag () { return m_bPCMFilterDisableFlag; } Void setLFCrossTileBoundaryFlag ( Bool bValue ) { m_bLFCrossTileBoundaryFlag = bValue; } Bool getLFCrossTileBoundaryFlag () { return m_bLFCrossTileBoundaryFlag; } Void setUniformSpacingIdr ( Int i ) { m_iUniformSpacingIdr = i; } Int getUniformSpacingIdr () { return m_iUniformSpacingIdr; } #if !REMOVE_TILE_DEPENDENCE Void setTileBoundaryIndependenceIdr ( Int i ) { m_iTileBoundaryIndependenceIdr = i; } Int getTileBoundaryIndependenceIdr () { return m_iTileBoundaryIndependenceIdr; } #endif Void setNumColumnsMinus1 ( Int i ) { m_iNumColumnsMinus1 = i; } Int getNumColumnsMinus1 () { return m_iNumColumnsMinus1; } Void setColumnWidth ( UInt* columnWidth ) { if( m_iUniformSpacingIdr == 0 && m_iNumColumnsMinus1 > 0 ) { m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ]; for(Int i=0; i 0 ) { m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ]; for(Int i=0; i 0 ) { m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ]; for(Int i=0; i 0 ) { m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ]; for(Int i=0; i