Changeset 964 in 3DVCSoftware for trunk/source/App/TAppEncoder


Ignore:
Timestamp:
5 Jul 2014, 05:16:45 (10 years ago)
Author:
tech
Message:
  • Merged 11.0-dev0@963. (Update to HM 14.0 + MV-HEVC Draft 8 HLS)
  • Added coding results.
  • Changed version number.
Location:
trunk/source/App/TAppEncoder
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/App/TAppEncoder/TAppEncCfg.cpp

    r950 r964  
    388388  ("VpsNumLayerSets",       m_vpsNumLayerSets    , 1                    , "Number of layer sets")   
    389389  ("LayerIdsInSet_%d",      m_layerIdsInSets     , std::vector<Int>(1,0), MAX_VPS_OP_SETS_PLUS1 ,"LayerIds of Layer set") 
    390   ("DefaultTargetOutputLayerIdc"     , m_defaultTargetOutputLayerIdc     , 0, "Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet")
     390  ("DefaultTargetOutputLayerIdc"     , m_defaultOutputLayerIdc     , 0, "Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet")
    391391  ("OutputLayerSetIdx",     m_outputLayerSetIdx  , std::vector<Int>(0,0), "Indices of layer sets used as additional output layer sets") 
    392392
    393393  ("LayerIdsInAddOutputLayerSet_%d", m_layerIdsInAddOutputLayerSet      , std::vector<Int>(0,0), MAX_VPS_ADD_OUTPUT_LAYER_SETS, "Indices in VPS of output layers in additional output layer set") 
    394394  ("LayerIdsInDefOutputLayerSet_%d", m_layerIdsInDefOutputLayerSet      , std::vector<Int>(0,0), MAX_VPS_OP_SETS_PLUS1, "Indices in VPS of output layers in layer set") 
     395#if H_MV_HLS_7_VPS_P0300_27
     396  ("AltOutputLayerFlag",    m_altOutputLayerFlag , std::vector<Bool>(1,0), "Alt output layer flag")
     397#endif
    395398  ("ProfileLevelTierIdx",   m_profileLevelTierIdx, std::vector<Int>(1,0), "Indices to profile level tier")
    396399 
     
    453456("IntraPeriod,-ip",         m_iIntraPeriod,              -1, "Intra period in frames, (-1: only first frame)")
    454457#endif
     458#if ALLOW_RECOVERY_POINT_AS_RAP
     459  ("DecodingRefreshType,-dr", m_iDecodingRefreshType,       0, "Intra refresh type (0:none 1:CRA 2:IDR 3:RecPointSEI)")
     460#else
    455461  ("DecodingRefreshType,-dr", m_iDecodingRefreshType,       0, "Intra refresh type (0:none 1:CRA 2:IDR)")
     462#endif
    456463  ("GOPSize,g",               m_iGOPSize,                   1, "GOP size of temporal structure")
    457464  // motion options
     
    470477  ("LambdaModifier5,-LM5", m_adLambdaModifier[ 5 ], ( Double )1.0, "Lambda modifier for temporal layer 5")
    471478  ("LambdaModifier6,-LM6", m_adLambdaModifier[ 6 ], ( Double )1.0, "Lambda modifier for temporal layer 6")
    472   ("LambdaModifier7,-LM7", m_adLambdaModifier[ 7 ], ( Double )1.0, "Lambda modifier for temporal layer 7")
    473479
    474480  /* Quantization parameters */
     
    694700  ("SEIToneMapCameraIsoSpeedIdc",                     m_cameraIsoSpeedIdc,                        0, "Indicates the camera ISO speed for daylight illumination")
    695701  ("SEIToneMapCameraIsoSpeedValue",                   m_cameraIsoSpeedValue,                    400, "Specifies the camera ISO speed for daylight illumination of Extended_ISO")
     702  ("SEIToneMapExposureIndexIdc",                      m_exposureIndexIdc,                         0, "Indicates the exposure index setting of the camera")
     703  ("SEIToneMapExposureIndexValue",                    m_exposureIndexValue,                     400, "Specifies the exposure index setting of the cameran of Extended_ISO")
    696704  ("SEIToneMapExposureCompensationValueSignFlag",     m_exposureCompensationValueSignFlag,        0, "Specifies the sign of ExposureCompensationValue")
    697705  ("SEIToneMapExposureCompensationValueNumerator",    m_exposureCompensationValueNumerator,       0, "Specifies the numerator of ExposureCompensationValue")
     
    724732  ("SEISOPDescription",              m_SOPDescriptionSEIEnabled,              0, "Control generation of SOP description SEI messages")
    725733  ("SEIScalableNesting",             m_scalableNestingSEIEnabled,              0, "Control generation of scalable nesting SEI messages")
     734#if H_MV
    726735  ("SubBitstreamPropSEIEnabled",              m_subBistreamPropSEIEnabled,    false                     ,"Enable signaling of sub-bitstream property SEI message")
    727736  ("SEISubBitstreamNumAdditionalSubStreams",  m_sbPropNumAdditionalSubStreams,0, "Number of substreams for which additional information is signalled")
     
    731740  ("SEISubBitstreamAvgBitRate",               m_sbPropAvgBitRate,             std::vector< Int  >(1,0)  ,"Specifies average bit rate of the i-th sub-bitstream")
    732741  ("SEISubBitstreamMaxBitRate",               m_sbPropMaxBitRate,             std::vector< Int  >(1,0)  ,"Specifies maximum bit rate of the i-th sub-bitstream")
     742#endif
    733743#if H_3D
    734744  ("CameraParameterFile,cpf", m_pchCameraParameterFile,    (Char *) 0, "Camera Parameter File Name")
     
    10471057  xResizeVector( m_loopFilterNotAcrossTilesFlag );
    10481058  xResizeVector( m_wppInUseFlag );
     1059
     1060#if H_MV_HLS_7_VPS_P0300_27
     1061  for (Int olsIdx = 0; olsIdx < m_vpsNumLayerSets + (Int) m_outputLayerSetIdx.size(); olsIdx++)
     1062  {   
     1063    m_altOutputLayerFlag.push_back( false );     
     1064  }
     1065#endif
    10491066#else
    10501067  m_aidQP = new Int[ m_framesToBeEncoded + m_iGOPSize + 1 ];
     
    14171434  }
    14181435
    1419   xConfirmPara( m_defaultTargetOutputLayerIdc < 0 || m_defaultTargetOutputLayerIdc > 2, "Default target output layer idc must greater than or equal to 0 and less than or equal to 2." ); 
    1420 
    1421   if( m_defaultTargetOutputLayerIdc != 2 )
     1436  xConfirmPara( m_defaultOutputLayerIdc < 0 || m_defaultOutputLayerIdc > 2, "Default target output layer idc must greater than or equal to 0 and less than or equal to 2." ); 
     1437
     1438  if( m_defaultOutputLayerIdc != 2 )
    14221439  {
    14231440    Bool anyDefaultOutputFlag = false;   
     
    14481465  }
    14491466
     1467#if H_MV_HLS_7_VPS_P0300_27
     1468  xConfirmPara( m_altOutputLayerFlag.size() < m_vpsNumLayerSets + m_outputLayerSetIdx.size(), "The number of Profile Level Tier indices must be equal to the number of layer set plus the number of output layer set indices" );
     1469#endif
    14501470  xConfirmPara( m_profileLevelTierIdx.size() < m_vpsNumLayerSets + m_outputLayerSetIdx.size(), "The number of Profile Level Tier indices must be equal to the number of layer set plus the number of output layer set indices" );
    14511471
     
    14721492  xConfirmPara( (m_iIntraPeriod > 0 && m_iIntraPeriod < m_iGOPSize) || m_iIntraPeriod == 0, "Intra period must be more than GOP size, or -1 , not 0" );
    14731493#endif
     1494#if ALLOW_RECOVERY_POINT_AS_RAP
     1495  xConfirmPara( m_iDecodingRefreshType < 0 || m_iDecodingRefreshType > 3,                   "Decoding Refresh Type must be comprised between 0 and 3 included" );
     1496  if(m_iDecodingRefreshType == 3)
     1497  {
     1498    xConfirmPara( !m_recoveryPointSEIEnabled,                                               "When using RecoveryPointSEI messages as RA points, recoveryPointSEI must be enabled" );
     1499  }
     1500#else
    14741501  xConfirmPara( m_iDecodingRefreshType < 0 || m_iDecodingRefreshType > 2,                   "Decoding Refresh Type must be equal to 0, 1 or 2" );
     1502#endif
    14751503#if H_MV
    14761504  for( Int layer = 0; layer < m_numberOfLayers; layer++ )
     
    15911619  xConfirmPara( m_pchCameraParameterFile    == 0                ,   "CameraParameterFile must be given");
    15921620  xConfirmPara( m_pchBaseViewCameraNumbers  == 0                ,   "BaseViewCameraNumbers must be given" );
     1621#if BUG_FIX_TK65
     1622  xConfirmPara( ( ((UInt) m_numberOfLayers >> 1 ) != m_cCameraData.getBaseViewNumbers().size() ) && ( m_numberOfLayers != m_cCameraData.getBaseViewNumbers().size() ),   "Number of Views in BaseViewCameraNumbers must be equal to NumberOfViews" );
     1623#else
    15931624  xConfirmPara( ((UInt) m_numberOfLayers >> 1 ) != m_cCameraData.getBaseViewNumbers().size(),   "Number of Views in BaseViewCameraNumbers must be equal to NumberOfViews" );
     1625#endif
    15941626  xConfirmPara    ( m_iCodedCamParPrecision < 0 || m_iCodedCamParPrecision > 5,       "CodedCamParsPrecision must be in range of 0..5" );
    15951627#if H_3D_VSO
     
    21782210    xConfirmPara( m_toneMapModelId < 0 || m_toneMapModelId > 4 , "SEIToneMapModelId must be in rage 0 to 4");
    21792211    xConfirmPara( m_cameraIsoSpeedValue == 0, "SEIToneMapCameraIsoSpeedValue shall not be equal to 0");
     2212    xConfirmPara( m_exposureIndexValue  == 0, "SEIToneMapExposureIndexValue shall not be equal to 0");
    21802213    xConfirmPara( m_extendedRangeWhiteLevel < 100, "SEIToneMapExtendedRangeWhiteLevel should be greater than or equal to 100");
    21812214    xConfirmPara( m_nominalBlackLevelLumaCodeValue >= m_nominalWhiteLevelLumaCodeValue, "SEIToneMapNominalWhiteLevelLumaCodeValue shall be greater than SEIToneMapNominalBlackLevelLumaCodeValue");
  • trunk/source/App/TAppEncoder/TAppEncCfg.h

    r950 r964  
    8989  Int                    m_vpsNumLayerSets;                   ///< Number of layer sets
    9090  std::vector< std::vector<Int> > m_layerIdsInSets;           ///< LayerIds in vps of layer set
    91   Int                    m_defaultTargetOutputLayerIdc;       ///< Specifies output layers of layer sets, 0: output all layers, 1: output highest layers, 2: specified by LayerIdsInDefOuputLayerSet
     91  Int                    m_defaultOutputLayerIdc;       ///< Specifies output layers of layer sets, 0: output all layers, 1: output highest layers, 2: specified by LayerIdsInDefOuputLayerSet
    9292  std::vector<Int>       m_outputLayerSetIdx;                 ///< Indices of layer sets used as additional output layer sets 
    9393  std::vector< std::vector<Int> > m_layerIdsInAddOutputLayerSet; ///< LayerIds in vps of additional output layers
    9494  std::vector< std::vector<Int> > m_layerIdsInDefOutputLayerSet; ///< Indices in vps of output layers in layer sets
    9595  std::vector<Int>       m_profileLevelTierIdx;               ///< Indices of of profile level tier
    96  
     96  #if H_MV_HLS_7_VPS_P0300_27
     97  std::vector<Bool>      m_altOutputLayerFlag;                ///< Alt output layer flag
     98#endif
     99
    97100  // Dependencies
    98101  std::vector< std::vector<Int> > m_directRefLayers;          ///< LayerIds of direct reference layers
     
    338341  Int       m_cameraIsoSpeedIdc;
    339342  Int       m_cameraIsoSpeedValue;
     343  Int       m_exposureIndexIdc;
     344  Int       m_exposureIndexValue;
    340345  Int       m_exposureCompensationValueSignFlag;
    341346  Int       m_exposureCompensationValueNumerator;
  • trunk/source/App/TAppEncoder/TAppEncTop.cpp

    r950 r964  
    5757TAppEncTop::TAppEncTop()
    5858{
     59
     60#if H_MV_HLS_8
     61  m_vps = new TComVPS;
     62#endif
    5963#if !H_MV
    6064  m_iFrameRcvd = 0;
     
    6670TAppEncTop::~TAppEncTop()
    6771{
     72#if H_MV_HLS_8
     73  if (m_vps)
     74  {
     75   delete m_vps;
     76  };
     77#endif
     78
    6879}
    6980
     
    7182{
    7283#if H_MV
     84#if H_MV_HLS_8
     85  TComVPS& vps = (*m_vps);   
     86#else
    7387  TComVPS& vps = m_vps;   
     88#endif
    7489#else
    7590  TComVPS vps;
     
    409424  m_cTEncTop.setTMISEICameraIsoSpeedIdc                   ( m_cameraIsoSpeedIdc );
    410425  m_cTEncTop.setTMISEICameraIsoSpeedValue                 ( m_cameraIsoSpeedValue );
     426  m_cTEncTop.setTMISEIExposureIndexIdc                    ( m_exposureIndexIdc );
     427  m_cTEncTop.setTMISEIExposureIndexValue                  ( m_exposureIndexValue );
    411428  m_cTEncTop.setTMISEIExposureCompensationValueSignFlag   ( m_exposureCompensationValueSignFlag );
    412429  m_cTEncTop.setTMISEIExposureCompensationValueNumerator  ( m_exposureCompensationValueNumerator );
     
    691708{
    692709#if H_3D
     710#if H_MV_HLS_8
     711  for ( Int viewIndex = 0; viewIndex < m_vps->getNumViews(); viewIndex++ )
     712  {
     713    m_vps->initCamParaVPS( viewIndex, true, m_cCameraData.getCamParsCodedPrecision(),
     714      m_cCameraData.getVaryingCameraParameters(), m_cCameraData.getCodedScale(), m_cCameraData.getCodedOffset() );
     715#else
    693716  for ( Int viewIndex = 0; viewIndex < m_vps.getNumViews(); viewIndex++ )
    694717  {
    695     m_vps.initCamParaVPS( viewIndex, true, m_cCameraData.getCamParsCodedPrecision(),
     718  m_vps.initCamParaVPS( viewIndex, true, m_cCameraData.getCamParsCodedPrecision(),
    696719      m_cCameraData.getVaryingCameraParameters(), m_cCameraData.getCodedScale(), m_cCameraData.getCodedOffset() );
     720#endif
    697721  }
    698722#endif
     
    12751299
    12761300  Int  defaultDirectDependencyType = -1;
     1301#if MV_FIX_DEP_TYPES
     1302  Bool defaultDirectDependencyFlag = false;
     1303#else
    12771304  Bool defaultDirectDependencyFlag = true;
     1305#endif
     1306
    12781307  for( Int depLayer = 1; depLayer < m_numberOfLayers; depLayer++ )
    12791308  {
     
    12931322      {
    12941323        defaultDirectDependencyType = curDirectDependencyType;
     1324#if MV_FIX_DEP_TYPES
     1325        defaultDirectDependencyFlag = true;
     1326#endif
    12951327      }
    12961328     
     
    14821514Void TAppEncTop::xSetRepFormat( TComVPS& vps )
    14831515{
     1516#if H_MV_HLS_8_PMS_Q0195_20
     1517  vps.setRepFormatIdxPresentFlag( false );
     1518#else
    14841519  vps.setRepFormatIdxPresentFlag( true );
     1520#endif
    14851521  vps.setVpsNumRepFormatsMinus1 ( 0    );
    14861522
     
    14991535  vps.setRepFormat( 0 , repFormat );
    15001536
     1537#if !H_MV_HLS_8_PMS_Q0195_20
    15011538  for(Int i = 0; i <= vps.getMaxLayersMinus1(); i++ )
    15021539  {
    15031540    vps.setVpsRepFormatIdx( i , 0 );
    15041541  }
     1542#endif
    15051543}
    15061544
     
    15131551  assert ( dpbSize != 0 );
    15141552
     1553#if H_MV_HLS_8_HRD_Q0102_08
     1554  for( Int i = 0; i < vps.getNumOutputLayerSets(); i++ )
     1555#else
    15151556  for( Int i = 1; i < vps.getNumOutputLayerSets(); i++ )
     1557#endif
    15161558  { 
     1559#if H_MV_HLS_8_MIS_Q0102_30
     1560    Int currLsIdx = vps.olsIdxToLsIdx( i );
     1561#endif
    15171562    std::vector<Int> targetDecLayerIdList = vps.getTargetDecLayerIdList( i );
    15181563    Bool subLayerFlagInfoPresentFlag = false;
    15191564
     1565#if H_MV_HLS_8_MIS_Q0102_30
     1566    for( Int j = 0; j  <=  vps.getMaxSubLayersInLayerSetMinus1( currLsIdx ); j++ )
     1567#else
    15201568    for( Int j = 0; j  <=  vps.getMaxSubLayersInLayerSetMinus1( i ); j++ )
     1569#endif
    15211570    {   
    15221571      Bool subLayerDpbInfoPresentFlag = false;
    1523       assert( vps.getNumSubDpbs( vps.getLayerSetIdxForOutputLayerSet( i ) ) == targetDecLayerIdList.size() );
    1524       for( Int k = 0; k < vps.getNumSubDpbs( vps.getLayerSetIdxForOutputLayerSet( i )); k++ )   
     1572#if H_MV_HLS_8_MIS_Q0102_30 || H_MV_HLS_8_DBP_NODOC_42
     1573      assert( vps.getNumLayersInIdList( currLsIdx ) == targetDecLayerIdList.size() );
     1574      for( Int k = 0; k < vps.getNumLayersInIdList( currLsIdx ); k++ )   
     1575#else
     1576      assert( vps.getNumSubDpbs( vps.olsIdxToLsIdx( i ) ) == targetDecLayerIdList.size() );
     1577      for( Int k = 0; k < vps.getNumSubDpbs( vps.olsIdxToLsIdx( i )); k++ )   
     1578#endif
    15251579      {
    15261580        Int layerIdInVps = vps.getLayerIdInVps( targetDecLayerIdList[k] );           
     
    15871641  Int numAddOuputLayerSets = (Int) m_outputLayerSetIdx.size();
    15881642  // Additional output layer sets + profileLevelTierIdx
    1589   vps.setDefaultTargetOutputLayerIdc      ( m_defaultTargetOutputLayerIdc );   
    1590   vps.setNumAddOutputLayerSets            ( numAddOuputLayerSets          );
     1643  vps.setDefaultOutputLayerIdc      ( m_defaultOutputLayerIdc );   
     1644#if H_MV_HLS_8_SYN_39_19
     1645  vps.setNumAddLayerSets            ( 0                             ); 
     1646  vps.setNumAddOlss                 ( numAddOuputLayerSets          );
     1647#else
     1648  vps.setNumAddLayerSets            ( numAddOuputLayerSets          );
     1649#endif
    15911650  vps.initTargetLayerIdLists();
    15921651
     
    15951654    Int addOutLsIdx = olsIdx - m_vpsNumLayerSets;     
    15961655   
    1597     vps.setOutputLayerSetIdxMinus1( olsIdx, ( ( addOutLsIdx < 0 ) ?  olsIdx  : m_outputLayerSetIdx[ addOutLsIdx ] ) - 1 );
    1598 
    1599     std::vector<Int>& layerIdList    = m_layerIdsInSets[ vps.getLayerSetIdxForOutputLayerSet( olsIdx ) ];
    1600 
    1601     if (vps.getDefaultTargetOutputLayerIdc() == 2 || addOutLsIdx >= 0 )
     1656    vps.setLayerSetIdxForOlsMinus1( olsIdx, ( ( addOutLsIdx < 0 ) ?  olsIdx  : m_outputLayerSetIdx[ addOutLsIdx ] ) - 1 );
     1657
     1658    std::vector<Int>& layerIdList    = m_layerIdsInSets[ vps.olsIdxToLsIdx( olsIdx ) ];
     1659
     1660    if (vps.getDefaultOutputLayerIdc() == 2 || addOutLsIdx >= 0 )
    16021661    {
    16031662      for ( Int i = 0; i < layerIdList.size(); i++)
     
    16371696      vps.setProfileLevelTierIdx( olsIdx, m_profileLevelTierIdx[ olsIdx ] );
    16381697    }
    1639 
     1698#if H_MV_HLS_7_VPS_P0300_27
     1699    if ( vps.getNumOutputLayersInOutputLayerSet( olsIdx ) == 1 &&
     1700        vps.getNumDirectRefLayers( vps.getOlsHighestOutputLayerId( olsIdx ) ) )
     1701    {   
     1702      vps.setAltOutputLayerFlag( olsIdx , m_altOutputLayerFlag[ olsIdx ]);
     1703    }
     1704    else
     1705    {
     1706      vps.setAltOutputLayerFlag( olsIdx , false );
     1707      if ( m_altOutputLayerFlag[ olsIdx ] )
     1708      {
     1709        printf( "\nWarning: Ignoring AltOutputLayerFlag for output layer set %d, since more than one output layer or no dependent layers.\n", olsIdx );           
     1710      }
     1711    }
     1712#else
    16401713    vps.setAltOutputLayerFlag( olsIdx , false);     
    1641   }
    1642 
     1714#endif
     1715  }
    16431716}
    16441717
  • trunk/source/App/TAppEncoder/TAppEncTop.h

    r872 r964  
    7575
    7676  TComPicLists               m_ivPicLists;                  ///< picture buffers of encoder instances
     77#if H_MV_HLS_8
     78  TComVPS*                   m_vps;                         ///< vps
     79#else
    7780  TComVPS                    m_vps;                         ///< vps
     81#endif
    7882#else
    7983  TEncTop                    m_cTEncTop;                    ///< encoder class
Note: See TracChangeset for help on using the changeset viewer.