Changeset 608 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComPic.h
- Timestamp:
- 1 Sep 2013, 22:47:26 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/TComPic.h
r332 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 * … … 36 36 */ 37 37 38 38 39 #ifndef __TCOMPIC__ 39 40 #define __TCOMPIC__ … … 44 45 #include "TComPicYuv.h" 45 46 #include "TComBitStream.h" 47 #include "SEI.h" 46 48 47 49 //! \ingroup TLibCommon 48 50 //! \{ 49 50 class SEImessages;51 51 52 52 // ==================================================================================================================== … … 61 61 Bool m_bUsedByCurr; // Used by current picture 62 62 Bool m_bIsLongTerm; // IS long term picture 63 Bool m_bIsUsedAsLongTerm; // long term picture is used as reference before 63 64 TComPicSym* m_apcPicSym; // Symbol 64 65 65 66 TComPicYuv* m_apcPicYuv[2]; // Texture, 0:org / 1:rec 66 67 67 #if DEPTH_MAP_GENERATION68 TComPicYuv* m_pcPredDepthMap; // estimated depth map69 #if PDM_REMOVE_DEPENDENCE70 TComPicYuv* m_pcPredDepthMap_temp; // estimated depth map71 Bool m_bPDMV2;72 #endif73 #endif74 75 #if FCO_DVP_REFINE_C0132_C017076 Bool m_bDepthCoded;77 TComPic* m_pcRecDepthMap;78 #endif79 80 #if LG_ZEROINTRADEPTHRESI_A008781 Int m_uiIntraPeriod;82 #endif83 84 #if H3D_IVMP85 TComPicYuv* m_pcOrgDepthMap; // original depth map86 #if H3D_NBDV87 Bool m_checked;88 UInt m_uiRapRefIdx;89 RefPicList m_eRapRefList;90 Bool m_bRapCheck;91 #endif92 #endif93 #if H3D_IVRP94 TComPicYuv* m_pcResidual; // residual buffer (coded or inter-view predicted residual)95 #endif96 97 68 TComPicYuv* m_pcPicYuvPred; // Prediction 98 69 TComPicYuv* m_pcPicYuvResi; // Residual … … 100 71 Bool m_bNeededForOutput; 101 72 UInt m_uiCurrSliceIdx; // Index of current slice 102 103 Bool m_usedForTMVP;104 105 73 Int* m_pSliceSUMap; 106 74 Bool* m_pbValidSlice; … … 109 77 Bool m_bIndependentTileBoundaryForNDBFilter; 110 78 TComPicYuv* m_pNDBFilterYuvTmp; //!< temporary picture buffer when non-cross slice/tile boundary in-loop filtering is enabled 79 Bool m_bCheckLTMSB; 80 81 Int m_numReorderPics[MAX_TLAYER]; 82 Window m_conformanceWindow; 83 Window m_defaultDisplayWindow; 84 111 85 std::vector<std::vector<TComDataCU*> > m_vSliceCUDataLink; 112 86 113 SEImessages* m_SEIs; ///< Any SEI messages that have been received. If !NULL we own the object. 114 #if HHI_INTERVIEW_SKIP 115 TComPicYuv* m_pcUsedPelsMap; 116 #endif 117 #if INTER_VIEW_VECTOR_SCALING_C0115 118 Int m_iViewOrderIdx; // will be changed to view_id 119 #endif 87 SEIMessages m_SEIs; ///< Any SEI messages that have been received. If !NULL we own the object. 88 89 #if H_MV 90 Int m_layerId; 91 Int m_viewId; 92 #if H_3D 93 Int m_viewIndex; 94 Bool m_isDepth; 120 95 Int** m_aaiCodedScale; 121 96 Int** m_aaiCodedOffset; 122 123 #if H3D_QTL 97 #endif 98 #endif 99 #if H_3D_QTLPC 124 100 Bool m_bReduceBitsQTL; 125 101 #endif 126 102 #if H_3D_NBDV 103 UInt m_uiRapRefIdx; 104 RefPicList m_eRapRefList; 105 Int m_iNumDdvCandPics; 106 #endif 107 #if MTK_NBDV_TN_FIX_E0172 108 Bool m_abTIVRINCurrRL [2][2][MAX_NUM_REF]; //whether an inter-view reference picture with the same view index of the inter-view reference picture of temporal reference picture of current picture exists in current reference picture lists 109 #endif 110 #if MTK_TEXTURE_MRGCAND_BUGFIX_E0182 111 Int m_aiTexToDepRef [2][MAX_NUM_REF]; 112 #endif 127 113 public: 128 114 TComPic(); 129 115 virtual ~TComPic(); 130 116 131 Void create( Int iWidth, Int iHeight, UInt uiMaxWidth, UInt uiMaxHeight, UInt uiMaxDepth, Bool bIsVirtual = false ); 117 Void create( Int iWidth, Int iHeight, UInt uiMaxWidth, UInt uiMaxHeight, UInt uiMaxDepth, Window &conformanceWindow, Window &defaultDisplayWindow, 118 Int *numReorderPics, Bool bIsVirtual = false ); 119 132 120 virtual Void destroy(); 133 121 … … 135 123 Void setTLayer( UInt uiTLayer ) { m_uiTLayer = uiTLayer; } 136 124 125 #if H_MV 126 Void setLayerId ( Int layerId ) { m_layerId = layerId; } 127 Int getLayerId () { return m_layerId; } 128 Void setViewId ( Int viewId ) { m_viewId = viewId; } 129 Int getViewId () { return m_viewId; } 130 #if H_3D 131 Void setViewIndex ( Int viewIndex ) { m_viewIndex = viewIndex; } 132 Int getViewIndex () { return m_viewIndex; } 133 134 Void setIsDepth ( Bool isDepth ) { m_isDepth = isDepth; } 135 Bool getIsDepth () { return m_isDepth; } 136 137 Void setScaleOffset( Int** pS, Int** pO ) { m_aaiCodedScale = pS; m_aaiCodedOffset = pO; } 138 Int** getCodedScale () { return m_aaiCodedScale; } 139 Int** getCodedOffset() { return m_aaiCodedOffset; } 140 #endif 141 #endif 142 #if H_3D_QTLPC 143 Bool getReduceBitsFlag () { return m_bReduceBitsQTL; } 144 Void setReduceBitsFlag ( Bool bFlag ) { m_bReduceBitsQTL = bFlag; } 145 #endif 137 146 Bool getUsedByCurr() { return m_bUsedByCurr; } 138 147 Void setUsedByCurr( Bool bUsed ) { m_bUsedByCurr = bUsed; } 139 148 Bool getIsLongTerm() { return m_bIsLongTerm; } 140 149 Void setIsLongTerm( Bool lt ) { m_bIsLongTerm = lt; } 150 Void setCheckLTMSBPresent (Bool b ) {m_bCheckLTMSB=b;} 151 Bool getCheckLTMSBPresent () { return m_bCheckLTMSB;} 141 152 142 153 TComPicSym* getPicSym() { return m_apcPicSym; } 143 154 TComSlice* getSlice(Int i) { return m_apcPicSym->getSlice(i); } 144 TComSlice* getCurrSlice() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx); }145 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046146 TComVPS* getVPS() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getVPS(); }147 #endif148 #if LG_ZEROINTRADEPTHRESI_A0087149 Int getIntraPeriod() { return m_uiIntraPeriod; }150 Void setIntraPeriod(Int uiIntraPeriod) { m_uiIntraPeriod = uiIntraPeriod; }151 #endif152 TComSPS* getSPS() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getSPS(); }153 155 Int getPOC() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getPOC(); } 154 Int getViewId() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getViewId(); } 155 TComDataCU*& getCU( UInt uiCUAddr ){ return m_apcPicSym->getCU( uiCUAddr ); } 156 TComDataCU*& getCU( UInt uiCUAddr ) { return m_apcPicSym->getCU( uiCUAddr ); } 156 157 157 158 TComPicYuv* getPicYuvOrg() { return m_apcPicYuv[0]; } 158 159 TComPicYuv* getPicYuvRec() { return m_apcPicYuv[1]; } 159 #if HHI_INTERVIEW_SKIP 160 TComPicYuv* getUsedPelsMap() { return m_pcUsedPelsMap; } 161 #endif 162 163 #if DEPTH_MAP_GENERATION 164 TComPicYuv* getPredDepthMap() { return m_pcPredDepthMap; } 165 #if PDM_REMOVE_DEPENDENCE 166 TComPicYuv* getPredDepthMapTemp() { return m_pcPredDepthMap_temp; } 167 Void setStoredPDMforV2 (Bool flag) { m_bPDMV2 = flag;} 168 Bool getStoredPDMforV2 () { return m_bPDMV2;} 169 #endif 170 171 #endif 172 #if H3D_IVMP 173 TComPicYuv* getOrgDepthMap() { return m_pcOrgDepthMap; } 174 #if H3D_NBDV 175 Void setCandPicCheckedFlag (Bool bchecked) { m_checked = bchecked; } 176 Bool getCandPicCheckedFlag () { return m_checked;} 177 #endif 178 #endif 179 180 #if FCO_DVP_REFINE_C0132_C0170 181 void setRecDepthMap(TComPic * pRecPic) { m_pcRecDepthMap = pRecPic; } 182 TComPic * getRecDepthMap() { return m_pcRecDepthMap; } 183 void setDepthCoded(Bool flag) { m_bDepthCoded = flag; } 184 Bool getDepthCoded() { return m_bDepthCoded; } 185 #endif 186 187 #if H3D_IVRP 188 TComPicYuv* getResidual() { return m_pcResidual; } 189 #endif 190 #if H3D_NBDV 191 UInt getRapRefIdx() {return m_uiRapRefIdx;} 192 RefPicList getRapRefList() {return m_eRapRefList;} 193 Void setRapRefIdx(UInt uiRapRefIdx) {m_uiRapRefIdx = uiRapRefIdx;} 194 Void setRapRefList(RefPicList eRefPicList) {m_eRapRefList = eRefPicList;} 195 Bool getRapbCheck() {return m_bRapCheck;} 196 Void setRapbCheck(Bool bCheck) {m_bRapCheck = bCheck;} 197 Bool getDisCandRefPictures(Int iColPOC); 198 #endif 199 200 #if INTER_VIEW_VECTOR_SCALING_C0115 201 Void setViewOrderIdx(Int i) { m_iViewOrderIdx = i; } // will be changed to view_id 202 Int getViewOrderIdx() { return m_iViewOrderIdx; } // will be changed to view_id 203 #endif 204 205 #if H3D_QTL 206 Bool getReduceBitsFlag () { return m_bReduceBitsQTL; } 207 Void setReduceBitsFlag ( Bool bFlag ) { m_bReduceBitsQTL = bFlag; } 208 #endif 209 210 Void setScaleOffset( Int** pS, Int** pO ) { m_aaiCodedScale = pS; m_aaiCodedOffset = pO; } 211 Int** getCodedScale () { return m_aaiCodedScale; } 212 Int** getCodedOffset() { return m_aaiCodedOffset; } 213 160 214 161 TComPicYuv* getPicYuvPred() { return m_pcPicYuvPred; } 215 162 TComPicYuv* getPicYuvResi() { return m_pcPicYuvResi; } … … 234 181 Void setReconMark (Bool b) { m_bReconstructed = b; } 235 182 Bool getReconMark () { return m_bReconstructed; } 236 237 Void setUsedForTMVP( Bool b ) { m_usedForTMVP = b; }238 Bool getUsedForTMVP() { return m_usedForTMVP; }239 240 183 Void setOutputMark (Bool b) { m_bNeededForOutput = b; } 241 184 Bool getOutputMark () { return m_bNeededForOutput; } 242 185 186 Void setNumReorderPics(Int i, UInt tlayer) { m_numReorderPics[tlayer] = i; } 187 Int getNumReorderPics(UInt tlayer) { return m_numReorderPics[tlayer]; } 188 #if MTK_SONY_PROGRESSIVE_MV_COMPRESSION_E0170 189 Void compressMotion(int scale); 190 #else 243 191 Void compressMotion(); 192 #endif 244 193 UInt getCurrSliceIdx() { return m_uiCurrSliceIdx; } 245 194 Void setCurrSliceIdx(UInt i) { m_uiCurrSliceIdx = i; } … … 247 196 Void allocateNewSlice() {m_apcPicSym->allocateNewSlice(); } 248 197 Void clearSliceBuffer() {m_apcPicSym->clearSliceBuffer(); } 249 #if HHI_INTERVIEW_SKIP 250 Void addUsedPelsMapBuffer (); 251 Void removeUsedPelsMapBuffer (); 252 #endif 253 254 Void createNonDBFilterInfo (UInt* pSliceStartAddress = NULL, Int numSlices = 1, Int sliceGranularityDepth= 0 255 ,Bool bNDBFilterCrossSliceBoundary = true 198 199 Window& getConformanceWindow() { return m_conformanceWindow; } 200 Window& getDefDisplayWindow() { return m_defaultDisplayWindow; } 201 202 Void createNonDBFilterInfo (std::vector<Int> sliceStartAddress, Int sliceGranularityDepth 203 ,std::vector<Bool>* LFCrossSliceBoundary 256 204 ,Int numTiles = 1 257 205 ,Bool bNDBFilterCrossTileBoundary = true); … … 259 207 Void destroyNonDBFilterInfo(); 260 208 261 #if DEPTH_MAP_GENERATION262 Void addPrdDepthMapBuffer ( UInt uiSubSampExpX, UInt uiSubSampExpY );263 #endif264 #if H3D_IVMP265 Void addOrgDepthMapBuffer ();266 #endif267 #if H3D_IVRP268 Void addResidualBuffer ();269 #endif270 #if DEPTH_MAP_GENERATION271 Void removePrdDepthMapBuffer ();272 #endif273 #if H3D_IVMP274 Void removeOrgDepthMapBuffer ();275 #endif276 #if H3D_IVRP277 Void removeResidualBuffer ();278 #endif279 280 209 Bool getValidSlice (Int sliceID) {return m_pbValidSlice[sliceID];} 281 Int getSliceGranularityForNDBFilter () {return m_sliceGranularityForNDBFilter;}282 210 Bool getIndependentSliceBoundaryForNDBFilter () {return m_bIndependentSliceBoundaryForNDBFilter;} 283 211 Bool getIndependentTileBoundaryForNDBFilter () {return m_bIndependentTileBoundaryForNDBFilter; } … … 285 213 std::vector<TComDataCU*>& getOneSliceCUDataForNDBFilter (Int sliceID) { return m_vSliceCUDataLink[sliceID];} 286 214 215 #if H_MV 216 Void print( Bool legend ); 217 #endif 218 #if H_3D_NBDV 219 Int getNumDdvCandPics() {return m_iNumDdvCandPics; } 220 Int getDisCandRefPictures(Int iColPOC); 221 Void setRapRefIdx(UInt uiRapRefIdx) {m_uiRapRefIdx = uiRapRefIdx;} 222 Void setRapRefList(RefPicList eRefPicList) {m_eRapRefList = eRefPicList;} 223 Void setNumDdvCandPics (Int i) {m_iNumDdvCandPics = i; } 224 UInt getRapRefIdx() {return m_uiRapRefIdx; } 225 RefPicList getRapRefList() {return m_eRapRefList; } 226 #endif 227 #if MTK_NBDV_TN_FIX_E0172 228 Void checkTemporalIVRef(); 229 Bool isTempIVRefValid(Int currCandPic, Int iTempRefDir, Int iTempRefIdx); 230 #endif 231 #if MTK_TEXTURE_MRGCAND_BUGFIX_E0182 232 Void checkTextureRef( ); 233 Int isTextRefValid(Int iTextRefDir, Int iTextRefIdx); 234 #endif 287 235 /** transfer ownership of seis to this picture */ 288 void setSEIs(SEI messages*seis) { m_SEIs = seis; }236 void setSEIs(SEIMessages& seis) { m_SEIs = seis; } 289 237 290 238 /** 291 239 * return the current list of SEI messages associated with this picture. 292 240 * Pointer is valid until this->destroy() is called */ 293 SEI messages*getSEIs() { return m_SEIs; }241 SEIMessages& getSEIs() { return m_SEIs; } 294 242 295 243 /** 296 244 * return the current list of SEI messages associated with this picture. 297 245 * Pointer is valid until this->destroy() is called */ 298 const SEI messages*getSEIs() const { return m_SEIs; }246 const SEIMessages& getSEIs() const { return m_SEIs; } 299 247 300 248 };// END CLASS DEFINITION TComPic 301 249 250 #if H_MV 251 class TComPicLists 252 { 253 private: 254 TComList<TComList<TComPic*>*> m_lists; 255 #if H_3D 256 TComVPS* m_vps; 257 #endif 258 public: 259 Void push_back( TComList<TComPic*>* list ) { m_lists.push_back( list ); } 260 Int size () { return (Int) m_lists.size(); } 261 #if H_3D_ARP 262 TComList<TComPic*>* getPicList ( Int layerIdInNuh ); 263 #endif 264 TComPic* getPic ( Int layerIdInNuh, Int poc ); 265 TComPicYuv* getPicYuv( Int layerIdInNuh, Int poc, Bool recon ); 266 #if H_3D 267 Void setVPS ( TComVPS* vps ) { m_vps = vps; }; 268 TComPic* getPic ( Int viewIndex, Bool depthFlag, Int poc ); 269 TComPicYuv* getPicYuv( Int viewIndex, Bool depthFlag, Int poc, Bool recon ); 270 #endif 271 272 Void print( ); 273 274 }; // END CLASS DEFINITION TComPicLists 275 276 #endif 302 277 //! \} 303 278
Note: See TracChangeset for help on using the changeset viewer.