Changeset 1170 in 3DVCSoftware for branches/HTM-13.1-dev0/source/App/TAppEncoder
- Timestamp:
- 5 Apr 2015, 22:49:22 (10 years ago)
- Location:
- branches/HTM-13.1-dev0/source/App/TAppEncoder
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-13.1-dev0/source/App/TAppEncoder/TAppEncCfg.cpp
r1166 r1170 224 224 in>>entry.m_interViewRefPosL[1][i]; 225 225 } 226 #endif 227 #if HHI_INTER_COMP_PRED_K0052 228 #if H_3D 229 in>>entry.m_interCompPredFlag; 230 #endif 226 231 #endif 227 232 return in; -
branches/HTM-13.1-dev0/source/App/TAppEncoder/TAppEncTop.cpp
r1169 r1170 204 204 } 205 205 #endif 206 207 206 for(Int layerIdInVps = 0; layerIdInVps < m_numberOfLayers; layerIdInVps++) 208 207 { … … 644 643 } 645 644 #endif 645 #if H_3D_ANNEX_SELECTION_FIX 646 #if H_3D 647 /// SET Profiles 648 for(Int layerIdInVps = 0; layerIdInVps < m_numberOfLayers; layerIdInVps++) 649 { 650 Int profileIdc = -1; 651 for (Int olsIdx = 0; olsIdx < vps.getNumOutputLayerSets(); olsIdx++ ) 652 { 653 Int lsIdx = vps.olsIdxToLsIdx( olsIdx ); 654 for(Int i = 0; i < vps.getNumLayersInIdList( lsIdx ); i++ ) 655 { 656 if( vps.getLayerIdInNuh( layerIdInVps) == vps.getLayerSetLayerIdList(lsIdx, i) ) 657 { 658 Int ptlIdx = vps.getProfileTierLevelIdx( olsIdx, i ); 659 if ( ptlIdx != -1 ) 660 { 661 Int curProfileIdc = vps.getPTL(ptlIdx)->getGeneralPTL()->getProfileIdc(); 662 if (profileIdc == -1) 663 { 664 profileIdc = curProfileIdc; 665 } 666 else 667 { 668 if ( profileIdc != curProfileIdc ) 669 { 670 fprintf(stderr, "Error: ProfileIdc for layer with index %d in VPS not equal in all OLSs. \n", layerIdInVps ); 671 exit(EXIT_FAILURE); 672 } 673 } 674 } 675 } 676 } 677 } 678 if (profileIdc == -1 ) 679 { 680 fprintf(stderr, "Error: No profile given for layer with index %d in VPS not equal in all OLS. \n", layerIdInVps ); 681 exit(EXIT_FAILURE); 682 } 683 m_acTEncTopList[ layerIdInVps ]->setProfileIdc( profileIdc ); 684 } 685 #endif 686 #endif 646 687 #if H_3D_VSO 647 688 if ( m_bUseVSO ) … … 1337 1378 1338 1379 assert( m_iNumberOfViews == vps.getNumViews() ); 1380 1381 1382 #if HHI_INTER_COMP_PRED_K0052 1383 #if H_3D 1384 vps.initViewCompLayer( ); 1385 #endif 1386 #endif 1339 1387 } 1340 1388 … … 1426 1474 #endif 1427 1475 { 1476 #if !HHI_INTER_COMP_PRED_K0052 1428 1477 Bool refAlwaysIntra = ( i == getGOPSize() ) && ( m_iIntraPeriod[ curLayerIdInVps ] % m_iIntraPeriod[ refLayerIdInVps ] == 0 ); 1478 #endif 1429 1479 Bool refLayerZero = ( i == getGOPSize() ) && ( refLayerIdInVps == 0 ); 1480 #if HHI_INTER_COMP_PRED_K0052 1481 // refAlwaysIntra actually not needed, since TemporalIds need to be aligned within an AU. 1482 // Thus, reference pictures of IRAP pictures have TemporalId equal to 0. 1483 maxTid = std::max( maxTid, refLayerZero ? 0 : geRef.m_temporalId ); 1484 #else 1430 1485 maxTid = std::max( maxTid, ( refAlwaysIntra || refLayerZero ) ? 0 : geRef.m_temporalId ); 1486 #endif 1431 1487 } 1432 1488 } … … 1436 1492 else 1437 1493 { 1494 #if HHI_INTER_COMP_PRED_K0052 1495 if( m_depthFlag[ curLayerIdInVps ] && ( m_mpiFlag|| m_qtPredFlag || m_intraContourFlag ) ) 1496 { 1497 Int nuhLayerIdTex = vps.getLayerIdInNuh( vps.getViewIndex( curLayerIdInNuh ), false ); 1498 if ( nuhLayerIdTex == refLayerIdInNuh ) 1499 { 1500 for( Int i = 0; i < ( getGOPSize() + 1); i++ ) 1501 { 1502 GOPEntry geCur = m_GOPListMvc[curLayerIdInVps][( i < getGOPSize() ? i : MAX_GOP )]; 1503 GOPEntry geRef = m_GOPListMvc[refLayerIdInVps][( i < getGOPSize() ? i : MAX_GOP )]; 1504 if ( geCur.m_interCompPredFlag ) 1505 { 1506 Bool refLayerZero = ( i == getGOPSize() ) && ( refLayerIdInVps == 0 ); 1507 maxTid = std::max( maxTid, refLayerZero ? 0 : geRef.m_temporalId ); 1508 } 1509 } 1510 } 1511 } 1512 if( !m_depthFlag[ curLayerIdInVps ] && vps.getNumRefListLayers( curLayerIdInNuh) > 0 && ( m_depthRefinementFlag || m_viewSynthesisPredFlag || m_depthBasedBlkPartFlag ) ) 1513 { 1514 for( Int i = 0; i < ( getGOPSize() + 1); i++ ) 1515 { 1516 GOPEntry geCur = m_GOPListMvc[curLayerIdInVps][( i < getGOPSize() ? i : MAX_GOP )]; 1517 GOPEntry geRef = m_GOPListMvc[refLayerIdInVps][( i < getGOPSize() ? i : MAX_GOP )]; 1518 1519 if ( geCur.m_interCompPredFlag ) 1520 { 1521 for (Int j = 0; j < geCur.m_numActiveRefLayerPics; j++ ) 1522 { 1523 Int nuhLayerIdDep = vps.getLayerIdInNuh( vps.getViewIndex( vps.getIdRefListLayer( curLayerIdInNuh, geCur.m_interLayerPredLayerIdc[j] ) ), true ); 1524 if ( nuhLayerIdDep == refLayerIdInNuh ) 1525 { 1526 Bool refLayerZero = ( i == getGOPSize() ) && ( refLayerIdInVps == 0 ); 1527 maxTid = std::max( maxTid, refLayerZero ? 0 : geRef.m_temporalId ); 1528 } 1529 } 1530 } 1531 } 1532 } 1533 #else 1438 1534 if( m_depthFlag[ curLayerIdInVps ] && ( m_mpiFlag|| m_qtPredFlag || m_intraContourFlag ) ) 1439 1535 { … … 1466 1562 } 1467 1563 } 1564 #endif 1468 1565 } 1469 } 1566 } // if ( vps.getDirectDependencyFlag( curLayerIdInVps, refLayerIdInVps ) ) 1470 1567 vps.setMaxTidIlRefPicsPlus1( refLayerIdInVps, curLayerIdInVps, maxTid + 1 ); 1471 1568 #endif 1472 } 1473 } 1569 } // Loop curLayerIdInVps 1570 } // Loop refLayerIdInVps 1474 1571 1475 1572 // Max temporal id for inter layer reference pictures presence flag
Note: See TracChangeset for help on using the changeset viewer.