Changeset 738 in 3DVCSoftware for trunk/source/Lib/TLibCommon
- Timestamp:
- 10 Dec 2013, 13:50:12 (11 years ago)
- Location:
- trunk/source/Lib/TLibCommon
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/CommonDef.h
r736 r738 60 60 61 61 #if H_MV 62 #define NV_VERSION "9. 0r1"///< Current software version62 #define NV_VERSION "9.1" ///< Current software version 63 63 #define HM_VERSION "12.0" ///< 64 64 #else … … 121 121 #define MAX_UINT 0xFFFFFFFFU ///< max. value of unsigned 32-bit integer 122 122 #define MAX_INT 2147483647 ///< max. value of signed 32-bit integer 123 #if H_3D124 123 #define MIN_INT (-2147483647-1) // < min. value of signed 32-bit integer 125 #endif 124 126 125 #define MAX_INT64 0x7FFFFFFFFFFFFFFFLL ///< max. value of signed 64-bit integer 127 126 #define MAX_DOUBLE 1.7e+308 ///< max. value of double-type value -
trunk/source/Lib/TLibCommon/TComPic.cpp
r655 r738 503 503 { 504 504 if ( legend ) 505 std::cout << "LId" << "\t" << "POC" << "\t" << "Rec" << "\t" << "Ref" << "\t" << "LT"<< std::endl;505 std::cout << std::endl << "LId" << "\t" << "POC" << "\t" << "Rec" << "\t" << "Ref" << "\t" << "LT" << "\t" << "OutMark" << "\t" << "OutFlag" << std::endl; 506 506 else 507 std::cout << getLayerId() << "\t" << getPOC()<< "\t" << getReconMark() << "\t" << getSlice(0)->isReferenced() << "\t" << getIsLongTerm() << std::endl;507 std::cout << getLayerId() << "\t" << getPOC()<< "\t" << getReconMark() << "\t" << getSlice(0)->isReferenced() << "\t" << getIsLongTerm() << "\t" << getOutputMark() << "\t" << getSlice(0)->getPicOutputFlag() <<std::endl; 508 508 } 509 509 … … 530 530 return getPic ( m_vps->getLayerIdInNuh( viewIndex, depthFlag ), poc ); 531 531 } 532 532 #endif 533 533 Void TComPicLists::print() 534 534 { … … 571 571 } 572 572 573 #if H_3D 573 574 TComPicYuv* TComPicLists::getPicYuv( Int viewIndex, Bool depthFlag, Int poc, Bool recon ) 574 575 { … … 593 594 } 594 595 #endif 595 #endif // H_3D596 #endif 596 597 #endif // H_MV 597 598 -
trunk/source/Lib/TLibCommon/TComRom.cpp
r724 r738 573 573 #if H_MV_ENC_DEC_TRAC 574 574 #if ENC_DEC_TRACE 575 #if H_MV_FIX_TRACE_FILE 576 Void writeToTraceFile( const Char* symbolName, Int val, Bool doIt ) 577 #else 575 578 Void writeToTraceFile( Char* symbolName, Int val, Bool doIt ) 579 #endif 576 580 { 577 581 if ( ( ( g_nSymbolCounter >= COUNTER_START && g_nSymbolCounter <= COUNTER_END )|| g_bJustDoIt ) && doIt ) … … 588 592 } 589 593 594 #if H_MV_FIX_TRACE_FILE 595 Void writeToTraceFile( const Char* symbolName, Bool doIt ) 596 #else 590 597 Void writeToTraceFile( Char* symbolName, Bool doIt ) 598 #endif 591 599 { 592 600 if ( ( ( g_nSymbolCounter >= COUNTER_START && g_nSymbolCounter <= COUNTER_END )|| g_bJustDoIt ) && doIt ) -
trunk/source/Lib/TLibCommon/TComRom.h
r724 r738 236 236 237 237 238 #if H_MV_FIX_TRACE_FILE 239 Void writeToTraceFile( const Char* symbolName, Int val, Bool doIt ); 240 Void writeToTraceFile( const Char* symbolName, Bool doIt ); 241 #else 238 242 Void writeToTraceFile( Char* symbolName, Int val, Bool doIt ); 239 243 Void writeToTraceFile( Char* symbolName, Bool doIt ); 244 #endif 240 245 #endif 241 246 #else -
trunk/source/Lib/TLibCommon/TComSlice.cpp
r724 r738 110 110 #endif 111 111 , m_pocResetFlag (false) 112 #if H_MV_6_RALS_O0149_11 113 , m_crossLayerBlaFlag (false) 114 #endif 112 115 , m_discardableFlag (false) 113 116 , m_interLayerPredEnabledFlag (false) … … 148 151 for (Int i = 0; i < MAX_NUM_LAYERS; i++ ) 149 152 { 150 m_interLayerPredLayerIdc[ i ] = i;153 m_interLayerPredLayerIdc[ i ] = -1; 151 154 } 152 155 #endif … … 1709 1712 , m_hrdOpSetIdx (NULL) 1710 1713 , m_cprmsPresentFlag (NULL) 1714 #if H_MV_6_HRD_O0217_13 1715 , m_dpbSize (NULL) 1716 #endif 1711 1717 #if H_MV 1712 1718 , m_vpsVUI ( NULL ) … … 1724 1730 for( Int layerId = 0; layerId < MAX_VPS_NUH_LAYER_ID_PLUS1; layerId++ ) 1725 1731 { 1732 #if H_MV_6_HRD_O0217_13 1733 m_layerIdIncludedFlag[lsIdx][layerId] = (( lsIdx == 0 ) && ( layerId == 0 )) ; 1734 #else 1726 1735 m_layerIdIncludedFlag[lsIdx][layerId] = false; 1736 #endif 1727 1737 } 1728 1738 } … … 1738 1748 m_moreOutputLayerSetsThanDefaultFlag = false; 1739 1749 m_numAddOutputLayerSetsMinus1 = -1; 1750 #if H_MV_6_PS_0109_25 1751 m_defaultOneTargetOutputLayerIdc = 0; 1752 #else 1740 1753 m_defaultOneTargetOutputLayerFlag = false; 1754 #endif 1741 1755 1742 1756 for ( Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++) … … 1749 1763 } 1750 1764 } 1751 1765 #if H_MV_6_GEN_0153_28 1766 m_altOutputLayerFlag = false; 1767 #endif 1752 1768 m_maxOneActiveRefLayerFlag = false; 1753 1769 m_directDepTypeLenMinus2 = 0; … … 1786 1802 m_layerIdInNuh [i] = ( i == 0 ) ? 0 : -1; 1787 1803 m_numDirectRefLayers[i] = 0; 1804 #if !H_MV_6_ILDDS_O0225_30 1788 1805 m_maxTidIlRefPicPlus1[i] = 7; 1806 #endif 1789 1807 m_vpsRepFormatIdx [i] = 0; 1808 #if H_MV_6_MISC_O0062_31 1809 m_pocLsbNotPresentFlag[i] = 0; 1810 #endif 1790 1811 m_repFormat [i] = NULL; 1791 1812 m_viewIdVal [i] = 0; … … 1821 1842 m_directDependencyType[i][j] = -1; 1822 1843 m_refLayerId[i][j] = -1; 1844 #if H_MV_6_ILDDS_O0225_30 1845 m_maxTidIlRefPicsPlus1[i][j] = 7; 1846 #endif 1823 1847 } 1824 1848 … … 1833 1857 } 1834 1858 m_vpsVUI = new TComVPSVUI; 1859 #if H_MV_6_HRD_O0217_13 1860 m_dpbSize = new TComDpbSize; 1861 #endif 1862 # 1835 1863 #if H_3D 1836 1864 for( Int i = 0; i < MAX_NUM_LAYERS; i++ ) … … 1866 1894 #if H_MV 1867 1895 if ( m_vpsVUI != NULL ) delete m_vpsVUI; 1896 #if H_MV_6_HRD_O0217_13 1897 if ( m_dpbSize != NULL ) delete m_dpbSize; 1898 #endif 1899 1868 1900 for( Int i = 0; i < MAX_NUM_LAYERS; i++ ) 1869 1901 { … … 2068 2100 assert( lsIdx >= 0 ); 2069 2101 assert( lsIdx <= getVpsNumLayerSetsMinus1() ); 2102 #if H_MV_6_HRD_O0217_13 2103 return (Int) m_layerSetLayerIdList[ lsIdx ].size(); 2104 #else 2070 2105 Int numLayersInIdList = 0; 2071 2106 for (Int layerId = 0; layerId < getVpsMaxLayerId(); layerId++ ) … … 2074 2109 } 2075 2110 return numLayersInIdList; 2076 } 2111 #endif 2112 } 2113 2114 #if H_MV_6_HRD_O0217_13 2115 Int TComVPS::getNumOutputLayerSets() 2116 { 2117 Int numOutputLayerSets = getVpsNumberLayerSetsMinus1( ) + 1; 2118 if ( getMoreOutputLayerSetsThanDefaultFlag( ) ) 2119 { 2120 numOutputLayerSets += (getNumAddOutputLayerSetsMinus1( ) + 1); 2121 } 2122 return numOutputLayerSets; 2123 } 2124 #endif 2125 2077 2126 Int TComVPS::getNumViews() 2078 2127 { … … 2104 2153 return dependentFlag; 2105 2154 } 2155 2156 #if H_MV_6_HRD_O0217_13 2157 Void TComVPS::deriveLayerSetLayerIdList() 2158 { 2159 m_layerSetLayerIdList.resize( getVpsNumLayerSetsMinus1() + 1 ); 2160 for (Int i = 0; i <= getVpsNumLayerSetsMinus1(); i++ ) 2161 { 2162 for( Int m = 0; m <= getVpsMaxLayerId(); m++ ) 2163 { 2164 if( getLayerIdIncludedFlag( i, m) ) 2165 { 2166 m_layerSetLayerIdList[ i ].push_back( m ); 2167 } 2168 } 2169 } 2170 } 2171 2172 Void TComVPS::deriveTargetLayerIdLists() 2173 { 2174 m_targetDecLayerIdLists.resize( getNumOutputLayerSets() ); 2175 m_targetOptLayerIdLists.resize( getNumOutputLayerSets() ); 2176 2177 for (Int targetOptLayerSetIdx = 0; targetOptLayerSetIdx < getNumOutputLayerSets(); targetOptLayerSetIdx++ ) 2178 { 2179 Int targetDecLayerSetIdx = getOutputLayerSetIdxMinus1( targetOptLayerSetIdx ) + 1; 2180 Int lsIdx = targetDecLayerSetIdx; 2181 2182 for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ ) 2183 { 2184 m_targetDecLayerIdLists[targetOptLayerSetIdx].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] ); 2185 if( getOutputLayerFlag( targetOptLayerSetIdx, j )) // This seems to be wrong in draft text 2186 { 2187 m_targetOptLayerIdLists[targetOptLayerSetIdx].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] ); 2188 } 2189 } 2190 } 2191 } 2192 #endif 2106 2193 #endif // H_MV 2107 2194 … … 2157 2244 , m_spsInferScalingListFlag ( false ) 2158 2245 , m_spsScalingListRefLayerId ( 0 ) 2246 2247 #if !H_MV_6_PS_REP_FORM_18_19_20 2159 2248 , m_updateRepFormatFlag ( true ) 2249 #else 2250 , m_updateRepFormatFlag ( false ) 2251 , m_spsRepFormatIdx ( 0 ) 2252 #endif 2160 2253 , m_interViewMvVertConstraintFlag (false) 2161 2254 #endif … … 2173 2266 ::memset(m_ltRefPicPocLsbSps, 0, sizeof(m_ltRefPicPocLsbSps)); 2174 2267 ::memset(m_usedByCurrPicLtSPSFlag, 0, sizeof(m_usedByCurrPicLtSPSFlag)); 2268 #if H_MV_6_PSEM_O0142_3 2269 m_spsExtensionFlag = false; 2270 for( Int i = 0; i < PS_EX_T_MAX_NUM; i++ ) 2271 { 2272 m_spsExtensionTypeFlag[ i ] = false; 2273 } 2274 #endif 2275 #if H_MV_6_SHVC_O0098_36 2276 m_numScaledRefLayerOffsets = 0; 2277 2278 for (Int i = 0; i < MAX_NUM_SCALED_REF_LAYERS; i++ ) 2279 { 2280 m_scaledRefLayerId [i] = -1; 2281 } 2282 2283 for (Int i = 0; i < MAX_NUM_LAYERS; i++ ) 2284 { 2285 m_scaledRefLayerLeftOffset [i] = 0; 2286 m_scaledRefLayerTopOffset [i] = 0; 2287 m_scaledRefLayerRightOffset [i] = 0; 2288 m_scaledRefLayerBottomOffset [i] = 0; 2289 } 2290 #endif 2175 2291 } 2176 2292 … … 2353 2469 if ( layerIdCurr > 0 ) 2354 2470 { 2471 #if H_MV_6_PS_REP_FORM_18_19_20 2472 Int repFormatIdx = getUpdateRepFormatFlag() ? getSpsRepFormatIdx() : vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ; 2473 TComRepFormat* repFormat = vps->getRepFormat( repFormatIdx ); 2474 #else 2355 2475 TComRepFormat* repFormat = vps->getRepFormat( vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ); 2356 2476 if ( !getUpdateRepFormatFlag() ) 2357 2477 { 2478 #endif 2358 2479 setChromaFormatIdc( repFormat->getChromaFormatVpsIdc() ); 2359 2480 //// ToDo: add when supported: … … 2368 2489 setBitDepthC ( repFormat->getBitDepthVpsChromaMinus8() + 8 ); 2369 2490 setQpBDOffsetC ( (Int) (6* ( getBitDepthC() -8 ) ) ); 2491 #if !H_MV_6_PS_REP_FORM_18_19_20 2370 2492 } 2371 2493 else 2494 #else 2495 if ( getLayerId() > 0 && getUpdateRepFormatFlag() ) 2496 #endif 2372 2497 { 2373 2498 assert( getChromaFormatIdc() <= repFormat->getChromaFormatVpsIdc() ); … … 2715 2840 Void TComSlice::markIvRefPicsAsUnused( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc ) 2716 2841 { 2717 // Fill targetDecLayerIdSet with all layers if empty .2842 // Fill targetDecLayerIdSet with all layers if empty (at encoder side) 2718 2843 if (targetDecLayerIdSet.size() == 0 ) 2719 2844 { … … 2739 2864 { 2740 2865 TComPic* pcPic = ivPicLists->getPic( targetDecLayerIdSet[ i ], curPoc ); 2866 #if H_MV_LAYER_WISE_STARTUP 2867 if ( pcPic ) 2868 { 2869 #endif 2741 2870 if( pcPic->getSlice(0)->isReferenced() && pcPic->getSlice(0)->getTemporalLayerNonReferenceFlag() ) 2742 2871 { … … 2761 2890 } 2762 2891 } 2892 #if H_MV_LAYER_WISE_STARTUP 2893 } 2894 #endif 2763 2895 } 2764 2896 } … … 2816 2948 return pcPic; 2817 2949 } 2950 2951 2952 #if H_MV_6_ILDDS_ILREFPICS_27_34 2953 Int TComSlice::getRefLayerPicFlag( Int i ) 2954 { 2955 TComVPS* vps = getVPS(); 2956 Int refLayerIdx = vps->getLayerIdInVps( vps->getRefLayerId( getLayerId(), i ) ); 2957 2958 Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >= getTLayer() ) && 2959 ( vps->getMaxTidIlRefPicsPlus1( refLayerIdx, vps->getLayerIdInVps( getLayerId() )) > getTLayer() ); 2960 2961 return refLayerPicFlag; 2962 } 2963 2964 Int TComSlice::getRefLayerPicIdc( Int j ) 2965 { 2966 Int refLayerPicIdc = -1; 2967 Int curj = 0; 2968 for( Int i = 0; i < getVPS()->getNumDirectRefLayers( getLayerId()) ; i++ ) 2969 { 2970 if( getRefLayerPicFlag( i ) ) 2971 { 2972 if ( curj == j ) 2973 { 2974 refLayerPicIdc = i; 2975 break; 2976 } 2977 curj++; 2978 } 2979 } 2980 2981 assert( curj == j ); 2982 assert( refLayerPicIdc != -1 ); 2983 return refLayerPicIdc; 2984 } 2985 2986 Int TComSlice::getNumRefLayerPics( ) 2987 { 2988 Int numRefLayerPics = 0; 2989 for( Int i = 0; i < getVPS()->getNumDirectRefLayers( getLayerId()) ; i++ ) 2990 { 2991 numRefLayerPics += getRefLayerPicFlag( i ); 2992 } 2993 return numRefLayerPics; 2994 } 2995 #endif 2996 2997 2998 2818 2999 Int TComSlice::getNumActiveRefLayerPics() 2819 3000 { … … 2826 3007 else if (getVPS()->getAllRefLayersActiveFlag() ) 2827 3008 { 3009 #if H_MV_6_ILDDS_ILREFPICS_27_34 3010 numActiveRefLayerPics = getNumRefLayerPics(); 3011 #else 2828 3012 numActiveRefLayerPics = getVPS()->getNumDirectRefLayers( getLayerId() ); 3013 #endif 2829 3014 } 2830 3015 else if ( !getInterLayerPredEnabledFlag() ) … … 2834 3019 else if( getVPS()->getMaxOneActiveRefLayerFlag() || getVPS()->getNumDirectRefLayers( getLayerId() ) == 1 ) 2835 3020 { 3021 #if H_MV_6_ILDDS_ILREFPICS_27_34 3022 numActiveRefLayerPics = getRefLayerPicFlag( 0 ) ? 1 : 0; 3023 #else 2836 3024 numActiveRefLayerPics = 1; 3025 #endif 2837 3026 } 2838 3027 else … … 3434 3623 TComVPSVUI::TComVPSVUI() 3435 3624 { 3625 #if H_MV_6_PS_O0223_29 3626 m_crossLayerIrapAlignedFlag = true; 3627 #endif 3436 3628 m_bitRatePresentVpsFlag = false; 3437 3629 m_picRatePresentVpsFlag = false; … … 3461 3653 } 3462 3654 } 3463 } 3464 #endif 3655 #if H_MV_6_PS_O0118_33 3656 for ( Int i = 0; i < MAX_NUM_VIDEO_SIGNAL_INFO; i++ ) 3657 { 3658 m_videoSignalInfo [i] = NULL; 3659 } 3660 #endif 3661 3662 #if H_MV_6_HRD_O0164_15 3663 m_vpsVuiBspHrdPresentFlag = false; 3664 m_vpsVuiBspHrdParameters = new TComVpsVuiBspHrdParameters(); 3665 #endif 3666 } 3667 3668 #if H_MV_6_PS_O0118_33 3669 TComVPSVUI::~TComVPSVUI() 3670 { 3671 for ( Int i = 0; i < MAX_NUM_VIDEO_SIGNAL_INFO; i++ ) 3672 { 3673 if (m_videoSignalInfo[ i ] != NULL ) delete m_videoSignalInfo[ i ]; 3674 m_videoSignalInfo [ i ] = NULL; 3675 } 3676 3677 #if H_MV_6_HRD_O0164_15 3678 if ( m_vpsVuiBspHrdParameters ) delete m_vpsVuiBspHrdParameters; 3679 m_vpsVuiBspHrdParameters = NULL; 3680 #endif 3681 } 3682 #endif 3683 3684 #if H_MV_6_PS_REP_FORM_18_19_20 3685 Void TComRepFormat::inferChromaAndBitDepth( TComRepFormat* prevRepFormat, Bool encoderFlag ) 3686 { 3687 if ( !encoderFlag ) 3688 { 3689 setChromaAndBitDepthVpsPresentFlag( prevRepFormat->getChromaAndBitDepthVpsPresentFlag() ); 3690 setSeparateColourPlaneVpsFlag ( prevRepFormat->getSeparateColourPlaneVpsFlag () ); 3691 setBitDepthVpsLumaMinus8 ( prevRepFormat->getBitDepthVpsLumaMinus8 () ); 3692 setBitDepthVpsChromaMinus8 ( prevRepFormat->getBitDepthVpsChromaMinus8 () ); 3693 } 3694 else 3695 { 3696 assert( getChromaAndBitDepthVpsPresentFlag() == prevRepFormat->getChromaAndBitDepthVpsPresentFlag() ); 3697 assert( getSeparateColourPlaneVpsFlag () == prevRepFormat->getSeparateColourPlaneVpsFlag () ); 3698 assert( getBitDepthVpsLumaMinus8 () == prevRepFormat->getBitDepthVpsLumaMinus8 () ); 3699 assert( getBitDepthVpsChromaMinus8 () == prevRepFormat->getBitDepthVpsChromaMinus8 () ); 3700 } 3701 } 3702 #endif 3703 3704 #if H_MV_6_HRD_O0164_15 3705 Void TComVpsVuiBspHrdParameters::checkLayerInBspFlag( TComVPS* vps, Int h ) 3706 { 3707 // It is a requirement of bitstream conformance that bitstream partition with index j shall not include 3708 // direct or indirect reference layers of any layers in bitstream partition i for any values of i and j 3709 // in the range of 0 to num_bitstream_partitions[ h ] 1, inclusive, such that i is less than j. 3710 3711 for ( Int partJ = 0; partJ < getNumBitstreamPartitions( h ); partJ++ ) 3712 { 3713 for ( Int partI = 0; partI < partJ; partI++ ) 3714 { 3715 for ( Int layerJ = 0; layerJ < vps->getMaxLayersMinus1(); layerJ++ ) 3716 { 3717 if ( m_layerInBspFlag[ h ][partJ][layerJ ] ) 3718 { 3719 for ( Int layerI = 0; layerI < vps->getMaxLayersMinus1(); layerI++ ) 3720 { 3721 if ( m_layerInBspFlag[ h ][partI][layerI] ) 3722 { 3723 assert( !vps->getInDirectDependencyFlag( layerI, layerJ ) ); 3724 } 3725 } 3726 } 3727 } 3728 } 3729 } 3730 } 3731 #endif 3732 #endif -
trunk/source/Lib/TLibCommon/TComSlice.h
r724 r738 62 62 // ==================================================================================================================== 63 63 64 #if H_MV_6_HRD_O0164_15 65 class TComVPS; 66 #endif 64 67 /// Reference Picture Set class 65 68 class TComReferencePictureSet … … 403 406 404 407 #if H_MV 408 409 #if H_MV_6_PS_O0118_33 410 class TComVideoSignalInfo 411 { 412 private: 413 Int m_videoVpsFormat; 414 Bool m_videoFullRangeVpsFlag; 415 Int m_colourPrimariesVps; 416 Int m_transferCharacteristicsVps; 417 Int m_matrixCoeffsVps; 418 public: 419 Void setVideoVpsFormat( Int val ) { m_videoVpsFormat = val; } 420 Int getVideoVpsFormat( ) { return m_videoVpsFormat; } 421 422 Void setVideoFullRangeVpsFlag( Bool flag ) { m_videoFullRangeVpsFlag = flag; } 423 Bool getVideoFullRangeVpsFlag( ) { return m_videoFullRangeVpsFlag; } 424 425 Void setColourPrimariesVps( Int val ) { m_colourPrimariesVps = val; } 426 Int getColourPrimariesVps( ) { return m_colourPrimariesVps; } 427 428 Void setTransferCharacteristicsVps( Int val ) { m_transferCharacteristicsVps = val; } 429 Int getTransferCharacteristicsVps( ) { return m_transferCharacteristicsVps; } 430 431 Void setMatrixCoeffsVps( Int val ) { m_matrixCoeffsVps = val; } 432 Int getMatrixCoeffsVps( ) { return m_matrixCoeffsVps; } 433 }; 434 #endif 435 #if H_MV_6_HRD_O0164_15 436 class TComVpsVuiBspHrdParameters 437 { 438 private: 439 Int m_vpsNumBspHrdParametersMinus1; 440 Bool m_bspCprmsPresentFlag[MAX_NUM_BSP_HRD_PARAMETERS]; 441 Int m_numBitstreamPartitions[MAX_VPS_OP_SETS_PLUS1]; 442 Bool m_layerInBspFlag[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_LAYERS]; 443 Int m_numBspSchedCombinations[MAX_VPS_OP_SETS_PLUS1]; 444 Int m_bspCombHrdIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION]; 445 Int m_bspCombSchedIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION]; 446 TComHRD* m_hrdParameters[MAX_NUM_BSP_HRD_PARAMETERS]; 447 public: 448 449 Void setVpsNumBspHrdParametersMinus1( Int val ) { m_vpsNumBspHrdParametersMinus1 = val; } 450 Int getVpsNumBspHrdParametersMinus1( ) { return m_vpsNumBspHrdParametersMinus1; } 451 452 Void setBspCprmsPresentFlag( Int i, Bool flag ) { m_bspCprmsPresentFlag[i] = flag; } 453 Bool getBspCprmsPresentFlag( Int i ) { return m_bspCprmsPresentFlag[i]; } 454 455 Void setNumBitstreamPartitions( Int h, Int val ) { m_numBitstreamPartitions[h] = val; } 456 Int getNumBitstreamPartitions( Int h ) { return m_numBitstreamPartitions[h]; } 457 458 Void setLayerInBspFlag( Int h, Int i, Int j, Bool flag ) { m_layerInBspFlag[h][i][j] = flag; } 459 Bool getLayerInBspFlag( Int h, Int i, Int j ) { return m_layerInBspFlag[h][i][j]; } 460 Void checkLayerInBspFlag ( TComVPS* vps, Int h ); 461 462 Void setNumBspSchedCombinations( Int h, Int val ) { m_numBspSchedCombinations[h] = val; } 463 Int getNumBspSchedCombinations( Int h ) { return m_numBspSchedCombinations[h]; } 464 465 Void setBspCombHrdIdx( Int h, Int i, Int j, Int val ) { m_bspCombHrdIdx[h][i][j] = val; } 466 Int getBspCombHrdIdx( Int h, Int i, Int j ) { return m_bspCombHrdIdx[h][i][j]; } 467 468 Void setBspCombSchedIdx( Int h, Int i, Int j, Int val ) { m_bspCombSchedIdx[h][i][j] = val; } 469 Int getBspCombSchedIdx( Int h, Int i, Int j ) { return m_bspCombSchedIdx[h][i][j]; } 470 471 Void setHrdParametermeters( Int k, TComHRD* val ) { m_hrdParameters[k] = val; }; 472 TComHRD* getHrdParametermeters( Int k ) { return m_hrdParameters[k]; }; 473 }; 474 475 #endif 405 476 class TComVPSVUI 406 477 { 407 478 private: 479 #if H_MV_6_PS_O0223_29 480 Bool m_crossLayerPicTypeAlignedFlag; 481 Bool m_crossLayerIrapAlignedFlag; 482 #endif 408 483 Bool m_bitRatePresentVpsFlag; 409 484 Bool m_picRatePresentVpsFlag; … … 414 489 Int m_constantPicRateIdc [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER]; 415 490 Int m_avgPicRate [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER]; 491 #if H_MV_6_O0226_37 492 Bool m_tilesNotInUseFlag; 493 Bool m_tilesInUseFlag [MAX_NUM_LAYERS]; 494 Bool m_loopFilterNotAcrossTilesFlag[MAX_NUM_LAYERS]; 495 #endif 416 496 Bool m_tileBoundariesAlignedFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 497 #if H_MV_6_O0226_37 498 Bool m_wppNotInUseFlag; 499 Bool m_wppInUseFlag [MAX_NUM_LAYERS]; 500 #endif 417 501 Bool m_ilpRestrictedRefLayersFlag; 418 502 Int m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 419 503 Bool m_ctuBasedOffsetEnabledFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 420 504 Int m_minHorizontalCtuOffsetPlus1 [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 505 #if H_MV_6_PS_O0118_33 506 Bool m_videoSignalInfoIdxPresentFlag; 507 Int m_vpsNumVideoSignalInfoMinus1; 508 TComVideoSignalInfo* m_videoSignalInfo[MAX_NUM_VIDEO_SIGNAL_INFO]; 509 Int m_vpsVideoSignalInfoIdx [MAX_NUM_VIDEO_SIGNAL_INFO]; 510 #endif 511 #if H_MV_6_HRD_O0164_15 512 Bool m_vpsVuiBspHrdPresentFlag; 513 TComVpsVuiBspHrdParameters* m_vpsVuiBspHrdParameters; 514 #endif 421 515 422 516 public: 423 TComVPSVUI();; 517 TComVPSVUI(); 518 ~TComVPSVUI(); 519 #if H_MV_6_PS_O0223_29 520 Void setCrossLayerPicTypeAlignedFlag( Bool flag ) { m_crossLayerPicTypeAlignedFlag = flag; } 521 Bool getCrossLayerPicTypeAlignedFlag( ) { return m_crossLayerPicTypeAlignedFlag; } 522 523 Void setCrossLayerIrapAlignedFlag( Bool flag ) { m_crossLayerIrapAlignedFlag = flag; } 524 Bool getCrossLayerIrapAlignedFlag( ) { return m_crossLayerIrapAlignedFlag; } 525 #endif 424 526 425 527 Void setBitRatePresentVpsFlag( Bool flag ) { m_bitRatePresentVpsFlag = flag; } … … 447 549 Int getAvgPicRate( Int i, Int j ) { return m_avgPicRate[i][j]; } 448 550 551 #if H_MV_6_O0226_37 552 Void setTilesNotInUseFlag( Bool flag ) { m_tilesNotInUseFlag = flag; } 553 Bool getTilesNotInUseFlag( ) { return m_tilesNotInUseFlag; } 554 555 Void setTilesInUseFlag( Int i, Bool flag ) { m_tilesInUseFlag[i] = flag; } 556 Bool getTilesInUseFlag( Int i ) { return m_tilesInUseFlag[i]; } 557 558 Void setLoopFilterNotAcrossTilesFlag( Int i, Int val ) { m_loopFilterNotAcrossTilesFlag[i] = val; } 559 Bool getLoopFilterNotAcrossTilesFlag( Int i ) { return m_loopFilterNotAcrossTilesFlag[i]; } 560 #endif 561 449 562 Void setTileBoundariesAlignedFlag( Int i, Int j, Bool flag ) { m_tileBoundariesAlignedFlag[i][j] = flag; } 450 563 Bool getTileBoundariesAlignedFlag( Int i, Int j ) { return m_tileBoundariesAlignedFlag[i][j]; } 451 564 565 #if H_MV_6_O0226_37 566 Void setWppNotInUseFlag( Bool flag ) { m_wppNotInUseFlag = flag; } 567 Bool getWppNotInUseFlag( ) { return m_wppNotInUseFlag; } 568 569 Void setWppInUseFlag( Int i, Bool flag ) { m_wppInUseFlag[i] = flag; } 570 Bool getWppInUseFlag( Int i ) { return m_wppInUseFlag[i]; } 571 #endif 572 452 573 Void setIlpRestrictedRefLayersFlag( Bool flag ) { m_ilpRestrictedRefLayersFlag = flag; } 453 574 Bool getIlpRestrictedRefLayersFlag( ) { return m_ilpRestrictedRefLayersFlag; } … … 462 583 Int getMinHorizontalCtuOffsetPlus1( Int i, Int j ) { return m_minHorizontalCtuOffsetPlus1[i][j]; } 463 584 585 #if H_MV_6_PS_O0118_33 586 Void setVideoSignalInfoIdxPresentFlag( Bool flag ) { m_videoSignalInfoIdxPresentFlag = flag; } 587 Bool getVideoSignalInfoIdxPresentFlag( ) { return m_videoSignalInfoIdxPresentFlag; } 588 589 Void setVideoSignalInfo( Int i, TComVideoSignalInfo* val ) { m_videoSignalInfo[i] = val; } 590 TComVideoSignalInfo* getVideoSignalInfo( Int i ) { return m_videoSignalInfo[i]; } 591 592 Void setVpsNumVideoSignalInfoMinus1( Int val ) { m_vpsNumVideoSignalInfoMinus1 = val; } 593 Int getVpsNumVideoSignalInfoMinus1( ) { return m_vpsNumVideoSignalInfoMinus1; } 594 595 Void setVpsVideoSignalInfoIdx( Int i, Int val ) { m_vpsVideoSignalInfoIdx[i] = val; } 596 Int getVpsVideoSignalInfoIdx( Int i ) { return m_vpsVideoSignalInfoIdx[i]; } 597 #endif 598 599 #if H_MV_6_HRD_O0164_15 600 Void setVpsVuiBspHrdPresentFlag( Bool flag ) { m_vpsVuiBspHrdPresentFlag = flag; } 601 Bool getVpsVuiBspHrdPresentFlag( ) { return m_vpsVuiBspHrdPresentFlag; } 602 603 Void setVpsVuiBspHrdParameters( TComVpsVuiBspHrdParameters* val) { m_vpsVuiBspHrdParameters = val; } 604 TComVpsVuiBspHrdParameters* getVpsVuiBspHrdParameters( ) { return m_vpsVuiBspHrdParameters; } 605 #endif 464 606 }; 465 607 … … 467 609 { 468 610 private: 611 #if H_MV_6_PS_REP_FORM_18_19_20 612 Bool m_chromaAndBitDepthVpsPresentFlag; 613 #endif 469 614 Int m_chromaFormatVpsIdc; 470 615 Bool m_separateColourPlaneVpsFlag; … … 477 622 TComRepFormat() { }; 478 623 624 #if H_MV_6_PS_REP_FORM_18_19_20 625 Void setChromaAndBitDepthVpsPresentFlag( Bool flag ) { m_chromaAndBitDepthVpsPresentFlag = flag; } 626 Bool getChromaAndBitDepthVpsPresentFlag( ) { return m_chromaAndBitDepthVpsPresentFlag; } 627 Void checkChromaAndBitDepthVpsPresentFlag( Int i ) { assert( i != 0 || m_chromaAndBitDepthVpsPresentFlag ); } // The value of chroma_and_bit_depth_vps_present_flag of the first rep_format( ) syntax structure in the VPS shall be equal to 1. 628 Void inferChromaAndBitDepth( TComRepFormat* prevRepFormat, Bool encoderFlag ); 629 #endif 630 479 631 Void setChromaFormatVpsIdc( Int val ) { m_chromaFormatVpsIdc = val; } 480 632 Int getChromaFormatVpsIdc( ) { return m_chromaFormatVpsIdc; } … … 494 646 Void setBitDepthVpsChromaMinus8( Int val ) { m_bitDepthVpsChromaMinus8 = val; } 495 647 Int getBitDepthVpsChromaMinus8( ) { return m_bitDepthVpsChromaMinus8; } 648 }; 649 #endif 650 651 #if H_MV_6_HRD_O0217_13 652 class TComDpbSize 653 { 654 private: 655 Bool m_subLayerFlagInfoPresentFlag[MAX_VPS_OUTPUTLAYER_SETS]; 656 Bool m_subLayerDpbInfoPresentFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER]; 657 Int m_maxVpsDecPicBufferingMinus1[MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYER_IDS][MAX_TLAYER];; 658 Int m_maxVpsNumReorderPics [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER]; 659 Int m_maxVpsLatencyIncreasePlus1 [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER]; 660 661 public: 662 TComDpbSize( ) 663 { 664 for (Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++ ) 665 { 666 m_subLayerFlagInfoPresentFlag[i] = false; 667 668 for (Int j = 0; j < MAX_TLAYER; j++ ) 669 { 670 m_subLayerDpbInfoPresentFlag [i][j] = ( j == 0) ; 671 m_maxVpsNumReorderPics [i][j] = 0; 672 m_maxVpsLatencyIncreasePlus1 [i][j] = 0; 673 674 for (Int k = 0; k < MAX_NUM_LAYER_IDS; k++ ) 675 { 676 m_maxVpsDecPicBufferingMinus1[i][k][j] = 0; 677 } 678 } 679 } 680 } 681 682 Void setSubLayerFlagInfoPresentFlag( Int i, Bool flag ) { m_subLayerFlagInfoPresentFlag[i] = flag; } 683 Bool getSubLayerFlagInfoPresentFlag( Int i ) { return m_subLayerFlagInfoPresentFlag[i]; } 684 685 Void setSubLayerDpbInfoPresentFlag( Int i, Int j, Bool flag ) { m_subLayerDpbInfoPresentFlag[i][j] = flag; } 686 Bool getSubLayerDpbInfoPresentFlag( Int i, Int j ) { return m_subLayerDpbInfoPresentFlag[i][j]; } 687 688 Void setMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j, Int val ) { m_maxVpsDecPicBufferingMinus1[i][k][j] = val; } 689 Int getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { return m_maxVpsDecPicBufferingMinus1[i][k][j]; } 690 691 Void setMaxVpsNumReorderPics( Int i, Int j, Int val ) { m_maxVpsNumReorderPics[i][j] = val; } 692 Int getMaxVpsNumReorderPics( Int i, Int j ) { return m_maxVpsNumReorderPics[i][j]; } 693 694 Void setMaxVpsLatencyIncreasePlus1( Int i, Int j, Int val ) { m_maxVpsLatencyIncreasePlus1[i][j] = val; } 695 Int getMaxVpsLatencyIncreasePlus1( Int i, Int j ) { return m_maxVpsLatencyIncreasePlus1[i][j]; } 496 696 }; 497 697 #endif … … 547 747 Int m_layerIdInNuh [MAX_NUM_LAYER_IDS]; 548 748 Int m_dimensionId [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 749 750 #if H_MV_6_PS_O0109_22 751 Int m_viewIdLen; 752 #else 549 753 Int m_viewIdLenMinus1; 754 #endif 550 755 Int m_viewIdVal [MAX_NUM_LAYERS]; 551 756 Bool m_directDependencyFlag [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS]; 757 #if H_MV_6_ILDSD_O0120_26 758 Bool m_vpsSubLayersMaxMinus1PresentFlag; 759 Int m_subLayersVpsMaxMinus1 [MAX_NUM_LAYERS]; 760 #endif 552 761 Bool m_maxTidRefPresentFlag; 762 #if H_MV_6_ILDDS_O0225_30 763 Int m_maxTidIlRefPicsPlus1 [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 764 #else 553 765 Int m_maxTidIlRefPicPlus1 [MAX_NUM_LAYERS]; 766 #endif 554 767 Bool m_allRefLayersActiveFlag; 555 768 Int m_vpsNumberLayerSetsMinus1; … … 559 772 Bool m_moreOutputLayerSetsThanDefaultFlag; 560 773 Int m_numAddOutputLayerSetsMinus1; 774 #if H_MV_6_PS_0109_25 775 Int m_defaultOneTargetOutputLayerIdc; 776 #else 561 777 Bool m_defaultOneTargetOutputLayerFlag; 778 #endif 562 779 Int m_outputLayerSetIdxMinus1 [MAX_VPS_OUTPUTLAYER_SETS]; 563 780 Bool m_outputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1]; 564 781 Int m_profileLevelTierIdx [MAX_VPS_OUTPUTLAYER_SETS ]; 782 #if H_MV_6_GEN_0153_28 783 Bool m_altOutputLayerFlag; 784 #endif 565 785 Bool m_repFormatIdxPresentFlag; 566 786 Int m_vpsNumRepFormatsMinus1; … … 568 788 TComRepFormat* m_repFormat [MAX_NUM_LAYERS]; 569 789 Bool m_maxOneActiveRefLayerFlag; 790 #if H_MV_6_MISC_O0062_31 791 Bool m_pocLsbNotPresentFlag [MAX_NUM_LAYERS]; 792 #endif 793 794 #if H_MV_6_HRD_O0217_13 795 TComDpbSize* m_dpbSize; 796 #endif 797 #if !H_MV_6_PS_O0223_29 570 798 Bool m_crossLayerIrapAlignedFlag; 799 #endif 571 800 Int m_directDepTypeLenMinus2; 801 #if H_MV_6_PS_O0096_21 802 Bool m_defaultDirectDependencyFlag; 803 Int m_defaultDirectDependencyType; 804 #endif 572 805 Bool m_vpsVuiPresentFlag; 573 806 TComVPSVUI* m_vpsVUI; … … 588 821 Int m_motionPredRefLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 589 822 Int m_viewIndex [MAX_NUM_LAYERS ]; 823 824 #if H_MV_6_HRD_O0217_13 825 std::vector< std::vector< Int> > m_targetDecLayerIdLists; //[TargetOptLayerSetIdx][i] 826 std::vector< std::vector< Int> > m_targetOptLayerIdLists; 827 std::vector< std::vector< Int> > m_layerSetLayerIdList; 828 #endif 829 830 590 831 Int xGetDimBitOffset( Int j ); 591 832 … … 649 890 UInt getMaxTLayers () { return m_uiMaxTLayers; } 650 891 Void setMaxTLayers (UInt t) { m_uiMaxTLayers = t; } 651 892 #if H_MV_6_HRD_O0164_15 893 UInt getMaxSubLayersMinus1() { return m_uiMaxTLayers - 1; } // For consistency with draft spec 894 #endif 652 895 #if H_MV 653 896 UInt getMaxLayersMinus1() { return m_uiMaxLayersMinus1; }; … … 724 967 Int getDimensionId( Int layerIdInVps, Int scalIdx ) { return m_dimensionId[layerIdInVps][scalIdx]; } 725 968 969 #if H_MV_6_PS_O0109_22 970 Void setViewIdLen( Int val ) { m_viewIdLen = val; } 971 Int getViewIdLen( ) { return m_viewIdLen; } 972 #else 726 973 Void setViewIdLenMinus1( Int val ) { m_viewIdLenMinus1 = val; } 727 974 Int getViewIdLenMinus1( ) { return m_viewIdLenMinus1; } 975 #endif 728 976 729 977 Void setViewIdVal( Int viewOrderIndex, Int val ) { m_viewIdVal[viewOrderIndex] = val; } … … 731 979 Void setDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Bool val ) { m_directDependencyFlag[depLayeridInVps][refLayeridInVps] = val; } 732 980 Bool getDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps ) { return m_directDependencyFlag[depLayeridInVps][refLayeridInVps]; } 733 981 #if H_MV_6_ILDSD_O0120_26 982 Void setVpsSubLayersMaxMinus1PresentFlag( Bool flag ) { m_vpsSubLayersMaxMinus1PresentFlag = flag; } 983 Bool getVpsSubLayersMaxMinus1PresentFlag( ) { return m_vpsSubLayersMaxMinus1PresentFlag; } 984 Void setSubLayersVpsMaxMinus1( Int i, Int val ) { m_subLayersVpsMaxMinus1[i] = val; } 985 Int getSubLayersVpsMaxMinus1( Int i ) { return m_subLayersVpsMaxMinus1[i]; } 986 Void checkSubLayersVpsMaxMinus1( Int i ) { assert( m_subLayersVpsMaxMinus1[i] >= 0 && m_subLayersVpsMaxMinus1[i] <= m_uiMaxTLayers - 1 ); } 987 #endif 734 988 Void setMaxTidRefPresentFlag( Bool flag ) { m_maxTidRefPresentFlag = flag; } 735 989 Bool getMaxTidRefPresentFlag( ) { return m_maxTidRefPresentFlag; } 990 #if H_MV_6_ILDDS_O0225_30 991 Void setMaxTidIlRefPicsPlus1( Int i, Int j, Int val ) { m_maxTidIlRefPicsPlus1[i][j] = val; } 992 Int getMaxTidIlRefPicsPlus1( Int i, Int j ) { return m_maxTidIlRefPicsPlus1[i][j]; } 993 #else 736 994 Void setMaxTidIlRefPicPlus1( Int layerIdInVps, Int val ) { m_maxTidIlRefPicPlus1[ layerIdInVps ] = val; } 737 995 Int getMaxTidIlRefPicPlus1( Int layerIdInVps ) { return m_maxTidIlRefPicPlus1[ layerIdInVps ]; } 996 #endif 738 997 Void setAllRefLayersActiveFlag( Bool flag ) { m_allRefLayersActiveFlag = flag; } 739 998 Bool getAllRefLayersActiveFlag( ) { return m_allRefLayersActiveFlag; } … … 749 1008 Void setProfileRefMinus1( Int profileTierLevelIdx, Int val ) { m_profileRefMinus1[ profileTierLevelIdx ] = val; } 750 1009 Int getProfileRefMinus1( Int profileTierLevelIdx ) { return m_profileRefMinus1[ profileTierLevelIdx ]; } 751 1010 #if H_MV_6_PS_O0109_23 1011 Void checkProfileRefMinus1( Int i ) { assert( getProfileRefMinus1( i ) + 1 <= i ); }; // The value of profile_ref_minus1[ i ] + 1 shall be less than or equal to i. 1012 #endif 752 1013 Void setMoreOutputLayerSetsThanDefaultFlag( Bool flag ) { m_moreOutputLayerSetsThanDefaultFlag = flag; } 753 1014 Bool getMoreOutputLayerSetsThanDefaultFlag() { return m_moreOutputLayerSetsThanDefaultFlag; } … … 756 1017 Int getNumAddOutputLayerSetsMinus1( ) { return m_numAddOutputLayerSetsMinus1; } 757 1018 1019 #if H_MV_6_PS_0109_25 1020 Void setDefaultOneTargetOutputLayerIdc( Int val ) { m_defaultOneTargetOutputLayerIdc = val; } 1021 Int getDefaultOneTargetOutputLayerIdc( ) { return m_defaultOneTargetOutputLayerIdc; } 1022 Void checkDefaultOneTargetOutputLayerIdc( ) { assert( m_defaultOneTargetOutputLayerIdc >= 0 && m_defaultOneTargetOutputLayerIdc <= 1 ); } 1023 #else 758 1024 Void setDefaultOneTargetOutputLayerFlag( Bool flag ) { m_defaultOneTargetOutputLayerFlag = flag; } 759 1025 Bool getDefaultOneTargetOutputLayerFlag( ) { return m_defaultOneTargetOutputLayerFlag; } 1026 #endif 760 1027 761 1028 Void setOutputLayerSetIdxMinus1( Int outLayerSetIdx, Int val ) { m_outputLayerSetIdxMinus1[ outLayerSetIdx ] = val; } … … 764 1031 Void setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag ) { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; } 765 1032 Bool getOutputLayerFlag( Int outLayerSetIdx, Int i ) { return m_outputLayerFlag[ outLayerSetIdx ][ i ]; } 1033 #if H_MV_6_HRD_O0217_13 1034 Bool inferOutputLayerFlag( Int layerSetIdx, Int i ) { return ( getDefaultOneTargetOutputLayerIdc( ) == 0 || ( ( getDefaultOneTargetOutputLayerIdc( ) == 1 ) && ( i == m_layerSetLayerIdList[layerSetIdx].size() - 1 ) )); } 1035 #endif 766 1036 767 1037 Void setProfileLevelTierIdx( Int outLayerSetIdx, Int val ) { m_profileLevelTierIdx[ outLayerSetIdx = val ]; } 768 1038 Int getProfileLevelTierIdx( Int outLayerSetIdx ) { return m_profileLevelTierIdx[ outLayerSetIdx ]; } 1039 #if H_MV_6_GEN_0153_28 1040 Void setAltOutputLayerFlag( Bool flag ) { m_altOutputLayerFlag = flag; } 1041 Bool getAltOutputLayerFlag( ) { return m_altOutputLayerFlag; } 1042 #endif 769 1043 770 1044 Void setRepFormatIdxPresentFlag( Bool flag ) { m_repFormatIdxPresentFlag = flag; } … … 781 1055 Void setMaxOneActiveRefLayerFlag( Bool flag) { m_maxOneActiveRefLayerFlag = flag; } 782 1056 Bool getMaxOneActiveRefLayerFlag( ) { return m_maxOneActiveRefLayerFlag; } 1057 1058 #if H_MV_6_HRD_O0217_13 1059 Void setDpbSize( TComDpbSize* val ) { assert( m_dpbSize != 0 ); m_dpbSize = val; } 1060 TComDpbSize* getDpbSize( ) { return m_dpbSize;} 1061 #endif 1062 1063 #if H_MV_6_MISC_O0062_31 1064 Void setPocLsbNotPresentFlag( Int i, Bool flag ) { m_pocLsbNotPresentFlag[i] = flag; } 1065 Bool getPocLsbNotPresentFlag( Int i ) { return m_pocLsbNotPresentFlag[i]; } 1066 #endif 1067 #if !H_MV_6_PS_O0223_29 783 1068 Void setCrossLayerIrapAlignedFlag( Bool flag ) { m_crossLayerIrapAlignedFlag = flag; } 784 1069 Bool getCrossLayerIrapAlignedFlag( ) { return m_crossLayerIrapAlignedFlag; } 1070 #endif 785 1071 Void setDirectDepTypeLenMinus2( Int val) { m_directDepTypeLenMinus2 = val; } 786 1072 Int getDirectDepTypeLenMinus2( ) { return m_directDepTypeLenMinus2; } 787 1073 1074 #if H_MV_6_PS_O0096_21 1075 Void setDefaultDirectDependencyFlag( Bool flag ) { m_defaultDirectDependencyFlag = flag; } 1076 Bool getDefaultDirectDependencyFlag( ) { return m_defaultDirectDependencyFlag; } 1077 1078 Void setDefaultDirectDependencyType( Int val ) { m_defaultDirectDependencyType = val; } 1079 Int getDefaultDirectDependencyType( ) { return m_defaultDirectDependencyType; } 1080 #endif 788 1081 Void setDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps, Int val) { m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ] = val; } 789 1082 Int getDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps) { return m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ]; } … … 797 1090 798 1091 Int getScalabilityId ( Int layerIdInVps, ScalabilityType scalType ); 1092 #if H_MV_6_FIX_GET_VIEW_ID 1093 Int getViewId ( Int layerIdInNuh ) { return m_viewIdVal[ getViewIndex( layerIdInNuh )]; } 1094 #else 799 1095 Int getViewId ( Int layerIdInNuh ) { return m_viewIdVal[ getViewIndex( getLayerIdInVps( layerIdInNuh) )]; } 1096 #endif 800 1097 Void setRefLayers(); 801 1098 … … 810 1107 Int getProfileLevelTierIdxLen() { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); }; 811 1108 812 Int getNumLayersInIdList ( Int lsIdx );; 1109 Int getNumLayersInIdList ( Int lsIdx ); 1110 1111 #if H_MV_6_HRD_O0217_13 1112 Int getNumOutputLayerSets() ; 1113 Int getNumSubDpbs( Int i ) { return getNumLayersInIdList( i ); }; 1114 Bool isOutputLayer( Int outLayerSetIdx, Int layerIdInNuh ); 1115 #if H_MV_6_HRD_O0217_13 1116 Void deriveLayerSetLayerIdList(); 1117 Void deriveTargetLayerIdLists(); 1118 std::vector<Int> getTargetDecLayerIdList( Int targetOptLayerSetIdx ) { return m_targetDecLayerIdLists[targetOptLayerSetIdx]; }; 1119 std::vector<Int> getTargetOptLayerIdList( Int targetOptLayerSetIdx ) { return m_targetDecLayerIdLists[targetOptLayerSetIdx]; }; 1120 #endif 1121 #endif 1122 813 1123 814 1124 // inference … … 1096 1406 TimingInfo* getTimingInfo() { return &m_timingInfo; } 1097 1407 1408 #if H_MV_6_PS_O0118_33 1409 Void inferVideoSignalInfo( TComVPS* vps, Int layerIdCurr ) 1410 { 1411 if ( layerIdCurr == 0 || !vps->getVpsVuiPresentFlag() ) 1412 { 1413 return; 1414 } 1415 1416 TComVPSVUI* vpsVUI = vps->getVPSVUI(); 1417 assert( vpsVUI != NULL ); 1418 1419 TComVideoSignalInfo* videoSignalInfo = vpsVUI->getVideoSignalInfo( vpsVUI->getVpsVideoSignalInfoIdx( vps->getLayerIdInVps( layerIdCurr ) ) ); 1420 assert( videoSignalInfo != NULL ); 1421 1422 setVideoFormat ( videoSignalInfo->getVideoVpsFormat () ); 1423 setVideoFullRangeFlag ( videoSignalInfo->getVideoFullRangeVpsFlag () ); 1424 setColourPrimaries ( videoSignalInfo->getColourPrimariesVps () ); 1425 setTransferCharacteristics( videoSignalInfo->getTransferCharacteristicsVps() ); 1426 setMatrixCoefficients ( videoSignalInfo->getMatrixCoeffsVps () ); 1427 } 1428 #endif 1098 1429 }; 1099 1430 … … 1181 1512 TComVPS* m_pcVPS; 1182 1513 // SPS 1514 #if H_MV_6_PSEM_O0142_3 1515 Bool m_spsExtensionFlag; 1516 Bool m_spsExtensionTypeFlag[PS_EX_T_MAX_NUM]; 1517 #endif 1183 1518 Bool m_spsInferScalingListFlag; 1184 1519 Int m_spsScalingListRefLayerId; 1185 1520 Bool m_updateRepFormatFlag; 1521 #if H_MV_6_PS_REP_FORM_18_19_20 1522 Int m_spsRepFormatIdx; 1523 #endif 1186 1524 // SPS Extension 1187 1525 Bool m_interViewMvVertConstraintFlag; 1526 #if H_MV_6_SHVC_O0098_36 1527 Int m_numScaledRefLayerOffsets; 1528 Int m_scaledRefLayerId [MAX_NUM_SCALED_REF_LAYERS]; 1529 Int m_scaledRefLayerLeftOffset [MAX_NUM_LAYERS]; 1530 Int m_scaledRefLayerTopOffset [MAX_NUM_LAYERS]; 1531 Int m_scaledRefLayerRightOffset [MAX_NUM_LAYERS]; 1532 Int m_scaledRefLayerBottomOffset[MAX_NUM_LAYERS]; 1533 #endif 1188 1534 #endif 1189 1535 #if H_3D … … 1322 1668 TComPTL* getPTL() { return &m_pcPTL; } 1323 1669 #if H_MV 1670 #if H_MV_6_PSEM_O0142_3 1671 Void setSpsExtensionFlag( Bool flag ) { m_spsExtensionFlag = flag; } 1672 Bool getSpsExtensionFlag( ) { return m_spsExtensionFlag; } 1673 1674 Void setSpsExtensionTypeFlag( Int i, Bool flag ) { m_spsExtensionTypeFlag[i] = flag; } 1675 Bool getSpsExtensionTypeFlag( Int i ) { return m_spsExtensionTypeFlag[i]; } 1676 #endif 1324 1677 Void setVPS ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; } 1325 1678 TComVPS* getVPS () { return m_pcVPS; } … … 1333 1686 Void setUpdateRepFormatFlag( Bool flag ) { m_updateRepFormatFlag = flag; } 1334 1687 Bool getUpdateRepFormatFlag( ) { return m_updateRepFormatFlag; } 1688 #if H_MV_6_PS_REP_FORM_18_19_20 1689 Void setSpsRepFormatIdx( Int val ) { m_spsRepFormatIdx = val; } 1690 Int getSpsRepFormatIdx( ) { return m_spsRepFormatIdx; } 1691 #endif 1335 1692 // SPS Extension 1336 1693 Void setInterViewMvVertConstraintFlag(Bool val) { m_interViewMvVertConstraintFlag = val; } 1337 1694 Bool getInterViewMvVertConstraintFlag() { return m_interViewMvVertConstraintFlag;} 1695 1696 #if H_MV_6_SHVC_O0098_36 1697 Void setNumScaledRefLayerOffsets( Int val ) { m_numScaledRefLayerOffsets = val; } 1698 Int getNumScaledRefLayerOffsets( ) { return m_numScaledRefLayerOffsets; } 1699 1700 Void setScaledRefLayerId( Int i, Int val ) { m_scaledRefLayerId[i] = val; } 1701 Int getScaledRefLayerId( Int i ) { return m_scaledRefLayerId[i]; } 1702 1703 Void setScaledRefLayerLeftOffset( Int j, Int val ) { m_scaledRefLayerLeftOffset[j] = val; } 1704 Int getScaledRefLayerLeftOffset( Int j ) { return m_scaledRefLayerLeftOffset[j]; } 1705 1706 Void setScaledRefLayerTopOffset( Int j, Int val ) { m_scaledRefLayerTopOffset[j] = val; } 1707 Int getScaledRefLayerTopOffset( Int j ) { return m_scaledRefLayerTopOffset[j]; } 1708 1709 Void setScaledRefLayerRightOffset( Int j, Int val ) { m_scaledRefLayerRightOffset[j] = val; } 1710 Int getScaledRefLayerRightOffset( Int j ) { return m_scaledRefLayerRightOffset[j]; } 1711 1712 Void setScaledRefLayerBottomOffset( Int j, Int val ) { m_scaledRefLayerBottomOffset[j] = val; } 1713 Int getScaledRefLayerBottomOffset( Int j ) { return m_scaledRefLayerBottomOffset[j]; } 1714 #endif 1338 1715 // Inference 1339 1716 Void inferRepFormat( TComVPS* vps, Int layerIdCurr ); … … 1736 2113 // Additional slice header syntax elements 1737 2114 Bool m_pocResetFlag; 2115 #if H_MV_6_RALS_O0149_11 2116 Bool m_crossLayerBlaFlag; 2117 #endif 1738 2118 Bool m_discardableFlag; 1739 2119 Bool m_interLayerPredEnabledFlag; … … 2073 2453 // Additional slice header syntax elements 2074 2454 2455 #if H_MV_6_RALS_O0149_11 2456 Void setCrossLayerBlaFlag( Bool flag ) { m_crossLayerBlaFlag = flag; } 2457 Bool getCrossLayerBlaFlag( ) { return m_crossLayerBlaFlag; } 2458 Void checkCrossLayerBlaFlag ( ) 2459 { 2460 // cross_layer_bla_flag shall be equal to 0 for pictures with nal_unit_type not equal to IDR_W_RADL or IDR_N_LP or with nuh_layer_id not equal to 0. 2461 if ( getLayerId() != 0 || getNalUnitType() != NAL_UNIT_CODED_SLICE_IDR_W_RADL || getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP ) 2462 { 2463 assert( m_crossLayerBlaFlag == 0 ); 2464 } 2465 } 2466 #endif 2467 2075 2468 Void setPocResetFlag( Bool flag ) { m_pocResetFlag = flag; } 2076 2469 Bool getPocResetFlag( ) { return m_pocResetFlag; } … … 2091 2484 Int getNumInterLayerRefPicsMinus1Len( ) { return gCeilLog2( getVPS()->getNumDirectRefLayers( getLayerId() )); } 2092 2485 Int getInterLayerPredLayerIdcLen ( ) { return gCeilLog2( getVPS()->getNumDirectRefLayers( getLayerId() )); } 2486 2487 #if H_MV_6_ILDDS_ILREFPICS_27_34 2488 Int getRefLayerPicFlag( Int i ); 2489 Int getRefLayerPicIdc ( Int j ); 2490 Int getNumRefLayerPics( ); 2491 #endif 2093 2492 2094 2493 Int getNumActiveRefLayerPics( ); -
trunk/source/Lib/TLibCommon/TypeDef.h
r735 r738 243 243 #endif 244 244 245 245 ///////////////////////////////////////////////////////////////////////////////////////// 246 /////////////////////////////////// HTM-9.2 Integrations ////////////////////////////// 247 ///////////////////////////////////////////////////////////////////////////////////////// 248 249 // !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!! 250 // !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!! 251 // !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!! 252 // !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!! 253 // !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!! 254 255 ///////////////////////////////////////////////////////////////////////////////////////// 256 /////////////////////////////////// HTM-9.1 Integrations ////////////////////////////// 257 ///////////////////////////////////////////////////////////////////////////////////////// 258 259 #define H_MV_FIX_TRACE_FILE 1 // Fix linux compilation error related const char conversion 260 261 #define H_MV_LAYER_WISE_STARTUP 1 // Basic version of layer wise startup. 262 #define H_MV_FIX_SKIP_PICTURES 1 // Fix related to skipping pictures. 263 #define H_MV_6_HRD_O0164_15 1 // (HRD/O0164/Multilayer HRD) #15 Decision: Adopt, modified as follows: It was suggested to constrain the stalling based on the relative cpb removal times, which must be in decoding order. The "du_based_bpb_sync_flag" is not needed, in view of this. SEI in the highest layer of the layer set or (inclusive "or") VPS VUI is used to carry the parameters (at encoder discretion). SEI in higher layer and SEI in VUI do not need to repeat information available in some lower layer. Shall be after APS SEI and buffering period SEI and before all other SEI of all layers except other HRD related SEI. 264 #define H_MV_6_HRD_O0217_13 1 // (HRD/O0217/Sub-DPB based DPB operations) #13 Decision: Adopt Specify a separate DPB capacity for each layer no sharing of capacity across layers each layer has its own parameters (max pictures, max latency, max reordering). This proposal would specify distinct parameters for each "output layer set" and to change the definition of an operation point to be specific to an output layer set instead of a 'layer set". Decision: Adopted this aspect as well. 265 #define H_MV_6_SHVC_O0098_36 1 // (SHVC/O0098/Scaled ref layer offset) #36 Modify signalling of scaled reference layer offsets to allow signalling of any lower layer, rather than just a direct reference layer, in order to enable alignment of auxiliary pictures. In further JCT-VC and JCT-3V discussion, it was also agreed to use the same offset signalling for MV-HEVC as well as SHVC 266 #define H_MV_6_GEN_0153_28 1 //(Gen/O0153/output highest layer) #28 Add a flag in the VPS to indicate if startup process should output the highest available layer if the target output layer is not available. 267 #define H_MV_6_PS_0109_25 1 //XXX(PS/O0109/default_one_target_output_layer_idc) #25 To change default_one_target_output_layer_flag to a two-bit default_one_target_output_layer_idc, and reserve the values 2 and 3 268 #define H_MV_6_O0226_37 1 //(VUI/O0226/Mod tile WPP) #37 Modifications to the VUI indicators of tile and WPP alignment related syntax elements, from the r1. 269 #define H_MV_6_RALS_O0149_11 1 //XXX (RALS/O0149/Prop2): #11 Proposal: A new slice_reserved_flag is taken into use to indicate if a base-layer IDR picture initiates the layer-wise start-up process. Decision: Adopt (the bit should not be required to be present; if present should be the bit after the discardable_flag, and discardable_flag should be the first one of the three, and the poc reset flag is not required to be present). 270 #define H_MV_6_PSEM_O0142_3 1 // (PSEM/O0142/Conditional extension syntax) #3 Adopt JCTVC-O0142 (as a structure to be used to switch whatever extensions we define in SPS, not necessarily committing to having these extensions be separate for each extension, but the current plan unless decided otherwise is to use one flag for range extensions syntax presence and one flag for SHVC+MV-HEVC extension syntax presence) 271 #define H_MV_6_FIX_GET_VIEW_ID 1 // Fix get view id 272 #define H_MV_6_LAYER_ID_32 1 // (Gen/O0137,O0200,O0223,Layer id) #32 Add (editorial equivalent of) "The value of nuh_layer_id shall be in the range of 0 to 62. The value of 63 for nuh_layer_id is reserved for future use by ITU-T | ISO/IEC. Decoders shall ignore all data that follow the value 63 for nuh_layer_id in a NAL unit." and specify that vps_max_layers_minus1 shall not be equal to 63, but decoders shall allow that value to appear in the bitstream. Specify that the value 63 is interpreted the same as the value 62 (e.g., MaxLayersMinus1 = Min( 62, vps_max_layers_minus1) and subsequently refer to MaxLayersMinus1 instead of vps_max_layers_minus1) 273 #define H_MV_6_PS_O0118_33 1 // (PS/O0118/visual signal info in vui per layer) #33 Add visual signal information (video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs) per layer to the VPS VUI, from v2 version of JCTVC-O0118. 274 #define H_MV_6_POC_31_35_38 1 //XXX Various related to POC 275 // (Misc/O0062/POC LSB present) (SH changes) 276 // (POC/O0117/Modify PicOrderCntVal of prevTid0Pic) #35 Modification of the PicOrderCntVal of prevTid0Pic and modification to the decoding process for reference picture set, to address problems found for cross-layer POC alignment. 277 // (POC/O0211/Fix ambiguity) #38 Modify POC derivation to correct an ambiguity in the spec. 278 #define H_MV_6_MISC_O0062_31 1 // (Misc/O0062/POC LSB present) (without SH changes ) #31 The proposal's "option 3" is to add a flag in the VPS for each EL to control whether these LSBs are present or not (for IDR pictures), and when not present, the LSBs are inferred to be equal to 0. Decision: Adopted (as described herein). 279 #define H_MV_6_ILDDS_ILREFPICS_27_34 1 // Various inter layer reference picture derivation 280 // (ILDSD/O0225/max_tid_il_ref_pics RPL const.) #27 Change derivation of NumActiveRefLayerPics to consider max_tid_il_ref_pics. 281 // (ILDSD/O0120/sub_layers_vps_max_minus1 RPL const) #34 Modify inter-layer reference picture list default construction to incorporate max temporal sub-layers per layer syntax elements in VPS extension, from r2 version of JCTVC-O0120 282 #define H_MV_6_ILDDS_O0225_30 1 // (ILDSD/O0225/signal max_tid_il_ref_pics per layer ) #30 2nd proposal of JCTVC-O0225 regarding signalling of max_tid_il_ref_pics per layer, based upon relation to SCE2 on single loop decoding. Decision: Adopted. 283 #define H_MV_6_ILDSD_O0120_26 1 // (ILDSD/O0120/sub_layers_vps_max_minus1) #26 Add syntax elements to signal max temporal sub-layers for each layer in the VPS, with a gating flag, from JCTVC- option 2. 284 #define H_MV_6_PS_O0223_29 1 // (PS/O0223/Cross layer alignment type) #29 Add a flag in VPS VUI to indicate cross layer pic type alignment. Move cross_layer_irap_aligned_flag to VPS VUI and make presence condition on added flag 285 #define H_MV_6_PS_0092_17 1 // (PS/O0092/Sharing SPS PPS) #17 Restrict sharing of SPS and PPS across layers to avoid creating problems during sub-bitstream extraction, based on modification of proposals in JCTVC-O0059 and JCTVC-O0092, reflected in the v2 version of O0092. 286 #define H_MV_6_PS_REP_FORM_18_19_20 1 // Various Rep format 287 // (PS/O0096/rep format syntax element length ) #20 Modification of length to 8 bit as decided later in trac. 288 // (PS/O0179/Rep. Format) #18 Add flag in rep_format( ) syntax structure to control sending of chroma and bit depth related parameters, as proposed in the v2 version of JCTVC-O0179. 289 // (PS/O0096/rep format) #20 Modify the SPS syntax for layers with nuh_layer_id > 0 to signal a reference to a rep_format index in the VPS, rather than signalling explicit representation format data in the SPS, from the v2 version of JCTVC-O0096. 290 // (PS/FIX/N0092/Rep. Format) #19 Inferences. 291 #define H_MV_6_PS_O0096_21 1 // (PS/O0096/direct_dependency_type gating flag) #21 Add a gating flag in VPS extension to condition the presence of direct dependency type, with a default type signalled, from JCTVC-O0096 292 #define H_MV_6_PS_O0109_22 1 // (PS/O0109/view_id_len) #22 Modify the VPS extension syntax and semantics to replace view_id_len_minus1 with view_id_len, always signal that syntax element, add a constraint that (1<<view_id_len) >= NumViews, and modify view_id_val semantics to infer value of 0 when not present, from discussion of JCTVC-O0109 293 #define H_MV_6_PS_O0109_23 1 // (PS/O0109/profile_ref_minus1 constraint) #23 Modify the semantics of profile_ref_minus1[ i ] to replace shall be less than i with shall be less than or equal to i, from discussion of JCTVC-O0109 294 #define H_MV_6_PS_O0109_24 1 // (PS/O0109/vps_vui_present_flag move) #24 Move the vps_vui_present_flag to precede vps_vui_offset, and make vps_vui_offset conditional on that flag, from JCTVC-O0109 246 295 ///////////////////////////////////////////////////////////////////////////////////////// 247 296 /////////////////////////////////// HTM-9.0 Integrations ////////////////////////////// … … 306 355 #define MAX_VPS_OP_SETS_PLUS1 1024 307 356 #if H_MV 357 #if H_MV_6_LAYER_ID_32 358 #define MAX_VPS_NUH_LAYER_ID_PLUS1 63 359 #else 308 360 #define MAX_VPS_NUH_LAYER_ID_PLUS1 64 361 #endif 309 362 #define MAX_NUM_SCALABILITY_TYPES 16 310 363 #define ENC_CFG_CONSOUT_SPACE 29 … … 329 382 330 383 #define MAX_CPB_CNT 32 ///< Upper bound of (cpb_cnt_minus1 + 1) 384 #if H_MV 385 #if H_MV_6_LAYER_ID_32 386 #define MAX_NUM_LAYER_IDS 63 387 #define MAX_NUM_LAYERS 63 388 #else 331 389 #define MAX_NUM_LAYER_IDS 64 332 #if H_MV333 390 #define MAX_NUM_LAYERS 64 391 #endif 334 392 #define MAX_VPS_PROFILE_TIER_LEVEL 64 335 393 #define MAX_VPS_ADD_OUTPUT_LAYER_SETS 1024 336 394 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 ) 395 #if H_MV_6_PS_O0118_33 396 #define MAX_NUM_VIDEO_SIGNAL_INFO 16 397 #endif 398 #if H_MV_6_SHVC_O0098_36 399 #define MAX_NUM_SCALED_REF_LAYERS MAX_NUM_LAYERS-1 400 #endif 401 #if H_MV_6_HRD_O0164_15 402 #define MAX_NUM_BSP_HRD_PARAMETERS 100 ///< Maximum value is actually not specified 403 #define MAX_NUM_BITSTREAM_PARTITIONS 100 ///< Maximum value is actually not specified 404 #define MAX_NUM_BSP_SCHED_COMBINATION 100 ///< Maximum value is actually not specified 405 #endif 337 406 #endif 338 407 … … 811 880 812 881 #if H_MV 882 883 #if H_MV_6_PSEM_O0142_3 884 enum PsExtensionTypes 885 { 886 PS_EX_T_MV = 1, 887 #if H_3D 888 PS_EX_T_3D = 3, 889 #endif 890 PS_EX_T_ESC = 7, 891 PS_EX_T_MAX_NUM = 8 892 }; 893 #endif 894 813 895 /// scalability types 814 896 enum ScalabilityType
Note: See TracChangeset for help on using the changeset viewer.