Changeset 738 in 3DVCSoftware for trunk/source/App/TAppEncoder/TAppEncCfg.cpp


Ignore:
Timestamp:
10 Dec 2013, 13:50:12 (10 years ago)
Author:
tech
Message:

Merged HTM-9.0-dev0@731. (MV-HEVC 6 HLS)

File:
1 edited

Legend:

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

    r724 r738  
    391391  ("VpsNumLayerSets",       m_vpsNumLayerSets    , 1                    , "Number of layer sets")   
    392392  ("LayerIdsInSet_%d",      m_layerIdsInSets     , std::vector<Int>(1,0), MAX_VPS_OP_SETS_PLUS1 ,"LayerIds of Layer set") 
     393#if H_MV_6_PS_0109_25
     394  ("DefaultOneTargetOutputLayerFlag"  , m_defaultOneTargetOutputLayerIdc  , 0, "Output highest layer of layer sets by default")
     395#else
    393396  ("DefaultOneTargetOutputLayerFlag", m_defaultOneTargetOutputLayerFlag,  false , "Output highest layer of layer sets by default")     
     397#endif
    394398  ("OutputLayerSetIdx",     m_outputLayerSetIdx  , std::vector<Int>(0,0), "Indices of layer sets used as additional output layer sets") 
    395399  ("LayerIdsInAddOutputLayerSet_%d", m_layerIdsInAddOutputLayerSet      , std::vector<Int>(1,0), MAX_VPS_ADD_OUTPUT_LAYER_SETS, "LayerIds of additional output layers") 
     
    448452  ("QuadtreeTUMaxDepthInter", m_uiQuadtreeTUMaxDepthInter, 2u, "Depth of TU tree for inter CUs")
    449453 
    450   // Coding structure paramters
     454  // Coding structure parameters
     455#if H_MV_LAYER_WISE_STARTUP
     456  ("IntraPeriod,-ip",         m_iIntraPeriod,std::vector<Int>(1,-1), "Intra period in frames, (-1: only first frame), per layer")
     457#else
    451458  ("IntraPeriod,-ip",         m_iIntraPeriod,              -1, "Intra period in frames, (-1: only first frame)")
     459#endif
    452460  ("DecodingRefreshType,-dr", m_iDecodingRefreshType,       0, "Intra refresh type (0:none 1:CRA 2:IDR)")
    453461  ("GOPSize,g",               m_iGOPSize,                   1, "GOP size of temporal structure")
     
    624632
    625633#if H_MV
     634
     635#if H_MV_6_HRD_O0217_13
     636  // DBP Size
     637  ("SubLayerFlagInfoPresentFlag",  m_subLayerFlagInfoPresentFlag , false                                           , "SubLayerFlagInfoPresentFlag")
     638#endif
    626639  // VPS VUI
    627640  ("VpsVuiPresentFlag"           , m_vpsVuiPresentFlag           , false                                           , "VpsVuiPresentFlag           ")
     641#if H_MV_6_PS_O0223_29
     642  ("CrossLayerPicTypeAlignedFlag", m_crossLayerPicTypeAlignedFlag, false                                           , "CrossLayerPicTypeAlignedFlag")  // Could actually be derived by the encoder
     643  ("CrossLayerIrapAlignedFlag"   , m_crossLayerIrapAlignedFlag   , false                                           , "CrossLayerIrapAlignedFlag   ")  // Could actually be derived by the encoder
     644#endif
    628645  ("BitRatePresentVpsFlag"       , m_bitRatePresentVpsFlag       , false                                           , "BitRatePresentVpsFlag       ")
    629646  ("PicRatePresentVpsFlag"       , m_picRatePresentVpsFlag       , false                                           , "PicRatePresentVpsFlag       ")
     
    634651  ("ConstantPicRateIdc"          , m_constantPicRateIdc          , std::vector< Int  >(1,0)  ,MAX_VPS_OP_SETS_PLUS1, "ConstantPicRateIdc per sub layer for the N-th layer set")
    635652  ("AvgPicRate"                  , m_avgPicRate                  , std::vector< Int  >(1,0)  ,MAX_VPS_OP_SETS_PLUS1, "AvgPicRate         per sub layer for the N-th layer set")
     653#if H_MV_6_O0226_37
     654  ("TilesNotInUseFlag"            , m_tilesNotInUseFlag            , true                                          , "TilesNotInUseFlag            ")
     655  ("TilesInUseFlag"               , m_tilesInUseFlag               , std::vector< Bool >(1,false)                   , "TilesInUseFlag               ")
     656  ("LoopFilterNotAcrossTilesFlag" , m_loopFilterNotAcrossTilesFlag , std::vector< Bool >(1,false)                  , "LoopFilterNotAcrossTilesFlag ")
     657  ("WppNotInUseFlag"              , m_wppNotInUseFlag              , true                                          , "WppNotInUseFlag              ")
     658  ("WppInUseFlag"                 , m_wppInUseFlag                 , std::vector< Bool >(1,0)                      , "WppInUseFlag                 ")
     659#endif
    636660  ("TileBoundariesAlignedFlag"   , m_tileBoundariesAlignedFlag   , std::vector< Bool >(1,0)  ,MAX_NUM_LAYERS       , "TileBoundariesAlignedFlag    per direct reference for the N-th layer")
    637661  ("IlpRestrictedRefLayersFlag"  , m_ilpRestrictedRefLayersFlag  , false                                           , "IlpRestrictedRefLayersFlag")
     
    10501074  xResizeVector( m_bLoopFilterDisable );
    10511075  xResizeVector( m_bUseSAO );
    1052 
     1076#if H_MV_LAYER_WISE_STARTUP
     1077  xResizeVector( m_iIntraPeriod );
     1078#endif
     1079#if H_MV_6_O0226_37
     1080  xResizeVector( m_tilesInUseFlag );
     1081  xResizeVector( m_loopFilterNotAcrossTilesFlag );
     1082  xResizeVector( m_wppInUseFlag );
     1083#endif
    10531084#else
    10541085  m_aidQP = new Int[ m_framesToBeEncoded + m_iGOPSize + 1 ];
     
    13951426    for ( Int i = 0; i < m_layerIdsInSets[lsIdx].size(); i++ )
    13961427    {
     1428#if H_MV_6_LAYER_ID_32
     1429      xConfirmPara( m_layerIdsInSets[lsIdx][i] < 0 || m_layerIdsInSets[lsIdx].size() >= MAX_NUM_LAYER_IDS, "LayerIdsInSet must be greater than and less than MAX_NUM_LAYER_IDS" );
     1430#else
    13971431      xConfirmPara( m_layerIdsInSets[lsIdx][i] < 0 || m_layerIdsInSets[lsIdx].size() >= MAX_NUM_LAYER_IDS, "LayerIdsInSet must be greater than and less than 64" );
     1432#endif
    13981433    }
    13991434  }
     
    14201455    }
    14211456  }
     1457
     1458#if H_MV_6_PS_0109_25
     1459  xConfirmPara( m_defaultOneTargetOutputLayerIdc < 0 || m_defaultOneTargetOutputLayerIdc > 1, "Default one target output layer idc must be equal to 0 or equal to 1" );
     1460#endif
    14221461  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" );
    14231462
     
    14361475  xConfirmPara( m_iGOPSize < 1 ,                                                            "GOP Size must be greater or equal to 1" );
    14371476  xConfirmPara( m_iGOPSize > 1 &&  m_iGOPSize % 2,                                          "GOP Size must be a multiple of 2, if GOP Size is greater than 1" );
     1477#if H_MV_LAYER_WISE_STARTUP
     1478  for( Int layer = 0; layer < m_numberOfLayers; layer++ )
     1479  {
     1480    xConfirmPara( (m_iIntraPeriod[layer] > 0 && m_iIntraPeriod[layer] < m_iGOPSize) || m_iIntraPeriod[layer] == 0, "Intra period must be more than GOP size, or -1 , not 0" );
     1481  }
     1482#else
    14381483  xConfirmPara( (m_iIntraPeriod > 0 && m_iIntraPeriod < m_iGOPSize) || m_iIntraPeriod == 0, "Intra period must be more than GOP size, or -1 , not 0" );
     1484#endif
    14391485  xConfirmPara( m_iDecodingRefreshType < 0 || m_iDecodingRefreshType > 2,                   "Decoding Refresh Type must be equal to 0, 1 or 2" );
    14401486#if H_MV
     
    14621508  if (m_iDecodingRefreshType == 2)
    14631509  {
     1510#if H_MV_LAYER_WISE_STARTUP
     1511    for (Int i = 0; i < m_numberOfLayers; i++ )
     1512    {
     1513      xConfirmPara( m_iIntraPeriod[i] > 0 && m_iIntraPeriod[i] <= m_iGOPSize ,                      "Intra period must be larger than GOP size for periodic IDR pictures");
     1514    }
     1515#else
    14641516    xConfirmPara( m_iIntraPeriod > 0 && m_iIntraPeriod <= m_iGOPSize ,                      "Intra period must be larger than GOP size for periodic IDR pictures");
     1517#endif
    14651518  }
    14661519  xConfirmPara( (m_uiMaxCUWidth  >> m_uiMaxCUDepth) < 4,                                    "Minimum partition width size should be larger than or equal to 8");
     
    17211774  /* if this is an intra-only sequence, ie IntraPeriod=1, don't verify the GOP structure
    17221775   * This permits the ability to omit a GOP structure specification */
     1776#if H_MV_LAYER_WISE_STARTUP
     1777  if (m_iIntraPeriod[layer] == 1 && m_GOPList[0].m_POC == -1) {
     1778#else
    17231779  if (m_iIntraPeriod == 1 && m_GOPList[0].m_POC == -1) {
     1780#endif
    17241781    m_GOPList[0] = GOPEntry();
    17251782    m_GOPList[0].m_QPFactor = 1;
     
    17461803  }
    17471804  Int numOK=0;
     1805#if H_MV_LAYER_WISE_STARTUP
     1806  xConfirmPara( m_iIntraPeriod[layer] >=0&&(m_iIntraPeriod[layer]%m_iGOPSize!=0), "Intra period must be a multiple of GOPSize, or -1" );
     1807#else
    17481808  xConfirmPara( m_iIntraPeriod >=0&&(m_iIntraPeriod%m_iGOPSize!=0), "Intra period must be a multiple of GOPSize, or -1" );
     1809#endif
    17491810
    17501811  for(Int i=0; i<m_iGOPSize; i++)
     
    17571818 
    17581819#if H_MV
     1820#if H_MV_LAYER_WISE_STARTUP
     1821  if ( (m_iIntraPeriod[layer] != 1) && !m_loopFilterOffsetInPPS && m_DeblockingFilterControlPresent && (!m_bLoopFilterDisable[layer]) )
     1822#else
    17591823  if ( (m_iIntraPeriod != 1) && !m_loopFilterOffsetInPPS && m_DeblockingFilterControlPresent && (!m_bLoopFilterDisable[layer]) )
     1824#endif
    17601825#else
    17611826  if ( (m_iIntraPeriod != 1) && !m_loopFilterOffsetInPPS && m_DeblockingFilterControlPresent && (!m_bLoopFilterDisable) )
     
    22822347  printf("Min PCM size                 : %d\n", 1 << m_uiPCMLog2MinSize);
    22832348  printf("Motion search range          : %d\n", m_iSearchRange );
     2349#if H_MV_LAYER_WISE_STARTUP
     2350  xPrintParaVector( "Intra period", m_iIntraPeriod );
     2351#else
    22842352  printf("Intra period                 : %d\n", m_iIntraPeriod );
     2353#endif
    22852354  printf("Decoding refresh type        : %d\n", m_iDecodingRefreshType );
    22862355#if !H_MV
Note: See TracChangeset for help on using the changeset viewer.