Changeset 850 in SHVCSoftware


Ignore:
Timestamp:
1 Aug 2014, 22:23:56 (10 years ago)
Author:
qualcomm
Message:

Constraint checking such when slice_temporal_mvp_enabled_flag is equal to 0, and TemporalId is equal to 0, succeeding pictures shall not use earlier pictures as TMVP reference

Adoption of JCTVC-R0226. (Macro: R0226_SLICE_TMVP)

From: Hendry <fhendry@…>

Location:
branches/SHM-dev/source/Lib
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/Lib/TLibCommon/TComSlice.cpp

    r849 r850  
    106106, m_temporalLayerNonReferenceFlag ( false )
    107107, m_enableTMVPFlag                ( true )
     108#if R0226_SLICE_TMVP
     109, m_availableForTMVPRefFlag       ( true )
     110#endif
    108111#if SVC_EXTENSION
    109112, m_layerId                     ( 0 )
  • branches/SHM-dev/source/Lib/TLibCommon/TComSlice.h

    r849 r850  
    20502050  Int         m_associatedIrapPocBeforeReset;
    20512051#endif
    2052 
    20532052  NalUnitType m_iAssociatedIRAPType;
    20542053  static Int  m_prevTid0POC;
     
    21412140
    21422141  Bool       m_enableTMVPFlag;
     2142#if R0226_SLICE_TMVP
     2143  Bool       m_availableForTMVPRefFlag;
     2144#endif
    21432145
    21442146#if SVC_EXTENSION
     
    24482450  Bool      getEnableTMVPFlag     ()              { return m_enableTMVPFlag;}
    24492451
     2452#if R0226_SLICE_TMVP
     2453  Void      setAvailableForTMVPRefFlag     ( Bool   b )    { m_availableForTMVPRefFlag = b; }
     2454  Bool      getAvailableForTMVPRefFlag     ()              { return m_availableForTMVPRefFlag;}
     2455#endif
     2456
    24502457#if SVC_EXTENSION
    24512458  Bool      setBaseColPic       ( TComList<TComPic*>& rcListPic , UInt refLayerIdc );
  • branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h

    r849 r850  
    5151#define O0137_MAX_LAYERID                1      ///< JCTVC-O0137, JCTVC-O0200, JCTVC-O0223: restrict nuh_layer_id and vps_max_layers_minus1
    5252
     53#define R0226_SLICE_TMVP                 1      ///< JCTVC-R0226, Regarding slice_temporal_mvp_enabled_flag
    5354#define R0279_REP_FORMAT_INBL            1      ///< JCTVC-R0279, For any independent non-base layer the used representation format is the one that is signalled in the active SPS for the layer
    5455#define R0227_VUI_BSP_HRD_FLAG           1      ///< JCTVC-R0227, Conformance checking such that VPS VUI HRD only present if VPS timing info is signalled
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r849 r850  
    29602960    if (rpcSlice->getSPS()->getTMVPFlagsPresent())
    29612961    {
     2962#if R0226_SLICE_TMVP
     2963      READ_FLAG( uiCode, "slice_temporal_mvp_enabled_flag" );
     2964#else
    29622965      READ_FLAG( uiCode, "slice_temporal_mvp_enable_flag" );
     2966#endif
    29632967      rpcSlice->setEnableTMVPFlag( uiCode == 1 ? true : false );
    29642968    }
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r849 r850  
    13131313#endif
    13141314
     1315#if R0226_SLICE_TMVP
     1316  if ( m_apcSlicePilot->getTLayer() == 0 && m_apcSlicePilot->getEnableTMVPFlag() == 0 )
     1317  {
     1318    //update all pics in the DPB such that they cannot be used for TMPV ref
     1319    TComList<TComPic*>::iterator  iterRefPic = m_cListPic.begin(); 
     1320    while( iterRefPic != m_cListPic.end() )
     1321    {
     1322      TComPic *refPic = *iterRefPic;
     1323      if( ( refPic->getLayerId() == m_apcSlicePilot->getLayerId() ) && refPic->getReconMark() )
     1324      {
     1325        for(Int i = refPic->getNumAllocatedSlice()-1; i >= 0; i--)
     1326        {
     1327
     1328          TComSlice *refSlice = refPic->getSlice(i);
     1329          refSlice->setAvailableForTMVPRefFlag( false );
     1330        }
     1331      }
     1332      iterRefPic++;
     1333    }
     1334  }
     1335  m_apcSlicePilot->setAvailableForTMVPRefFlag( true );
     1336#endif
     1337
    13151338  // actual decoding starts here
    13161339    xActivateParameterSets();
     
    19451968      }
    19461969    }
    1947 
     1970   
    19481971    if( m_layerId > 0 && !pcSlice->isIntra() && pcSlice->getEnableTMVPFlag() )
    19491972    {
     
    19511974
    19521975      assert( refPic );
     1976#if R0226_SLICE_TMVP
     1977      assert ( refPic->getPicSym()->getSlice(0)->getAvailableForTMVPRefFlag() == true );
     1978#endif
    19531979
    19541980      // It is a requirement of bitstream conformance when the collocated picture, used for temporal motion vector prediction, is an inter-layer reference picture,
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.h

    r820 r850  
    165165  Bool                    m_isLastNALWasEos;
    166166#endif
    167 
    168167#if SVC_EXTENSION
    169168  static UInt             m_prevPOC;        // POC of the previous slice
  • branches/SHM-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r849 r850  
    20532053      if (pcSlice->getSPS()->getTMVPFlagsPresent())
    20542054      {
     2055#if R0226_SLICE_TMVP
     2056        WRITE_FLAG( pcSlice->getEnableTMVPFlag() ? 1 : 0, "slice_temporal_mvp_enabled_flag" );
     2057#else
    20552058        WRITE_FLAG( pcSlice->getEnableTMVPFlag() ? 1 : 0, "slice_temporal_mvp_enable_flag" );
     2059#endif
    20562060      }
    20572061#if N0065_LAYER_POC_ALIGNMENT && !SHM_FIX7
Note: See TracChangeset for help on using the changeset viewer.