Changeset 1060 in 3DVCSoftware for branches


Ignore:
Timestamp:
7 Oct 2014, 12:16:13 (10 years ago)
Author:
tech
Message:

Added

  • Fix PTL
  • Support auxiliary pictures.
Location:
branches/HTM-12.0-dev1
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-12.0-dev1/cfg/MV-HEVC/NonCTC/inbl_3view.cfg

    r1054 r1060  
    88#NumberOfLayers         : 6       
    99#=============== vps ===============
    10 ScalabilityMask        : 2        #  Scalability Mask             ( 2: View Scalability, shall be 2 for MV-HEVC )
    11 DimensionIdLen         : 4        #  Number of bits to store Ids,  per scalability dimension, (m)
    12 ViewOrderIndex         : 0 1 2 3 4 5    #  ViewOrderIndex, per layer (m)
     10ScalabilityMask        : 10        #  Scalability Mask             ( 2: View Scalability, shall be 2 for MV-HEVC )
     11DimensionIdLen         : 4 4       #  Number of bits to store Ids,  per scalability dimension, (m)
     12ViewOrderIndex         : 0 0 1 1 2 2    #  ViewOrderIndex, per layer (m)
     13AuxId                  : 0 2 0 2 0 2
    1314LayerIdInNuh           : 0 1 2 3 4 5   #  Layer Id in NAL unit header, (0: no explicit signalling, otherwise per layer ) (m)
    1415SplittingFlag          : 0        #  Splitting Flag
    15 ViewId                 : 1 4 0 3 2 5   #  ViewId, per ViewOrderIndex (m)
     16ViewId                 : 1 0 2    #  ViewId, per ViewOrderIndex (m)
    1617#=============== vpslayersets ===============
    1718VpsNumLayerSets        : 2           #  Number of layer sets   
     
    2627LayerIdsInSet_8        :             #  Indices in VPS of layers in layer set 8
    2728
    28 NumAddLayerSets        : 1           #  Additional layer sets for indpendend decodable non-base layer
     29NumAddLayerSets        : 1           #  Additional layer sets for independent decodable non-base layer
    2930HighestLayerIdxPlus1_0 : -1 3
    3031
  • branches/HTM-12.0-dev1/source/App/TAppDecoder/TAppDecTop.cpp

    r1054 r1060  
    260260          if (m_outputVpsInfo )
    261261          {
     262#if H_MV_HLS10_AUX
     263            m_vps->printScalabilityId();
     264#endif
    262265            m_vps->printLayerDependencies();
    263266            m_vps->printLayerSets();
  • branches/HTM-12.0-dev1/source/App/TAppEncoder/TAppEncCfg.cpp

    r1054 r1060  
    380380  ("NumberOfLayers",        m_numberOfLayers     , 1,                     "Number of layers")
    381381#if !H_3D
     382#if H_MV_HLS10_AUX
     383  ("ScalabilityMask",       m_scalabilityMask    , 2                    , "Scalability Mask: 2: Multiview, 8: Auxiliary, 10: Multiview + Auxiliary")   
     384#else
    382385  ("ScalabilityMask",       m_scalabilityMask    , 2                    , "Scalability Mask")   
     386#endif
    383387#else
    384388  ("ScalabilityMask",       m_scalabilityMask    , 3                    , "Scalability Mask, 1: Texture 3: Texture + Depth ")   
     
    387391  ("ViewOrderIndex",        m_viewOrderIndex     , std::vector<Int>(1,0), "View Order Index per layer")
    388392  ("ViewId",                m_viewId             , std::vector<Int>(1,0), "View Id per View Order Index")
     393#if H_MV_HLS10_AUX
     394  ("AuxId",                 m_auxId              , std::vector<Int>(1,0), "AuxId per layer")
     395#endif
    389396#if H_3D
    390397  ("DepthFlag",             m_depthFlag          , std::vector<Int>(1,0), "Depth Flag")
     
    10751082  }
    10761083  m_iNumberOfViews = (Int) uniqueViewOrderIndices.size();
     1084#if H_MV_HLS10_AUX
     1085  xResizeVector( m_auxId );
     1086#endif
    10771087
    10781088#if H_3D
     
    14211431  xConfirmPara( m_scalabilityMask != 2 && m_scalabilityMask != 3, "Scalability Mask must be equal to 2 or 3. ");
    14221432#else
     1433#if H_MV_HLS10_AUX
     1434  xConfirmPara( m_scalabilityMask != 2 && m_scalabilityMask != 8 && m_scalabilityMask != 10, "Scalability Mask must be equal to 2, 8 or 10");
     1435#else
    14231436  xConfirmPara( m_scalabilityMask != 2 , "Scalability Mask must be equal to 2. ");
     1437#endif
    14241438#endif
    14251439
     
    14321446
    14331447  m_dimIds.push_back( m_viewOrderIndex );   
    1434   xConfirmPara(  m_dimensionIdLen.size() < m_dimIds.size(), "DimensionIdLen must be given for all dimensions. "   );   Int dimBitOffset[MAX_NUM_SCALABILITY_TYPES+1];
     1448#if H_MV_HLS10_AUX
     1449  for (Int i = 0; i < m_auxId.size(); i++)
     1450  {
     1451    xConfirmPara( !( ( m_auxId[i] >= 0 && m_auxId[i] <= 2 ) || ( m_auxId[i] >= 128 && m_auxId[i] <= 159 ) ) , "AuxId shall be in the range of 0 to 2, inclusive, or 128 to 159, inclusive");
     1452  }
     1453  if ( m_scalabilityMask & ( 1 << AUX_ID ) )
     1454  {
     1455    m_dimIds.push_back ( m_auxId );
     1456  }
     1457#endif 
     1458  xConfirmPara(  m_dimensionIdLen.size() < m_dimIds.size(), "DimensionIdLen must be given for all dimensions. "   );
     1459  Int dimBitOffset[MAX_NUM_SCALABILITY_TYPES+1];
    14351460
    14361461  dimBitOffset[ 0 ] = 0;
     
    24832508  xPrintParaVector( "ViewIdVal"     , m_viewId );
    24842509  xPrintParaVector( "ViewOrderIndex", m_viewOrderIndex );
     2510#if H_MV_HLS10_AUX
     2511  xPrintParaVector( "AuxId", m_auxId );
     2512#endif
    24852513#endif
    24862514#if H_3D
  • branches/HTM-12.0-dev1/source/App/TAppEncoder/TAppEncCfg.h

    r1054 r1060  
    7878  std::vector<Int>       m_viewId;                            ///< view id
    7979  std::vector<Int>       m_viewOrderIndex;                    ///< view order index 
     80#if H_MV_HLS10_AUX
     81  std::vector<Int>       m_auxId;                             ///< auxiliary id
     82#endif
    8083#if H_3D
    8184  std::vector<Int>       m_depthFlag;                         ///< depth flag
  • branches/HTM-12.0-dev1/source/App/TAppEncoder/TAppEncTop.cpp

    r1058 r1060  
    171171  if ( m_outputVpsInfo )
    172172  { 
     173#if H_MV_HLS10_AUX
     174    vps.printScalabilityId();
     175#endif
    173176    vps.printLayerDependencies();
    174177    vps.printLayerSets();
     
    18641867        {
    18651868          vps.setProfileTierLevelIdx(olsIdx, j, m_profileTierLevelIdx[olsIdx][j] );
     1869#if H_MV_HLS10_PTL_FIX
     1870          if( !vps.getNecessaryLayerFlag(olsIdx,j) && m_profileTierLevelIdx[ olsIdx ][ j ] != -1 )
     1871          {
     1872            fprintf( stderr, "Warning: The %d-th layer in the %d-th OLS is not necessary such that profileTierLevelIdx[%d][%d] will be ignored. Set value to -1 to suppress warning.\n", j,olsIdx,olsIdx,j );
     1873          }         
     1874        }
     1875        else if ( vps.getNecessaryLayerFlag(olsIdx,j) )
     1876#else
    18661877        }
    18671878        else
     1879#endif
    18681880        {
    18691881          // setting default values
  • branches/HTM-12.0-dev1/source/Lib/TLibCommon/TComRom.h

    r1054 r1060  
    239239
    240240#ifndef ENC_DEC_TRACE
    241 #define ENC_DEC_TRACE   0
     241#define ENC_DEC_TRACE   1
    242242#endif
    243243
  • branches/HTM-12.0-dev1/source/Lib/TLibCommon/TComSlice.cpp

    r1059 r1060  
    19151915    {
    19161916#if H_MV_HLS10_PTL
     1917#if H_MV_HLS10_PTL_FIX
     1918      m_profileTierLevelIdx[i][j] = -1;
     1919#else
    19171920      m_profileTierLevelIdx[i][j] = false;
     1921#endif
    19181922#endif
    19191923      m_outputLayerFlag[i][j] = false;
  • branches/HTM-12.0-dev1/source/Lib/TLibCommon/TComSlice.h

    r1055 r1060  
    12161216  Void    setProfileTierLevelIdx( Int i, Int j, Int val )                  { m_profileTierLevelIdx[ i ][ j ] = val; }
    12171217  Int     getProfileTierLevelIdx( Int i, Int j )                           { return m_profileTierLevelIdx[ i ][ j ]; }
     1218#if H_MV_HLS10_PTL
     1219  Int     inferProfileTierLevelIdx( Int i, Int j )
     1220  {
     1221    Bool inferZero        = ( i == 0 && j == 0 &&  getVpsBaseLayerInternalFlag() );
     1222    Bool inferGreaterZero = getNecessaryLayerFlag(i,j) && ( getVpsNumProfileTierLevelMinus1() == 0 );
     1223    assert( inferZero || inferGreaterZero );
     1224
     1225    Bool ptlIdx = 0; // inference for greaterZero
     1226    if ( inferZero )
     1227    {
     1228      ptlIdx = getMaxLayersMinus1() > 0 ? 1 : 0;
     1229      if ( inferGreaterZero )
     1230      {
     1231        assert( ptlIdx == 0 ); 
     1232        // This should never happen since :
     1233        // When vps_max_layers_minus1 is greater than 0, the value of vps_num_profile_tier_level_minus1 shall be greater than or equal to 1.
     1234      }
     1235    }
     1236    return ptlIdx;     
     1237  }
     1238#endif
    12181239#else
    12191240  Void    setProfileLevelTierIdx( Int outLayerSetIdx, Int val )            { m_profileLevelTierIdx[ outLayerSetIdx ] = val; }
     
    12821303
    12831304  Int     getViewIndex    ( Int layerIdInNuh )                             { return getScalabilityId( getLayerIdInVps(layerIdInNuh), VIEW_ORDER_INDEX  ); }   
     1305#if H_MV_HLS10_AUX
     1306  Int     getAuxId        ( Int layerIdInNuh )                             { return getScalabilityId( getLayerIdInVps(layerIdInNuh), AUX_ID  ); }   
     1307  Int     getDependencyId ( Int layerIdInNuh )                             { return getScalabilityId( getLayerIdInVps(layerIdInNuh), DEPENDENCY_ID  ); }   
     1308#endif
    12841309  Int     getNumViews();
    12851310
     
    14601485    vector<Int> fullArray;
    14611486    vector<Int> range;
     1487
     1488#if H_3D
     1489    vector<Int> depthId;
     1490#endif
     1491
     1492#if H_MV_HLS10_AUX
     1493    vector<Int> viewOrderIndex;
     1494    vector<Int> auxId;
     1495    vector<Int> dependencyId;
     1496    vector<Int> viewId;
     1497#endif
    14621498    for (Int i = 0; i <= getMaxLayersMinus1(); i++ )
    14631499    {
    14641500      fullArray.push_back( getMaxLayersMinus1() + 1 );
    14651501      range.push_back( i );
     1502#if H_MV_HLS10_AUX     
     1503      viewOrderIndex.push_back( getViewIndex   ( i ) );
     1504      dependencyId  .push_back( getDependencyId( i ) );
     1505      auxId         .push_back( getAuxId       ( i ) );     
     1506      viewId        .push_back( getViewId      ( getLayerIdInNuh( i ) ) );
     1507#if H_3D 
     1508      depthId.push_back( getDepthId( i ) );
     1509#endif
     1510#endif
    14661511    }
    14671512    std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "Layer Dependencies" << std::endl;
     
    14751520
    14761521  };
     1522
     1523#if H_MV_HLS10_AUX
     1524  Void    printScalabilityId()
     1525  {   
     1526    vector<Int> layerIdxInVps;
     1527
     1528#if H_3D
     1529    vector<Int> depthId;
     1530#endif
     1531
     1532    vector<Int> viewOrderIndex;
     1533    vector<Int> auxId;
     1534    vector<Int> dependencyId;
     1535    vector<Int> viewId;
     1536
     1537    for (Int i = 0; i <= getMaxLayersMinus1(); i++ )
     1538    {
     1539      Int layerIdInNuh = getLayerIdInNuh( i );
     1540      layerIdxInVps  .push_back( i );
     1541      viewOrderIndex.push_back( getViewIndex   ( layerIdInNuh ) );
     1542      dependencyId  .push_back( getDependencyId( layerIdInNuh ) );
     1543      auxId         .push_back( getAuxId       ( layerIdInNuh ) );     
     1544      viewId        .push_back( getViewId      ( layerIdInNuh ) );
     1545#if H_3D 
     1546      depthId       .push_back( getDepthId     ( layerIdInNuh ) );
     1547#endif
     1548    }
     1549
     1550    std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "Scalability Ids" << std::endl;
     1551    xPrintArray( "layerIdxInVps"  , getMaxLayersMinus1()+1, layerIdxInVps,          false );
     1552    xPrintArray( "layer_id_in_nuh", getMaxLayersMinus1()+1, m_layerIdInNuh, false );     
     1553   
     1554    xPrintArray( "ViewOrderIndex", getMaxLayersMinus1()+1, viewOrderIndex, false );     
     1555    xPrintArray( "DependencyId"  , getMaxLayersMinus1()+1, dependencyId  , false );     
     1556    xPrintArray( "AuxId"         , getMaxLayersMinus1()+1, auxId         , false );     
     1557    xPrintArray( "ViewId"        , getMaxLayersMinus1()+1, viewId        , false );     
     1558
     1559    std::cout << std::endl;
     1560  };
     1561#endif
     1562
     1563
    14771564
    14781565  Void    printLayerSets()
  • branches/HTM-12.0-dev1/source/Lib/TLibCommon/TypeDef.h

    r1055 r1060  
    403403#define H_MV_HLS10_GEN                       0  // General changes (not tested)
    404404
     405#define H_MV_HLS10_AUX                       1 // Auxiliary pictures
    405406#define H_MV_HLS10_GEN_FIX                   1
    406407
     
    413414#define H_MV_HLS10_MAXNUMPICS                1  // constraint on number of pictures in rps 
    414415#define H_MV_HLS10_PTL                       1  // profile tier level
     416#define H_MV_HLS10_PTL_FIX                   1  // profile tier level
    415417#define H_MV_HLS10_MULTILAYERSPS             1  // multilayer SPS extension
    416418#define H_MV_HLS10_VPS_VUI                   1  // vsp vui
     
    10621064#endif   
    10631065    VIEW_ORDER_INDEX  = 1,
     1066#if H_MV_HLS10_AUX
     1067    DEPENDENCY_ID = 2,
     1068    AUX_ID = 3,
     1069#endif   
    10641070  };
    10651071#endif
  • branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r1056 r1060  
    14571457  pcVPS->deriveTargetLayerIdList( 0 );
    14581458
     1459#if H_MV_HLS10_PTL_FIX
     1460  if (pcVPS->getVpsBaseLayerInternalFlag() )
     1461  { 
     1462    pcVPS->setProfileTierLevelIdx(0,0, pcVPS->inferProfileTierLevelIdx(0,0) );
     1463  }
     1464#endif
    14591465  for( Int i = 1; i < pcVPS->getNumOutputLayerSets( ); i++ )
    14601466  {
     
    14941500        READ_CODE( pcVPS->getProfileTierLevelIdxLen(), uiCode,"profile_tier_level_idx[ i ][ j ]" );   pcVPS->setProfileTierLevelIdx( i, j, uiCode );
    14951501      }
     1502#if H_MV_HLS10_PTL_FIX
     1503      if (pcVPS->getNecessaryLayerFlag( i, j ) && pcVPS->getVpsNumProfileTierLevelMinus1() == 0 )
     1504      {
     1505        pcVPS->setProfileTierLevelIdx( i , j, pcVPS->inferProfileTierLevelIdx( i, j) );
     1506      }
     1507#endif
    14961508    }
    14971509#else
  • branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncCavlc.cpp

    r1055 r1060  
    12411241
    12421242
     1243#if H_MV_HLS10_PTL_FIX
     1244  if (pcVPS->getVpsBaseLayerInternalFlag() )
     1245  { 
     1246    assert( pcVPS->getProfileTierLevelIdx(0,0) == pcVPS->inferProfileTierLevelIdx(0,0) );
     1247  }
     1248#endif
    12431249
    12441250
     
    12761282        WRITE_CODE( pcVPS->getProfileTierLevelIdx( i, j ), pcVPS->getProfileTierLevelIdxLen() ,"profile_tier_level_idx[ i ][ j ]" );   
    12771283      }
     1284#if H_MV_HLS10_PTL_FIX
     1285      if (pcVPS->getNecessaryLayerFlag( i, j ) && pcVPS->getVpsNumProfileTierLevelMinus1() == 0 )
     1286      {
     1287        assert( pcVPS->getProfileTierLevelIdx( i , j ) == pcVPS->inferProfileTierLevelIdx( i, j ) );
     1288      }
     1289#endif
     1290
    12781291    }
    12791292#else
Note: See TracChangeset for help on using the changeset viewer.