Changeset 495 in 3DVCSoftware for branches/HTM-DEV-0.3-dev0


Ignore:
Timestamp:
25 Jun 2013, 22:11:57 (11 years ago)
Author:
tech
Message:

Fixed several bugs and mismatches.

Location:
branches/HTM-DEV-0.3-dev0
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.3-dev0/cfg/3D-HEVC/baseCfg_2view.cfg

    r494 r495  
    3030OutputLayerSetIdx             : 1            # Indices of layer sets used as additional output layer sets
    3131LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    32 ProfileLevelTierIdx           : 0 0          # Indices to profile level tier (TBD)
     32ProfileLevelTierIdx           : 0 0 0        # Indices to profile level tier (TBD) per output layer set
    3333
    3434#======== VPS / Dependencies ================
  • branches/HTM-DEV-0.3-dev0/cfg/3D-HEVC/baseCfg_3view+depth.cfg

    r494 r495  
    4343LayerIdsInAddOutputLayerSet_0 : 2 3          # LayerIds of additional output layers
    4444LayerIdsInAddOutputLayerSet_1 : 4 5          # LayerIds of additional output layers
    45 ProfileLevelTierIdx           : 0 0 0 0 0 0 # Indices to profile level tier (TBD)
     45ProfileLevelTierIdx           : 0 0 0 0 0 0 0 0 # Indices to profile level tier (TBD)
    4646
    4747#======== VPS / Dependencies ================
  • branches/HTM-DEV-0.3-dev0/cfg/3D-HEVC/baseCfg_3view.cfg

    r494 r495  
    3535LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    3636LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
    37 ProfileLevelTierIdx           : 0 0 0 0      # Indices to profile level tier (TBD)
     37ProfileLevelTierIdx           : 0 0 0 0 0 0   # Indices to profile level tier (TBD)
    3838
    3939#======== VPS / Dependencies ================
  • branches/HTM-DEV-0.3-dev0/cfg/MV-HEVC/baseCfg_2view.cfg

    r494 r495  
    3030OutputLayerSetIdx             : 1            # Indices of layer sets used as additional output layer sets
    3131LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    32 ProfileLevelTierIdx           : 0            # Indices to profile level tier (TBD)
     32ProfileLevelTierIdx           : 0 0 0        # Indices to profile level tier (TBD)
    3333
    3434#======== VPS / Dependencies ================
  • branches/HTM-DEV-0.3-dev0/cfg/MV-HEVC/baseCfg_3view.cfg

    r494 r495  
    3535LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    3636LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
    37 ProfileLevelTierIdx           : 0 0 0 0      # Indices to profile level tier (TBD)
     37ProfileLevelTierIdx           : 0 0 0 0 0 0  # Indices to profile level tier (TBD)
    3838
    3939#======== VPS / Dependencies ================
  • branches/HTM-DEV-0.3-dev0/source/App/TAppEncoder/TAppEncCfg.cpp

    r493 r495  
    228228    in>>entry.m_interViewRefPosL[1][i];
    229229  }
    230   in>>entry.m_collocatedRefLayerIdx;
     230  if (entry.m_numActiveRefLayerPics > 0 )
     231  {
     232    in>>entry.m_collocatedRefLayerIdx;
     233  }
    231234#endif
    232235  return in;
     
    13751378
    13761379  // Output layer sets
    1377   xConfirmPara( m_outputLayerSetIdx.size() < 0 || m_outputLayerSetIdx.size() > 1024, "The number of output layer set indices must be less than 1025") ;
     1380  xConfirmPara( m_outputLayerSetIdx.size() < 0 || m_outputLayerSetIdx.size() > 1024, "The number of output layer set indices must be less than 1025.") ;
    13781381  for (Int lsIdx = 0; lsIdx < m_outputLayerSetIdx.size(); lsIdx++)
    13791382  {   
    13801383    Int refLayerSetIdx = m_outputLayerSetIdx[ lsIdx ];
    1381     xConfirmPara(  refLayerSetIdx < 0 || refLayerSetIdx >= m_vpsNumLayerSets, "Output layer set idx must be greater or equal to 0 and less than the VpsNumLayerSets" );
     1384    xConfirmPara(  refLayerSetIdx < 0 || refLayerSetIdx >= m_vpsNumLayerSets, "Output layer set idx must be greater or equal to 0 and less than the VpsNumLayerSets." );
    13821385
    13831386    for (Int i = 0; i < m_layerIdsInAddOutputLayerSet[ lsIdx ].size(); i++)
     
    13901393          isAlsoInLayerSet = true;
    13911394          break;
    1392         }
    1393         xConfirmPara( !isAlsoInLayerSet, "All output layers must of a output layer set be included in corresponding layer set");
    1394       }
     1395        }       
     1396      }
     1397      xConfirmPara( !isAlsoInLayerSet, "All output layers of a output layer set be included in corresponding layer set.");
    13951398    }
    13961399  }
     
    14011404  {
    14021405    xConfirmPara( (i == 0)  && m_directRefLayers[0].size() != 0, "Layer 0 shall not have reference layers." );
    1403     xConfirmPara( m_directRefLayers[i].size() == m_dependencyTypes[ i ].size() != 0, "Each reference layer shall have a reference type" );
     1406    xConfirmPara( m_directRefLayers[i].size() != m_dependencyTypes[ i ].size(), "Each reference layer shall have a reference type." );
    14041407    for (Int j = 0; j < m_directRefLayers[i].size(); j++)
    14051408    {
     
    15731576  if( m_numberOfLayers > 1 )
    15741577  {
    1575     for( Int k = 1; k < m_numberOfLayers; k++ )
     1578    for( Int layer = 1; layer < m_numberOfLayers; layer++ )
    15761579    {
    15771580      for( Int i = 0; i < MAX_GOP+1; i++ )
    15781581      {
    1579         for( Int j = 0; j < m_GOPListMvc[k][i].m_numActiveRefLayerPics; j++ )
     1582        GOPEntry gopEntry = m_GOPListMvc[layer][i]; 
     1583        for( Int j = 0; j < gopEntry.m_numActiveRefLayerPics; j++ )
    15801584        {
    1581           Int ilPredLayerIdc = m_directRefLayers[k][m_GOPListMvc[k][i].m_interLayerPredLayerIdc[j]];
    1582           if( ilPredLayerIdc < 0 || ilPredLayerIdc >= m_directRefLayers[k].size() )
     1585          Int ilPredLayerIdc = gopEntry.m_interLayerPredLayerIdc[j];
     1586          if( ilPredLayerIdc < 0 || ilPredLayerIdc >= m_directRefLayers[layer].size() )
    15831587          {
    1584             printf( "\nError: inter-layer ref idc %d is not available for Frame%d_l%d\n", m_GOPListMvc[k][i].m_interLayerPredLayerIdc[j], i, k );
     1588            printf( "\nError: inter-layer ref idc %d is not available for Frame%d_l%d\n", gopEntry.m_interLayerPredLayerIdc[j], i, layer );
    15851589            bErrorIvpEnhV = true;
    15861590          }
    1587           if( m_GOPListMvc[k][i].m_interViewRefPosL[0][j] < -1 || m_GOPListMvc[k][i].m_interViewRefPosL[0][j] > m_GOPListMvc[k][i].m_numRefPicsActive )
     1591          if( gopEntry.m_interViewRefPosL[0][j] < -1 || gopEntry.m_interViewRefPosL[0][j] > gopEntry.m_numRefPicsActive )
    15881592          {
    1589             printf( "\nError: inter-layer ref pos %d on L0 is not available for Frame%d_l%d\n", m_GOPListMvc[k][i].m_interViewRefPosL[0][j], i, k );
     1593            printf( "\nError: inter-layer ref pos %d on L0 is not available for Frame%d_l%d\n", gopEntry.m_interViewRefPosL[0][j], i, layer );
    15901594            bErrorIvpEnhV = true;
    15911595          }
    1592           if( m_GOPListMvc[k][i].m_interViewRefPosL[1][j] < -1  || m_GOPListMvc[k][i].m_interViewRefPosL[1][j] > m_GOPListMvc[k][i].m_numRefPicsActive )
     1596          if( gopEntry.m_interViewRefPosL[1][j] < -1  || gopEntry.m_interViewRefPosL[1][j] > gopEntry.m_numRefPicsActive )
    15931597          {
    1594             printf( "\nError: inter-layer ref pos %d on L1 is not available for Frame%d_l%d\n", m_GOPListMvc[k][i].m_interViewRefPosL[1][j], i, k );
     1598            printf( "\nError: inter-layer ref pos %d on L1 is not available for Frame%d_l%d\n", gopEntry.m_interViewRefPosL[1][j], i, layer );
    15951599            bErrorIvpEnhV = true;
    15961600          }
     
    15981602        if( i == MAX_GOP ) // inter-view refs at I pic position in base view
    15991603        {
    1600           if( m_GOPListMvc[k][MAX_GOP].m_sliceType != 'B' && m_GOPListMvc[k][MAX_GOP].m_sliceType != 'P' && m_GOPListMvc[k][MAX_GOP].m_sliceType != 'I' )
     1604          if( gopEntry.m_sliceType != 'B' && gopEntry.m_sliceType != 'P' && gopEntry.m_sliceType != 'I' )
    16011605          {
    1602             printf( "\nError: slice type of FrameI_l%d must be equal to B or P or I\n", k );
     1606            printf( "\nError: slice type of FrameI_l%d must be equal to B or P or I\n", layer );
    16031607            bErrorIvpEnhV = true;
    16041608          }
    16051609
    1606           if( m_GOPListMvc[k][MAX_GOP].m_POC != 0 )
     1610          if( gopEntry.m_POC != 0 )
    16071611          {
    1608             printf( "\nError: POC %d not possible for FrameI_l%d, must be 0\n", m_GOPListMvc[k][MAX_GOP].m_POC, k );
     1612            printf( "\nError: POC %d not possible for FrameI_l%d, must be 0\n", gopEntry.m_POC, layer );
    16091613            bErrorIvpEnhV = true;
    16101614          }
    16111615
    1612           if( m_GOPListMvc[k][MAX_GOP].m_temporalId != 0 )
     1616          if( gopEntry.m_temporalId != 0 )
    16131617          {
    1614             printf( "\nWarning: Temporal id of FrameI_l%d must be 0 (cp. I-frame in base layer)\n", k );
    1615             m_GOPListMvc[k][MAX_GOP].m_temporalId = 0;
     1618            printf( "\nWarning: Temporal id of FrameI_l%d must be 0 (cp. I-frame in base layer)\n", layer );
     1619            gopEntry.m_temporalId = 0;
    16161620          }
    16171621
    1618           if( m_GOPListMvc[k][MAX_GOP].m_numRefPics != 0 )
     1622          if( gopEntry.m_numRefPics != 0 )
    16191623          {
    1620             printf( "\nWarning: temporal references not possible for FrameI_l%d\n", k );
    1621             for( Int j = 0; j < m_GOPListMvc[k][MAX_GOP].m_numRefPics; j++ )
     1624            printf( "\nWarning: temporal references not possible for FrameI_l%d\n", layer );
     1625            for( Int j = 0; j < m_GOPListMvc[layer][MAX_GOP].m_numRefPics; j++ )
    16221626            {
    1623               m_GOPListMvc[k][MAX_GOP].m_referencePics[j] = 0;
     1627              gopEntry.m_referencePics[j] = 0;
    16241628            }
    1625             m_GOPListMvc[k][MAX_GOP].m_numRefPics = 0;
     1629            gopEntry.m_numRefPics = 0;
    16261630          }
    16271631
    1628           if( m_GOPListMvc[k][MAX_GOP].m_interRPSPrediction )
     1632          if( gopEntry.m_interRPSPrediction )
    16291633          {
    1630             printf( "\nError: inter RPS prediction not possible for FrameI_l%d, must be 0\n", k );
     1634            printf( "\nError: inter RPS prediction not possible for FrameI_l%d, must be 0\n", layer );
    16311635            bErrorIvpEnhV = true;
    16321636          }
    16331637
    1634           if( m_GOPListMvc[k][MAX_GOP].m_sliceType == 'I' && m_GOPListMvc[k][MAX_GOP].m_numActiveRefLayerPics != 0 )
     1638          if( gopEntry.m_sliceType == 'I' && gopEntry.m_numActiveRefLayerPics != 0 )
    16351639          {
    1636             printf( "\nError: inter-layer prediction not possible for FrameI_l%d with slice type I, #IL_ref_pics must be 0\n", k );
     1640            printf( "\nError: inter-layer prediction not possible for FrameI_l%d with slice type I, #IL_ref_pics must be 0\n", layer );
    16371641            bErrorIvpEnhV = true;
    16381642          }
    16391643
    1640           if( m_GOPListMvc[k][MAX_GOP].m_numRefPicsActive > m_GOPListMvc[k][MAX_GOP].m_numActiveRefLayerPics )
     1644          if( gopEntry.m_numRefPicsActive > gopEntry.m_numActiveRefLayerPics )
    16411645          {
    1642             m_GOPListMvc[k][MAX_GOP].m_numRefPicsActive = m_GOPListMvc[k][MAX_GOP].m_numActiveRefLayerPics;
     1646            gopEntry.m_numRefPicsActive = gopEntry.m_numActiveRefLayerPics;
    16431647          }
    16441648
    1645           if( m_GOPListMvc[k][MAX_GOP].m_sliceType == 'P' )
     1649          if( gopEntry.m_sliceType == 'P' )
    16461650          {
    1647             if( m_GOPListMvc[k][MAX_GOP].m_numActiveRefLayerPics < 1 )
     1651            if( gopEntry.m_numActiveRefLayerPics < 1 )
    16481652            {
    1649               printf( "\nError: #IL_ref_pics must be at least one for FrameI_l%d with slice type P\n", k );
     1653              printf( "\nError: #IL_ref_pics must be at least one for FrameI_l%d with slice type P\n", layer );
    16501654              bErrorIvpEnhV = true;
    16511655            }
    16521656            else
    16531657            {
    1654               for( Int j = 0; j < m_GOPListMvc[k][MAX_GOP].m_numActiveRefLayerPics; j++ )
     1658              for( Int j = 0; j < gopEntry.m_numActiveRefLayerPics; j++ )
    16551659              {
    1656                 if( m_GOPListMvc[k][MAX_GOP].m_interViewRefPosL[1][j] != -1 )
     1660                if( gopEntry.m_interViewRefPosL[1][j] != -1 )
    16571661                {
    1658                   printf( "\nError: inter-layer ref pos %d on L1 not possible for FrameI_l%d with slice type P\n", m_GOPListMvc[k][MAX_GOP].m_interViewRefPosL[1][j], k );
     1662                  printf( "\nError: inter-layer ref pos %d on L1 not possible for FrameI_l%d with slice type P\n", gopEntry.m_interViewRefPosL[1][j], layer );
    16591663                  bErrorIvpEnhV = true;
    16601664                }
     
    16631667          }
    16641668
    1665           if( m_GOPListMvc[k][MAX_GOP].m_sliceType == 'B' && m_GOPListMvc[k][MAX_GOP].m_numActiveRefLayerPics < 1 )
     1669          if( gopEntry.m_sliceType == 'B' && gopEntry.m_numActiveRefLayerPics < 1 )
    16661670          {
    1667             printf( "\nError: #IL_ref_pics must be at least one for FrameI_l%d with slice type B\n", k );
     1671            printf( "\nError: #IL_ref_pics must be at least one for FrameI_l%d with slice type B\n", layer );
    16681672            bErrorIvpEnhV = true;
    16691673          }
  • branches/HTM-DEV-0.3-dev0/source/App/TAppEncoder/TAppEncCfg.h

    r493 r495  
    9090  Int                    m_vpsNumLayerSets;                   ///< Number of layer sets
    9191  std::vector< std::vector<Int> > m_layerIdsInSets;           ///< LayerIds in vps of layer set
    92   Bool                   m_defaultOneTargetOutputLayerFlag;   ///< Output highest layer of layer sets by default
    93   Int                    numAddOuputLayerSets;                ///< Number of additional output layer sets
     92  Bool                   m_defaultOneTargetOutputLayerFlag;   ///< Output highest layer of layer sets by default 
    9493  std::vector<Int>       m_outputLayerSetIdx;                 ///< Indices of layer sets used as additional output layer sets 
    9594  std::vector< std::vector<Int> > m_layerIdsInAddOutputLayerSet; ///< LayerIds in vps of additional output layers
     
    9796 
    9897  // Dependencies
    99   std::vector<std::vector<Int>> m_directRefLayers;             ///< LayerIds of direct reference layers
    100   std::vector<std::vector<Int>> m_dependencyTypes;             ///< Dependency types of direct reference layers
     98  std::vector< std::vector<Int> > m_directRefLayers;          ///< LayerIds of direct reference layers
     99  std::vector< std::vector<Int> > m_dependencyTypes;          ///< Dependency types of direct reference layers
    101100#endif
    102101  Double    m_adLambdaModifier[ MAX_TLAYER ];                 ///< Lambda modifier array for each temporal layer
  • branches/HTM-DEV-0.3-dev0/source/App/TAppEncoder/TAppEncTop.cpp

    r493 r495  
    119119  xSetDimensionIdAndLength ( vps );
    120120  xSetDependencies( vps );
     121  xSetProfileTierLevel     ( vps );
    121122  xSetLayerSets            ( vps );
    122123#if H_3D
     
    993994    {
    994995      vps.setDirectDependencyFlag( depLayer, refLayer, false);
    995       vps.setDirectDependencyType( depLayer, refLayer,    0 );
     996      vps.setDirectDependencyType( depLayer, refLayer,    -1 );
    996997    }
    997998  }
    998999  for( Int depLayer = 1; depLayer < m_numberOfLayers; depLayer++ )
    9991000  {
    1000     Int numRefLayers = m_directRefLayers[depLayer].size();
    1001     assert(  numRefLayers == m_dependencyTypes[depLayer].size() );
     1001    Int numRefLayers = (Int) m_directRefLayers[depLayer].size();
     1002    assert(  numRefLayers == (Int) m_dependencyTypes[depLayer].size() );
    10021003    for( Int i = 0; i < numRefLayers; i++ )
    10031004    {
     
    10121013  { 
    10131014    Int maxTid = -1;
    1014     for ( Int currLayerIdInVps = 1; currLayerIdInVps < m_numberOfLayers; currLayerIdInVps++)
     1015    for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++)
    10151016    {
    10161017      for( Int i = 0; i < getGOPSize(); i++ )
    10171018      {       
    1018         GOPEntry ge =  m_GOPListMvc[currLayerIdInVps][i];
     1019        GOPEntry geCur =  m_GOPListMvc[curLayerIdInVps][i];
     1020        GOPEntry geRef =  m_GOPListMvc[refLayerIdInVps][i];
    10191021       
    1020         for (Int j = 0; j < ge.m_numRefPicsActive; j++)
     1022        for (Int j = 0; j < geCur.m_numActiveRefLayerPics; j++)
    10211023        {       
    1022           if ( m_directRefLayers[ currLayerIdInVps ][ ge.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps )
     1024          if ( m_directRefLayers[ curLayerIdInVps ][ geCur.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps )
    10231025          {
    1024             maxTid = std::max( maxTid, ge.m_temporalId );
     1026            maxTid = std::max( maxTid, geRef.m_temporalId );
    10251027          }
    10261028        }
     
    10371039    {       
    10381040      GOPEntry ge =  m_GOPListMvc[currLayerIdInVps][ ( i < getGOPSize()  ? i : MAX_GOP ) ];
    1039       maxOneActiveRefLayerFlag =  maxOneActiveRefLayerFlag && (ge.m_numRefPicsActive <= 1);
     1041      maxOneActiveRefLayerFlag =  maxOneActiveRefLayerFlag && (ge.m_numActiveRefLayerPics <= 1);
    10401042    }           
    10411043  }
     
    10691071  return maxVec;
    10701072}
     1073
     1074
     1075Void TAppEncTop::xSetProfileTierLevel( TComVPS& vps )
     1076{
     1077  const Int vpsNumProfileTierLevelMinus1 = 0; //TBD
     1078  vps.setVpsNumProfileTierLevelMinus1( vpsNumProfileTierLevelMinus1 );
     1079 
     1080  for (Int i = 0; i <= vps.getVpsNumProfileTierLevelMinus1(); i++ )
     1081  {
     1082    vps.setVpsProfilePresentFlag( i, true );
     1083  }
     1084}
     1085
    10711086
    10721087Void TAppEncTop::xSetLayerSets( TComVPS& vps )
     
    10881103  }
    10891104
    1090   Int numAddOuputLayerSets = m_outputLayerSetIdx.size();
     1105  Int numAddOuputLayerSets = (Int) m_outputLayerSetIdx.size();
    10911106  // Additional output layer sets + profileLevelTierIdx
    10921107  vps.setDefaultOneTargetOutputLayerFlag   ( m_defaultOneTargetOutputLayerFlag );
  • branches/HTM-DEV-0.3-dev0/source/App/TAppEncoder/TAppEncTop.h

    r493 r495  
    119119  Void xSetDimensionIdAndLength   ( TComVPS& vps );
    120120  Void xSetDependencies           ( TComVPS& vps );
    121   Void xSetLayerSets( TComVPS& vps );
     121  Void xSetLayerSets              ( TComVPS& vps );
     122  Void xSetProfileTierLevel       ( TComVPS& vps );
    122123  Int  xGetMax( std::vector<Int>& vec);
    123124#endif
     
    131132#else
    132133  TEncTop&    getTEncTop  ()   { return  m_cTEncTop; }      ///< return encoder class pointer reference
    133  
    134134#endif
    135135};// END CLASS DEFINITION TAppEncTop
  • branches/HTM-DEV-0.3-dev0/source/Lib/TAppCommon/program_options_lite.h

    r491 r495  
    375375      {
    376376        std::string cNameBuffer;
    377         std::string cDescriptionBuffer;
    378 
    379         cNameBuffer       .resize( name.size() + 10 );
    380         cDescriptionBuffer.resize( desc.size() + 10 );
     377        std::string cDescBuffer;
     378
     379        cNameBuffer.resize( name.size() + 10 );
     380        cDescBuffer.resize( desc.size() + 10 );
    381381
    382382        storage.resize(uiMaxNum);
    383383        for ( unsigned int uiK = 0; uiK < uiMaxNum; uiK++ )
    384384        {
     385          Bool duplicate = (uiK != 0);
    385386          // isn't there are sprintf function for string??
    386           sprintf((char*) cNameBuffer.c_str()       ,name.c_str(),uiK,uiK);
    387           sprintf((char*) cDescriptionBuffer.c_str(),desc.c_str(),uiK,uiK);
    388 
    389           parent.addOption(new Option<T>( cNameBuffer, (storage[uiK]), default_val, cDescriptionBuffer, uiK != 0 ));
     387          sprintf((char*) cNameBuffer.c_str(),name.c_str(),uiK,uiK);
     388
     389          if ( !duplicate )
     390          {         
     391            sprintf((char*) cDescBuffer.c_str(),desc.c_str(),uiK,uiK);
     392          }
     393
     394          cNameBuffer.resize( std::strlen(cNameBuffer.c_str()) ); 
     395          cDescBuffer.resize( std::strlen(cDescBuffer.c_str()) );
     396         
     397
     398          parent.addOption(new Option<T>( cNameBuffer, (storage[uiK]), default_val, cDescBuffer, duplicate ));
    390399        }
    391400
  • branches/HTM-DEV-0.3-dev0/source/Lib/TLibCommon/TComRom.h

    r324 r495  
    162162
    163163#ifndef ENC_DEC_TRACE
    164 # define ENC_DEC_TRACE 0
     164# define ENC_DEC_TRACE 1
    165165#endif
    166166
  • branches/HTM-DEV-0.3-dev0/source/Lib/TLibCommon/TComSlice.cpp

    r491 r495  
    14571457  }
    14581458#if H_MV
     1459  for (Int lsIdx = 0; lsIdx < MAX_VPS_OP_SETS_PLUS1; lsIdx++ )
     1460  { 
     1461    for( Int layerId = 0; layerId < MAX_VPS_NUH_LAYER_ID_PLUS1; layerId++ )
     1462    {
     1463      m_layerIdIncludedFlag[lsIdx][layerId] = false;
     1464    }
     1465  }
     1466
    14591467  m_vpsNumberLayerSetsMinus1     = -1;
    14601468  m_vpsNumProfileTierLevelMinus1 = -1;
     
    14721480  {
    14731481    m_outputLayerSetIdxMinus1[i]  = -1;
    1474     m_profileLevelTierIdx[i]      = -1;
     1482    m_profileLevelTierIdx[i]      = 0;
    14751483    for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++)
    14761484    {
     
    14801488 
    14811489  m_maxOneActiveRefLayerFlag = false;
    1482   m_directDepTypeLenMinus2   = -1;         
     1490  m_directDepTypeLenMinus2   = 0;         
    14831491 
    14841492
  • branches/HTM-DEV-0.3-dev0/source/Lib/TLibCommon/TComSlice.h

    r493 r495  
    674674  Int     getVpsNumProfileTierLevelMinus1( )                               { return m_vpsNumProfileTierLevelMinus1; }
    675675 
    676   Void    setVpsProfilePresentFlag( Int layerSet, Bool val )               { m_vpsProfilePresentFlag[layerSet] = val;  }
    677   Bool    getVpsProfilePresentFlag( Int layerSet )                         { return m_vpsProfilePresentFlag[layerSet]; }
     676  Void    setVpsProfilePresentFlag( Int idx, Bool val )                    { m_vpsProfilePresentFlag[idx] = val;  }
     677  Bool    getVpsProfilePresentFlag( Int idx )                              { return m_vpsProfilePresentFlag[idx]; }
    678678
    679679  Void    setProfileRefMinus1( Int profileTierLevelIdx, Int val )          { m_profileRefMinus1[ profileTierLevelIdx ] = val;  }
  • branches/HTM-DEV-0.3-dev0/source/Lib/TLibCommon/TypeDef.h

    r488 r495  
    5757
    5858#ifndef HEVC_EXT
    59 #define HEVC_EXT                    2
     59#define HEVC_EXT                    1
    6060#endif
    6161
  • branches/HTM-DEV-0.3-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r492 r495  
    560560  UInt  uiCode;
    561561  READ_CODE( 4,  uiCode, "sps_video_parameter_set_id");          pcSPS->setVPSId        ( uiCode );
     562#if H_MV
     563  if ( pcSPS->getLayerId() == 0 )
     564  {
     565#endif
    562566  READ_CODE( 3,  uiCode, "sps_max_sub_layers_minus1" );          pcSPS->setMaxTLayers   ( uiCode+1 );
    563567  READ_FLAG( uiCode, "sps_temporal_id_nesting_flag" );               pcSPS->setTemporalIdNestingFlag ( uiCode > 0 ? true : false );
     
    566570    // sps_temporal_id_nesting_flag must be 1 when sps_max_sub_layers_minus1 is 0
    567571    assert( uiCode == 1 );
    568   }
    569  
     572  } 
    570573  parsePTL(pcSPS->getPTL(), 1, pcSPS->getMaxTLayers() - 1);
     574#if H_MV
     575  }
     576#endif
    571577  READ_UVLC(     uiCode, "sps_seq_parameter_set_id" );           pcSPS->setSPSId( uiCode );
    572578  READ_UVLC(     uiCode, "chroma_format_idc" );                  pcSPS->setChromaFormatIdc( uiCode );
     
    726732#else
    727733    READ_FLAG( uiCode, "inter_view_mv_vert_constraint_flag" );    pcSPS->setInterViewMvVertConstraintFlag(uiCode == 1 ? true : false);
    728     READ_FLAG( uiCode, "sps_extension2_flag");
    729734    ////   sps_extension_vui_parameters( )
    730735    if( pcSPS->getVuiParameters()->getBitstreamRestrictionFlag() )
     
    747752    ////   sps_extension_vui_parameters( ) END
    748753    READ_UVLC( uiCode, "sps_shvc_reserved_zero_idc" );
    749 
     754    READ_FLAG( uiCode, "sps_extension2_flag");
    750755    if ( uiCode )
    751756    {
     
    756761      }
    757762#else
     763     
    758764      UInt uiCamParPrecision = 0;
    759765      Bool bCamParSlice      = false;
     
    839845#if H_MV
    840846  assert( pcVPS->getVpsMaxLayerId() < MAX_VPS_NUH_LAYER_ID_PLUS1 );
    841   READ_CODE( 6, uiCode, "vps_max_nuh_layer_id" );   pcVPS->setVpsMaxLayerId( uiCode );
     847  READ_CODE( 6, uiCode, "vps_max_layer_id" );   pcVPS->setVpsMaxLayerId( uiCode );
    842848
    843849  READ_UVLC(    uiCode, "vps_max_num_layer_sets_minus1" );               pcVPS->setVpsNumLayerSetsMinus1( uiCode );
     
    950956    READ_CODE( 6,  uiCode, "vps_num_profile_tier_level_minus1" );  pcVPS->setVpsNumProfileTierLevelMinus1( uiCode );
    951957
    952     for( Int i = 1; i <= pcVPS->getVpsNumberLayerSetsMinus1(); i++ )
     958    for( Int i = 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ )
    953959    {
    954960      READ_FLAG(  uiCode, "vps_profile_present_flag[i]" );    pcVPS->setVpsProfilePresentFlag( i, uiCode == 1 );
     
    986992      {       
    987993        READ_UVLC( uiCode,      "output_layer_set_idx_minus1[i]" ); pcVPS->setOutputLayerSetIdxMinus1( i, uiCode );
    988         for( Int j = 0; j <= pcVPS->getNumLayersInIdList( j ); j++ )
     994        for( Int j = 0; j < pcVPS->getNumLayersInIdList( j ) - 1; j++ )
    989995        {
    990996          READ_FLAG( uiCode, "output_layer_flag" ); pcVPS->setOutputLayerFlag( i, j, uiCode == 1 );
    991         }
     997        }       
     998      }
     999      if ( pcVPS->getProfileLevelTierIdxLen()  > 0 )
     1000      {     
    9921001        READ_CODE( pcVPS->getProfileLevelTierIdxLen(), uiCode,"profile_level_tier_idx[ i ]" );   pcVPS->setProfileLevelTierIdx( i , uiCode );
    9931002      }
     
    10011010      for( Int j = 0; j < i; j++ )
    10021011      {
    1003         READ_CODE( pcVPS->getDirectDepTypeLenMinus2( ) + 2,  uiCode, "direct_dependency_type[i][j]" ); pcVPS->setDirectDependencyType( i, j , uiCode);
     1012        if (pcVPS->getDirectDependencyFlag( i, j) )
     1013        {       
     1014          READ_CODE( pcVPS->getDirectDepTypeLenMinus2( ) + 2,  uiCode, "direct_dependency_type[i][j]" ); pcVPS->setDirectDependencyType( i, j , uiCode);
     1015        }
    10041016      }
    10051017    }
     
    11561168      rps->setNumberOfPictures(0);
    11571169      rpcSlice->setRPS(rps);
     1170#if H_MV
     1171      rpcSlice->setEnableTMVPFlag(false);
     1172#endif
    11581173    }
    11591174    else
  • branches/HTM-DEV-0.3-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp

    r493 r495  
    449449#endif
    450450  WRITE_CODE( pcSPS->getVPSId (),          4,       "sps_video_parameter_set_id" );
     451#if H_MV
     452  if ( pcSPS->getLayerId() == 0 )
     453  {
     454#endif
    451455  WRITE_CODE( pcSPS->getMaxTLayers() - 1,  3,       "sps_max_sub_layers_minus1" );
    452456  WRITE_FLAG( pcSPS->getTemporalIdNestingFlag() ? 1 : 0,                             "sps_temporal_id_nesting_flag" );
    453457  codePTL(pcSPS->getPTL(), 1, pcSPS->getMaxTLayers() - 1);
     458#if H_MV
     459}
     460#endif
    454461  WRITE_UVLC( pcSPS->getSPSId (),                   "sps_seq_parameter_set_id" );
    455462  WRITE_UVLC( pcSPS->getChromaFormatIdc (),         "chroma_format_idc" );
     
    795802    {     
    796803      WRITE_UVLC( pcVPS->getOutputLayerSetIdxMinus1( i ),      "output_layer_set_idx_minus1[i]" );
    797       for( Int j = 0; j <= pcVPS->getNumLayersInIdList( j ); j++ )
     804      for( Int j = 0; j < pcVPS->getNumLayersInIdList( j ) - 1 ; j++ )
    798805      {
    799806        WRITE_FLAG( pcVPS->getOutputLayerFlag( i, j) ? 1 : 0, "output_layer_flag" );
    800       }
     807      }     
     808    }
     809    if ( pcVPS->getProfileLevelTierIdxLen()  > 0 )
     810    {     
    801811      WRITE_CODE( pcVPS->getProfileLevelTierIdx( i ), pcVPS->getProfileLevelTierIdxLen() ,"profile_level_tier_idx[ i ]" );   
    802812    }
     
    810820      for( Int j = 0; j < i; j++ )
    811821      {
    812         WRITE_CODE( pcVPS->getDirectDependencyType( i, j ),pcVPS->getDirectDepTypeLenMinus2( ) + 2,  "direct_dependency_type[i][j]" );
     822        if (pcVPS->getDirectDependencyFlag( i, j) )
     823        {       
     824          assert ( pcVPS->getDirectDependencyType( i, j ) != -1 );
     825          WRITE_CODE( pcVPS->getDirectDependencyType( i, j ),pcVPS->getDirectDepTypeLenMinus2( ) + 2,  "direct_dependency_type[i][j]" );
     826        }
    813827      }
    814828    }
     
    11711185      {
    11721186        WRITE_FLAG( pcSlice->getAltCollocatedIndicationFlag( ) ? 1 : 0 , "alt_collocated_indication_flag" );
    1173 
    11741187        if( pcSlice->getAltCollocatedIndicationFlag() && pcSlice->getNumActiveMotionPredRefLayers() > 1 )
    11751188        {         
  • branches/HTM-DEV-0.3-dev0/source/Lib/TLibEncoder/TEncGOP.cpp

    r493 r495  
    835835      pcSlice->setEnableTMVPFlag(0);
    836836    }
     837#if H_MV
     838    if( pcSlice->getIdrPicFlag() )
     839    {
     840      pcSlice->setEnableTMVPFlag(0);
     841    }
     842#endif
    837843
    838844#if H_3D_VSO
Note: See TracChangeset for help on using the changeset viewer.