Ignore:
Timestamp:
11 Feb 2014, 23:53:38 (11 years ago)
Author:
qualcomm
Message:

JCTVC-P0192: Aligned bumping of sub-DPBs (MACRO: ALIGNED_BUMPING)

Added support to align the bumping process across layers in an access unit, and also clearly invoke the bumping process as given in Annex C. Support for NoOutputOfPriorPicsFlag will be added in a later patch.

From: Adarsh K. Ramasubramonian <aramasub@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-5.1-dev/source/App/TAppDecoder/TAppDecTop.h

    r595 r612  
    5555// Class definition
    5656// ====================================================================================================================
    57 
     57#if ALIGNED_BUMPING
     58struct DpbStatus;
     59#endif
    5860/// decoder application class
    5961class TAppDecTop : public TAppDecCfg
     
    98100#endif
    99101  Bool  isNaluWithinTargetDecLayerIdSet ( InputNALUnit* nalu ); ///< check whether given Nalu is within targetDecLayerIdSet
     102#if ALIGNED_BUMPING
     103  Void checkOutputBeforeDecoding(Int layerIdx);
     104  Void checkOutputAfterDecoding();
     105  Void flushAllPictures(Bool outputPictures);
     106  Void flushAllPictures(Int layerId, Bool outputPictures);
     107
     108  Void xOutputAndMarkPic( TComPic *pic, const Char *reconFile, const Int layerID, Int &pocLastDisplay, DpbStatus &dpbStatus);
     109  Void xFindDPBStatus( std::vector<Int> &listOfPocs
     110                            , std::vector<Int> *listOfPocsInEachLayer
     111                            , std::vector<Int> *listOfPocsPositionInEachLayer
     112                            , DpbStatus &dpbStatus
     113                            );
     114
     115  Bool ifInvokeBumpingBeforeDecoding( const DpbStatus &dpbStatus, const DpbStatus &dpbLimit, const Int layerIdx, const Int subDpbIdx );
     116  Bool ifInvokeBumpingAfterDecoding ( const DpbStatus &dpbStatus, const DpbStatus &dpbLimit );
     117  Void bumpingProcess(std::vector<Int> &listOfPocs, std::vector<Int> *listOfPocsInEachLayer, std::vector<Int> *listOfPocsPositionInEachLayer, DpbStatus &dpbStatus);
     118  Void emptyUnusedPicturesNotNeededForOutput();
     119  Void markAllPicturesAsErased();
     120  Void markAllPicturesAsErased(Int layerIdx);
     121  TComVPS* findDpbParametersFromVps(std::vector<Int> const &listOfPocs, std::vector<Int> const *listOfPocsInEachLayer, std::vector<Int> const *listOfPocsPositionInEachLayer, DpbStatus &maxDpbLimit);
     122#endif
    100123};
    101124
     125#if ALIGNED_BUMPING
     126struct DpbStatus
     127{
     128  // Number of AUs and pictures
     129  Int m_numAUsNotDisplayed;
     130  Int m_numPicsNotDisplayedInLayer[MAX_LAYERS];
     131  Int m_numPicsInLayer[MAX_LAYERS];   // Pictures marked as used_for_reference or needed for output in the layer
     132  Int m_numPicsInSubDpb[MAX_LAYERS];  // Pictures marked as used_for_reference or needed for output in the sub-DPB
     133  Bool m_maxLatencyIncrease;
     134  Int m_maxLatencyPictures;
     135 
     136  Int m_numSubDpbs;
     137  Int m_numLayers;
     138
     139  DpbStatus()
     140  {
     141    init();
     142  }
     143  Void init()
     144  {
     145    m_numAUsNotDisplayed = 0;
     146    m_maxLatencyIncrease  = false;
     147    m_maxLatencyPictures  = 0;
     148    ::memset( m_numPicsInLayer,  0, sizeof(m_numPicsInLayer)  );
     149    ::memset( m_numPicsInSubDpb, 0, sizeof(m_numPicsInSubDpb) );
     150    ::memset(m_numPicsNotDisplayedInLayer, 0, sizeof(m_numPicsNotDisplayedInLayer) );
     151    m_numSubDpbs = -1;
     152    m_numLayers = -1;
     153  }
     154};
     155#endif
    102156//! \}
    103157
Note: See TracChangeset for help on using the changeset viewer.