Ignore:
Timestamp:
24 Jun 2013, 21:36:38 (11 years ago)
Author:
tech
Message:

Incorporated further encoder parameters.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.3-dev0/source/App/TAppEncoder/TAppEncTop.cpp

    r492 r493  
    118118  xSetLayerIds             ( vps );   
    119119  xSetDimensionIdAndLength ( vps );
    120   xSetDirectDependencyFlags( vps );
     120  xSetDependencies( vps );
    121121  xSetLayerSets            ( vps );
    122122#if H_3D
     
    985985}
    986986
    987 Void TAppEncTop::xSetDirectDependencyFlags( TComVPS& vps )
    988 {
    989   for( Int layer = 0; layer < m_numberOfLayers; layer++ )
    990   {
    991     if( m_GOPListMvc[layer][MAX_GOP].m_POC == -1 )
    992     {
    993       continue;
    994     }
    995     for( Int i = 0; i < getGOPSize()+1; i++ )
    996     {
    997       GOPEntry ge = ( i < getGOPSize() ) ? m_GOPListMvc[layer][i] : m_GOPListMvc[layer][MAX_GOP];
    998       for( Int j = 0; j < ge.m_numInterViewRefPics; j++ )
    999       {
    1000         Int interLayerRef = layer + ge.m_interViewRefs[j];
    1001         vps.setDirectDependencyFlag( layer, interLayerRef, true );
    1002       }
    1003     }
    1004   }
    1005 
    1006   vps.checkVPSExtensionSyntax();
    1007   vps.setRefLayers();
    1008 }
     987Void TAppEncTop::xSetDependencies( TComVPS& vps )
     988{
     989  // Direct dependency flags + dependency types
     990  for( Int depLayer = 1; depLayer < MAX_NUM_LAYERS; depLayer++ )
     991  {
     992    for( Int refLayer = 0; refLayer < MAX_NUM_LAYERS; refLayer++ )
     993    {
     994      vps.setDirectDependencyFlag( depLayer, refLayer, false);
     995      vps.setDirectDependencyType( depLayer, refLayer,    0 );
     996    }
     997  }
     998  for( Int depLayer = 1; depLayer < m_numberOfLayers; depLayer++ )
     999  {
     1000    Int numRefLayers = m_directRefLayers[depLayer].size();
     1001    assert(  numRefLayers == m_dependencyTypes[depLayer].size() );
     1002    for( Int i = 0; i < numRefLayers; i++ )
     1003    {
     1004      Int refLayer = m_directRefLayers[depLayer][i];
     1005      vps.setDirectDependencyFlag( depLayer, refLayer, true);
     1006      vps.setDirectDependencyType( depLayer, refLayer,m_dependencyTypes[depLayer][i]);
     1007    }
     1008  }
     1009
     1010  // Max temporal id for inter layer reference pictures
     1011  for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++)
     1012  { 
     1013    Int maxTid = -1;
     1014    for ( Int currLayerIdInVps = 1; currLayerIdInVps < m_numberOfLayers; currLayerIdInVps++)
     1015    {
     1016      for( Int i = 0; i < getGOPSize(); i++ )
     1017      {       
     1018        GOPEntry ge =  m_GOPListMvc[currLayerIdInVps][i];
     1019       
     1020        for (Int j = 0; j < ge.m_numRefPicsActive; j++)
     1021        {       
     1022          if ( m_directRefLayers[ currLayerIdInVps ][ ge.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps )
     1023          {
     1024            maxTid = std::max( maxTid, ge.m_temporalId );
     1025          }
     1026        }
     1027      }           
     1028    }
     1029    vps.setMaxTidIlRefPicPlus1( refLayerIdInVps, maxTid + 1 );
     1030  }
     1031
     1032  // Max one active ref layer flag
     1033  Bool maxOneActiveRefLayerFlag = true; 
     1034  for ( Int currLayerIdInVps = 1; currLayerIdInVps < m_numberOfLayers && maxOneActiveRefLayerFlag; currLayerIdInVps++)
     1035  {
     1036    for( Int i = 0; i < ( getGOPSize() + 1) && maxOneActiveRefLayerFlag; i++ )
     1037    {       
     1038      GOPEntry ge =  m_GOPListMvc[currLayerIdInVps][ ( i < getGOPSize()  ? i : MAX_GOP ) ];
     1039      maxOneActiveRefLayerFlag =  maxOneActiveRefLayerFlag && (ge.m_numRefPicsActive <= 1);
     1040    }           
     1041  }
     1042
     1043  vps.setMaxOneActiveRefLayerFlag( maxOneActiveRefLayerFlag );
     1044  vps.setRefLayers();
     1045};
    10091046
    10101047Void TAppEncTop::xSetLayerIds( TComVPS& vps )
     
    10461083    }
    10471084    for ( Int i = 0; i < m_layerIdsInSets[lsIdx].size(); i++)
    1048     {
    1049       vps.setLayerIdIncludedFlag( true, lsIdx, m_layerIdsInSets[lsIdx][i] );
     1085    {       
     1086      vps.setLayerIdIncludedFlag( true, lsIdx, vps.getLayerIdInNuh( m_layerIdsInSets[lsIdx][i] ) );
    10501087    }
    10511088  }
Note: See TracChangeset for help on using the changeset viewer.