Changeset 1462 in SHVCSoftware


Ignore:
Timestamp:
21 Aug 2015, 18:43:51 (9 years ago)
Author:
seregin
Message:

update PTL check at encoder

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp

    r1460 r1462  
    24852485  }
    24862486
     2487  std::vector<Profile::Name> profiles;
     2488
     2489  if( m_scalabilityMask[VIEW_ORDER_INDEX] )
     2490  {
     2491    profiles.push_back( Profile::MULTIVIEWMAIN );
     2492  }
     2493
     2494  if( m_scalabilityMask[SCALABILITY_ID] )
     2495  {
     2496    profiles.push_back( Profile::SCALABLEMAIN );
     2497  }
     2498
    24872499  for( Int olsCtr = 1; olsCtr < m_numOutputLayerSets; olsCtr++ )
    24882500  {
     
    25172529    //If OpTid of the output operation point is equal to vps_max_sub_layer_minus1, the conformance is indicated by general_profile_idc being equal to 7 or general_profile_compatibility_flag[ 7 ] being equal to 1
    25182530    //The following assert may be updated / upgraded to take care of general_profile_compatibility_flag.
    2519     if (m_numAddLayerSets == 0)
    2520     {
    2521       for ( Int ii = 1; ii < m_numLayerInIdList[olsToLsIndex]; ii++)
    2522       {
    2523         if (m_layerSetLayerIdList[olsToLsIndex][ii - 1] != 0 && m_layerSetLayerIdList[olsToLsIndex][ii] != 0)  //Profile / profile compatibility of enhancement layers must indicate the same profile.
     2531    if( olsToLsIndex < m_numLayerSets )
     2532    {
     2533      std::vector<UInt> passedCheck(profiles.size(), 0);
     2534      UInt numIncludedLayers = 0;
     2535
     2536      for( Int ii = 1; ii < m_numLayerInIdList[olsToLsIndex]; ii++ )
     2537      {
     2538        if( m_layerSetLayerIdList[olsToLsIndex][ii - 1] != 0 && m_layerSetLayerIdList[olsToLsIndex][ii] != 0 )  //Profile / profile compatibility of enhancement layers must indicate the same profile.
    25242539        {
    2525           assert( (m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii]] == m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii - 1]]) ||
    2526             (m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii]] == m_profileCompatibility[m_listOfLayerPTLofOlss[olsCtr][ii - 1]]) ||   
    2527             (m_profileCompatibility[m_listOfLayerPTLofOlss[olsCtr][ii]] == m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii - 1]]) );
     2540          numIncludedLayers++;
     2541          const Profile::Name profileName = m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii]] == Profile::SCALABLEMAIN10 ? Profile::SCALABLEMAIN : m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii]];
     2542
     2543          for( Int p = 0; p < profiles.size(); p++ )
     2544          {
     2545            passedCheck[p] += profileName == profiles[p] || m_profileCompatibility[Int(profiles[p])];
     2546          }
    25282547        }
    25292548      }
     2549
     2550      // check whether all layers are compatible to at least one extension profile
     2551      assert( std::find(passedCheck.begin(), passedCheck.end(), numIncludedLayers) != passedCheck.end() );
    25302552    }
    25312553  }
Note: See TracChangeset for help on using the changeset viewer.