Changeset 1124 in 3DVCSoftware for trunk/source/App/TAppEncoder
- Timestamp:
- 10 Nov 2014, 12:22:20 (10 years ago)
- Location:
- trunk/source/App/TAppEncoder
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/App/TAppEncoder/TAppEncCfg.cpp
r1084 r1124 377 377 ("DepthFlag", m_depthFlag , std::vector<Int>(1,0), "Depth Flag") 378 378 #if H_3D_DIM 379 #if !HHI_TOOL_PARAMETERS_I2_J0107 379 380 ("DMM", m_useDMM, true, "Depth intra model modes") 380 381 ("IVP", m_useIVP, true, "intra-view prediction") 381 382 ("SDC", m_useSDC, true, "Simplified depth coding") 383 #endif 382 384 ("DLT", m_useDLT, true, "Depth lookup table") 383 385 #endif 384 386 #if H_3D 387 #if !HHI_TOOL_PARAMETERS_I2_J0107 385 388 ("SingleDepthMode", m_useSingleDepthMode, true, "Single depth mode") 389 #endif 386 390 #endif 387 391 #endif … … 404 408 ("ProfileTierLevelIdx_%d", m_profileTierLevelIdx, std::vector<Int>(0), MAX_NUM_LAYERS, "Indices to profile level tier for ols") 405 409 // 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 406 413 ("DirectRefLayers_%d", m_directRefLayers , std::vector<Int>(0,0), MAX_NUM_LAYERS, "LayerIds of direct reference layers") 414 #endif 407 415 ("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") 408 416 #endif … … 530 538 ("DeblockingFilterMetric", m_DeblockingFilterMetric, false ) 531 539 540 #if !HHI_TOOL_PARAMETERS_I2_J0107 532 541 #if H_3D_ARP 533 542 ("AdvMultiviewResPred", m_uiUseAdvResPred, (UInt)1, "Usage of Advanced Residual Prediction" ) … … 537 546 ("SubPUMPILog2Size", m_iSubPUMPILog2Size, (Int)3, "Sub-PU MPI size index: 2^n") 538 547 #endif 548 #endif 539 549 #if H_3D_IC 540 550 ("IlluCompEnable", m_abUseIC, true, "Enable illumination compensation") 541 551 ("IlluCompLowLatencyEnc", m_bUseLowLatencyICEnc, false, "Enable low-latency illumination compensation encoding") 542 552 #endif 553 #if !HHI_TOOL_PARAMETERS_I2_J0107 543 554 #if H_3D_INTER_SDC 544 555 ("InterSDC", m_bDepthInterSDCFlag, true, "Enable depth inter SDC") … … 549 560 #if H_3D_IV_MERGE 550 561 ("MPI", m_bMPIFlag, true, "Enable MPI") 562 #endif 551 563 #endif 552 564 // Coding tools … … 789 801 790 802 #endif //HHI_VSO 803 #if HHI_TOOL_PARAMETERS_I2_J0107 804 ("QTL", m_bUseQTL , true , "Use depth quad tree limitation (encoder only)" ) 805 #else 791 806 #if H_3D_QTLPC 792 807 ("LimQtPredFlag", m_bLimQtPredFlag , true , "Use Predictive Coding with QTL" ) … … 804 819 #if H_3D 805 820 ("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" ) 806 840 #endif 807 841 #endif //H_3D … … 1646 1680 1647 1681 #if H_3D_ARP 1682 #if !HHI_TOOL_PARAMETERS_I2_J0107 1648 1683 xConfirmPara( ( 0 != m_uiUseAdvResPred ) && ( 1 != m_uiUseAdvResPred ), "UseAdvResPred must be 0 or 1." ); 1649 1684 #endif 1685 #endif 1650 1686 #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 1651 1696 xConfirmPara( m_iSubPULog2Size < 3, "SubPULog2Size must be 3 or greater."); 1652 1697 xConfirmPara( m_iSubPULog2Size > 6, "SubPULog2Size must be 6 or smaller."); … … 1656 1701 xConfirmPara( m_iSubPUMPILog2Size > 6, "SubPUMPILog2Size must be 6 or smaller."); 1657 1702 xConfirmPara( ( 1 << m_iSubPUMPILog2Size ) > m_uiMaxCUWidth, "SubPUMPILog2Size must be log2(maxCUSize) or smaller."); 1703 #endif 1658 1704 #endif 1659 1705 #if ADAPTIVE_QP_SELECTION … … 2602 2648 printf("WVSO:%d ", m_bUseWVSO ); 2603 2649 #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 2604 2676 #if H_3D_QTLPC 2605 2677 printf("LimQtPredFlag:%d ", m_bLimQtPredFlag ? 1 : 0); 2606 2678 printf("QTL:%d ", m_bUseQTL); 2607 2679 #endif 2608 #if H_3D_IV_MERGE 2680 #if H_3D_IV_MERGE 2609 2681 printf("IvMvPred:%d %d", m_ivMvPredFlag[0] ? 1 : 0, m_ivMvPredFlag[1] ? 1 : 0); 2610 2682 #if H_3D_SPIVMP … … 2647 2719 printf( "MPI:%d ", m_bMPIFlag ? 1 : 0 ); 2648 2720 #endif 2721 #endif 2722 2649 2723 printf("\n\n"); 2650 2724 -
trunk/source/App/TAppEncoder/TAppEncCfg.h
r1084 r1124 132 132 Bool m_higherLayerIrapSkipFlag; 133 133 134 134 #if !HHI_TOOL_PARAMETERS_I2_J0107 135 135 #if H_3D_IV_MERGE 136 136 vector<Bool> m_ivMvPredFlag; ///< Interview motion vector prediction 137 137 138 #if H_3D_SPIVMP 138 139 Int m_iSubPULog2Size; … … 147 148 UInt m_uiARPStepNum; 148 149 #endif 150 #endif 151 149 152 #if H_3D_IC 150 153 Bool m_abUseIC; 151 154 Bool m_bUseLowLatencyICEnc; 152 155 #endif 156 157 #if !HHI_TOOL_PARAMETERS_I2_J0107 153 158 #if H_3D_NBDV_REF 154 159 Bool m_depthRefinementFlag; … … 159 164 #if H_3D 160 165 Bool m_ivMvScalingFlag; 166 #endif 161 167 #endif 162 168 #endif … … 486 492 #endif 487 493 #if H_3D_DIM 494 #if !HHI_TOOL_PARAMETERS_I2_J0107 488 495 Bool m_useDMM; ///< flag for using DMM 489 496 Bool m_useIVP; 490 497 Bool m_useSDC; ///< flag for using SDC 498 #endif 491 499 Bool m_useDLT; ///< flag for using DLT 492 500 #endif 501 #if !HHI_TOOL_PARAMETERS_I2_J0107 493 502 #if H_3D_SINGLE_DEPTH 494 503 Bool m_useSingleDepthMode; ///< flag for using single depth mode 495 504 #endif 505 #endif 496 506 #if H_3D_QTLPC 497 507 Bool m_bUseQTL; ///< flag for using depth QuadTree Limitation 498 508 #endif 509 #if !HHI_TOOL_PARAMETERS_I2_J0107 499 510 #if H_3D_INTER_SDC 500 511 Bool m_bDepthInterSDCFlag; ///< flag for inter SDC of depth map coding … … 506 517 Bool m_bMPIFlag; ///< flag for MPI of depth map coding 507 518 #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 508 539 #endif 509 540 // internal member functions -
trunk/source/App/TAppEncoder/TAppEncTop.cpp
r1084 r1124 140 140 xSetVPSVUI ( vps ); 141 141 #if H_3D 142 #if !HHI_TOOL_PARAMETERS_I2_J0107 142 143 xSetVPSExtension2 ( vps ); 144 #endif 143 145 m_ivPicLists.setVPS ( &vps ); 144 146 xDeriveDltArray ( vps, dlt ); … … 173 175 vps.printPTL(); 174 176 } 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 175 207 176 208 for(Int layerIdInVps = 0; layerIdInVps < m_numberOfLayers; layerIdInVps++) … … 216 248 m_cTEncTop.setDWeight ( isDepth ? m_iDWeight : 0 ); 217 249 #endif // H_3D_VSO 250 #if !HHI_TOOL_PARAMETERS_I2_J0107 218 251 #if H_3D_SPIVMP 219 252 m_cTEncTop.setSubPULog2Size (( isDepth || 0==layerIdInVps ) ? 0 : m_iSubPULog2Size ); 220 253 m_cTEncTop.setSubPUMPILog2Size ( !isDepth ? 0 : m_iSubPUMPILog2Size ); 221 254 #endif 255 #endif 222 256 #if H_3D_IC 223 257 m_cTEncTop.setUseIC ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC ); 224 258 m_cTEncTop.setUseICLowLatencyEnc ( m_bUseLowLatencyICEnc ); 225 259 #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 ========== 227 269 #if H_3D_DIM 228 270 m_cTEncTop.setUseDMM ( isDepth ? m_useDMM : false ); 271 #if !HHI_TOOL_PARAMETERS_I2_J0107 229 272 #if H_3D_FCO 230 273 m_cTEncTop.setUseIVP ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_useIVP : false ); … … 232 275 m_cTEncTop.setUseIVP ( isDepth ? m_useIVP : false ); 233 276 #endif 277 #endif 234 278 m_cTEncTop.setUseSDC ( isDepth ? m_useSDC : false ); 235 279 m_cTEncTop.setUseDLT ( isDepth ? m_useDLT : false ); 236 280 #endif 281 282 237 283 #if H_3D_SINGLE_DEPTH 238 284 m_cTEncTop.setUseSingleDepthMode ( isDepth ? m_useSingleDepthMode : false ); … … 254 300 m_cTEncTop.setUseMPI ( isDepth ? m_bMPIFlag : false ); 255 301 #endif 302 #endif 303 #endif 304 305 306 #if HHI_TOOL_PARAMETERS_I2_J0107 307 m_cTEncTop.setSps3dExtension ( m_sps3dExtension ); 256 308 #endif 257 309 #endif // H_3D … … 885 937 #endif 886 938 939 #if !LGE_DDD_REMOVAL_J0042_J0030 887 940 #if H_3D_DDD 888 941 m_acTEncTopList[ layer ]->getSliceEncoder()->setDDDPar( m_cCameraData.getCodedScale()[0][ m_acTEncTopList[layer]->getViewIndex() ], 889 942 m_cCameraData.getCodedOffset()[0][ m_acTEncTopList[layer]->getViewIndex() ], 890 943 m_cCameraData.getCamParsCodedPrecision() ); 944 #endif 891 945 #endif 892 946 Int iNumEncoded = 0; … … 1320 1374 } 1321 1375 1376 #if H_MV_FIX_NUM_VIEWS 1377 vps.initNumViews(); 1378 #endif 1322 1379 Int maxViewId = xGetMax( m_viewId ); 1323 1380 … … 1344 1401 vps.setDirectDependencyType( depLayer, refLayer, -1 ); 1345 1402 } 1346 1403 } 1347 1404 1348 1405 Int defaultDirectDependencyType = -1; … … 1375 1432 vps.setDefaultDirectDependencyFlag( defaultDirectDependencyFlag ); 1376 1433 vps.setDefaultDirectDependencyType( defaultDirectDependencyFlag ? defaultDirectDependencyType : -1 ); 1434 1435 #if HHI_DEPENDENCY_SIGNALLING_I1_J0107 1436 vps.setRefLayers(); 1437 #endif 1377 1438 1378 1439 // Max sub layers, + presence flag … … 1393 1454 vps.setVpsSubLayersMaxMinus1PresentFlag( subLayersMaxMinus1PresentFlag ); 1394 1455 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 1396 1549 // Max temporal id for inter layer reference pictures + presence flag 1397 1550 Bool maxTidRefPresentFlag = false; … … 1400 1553 for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++) 1401 1554 { 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++ ) 1408 1557 { 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++) 1410 1561 { 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 } 1414 1568 } 1415 1569 } 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 ); 1419 1572 } 1420 1573 } 1421 1574 1422 1575 vps.setMaxTidRefPresentFlag( maxTidRefPresentFlag ); 1576 #endif 1577 1578 1423 1579 // Max one active ref layer flag 1424 1580 Bool maxOneActiveRefLayerFlag = true; … … 1430 1586 maxOneActiveRefLayerFlag = maxOneActiveRefLayerFlag && (ge.m_numActiveRefLayerPics <= 1); 1431 1587 } 1432 }1588 } 1433 1589 1434 1590 vps.setMaxOneActiveRefLayerFlag( maxOneActiveRefLayerFlag ); … … 1441 1597 vps.setPocLsbNotPresentFlag( layerIdInVps, true ); 1442 1598 } 1443 } 1599 } 1444 1600 1445 1601 // All Ref layers active flag … … 1447 1603 for ( Int layerIdInVps = 1; layerIdInVps < m_numberOfLayers && allRefLayersActiveFlag; layerIdInVps++) 1448 1604 { 1605 #if HHI_DEPENDENCY_SIGNALLING_I1_J0107 1606 Int layerIdInNuh = vps.getLayerIdInNuh( layerIdInVps ); 1607 #endif 1449 1608 for( Int i = 0; i < ( getGOPSize() + 1) && allRefLayersActiveFlag; i++ ) 1450 1609 { … … 1453 1612 1454 1613 // 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 1455 1625 for (Int k = 0; k < m_directRefLayers[ layerIdInVps].size() && allRefLayersActiveFlag; k++ ) 1456 1626 { 1457 1627 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 1458 1632 if ( vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId && vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId ) 1633 #endif 1459 1634 { 1460 1635 Bool gopEntryFoundFlag = false; … … 1473 1648 { 1474 1649 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 1475 1661 for (Int k = 0; k < m_directRefLayers[ layerIdInVps].size(); k++ ) 1476 1662 { 1477 1663 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 1479 1668 if ( vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId && vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId ) 1669 #endif 1480 1670 { 1481 1671 referenceLayerFoundFlag = referenceLayerFoundFlag || ( ge.m_interLayerPredLayerIdc[l] == k ); … … 1489 1679 1490 1680 vps.setAllRefLayersActiveFlag( allRefLayersActiveFlag ); 1491 1681 #if !HHI_DEPENDENCY_SIGNALLING_I1_J0107 1492 1682 vps.setRefLayers(); 1683 #endif 1493 1684 }; 1685 1494 1686 1495 1687 GOPEntry* TAppEncTop::xGetGopEntry( Int layerIdInVps, Int poc ) … … 2018 2210 2019 2211 #if H_3D 2212 #if HHI_TOOL_PARAMETERS_I2_J0107 2213 #else 2020 2214 Void TAppEncTop::xSetVPSExtension2( TComVPS& vps ) 2021 2215 { … … 2091 2285 vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag ); 2092 2286 #endif 2287 #if MTK_SINGLE_DEPTH_VPS_FLAG_J0060 2288 vps.setSingleDepthModeFlag( layer, !isLayerZero && isDepth && m_useSingleDepthMode ); 2289 #endif 2093 2290 #if H_3D_IV_MERGE 2094 2291 #if H_3D_FCO … … 2100 2297 } 2101 2298 } 2299 #endif 2102 2300 2103 2301 Void TAppEncTop::xDeriveDltArray( TComVPS& vps, TComDLT& dlt ) -
trunk/source/App/TAppEncoder/TAppEncTop.h
r1084 r1124 92 92 #if H_3D 93 93 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 94 97 #endif 95 98 … … 146 149 #endif 147 150 #if H_3D 151 #if !HHI_TOOL_PARAMETERS_I2_J0107 148 152 Void xSetVPSExtension2( TComVPS& vps ); 153 #endif 149 154 Void xDeriveDltArray( TComVPS& vps, TComDLT& dlt ); 150 155 #endif
Note: See TracChangeset for help on using the changeset viewer.