Changeset 608 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComPic.h


Ignore:
Timestamp:
1 Sep 2013, 22:47:26 (11 years ago)
Author:
tech
Message:

Merged DEV-2.0-dev0@604.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/TComPic.h

    r332 r608  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2013, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    3636*/
    3737
     38
    3839#ifndef __TCOMPIC__
    3940#define __TCOMPIC__
     
    4445#include "TComPicYuv.h"
    4546#include "TComBitStream.h"
     47#include "SEI.h"
    4648
    4749//! \ingroup TLibCommon
    4850//! \{
    49 
    50 class SEImessages;
    5151
    5252// ====================================================================================================================
     
    6161  Bool                  m_bUsedByCurr;            //  Used by current picture
    6262  Bool                  m_bIsLongTerm;            //  IS long term picture
     63  Bool                  m_bIsUsedAsLongTerm;      //  long term picture is used as reference before
    6364  TComPicSym*           m_apcPicSym;              //  Symbol
    6465 
    6566  TComPicYuv*           m_apcPicYuv[2];           //  Texture,  0:org / 1:rec
    6667 
    67 #if DEPTH_MAP_GENERATION
    68   TComPicYuv*           m_pcPredDepthMap;         //  estimated depth map
    69 #if PDM_REMOVE_DEPENDENCE
    70   TComPicYuv*           m_pcPredDepthMap_temp;         //  estimated depth map
    71   Bool                  m_bPDMV2;                       
    72 #endif
    73 #endif
    74 
    75 #if FCO_DVP_REFINE_C0132_C0170
    76   Bool                  m_bDepthCoded;
    77   TComPic*              m_pcRecDepthMap;   
    78 #endif
    79 
    80 #if LG_ZEROINTRADEPTHRESI_A0087
    81   Int                   m_uiIntraPeriod;
    82 #endif
    83 
    84 #if H3D_IVMP
    85   TComPicYuv*           m_pcOrgDepthMap;          //  original depth map
    86 #if H3D_NBDV
    87   Bool        m_checked;
    88   UInt        m_uiRapRefIdx;
    89   RefPicList  m_eRapRefList;
    90   Bool        m_bRapCheck;
    91 #endif
    92 #endif
    93 #if H3D_IVRP
    94   TComPicYuv*           m_pcResidual;             //  residual buffer (coded or inter-view predicted residual)
    95 #endif
    96 
    9768  TComPicYuv*           m_pcPicYuvPred;           //  Prediction
    9869  TComPicYuv*           m_pcPicYuvResi;           //  Residual
     
    10071  Bool                  m_bNeededForOutput;
    10172  UInt                  m_uiCurrSliceIdx;         // Index of current slice
    102 
    103   Bool                  m_usedForTMVP;
    104  
    10573  Int*                  m_pSliceSUMap;
    10674  Bool*                 m_pbValidSlice;
     
    10977  Bool                  m_bIndependentTileBoundaryForNDBFilter;
    11078  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
    11185  std::vector<std::vector<TComDataCU*> > m_vSliceCUDataLink;
    11286
    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;
    12095  Int**                 m_aaiCodedScale;
    12196  Int**                 m_aaiCodedOffset;
    122 
    123 #if H3D_QTL
     97#endif
     98#endif
     99#if H_3D_QTLPC
    124100  Bool                  m_bReduceBitsQTL;
    125101#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
    127113public:
    128114  TComPic();
    129115  virtual ~TComPic();
    130116 
    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                       
    132120  virtual Void  destroy();
    133121 
     
    135123  Void          setTLayer( UInt uiTLayer ) { m_uiTLayer = uiTLayer; }
    136124
     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
    137146  Bool          getUsedByCurr()             { return m_bUsedByCurr; }
    138147  Void          setUsedByCurr( Bool bUsed ) { m_bUsedByCurr = bUsed; }
    139148  Bool          getIsLongTerm()             { return m_bIsLongTerm; }
    140149  Void          setIsLongTerm( Bool lt ) { m_bIsLongTerm = lt; }
     150  Void          setCheckLTMSBPresent     (Bool b ) {m_bCheckLTMSB=b;}
     151  Bool          getCheckLTMSBPresent     () { return m_bCheckLTMSB;}
    141152
    142153  TComPicSym*   getPicSym()           { return  m_apcPicSym;    }
    143154  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_B0046
    146   TComVPS*      getVPS()              { return  m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getVPS();  }
    147 #endif
    148 #if LG_ZEROINTRADEPTHRESI_A0087
    149   Int           getIntraPeriod()                           { return  m_uiIntraPeriod; }
    150   Void          setIntraPeriod(Int uiIntraPeriod)          { m_uiIntraPeriod = uiIntraPeriod; }
    151 #endif
    152   TComSPS*      getSPS()              { return  m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getSPS();  }
    153155  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 ); }
    156157 
    157158  TComPicYuv*   getPicYuvOrg()        { return  m_apcPicYuv[0]; }
    158159  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 
    214161  TComPicYuv*   getPicYuvPred()       { return  m_pcPicYuvPred; }
    215162  TComPicYuv*   getPicYuvResi()       { return  m_pcPicYuvResi; }
     
    234181  Void          setReconMark (Bool b) { m_bReconstructed = b;     }
    235182  Bool          getReconMark ()       { return m_bReconstructed;  }
    236 
    237   Void          setUsedForTMVP( Bool b ) { m_usedForTMVP = b;    }
    238   Bool          getUsedForTMVP()         { return m_usedForTMVP; }
    239 
    240183  Void          setOutputMark (Bool b) { m_bNeededForOutput = b;     }
    241184  Bool          getOutputMark ()       { return m_bNeededForOutput;  }
    242185 
     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   
    243191  Void          compressMotion();
     192#endif
    244193  UInt          getCurrSliceIdx()            { return m_uiCurrSliceIdx;                }
    245194  Void          setCurrSliceIdx(UInt i)      { m_uiCurrSliceIdx = i;                   }
     
    247196  Void          allocateNewSlice()           {m_apcPicSym->allocateNewSlice();         }
    248197  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
    256204                                        ,Int  numTiles = 1
    257205                                        ,Bool bNDBFilterCrossTileBoundary = true);
     
    259207  Void          destroyNonDBFilterInfo();
    260208
    261 #if DEPTH_MAP_GENERATION
    262   Void          addPrdDepthMapBuffer    ( UInt uiSubSampExpX, UInt uiSubSampExpY );
    263 #endif
    264 #if H3D_IVMP
    265   Void          addOrgDepthMapBuffer    ();
    266 #endif
    267 #if H3D_IVRP
    268   Void          addResidualBuffer       ();
    269 #endif
    270 #if DEPTH_MAP_GENERATION
    271   Void          removePrdDepthMapBuffer ();
    272 #endif
    273 #if H3D_IVMP
    274   Void          removeOrgDepthMapBuffer ();
    275 #endif
    276 #if H3D_IVRP
    277   Void          removeResidualBuffer    ();
    278 #endif
    279 
    280209  Bool          getValidSlice                                  (Int sliceID)  {return m_pbValidSlice[sliceID];}
    281   Int           getSliceGranularityForNDBFilter                ()             {return m_sliceGranularityForNDBFilter;}
    282210  Bool          getIndependentSliceBoundaryForNDBFilter        ()             {return m_bIndependentSliceBoundaryForNDBFilter;}
    283211  Bool          getIndependentTileBoundaryForNDBFilter         ()             {return m_bIndependentTileBoundaryForNDBFilter; }
     
    285213  std::vector<TComDataCU*>& getOneSliceCUDataForNDBFilter      (Int sliceID) { return m_vSliceCUDataLink[sliceID];}
    286214
     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
    287235  /** transfer ownership of seis to this picture */
    288   void setSEIs(SEImessages* seis) { m_SEIs = seis; }
     236  void setSEIs(SEIMessages& seis) { m_SEIs = seis; }
    289237
    290238  /**
    291239   * return the current list of SEI messages associated with this picture.
    292240   * Pointer is valid until this->destroy() is called */
    293   SEImessages* getSEIs() { return m_SEIs; }
     241  SEIMessages& getSEIs() { return m_SEIs; }
    294242
    295243  /**
    296244   * return the current list of SEI messages associated with this picture.
    297245   * Pointer is valid until this->destroy() is called */
    298   const SEImessages* getSEIs() const { return m_SEIs; }
     246  const SEIMessages& getSEIs() const { return m_SEIs; }
    299247
    300248};// END CLASS DEFINITION TComPic
    301249
     250#if H_MV
     251class TComPicLists
     252{
     253private:
     254  TComList<TComList<TComPic*>*> m_lists;
     255#if H_3D
     256  TComVPS*                     m_vps;
     257#endif
     258public:
     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
    302277//! \}
    303278
Note: See TracChangeset for help on using the changeset viewer.