Changeset 577 in SHVCSoftware for branches/SHM-5.0-dev/source/Lib/TLibDecoder


Ignore:
Timestamp:
29 Jan 2014, 01:55:16 (11 years ago)
Author:
qualcomm
Message:

JCTVC-P0295: modify default_one_target_output_layer_idc to default_target_output_layer_idc and also its semantics

Macro: P0295_DEFAULT_OUT_LAYER_IDC

Contact -- fhendry@…

File:
1 edited

Legend:

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

    r576 r577  
    12061206  Int numOutputLayerSets = vps->getNumLayerSets() + vps->getNumAddOutputLayerSets();
    12071207#endif
     1208
     1209#if P0295_DEFAULT_OUT_LAYER_IDC
     1210  if( numOutputLayerSets > 1 )
     1211  {
     1212    READ_CODE( 2, uiCode, "default_target_output_layer_idc" );   vps->setDefaultTargetOutputLayerIdc( uiCode );
     1213  }
     1214  vps->setNumOutputLayerSets( numOutputLayerSets );
     1215
     1216  for(i = 1; i < numOutputLayerSets; i++)
     1217  {
     1218    if( i > (vps->getNumLayerSets() - 1) )
     1219    {
     1220      Int numBits = 1;
     1221      while ((1 << numBits) < (vps->getNumLayerSets() - 1))
     1222      {
     1223        numBits++;
     1224      }
     1225      READ_CODE( numBits, uiCode, "output_layer_set_idx_minus1");   vps->setOutputLayerSetIdx( i, uiCode + 1);
     1226    }
     1227    else
     1228    {
     1229      vps->setOutputLayerSetIdx( i, i );
     1230    }
     1231    if ( i > (vps->getNumLayerSets() - 1) || vps->getDefaultTargetOutputLayerIdc() >= 2 )
     1232    {
     1233      Int lsIdx = vps->getOutputLayerSetIdx(i);
     1234      for(j = 0; j < vps->getNumLayersInIdList(lsIdx) - 1; j++)
     1235      {
     1236        READ_FLAG( uiCode, "output_layer_flag[i][j]"); vps->setOutputLayerFlag(i, j, uiCode);
     1237      }
     1238    }
     1239    else
     1240    {
     1241      // i <= (vps->getNumLayerSets() - 1)
     1242      // Assign OutputLayerFlag depending on default_one_target_output_layer_flag
     1243      Int lsIdx = i;
     1244      if( vps->getDefaultTargetOutputLayerIdc() == 1 )
     1245      {
     1246        for(j = 0; j < vps->getNumLayersInIdList(lsIdx); j++)
     1247        {
     1248          vps->setOutputLayerFlag(i, j, (j == (vps->getNumLayersInIdList(lsIdx)-1)) && (vps->getDimensionId(j,1) == 0) );
     1249        }
     1250      }
     1251      else if ( vps->getDefaultTargetOutputLayerIdc() == 0 )
     1252      {
     1253        for(j = 0; j < vps->getNumLayersInIdList(lsIdx); j++)
     1254        {
     1255          vps->setOutputLayerFlag(i, j, 1);
     1256        }
     1257      }
     1258    }
     1259    Int numBits = 1;
     1260    while ((1 << numBits) < (vps->getNumProfileTierLevel()))
     1261    {
     1262      numBits++;
     1263    }
     1264    READ_CODE( numBits, uiCode, "profile_level_tier_idx[i]" );     vps->setProfileLevelTierIdx(i, uiCode);
     1265  }
     1266#else
    12081267  if( numOutputLayerSets > 1 )
    12091268  {
     
    12871346    READ_CODE( numBits, uiCode, "profile_level_tier_idx[i]" );     vps->setProfileLevelTierIdx(i, uiCode);
    12881347  }
     1348#endif
    12891349
    12901350#if O0153_ALT_OUTPUT_LAYER_FLAG
Note: See TracChangeset for help on using the changeset viewer.