Ignore:
Timestamp:
12 Apr 2018, 11:12:21 (7 years ago)
Author:
tech
Message:
  • Update HM-16.18
  • Cleanups
  • Encoder Extension

-- Representation formats
-- Parameter set sharing
-- GOP configuration

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-16.2-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r1405 r1412  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2016, ITU/ISO/IEC
     6 * Copyright (c) 2010-2017, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    3737#include "NALread.h"
    3838#include "TDecTop.h"
     39#include "TDecConformance.h"
     40
    3941#if NH_MV
    4042ParameterSetManager TDecTop::m_parameterSetManager;
     
    227229  }
    228230
    229 #if !H_3D_FCO
    230231  if ( pcSlice->getIsDepth())
    231232  {
    232233    return;
    233234  }
    234 #endif
    235235
    236236  Int curPoc = pcSlice->getPOC();
     
    376376  , m_warningMessageSkipPicture(false)
    377377#endif
     378#if MCTS_ENC_CHECK
     379  , m_tmctsCheckEnabled(false)
     380#endif
    378381  , m_prefixSEINALUs()
    379382{
     
    471474#endif
    472475  m_cGopDecoder.init( &m_cEntropyDecoder, &m_cSbacDecoder, &m_cBinCABAC, &m_cCavlcDecoder, &m_cSliceDecoder, &m_cLoopFilter, &m_cSAO);
    473   m_cSliceDecoder.init( &m_cEntropyDecoder, &m_cCuDecoder );
     476  m_cSliceDecoder.init( &m_cEntropyDecoder, &m_cCuDecoder, &m_conformanceCheck );
     477#if MCTS_ENC_CHECK
     478  m_cEntropyDecoder.init(&m_cPrediction, &m_conformanceCheck );
     479#else
    474480  m_cEntropyDecoder.init(&m_cPrediction);
     481#endif
    475482}
    476483
     
    506513    rpcPic = new TComPic();
    507514
     515#if REDUCED_ENCODER_MEMORY
     516    rpcPic->create ( sps, pps, false, true);
     517#else
    508518    rpcPic->create ( sps, pps, true);
     519#endif
    509520
    510521    m_cListPic.pushBack( rpcPic );
     
    543554  }
    544555  rpcPic->destroy();
     556#if REDUCED_ENCODER_MEMORY
     557  rpcPic->create ( sps, pps, false, true);
     558#else
    545559  rpcPic->create ( sps, pps, true);
     560#endif
    546561}
    547562
     
    692707
    693708    xParsePrefixSEImessages();
     709#if MCTS_ENC_CHECK
     710    xAnalysePrefixSEImessages();
     711#endif
    694712
    695713#if RExt__HIGH_BIT_DEPTH_SUPPORT==0
     
    726744    sps=pSlice->getSPS();
    727745
    728 #if NH_MV
     746#if NH_MV   
    729747    pSlice->setPic( m_pcPic );
    730748    vps=pSlice->getVPS();
     
    772790    // Recursive structure
    773791    m_cCuDecoder.create ( sps->getMaxTotalCUDepth(), sps->getMaxCUWidth(), sps->getMaxCUHeight(), sps->getChromaFormatIdc() );
     792#if MCTS_ENC_CHECK
     793    m_cCuDecoder.init   ( &m_cEntropyDecoder, &m_cTrQuant, &m_cPrediction, &m_conformanceCheck );
     794#else
    774795    m_cCuDecoder.init   ( &m_cEntropyDecoder, &m_cTrQuant, &m_cPrediction );
     796#endif
    775797    m_cTrQuant.init     ( sps->getMaxTrSize() );
    776798
     
    807829    xParsePrefixSEImessages();
    808830
     831#if MCTS_ENC_CHECK
     832    xAnalysePrefixSEImessages();
     833#endif
    809834    // Check if any new SEI has arrived
    810835    if(!m_SEIs.empty())
     
    845870  }
    846871}
     872
     873#if MCTS_ENC_CHECK
     874Void TDecTop::xAnalysePrefixSEImessages()
     875{
     876  if (m_tmctsCheckEnabled)
     877  {
     878    SEIMessages mctsSEIs = getSeisByType(m_SEIs, SEI::TEMP_MOTION_CONSTRAINED_TILE_SETS);
     879    for (SEIMessages::iterator it = mctsSEIs.begin(); it != mctsSEIs.end(); it++)
     880    {
     881      SEITempMotionConstrainedTileSets *mcts = (SEITempMotionConstrainedTileSets*)(*it);
     882      if (!mcts->m_each_tile_one_tile_set_flag)
     883      {
     884        printf("cannot (yet) check Temporal constrained MCTS if each_tile_one_tile_set_flag is not enabled\n");
     885        exit(1);
     886      }
     887      else
     888      {
     889        printf("MCTS check enabled!\n");
     890        m_conformanceCheck.enableTMctsCheck(true);
     891      }
     892    }
     893  }
     894}
     895#endif
     896
    847897
    848898#if !NH_MV
     
    10231073  xActivateParameterSets();
    10241074
     1075
     1076
     1077  TComSlice* pcSlice = m_pcPic->getPicSym()->getSlice(m_uiSliceIdx);
     1078
     1079  if (TDecConformanceCheck::doChecking())
     1080  {
     1081    m_conformanceCheck.checkSliceActivation(*pcSlice, nalu, *m_pcPic, m_bFirstSliceInBitstream, m_bFirstSliceInSequence, m_bFirstSliceInPicture);
     1082  }
     1083
    10251084  m_bFirstSliceInSequence = false;
    10261085  m_bFirstSliceInBitstream  = false;
    1027 
    1028 
    1029   TComSlice* pcSlice = m_pcPic->getPicSym()->getSlice(m_uiSliceIdx);
    10301086
    10311087#endif
     
    11051161        }
    11061162      }
    1107 #if NH_3D_NBDV
     1163#if NH_3D
    11081164      pcSlice->setDefaultRefView();
    1109 #endif
    1110 #if NH_3D_ARP
    11111165      pcSlice->setPocsInCurrRPSs();
    11121166      pcSlice->setARPStepNum(m_dpb);
     
    11551209      //---------------
    11561210      pcSlice->setRefPOCList();
    1157 #if  NH_3D_TMVP
     1211#if  NH_3D
    11581212      if(pcSlice->getLayerId())
    11591213      {
     
    12531307  pps->setLayerId( getLayerId() );
    12541308#endif
    1255 #if NH_3D_DLT
     1309#if NH_3D
    12561310  // create mapping from depth layer indexes to layer ids
    12571311  Int j=0;
     
    18631917    {
    18641918      Int profileIdc = vps->getPTL( vps->getProfileTierLevelIdx( m_targetOlsIdx, lIdx ) )->getGeneralPTL()->getProfileIdc();
    1865       assert( profileIdc == 1 || profileIdc == 6 || profileIdc == 8 );
    1866 
    1867       if (  profileIdc == 6 )
     1919
     1920#if !NH_MV_ALLOW_NON_CONFORMING
     1921      assert( profileIdc == Profile::MAIN || profileIdc == Profile::MULTIVIEWMAIN|| profileIdc == Profile::MAIN3D );
     1922#else
     1923      assert( profileIdc == Profile::MAIN || profileIdc == Profile::MAIN10 || profileIdc == Profile::MULTIVIEWMAIN|| profileIdc == Profile::MAIN3D || profileIdc == Profile::NONE || profileIdc == Profile::MULTIVIEWMAIN_NONCONFORMING || profileIdc == Profile::MAIN3D_NONCONFORMING  );
     1924#endif
     1925
     1926      if (   profileIdc == Profile::MULTIVIEWMAIN
     1927#if NH_MV_ALLOW_NON_CONFORMING
     1928      ||     profileIdc == Profile::MULTIVIEWMAIN_NONCONFORMING
     1929#endif
     1930        )
    18681931      {
    18691932        m_decodingProcess = ANNEX_G;
     
    18731936        m_decodingProcess = ANNEX_H;
    18741937      }
    1875       else if (profileIdc == 8 )
     1938      else if (profileIdc == Profile::MAIN3D
     1939#if NH_MV_ALLOW_NON_CONFORMING
     1940      ||     profileIdc == Profile::MAIN3D_NONCONFORMING
     1941#endif 
     1942        )
    18761943      {
    18771944        m_decodingProcess = ANNEX_I;
Note: See TracChangeset for help on using the changeset viewer.