Changeset 534 in 3DVCSoftware for branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon
- Timestamp:
- 13 Jul 2013, 10:26:41 (12 years ago)
- Location:
- branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComDataCU.cpp
r532 r534 4321 4321 4322 4322 // use coldir. 4323 #if H_MV 4324 TComPic *pColPic; 4325 if (getSlice()->getAltCollocatedIndicationFlag() ) 4326 { 4327 pColPic = getSlice()->getPicFromRefPicSetInterLayer( getSlice()->getActiveMotionPredRefLayerId( getSlice()->getCollocatedRefLayerIdx() )); 4328 } 4329 else 4330 { 4331 pColPic = getSlice()->getRefPic( RefPicList(getSlice()->isInterB() ? 1-getSlice()->getColFromL0Flag() : 0), getSlice()->getColRefIdx()); 4332 } 4333 #else 4323 4334 TComPic *pColPic = getSlice()->getRefPic( RefPicList(getSlice()->isInterB() ? 1-getSlice()->getColFromL0Flag() : 0), getSlice()->getColRefIdx()); 4335 #endif 4324 4336 TComDataCU *pColCU = pColPic->getCU( uiCUAddr ); 4325 4337 if(pColCU->getPic()==0||pColCU->getPartitionSize(uiPartUnitIdx)==SIZE_NONE) -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp
r532 r534 108 108 , m_enableTMVPFlag ( true ) 109 109 #if H_MV 110 , m_refPicSetInterLayer ( NULL ) 110 111 , m_layerId (0) 111 112 , m_viewId (0) … … 114 115 , m_isDepth (false) 115 116 #endif 117 , m_discardableFlag (false) 118 , m_interLayerPredEnabledFlag (false) 119 , m_numInterLayerRefPicsMinus1 (0) 120 , m_interLayerSamplePredOnlyFlag (false) 121 , m_altCollocatedIndicationFlag (0) 122 , m_collocatedRefLayerIdx (0) 116 123 #if H_3D_IC 117 124 , m_bApplyIC ( false ) … … 162 169 initWpAcDcParam(); 163 170 m_saoEnabledFlag = false; 171 #if H_MV 172 for (Int i = 0; i < MAX_NUM_LAYERS; i++ ) 173 { 174 m_interLayerPredLayerIdc[ i ] = 0; 175 } 176 #endif 164 177 } 165 178 … … 492 505 UInt NumPocStCurr1 = 0; 493 506 UInt NumPocLtCurr = 0; 494 #if H_MV495 Int numDirectRefLayers = getVPS()->getNumDirectRefLayers( getLayerIdInVps() );496 assert( numDirectRefLayers == refPicSetInterLayer.size() );497 #endif498 507 Int i; 499 508 for(i=0; i < m_pcRPS->getNumberOfNegativePictures(); i++) … … 544 553 TComPic* rpsCurrList1[MAX_NUM_REF+1]; 545 554 #if H_MV 546 Int numPocTotalCurr = NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr + numDirectRefLayers; 555 Int numPocInterCurr = NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr; 556 assert( numPocInterCurr == 0 || getInterRefEnabledInRPLFlag() ); 557 Int numPocTotalCurr = numPocInterCurr + getNumActiveRefLayerPics( ); 547 558 assert( numPocTotalCurr == getNumRpsCurrTempList() ); 548 559 #else … … 582 593 583 594 Int cIdx = 0; 595 #if H_MV 596 if ( getInterRefEnabledInRPLFlag() ) 597 { 598 #endif 584 599 for ( i=0; i<NumPocStCurr0; i++, cIdx++) 585 600 { … … 595 610 } 596 611 #if H_MV 597 for ( i=0; i<numDirectRefLayers; i++, cIdx++)598 {599 if( cIdx <= MAX_NUM_REF )600 {612 } 613 for ( i=0; i < getNumActiveRefLayerPics( ); i++, cIdx++) 614 { 615 assert( cIdx < MAX_NUM_REF ); 601 616 rpsCurrList0[cIdx] = refPicSetInterLayer[i]; 602 617 } 603 }604 618 #endif 605 619 … … 607 621 { 608 622 cIdx = 0; 623 #if H_MV 624 if ( getInterRefEnabledInRPLFlag() ) 625 { 626 #endif 609 627 for ( i=0; i<NumPocStCurr1; i++, cIdx++) 610 628 { … … 620 638 } 621 639 #if H_MV 622 for ( i=0; i<numDirectRefLayers; i++, cIdx++)623 {624 if( cIdx <= MAX_NUM_REF )625 {640 } 641 for ( i=0; i < getNumActiveRefLayerPics( ); i++, cIdx++) 642 { 643 assert( cIdx < MAX_NUM_REF ); 626 644 rpsCurrList1[cIdx] = refPicSetInterLayer[i]; 627 645 } 628 }629 646 #endif 630 647 } 631 648 632 649 ::memset(m_bIsUsedAsLongTerm, 0, sizeof(m_bIsUsedAsLongTerm)); 650 651 #if H_MV 652 Int numPocSt = NumPocStCurr0 + NumPocStCurr1; 653 assert( getInterRefEnabledInRPLFlag( ) || numPocSt == 0 ); 654 655 for (Int li = 0; li < 2; li++) 656 { 657 if ( m_eSliceType == P_SLICE && li == 1 ) 658 { 659 m_aiNumRefIdx[1] = 0; 660 ::memset( m_apcRefPicList[1], 0, sizeof(m_apcRefPicList[1])); 661 } 662 else 663 { 664 for (Int rIdx = 0; rIdx <= (m_aiNumRefIdx[ li ] - 1 ); rIdx ++) 665 { 666 Bool listModified = m_RefPicListModification.getRefPicListModificationFlagL( li ); 667 Int orgIdx = listModified ? m_RefPicListModification.getRefPicSetIdxL(li, rIdx) : (rIdx % numPocTotalCurr); 668 669 m_apcRefPicList [li][rIdx] = ( li == 0 ) ? rpsCurrList0[ orgIdx ] : rpsCurrList1[ orgIdx ]; 670 m_bIsUsedAsLongTerm[li][rIdx] = ( orgIdx >= numPocSt ) ; 671 } 672 } 673 } 674 #else 633 675 634 676 for (Int rIdx = 0; rIdx <= (m_aiNumRefIdx[0]-1); rIdx ++) … … 652 694 } 653 695 } 696 #endif 654 697 } 655 698 … … 687 730 } 688 731 #if H_MV 689 numRpsCurrTempList = numRpsCurrTempList + getVPS()->getNumDirectRefLayers( getLayerIdInVps() ); 732 assert( ( numRpsCurrTempList == 0 ) || getInterRefEnabledInRPLFlag() ); 733 numRpsCurrTempList = numRpsCurrTempList + getNumActiveRefLayerPics(); 690 734 #endif 691 735 return numRpsCurrTempList; … … 1022 1066 m_enableTMVPFlag = pSrc->m_enableTMVPFlag; 1023 1067 m_maxNumMergeCand = pSrc->m_maxNumMergeCand; 1068 1069 #if H_MV 1070 // Additional slice header syntax elements 1071 m_discardableFlag = pSrc->m_discardableFlag; 1072 m_interLayerPredEnabledFlag = pSrc->m_interLayerPredEnabledFlag; 1073 m_numInterLayerRefPicsMinus1 = pSrc->m_numInterLayerRefPicsMinus1; 1074 1075 for (Int layer = 0; layer < MAX_NUM_LAYERS; layer++ ) 1076 { 1077 m_interLayerPredLayerIdc[ layer ] = pSrc->m_interLayerPredLayerIdc[ layer ]; 1078 } 1079 1080 m_interLayerSamplePredOnlyFlag = pSrc->m_interLayerSamplePredOnlyFlag; 1081 m_altCollocatedIndicationFlag = pSrc->m_altCollocatedIndicationFlag ; 1082 m_collocatedRefLayerIdx = pSrc->m_collocatedRefLayerIdx ; 1083 m_numActiveMotionPredRefLayers = pSrc->m_numActiveMotionPredRefLayers; 1084 1085 for (Int layer = 0; layer < MAX_NUM_LAYER_IDS; layer++) 1086 { 1087 m_interLayerPredLayerIdc[layer] = pSrc->m_interLayerPredLayerIdc[layer]; 1088 } 1089 #endif 1024 1090 #if H_3D_IC 1025 1091 m_bApplyIC = pSrc->m_bApplyIC; … … 1489 1555 , m_numHrdParameters ( 0) 1490 1556 #if H_MV 1491 , m_max NuhLayerId ( 0)1557 , m_maxLayerId ( 0) 1492 1558 #else 1493 1559 , m_maxNuhReservedZeroLayerId ( 0) … … 1508 1574 } 1509 1575 #if H_MV 1576 for (Int lsIdx = 0; lsIdx < MAX_VPS_OP_SETS_PLUS1; lsIdx++ ) 1577 { 1578 for( Int layerId = 0; layerId < MAX_VPS_NUH_LAYER_ID_PLUS1; layerId++ ) 1579 { 1580 m_layerIdIncludedFlag[lsIdx][layerId] = false; 1581 } 1582 } 1583 1584 m_vpsNumberLayerSetsMinus1 = -1; 1585 m_vpsNumProfileTierLevelMinus1 = -1; 1586 1587 for ( Int i = 0; i < MAX_VPS_PROFILE_TIER_LEVEL; i++) 1588 { 1589 m_profileRefMinus1[ i ] = -1; 1590 } 1591 1592 m_moreOutputLayerSetsThanDefaultFlag = false; 1593 m_numAddOutputLayerSetsMinus1 = -1; 1594 m_defaultOneTargetOutputLayerFlag = false; 1595 1596 for ( Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++) 1597 { 1598 m_outputLayerSetIdxMinus1[i] = -1; 1599 m_profileLevelTierIdx[i] = 0; 1600 for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++) 1601 { 1602 m_outputLayerFlag[i][j] = false; 1603 } 1604 } 1605 1606 m_maxOneActiveRefLayerFlag = false; 1607 m_directDepTypeLenMinus2 = 0; 1608 1609 1510 1610 m_avcBaseLayerFlag = false; 1511 1611 m_splittingFlag = false; … … 1518 1618 1519 1619 m_vpsNuhLayerIdPresentFlag = false; 1520 m_numOutputLayerSets = 0;1521 1620 1522 1621 for( Int i = 0; i < MAX_VPS_OP_SETS_PLUS1; i++ ) 1523 1622 { 1524 1623 m_vpsProfilePresentFlag [i] = false; 1525 m_profile LayerSetRefMinus1[i] = 0;1526 m_outputLayerSetIdx [i] = 0;1624 m_profileRefMinus1[i] = 0; 1625 m_outputLayerSetIdxMinus1 [i] = 0; 1527 1626 for( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++ ) 1528 1627 { … … 1540 1639 m_layerIdInNuh [i] = ( i == 0 ) ? 0 : -1; 1541 1640 m_numDirectRefLayers[i] = 0; 1641 m_maxTidIlRefPicPlus1[i] = -1; 1542 1642 #if H_3D 1543 1643 m_viewIndex [i] = -1; … … 1566 1666 { 1567 1667 m_directDependencyFlag[i][j] = false; 1668 m_directDependencyType[i][j] = -1; 1568 1669 m_refLayerId[i][j] = -1; 1569 1670 } … … 1686 1787 Bool TComVPS::checkVPSExtensionSyntax() 1687 1788 { 1688 // check splitting flag constraint1689 if ( getSplittingFlag() )1690 {1691 // Derive dimBitOffset[j]1692 Int dimBitOffset[MAX_NUM_SCALABILITY_TYPES+1];1693 Int numScalabilityTypes = getNumScalabilityTypes();1694 dimBitOffset[0] = 0;1695 1696 for (Int type = 1; type <= numScalabilityTypes; type++ )1697 {1698 dimBitOffset[ type ] = 0;1699 for (Int dimIdx = 0; dimIdx <= type - 1; dimIdx++)1700 dimBitOffset[ type ] += ( getDimensionIdLen( dimIdx ) );1701 }1702 1703 for (Int type = 0; type < getNumScalabilityTypes(); type++ )1704 {1705 for( Int layer = 1; layer < getMaxLayers(); layer++ )1706 {1707 assert( getDimensionId( layer, type ) == ( ( getLayerIdInNuh( layer ) & ( (1 << dimBitOffset[ type + 1 ] ) - 1) ) >> dimBitOffset[ type ] ) );1708 };1709 };1710 }1711 1712 1789 for( Int layer = 1; layer < getMaxLayers(); layer++ ) 1713 1790 { … … 1737 1814 } 1738 1815 1739 1740 1741 1816 Void TComVPS::setScalabilityMask( UInt val ) 1742 1817 { … … 1745 1820 } 1746 1821 1747 Void TComVPS:: calcIvRefLayers()1748 { 1749 for( Int i = 1; i <= getMaxLayers(); i++ )1822 Void TComVPS::setRefLayers() 1823 { 1824 for( Int i = 0; i < MAX_NUM_LAYERS; i++ ) 1750 1825 { 1826 m_numSamplePredRefLayers[ i ] = 0; 1827 m_numMotionPredRefLayers[ i ] = 0; 1751 1828 m_numDirectRefLayers[ i ] = 0; 1829 for( Int j = 0; j < MAX_NUM_LAYERS; j++ ) { 1830 m_samplePredEnabledFlag[ i ][ j ] = 0; 1831 m_motionPredEnabledFlag[ i ][ j ] = 0; 1832 m_refLayerId[ i ][ j ] = 0; 1833 m_samplePredRefLayerId[ i ][ j ] = 0; 1834 m_motionPredRefLayerId[ i ][ j ] = 0; 1835 } 1836 } 1837 1838 for( Int i = 1; i <= getMaxLayers()- 1; i++ ) 1839 { 1840 for( Int j = 0; j < i; j++ ) 1841 { 1842 if( getDirectDependencyFlag(i,j) ) 1843 { 1844 m_refLayerId[ i ][m_numDirectRefLayers[ i ]++ ] = getLayerIdInNuh( j ); 1845 1846 m_samplePredEnabledFlag [ i ][ j ] = ( ( getDirectDependencyType( i , j ) + 1 ) & 1 ) == 1; 1847 m_numSamplePredRefLayers[ i ] += m_samplePredEnabledFlag [ i ][ j ] ? 1 : 0; 1848 m_motionPredEnabledFlag [ i ][ j ] = ( ( ( getDirectDependencyType( i , j ) + 1 ) & 2 ) >> 1 ) == 1; 1849 m_numMotionPredRefLayers[ i ] += m_motionPredEnabledFlag [ i][ j ] ? 1 : 0; 1850 } 1851 } 1852 } 1853 1854 for( Int i = 1, mIdx = 0, sIdx = 0; i <= getMaxLayers()- 1; i++ ) 1855 { 1752 1856 for( Int j = 0 ; j < i; j++ ) 1753 if( m_directDependencyFlag[ i ][ j ]) 1754 m_refLayerId[ i ][ m_numDirectRefLayers[ i ]++ ] = m_layerIdInNuh[ j ]; 1857 { 1858 if( m_motionPredEnabledFlag[ i ][ j ] ) 1859 { 1860 m_motionPredRefLayerId[ i ][ mIdx++ ] = getLayerIdInNuh( j ); 1861 } 1862 1863 if( m_samplePredEnabledFlag[ i ][ j ] ) 1864 { 1865 m_samplePredRefLayerId[ i ][ sIdx++ ] = getLayerIdInNuh( j ); 1866 } 1867 } 1755 1868 } 1756 1869 } … … 1814 1927 return getLayerIdInNuh( foundlayerId ); 1815 1928 } 1929 1816 1930 #endif // H_3D 1931 1932 Int TComVPS::xCeilLog2( Int val ) 1933 { 1934 assert( val > 0 ); 1935 Int ceilLog2 = 0; 1936 while( val > ( 1 << ceilLog2 ) ) ceilLog2++; 1937 return ceilLog2; 1938 } 1939 1940 1941 Int TComVPS::xGetDimBitOffset( Int j ) 1942 { 1943 Int dimBitOffset = 0; 1944 if ( getSplittingFlag() && j == getNumScalabilityTypes() ) 1945 { 1946 dimBitOffset = 6; 1947 } 1948 else 1949 { 1950 for (Int dimIdx = 0; dimIdx <= j-1; dimIdx++) 1951 { 1952 dimBitOffset += getDimensionIdLen( dimIdx ); 1953 } 1954 } 1955 return dimBitOffset; 1956 } 1957 1958 Int TComVPS::inferDimensionId( Int i, Int j ) 1959 { 1960 return ( ( getLayerIdInNuh( i ) & ( (1 << xGetDimBitOffset( j + 1 ) ) - 1) ) >> xGetDimBitOffset( j ) ); 1961 } 1962 1963 Int TComVPS::inferLastDimsionIdLenMinus1() 1964 { 1965 return ( 5 - xGetDimBitOffset( getNumScalabilityTypes() - 1 ) ); 1966 } 1967 1968 Int TComVPS::getNumLayersInIdList( Int lsIdx ) 1969 { 1970 assert( lsIdx >= 0 ); 1971 assert( lsIdx <= getVpsNumLayerSetsMinus1() ); 1972 Int numLayersInIdList = 0; 1973 for (Int layerId = 0; layerId < getVpsMaxLayerId(); layerId++ ) 1974 { 1975 numLayersInIdList += ( getLayerIdIncludedFlag( lsIdx, layerId ) ); 1976 } 1977 return numLayersInIdList; 1978 } 1817 1979 #endif // H_MV 1818 1980 … … 1865 2027 #if H_MV 1866 2028 , m_interViewMvVertConstraintFlag (false) 2029 , m_numIlpRestrictedRefLayers ( 0 ) 2030 1867 2031 #endif 1868 2032 #if H_3D … … 1883 2047 ::memset(m_ltRefPicPocLsbSps, 0, sizeof(m_ltRefPicPocLsbSps)); 1884 2048 ::memset(m_usedByCurrPicLtSPSFlag, 0, sizeof(m_usedByCurrPicLtSPSFlag)); 2049 #if H_MV 2050 for (Int i = 0; i < MAX_NUM_LAYERS; i++ ) 2051 { 2052 m_minSpatialSegmentOffsetPlus1[ i ] = 0; 2053 m_ctuBasedOffsetEnabledFlag [ i ] = false; 2054 m_minHorizontalCtuOffsetPlus1 [ i ] = 0; 2055 } 2056 #endif 1885 2057 } 1886 2058 … … 2361 2533 refPicSetInterLayer.clear(); 2362 2534 2363 for( Int i = 0; i < get VPS()->getNumDirectRefLayers( getLayerIdInVps()); i++ )2364 { 2365 Int layerIdRef = get VPS()->getRefLayerId( getLayerIdInVps(),i );2535 for( Int i = 0; i < getNumActiveRefLayerPics(); i++ ) 2536 { 2537 Int layerIdRef = getRefPicLayerId( i ); 2366 2538 TComPic* picRef = ivPicLists->getPic( layerIdRef, getPOC() ) ; 2367 2539 assert ( picRef != 0 ); … … 2371 2543 picRef->getSlice(0)->setReferenced( true ); 2372 2544 2545 // Consider to check here: 2546 // "If the current picture is a RADL picture, there shall be no entry in the RefPicSetInterLayer that is a RASL picture. " 2373 2547 refPicSetInterLayer.push_back( picRef ); 2374 2548 } … … 2441 2615 } 2442 2616 } 2617 } 2618 Int TComSlice::xCeilLog2( Int val ) 2619 { 2620 assert( val > 0 ); 2621 Int ceilLog2 = 0; 2622 while( val > ( 1 << ceilLog2 ) ) ceilLog2++; 2623 return ceilLog2; 2624 } 2625 2626 Void TComSlice::markCurrPic( TComPic* currPic ) 2627 { 2628 if ( !currPic->getSlice(0)->getDiscardableFlag() ) 2629 { 2630 currPic->getSlice(0)->setReferenced( true ) ; 2631 currPic->setIsLongTerm( false ); 2632 } 2633 else 2634 { 2635 currPic->getSlice(0)->setReferenced( false ) ; 2636 } 2637 } 2638 2639 Void TComSlice::setRefPicSetInterLayer( std::vector<TComPic*>* refPicSetInterLayer ) 2640 { 2641 m_refPicSetInterLayer = refPicSetInterLayer; 2642 } 2643 2644 TComPic* TComSlice::getPicFromRefPicSetInterLayer( Int layerId ) 2645 { 2646 assert( m_refPicSetInterLayer != 0 ); 2647 assert( (*m_refPicSetInterLayer).size() == getNumActiveRefLayerPics() ); 2648 TComPic* pcPic = NULL; 2649 for ( Int i = 0; i < getNumActiveRefLayerPics(); i++ ) 2650 { 2651 if ((*m_refPicSetInterLayer)[ i ]->getLayerId() == layerId) 2652 { 2653 pcPic = (*m_refPicSetInterLayer)[ i ]; 2654 } 2655 } 2656 assert(pcPic != NULL); 2657 return pcPic; 2658 } 2659 2660 Int TComSlice::getNumActiveRefLayerPics() 2661 { 2662 Int numActiveRefLayerPics; 2663 2664 if( getLayerId() == 0 || getVPS()->getNumDirectRefLayers( getLayerIdInVps() ) == 0 || !getInterLayerPredEnabledFlag() ) 2665 { 2666 numActiveRefLayerPics = 0; 2667 } 2668 else if( getVPS()->getMaxOneActiveRefLayerFlag() || getVPS()->getNumDirectRefLayers( getLayerIdInVps() ) == 1 ) 2669 { 2670 numActiveRefLayerPics = 1; 2671 } 2672 else 2673 { 2674 numActiveRefLayerPics = getNumInterLayerRefPicsMinus1() + 1; 2675 } 2676 return numActiveRefLayerPics; 2677 } 2678 2679 Int TComSlice::getRefPicLayerId( Int i ) 2680 { 2681 return getVPS()->getRefLayerId( getLayerIdInVps(), getInterLayerPredLayerIdc( i ) ); 2682 } 2683 2684 Void TComSlice::setActiveMotionPredRefLayers() 2685 { 2686 Int j = 0; 2687 for( Int i = 0; i < getNumActiveRefLayerPics(); i++) 2688 { 2689 if( getVPS()->getMotionPredEnabledFlag( getLayerIdInVps(), getInterLayerPredLayerIdc( i )) ) 2690 { 2691 m_activeMotionPredRefLayerId[ j++ ] = getVPS()->getRefLayerId( getLayerIdInVps(), i ); 2692 } 2693 } 2694 m_numActiveMotionPredRefLayers = j; 2695 2696 // Consider incorporating bitstream conformance tests on derived variables here. 2697 } 2698 2699 Bool TComSlice::getInterRefEnabledInRPLFlag() 2700 { 2701 Bool interRefEnabledInRPLFlag; 2702 if ( getVPS()->getNumSamplePredRefLayers( getLayerIdInVps() ) > 0 && getNumActiveRefLayerPics() > 0 ) 2703 { 2704 interRefEnabledInRPLFlag = !getInterLayerSamplePredOnlyFlag(); 2705 } 2706 else 2707 { 2708 interRefEnabledInRPLFlag = 1; 2709 } 2710 return interRefEnabledInRPLFlag; 2443 2711 } 2444 2712 #if H_3D_ARP -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.h
r532 r534 487 487 UInt m_numHrdParameters; 488 488 #if H_MV 489 UInt m_max NuhLayerId;489 UInt m_maxLayerId; 490 490 #else 491 491 UInt m_maxNuhReservedZeroLayerId; … … 494 494 UInt* m_hrdOpSetIdx; 495 495 Bool* m_cprmsPresentFlag; 496 UInt m_numOpSets; 497 #if H_MV 496 #if H_MV 497 UInt m_vpsNumLayerSetsMinus1; 498 498 Bool m_layerIdIncludedFlag[MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_LAYER_ID_PLUS1]; 499 499 #else 500 UInt m_numOpSets; 500 501 Bool m_layerIdIncludedFlag[MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_RESERVED_ZERO_LAYER_ID_PLUS1]; 501 502 #endif … … 514 515 515 516 #if H_MV 517 /// VPS EXTENSION SYNTAX ELEMENTS 516 518 Bool m_avcBaseLayerFlag; 517 519 Bool m_splittingFlag; … … 520 522 Bool m_vpsNuhLayerIdPresentFlag; 521 523 Int m_layerIdInNuh [MAX_NUM_LAYER_IDS]; 524 Int m_dimensionId [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 525 Bool m_directDependencyFlag [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS]; 526 Int m_maxTidIlRefPicPlus1 [MAX_NUM_LAYERS]; 527 Int m_vpsNumberLayerSetsMinus1; 528 Int m_vpsNumProfileTierLevelMinus1; 529 Bool m_vpsProfilePresentFlag [MAX_VPS_OP_SETS_PLUS1]; 530 Int m_profileRefMinus1 [MAX_VPS_PROFILE_TIER_LEVEL]; 531 Bool m_moreOutputLayerSetsThanDefaultFlag; 532 Int m_numAddOutputLayerSetsMinus1; 533 Bool m_defaultOneTargetOutputLayerFlag; 534 Int m_outputLayerSetIdxMinus1 [MAX_VPS_OUTPUTLAYER_SETS]; 535 Bool m_outputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1]; 536 Int m_profileLevelTierIdx [MAX_VPS_OUTPUTLAYER_SETS ]; 537 Bool m_maxOneActiveRefLayerFlag; 538 Int m_directDepTypeLenMinus2; 539 Int m_directDependencyType [MAX_NUM_LAYERS] [MAX_NUM_LAYERS]; 540 541 // VPS EXTENSION SEMANTICS VARIABLES 522 542 Int m_layerIdInVps [MAX_NUM_LAYERS ]; 523 Int m_dimensionId [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 543 544 Int m_numDirectRefLayers [MAX_NUM_LAYERS]; 545 Int m_refLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 546 547 Int m_numSamplePredRefLayers [MAX_NUM_LAYERS]; 548 Bool m_samplePredEnabledFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 549 Int m_samplePredRefLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 550 551 Int m_numMotionPredRefLayers [MAX_NUM_LAYERS]; 552 Bool m_motionPredEnabledFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 553 Int m_motionPredRefLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 524 554 #if H_3D 525 555 Int m_viewIndex [MAX_NUM_LAYERS ]; 556 #endif 557 558 Int xCeilLog2 ( Int val ); 559 Int xGetDimBitOffset( Int j ); 560 526 561 #if H_3D_ARP 527 562 UInt m_uiUseAdvResPred [MAX_NUM_LAYERS ]; … … 549 584 Bool m_ivMvScalingFlag; 550 585 #endif 551 552 #endif553 554 555 Bool m_vpsProfilePresentFlag [MAX_VPS_OP_SETS_PLUS1];556 Int m_profileLayerSetRefMinus1 [MAX_VPS_OP_SETS_PLUS1];557 Int m_numOutputLayerSets;558 Int m_outputLayerSetIdx [MAX_VPS_OP_SETS_PLUS1];559 Bool m_outputLayerFlag [MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_LAYER_ID_PLUS1];560 Bool m_directDependencyFlag [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];561 562 Int m_numDirectRefLayers [ MAX_NUM_LAYERS ];563 Int m_refLayerId [ MAX_NUM_LAYERS ][MAX_NUM_LAYERS];564 586 565 587 #endif … … 606 628 607 629 #if H_MV 608 UInt getMaxNuhLayerId() { return m_maxNuhLayerId; } 609 Void setMaxNuhLayerId(UInt v) { m_maxNuhLayerId = v; } 630 UInt getVpsMaxLayerId() { return m_maxLayerId; } 631 Void setVpsMaxLayerId(UInt v) { m_maxLayerId = v; } 632 633 UInt getVpsNumLayerSetsMinus1() { return m_vpsNumLayerSetsMinus1; } 634 Void setVpsNumLayerSetsMinus1(UInt v) { m_vpsNumLayerSetsMinus1 = v; } 610 635 #else 611 636 UInt getMaxNuhReservedZeroLayerId() { return m_maxNuhReservedZeroLayerId; } 612 637 Void setMaxNuhReservedZeroLayerId(UInt v) { m_maxNuhReservedZeroLayerId = v; } 613 #endif614 638 615 639 UInt getMaxOpSets() { return m_numOpSets; } 616 640 Void setMaxOpSets(UInt v) { m_numOpSets = v; } 641 #endif 617 642 Bool getLayerIdIncludedFlag(UInt opsIdx, UInt id) { return m_layerIdIncludedFlag[opsIdx][id]; } 618 643 Void setLayerIdIncludedFlag(Bool v, UInt opsIdx, UInt id) { m_layerIdIncludedFlag[opsIdx][id] = v; } … … 652 677 Int getLayerIdInNuh( Int layerIdInVps ) { assert( m_layerIdInNuh[layerIdInVps] >= 0 ); return m_layerIdInNuh[layerIdInVps]; } 653 678 679 Bool nuhLayerIdIncluded( Int layerIdinNuh ) { return ( m_layerIdInVps[ layerIdinNuh ] > 0 ); } 680 681 Void setDimensionId( Int layerIdInVps, Int scalIdx, Int val ) { m_dimensionId[layerIdInVps][scalIdx] = val; } 682 Int getDimensionId( Int layerIdInVps, Int scalIdx ) { return m_dimensionId[layerIdInVps][scalIdx]; } 683 684 Void setDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Bool val ) { m_directDependencyFlag[depLayeridInVps][refLayeridInVps] = val; } 685 Bool getDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps ) { return m_directDependencyFlag[depLayeridInVps][refLayeridInVps]; } 686 687 Void setMaxTidIlRefPicPlus1( Int layerIdInVps, Int val ) { m_maxTidIlRefPicPlus1[ layerIdInVps ] = val; } 688 Int getMaxTidIlRefPicPlus1( Int layerIdInVps ) { return m_maxTidIlRefPicPlus1[ layerIdInVps ]; } 689 690 Void setVpsNumberLayerSetsMinus1( Int val ) { m_vpsNumberLayerSetsMinus1 = val; } 691 Int getVpsNumberLayerSetsMinus1( ) { return m_vpsNumberLayerSetsMinus1; } 692 693 Void setVpsNumProfileTierLevelMinus1( Int val ) { m_vpsNumProfileTierLevelMinus1 = val; } 694 Int getVpsNumProfileTierLevelMinus1( ) { return m_vpsNumProfileTierLevelMinus1; } 695 696 Void setVpsProfilePresentFlag( Int idx, Bool val ) { m_vpsProfilePresentFlag[idx] = val; } 697 Bool getVpsProfilePresentFlag( Int idx ) { return m_vpsProfilePresentFlag[idx]; } 698 699 Void setProfileRefMinus1( Int profileTierLevelIdx, Int val ) { m_profileRefMinus1[ profileTierLevelIdx ] = val; } 700 Int getProfileRefMinus1( Int profileTierLevelIdx ) { return m_profileRefMinus1[ profileTierLevelIdx ]; } 701 702 Void setMoreOutputLayerSetsThanDefaultFlag( Bool flag ) { m_moreOutputLayerSetsThanDefaultFlag = flag; } 703 Bool getMoreOutputLayerSetsThanDefaultFlag() { return m_moreOutputLayerSetsThanDefaultFlag; } 704 705 Void setNumAddOutputLayerSetsMinus1( Int val ) { m_numAddOutputLayerSetsMinus1 = val; } 706 Int getNumAddOutputLayerSetsMinus1( ) { return m_numAddOutputLayerSetsMinus1; } 707 708 Void setDefaultOneTargetOutputLayerFlag( Bool flag ) { m_defaultOneTargetOutputLayerFlag = flag; } 709 Bool getDefaultOneTargetOutputLayerFlag( ) { return m_defaultOneTargetOutputLayerFlag; } 710 711 Void setOutputLayerSetIdxMinus1( Int outLayerSetIdx, Int val ) { m_outputLayerSetIdxMinus1[ outLayerSetIdx ] = val; } 712 Int getOutputLayerSetIdxMinus1( Int outLayerSetIdx ) { return m_outputLayerSetIdxMinus1[ outLayerSetIdx ]; } 713 714 Void setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag ) { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; } 715 Bool getOutputLayerFlag( Int outLayerSetIdx, Int i ) { return m_outputLayerFlag[ outLayerSetIdx ][ i ]; } 716 717 Void setProfileLevelTierIdx( Int outLayerSetIdx, Int val ) { m_profileLevelTierIdx[ outLayerSetIdx = val ]; } 718 Int getProfileLevelTierIdx( Int outLayerSetIdx ) { return m_profileLevelTierIdx[ outLayerSetIdx ]; } 719 720 Void setMaxOneActiveRefLayerFlag( Bool flag) { m_maxOneActiveRefLayerFlag = flag; } 721 Bool getMaxOneActiveRefLayerFlag( ) { return m_maxOneActiveRefLayerFlag; } 722 723 Void setDirectDepTypeLenMinus2( Int val) { m_directDepTypeLenMinus2 = val; } 724 Int getDirectDepTypeLenMinus2( ) { return m_directDepTypeLenMinus2; } 725 726 Void setDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps, Int val) { m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ] = val; } 727 Int getDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps) { return m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ]; } 728 729 730 // VPS EXTENSION SEMANTICS VARIABLES 654 731 Void setLayerIdInVps( Int layerIdInNuh, Int val ) { m_layerIdInVps[layerIdInNuh] = val; } 655 732 Int getLayerIdInVps( Int layerIdInNuh ) { assert( m_layerIdInVps[layerIdInNuh] >= 0 ); return m_layerIdInVps[layerIdInNuh]; } 656 733 657 Bool nuhLayerIdIncluded( Int layerIdinNuh ) { return ( m_layerIdInVps[ layerIdinNuh ] > 0 ); }658 659 Void setDimensionId( Int layerIdInVps, Int scalIdx, Int val ) { m_dimensionId[layerIdInVps][scalIdx] = val; }660 Int getDimensionId( Int layerIdInVps, Int scalIdx ) { return m_dimensionId[layerIdInVps][scalIdx]; }661 662 734 Int getScalabilityId ( Int layerIdInVps, ScalabilityType scalType ); 663 664 735 Int getViewId ( Int layerIdInVps ) { return getScalabilityId( layerIdInVps, VIEW_ID ); } 736 737 Void setRefLayers(); 738 739 Int getNumDirectRefLayers( Int layerIdInVps ) { return m_numDirectRefLayers[ layerIdInVps ]; }; 740 Int getRefLayerId ( Int layerIdInVps, Int idx );; 741 742 Int getNumSamplePredRefLayers( Int layerIdInVps ) { return m_numSamplePredRefLayers[layerIdInVps]; } 743 Bool getSamplePredEnabledFlag ( Int layerIdInVps, Int idx ) { return m_samplePredEnabledFlag [layerIdInVps][idx]; } 744 Int getSamplePredRefLayerId ( Int layerIdInVps, Int idx ) { return m_samplePredRefLayerId [layerIdInVps][idx]; } 745 746 Int getNumMotionPredRefLayers( Int layerIdInVps ) { return m_numMotionPredRefLayers[layerIdInVps]; } 747 Bool getMotionPredEnabledFlag ( Int layerIdInVps, Int idx ) { return m_motionPredEnabledFlag [layerIdInVps][idx]; } 748 Int getMotionPredRefLayerId ( Int layerIdInVps, Int idx ) { return m_motionPredRefLayerId [layerIdInVps][idx]; } 749 750 Bool checkVPSExtensionSyntax(); 751 Int scalTypeToScalIdx ( ScalabilityType scalType ); 752 753 Int getProfileLevelTierIdxLen() { return xCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); }; 754 Int getNumLayersInIdList ( Int lsIdx );; 755 756 // inference 757 Int inferDimensionId ( Int i, Int j ); 758 Int inferLastDimsionIdLenMinus1(); 759 665 760 #if H_3D 666 761 Void initViewIndex(); 667 762 Int getViewIndex ( Int layerIdInVps ) { return m_viewIndex[ layerIdInVps ]; } 668 763 Int getDepthId ( Int layerIdInVps ) { return getScalabilityId( layerIdInVps, DEPTH_ID ); } 669 Int getLayerIdInNuh( Int viewIndex, Bool depthFlag ); 764 Int getLayerIdInNuh( Int viewIndex, Bool depthFlag ); 765 670 766 #if H_3D_ARP 671 767 UInt getUseAdvRP ( Int layerIdInVps ) { return m_uiUseAdvResPred[layerIdInVps]; } … … 703 799 Void setIvMvScalingFlag ( Bool b ) { m_ivMvScalingFlag = b; } 704 800 #endif 705 #endif 706 707 Void setVpsProfilePresentFlag( Int layerSet, Bool val ) { m_vpsProfilePresentFlag[layerSet] = val; } 708 Bool getVpsProfilePresentFlag( Int layerSet ) { return m_vpsProfilePresentFlag[layerSet]; } 709 710 Void setProfileLayerSetRefMinus1( Int layerSet, Int val ) { m_profileLayerSetRefMinus1[layerSet] = val; } 711 Bool getProfileLayerSetRefMinus1( Int layerSet ) { return m_profileLayerSetRefMinus1[layerSet]; } 712 713 Void setNumOutputLayerSets( Int val ) { m_numOutputLayerSets = val; } 714 Int getNumOutputLayerSets() { return m_numOutputLayerSets; } 715 716 Void setOutputLayerSetIdx( Int layerSet, Int val ) { m_outputLayerSetIdx[layerSet] = val; } 717 Int getOutputLayerSetIdx( Int layerSet ) { return m_outputLayerSetIdx[layerSet]; } 718 719 Void setOutputLayerFlag( Int layerSet, Int layer, Bool val ) { m_outputLayerFlag[layerSet][layer] = val; } 720 Bool getOutputLayerFlag( Int layerSet, Int layer ) { return m_outputLayerFlag[layerSet][layer]; } 721 722 Void setDirectDependencyFlag( Int layerHigh, Int layerLow, Bool val ) { m_directDependencyFlag[layerHigh][layerLow] = val; } 723 Bool getDirectDependencyFlag( Int layerHigh, Int layerLow ) { return m_directDependencyFlag[layerHigh][layerLow]; } 724 725 Void calcIvRefLayers(); 726 727 Int getNumDirectRefLayers( Int layerIdInVps ) { return m_numDirectRefLayers[ layerIdInVps ]; }; 728 Int getRefLayerId ( Int layerIdInVps, Int idx );; 729 730 Bool checkVPSExtensionSyntax(); 731 Int scalTypeToScalIdx ( ScalabilityType scalType ); 801 802 #endif 732 803 #endif 733 804 }; … … 813 884 Int m_numTicksPocDiffOneMinus1; 814 885 #endif 815 886 #if H_MV 887 Bool m_tileBoundariesAlignedFlag; 888 #endif 816 889 public: 817 890 TComVUI() … … 849 922 ,m_numTicksPocDiffOneMinus1(0) 850 923 #endif 924 #if H_MV 925 ,m_tileBoundariesAlignedFlag(true) 926 #endif 851 927 {} 852 928 … … 950 1026 Int getNumTicksPocDiffOneMinus1() {return m_numTicksPocDiffOneMinus1;} 951 1027 Void setNumTicksPocDiffOneMinus1(Int x) { m_numTicksPocDiffOneMinus1 = x;} 1028 #endif 1029 #if H_MV 1030 Bool getTileBoundariesAlignedFlag( ) { return m_tileBoundariesAlignedFlag; } 1031 Void setTileBoundariesAlignedFlag( Bool flag ) { m_tileBoundariesAlignedFlag = flag; } 952 1032 #endif 953 1033 }; … … 1035 1115 #if H_MV 1036 1116 Bool m_interViewMvVertConstraintFlag; 1117 Int m_numIlpRestrictedRefLayers ; 1118 Int m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS]; 1119 Bool m_ctuBasedOffsetEnabledFlag [MAX_NUM_LAYERS]; 1120 Int m_minHorizontalCtuOffsetPlus1 [MAX_NUM_LAYERS]; 1037 1121 #endif 1038 1122 #if H_3D … … 1041 1125 Int m_aaiCodedScale [2][MAX_NUM_LAYERS]; 1042 1126 Int m_aaiCodedOffset[2][MAX_NUM_LAYERS]; 1127 #endif 1128 #if H_MV 1129 Int m_layerId; 1043 1130 #endif 1044 1131 public: … … 1175 1262 Void setInterViewMvVertConstraintFlag(Bool val) { m_interViewMvVertConstraintFlag = val; } 1176 1263 Bool getInterViewMvVertConstraintFlag() { return m_interViewMvVertConstraintFlag;} 1264 1265 //// sps_extension_vui_parameters( ) 1266 Void setNumIlpRestrictedRefLayers ( Int val ) { m_numIlpRestrictedRefLayers = val;} 1267 Int getNumIlpRestrictedRefLayers ( ) { return m_numIlpRestrictedRefLayers ;} 1268 1269 Void setMinSpatialSegmentOffsetPlus1( Int i, Int val ) { m_minSpatialSegmentOffsetPlus1[ i ] = val;} 1270 Int getMinSpatialSegmentOffsetPlus1( Int i ) { return m_minSpatialSegmentOffsetPlus1[ i ];} 1271 1272 Void setCtuBasedOffsetEnabledFlag ( Int i, Bool flag ) { m_ctuBasedOffsetEnabledFlag [ i ] = flag;} 1273 Bool getCtuBasedOffsetEnabledFlag ( Int i ) { return m_ctuBasedOffsetEnabledFlag [ i ];} 1274 1275 Void setMinHorizontalCtuOffsetPlus1 ( Int i, Int val ) { m_minHorizontalCtuOffsetPlus1 [ i ] = val;} 1276 Int getMinHorizontalCtuOffsetPlus1 ( Int i ) { return m_minHorizontalCtuOffsetPlus1 [ i ];} 1177 1277 #endif 1178 1278 #if H_3D … … 1185 1285 Int* getInvCodedOffset () { return m_aaiCodedOffset[1]; } 1186 1286 #endif 1287 #if H_MV 1288 Int getLayerId () { return m_layerId; } 1289 Void setLayerId ( Int val ) { m_layerId = val; } 1290 #endif 1291 1187 1292 }; 1188 1293 … … 1213 1318 #if H_MV 1214 1319 // Why not an listIdx for all members, would avoid code duplication?? 1215 Void setRefPicSetIdxL(UInt li, UInt idx, UInt refPicSetIdx) {( li==0 ? m_RefPicSetIdxL0[idx] : m_RefPicSetIdxL1[idx] ) = refPicSetIdx; }; 1216 Void setRefPicListModificationFlagL(UInt li, Bool flag) { ( li==0 ? m_bRefPicListModificationFlagL0 : m_bRefPicListModificationFlagL1 ) = flag; }; 1320 Void setRefPicSetIdxL(UInt li, UInt idx, UInt refPicSetIdx) {( li==0 ? m_RefPicSetIdxL0[idx] : m_RefPicSetIdxL1[idx] ) = refPicSetIdx; } 1321 UInt getRefPicSetIdxL(UInt li, UInt idx ) { return ( li == 0 ) ? m_RefPicSetIdxL0[idx] : m_RefPicSetIdxL1[idx] ; } 1322 Void setRefPicListModificationFlagL(UInt li, Bool flag) { ( li==0 ? m_bRefPicListModificationFlagL0 : m_bRefPicListModificationFlagL1 ) = flag; } 1323 Bool getRefPicListModificationFlagL(UInt li ) { return ( li== 0) ? m_bRefPicListModificationFlagL0 : m_bRefPicListModificationFlagL1; } 1217 1324 #endif 1218 1325 }; … … 1539 1646 Bool m_enableTMVPFlag; 1540 1647 #if H_MV 1648 std::vector<TComPic*>* m_refPicSetInterLayer; 1541 1649 Int m_layerId; 1542 1650 Int m_viewId; … … 1565 1673 #endif 1566 1674 #endif 1675 #if H_MV 1676 // Additional slice header syntax elements 1677 Bool m_discardableFlag; 1678 Bool m_interLayerPredEnabledFlag; 1679 Int m_numInterLayerRefPicsMinus1; 1680 Int m_interLayerPredLayerIdc [MAX_NUM_LAYERS]; 1681 Bool m_interLayerSamplePredOnlyFlag; 1682 Bool m_altCollocatedIndicationFlag; 1683 Int m_collocatedRefLayerIdx; 1684 // Additional slice header semantics variables 1685 Int m_numActiveMotionPredRefLayers; 1686 Int m_activeMotionPredRefLayerId [ MAX_NUM_LAYER_IDS ]; 1687 1688 #endif 1689 1567 1690 public: 1568 1691 TComSlice(); … … 1757 1880 Void createAndApplyIvReferencePictureSet( TComPicLists* ivPicLists, std::vector<TComPic*>& refPicSetInterLayer ); 1758 1881 static Void markIvRefPicsAsShortTerm ( std::vector<TComPic*> refPicSetInterLayer ); 1882 static Void markCurrPic ( TComPic* currPic );; 1759 1883 static Void markIvRefPicsAsUnused ( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc ); 1760 1884 … … 1873 1997 1874 1998 #endif 1999 #if H_MV 2000 // Additional slice header syntax elements 2001 Void setDiscardableFlag( Bool flag ) { m_discardableFlag = flag; } 2002 Bool getDiscardableFlag( ) { return m_discardableFlag; } 2003 2004 Void setInterLayerPredEnabledFlag( Bool flag ) { m_interLayerPredEnabledFlag = flag; } 2005 Bool getInterLayerPredEnabledFlag( ) { return m_interLayerPredEnabledFlag; } 2006 2007 Void setNumInterLayerRefPicsMinus1( Int val ) { m_numInterLayerRefPicsMinus1 = val; } 2008 Int getNumInterLayerRefPicsMinus1( ) { return m_numInterLayerRefPicsMinus1; } 2009 2010 Void setInterLayerPredLayerIdc( Int i, Int val ) { m_interLayerPredLayerIdc[i] = val; } 2011 Int getInterLayerPredLayerIdc( Int i ) { return m_interLayerPredLayerIdc[i]; } 2012 2013 Void setInterLayerSamplePredOnlyFlag( Bool flag ) { m_interLayerSamplePredOnlyFlag = flag; } 2014 Bool getInterLayerSamplePredOnlyFlag( ) { return m_interLayerSamplePredOnlyFlag; } 2015 2016 Void setAltCollocatedIndicationFlag( Bool flag ) { m_altCollocatedIndicationFlag = flag; } 2017 Bool getAltCollocatedIndicationFlag( ) { return m_altCollocatedIndicationFlag; } 2018 2019 Void setCollocatedRefLayerIdx( Int val ) { m_collocatedRefLayerIdx = val; } 2020 Int getCollocatedRefLayerIdx( ) { return m_collocatedRefLayerIdx; } 2021 2022 // Additional variables derived in slice header semantics 2023 Int getNumInterLayerRefPicsMinus1Len( ) { return xCeilLog2( getVPS()->getNumDirectRefLayers( getLayerIdInVps() )); } 2024 Int getInterLayerPredLayerIdcLen ( ) { return xCeilLog2( getVPS()->getNumDirectRefLayers( getLayerIdInVps() )); } 2025 2026 Int getNumActiveRefLayerPics( ); 2027 Int getRefPicLayerId ( Int i ); 2028 2029 Void setActiveMotionPredRefLayers ( ); 2030 2031 Int getNumActiveMotionPredRefLayers( ) { return m_numActiveMotionPredRefLayers; } 2032 Int getActiveMotionPredRefLayerId ( Int i ) { return m_activeMotionPredRefLayerId[i]; } 2033 2034 Bool getInterRefEnabledInRPLFlag( ); 2035 2036 Void setRefPicSetInterLayer ( std::vector<TComPic*>* m_refPicSetInterLayer ); 2037 TComPic* getPicFromRefPicSetInterLayer( Int layerId ); 2038 2039 #endif 1875 2040 1876 2041 protected: … … 1879 2044 TComPic* xGetLongTermRefPic(TComList<TComPic*>& rcListPic, Int poc, Bool pocHasMsb); 1880 2045 #if H_MV 2046 Int xCeilLog2( Int val ); 1881 2047 TComPic* xGetInterLayerRefPic( std::vector<TComPic*>& rcListIlPic, Int layerId ); 1882 2048 #endif -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TypeDef.h
r532 r534 260 260 #if H_MV 261 261 #define MAX_NUM_LAYERS 64 262 #define MAX_VPS_PROFILE_TIER_LEVEL 64 263 #define MAX_VPS_ADD_OUTPUT_LAYER_SETS 1024 264 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 ) 262 265 #endif 263 266
Note: See TracChangeset for help on using the changeset viewer.