Changeset 210 in 3DVCSoftware for trunk/source/Lib/TLibDecoder


Ignore:
Timestamp:
11 Dec 2012, 18:52:43 (12 years ago)
Author:
tech
Message:

Reintegrated /branches/HTM-5.0-dev0 rev. 207.

Location:
trunk/source/Lib/TLibDecoder
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibDecoder/NALread.cpp

    r77 r210  
    132132#endif
    133133
     134#if QC_MVHEVC_B0046
     135  //nalu.m_layerId    = bs.read(6);
     136  nalu.m_layerId    = bs.read(5);
     137  nalu.m_temporalId = bs.read(3) - 1;
     138#else
    134139#if H0388
    135140  nalu.m_temporalId = bs.read(3);
     
    145150  if ( nalu.m_temporalId )
    146151  {
     152#if QC_REM_IDV_B0046
     153    assert( nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_CRA && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_IDR);
     154#else
    147155    assert( nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_CRA && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_IDR && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_IDV );
     156#endif
    148157  }
    149158#endif
     
    154163  case NAL_UNIT_CODED_SLICE_IDR:
    155164#if H0566_TLA
     165#if !QC_REM_IDV_B0046
    156166  case NAL_UNIT_CODED_SLICE_IDV:
     167#endif
    157168  case NAL_UNIT_CODED_SLICE_CRA:
    158169  case NAL_UNIT_CODED_SLICE_TLA:
     
    175186      if (nalu.m_temporalId == 0)
    176187      {
     188#if QC_REM_IDV_B0046
     189        assert(nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR);
     190#else
    177191        assert(nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDV );
     192#endif
    178193      }
    179194      else
     
    190205  }
    191206#endif
     207#endif
    192208}
    193209//! \}
  • trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r189 r210  
    13381338  }
    13391339}
    1340 
     1340#if QC_MVHEVC_B0046
     1341Void TDecCavlc::parseVPS(TComVPS* pcVPS)
     1342{
     1343  UInt  uiCode;
     1344  READ_CODE( 4, uiCode,  "video_parameter_set_id"   );       pcVPS->setVPSId( uiCode );
     1345  READ_FLAG( uiCode,     "temporal_id_nesting_flag" );       pcVPS->setTemporalNestingFlag( uiCode ? true:false );
     1346  READ_CODE( 2, uiCode,  "vps_reserved_zero_2bits" );         assert( !uiCode );
     1347  READ_CODE( 6, uiCode,  "vps_max_layers_minus1" );               pcVPS->setMaxLayers( uiCode + 1 );
     1348  READ_CODE( 3, uiCode,  "vps_max_sub_layers_minus1" );      pcVPS->setMaxTLayers( uiCode + 1 );
     1349  READ_CODE( 12, uiCode, "vps_extension_offset"      );      assert( !uiCode );
     1350  for(UInt i = 0; i <= pcVPS->getMaxTLayers()-1; i++)
     1351  {
     1352    READ_UVLC( uiCode,  "max_dec_pic_buffering[i]" );     pcVPS->setMaxDecPicBuffering( uiCode, i );
     1353    READ_UVLC( uiCode,  "num_reorder_pics[i]" );          pcVPS->setNumReorderPics( uiCode, i );
     1354    READ_UVLC( uiCode,  "max_latency_increase[i]" );      pcVPS->setMaxLatencyIncrease( uiCode, i );
     1355  }
     1356  READ_UVLC( uiCode,                 "vps_num_hrd_parameters"   ); pcVPS->setNumHRDParameters(uiCode);
     1357  assert(pcVPS->getNumHRDParameters()==0);
     1358  for ( UInt i = 0; i < pcVPS->getNumHRDParameters(); i ++)
     1359  {
     1360   //   if( i > 0 ) 
     1361    //{
     1362    //  READ_UVLC (0, "op_num_layer_id_values_minus1[ opIdx ]");
     1363    //  for( i = 0; i <= op_num_layer_id_values_minus1[ opIdx ]; i++ ) 
     1364    //    READ_UVLC(0, 6, "op_layer_id[ opIdx ][ i ]");
     1365    //} 
     1366    //hrd_parameters( i  = =  0, vps_max_sub_layers_minus1 ); 
     1367  }
     1368 
     1369  READ_CODE( 1, uiCode, "bit_equal_to_one" );             assert( uiCode );
     1370  //vps_extension_byte_alignment_reserved_one_bit
     1371  xReadVPSAlignOne();
     1372  READ_CODE( 8, uiCode, "num_additional_layer_operation_points" );     pcVPS->setNumAddiLayerOperationPoints( uiCode );
     1373  READ_CODE( 8, uiCode, "num_additional_profile_level_sets"     );     pcVPS->setNumAddiProLevelSets( uiCode);
     1374
     1375
     1376  for(UInt i=0; i <= pcVPS->getMaxLayers()-1; i++)
     1377  {
     1378    READ_CODE( 4,  uiCode,             "num_types_zero_4bits[i]" );   assert( !uiCode );
     1379    READ_CODE( 4,  uiCode,             "type_zero_4bits[i]"      );   assert( !uiCode );
     1380    READ_CODE( 8,  uiCode,             "view_id[i]" );                pcVPS->setViewId(uiCode, i);
     1381    // WRITE_SVLC( pcVPS->getViewOrderIdx(i),                  "view_order_idx[i]" );
     1382    if(i)
     1383    {
     1384      READ_CODE( 6, uiCode,  "num_direct_ref_layers[ i ]" );    pcVPS->setNumDirectRefLayer(uiCode, i);
     1385      for (UInt j = 0; j< pcVPS->getNumDirectRefLayer(i); j++)
     1386      {
     1387        READ_CODE( 6, uiCode, "ref_layer_id[i][j]" );         pcVPS->setDirectRefLayerId (uiCode, i, j);
     1388      }
     1389    }
     1390  }
     1391  for( UInt i=1; i<=pcVPS->getNumAddiProLevelSets(); i++)
     1392  {
     1393    //profile_tier_level
     1394  }
     1395  for( UInt i=1; i<= pcVPS->getNumAddiLayerOperationPoints(); i++)
     1396  {   
     1397    if(pcVPS->getMaxLayers() == 3)
     1398    {
     1399      pcVPS->setNumOpLayerIdMinus1((i < pcVPS->getNumAddiLayerOperationPoints() ? 1: 2), (i-1));
     1400    }
     1401    else if( i==1 )
     1402    {
     1403      assert(pcVPS->getNumAddiLayerOperationPoints()==1);
     1404      pcVPS->setNumOpLayerIdMinus1(pcVPS->getMaxLayers()-1, (i-1));
     1405    }
     1406    READ_UVLC( uiCode,           "op_num_layer_id_values_minus1[ opIdx ]" ); pcVPS->setNumOpLayerIdMinus1(uiCode, i-1);
     1407    for(UInt j = 0; j <= pcVPS->getNumOpLayerIdMinus1(i-1); j++ )
     1408    {
     1409      READ_UVLC( uiCode,           "op_layer_id[ opIdx ][ i ]" ); pcVPS->setNumOpLayerId(uiCode, i-1, j);
     1410    }
     1411    if (pcVPS->getNumAddiProLevelSets())
     1412    {
     1413      //profile_level_idx[ i ]
     1414    }
     1415  }
     1416  return;
     1417}
     1418#else
    13411419#if VIDYO_VPS_INTEGRATION
    13421420Void TDecCavlc::parseVPS(TComVPS* pcVPS)
     
    13891467
    13901468#endif
    1391 
     1469#endif
    13921470#if HHI_MPI
    13931471Void TDecCavlc::parseSPS(TComSPS* pcSPS, Bool bIsDepth)
     
    14011479 
    14021480  UInt  uiCode;
     1481#if !QC_MVHEVC_B0046
    14031482  Int   iCode;
    1404 
     1483#endif
    14051484  READ_CODE( 8,  uiCode, "profile_idc" );                        pcSPS->setProfileIdc( uiCode );
    14061485  READ_CODE( 8,  uiCode, "reserved_zero_8bits" );
     
    16451724#endif
    16461725  READ_FLAG( uiCode, "sps_extension_flag");
     1726#if !QC_MVHEVC_B0046
    16471727  if(uiCode)
    16481728  {
     
    18031883    }
    18041884  }
     1885#endif
    18051886}
    18061887
     
    19071988    }
    19081989#endif
     1990#if QC_REM_IDV_B0046
     1991#if !QC_MVHEVC_B0046
     1992  if(rpcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getSPS()->getViewId() == 0)
     1993#else
     1994  if(rpcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getViewId() == 0)
     1995#endif
     1996#else
    19091997    if(rpcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR)
     1998#endif
    19101999    {
    19112000      READ_UVLC( uiCode, "idr_pic_id" );  //ignored
     
    19412030      }
    19422031      rpcSlice->setPOC( iPOCmsb+iPOClsb );
    1943 
     2032#if QC_REM_IDV_B0046
     2033#if !QC_MVHEVC_B0046
     2034      if( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR &&  rpcSlice->getSPS()->getViewId() && rpcSlice->getPOC() == 0 )
     2035#else
     2036      if( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR &&  rpcSlice->getViewId() && rpcSlice->getPOC() == 0 )
     2037#endif
     2038#else
    19442039      if( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV && rpcSlice->getPOC() == 0 )
     2040#endif
    19452041      {
    19462042        TComReferencePictureSet* rps = rpcSlice->getLocalRPS();
     
    20822178    {
    20832179#if H0412_REF_PIC_LIST_RESTRICTION
     2180#if QC_MVHEVC_B0046
     2181    if( !rpcSlice->getViewId() || !rpcSlice->getSPS()->getListsModificationPresentFlag() )
     2182#else
    20842183      if( !rpcSlice->getSPS()->getListsModificationPresentFlag() )
     2184#endif
    20852185      {
    20862186        refPicListModification->setRefPicListModificationFlagL0( 0 );
     
    21532253    {
    21542254#if H0412_REF_PIC_LIST_RESTRICTION
     2255#if QC_MVHEVC_B0046
     2256    if( !rpcSlice->getViewId() || !rpcSlice->getSPS()->getListsModificationPresentFlag() )
     2257#else
    21552258      if( !rpcSlice->getSPS()->getListsModificationPresentFlag() )
     2259#endif
    21562260      {
    21572261        refPicListModification->setRefPicListModificationFlagL1( 0 );
     
    22372341     
    22382342#if H0412_REF_PIC_LIST_RESTRICTION
    2239       if(rpcSlice->getSPS()->getListsModificationPresentFlag() )
     2343#if QC_MVHEVC_B0046
     2344    if( rpcSlice->getViewId() && rpcSlice->getSPS()->getListsModificationPresentFlag() )
     2345#else
     2346    if(rpcSlice->getSPS()->getListsModificationPresentFlag() )
     2347#endif
    22402348      {
    22412349#endif
     
    29443052}
    29453053
     3054#if QC_MVHEVC_B0046
     3055/** Parse VPS alignment one bits.
     3056 * \returns Void
     3057 */
     3058Void TDecCavlc::xReadVPSAlignOne( )
     3059{
     3060  UInt uiNumberOfBits = m_pcBitstream->getNumBitsUntilByteAligned();
     3061
     3062  if(uiNumberOfBits)
     3063  {
     3064    UInt uiBits;
     3065    UInt uiSymbol;
     3066
     3067    for(uiBits = 0; uiBits < uiNumberOfBits; uiBits++)
     3068    {
     3069      xReadFlag( uiSymbol );
     3070
     3071      if(!uiSymbol)
     3072      {
     3073        printf("\nWarning! vps_extension_byte_alignment_reserved_one_bit include a non-zero value.\n");
     3074      }
     3075    }
     3076  }
     3077}
     3078#endif
    29463079/** Parse PCM alignment zero bits.
    29473080 * \returns Void
  • trunk/source/Lib/TLibDecoder/TDecCAVLC.h

    r189 r210  
    7575  Void  xReadFlagTr           (              UInt& rValue, const Char *pSymbolName);
    7676#endif
    77  
     77#if QC_MVHEVC_B0046
     78  Void  xReadVPSAlignOne      ();
     79#endif
    7880  Void  xReadPCMAlignZero     ();
    7981
     
    113115  Void  parseQtRootCbf      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt& uiQtRootCbf );
    114116
    115 #if VIDYO_VPS_INTEGRATION
     117#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    116118  Void  parseVPS            ( TComVPS* pcVPS );
    117119#endif
  • trunk/source/Lib/TLibDecoder/TDecEntropy.h

    r189 r210  
    7171#endif
    7272
    73 #if VIDYO_VPS_INTEGRATION
     73#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    7474  virtual Void  parseVPS                  ( TComVPS* pcVPS )                       = 0;
    7575#endif
     
    175175  Void    resetEntropy                ( TComSlice* p)           { m_pcEntropyDecoderIf->resetEntropy(p);                    }
    176176
    177 #if VIDYO_VPS_INTEGRATION
     177#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    178178  Void    decodeVPS                   ( TComVPS* pcVPS ) { m_pcEntropyDecoderIf->parseVPS(pcVPS); }
    179179#endif
  • trunk/source/Lib/TLibDecoder/TDecSbac.h

    r189 r210  
    8787  Void  setBitstream              ( TComInputBitstream* p  ) { m_pcBitstream = p; m_pcTDecBinIf->init( p ); }
    8888 
    89 #if VIDYO_VPS_INTEGRATION
     89#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    9090  Void  parseVPS                  ( TComVPS* pcVPS )  {}
    9191#endif
  • trunk/source/Lib/TLibDecoder/TDecSlice.cpp

    r77 r210  
    446446, m_ppsBuffer(16)
    447447, m_apsBuffer(64)
    448 #if VIDYO_VPS_INTEGRATION
     448#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    449449, m_vpsBuffer(16)
    450450#endif
     
    458458}
    459459
    460 #if VIDYO_VPS_INTEGRATION
     460#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    461461TComVPS* ParameterSetManagerDecoder::getPrefetchedVPS  (Int vpsId)
    462462{
     
    513513  m_ppsMap.mergePSList(m_ppsBuffer);
    514514  m_spsMap.mergePSList(m_spsBuffer);
    515 #if VIDYO_VPS_INTEGRATION
     515#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    516516  m_vpsMap.mergePSList(m_vpsBuffer);
    517517#endif
  • trunk/source/Lib/TLibDecoder/TDecSlice.h

    r100 r210  
    9696  Void     storePrefetchedAPS(TComAPS *aps)  { m_apsBuffer.storePS( aps->getAPSID(), aps); };
    9797  TComAPS* getPrefetchedAPS  (Int apsId);
    98 #if VIDYO_VPS_INTEGRATION
     98#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    9999  Void     storePrefetchedVPS(TComVPS *vps)  { m_vpsBuffer.storePS( vps->getVPSId(), vps); };
    100100  TComVPS* getPrefetchedVPS  (Int vpsId);
     
    106106  ParameterSetMap<TComPPS> m_ppsBuffer;
    107107  ParameterSetMap<TComAPS> m_apsBuffer;
    108 #if VIDYO_VPS_INTEGRATION
     108#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    109109  ParameterSetMap<TComVPS> m_vpsBuffer;
    110110#endif
  • trunk/source/Lib/TLibDecoder/TDecTop.cpp

    r77 r210  
    5050  m_aaiCodedScale          = new Int* [ MAX_VIEW_NUM ];
    5151  m_aiViewOrderIndex       = new Int  [ MAX_VIEW_NUM ];
     52#if QC_MVHEVC_B0046
     53  m_aiViewId               = new Int  [ MAX_VIEW_NUM ];
     54#endif
    5255  m_aiViewReceived         = new Int  [ MAX_VIEW_NUM ];
    5356  for( UInt uiId = 0; uiId < MAX_VIEW_NUM; uiId++ )
     
    266269  m_bFirstSliceInSequence   = true;
    267270  m_pcCamParsCollector = 0;
     271#if QC_MVHEVC_B0046
     272  m_bFirstNal                  = false;
     273#endif
    268274}
    269275
     
    578584  TComVPS *vps = m_parameterSetManagerDecoder.getVPS(sps->getVPSId());
    579585  assert (vps != 0);
     586#if !QC_REM_IDV_B0046
    580587  if( m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA )
     588#else
     589  if( (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA) && !sps->getViewId() )
     590#endif
    581591    // VPS can only be activated on IDR or CRA...
    582592    getTAppDecTop()->getVPSAccess()->setActiveVPSId( sps->getVPSId() );
     
    584594  m_apcSlicePilot->setPPS(pps);
    585595  m_apcSlicePilot->setSPS(sps);
    586 #if VIDYO_VPS_INTEGRATION
     596#if QC_MVHEVC_B0046
     597  TComVPS *vps = m_parameterSetManagerDecoder.getVPS(sps->getVPSId());
     598#endif
     599#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    587600  m_apcSlicePilot->setVPS(vps);
    588601#endif
     
    626639  m_apcSlicePilot->setPPS(m_parameterSetManagerDecoder.getPrefetchedPPS(0));
    627640  m_apcSlicePilot->setSPS(m_parameterSetManagerDecoder.getPrefetchedSPS(0));
    628 #if VIDYO_VPS_INTEGRATION
     641#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
     642#if QC_MVHEVC_B0046
     643  m_apcSlicePilot->setIsDepth(false);
     644#endif
    629645  m_apcSlicePilot->setVPS(m_parameterSetManagerDecoder.getPrefetchedVPS(0));
    630646#endif
    631647  m_apcSlicePilot->initTiles();
    632 
     648#if QC_MVHEVC_B0046
     649  m_apcSlicePilot->setViewId( nalu.m_layerId );
     650  m_apcSlicePilot->setViewId( nalu.m_layerId );
     651  m_apcSlicePilot->setViewOrderIdx(m_apcSlicePilot->getVPS()->getViewId(nalu.m_layerId), nalu.m_layerId);
     652  Int iNumDirectRef = m_apcSlicePilot->getVPS()->getNumDirectRefLayer(nalu.m_layerId);
     653  m_apcSlicePilot->getSPS()->setNumberOfUsableInterViewRefs(iNumDirectRef);
     654  for(Int iNumIvRef = 0; iNumIvRef < iNumDirectRef; iNumIvRef ++)
     655  {
     656    Int iDeltaLayerId = m_apcSlicePilot->getVPS()->getDirectRefLayerId( nalu.m_layerId, iNumIvRef);
     657    m_apcSlicePilot->getSPS()->setUsableInterViewRef(iNumIvRef, (iDeltaLayerId-nalu.m_layerId));
     658  }
     659#endif
    633660  if (m_bFirstSliceInPicture)
    634661  {
     
    645672  if( m_bFirstSliceInPicture )
    646673  {
     674#if QC_MVHEVC_B0046
     675    if( nalu.m_layerId == 0 ) { m_nalUnitTypeBaseView = nalu.m_nalUnitType; }
     676    else                     { m_nalUnitTypeBaseView = m_tAppDecTop->getTDecTop( 0, 0 )->getNalUnitTypeBaseView(); }
     677#else
    647678#if VIDYO_VPS_INTEGRATION
    648679    if( m_apcSlicePilot->getVPS()->getViewId(nalu.m_layerId) == 0 ) { m_nalUnitTypeBaseView = nalu.m_nalUnitType; }
     
    652683    else                     { m_nalUnitTypeBaseView = m_tAppDecTop->getTDecTop( 0, nalu.m_isDepth )->getNalUnitTypeBaseView(); }
    653684#endif
    654    
     685#endif
    655686    m_apcSlicePilot->setNalUnitTypeBaseViewMvc( m_nalUnitTypeBaseView );
    656687  }
     
    951982
    952983    // Set reference list
     984#if !QC_MVHEVC_B0046
    953985#if VIDYO_VPS_INTEGRATION
    954986    pcSlice->setViewId( pcSlice->getVPS()->getViewId(nalu.m_layerId) );
     
    958990    pcSlice->setIsDepth(m_isDepth);
    959991#endif
     992#endif
    960993
    961994#if SONY_COLPIC_AVAILABILITY
     
    9691002    assert( m_tAppDecTop != NULL );
    9701003    TComPic * const pcTexturePic = m_isDepth ? m_tAppDecTop->getPicFromView(  m_viewId, pcSlice->getPOC(), false ) : NULL;
     1004
     1005#if FLEX_CODING_ORDER_M23723
     1006    if (pcTexturePic != NULL)
     1007    {
     1008      assert( !m_isDepth || pcTexturePic != NULL );
     1009      pcSlice->setTexturePic( pcTexturePic );
     1010    }
     1011#else
    9711012    assert( !m_isDepth || pcTexturePic != NULL );
    9721013    pcSlice->setTexturePic( pcTexturePic );
     1014#endif
     1015
    9731016
    9741017    std::vector<TComPic*> apcInterViewRefPics = m_tAppDecTop->getInterViewRefPics( m_viewId, pcSlice->getPOC(), m_isDepth, pcSlice->getSPS() );
     
    10711114  m_cGopDecoder.decompressGop(nalu.m_Bitstream, pcPic, false);
    10721115
     1116#if QC_IV_AS_LT_B0046
     1117  std::vector<TComPic*> apcInterViewRefPics = m_tAppDecTop->getInterViewRefPics( m_viewId, pcSlice->getPOC(), m_isDepth, pcSlice->getSPS() );
     1118  for( Int k = 0; k < apcInterViewRefPics.size(); k++ )
     1119  {
     1120    TComPic*  pcPicIv = apcInterViewRefPics[k];
     1121    pcPicIv->setIsLongTerm( 0 );
     1122  }
     1123#endif
    10731124  if( m_pcCamParsCollector )
    10741125  {
     
    10821133}
    10831134
    1084 #if VIDYO_VPS_INTEGRATION
     1135#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    10851136Void TDecTop::xDecodeVPS()
    10861137{
     
    10891140  m_cEntropyDecoder.decodeVPS( vps );
    10901141  m_parameterSetManagerDecoder.storePrefetchedVPS(vps); 
     1142#if !QC_MVHEVC_B0046
    10911143  getTAppDecTop()->getVPSAccess()->addVPS( vps );
     1144#endif
    10921145}
    10931146#endif
     
    11551208  switch (nalu.m_nalUnitType)
    11561209  {
    1157 #if VIDYO_VPS_INTEGRATION
     1210#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    11581211    case NAL_UNIT_VPS:
    11591212      xDecodeVPS();
     
    11781231    case NAL_UNIT_CODED_SLICE_IDR:
    11791232#if H0566_TLA
     1233#if !QC_REM_IDV_B0046
    11801234    case NAL_UNIT_CODED_SLICE_IDV:
     1235#endif
    11811236    case NAL_UNIT_CODED_SLICE_CRA:
    11821237    case NAL_UNIT_CODED_SLICE_TLA:
     
    11931248}
    11941249
     1250#if QC_MVHEVC_B0046
     1251Void TDecTop::xCopyVPS( TComVPS* pVPSV0 )
     1252{
     1253  m_parameterSetManagerDecoder.storePrefetchedVPS(pVPSV0); 
     1254}
     1255
     1256Void TDecTop::xCopySPS( TComSPS* pSPSV0 )
     1257{
     1258  TComSPS* sps = new TComSPS();
     1259  sps = pSPSV0;
     1260  m_parameterSetManagerDecoder.storePrefetchedSPS(sps);
     1261#if LCU_SYNTAX_ALF
     1262  m_cAdaptiveLoopFilter.create( sps->getPicWidthInLumaSamples(), sps->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );
     1263#endif
     1264}
     1265
     1266Void TDecTop::xCopyPPS(TComPPS* pPPSV0 )
     1267{
     1268  m_parameterSetManagerDecoder.storePrefetchedPPS( pPPSV0 );
     1269
     1270  //!!!KS: Activate parameter sets for parsing APS (unless dependency is resolved)
     1271  m_apcSlicePilot->setPPSId(pPPSV0->getPPSId());
     1272  xActivateParameterSets();
     1273  m_apcSlicePilot->initTiles();
     1274}
     1275#endif
    11951276/** Function for checking if picture should be skipped because of random access
    11961277 * \param iSkipFrame skip frame counter
  • trunk/source/Lib/TLibDecoder/TDecTop.h

    r100 r210  
    8888  Int**   m_aaiCodedScale;
    8989  Int*    m_aiViewOrderIndex;
     90#if QC_MVHEVC_B0046
     91  Int*    m_aiViewId;
     92#endif
    9093  Int*    m_aiViewReceived;
    9194  UInt    m_uiCamParsCodedPrecision;
     
    168171 
    169172  Void  deletePicBuffer();
    170 
     173#if QC_MVHEVC_B0046
     174  Void      xCopySPS( TComSPS* pSPSV0);
     175  Void      xCopyPPS( TComPPS* pPPSV0);
     176  Void      xCopyVPS( TComVPS* pVPSV0);
     177#endif
    171178#if HHI_INTER_VIEW_RESIDUAL_PRED
    172179  Void      deleteExtraPicBuffers   ( Int iPoc );
     
    195202  TAppDecTop*         getTAppDecTop()                           { return  m_tAppDecTop; }
    196203  NalUnitType         getNalUnitTypeBaseView()                  { return m_nalUnitTypeBaseView; }
    197 
     204#if QC_MVHEVC_B0046
     205  bool                m_bFirstNal; //used to copy SPS, PPS, VPS
     206  ParameterSetManagerDecoder* xGetParaSetDec ()        {return  &m_parameterSetManagerDecoder;}
     207#endif
    198208protected:
    199209  Void  xGetNewPicBuffer  (TComSlice* pcSlice, TComPic*& rpcPic);
     
    208218  Bool      xDecodeSlice(InputNALUnit &nalu, Int iSkipFrame, Int iPOCLastDisplay);
    209219#endif
    210 #if VIDYO_VPS_INTEGRATION
     220#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    211221  Void      xDecodeVPS();
    212222#endif
Note: See TracChangeset for help on using the changeset viewer.