Changeset 56 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComPic.h
- Timestamp:
- 11 May 2012, 21:20:17 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/TComPic.h
r21 r56 2 2 * License, included below. This software may be subject to other third party 3 3 * and contributor rights, including patent rights, and no such rights are 4 * granted under this license. 5 * 6 * Copyright (c) 2010-201 1,ISO/IEC4 * granted under this license. 5 * 6 * Copyright (c) 2010-2012, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 15 15 * this list of conditions and the following disclaimer in the documentation 16 16 * and/or other materials provided with the distribution. 17 * * Neither the name of the I SO/IEC nor the names of its contributors may17 * * Neither the name of the ITU/ISO/IEC nor the names of its contributors may 18 18 * be used to endorse or promote products derived from this software without 19 19 * specific prior written permission. … … 32 32 */ 33 33 34 35 36 34 /** \file TComPic.h 37 35 \brief picture class (header) … … 46 44 #include "TComPicYuv.h" 47 45 #include "TComBitStream.h" 48 #include "TComMVDRefData.h" 46 47 //! \ingroup TLibCommon 48 //! \{ 49 49 50 50 class SEImessages; … … 58 58 { 59 59 private: 60 UInt m_uiTLayer; // Temporal layer 61 Bool m_bUsedByCurr; // Used by current picture 62 Bool m_bIsLongTerm; // IS long term picture 60 63 TComPicSym* m_apcPicSym; // Symbol 61 64 62 65 TComPicYuv* m_apcPicYuv[2]; // Texture, 0:org / 1:rec 66 63 67 #if DEPTH_MAP_GENERATION 64 68 TComPicYuv* m_pcPredDepthMap; // estimated depth map 65 69 #endif 70 66 71 #if HHI_INTER_VIEW_MOTION_PRED 67 72 TComPicYuv* m_pcOrgDepthMap; // original depth map … … 73 78 TComPicYuv* m_pcPicYuvPred; // Prediction 74 79 TComPicYuv* m_pcPicYuvResi; // Residual 75 #if PARALLEL_MERGED_DEBLK76 TComPicYuv* m_pcPicYuvDeblkBuf;77 #endif78 80 Bool m_bReconstructed; 81 Bool m_bNeededForOutput; 79 82 UInt m_uiCurrSliceIdx; // Index of current slice 80 83 84 Bool m_usedForTMVP; 85 86 Int* m_pSliceSUMap; 87 Bool* m_pbValidSlice; 88 Int m_sliceGranularityForNDBFilter; 89 Bool m_bIndependentSliceBoundaryForNDBFilter; 90 Bool m_bIndependentTileBoundaryForNDBFilter; 91 TComPicYuv* m_pNDBFilterYuvTmp; //!< temporary picture buffer when non-cross slice/tile boundary in-loop filtering is enabled 92 std::vector<std::vector<TComDataCU*> > m_vSliceCUDataLink; 93 81 94 SEImessages* m_SEIs; ///< Any SEI messages that have been received. If !NULL we own the object. 82 83 SliceType m_eSliceType; 84 double m_dQP; 85 Bool m_bReferenced; 86 UInt m_uiColDir; 87 Int m_aiRefPOCList[2][MAX_NUM_REF]; 88 Int m_aiRefViewIdxList[2][MAX_NUM_REF]; 89 Int m_aiNumRefIdx[2]; // for multiple reference of current slice 90 91 Int m_iViewIdx; 95 #if HHI_INTERVIEW_SKIP 96 TComPicYuv* m_pcUsedPelsMap; 97 #endif 92 98 #if SONY_COLPIC_AVAILABILITY 93 99 Int m_iViewOrderIdx; … … 95 101 Int** m_aaiCodedScale; 96 102 Int** m_aaiCodedOffset; 97 98 #if HHI_VSO99 TComMVDRefData m_cReferenceInfo;100 #endif101 #if HHI_INTERVIEW_SKIP102 TComPicYuv* m_pcUsedPelsMap;103 #endif104 105 103 106 104 public: 107 105 TComPic(); 108 106 virtual ~TComPic(); 109 110 111 Void create( Int iWidth, Int iHeight, UInt uiMaxWidth, UInt uiMaxHeight, UInt uiMaxDepth ); 112 Void destroy(); 107 108 Void create( Int iWidth, Int iHeight, UInt uiMaxWidth, UInt uiMaxHeight, UInt uiMaxDepth, Bool bIsVirtual = false ); 109 virtual Void destroy(); 110 111 UInt getTLayer() { return m_uiTLayer; } 112 Void setTLayer( UInt uiTLayer ) { m_uiTLayer = uiTLayer; } 113 114 Bool getUsedByCurr() { return m_bUsedByCurr; } 115 Void setUsedByCurr( Bool bUsed ) { m_bUsedByCurr = bUsed; } 116 Bool getIsLongTerm() { return m_bIsLongTerm; } 117 Void setIsLongTerm( Bool lt ) { m_bIsLongTerm = lt; } 113 118 114 119 TComPicSym* getPicSym() { return m_apcPicSym; } … … 117 122 TComSPS* getSPS() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getSPS(); } 118 123 Int getPOC() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getPOC(); } 119 #if 0 120 Bool getDRBFlag() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getDRBFlag(); } 121 Int getERBIndex() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getERBIndex(); } 122 #endif 124 Int getViewId() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getViewId(); } 123 125 TComDataCU*& getCU( UInt uiCUAddr ) { return m_apcPicSym->getCU( uiCUAddr ); } 124 125 SliceType getSliceType() { return m_eSliceType ;} 126 double getQP() { return m_dQP ;} 127 Bool getReferenced() { return m_bReferenced ;} 128 126 129 127 TComPicYuv* getPicYuvOrg() { return m_apcPicYuv[0]; } 130 128 TComPicYuv* getPicYuvRec() { return m_apcPicYuv[1]; } 131 132 #if DEPTH_MAP_GENERATION133 TComPicYuv* getPredDepthMap() { return m_pcPredDepthMap; }134 #endif135 #if HHI_INTER_VIEW_MOTION_PRED136 TComPicYuv* getOrgDepthMap() { return m_pcOrgDepthMap; }137 #endif138 #if HHI_INTER_VIEW_RESIDUAL_PRED139 TComPicYuv* getResidual() { return m_pcResidual; }140 #endif141 142 129 #if HHI_INTERVIEW_SKIP 143 130 TComPicYuv* getUsedPelsMap() { return m_pcUsedPelsMap; } 144 131 #endif 145 132 133 #if DEPTH_MAP_GENERATION 134 TComPicYuv* getPredDepthMap() { return m_pcPredDepthMap; } 135 #endif 136 137 #if HHI_INTER_VIEW_MOTION_PRED 138 TComPicYuv* getOrgDepthMap() { return m_pcOrgDepthMap; } 139 #endif 140 141 #if HHI_INTER_VIEW_RESIDUAL_PRED 142 TComPicYuv* getResidual() { return m_pcResidual; } 143 #endif 144 145 #if SONY_COLPIC_AVAILABILITY 146 Void setViewOrderIdx(Int i) { m_iViewOrderIdx = i; } 147 Int getViewOrderIdx() { return m_iViewOrderIdx; } 148 #endif 149 Void setScaleOffset( Int** pS, Int** pO ) { m_aaiCodedScale = pS; m_aaiCodedOffset = pO; } 150 Int** getCodedScale () { return m_aaiCodedScale; } 151 Int** getCodedOffset() { return m_aaiCodedOffset; } 146 152 147 153 TComPicYuv* getPicYuvPred() { return m_pcPicYuvPred; } … … 149 155 Void setPicYuvPred( TComPicYuv* pcPicYuv ) { m_pcPicYuvPred = pcPicYuv; } 150 156 Void setPicYuvResi( TComPicYuv* pcPicYuv ) { m_pcPicYuvResi = pcPicYuv; } 151 Void setQP( double dQP ) { m_dQP = dQP; } 152 Void setSliceType( SliceType eSliceType ) { m_eSliceType = eSliceType; } 153 Void setReferenced( Bool bReferenced ) { m_bReferenced = bReferenced; } 154 Void setColDir( UInt uiColDir ) { m_uiColDir = uiColDir; } 155 UInt getColDir() { return m_uiColDir; } 156 Void setRefPOC( Int i, RefPicList e, Int iRefIdx ) { m_aiRefPOCList[e][iRefIdx] = i; } 157 Int getRefPOC( RefPicList e, Int iRefIdx ) { return m_aiRefPOCList[e][iRefIdx]; } 158 Void setRefViewIdx( Int i, RefPicList e, Int iRefIdx ) { m_aiRefViewIdxList[e][iRefIdx] = i; } 159 Int getRefViewIdx( RefPicList e, Int iRefIdx ) { return m_aiRefViewIdxList[e][iRefIdx]; } 160 Int getNumRefs( RefPicList e ) { return m_aiNumRefIdx[e]; } 161 Void setNumRefs( Int i, RefPicList e ) { m_aiNumRefIdx[e] = i; } 162 Void setViewIdx( Int i ) { m_iViewIdx = i; } 163 Int getViewIdx() { return m_iViewIdx; } 164 #if SONY_COLPIC_AVAILABILITY 165 Void setViewOrderIdx(Int i) { m_iViewOrderIdx = i; } 166 Int getViewOrderIdx() { return m_iViewOrderIdx; } 167 #endif 168 169 Void setScaleOffset( Int** pS, Int** pO ) { m_aaiCodedScale = pS; m_aaiCodedOffset = pO; } 170 Int** getCodedScale () { return m_aaiCodedScale; } 171 Int** getCodedOffset() { return m_aaiCodedOffset; } 172 173 #if HHI_VSO 174 TComMVDRefData* getMVDReferenceInfo() { return &m_cReferenceInfo; } 175 #endif 176 157 177 158 UInt getNumCUsInFrame() { return m_apcPicSym->getNumberOfCUsInFrame(); } 178 159 UInt getNumPartInWidth() { return m_apcPicSym->getNumPartInWidth(); } … … 183 164 UInt getMinCUWidth() { return m_apcPicSym->getMinCUWidth(); } 184 165 UInt getMinCUHeight() { return m_apcPicSym->getMinCUHeight(); } 185 166 186 167 UInt getParPelX(UChar uhPartIdx) { return getParPelX(uhPartIdx); } 187 168 UInt getParPelY(UChar uhPartIdx) { return getParPelX(uhPartIdx); } 188 169 189 170 Int getStride() { return m_apcPicYuv[1]->getStride(); } 190 171 Int getCStride() { return m_apcPicYuv[1]->getCStride(); } 191 172 192 173 Void setReconMark (Bool b) { m_bReconstructed = b; } 193 174 Bool getReconMark () { return m_bReconstructed; } 194 175 195 #if AMVP_BUFFERCOMPRESS 196 Void compressMotion(); 197 #endif 176 Void setUsedForTMVP( Bool b ) { m_usedForTMVP = b; } 177 Bool getUsedForTMVP() { return m_usedForTMVP; } 178 179 Void setOutputMark (Bool b) { m_bNeededForOutput = b; } 180 Bool getOutputMark () { return m_bNeededForOutput; } 181 182 Void compressMotion(); 198 183 UInt getCurrSliceIdx() { return m_uiCurrSliceIdx; } 199 184 Void setCurrSliceIdx(UInt i) { m_uiCurrSliceIdx = i; } … … 201 186 Void allocateNewSlice() {m_apcPicSym->allocateNewSlice(); } 202 187 Void clearSliceBuffer() {m_apcPicSym->clearSliceBuffer(); } 203 204 Void addOriginalBuffer ();205 #if PARALLEL_MERGED_DEBLK206 Void addDeblockBuffer ();207 #endif208 #if DEPTH_MAP_GENERATION209 Void addPrdDepthMapBuffer ( UInt uiSubSampExpX, UInt uiSubSampExpY );210 #endif211 #if HHI_INTER_VIEW_MOTION_PRED212 Void addOrgDepthMapBuffer ();213 #endif214 #if HHI_INTER_VIEW_RESIDUAL_PRED215 Void addResidualBuffer ();216 #endif217 218 188 #if HHI_INTERVIEW_SKIP 219 189 Void addUsedPelsMapBuffer (); 220 #endif 221 222 Void removeOriginalBuffer (); 223 #if PARALLEL_MERGED_DEBLK 224 Void removeDeblockBuffer (); 190 Void removeUsedPelsMapBuffer (); 191 #endif 192 193 Void createNonDBFilterInfo (UInt* pSliceStartAddress = NULL, Int numSlices = 1, Int sliceGranularityDepth= 0 194 ,Bool bNDBFilterCrossSliceBoundary = true 195 ,Int numTiles = 1 196 ,Bool bNDBFilterCrossTileBoundary = true); 197 Void createNonDBFilterInfoLCU(Int tileID, Int sliceID, TComDataCU* pcCU, UInt startSU, UInt endSU, Int sliceGranularyDepth, UInt picWidth, UInt picHeight); 198 Void destroyNonDBFilterInfo(); 199 200 #if DEPTH_MAP_GENERATION 201 Void addPrdDepthMapBuffer ( UInt uiSubSampExpX, UInt uiSubSampExpY ); 202 #endif 203 #if HHI_INTER_VIEW_MOTION_PRED 204 Void addOrgDepthMapBuffer (); 205 #endif 206 #if HHI_INTER_VIEW_RESIDUAL_PRED 207 Void addResidualBuffer (); 225 208 #endif 226 209 #if DEPTH_MAP_GENERATION … … 233 216 Void removeResidualBuffer (); 234 217 #endif 235 #if HHI_INTERVIEW_SKIP 236 Void removeUsedPelsMapBuffer (); 237 #endif 238 239 #if PARALLEL_MERGED_DEBLK 240 TComPicYuv* getPicYuvDeblkBuf() { return m_pcPicYuvDeblkBuf; } 241 #endif 242 243 /** transfer ownership of @seis to @this picture */ 218 Bool getValidSlice (Int sliceID) {return m_pbValidSlice[sliceID];} 219 Int getSliceGranularityForNDBFilter () {return m_sliceGranularityForNDBFilter;} 220 Bool getIndependentSliceBoundaryForNDBFilter () {return m_bIndependentSliceBoundaryForNDBFilter;} 221 Bool getIndependentTileBoundaryForNDBFilter () {return m_bIndependentTileBoundaryForNDBFilter; } 222 TComPicYuv* getYuvPicBufferForIndependentBoundaryProcessing() {return m_pNDBFilterYuvTmp;} 223 std::vector<TComDataCU*>& getOneSliceCUDataForNDBFilter (Int sliceID) { return m_vSliceCUDataLink[sliceID];} 224 225 /** transfer ownership of seis to this picture */ 244 226 void setSEIs(SEImessages* seis) { m_SEIs = seis; } 245 227 246 228 /** 247 229 * return the current list of SEI messages associated with this picture. 248 * Pointer is valid until @this->destroy() is called */230 * Pointer is valid until this->destroy() is called */ 249 231 SEImessages* getSEIs() { return m_SEIs; } 250 232 251 233 /** 252 234 * return the current list of SEI messages associated with this picture. 253 * Pointer is valid until @this->destroy() is called */235 * Pointer is valid until this->destroy() is called */ 254 236 const SEImessages* getSEIs() const { return m_SEIs; } 255 237 256 238 };// END CLASS DEFINITION TComPic 257 239 240 //! \} 258 241 259 242 #endif // __TCOMPIC__ 260
Note: See TracChangeset for help on using the changeset viewer.