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


Ignore:
Timestamp:
10 Nov 2014, 12:22:20 (10 years ago)
Author:
tech
Message:

Merged branch 12.2-dev0@1123

Location:
trunk/source/App/TAppEncoder
Files:
4 edited

Legend:

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

    r1084 r1124  
    377377  ("DepthFlag",             m_depthFlag          , std::vector<Int>(1,0), "Depth Flag")
    378378#if H_3D_DIM
     379#if !HHI_TOOL_PARAMETERS_I2_J0107
    379380  ("DMM",                   m_useDMM,           true,  "Depth intra model modes")
    380381  ("IVP",                   m_useIVP,           true,  "intra-view prediction")
    381382  ("SDC",                   m_useSDC,           true,  "Simplified depth coding")
     383#endif
    382384  ("DLT",                   m_useDLT,           true,  "Depth lookup table")
    383385#endif
    384386#if H_3D
     387#if !HHI_TOOL_PARAMETERS_I2_J0107
    385388  ("SingleDepthMode",    m_useSingleDepthMode, true, "Single depth mode")                         
     389#endif
    386390#endif
    387391#endif
     
    404408  ("ProfileTierLevelIdx_%d",  m_profileTierLevelIdx, std::vector<Int>(0), MAX_NUM_LAYERS, "Indices to profile level tier for ols")
    405409  // Layer dependencies
     410#if HHI_DEPENDENCY_SIGNALLING_I1_J0107
     411  ("DirectRefLayers_%d",    m_directRefLayers    , std::vector<Int>(0,0), MAX_NUM_LAYERS, "LayerIdx in VPS of direct reference layers")
     412#else
    406413  ("DirectRefLayers_%d",    m_directRefLayers    , std::vector<Int>(0,0), MAX_NUM_LAYERS, "LayerIds of direct reference layers")
     414#endif
    407415  ("DependencyTypes_%d",    m_dependencyTypes    , std::vector<Int>(0,0), MAX_NUM_LAYERS, "Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion")
    408416#endif
     
    530538  ("DeblockingFilterMetric",         m_DeblockingFilterMetric,         false )
    531539
     540#if !HHI_TOOL_PARAMETERS_I2_J0107
    532541#if H_3D_ARP
    533542  ("AdvMultiviewResPred",      m_uiUseAdvResPred,           (UInt)1, "Usage of Advanced Residual Prediction" )
     
    537546  ("SubPUMPILog2Size", m_iSubPUMPILog2Size, (Int)3, "Sub-PU MPI size index: 2^n")
    538547#endif
     548#endif
    539549#if H_3D_IC
    540550  ("IlluCompEnable",           m_abUseIC, true, "Enable illumination compensation")
    541551  ("IlluCompLowLatencyEnc",    m_bUseLowLatencyICEnc, false, "Enable low-latency illumination compensation encoding")
    542552#endif
     553#if !HHI_TOOL_PARAMETERS_I2_J0107
    543554#if H_3D_INTER_SDC
    544555  ("InterSDC",                 m_bDepthInterSDCFlag,        true, "Enable depth inter SDC")
     
    549560#if H_3D_IV_MERGE
    550561  ("MPI",                      m_bMPIFlag,        true, "Enable MPI")
     562#endif
    551563#endif
    552564  // Coding tools
     
    789801
    790802#endif //HHI_VSO
     803#if HHI_TOOL_PARAMETERS_I2_J0107
     804  ("QTL",                             m_bUseQTL                 , true          , "Use depth quad tree limitation (encoder only)" )
     805#else
    791806#if H_3D_QTLPC
    792807  ("LimQtPredFlag",                   m_bLimQtPredFlag          , true          , "Use Predictive Coding with QTL" )
     
    804819#if H_3D
    805820  ("IvMvScaling",                     m_ivMvScalingFlag      ,  true            , "inter view motion vector scaling" )   
     821#endif
     822#endif
     823
     824#if HHI_TOOL_PARAMETERS_I2_J0107
     825  ("IvMvPredFlag"          , m_ivMvPredFlag          , std::vector< Bool >(2,true)                    , "Inter-view motion prediction"              )
     826  ("IvMvScalingFlag"       , m_ivMvScalingFlag       , std::vector< Bool >(2,true)                    , "Inter-view motion vector scaling"          )
     827  ("Log2SubPbSizeMinus3"   , m_log2SubPbSizeMinus3   , 0                                              , "Log2 minus 3 of sub Pb size"               )
     828  ("IvResPredFlag"         , m_ivResPredFlag         , true                                           , "Inter-view residual prediction"            )
     829  ("DepthRefinementFlag"   , m_depthRefinementFlag   , true                                           , "Depth to refine disparity"                 )
     830  ("ViewSynthesisPredFlag" , m_viewSynthesisPredFlag , true                                           , "View synthesis prediction"                 )
     831  ("DepthBasedBlkPartFlag" , m_depthBasedBlkPartFlag , true                                           , "Depth base block partitioning"             )
     832  ("MpiFlag"               , m_mpiFlag               , true                                           , "Motion inheritance from texture to depth"  )
     833  ("Log2MpiSubPbSizeMinus3", m_log2MpiSubPbSizeMinus3, 0                                              , "Log2 minus 3 of sub Pb size for MPI"       )
     834  ("IntraContourFlag"      , m_intraContourFlag      , true                                           , "Intra contour mode"                        )
     835  ("IntraWedgeFlag"        , m_intraWedgeFlag        , true                                           , "Intra wedge mode and segmental depth DCs"  )
     836  ("IntraSdcFlag"          , m_intraSdcFlag          , true                                           , "Intra depth DCs"                           )
     837  ("QtPredFlag"            , m_qtPredFlag            , true                                           , "Quad tree prediction from texture to depth")
     838  ("InterSdcFlag"          , m_interSdcFlag          , true                                           , "Inter depth DCs"                           )
     839  ("IntraSingleFlag"       , m_intraSingleFlag       , true                                           , "Intra single mode"                         )
    806840#endif
    807841#endif //H_3D
     
    16461680
    16471681#if H_3D_ARP
     1682#if !HHI_TOOL_PARAMETERS_I2_J0107
    16481683  xConfirmPara( ( 0 != m_uiUseAdvResPred ) &&  ( 1 != m_uiUseAdvResPred ), "UseAdvResPred must be 0 or 1." );
    16491684#endif
     1685#endif
    16501686#if H_3D_SPIVMP
     1687#if HHI_TOOL_PARAMETERS_I2_J0107
     1688  xConfirmPara( m_log2SubPbSizeMinus3 < 0,                                        "Log2SubPbSizeMinus3 must be equal to 0 or greater.");
     1689  xConfirmPara( m_log2SubPbSizeMinus3 > 3,                                        "Log2SubPbSizeMinus3 must be equal to 3 or smaller.");
     1690  xConfirmPara( (1<< ( m_log2SubPbSizeMinus3 + 3) ) > m_uiMaxCUWidth,              "Log2SubPbSizeMinus3 must be  equal to log2(maxCUSize)-3 or smaller.");
     1691 
     1692  xConfirmPara( m_log2MpiSubPbSizeMinus3 < 0,                                        "Log2MpiSubPbSizeMinus3 must be equal to 0 or greater.");
     1693  xConfirmPara( m_log2MpiSubPbSizeMinus3 > 3,                                        "Log2MpiSubPbSizeMinus3 must be equal to 3 or smaller.");
     1694  xConfirmPara( (1<< (m_log2MpiSubPbSizeMinus3 + 3)) > m_uiMaxCUWidth,               "Log2MpiSubPbSizeMinus3 must be equal to log2(maxCUSize)-3 or smaller.");
     1695#else
    16511696  xConfirmPara( m_iSubPULog2Size < 3,                                        "SubPULog2Size must be 3 or greater.");
    16521697  xConfirmPara( m_iSubPULog2Size > 6,                                        "SubPULog2Size must be 6 or smaller.");
     
    16561701  xConfirmPara( m_iSubPUMPILog2Size > 6,                                        "SubPUMPILog2Size must be 6 or smaller.");
    16571702  xConfirmPara( ( 1 << m_iSubPUMPILog2Size ) > m_uiMaxCUWidth,                  "SubPUMPILog2Size must be log2(maxCUSize) or smaller.");
     1703#endif
    16581704#endif
    16591705#if ADAPTIVE_QP_SELECTION
     
    26022648  printf("WVSO:%d ", m_bUseWVSO ); 
    26032649#endif
     2650
     2651#if HHI_TOOL_PARAMETERS_I2_J0107
     2652  printf( "QTL:%d "                  , m_bUseQTL);
     2653  printf( "IlluCompEnable:%d "       , m_abUseIC);
     2654  printf( "IlluCompLowLatencyEnc:%d ",  m_bUseLowLatencyICEnc);
     2655  printf( "DLT:%d ", m_useDLT );
     2656
     2657
     2658  printf( "IvMvPred:%d %d "            , m_ivMvPredFlag[0] ? 1 : 0, m_ivMvPredFlag[1]  ? 1 : 0);
     2659  printf( "IvMvScaling:%d %d "         , m_ivMvScalingFlag[0] ? 1 : 0 , m_ivMvScalingFlag[1]  ? 1 : 0);
     2660
     2661  printf( "Log2SubPbSizeMinus3:%d "    , m_log2SubPbSizeMinus3            );
     2662  printf( "IvResPred:%d "              , m_ivResPredFlag          ? 1 : 0 );
     2663  printf( "DepthRefinement:%d "        , m_depthRefinementFlag    ? 1 : 0 );
     2664  printf( "ViewSynthesisPred:%d "      , m_viewSynthesisPredFlag  ? 1 : 0 );
     2665  printf( "DepthBasedBlkPart:%d "      , m_depthBasedBlkPartFlag  ? 1 : 0 );
     2666  printf( "Mpi:%d "                    , m_mpiFlag                ? 1 : 0 );
     2667  printf( "Log2MpiSubPbSizeMinus3:%d " , m_log2MpiSubPbSizeMinus3         );
     2668  printf( "IntraContour:%d "           , m_intraContourFlag       ? 1 : 0 );
     2669  printf( "IntraWedge:%d "             , m_intraWedgeFlag         ? 1 : 0 );
     2670  printf( "IntraSdc:%d "               , m_intraSdcFlag           ? 1 : 0 );
     2671  printf( "QtPred:%d "                 , m_qtPredFlag             ? 1 : 0 );
     2672  printf( "InterSdc:%d "               , m_interSdcFlag           ? 1 : 0 );
     2673  printf( "IntraSingle:%d "            , m_intraSingleFlag        ? 1 : 0 );
     2674
     2675#else
    26042676#if H_3D_QTLPC
    26052677  printf("LimQtPredFlag:%d ", m_bLimQtPredFlag ? 1 : 0);
    26062678  printf("QTL:%d ", m_bUseQTL);
    26072679#endif
    2608 #if H_3D_IV_MERGE
     2680#if H_3D_IV_MERGE 
    26092681  printf("IvMvPred:%d %d", m_ivMvPredFlag[0] ? 1 : 0, m_ivMvPredFlag[1] ? 1 : 0);
    26102682#if H_3D_SPIVMP
     
    26472719  printf( "MPI:%d ", m_bMPIFlag ? 1 : 0 );
    26482720#endif
     2721#endif
     2722
    26492723  printf("\n\n"); 
    26502724
  • trunk/source/App/TAppEncoder/TAppEncCfg.h

    r1084 r1124  
    132132  Bool m_higherLayerIrapSkipFlag;
    133133
    134 
     134#if !HHI_TOOL_PARAMETERS_I2_J0107
    135135#if H_3D_IV_MERGE
    136136  vector<Bool>           m_ivMvPredFlag;                      ///< Interview motion vector prediction
     137
    137138#if H_3D_SPIVMP
    138139  Int                    m_iSubPULog2Size;                   
     
    147148  UInt                   m_uiARPStepNum;
    148149#endif
     150#endif
     151
    149152#if H_3D_IC
    150153  Bool   m_abUseIC;
    151154  Bool   m_bUseLowLatencyICEnc;
    152155#endif
     156
     157#if !HHI_TOOL_PARAMETERS_I2_J0107
    153158#if H_3D_NBDV_REF
    154159  Bool m_depthRefinementFlag; 
     
    159164#if H_3D
    160165  Bool m_ivMvScalingFlag;
     166#endif
    161167#endif
    162168#endif
     
    486492#endif
    487493#if H_3D_DIM
     494#if !HHI_TOOL_PARAMETERS_I2_J0107
    488495  Bool      m_useDMM;                                        ///< flag for using DMM
    489496  Bool      m_useIVP;
    490497  Bool      m_useSDC;                                        ///< flag for using SDC
     498#endif
    491499  Bool      m_useDLT;                                        ///< flag for using DLT
    492500#endif
     501#if !HHI_TOOL_PARAMETERS_I2_J0107
    493502#if H_3D_SINGLE_DEPTH
    494503  Bool     m_useSingleDepthMode;                          ///< flag for using single depth mode
    495504#endif
     505#endif
    496506#if H_3D_QTLPC
    497507  Bool      m_bUseQTL;                                        ///< flag for using depth QuadTree Limitation
    498508#endif
     509#if !HHI_TOOL_PARAMETERS_I2_J0107
    499510#if H_3D_INTER_SDC
    500511  Bool m_bDepthInterSDCFlag;                                ///< flag for inter SDC of depth map coding
     
    506517  Bool m_bMPIFlag;                                           ///< flag for MPI of depth map coding
    507518#endif
     519#endif
     520
     521#if HHI_TOOL_PARAMETERS_I2_J0107
     522  std::vector< Bool >    m_ivMvPredFlag;
     523  std::vector< Bool >    m_ivMvScalingFlag;
     524  Int                    m_log2SubPbSizeMinus3;
     525  Bool                   m_ivResPredFlag;
     526  Bool                   m_depthRefinementFlag;
     527  Bool                   m_viewSynthesisPredFlag;
     528  Bool                   m_depthBasedBlkPartFlag;
     529  Bool                   m_mpiFlag;
     530  Int                    m_log2MpiSubPbSizeMinus3;
     531  Bool                   m_intraContourFlag;
     532  Bool                   m_intraWedgeFlag;
     533  Bool                   m_intraSdcFlag;
     534  Bool                   m_qtPredFlag;
     535  Bool                   m_interSdcFlag;
     536  Bool                   m_intraSingleFlag;
     537#endif
     538
    508539#endif
    509540  // internal member functions
  • trunk/source/App/TAppEncoder/TAppEncTop.cpp

    r1084 r1124  
    140140  xSetVPSVUI               ( vps );
    141141#if H_3D
     142#if !HHI_TOOL_PARAMETERS_I2_J0107
    142143  xSetVPSExtension2        ( vps );
     144#endif
    143145  m_ivPicLists.setVPS      ( &vps );
    144146  xDeriveDltArray          ( vps, dlt );
     
    173175    vps.printPTL();
    174176  }
     177
     178#if HHI_TOOL_PARAMETERS_I2_J0107
     179#if H_3D
     180  // Set 3d tool parameters
     181
     182  for (Int d = 0; d < 2; d++)
     183  { 
     184    m_sps3dExtension.setIvMvPredFlag          ( d, m_ivMvPredFlag[d]       );
     185    m_sps3dExtension.setIvMvScalingFlag       ( d, m_ivMvScalingFlag[d]    );
     186    if (d == 0 )
     187    {   
     188      m_sps3dExtension.setLog2SubPbSizeMinus3   ( d, m_log2SubPbSizeMinus3   );
     189      m_sps3dExtension.setIvResPredFlag         ( d, m_ivResPredFlag         );
     190      m_sps3dExtension.setDepthRefinementFlag   ( d, m_depthRefinementFlag   );
     191      m_sps3dExtension.setViewSynthesisPredFlag ( d, m_viewSynthesisPredFlag );
     192      m_sps3dExtension.setDepthBasedBlkPartFlag ( d, m_depthBasedBlkPartFlag );
     193    }
     194    else
     195    {   
     196      m_sps3dExtension.setMpiFlag               ( d, m_mpiFlag               );
     197      m_sps3dExtension.setLog2MpiSubPbSizeMinus3( d, m_log2MpiSubPbSizeMinus3);
     198      m_sps3dExtension.setIntraContourFlag      ( d, m_intraContourFlag      );
     199      m_sps3dExtension.setIntraSdcWedgeFlag     ( d, m_intraSdcFlag || m_intraWedgeFlag     );
     200      m_sps3dExtension.setQtPredFlag            ( d, m_qtPredFlag            );
     201      m_sps3dExtension.setInterSdcFlag          ( d, m_interSdcFlag          );
     202      m_sps3dExtension.setIntraSingleFlag       ( d, m_intraSingleFlag       ); 
     203    }
     204  }
     205#endif
     206#endif
    175207
    176208  for(Int layerIdInVps = 0; layerIdInVps < m_numberOfLayers; layerIdInVps++)
     
    216248    m_cTEncTop.setDWeight                      ( isDepth ? m_iDWeight             : 0     );
    217249#endif // H_3D_VSO
     250#if !HHI_TOOL_PARAMETERS_I2_J0107
    218251#if H_3D_SPIVMP
    219252    m_cTEncTop.setSubPULog2Size                 (( isDepth || 0==layerIdInVps ) ? 0 : m_iSubPULog2Size   );
    220253    m_cTEncTop.setSubPUMPILog2Size              ( !isDepth ? 0 : m_iSubPUMPILog2Size   );
    221254#endif
     255#endif
    222256#if H_3D_IC
    223257    m_cTEncTop.setUseIC                        ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC );
    224258    m_cTEncTop.setUseICLowLatencyEnc           ( m_bUseLowLatencyICEnc );
    225259#endif
    226   //========== Depth intra modes ==========
     260
     261   
     262#if HHI_TOOL_PARAMETERS_I2_J0107
     263    m_cTEncTop.setUseDMM                       ( isDepth ? m_intraWedgeFlag   : false );
     264    m_cTEncTop.setUseSDC                       ( isDepth ? m_intraSdcFlag     : false );
     265    m_cTEncTop.setUseDLT                       ( isDepth ? m_useDLT   : false );
     266    m_cTEncTop.setUseQTL                       ( isDepth ? m_bUseQTL  : false );
     267#else
     268//========== Depth intra modes ==========
    227269#if H_3D_DIM
    228270    m_cTEncTop.setUseDMM                       ( isDepth ? m_useDMM               : false );
     271#if !HHI_TOOL_PARAMETERS_I2_J0107
    229272#if H_3D_FCO
    230273    m_cTEncTop.setUseIVP                       ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_useIVP               : false );
     
    232275    m_cTEncTop.setUseIVP                       ( isDepth ? m_useIVP               : false );
    233276#endif
     277#endif
    234278    m_cTEncTop.setUseSDC                       ( isDepth ? m_useSDC               : false );
    235279    m_cTEncTop.setUseDLT                       ( isDepth ? m_useDLT               : false );
    236280#endif
     281
     282
    237283#if H_3D_SINGLE_DEPTH
    238284    m_cTEncTop.setUseSingleDepthMode           ( isDepth ? m_useSingleDepthMode   : false );
     
    254300    m_cTEncTop.setUseMPI                       ( isDepth ? m_bMPIFlag    : false );
    255301#endif
     302#endif
     303#endif
     304
     305
     306#if HHI_TOOL_PARAMETERS_I2_J0107
     307  m_cTEncTop.setSps3dExtension                 ( m_sps3dExtension );
    256308#endif
    257309#endif // H_3D
     
    885937#endif
    886938
     939#if !LGE_DDD_REMOVAL_J0042_J0030
    887940#if H_3D_DDD
    888941          m_acTEncTopList[ layer ]->getSliceEncoder()->setDDDPar( m_cCameraData.getCodedScale()[0][ m_acTEncTopList[layer]->getViewIndex() ],
    889942              m_cCameraData.getCodedOffset()[0][ m_acTEncTopList[layer]->getViewIndex() ],
    890943              m_cCameraData.getCamParsCodedPrecision() );
     944#endif
    891945#endif
    892946        Int   iNumEncoded = 0;
     
    13201374  }
    13211375
     1376#if H_MV_FIX_NUM_VIEWS
     1377  vps.initNumViews();
     1378#endif
    13221379  Int maxViewId = xGetMax( m_viewId );
    13231380
     
    13441401      vps.setDirectDependencyType( depLayer, refLayer,    -1 );
    13451402    }
    1346     }
     1403  }
    13471404
    13481405  Int  defaultDirectDependencyType = -1;
     
    13751432  vps.setDefaultDirectDependencyFlag( defaultDirectDependencyFlag );       
    13761433  vps.setDefaultDirectDependencyType( defaultDirectDependencyFlag ? defaultDirectDependencyType : -1 );       
     1434
     1435#if HHI_DEPENDENCY_SIGNALLING_I1_J0107
     1436  vps.setRefLayers();
     1437#endif
    13771438
    13781439  // Max sub layers, + presence flag
     
    13931454  vps.setVpsSubLayersMaxMinus1PresentFlag( subLayersMaxMinus1PresentFlag );
    13941455
    1395 
     1456#if HHI_DEPENDENCY_SIGNALLING_I1_J0107
     1457  // Max temporal id for inter layer reference pictures
     1458  for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++)
     1459  {
     1460    Int refLayerIdInNuh = vps.getLayerIdInNuh( refLayerIdInVps );
     1461    for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++)
     1462    {
     1463      Int curLayerIdInNuh = vps.getLayerIdInNuh( curLayerIdInVps );     
     1464#if H_3D
     1465      Int maxTid = -1;
     1466      if ( vps.getDirectDependencyFlag( curLayerIdInVps, refLayerIdInVps ) )
     1467      {
     1468        if ( m_depthFlag[ curLayerIdInVps] == m_depthFlag[ refLayerIdInVps ] )
     1469        {
     1470#endif
     1471          for( Int i = 0; i < ( getGOPSize() + 1); i++ )
     1472          {       
     1473            GOPEntry geCur =  m_GOPListMvc[curLayerIdInVps][( i < getGOPSize()  ? i : MAX_GOP )];
     1474            GOPEntry geRef =  m_GOPListMvc[refLayerIdInVps][( i < getGOPSize()  ? i : MAX_GOP )];
     1475            for (Int j = 0; j < geCur.m_numActiveRefLayerPics; j++)
     1476            {
     1477#if H_3D
     1478              if ( vps.getIdRefListLayer( curLayerIdInNuh, geCur.m_interLayerPredLayerIdc[ j ] ) == refLayerIdInNuh )
     1479#else
     1480              if ( vps.getIdDirectRefLayer( curLayerIdInNuh, geCur.m_interLayerPredLayerIdc[ j ] ) == refLayerIdInNuh )
     1481#endif
     1482              {
     1483                Bool refAlwaysIntra = ( i == getGOPSize() ) && ( m_iIntraPeriod[ curLayerIdInVps ] % m_iIntraPeriod[ refLayerIdInVps ] == 0 );
     1484                Bool refLayerZero   = ( i == getGOPSize() ) && ( refLayerIdInVps == 0 );
     1485                maxTid = std::max( maxTid, ( refAlwaysIntra || refLayerZero ) ? 0 : geRef.m_temporalId );
     1486              }
     1487            }
     1488          }             
     1489#if H_3D
     1490        }
     1491        else
     1492        {       
     1493#if HHI_TOOL_PARAMETERS_I2_J0107
     1494          if( m_depthFlag[ curLayerIdInVps ] && ( m_mpiFlag|| m_qtPredFlag || m_intraContourFlag ) )
     1495#else
     1496          if( m_depthFlag[ curLayerIdInVps ] && ( m_bMPIFlag || m_bLimQtPredFlag || m_useIVP  ) )
     1497#endif
     1498          {         
     1499            Int nuhLayerIdTex = vps.getLayerIdInNuh( vps.getViewIndex( curLayerIdInNuh ), false );
     1500            if ( nuhLayerIdTex == refLayerIdInNuh )
     1501            {
     1502              maxTid = std::max( maxTid, vps.getSubLayersVpsMaxMinus1( refLayerIdInVps) + 1 );
     1503            }
     1504          }
     1505#if HHI_TOOL_PARAMETERS_I2_J0107
     1506          if( !m_depthFlag[ curLayerIdInVps ] && vps.getNumRefListLayers( curLayerIdInNuh) > 0  && ( m_depthRefinementFlag || m_viewSynthesisPredFlag || m_depthBasedBlkPartFlag ) )
     1507#else
     1508          if( !m_depthFlag[ curLayerIdInVps ] && vps.getNumRefListLayers( curLayerIdInNuh) > 0  && ( m_depthRefinementFlag || m_viewSynthesisPredFlag || m_bUseDBBP) )
     1509#endif
     1510          { 
     1511            Int maxPresentTid =-1;
     1512            Bool allPresent = true;
     1513            for (Int i = 0; i < vps.getNumRefListLayers( curLayerIdInNuh); i++ )
     1514            {
     1515              Int nuhLayerIdDep = vps.getLayerIdInNuh( vps.getViewIndex( vps.getIdRefListLayer(curLayerIdInNuh, i ) ), true );
     1516              if ( nuhLayerIdDep== refLayerIdInNuh )
     1517              {
     1518                maxPresentTid= std::max( maxTid, vps.getSubLayersVpsMaxMinus1( refLayerIdInVps) + 1 );             
     1519              }
     1520              else
     1521              {
     1522                allPresent = false;
     1523              }
     1524            }
     1525
     1526            if ( allPresent )
     1527            {
     1528              maxTid= std::max( maxTid, maxPresentTid );             
     1529            }
     1530          }       
     1531        }
     1532      }
     1533      vps.setMaxTidIlRefPicsPlus1( refLayerIdInVps, curLayerIdInVps, maxTid + 1 );
     1534#endif
     1535    }   
     1536  }
     1537
     1538  // Max temporal id for inter layer reference pictures presence flag
     1539  Bool maxTidRefPresentFlag = false;   
     1540  for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++)
     1541  {
     1542    for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++)
     1543    {
     1544        maxTidRefPresentFlag = maxTidRefPresentFlag || ( vps.getMaxTidIlRefPicsPlus1( refLayerIdInVps, curLayerIdInVps ) != 7 );   
     1545    }
     1546  }
     1547  vps.setMaxTidRefPresentFlag( maxTidRefPresentFlag );
     1548#else
    13961549  // Max temporal id for inter layer reference pictures + presence flag
    13971550  Bool maxTidRefPresentFlag = false;
     
    14001553    for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++)
    14011554    {
    1402       Int maxTid = -1;
    1403       for( Int i = 0; i < ( getGOPSize() + 1); i++ )
    1404       {       
    1405         GOPEntry geCur =  m_GOPListMvc[curLayerIdInVps][( i < getGOPSize()  ? i : MAX_GOP )];
    1406         GOPEntry geRef =  m_GOPListMvc[refLayerIdInVps][( i < getGOPSize()  ? i : MAX_GOP )];
    1407         for (Int j = 0; j < geCur.m_numActiveRefLayerPics; j++)
     1555        Int maxTid = -1;
     1556        for( Int i = 0; i < ( getGOPSize() + 1); i++ )
    14081557        {       
    1409           if ( m_directRefLayers[ curLayerIdInVps ][ geCur.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps )
     1558          GOPEntry geCur =  m_GOPListMvc[curLayerIdInVps][( i < getGOPSize()  ? i : MAX_GOP )];
     1559          GOPEntry geRef =  m_GOPListMvc[refLayerIdInVps][( i < getGOPSize()  ? i : MAX_GOP )];
     1560          for (Int j = 0; j < geCur.m_numActiveRefLayerPics; j++)
    14101561          {
    1411             Bool refAlwaysIntra = ( i == getGOPSize() ) && ( m_iIntraPeriod[ curLayerIdInVps ] % m_iIntraPeriod[ refLayerIdInVps ] == 0 );
    1412             Bool refLayerZero   = ( i == getGOPSize() ) && ( refLayerIdInVps == 0 );
    1413             maxTid = std::max( maxTid, ( refAlwaysIntra || refLayerZero ) ? 0 : geRef.m_temporalId );
     1562            if ( m_directRefLayers[ curLayerIdInVps ][ geCur.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps )
     1563            {
     1564              Bool refAlwaysIntra = ( i == getGOPSize() ) && ( m_iIntraPeriod[ curLayerIdInVps ] % m_iIntraPeriod[ refLayerIdInVps ] == 0 );
     1565              Bool refLayerZero   = ( i == getGOPSize() ) && ( refLayerIdInVps == 0 );
     1566              maxTid = std::max( maxTid, ( refAlwaysIntra || refLayerZero ) ? 0 : geRef.m_temporalId );
     1567            }
    14141568          }
    14151569        }
    1416       }
    1417       vps.setMaxTidIlRefPicsPlus1( refLayerIdInVps, curLayerIdInVps, maxTid + 1 );
    1418       maxTidRefPresentFlag = maxTidRefPresentFlag || ( maxTid != 6 );   
     1570        vps.setMaxTidIlRefPicsPlus1( refLayerIdInVps, curLayerIdInVps, maxTid + 1 );
     1571        maxTidRefPresentFlag = maxTidRefPresentFlag || ( maxTid != 6 );   
    14191572    }
    14201573  }
    14211574
    14221575  vps.setMaxTidRefPresentFlag( maxTidRefPresentFlag );
     1576#endif 
     1577
     1578
    14231579  // Max one active ref layer flag
    14241580  Bool maxOneActiveRefLayerFlag = true; 
     
    14301586      maxOneActiveRefLayerFlag =  maxOneActiveRefLayerFlag && (ge.m_numActiveRefLayerPics <= 1);
    14311587    }           
    1432 }
     1588  }
    14331589
    14341590  vps.setMaxOneActiveRefLayerFlag( maxOneActiveRefLayerFlag );
     
    14411597      vps.setPocLsbNotPresentFlag( layerIdInVps,  true ); 
    14421598    }
    1443   }
     1599  } 
    14441600 
    14451601  // All Ref layers active flag
     
    14471603  for ( Int layerIdInVps = 1; layerIdInVps < m_numberOfLayers && allRefLayersActiveFlag; layerIdInVps++)
    14481604  {   
     1605#if HHI_DEPENDENCY_SIGNALLING_I1_J0107
     1606    Int layerIdInNuh = vps.getLayerIdInNuh( layerIdInVps );
     1607#endif
    14491608    for( Int i = 0; i < ( getGOPSize() + 1) && allRefLayersActiveFlag; i++ )
    14501609    {       
     
    14531612     
    14541613      // check if all reference layers when allRefLayerActiveFlag is equal to 1 are reference layer pictures specified in the gop entry
     1614#if HHI_DEPENDENCY_SIGNALLING_I1_J0107
     1615#if H_3D
     1616      for (Int k = 0; k < vps.getNumRefListLayers( layerIdInNuh ) && allRefLayersActiveFlag; k++ )
     1617      {
     1618        Int refLayerIdInVps = vps.getLayerIdInVps( vps.getIdRefListLayer( layerIdInNuh , k ) );
     1619#else
     1620      for (Int k = 0; k < vps.getNumDirectRefLayers( layerIdInNuh ) && allRefLayersActiveFlag; k++ )
     1621      {
     1622        Int refLayerIdInVps = vps.getLayerIdInVps( vps.getIdDirectRefLayer( layerIdInNuh , k ) );
     1623#endif
     1624#else
    14551625      for (Int k = 0; k < m_directRefLayers[ layerIdInVps].size() && allRefLayersActiveFlag; k++ )
    14561626      {
    14571627        Int refLayerIdInVps = vps.getLayerIdInVps( m_directRefLayers[ layerIdInVps ][ k ] );
     1628#endif
     1629#if H_MV_FIX_REF_LAYER_PIC_FLAG
     1630        if ( vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId  && ( tId == 0 || vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId )  )
     1631#else
    14581632        if ( vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId  && vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId )
     1633#endif
    14591634        {
    14601635          Bool gopEntryFoundFlag = false;
     
    14731648      {   
    14741649        Bool referenceLayerFoundFlag = false;
     1650#if HHI_DEPENDENCY_SIGNALLING_I1_J0107
     1651#if H_3D
     1652        for (Int k = 0; k < vps.getNumRefListLayers( layerIdInNuh ); k++ )
     1653        {
     1654          Int refLayerIdInVps = vps.getLayerIdInVps( vps.getIdRefListLayer( layerIdInNuh, k) );
     1655#else
     1656        for (Int k = 0; k < vps.getNumDirectRefLayers( layerIdInNuh ); k++ )
     1657        {
     1658          Int refLayerIdInVps = vps.getLayerIdInVps( vps.getIdDirectRefLayer( layerIdInNuh, k) );
     1659#endif
     1660#else
    14751661        for (Int k = 0; k < m_directRefLayers[ layerIdInVps].size(); k++ )
    14761662        {
    14771663          Int refLayerIdInVps = vps.getLayerIdInVps( m_directRefLayers[ layerIdInVps ][ k ] );
    1478 
     1664#endif
     1665#if H_MV_FIX_REF_LAYER_PIC_FLAG
     1666          if ( vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId  && ( tId == 0 || vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId )  )
     1667#else
    14791668          if ( vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId  && vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId )
     1669#endif
    14801670          {         
    14811671            referenceLayerFoundFlag = referenceLayerFoundFlag || ( ge.m_interLayerPredLayerIdc[l] == k );
     
    14891679
    14901680  vps.setAllRefLayersActiveFlag( allRefLayersActiveFlag );
    1491 
     1681#if !HHI_DEPENDENCY_SIGNALLING_I1_J0107
    14921682  vps.setRefLayers();
     1683#endif
    14931684};
     1685
    14941686
    14951687GOPEntry* TAppEncTop::xGetGopEntry( Int layerIdInVps, Int poc )
     
    20182210
    20192211#if H_3D
     2212#if HHI_TOOL_PARAMETERS_I2_J0107
     2213#else
    20202214Void TAppEncTop::xSetVPSExtension2( TComVPS& vps )
    20212215{
     
    20912285    vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag );
    20922286#endif
     2287#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
     2288    vps.setSingleDepthModeFlag( layer, !isLayerZero && isDepth && m_useSingleDepthMode );         
     2289#endif
    20932290#if H_3D_IV_MERGE
    20942291#if H_3D_FCO
     
    21002297  } 
    21012298}
     2299#endif
    21022300
    21032301Void TAppEncTop::xDeriveDltArray( TComVPS& vps, TComDLT& dlt )
  • trunk/source/App/TAppEncoder/TAppEncTop.h

    r1084 r1124  
    9292#if H_3D
    9393  TComDLT                    m_dlt;                         ///< dlt
     94#if HHI_TOOL_PARAMETERS_I2_J0107
     95  TComSps3dExtension         m_sps3dExtension;              ///< Currently all layers share the same sps 3D Extension 
     96#endif
    9497#endif
    9598
     
    146149#endif
    147150#if H_3D
     151#if !HHI_TOOL_PARAMETERS_I2_J0107
    148152  Void xSetVPSExtension2( TComVPS& vps );
     153#endif
    149154  Void xDeriveDltArray( TComVPS& vps, TComDLT& dlt );
    150155#endif
Note: See TracChangeset for help on using the changeset viewer.