Changeset 505 in SHVCSoftware for branches/SHM-4.1-dev/source


Ignore:
Timestamp:
22 Nov 2013, 00:13:12 (11 years ago)
Author:
interdigital
Message:

Integrated JCTVC-O0092/0094/0096

  1. Implement O1008 SHVC text pseudo code for direct/indirect reference layers detection
  2. constraint on the maximum number of reference layers
  3. constraint on the layer id of SPS/PPS
  4. identify SPS rep format with index into the list of rep format in VPS
  5. specify default direct dependency type in VPS
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-4.1-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r502 r505  
    599599    pcSPS->setUpdateRepFormatFlag( true );
    600600  }
     601#if O0096_REP_FORMAT_INDEX
     602  if( pcSPS->getLayerId() == 0 )
     603#else
    601604  if( pcSPS->getLayerId() == 0 || pcSPS->getUpdateRepFormatFlag() )
     605#endif
    602606  {
    603607#endif
     
    619623#if REPN_FORMAT_IN_VPS
    620624  }
     625#if O0096_REP_FORMAT_INDEX
     626  else if ( pcSPS->getUpdateRepFormatFlag() )
     627  {
     628    READ_CODE(8, uiCode, "update_rep_format_index");
     629    pcSPS->setUpdateRepFormatIndex(uiCode);
     630  }
     631#endif
    621632#endif
    622633  READ_FLAG(     uiCode, "conformance_window_flag");
     
    637648  }
    638649#if REPN_FORMAT_IN_VPS
     650#if O0096_REP_FORMAT_INDEX
     651  if( pcSPS->getLayerId() == 0 )
     652#else
    639653  if(  pcSPS->getLayerId() == 0 || pcSPS->getUpdateRepFormatFlag() )
     654#endif
    640655  {
    641656#endif
     
    12401255  if( vps->getRepFormatIdxPresentFlag() )
    12411256  {
     1257#if O0096_REP_FORMAT_INDEX
     1258    READ_CODE( 8, uiCode, "vps_num_rep_formats_minus1" );
     1259#else
    12421260    READ_CODE( 4, uiCode, "vps_num_rep_formats_minus1" );
     1261#endif
    12431262    vps->setVpsNumRepFormats( uiCode + 1 );
    12441263  }
     
    12631282      if( vps->getVpsNumRepFormats() > 1 )
    12641283      {
     1284#if O0096_REP_FORMAT_INDEX
     1285        READ_CODE( 8, uiCode, "vps_rep_format_idx[i]" );
     1286#else
    12651287        READ_CODE( 4, uiCode, "vps_rep_format_idx[i]" );
     1288#endif
    12661289        vps->setVpsRepFormatIdx( i, uiCode );
    12671290      }
     
    13071330#if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS
    13081331  READ_UVLC( uiCode,           "direct_dep_type_len_minus2"); vps->setDirectDepTypeLen(uiCode+2);
     1332#if O0096_DEFAULT_DEPENDENCY_TYPE
     1333  READ_FLAG(uiCode, "default_direct_dependency_type_flag");
     1334  vps->setDefaultDirectDependecyTypeFlag(uiCode == 1? true : false);
     1335  if (vps->getDefaultDirectDependencyTypeFlag())
     1336  {
     1337    READ_CODE( vps->getDirectDepTypeLen(), uiCode, "default_direct_dependency_type" );
     1338    vps->setDefaultDirectDependecyType(uiCode);
     1339  }
     1340#endif
    13091341  for(i = 1; i < vps->getMaxLayers(); i++)
    13101342  {
     
    13131345      if (vps->getDirectDependencyFlag(i, j))
    13141346      {
    1315         READ_CODE( vps->getDirectDepTypeLen(), uiCode, "direct_dependency_type[i][j]" ); vps->setDirectDependencyType(i, j, uiCode);
    1316       }
    1317     }
    1318   }
    1319 
     1347#if O0096_DEFAULT_DEPENDENCY_TYPE
     1348        if (vps->getDefaultDirectDependencyTypeFlag())
     1349        {
     1350          vps->setDirectDependencyType(i, j, vps->getDefaultDirectDependencyType());
     1351        }
     1352        else
     1353        {
     1354          READ_CODE( vps->getDirectDepTypeLen(), uiCode, "direct_dependency_type[i][j]" );
     1355          vps->setDirectDependencyType(i, j, uiCode);
     1356        }
     1357#else
     1358        READ_CODE( vps->getDirectDepTypeLen(), uiCode, "direct_dependency_type[i][j]" );
     1359        vps->setDirectDependencyType(i, j, uiCode);
     1360#endif
     1361      }
     1362    }
     1363  }
    13201364#endif
    13211365
     
    19021946      ChromaFormat format;
    19031947#if REPN_FORMAT_IN_VPS
     1948#if O0096_REP_FORMAT_INDEX
     1949      if( sps->getLayerId() == 0 )
     1950      {
     1951        format = sps->getChromaFormatIdc();
     1952      }
     1953      else
     1954      {
     1955        format = rpcSlice->getVPS()->getVpsRepFormat( sps->getUpdateRepFormatFlag() ? sps->getUpdateRepFormatIndex() : rpcSlice->getVPS()->getVpsRepFormatIdx(sps->getLayerId()) )->getChromaFormatVpsIdc();
     1956      }
     1957#else
    19041958      if( ( sps->getLayerId() == 0 ) || sps->getUpdateRepFormatFlag() )
    19051959      {
     
    19101964        format = rpcSlice->getVPS()->getVpsRepFormat( rpcSlice->getVPS()->getVpsRepFormatIdx(sps->getLayerId()) )->getChromaFormatVpsIdc();
    19111965      }
     1966#endif
    19121967#else
    19131968      format = sps->getChromaFormatIdc();
Note: See TracChangeset for help on using the changeset viewer.