Changeset 1066 in 3DVCSoftware for trunk/source/Lib/TLibCommon
- Timestamp:
- 13 Oct 2014, 12:19:36 (10 years ago)
- Location:
- trunk/source/Lib/TLibCommon
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/TComDataCU.cpp
r1039 r1066 4177 4177 TComPic * pcTexPic = m_pcSlice->getTexturePic(); 4178 4178 #if H_3D_FCO 4179 #if LGE_FCO_I0116 4180 if (pcTexPic && pcTexPic->getReconMark()) 4181 #else 4179 4182 if (pcTexturePic->getReconMark()) 4183 #endif 4180 4184 { 4181 4185 #endif … … 6160 6164 TComMv cMv; 6161 6165 #if MTK_I0093 6162 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ 1 << ( getSlice()->getSPS()->getBitDepthY() - 1 ) ]; 6166 #if H_3D_FIX_64BIT_SHIFT 6167 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ (Int64) (1 << ( getSlice()->getSPS()->getBitDepthY() - 1 )) ]; 6168 #else 6169 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ 1 << ( getSlice()->getSPS()->getBitDepthY() - 1 ) ]; 6170 #endif 6163 6171 #else 6164 6172 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ 128 ]; -
trunk/source/Lib/TLibCommon/TComRom.cpp
r1039 r1066 71 71 c <<= 1; 72 72 } 73 74 #if H_MV 75 #if H_MV_HLS_PTL_LIMITS 76 g_generalTierAndLevelLimits[ Level::LEVEL1 ] = TComGeneralTierAndLevelLimits( 36864, 350, INT_MIN, 16, 1, 1 ); 77 g_generalTierAndLevelLimits[ Level::LEVEL2 ] = TComGeneralTierAndLevelLimits( 122880, 1500, INT_MIN, 16, 1, 1 ); 78 g_generalTierAndLevelLimits[ Level::LEVEL2_1 ] = TComGeneralTierAndLevelLimits( 245760, 3000, INT_MIN, 20, 1, 1 ); 79 g_generalTierAndLevelLimits[ Level::LEVEL3 ] = TComGeneralTierAndLevelLimits( 552960, 6000, INT_MIN, 30, 2, 2 ); 80 g_generalTierAndLevelLimits[ Level::LEVEL3_1 ] = TComGeneralTierAndLevelLimits( 983040, 10000, INT_MIN, 40, 3, 3 ); 81 g_generalTierAndLevelLimits[ Level::LEVEL4 ] = TComGeneralTierAndLevelLimits( 2228224, 12000, 30000, 75, 5, 5 ); 82 g_generalTierAndLevelLimits[ Level::LEVEL4_1 ] = TComGeneralTierAndLevelLimits( 2228224, 20000, 50000, 75, 5, 5 ); 83 g_generalTierAndLevelLimits[ Level::LEVEL5 ] = TComGeneralTierAndLevelLimits( 8912896, 25000, 100000, 200, 11, 10 ); 84 g_generalTierAndLevelLimits[ Level::LEVEL5_1 ] = TComGeneralTierAndLevelLimits( 8912896, 40000, 160000, 200, 11, 10 ); 85 g_generalTierAndLevelLimits[ Level::LEVEL5_2 ] = TComGeneralTierAndLevelLimits( 8912896, 60000, 240000, 200, 11, 10 ); 86 g_generalTierAndLevelLimits[ Level::LEVEL6 ] = TComGeneralTierAndLevelLimits( 35651584, 60000, 240000, 600, 22, 20 ); 87 g_generalTierAndLevelLimits[ Level::LEVEL6_1 ] = TComGeneralTierAndLevelLimits( 35651584, 120000, 480000, 600, 22, 20 ); 88 g_generalTierAndLevelLimits[ Level::LEVEL6_2 ] = TComGeneralTierAndLevelLimits( 35651584, 240000, 800000, 600, 22, 20 ); 89 #endif 90 #endif 91 73 92 } 74 93 … … 369 388 370 389 Char g_aucConvertToBit [ MAX_CU_SIZE+1 ]; 371 390 #if !MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 372 391 #if H_3D_IC 373 392 UInt g_aICEnableCANDIDATE[10] = { 0, }; 374 393 UInt g_aICEnableNUM[ 10 ] = { 0, }; 375 394 Int g_lastlayer=0; 395 #endif 376 396 #endif 377 397 #if ENC_DEC_TRACE … … 383 403 UInt64 g_nSymbolCounter = 0; 384 404 #if H_MV_ENC_DEC_TRAC 385 Bool g_traceCU = true;386 Bool g_tracePU = true;387 Bool g_traceTU = true;405 Bool g_traceCU = false; 406 Bool g_tracePU = false; 407 Bool g_traceTU = false; 388 408 Bool g_disableHLSTrace = false; 389 409 UInt64 g_stopAtCounter = 0; -
trunk/source/Lib/TLibCommon/TComRom.h
r1039 r1066 187 187 // ========================================== 188 188 189 #if H_MV_HLS_PTL_LIMITS 190 class TComGeneralTierAndLevelLimits 191 { 192 public: 193 TComGeneralTierAndLevelLimits::TComGeneralTierAndLevelLimits 194 ( Int maxLumaPs, 195 Int maxCPBMainTier, 196 Int maxCPBHighTier, 197 Int maxSliceSegmentsPerPicture, 198 Int maxTileRows, 199 Int maxTileCols ) 200 : m_maxLumaPs ( maxLumaPs ), 201 m_maxCPBMainTier ( maxCPBMainTier ), 202 m_maxCPBHighTier ( maxCPBHighTier ), 203 m_maxSliceSegmentsPerPicture( maxSliceSegmentsPerPicture ), 204 m_maxTileRows ( maxTileRows ), 205 m_maxTileCols ( maxTileCols ); 206 {}; 207 208 Int getMaxLumaPs ( ) { return m_maxLumaPs ; }; 209 Int getMaxCPBMainTier ( ) { return m_maxCPBMainTier ; }; 210 Int getMaxCPBHighTier ( ) { return m_maxCPBHighTier ; }; 211 Int getMaxSliceSegmentsPerPicture( ) { return m_maxSliceSegmentsPerPicture; }; 212 Int getMaxTileRows ( ) { return m_maxTileRows ; }; 213 Int getMaxTileCols ( ) { return m_maxTileCols ; }; 214 215 private: 216 const Int m_maxLumaPs; 217 const Int m_maxCPBMainTier; 218 const Int m_maxCPBHighTier; 219 const Int m_maxSliceSegmentsPerPicture; 220 const Int m_maxTileRows; 221 const Int m_maxTileCols; 222 }; 223 224 extern std::map< Level::Name, TComGeneralTierAndLevelLimits > g_generalTierAndLevelLimits; 225 226 #endif 189 227 // ==================================================================================================================== 190 228 // Misc. … … 192 230 193 231 extern Char g_aucConvertToBit [ MAX_CU_SIZE+1 ]; // from width to log2(width)-2 194 232 #if !MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 195 233 #if H_3D_IC 196 234 extern UInt g_aICEnableCANDIDATE[10]; 197 235 extern UInt g_aICEnableNUM[ 10 ]; //10 layers 198 236 extern Int g_lastlayer; 237 #endif 199 238 #endif 200 239 -
trunk/source/Lib/TLibCommon/TComSlice.cpp
r1039 r1066 1 /*The copyright in this software is being made available under the BSD1 /* The copyright in this software is being made available under the BSD 2 2 * License, included below. This software may be subject to other third party 3 3 * and contributor rights, including patent rights, and no such rights are … … 103 103 , m_temporalLayerNonReferenceFlag ( false ) 104 104 , m_enableTMVPFlag ( true ) 105 #if I0044_SLICE_TMVP 106 , m_availableForTMVPRefFlag ( true ) 107 #endif 105 108 #if H_MV 106 109 , m_refPicSetInterLayer0 ( NULL ) … … 725 728 726 729 assert( rpsCurrList[li][ orgIdx ] != NULL ); 730 #if DISCARDABLE_PIC_RPS 731 assert( rpsCurrList[li][ orgIdx ]->getSlice(0)->getDiscardableFlag() == 0 ); // Inter-layer RPS shall not contain picture with discardable_flag = 1. 732 #endif 727 733 m_apcRefPicList [li][rIdx] = rpsCurrList [li][ orgIdx ]; 728 734 m_bIsUsedAsLongTerm[li][rIdx] = usedAsLongTerm [li][ orgIdx ] ; … … 1875 1881 #if H_MV 1876 1882 m_vpsBaseLayerInternalFlag = true; 1883 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL 1884 m_vpsBaseLayerAvailableFlag = true; 1885 #endif 1877 1886 #endif 1878 1887 … … 1900 1909 { 1901 1910 m_layerSetIdxForOlsMinus1[i] = -1; 1911 #if !H_MV_HLS10_PTL 1902 1912 m_profileLevelTierIdx[i] = 0; 1913 #endif 1903 1914 for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++) 1904 1915 { 1916 #if H_MV_HLS10_PTL 1917 #if H_MV_HLS10_PTL_FIX 1918 m_profileTierLevelIdx[i][j] = -1; 1919 #else 1920 m_profileTierLevelIdx[i][j] = false; 1921 #endif 1922 #endif 1905 1923 m_outputLayerFlag[i][j] = false; 1906 1924 } … … 1966 1984 m_directDependencyFlag[i][j] = false; 1967 1985 m_directDependencyType[i][j] = -1; 1986 #if H_MV_HLS10_REF_PRED_LAYERS 1987 m_dependencyFlag [i][j] = false; 1988 m_idDirectRefLayer[i][j] = -1; 1989 m_idPredictedLayer[i][j] = -1; 1990 m_idRefLayer [i][j] = -1; 1991 #else 1968 1992 m_refLayerId[i][j] = -1; 1993 #endif 1969 1994 m_maxTidIlRefPicsPlus1[i][j] = 7; 1970 1995 } … … 2050 2075 assert( getVpsNumRepFormatsMinus1() <= 255 ); 2051 2076 2077 #if H_MV_HLS10_ADD_LAYERSETS 2078 // The value of num_add_layer_sets shall be in the range of 0 to 1023, inclusive. 2079 assert( getNumAddLayerSets() >= 0 && getNumAddLayerSets() <= 1023 ); 2080 #endif 2052 2081 return true; 2053 2082 } … … 2081 2110 Void TComVPS::setRefLayers() 2082 2111 { 2112 2113 #if H_MV_HLS10_REF_PRED_LAYERS 2114 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2115 { 2116 for( Int j = 0; j <= getMaxLayersMinus1(); j++ ) 2117 { 2118 m_dependencyFlag[ i ][ j ] = getDirectDependencyFlag( i , j ); 2119 for( Int k = 0; k < i; k++ ) 2120 { 2121 if( getDirectDependencyFlag(i , k ) && m_dependencyFlag[k][j] ) 2122 { 2123 m_dependencyFlag[ i ][ j ] = true; 2124 } 2125 } 2126 } 2127 } 2128 2129 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2130 { 2131 Int iNuhLId = getLayerIdInNuh( i ); 2132 Int d = 0; 2133 Int r = 0; 2134 Int p = 0; 2135 for( Int j = 0; j <= getMaxLayersMinus1(); j++ ) 2136 { 2137 Int jNuhLid = getLayerIdInNuh( j ); 2138 if( getDirectDependencyFlag( i , j ) ) 2139 { 2140 m_idDirectRefLayer[iNuhLId][d++] = jNuhLid; 2141 } 2142 if( getDependencyFlag( i , j ) ) 2143 { 2144 m_idRefLayer [iNuhLId][r++] = jNuhLid; 2145 } 2146 if( getDependencyFlag( j , i ) ) 2147 { 2148 m_idPredictedLayer[iNuhLId][p++] = jNuhLid; 2149 } 2150 } 2151 m_numDirectRefLayers[ iNuhLId ] = d; 2152 m_numRefLayers [ iNuhLId ] = r; 2153 m_numPredictedLayers[ iNuhLId ] = p; 2154 } 2155 2156 Bool layerIdInListFlag[ 64 ]; 2157 for( Int i = 0; i <= 63; i++ ) 2158 { 2159 layerIdInListFlag[ i ] = 0; 2160 } 2161 2162 Int k = 0; 2163 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2164 { 2165 Int iNuhLId = getLayerIdInNuh( i ); 2166 if( getNumDirectRefLayers( iNuhLId ) == 0 ) 2167 { 2168 m_treePartitionLayerIdList[ k ][ 0 ] = iNuhLId; 2169 Int h = 1; 2170 for( Int j = 0; j < getNumPredictedLayers( iNuhLId ); j++ ) 2171 { 2172 Int predLId = getIdPredictedLayer( iNuhLId, j ); 2173 if ( !layerIdInListFlag[ predLId ] ) 2174 { 2175 m_treePartitionLayerIdList[ k ][ h++ ] = predLId; 2176 layerIdInListFlag[ predLId ] = 1; 2177 } 2178 } 2179 m_numLayersInTreePartition[ k++ ] = h; 2180 } 2181 } 2182 m_numIndependentLayers = k; 2183 #else // H_MV_HLS10_GEN 2184 2083 2185 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2084 2186 { … … 2116 2218 } 2117 2219 } 2118 2220 2119 2221 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) // Bug in spec "<" instead of "<=" 2120 2222 { … … 2136 2238 countedLayerIdxFlag[ i ] = 0; 2137 2239 } 2138 2139 2240 for( Int i = 0, k = 0; i <= getMaxLayersMinus1(); i++ ) 2140 2241 { … … 2144 2245 m_treePartitionLayerIdList[ k ][ 0 ] = iNuhLId; 2145 2246 m_numLayersInTreePartition[ k ] = 1; 2247 2146 2248 for( Int j = 0; j < m_numPredictedLayers[ iNuhLId ]; j++ ) 2147 2249 { … … 2154 2256 } 2155 2257 k++; 2156 } 2157 m_numIndependentLayers = k; 2158 } 2159 } 2160 2258 2259 m_numIndependentLayers = k; 2260 } 2261 } 2262 #endif // H_MV_HLS10_GEN 2263 } 2264 2265 #if !H_MV_HLS10_REF_PRED_LAYERS 2161 2266 Int TComVPS::getRefLayerId( Int layerIdInNuh, Int idx ) 2162 2267 { … … 2166 2271 return refLayerIdInNuh; 2167 2272 } 2273 #endif 2168 2274 2169 2275 Int TComVPS::getScalabilityId( Int layerIdInVps, ScalabilityType scalType ) … … 2203 2309 for ( i = 0; i < iNumViews ; i++ ) 2204 2310 { 2311 #if H_3D_FIX_UNINIT 2312 m_bCamParPresent[i] = false; 2313 #endif 2205 2314 m_bCamParInSliceHeader[i] = false; 2206 2315 m_aaaiCodedScale[i] = new Int*[ 2 ]; … … 2315 2424 { 2316 2425 assert( lsIdx >= 0 ); 2426 #if H_MV_HLS10_ADD_LAYERSETS 2427 assert( lsIdx <= getNumLayerSets() ); 2428 #else 2317 2429 assert( lsIdx <= getVpsNumLayerSetsMinus1() ); 2430 #endif 2318 2431 return (Int) m_layerSetLayerIdList[ lsIdx ].size(); 2319 2432 } … … 2339 2452 } 2340 2453 2454 #if !H_MV_HLS10_REF_PRED_LAYERS 2341 2455 Bool TComVPS::getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth /*= 0 */ ) 2342 2456 { 2457 #if H_MV_HLS10_REF_PRED_LAYERS 2458 // TBD: Remove getInDirectDependencyFlag entirely. 2459 return getDependencyFlag( depLayeridInVps, refLayeridInVps ); 2460 #else 2343 2461 assert( depth < 65 ); 2344 2462 Bool dependentFlag = getDirectDependencyFlag( depLayeridInVps, refLayeridInVps ); … … 2352 2470 } 2353 2471 return dependentFlag; 2354 } 2472 #endif 2473 } 2474 #endif 2355 2475 2356 2476 Void TComVPS::deriveLayerSetLayerIdList() … … 2378 2498 { 2379 2499 Int lsIdx = olsIdxToLsIdx( i ); 2380 2500 2381 2501 for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ ) 2382 2502 { 2383 m_targetDecLayerIdLists[i].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] ); 2503 #if H_MV_HLS10_NESSECARY_LAYER 2504 if ( getNecessaryLayerFlag( i , j )) 2505 { 2506 #endif 2507 m_targetDecLayerIdLists[i].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] ); 2508 #if H_MV_HLS10_NESSECARY_LAYER 2509 } 2510 #endif 2511 2384 2512 if( getOutputLayerFlag( i, j )) 2385 2513 { … … 2429 2557 } 2430 2558 2559 #if !H_MV_HLS10_ADD_LAYERSETS 2431 2560 Void TComVPS::inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder ) 2432 2561 { … … 2451 2580 } 2452 2581 } 2453 2582 #endif 2454 2583 Bool TComVPS::getAltOutputLayerFlagVar( Int i ) 2455 2584 { … … 2465 2594 } 2466 2595 2596 #if !H_MV_HLS10_MAXNUMPICS 2467 2597 Int TComVPS::getMaxNumPics( Int layerId ) 2468 2598 { … … 2483 2613 return maxNumPics; 2484 2614 } 2485 2615 #endif 2616 2617 #if !H_MV_HLS10_REF_PRED_LAYERS 2486 2618 Void TComVPS::xSetRefLayerFlags( Int currLayerId ) 2487 2619 { … … 2496 2628 } 2497 2629 } 2630 2631 #endif 2632 2633 #if H_MV_HLS10_PTL_FIX 2634 Int TComVPS::inferProfileTierLevelIdx(Int i, Int j) 2635 { 2636 Bool inferZero = ( i == 0 && j == 0 && getVpsBaseLayerInternalFlag() ); 2637 Bool inferGreaterZero = getNecessaryLayerFlag(i,j) && ( getVpsNumProfileTierLevelMinus1() == 0 ); 2638 assert( inferZero || inferGreaterZero ); 2639 2640 Bool ptlIdx = 0; // inference for greaterZero 2641 if ( inferZero ) 2642 { 2643 ptlIdx = getMaxLayersMinus1() > 0 ? 1 : 0; 2644 if ( inferGreaterZero ) 2645 { 2646 assert( ptlIdx == 0 ); 2647 // This should never happen since : 2648 // When vps_max_layers_minus1 is greater than 0, the value of vps_num_profile_tier_level_minus1 shall be greater than or equal to 1. 2649 } 2650 } 2651 return ptlIdx; 2652 } 2653 #endif 2654 2655 #if H_MV_HLS10_ADD_LAYERSETS 2656 Void TComVPS::deriveAddLayerSetLayerIdList(Int i) 2657 { 2658 assert( m_layerSetLayerIdList.size() == ( getVpsNumLayerSetsMinus1() + 1 + i ) ); 2659 std::vector<Int> layerSetLayerIdList; 2660 2661 for( Int treeIdx = 1; treeIdx < getNumIndependentLayers(); treeIdx++ ) 2662 { 2663 // The value of highest_layer_idx_plus1[ i ][ j ] shall be in the range of 0 to NumLayersInTreePartition[ j ], inclusive. 2664 assert( getHighestLayerIdxPlus1( i, treeIdx ) >= 0 && getHighestLayerIdxPlus1( i, treeIdx ) <= getNumLayersInTreePartition( treeIdx ) ); 2665 2666 for( Int layerCnt = 0; layerCnt < getHighestLayerIdxPlus1( i, treeIdx ); layerCnt++ ) 2667 { 2668 layerSetLayerIdList.push_back( getTreePartitionLayerIdList( treeIdx, layerCnt ) ); 2669 } 2670 } 2671 m_layerSetLayerIdList.push_back( layerSetLayerIdList ); 2672 2673 //It is a requirement of bitstream conformance that 2674 //NumLayersInIdList[ vps_num_layer_sets_minus1 + 1 + i ] shall be greater than 0. 2675 assert( getNumLayersInIdList( getVpsNumLayerSetsMinus1() + 1 + i ) > 0 ); 2676 } 2677 2678 #endif 2679 2680 #if H_MV_HLS10_NESSECARY_LAYER 2681 Void TComVPS::deriveNecessaryLayerFlags(Int olsIdx) 2682 { 2683 AOF( olsIdx >= 0 && olsIdx < getNumOutputLayerSets() ); 2684 Int lsIdx = olsIdxToLsIdx( olsIdx ); 2685 for( Int lsLayerIdx = 0; lsLayerIdx < getNumLayersInIdList( lsIdx) ; lsLayerIdx++ ) 2686 { 2687 m_necessaryLayerFlag[ olsIdx ][ lsLayerIdx ] = 0; 2688 } 2689 for( Int lsLayerIdx = 0; lsLayerIdx < getNumLayersInIdList( lsIdx ); lsLayerIdx++ ) 2690 { 2691 if( getOutputLayerFlag( olsIdx, lsLayerIdx )) 2692 { 2693 m_necessaryLayerFlag[ olsIdx ][ lsLayerIdx ] = 1; 2694 Int currLayerId = getLayerSetLayerIdList( lsIdx, lsLayerIdx ); 2695 for( Int rLsLayerIdx = 0; rLsLayerIdx < lsLayerIdx; rLsLayerIdx++ ) 2696 { 2697 Int refLayerId = getLayerSetLayerIdList( lsIdx, rLsLayerIdx ); 2698 if( getDependencyFlag( getLayerIdInVps( currLayerId ), getLayerIdInVps( refLayerId ) ) ) 2699 { 2700 m_necessaryLayerFlag[ olsIdx ][ rLsLayerIdx ] = 1; 2701 } 2702 } 2703 } 2704 } 2705 m_numNecessaryLayers[ olsIdx ] = 0; 2706 for( Int lsLayerIdx = 0; lsLayerIdx < getNumLayersInIdList( lsIdx ); lsLayerIdx++ ) 2707 { 2708 m_numNecessaryLayers[ olsIdx ] += m_necessaryLayerFlag[ olsIdx ][ lsLayerIdx ]; 2709 } 2710 } 2711 #endif 2712 2713 #if H_MV_HLS10_ADD_LAYERSETS 2714 Void TComVPS::printPTL() 2715 { 2716 std::vector<Int> idx; 2717 std::vector<Int> num; 2718 std::vector< std::vector<Int> > ptlInfo; 2719 2720 std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "PTLI" << std::endl; 2721 2722 for ( Int i = 0; i <= getVpsNumProfileTierLevelMinus1(); i++ ) 2723 { 2724 std::vector<Int> curPtlInfo; 2725 ProfileTierLevel* ptl = getPTL( i )->getGeneralPTL(); 2726 curPtlInfo.push_back( (Int) ptl->getProfileIdc() ); 2727 curPtlInfo.push_back( (Int) ptl->getTierFlag() ); 2728 curPtlInfo.push_back( (Int) ptl->getLevelIdc() ); 2729 curPtlInfo.push_back( (Int) ptl->getInbldFlag() ); 2730 2731 idx.push_back ( i ); 2732 num.push_back ( 4 ); 2733 ptlInfo.push_back( curPtlInfo ); 2734 } 2735 2736 xPrintArray( "VpsProfileTierLevel", getVpsNumProfileTierLevelMinus1() + 1, idx, num, ptlInfo, false ); 2737 2738 num.clear(); 2739 idx.clear(); 2740 for (Int i = 0; i < getNumOutputLayerSets(); i++) 2741 { 2742 num.push_back ( getNumLayersInIdList( olsIdxToLsIdx( i )) ); 2743 idx.push_back( i ); 2744 } 2745 2746 xPrintArray( "profile_tier_level_idx", getNumOutputLayerSets(), idx, num, m_profileTierLevelIdx, true ); 2747 std::cout << std::endl; 2748 } 2749 2750 Void TComVPS::printLayerDependencies() 2751 { 2752 vector<Int> fullArray; 2753 vector<Int> range; 2754 2755 #if H_3D 2756 vector<Int> depthId; 2757 #endif 2758 2759 #if H_MV_HLS10_AUX 2760 vector<Int> viewOrderIndex; 2761 vector<Int> auxId; 2762 vector<Int> dependencyId; 2763 vector<Int> viewId; 2764 #endif 2765 for (Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2766 { 2767 fullArray.push_back( getMaxLayersMinus1() + 1 ); 2768 range.push_back( i ); 2769 #if H_MV_HLS10_AUX 2770 viewOrderIndex.push_back( getViewIndex ( i ) ); 2771 dependencyId .push_back( getDependencyId( i ) ); 2772 auxId .push_back( getAuxId ( i ) ); 2773 viewId .push_back( getViewId ( getLayerIdInNuh( i ) ) ); 2774 #if H_3D 2775 depthId.push_back( getDepthId( i ) ); 2776 #endif 2777 #endif 2778 } 2779 std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "Layer Dependencies" << std::endl; 2780 xPrintArray( "direct_dependency_flag", getMaxLayersMinus1()+1, range, fullArray, m_directDependencyFlag, false ); 2781 xPrintArray( "DependencyFlag", getMaxLayersMinus1()+1, range, fullArray, m_dependencyFlag, false ); 2782 xPrintArray( "layer_id_in_nuh", getMaxLayersMinus1()+1, m_layerIdInNuh, true ); 2783 xPrintArray( "IdPredictedLayer", getMaxLayersMinus1() + 1, m_layerIdInNuh, m_numPredictedLayers, m_idPredictedLayer, true ); 2784 xPrintArray( "IdRefLayer" , getMaxLayersMinus1() + 1, m_layerIdInNuh, m_numRefLayers, m_idRefLayer, true ); 2785 xPrintArray( "IdDirectRefLayer", getMaxLayersMinus1() + 1, m_layerIdInNuh, m_numDirectRefLayers, m_idDirectRefLayer, true ); 2786 std::cout << std::endl; 2787 } 2788 2789 #if H_MV_HLS10_AUX 2790 Void TComVPS::printScalabilityId() 2791 { 2792 vector<Int> layerIdxInVps; 2793 2794 #if H_3D 2795 vector<Int> depthId; 2796 #endif 2797 2798 vector<Int> viewOrderIndex; 2799 vector<Int> auxId; 2800 vector<Int> dependencyId; 2801 vector<Int> viewId; 2802 2803 for (Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2804 { 2805 Int layerIdInNuh = getLayerIdInNuh( i ); 2806 layerIdxInVps .push_back( i ); 2807 viewOrderIndex.push_back( getViewIndex ( layerIdInNuh ) ); 2808 dependencyId .push_back( getDependencyId( layerIdInNuh ) ); 2809 auxId .push_back( getAuxId ( layerIdInNuh ) ); 2810 viewId .push_back( getViewId ( layerIdInNuh ) ); 2811 #if H_3D 2812 depthId .push_back( getDepthId ( layerIdInNuh ) ); 2813 #endif 2814 } 2815 2816 std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "Scalability Ids" << std::endl; 2817 xPrintArray( "layerIdxInVps" , getMaxLayersMinus1()+1, layerIdxInVps, false ); 2818 xPrintArray( "layer_id_in_nuh", getMaxLayersMinus1()+1, m_layerIdInNuh, false ); 2819 2820 xPrintArray( "ViewOrderIndex", getMaxLayersMinus1()+1, viewOrderIndex, false ); 2821 xPrintArray( "DependencyId" , getMaxLayersMinus1()+1, dependencyId , false ); 2822 xPrintArray( "AuxId" , getMaxLayersMinus1()+1, auxId , false ); 2823 xPrintArray( "ViewId" , getMaxLayersMinus1()+1, viewId , false ); 2824 2825 std::cout << std::endl; 2826 } 2827 #endif 2828 2829 Void TComVPS::printLayerSets() 2830 { 2831 vector<Int> fullArray; 2832 vector<Int> numLayersInIdList; 2833 vector<Int> rangeLayerSets; 2834 2835 2836 for (Int i = 0; i < getNumLayerSets(); i++ ) 2837 { 2838 numLayersInIdList.push_back( getNumLayersInIdList( i ) ); 2839 rangeLayerSets.push_back( i ); 2840 } 2841 2842 vector<Int> rangeOutputLayerSets; 2843 vector<Int> numOutputLayersInOutputLayerSet; 2844 vector<Int> numDecLayer; 2845 vector<Int> numLayersInLayerSetForOutputLayerSet; 2846 vector<Int> vOlsIdxToLsIdx; 2847 for (Int i = 0; i < getNumOutputLayerSets(); i++ ) 2848 { 2849 vOlsIdxToLsIdx.push_back( olsIdxToLsIdx(i)); 2850 numOutputLayersInOutputLayerSet.push_back( getNumOutputLayersInOutputLayerSet( i ) ); 2851 numDecLayer.push_back( (Int) m_targetDecLayerIdLists[ i ].size() ); 2852 rangeOutputLayerSets.push_back( i ); 2853 numLayersInLayerSetForOutputLayerSet.push_back( getNumLayersInIdList( olsIdxToLsIdx( i ) ) ); 2854 } 2855 2856 vector<Int> rangeIndependentLayers; 2857 for(Int i = 0; i < getNumIndependentLayers(); i++ ) 2858 { 2859 rangeIndependentLayers.push_back( i ); 2860 } 2861 2862 vector<Int> rangeAddLayerSets; 2863 vector<Int> numHighestLayerIdxPlus1; 2864 for(Int i = 0; i < getNumAddLayerSets(); i++ ) 2865 { 2866 rangeAddLayerSets.push_back( i ); 2867 numHighestLayerIdxPlus1.push_back( getNumIndependentLayers() ); 2868 } 2869 2870 std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "Layer Sets" << std::endl; 2871 xPrintArray( "TreePartitionLayerIdList", getNumIndependentLayers(), rangeIndependentLayers, m_numLayersInTreePartition, m_treePartitionLayerIdList, true ); 2872 xPrintArray( "highest_layer_idx_plus1", getNumAddLayerSets(), rangeAddLayerSets, numHighestLayerIdxPlus1, m_highestLayerIdxPlus1, true ); 2873 xPrintArray( "LayerSetLayerIdList" , (Int) getNumLayerSets() , rangeLayerSets , numLayersInIdList, m_layerSetLayerIdList, true ); 2874 xPrintArray( "OlsIdxToLsIdx", (Int) vOlsIdxToLsIdx.size(), vOlsIdxToLsIdx, true ); 2875 xPrintArray( "OutputLayerFlag" , getNumOutputLayerSets(), rangeOutputLayerSets, numLayersInLayerSetForOutputLayerSet, m_outputLayerFlag, true ); 2876 xPrintArray( "TargetOptLayerIdList", getNumOutputLayerSets(), rangeOutputLayerSets, numOutputLayersInOutputLayerSet, m_targetOptLayerIdLists, true ); 2877 xPrintArray( "NecessaryLayerFlag" , getNumOutputLayerSets(), rangeOutputLayerSets, numLayersInLayerSetForOutputLayerSet, m_necessaryLayerFlag , true ); 2878 xPrintArray( "TargetDecLayerIdList", getNumOutputLayerSets(), rangeOutputLayerSets, numDecLayer, m_targetDecLayerIdLists, true ); 2879 std::cout << endl; 2880 } 2881 2882 #endif 2498 2883 2499 2884 #endif // H_MV … … 2579 2964 #endif 2580 2965 2966 #if !H_MV_HLS10_PPS 2581 2967 m_numScaledRefLayerOffsets = 0; 2582 2968 … … 2590 2976 m_scaledRefLayerLeftOffset [i] = 0; 2591 2977 m_scaledRefLayerTopOffset [i] = 0; 2592 m_scaledRefLayerRi ghtOffset [i] = 0;2978 m_scaledRefLayerRiFghtOffset [i] = 0; 2593 2979 m_scaledRefLayerBottomOffset [i] = 0; 2594 2980 } 2981 #endif 2595 2982 #endif 2596 2983 } … … 2967 3354 Void TComSPS::inferRepFormat( TComVPS* vps, Int layerIdCurr ) 2968 3355 { 3356 #if H_MV_HLS10_MULTILAYERSPS 3357 if ( getMultiLayerExtSpsFlag() ) 3358 #else 2969 3359 if ( layerIdCurr > 0 ) 3360 #endif 2970 3361 { 2971 3362 Int repFormatIdx = getUpdateRepFormatFlag() ? getSpsRepFormatIdx() : vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ; 2972 3363 TComRepFormat* repFormat = vps->getRepFormat( repFormatIdx ); 2973 setChromaFormatIdc( repFormat->getChromaFormatVpsIdc() ); 2974 //// ToDo: add when supported: 2975 // setSeperateColourPlaneFlag( repFormat->getSeparateColourPlaneVpsFlag() ) ; 2976 2977 setPicWidthInLumaSamples ( repFormat->getPicWidthVpsInLumaSamples() ); 2978 setPicHeightInLumaSamples( repFormat->getPicHeightVpsInLumaSamples() ); 2979 2980 setBitDepthY ( repFormat->getBitDepthVpsLumaMinus8() + 8 ); 2981 setQpBDOffsetY ( (Int) (6*( getBitDepthY() - 8 )) ); 2982 2983 setBitDepthC ( repFormat->getBitDepthVpsChromaMinus8() + 8 ); 2984 setQpBDOffsetC ( (Int) (6* ( getBitDepthC() -8 ) ) ); 2985 if ( getLayerId() > 0 && getUpdateRepFormatFlag() ) 3364 setChromaFormatIdc( repFormat->getChromaFormatVpsIdc() ); 3365 //// ToDo: add when supported: 3366 // setSeperateColourPlaneFlag( repFormat->getSeparateColourPlaneVpsFlag() ) ; 3367 3368 setPicWidthInLumaSamples ( repFormat->getPicWidthVpsInLumaSamples() ); 3369 setPicHeightInLumaSamples( repFormat->getPicHeightVpsInLumaSamples() ); 3370 3371 setBitDepthY ( repFormat->getBitDepthVpsLumaMinus8() + 8 ); 3372 setQpBDOffsetY ( (Int) (6*( getBitDepthY() - 8 )) ); 3373 3374 setBitDepthC ( repFormat->getBitDepthVpsChromaMinus8() + 8 ); 3375 setQpBDOffsetC ( (Int) (6* ( getBitDepthC() -8 ) ) ); 3376 #if H_MV_HLS10_GEN_VSP_CONF_WIN 3377 Window &spsConf = getConformanceWindow(); 3378 3379 // Scaled later 3380 spsConf.setScaledFlag( false ); 3381 spsConf.setWindowLeftOffset ( repFormat->getConfWinVpsLeftOffset() ); 3382 spsConf.setWindowRightOffset ( repFormat->getConfWinVpsRightOffset() ); 3383 spsConf.setWindowTopOffset ( repFormat->getConfWinVpsTopOffset() ); 3384 spsConf.setWindowBottomOffset( repFormat->getConfWinVpsBottomOffset() ); 3385 #endif 3386 3387 #if H_MV_HLS10_MULTILAYERSPS 3388 if ( getMultiLayerExtSpsFlag() && getUpdateRepFormatFlag() ) 3389 #else 3390 if ( getLayerId() > 0 && getUpdateRepFormatFlag() ) 3391 #endif 2986 3392 { 2987 3393 assert( getChromaFormatIdc() <= repFormat->getChromaFormatVpsIdc() ); … … 3017 3423 const std::vector<Int>& targetDecLayerIdList = vps->getTargetDecLayerIdList( vps->olsIdxToLsIdx( targetOptLayerSetIdx )); 3018 3424 3425 #if H_MV_HLS10_MULTILAYERSPS 3426 if ( getMultiLayerExtSpsFlag() ) 3427 #else 3019 3428 if (getLayerId() > 0 ) 3429 #endif 3020 3430 { 3021 3431 Int layerIdx = 0; … … 3035 3445 Int maxDecPicBufferingMinus1 = vps->getDpbSize()->getMaxVpsDecPicBufferingMinus1( targetOptLayerSetIdx, layerIdx, i ) ; 3036 3446 3037 if ( encoder ) 3447 #if H_MV_HLS10_MULTILAYERSPS 3448 // This preliminary fix needs to be checked. 3449 Int maxNumReorderPics = vps->getDpbSize()->getMaxVpsNumReorderPics( targetOptLayerSetIdx, i ); 3450 Int maxLatencyIncreasePlus1 = vps->getDpbSize()->getMaxVpsLatencyIncreasePlus1( targetOptLayerSetIdx, i ); 3451 #endif 3452 if ( encoder ) 3038 3453 { 3039 3454 assert( getMaxDecPicBuffering( i ) - 1 == maxDecPicBufferingMinus1 ); 3455 #if H_MV_HLS10_MULTILAYERSPS 3456 // This preliminary fix needs to be checked. 3457 assert( getNumReorderPics( i ) == maxNumReorderPics ); 3458 assert( getMaxLatencyIncrease( i ) == maxLatencyIncreasePlus1 ); 3459 #endif 3460 3040 3461 } 3041 3462 else 3042 3463 { 3464 #if !H_MV_HLS10_MULTILAYERSPS 3043 3465 setMaxDecPicBuffering(i, maxDecPicBufferingMinus1 + 1 ); 3044 } 3045 } 3466 #else 3467 // This preliminary fix needs to be checked. 3468 setMaxDecPicBuffering( maxDecPicBufferingMinus1 + 1 , i); 3469 setNumReorderPics ( maxNumReorderPics, i ); 3470 setMaxLatencyIncrease( maxLatencyIncreasePlus1 - 1 , i); 3471 #endif 3472 } 3473 } 3046 3474 } 3047 3475 } … … 3049 3477 Void TComSPS::checkRpsMaxNumPics( TComVPS* vps, Int currLayerId ) 3050 3478 { 3479 #if !H_MV_HLS10_MAXNUMPICS 3051 3480 // In spec, when rps is in SPS, nuh_layer_id of SPS is used instead 3052 3481 // of nuh_layer_id of slice (currLayerId), this seems to be a bug. 3053 3482 #endif 3054 3483 for (Int i = 0; i < getRPSList()->getNumberOfReferencePictureSets(); i++ ) 3055 3484 { … … 3057 3486 if ( !rps->getInterRPSPrediction() ) 3058 3487 { 3488 #if H_MV_HLS10_MAXNUMPICS 3489 rps->checkMaxNumPics( vps->getVpsExtensionFlag(), MAX_INT, getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); // INT_MAX to be replaced by DpbSize 3490 #else 3059 3491 rps->checkMaxNumPics( vps->getVpsExtensionFlag(), vps->getMaxNumPics( currLayerId ), 3060 3492 getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); 3061 } 3062 } 3063 } 3064 3493 #endif 3494 } 3495 } 3496 } 3497 3498 #if H_MV_HLS10_MULTILAYERSPS 3499 Void TComSPS::inferSpsMaxSubLayersMinus1(Bool atPsActivation, TComVPS* vps) 3500 { 3501 assert( getLayerId() != 0 ); 3502 if ( !atPsActivation ) 3503 { 3504 assert( vps == NULL ); 3505 if (getSpsExtOrMaxSubLayersMinus1() != 7) 3506 { 3507 setSpsMaxSubLayersMinus1( getSpsExtOrMaxSubLayersMinus1() ); 3508 } 3509 } 3510 else 3511 { 3512 assert( vps != NULL ); 3513 if (getSpsExtOrMaxSubLayersMinus1() == 7) 3514 { 3515 setSpsMaxSubLayersMinus1( vps->getMaxSubLayersMinus1() ); 3516 } 3517 } 3518 } 3519 #endif 3065 3520 #endif 3066 3521 … … 3425 3880 { 3426 3881 TComVPS* vps = getVPS(); 3882 #if H_MV_HLS10_REF_PRED_LAYERS 3883 Int refLayerIdx = vps->getLayerIdInVps( vps->getIdDirectRefLayer( getLayerId(), i ) ); 3884 #else 3427 3885 Int refLayerIdx = vps->getLayerIdInVps( vps->getRefLayerId( getLayerId(), i ) ); 3886 #endif 3428 3887 3429 3888 Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >= getTLayer() ) && ( getTLayer() == 0 ) && … … 3496 3955 Int TComSlice::getRefPicLayerId( Int i ) 3497 3956 { 3957 #if H_MV_HLS10_REF_PRED_LAYERS 3958 return getVPS()->getIdDirectRefLayer( getLayerId(), getInterLayerPredLayerIdc( i ) ); 3959 #else 3498 3960 return getVPS()->getRefLayerId( getLayerId(), getInterLayerPredLayerIdc( i ) ); 3961 #endif 3499 3962 } 3500 3963 … … 3602 4065 m_bApplyIC = true; 3603 4066 Int refLayer = curLayer-1; 3604 if( (refLayer>=0) && (g_aICEnableCANDIDATE[refLayer]>0) ) 4067 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 4068 Int ICEnableCandidate = getICEnableCandidate(refLayer); 4069 Int ICEnableNum = getICEnableNum(refLayer); 4070 if( (refLayer>=0) && (ICEnableCandidate>0) ) 3605 4071 { 3606 Double ratio=Double( g_aICEnableNUM[refLayer])/Double(g_aICEnableCANDIDATE[refLayer]);4072 Double ratio=Double(ICEnableNum/Double(ICEnableCandidate)); 3607 4073 3608 4074 if( ratio > IC_LOW_LATENCY_ENCODING_THRESHOLD) 3609 {4075 { 3610 4076 m_bApplyIC=true; 3611 4077 } … … 3615 4081 } 3616 4082 } 4083 setICEnableCandidate(curLayer, 0); 4084 setICEnableNum(curLayer, 0); 4085 #else 4086 if( (refLayer>=0) && (g_aICEnableCANDIDATE[refLayer]>0) ) 4087 { 4088 Double ratio=Double(g_aICEnableNUM[refLayer])/Double(g_aICEnableCANDIDATE[refLayer]); 4089 4090 if( ratio > IC_LOW_LATENCY_ENCODING_THRESHOLD) 4091 { 4092 m_bApplyIC=true; 4093 } 4094 else 4095 { 4096 m_bApplyIC=false; 4097 } 4098 } 3617 4099 g_aICEnableNUM[curLayer]=0; 3618 4100 g_aICEnableCANDIDATE[curLayer]=0; 3619 4101 g_lastlayer=getDepth(); 4102 #endif 3620 4103 } 3621 4104 } … … 3727 4210 3728 4211 #if H_3D_DDD 4212 #if LGE_FCO_I0116 4213 if( getIsDepth() && getViewIndex() > 0 && getVPS()->getMPIFlag(layerIdInVPS)) 4214 #else 3729 4215 if( getIsDepth() && getViewIndex() > 0 ) 4216 #endif 3730 4217 { 3731 4218 TComSlice *pcTextSlice = getTexturePic()->getSlice( 0 ); … … 4209 4696 , m_nonPackedConstraintFlag(false) 4210 4697 , m_frameOnlyConstraintFlag(false) 4698 #if H_MV_HLS10_PTL 4699 , m_max12bitConstraintFlag ( false ) 4700 , m_max10bitConstraintFlag ( false ) 4701 , m_max8bitConstraintFlag ( false ) 4702 , m_max422chromaConstraintFlag ( false ) 4703 , m_max420chromaConstraintFlag ( false ) 4704 , m_maxMonochromeConstraintFlag ( false ) 4705 , m_intraConstraintFlag ( false ) 4706 , m_onePictureOnlyConstraintFlag( false ) 4707 , m_lowerBitRateConstraintFlag ( false ) 4708 , m_inbldFlag ( false ) 4709 #endif 4211 4710 { 4212 4711 ::memset(m_profileCompatibilityFlag, 0, sizeof(m_profileCompatibilityFlag)); 4213 4712 } 4713 4714 #if H_MV_HLS10_PTL_INFER_FIX 4715 Bool ProfileTierLevel::getV2ConstraintsPresentFlag() 4716 { 4717 return ( 4718 getProfileIdc( ) == 4 || getProfileCompatibilityFlag( 4 ) || getProfileIdc( ) == 5 || getProfileCompatibilityFlag( 5 ) || 4719 getProfileIdc( ) == 6 || getProfileCompatibilityFlag( 6 ) || getProfileIdc( ) == 7 || getProfileCompatibilityFlag( 7 ) 4720 ); 4721 } 4722 4723 Bool ProfileTierLevel::getInbldPresentFlag() 4724 { 4725 return ( 4726 ( getProfileIdc() >= 1 && getProfileIdc() <= 5 ) || getProfileCompatibilityFlag( 1 ) || getProfileCompatibilityFlag( 2 ) || 4727 getProfileCompatibilityFlag( 3 ) || getProfileCompatibilityFlag( 4 ) || getProfileCompatibilityFlag( 5 ) 4728 ); 4729 } 4730 4731 Void ProfileTierLevel::copyV2ConstraintFlags(ProfileTierLevel* ptlRef) 4732 { 4733 setMax12bitConstraintFlag ( ptlRef->getMax12bitConstraintFlag ( ) ); 4734 setMax10bitConstraintFlag ( ptlRef->getMax10bitConstraintFlag ( ) ); 4735 setMax8bitConstraintFlag ( ptlRef->getMax8bitConstraintFlag ( ) ); 4736 setMax422chromaConstraintFlag ( ptlRef->getMax422chromaConstraintFlag ( ) ); 4737 setMax420chromaConstraintFlag ( ptlRef->getMax420chromaConstraintFlag ( ) ); 4738 setMaxMonochromeConstraintFlag ( ptlRef->getMaxMonochromeConstraintFlag ( ) ); 4739 setIntraConstraintFlag ( ptlRef->getIntraConstraintFlag ( ) ); 4740 setOnePictureOnlyConstraintFlag ( ptlRef->getOnePictureOnlyConstraintFlag ( ) ); 4741 setLowerBitRateConstraintFlag ( ptlRef->getLowerBitRateConstraintFlag ( ) ); 4742 } 4743 4744 Void ProfileTierLevel::copyProfile(ProfileTierLevel* ptlRef) 4745 { 4746 setProfileSpace ( ptlRef->getProfileSpace ( ) ); 4747 setTierFlag ( ptlRef->getTierFlag ( ) ); 4748 setProfileIdc ( ptlRef->getProfileIdc ( ) ); 4749 for (Int j = 0; j < 32; j++) 4750 { 4751 setProfileCompatibilityFlag(j, ptlRef->getProfileCompatibilityFlag ( j ) ); 4752 } 4753 setProgressiveSourceFlag ( ptlRef->getProgressiveSourceFlag ( ) ); 4754 setInterlacedSourceFlag ( ptlRef->getInterlacedSourceFlag ( ) ); 4755 setNonPackedConstraintFlag ( ptlRef->getNonPackedConstraintFlag ( ) ); 4756 setFrameOnlyConstraintFlag ( ptlRef->getFrameOnlyConstraintFlag ( ) ); 4757 copyV2ConstraintFlags ( ptlRef ); 4758 } 4759 4760 #endif 4214 4761 4215 4762 TComPTL::TComPTL() … … 4220 4767 4221 4768 #if H_MV 4769 #if !H_MV_HLS10_PTL_INFER_FIX 4222 4770 Void TComPTL::copyLevelFrom( TComPTL* source ) 4223 4771 { … … 4229 4777 } 4230 4778 } 4779 #else 4780 Void TComPTL::inferGeneralValues(Bool profilePresentFlag, Int k, TComPTL* refPTL) 4781 { 4782 ProfileTierLevel* refProfileTierLevel = NULL; 4783 if ( k > 0 ) 4784 { 4785 assert( refPTL != NULL); 4786 refProfileTierLevel = refPTL->getGeneralPTL(); 4787 } 4788 4789 ProfileTierLevel* curProfileTierLevel = getGeneralPTL( ); 4790 4791 if( !profilePresentFlag ) 4792 { 4793 assert( k > 0 ); 4794 assert( refProfileTierLevel != NULL ); 4795 curProfileTierLevel->copyProfile( refProfileTierLevel); 4796 } 4797 else 4798 { 4799 if ( !curProfileTierLevel->getV2ConstraintsPresentFlag() ) 4800 { 4801 curProfileTierLevel->setMax12bitConstraintFlag ( false ); 4802 curProfileTierLevel->setMax10bitConstraintFlag ( false ); 4803 curProfileTierLevel->setMax8bitConstraintFlag ( false ); 4804 curProfileTierLevel->setMax422chromaConstraintFlag ( false ); 4805 curProfileTierLevel->setMax420chromaConstraintFlag ( false ); 4806 curProfileTierLevel->setMaxMonochromeConstraintFlag ( false ); 4807 curProfileTierLevel->setIntraConstraintFlag ( false ); 4808 curProfileTierLevel->setOnePictureOnlyConstraintFlag ( false ); 4809 curProfileTierLevel->setLowerBitRateConstraintFlag ( false ); 4810 } 4811 4812 if ( !curProfileTierLevel->getInbldPresentFlag() ) 4813 { 4814 curProfileTierLevel->setInbldFlag( false ); 4815 } 4816 } 4817 } 4818 4819 Void TComPTL::inferSubLayerValues(Int maxNumSubLayersMinus1, Int k, TComPTL* refPTL) 4820 { 4821 assert( k == 0 || refPTL != NULL ); 4822 4823 for (Int i = maxNumSubLayersMinus1; i >= 0; i--) 4824 { 4825 ProfileTierLevel* refProfileTierLevel; 4826 if ( k != 0 ) 4827 { 4828 refProfileTierLevel = refPTL->getSubLayerPTL( i ); 4829 } 4830 else 4831 { 4832 if ( i == maxNumSubLayersMinus1) 4833 { 4834 refProfileTierLevel = getGeneralPTL(); 4835 } 4836 else 4837 { 4838 refProfileTierLevel = getSubLayerPTL( i + 1 ); 4839 } 4840 } 4841 4842 ProfileTierLevel* curProfileTierLevel = getSubLayerPTL( i ); 4843 if( !getSubLayerLevelPresentFlag( i ) ) 4844 { 4845 curProfileTierLevel->setLevelIdc( refProfileTierLevel->getLevelIdc() ); 4846 } 4847 4848 if( !getSubLayerProfilePresentFlag( i ) ) 4849 { 4850 curProfileTierLevel->copyProfile( refProfileTierLevel); 4851 } 4852 else 4853 { 4854 if ( !curProfileTierLevel->getV2ConstraintsPresentFlag() ) 4855 { 4856 curProfileTierLevel->copyV2ConstraintFlags( refProfileTierLevel ); 4857 } 4858 4859 if ( !curProfileTierLevel->getInbldPresentFlag() ) 4860 { 4861 curProfileTierLevel->setInbldFlag( refProfileTierLevel->getInbldFlag() ); 4862 } 4863 } 4864 } 4865 } 4866 4867 #endif 4231 4868 #endif 4232 4869 //! \} … … 4271 4908 4272 4909 m_vpsVuiBspHrdPresentFlag = false; 4910 #if H_MV_HLS10_VPS_VUI_BSP 4911 m_vpsVuiBspHrdParameters = NULL; 4912 #else 4273 4913 m_vpsVuiBspHrdParameters = new TComVpsVuiBspHrdParameters(); 4914 #endif 4274 4915 } 4275 4916 … … 4314 4955 assert( getBitDepthVpsLumaMinus8 () == prevRepFormat->getBitDepthVpsLumaMinus8 () ); 4315 4956 assert( getBitDepthVpsChromaMinus8 () == prevRepFormat->getBitDepthVpsChromaMinus8 () ); 4316 } 4317 } 4318 4957 } 4958 } 4959 4960 #if !H_MV_HLS10_VPS_VUI_BSP 4319 4961 Void TComVpsVuiBspHrdParameters::checkLayerInBspFlag( TComVPS* vps, Int h ) 4320 4962 { … … 4354 4996 // When num_bitstream_partitions[ h ] is equal to 1 for any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, 4355 4997 // the value of layer_in_bsp_flag[ h ][ 0 ][ j ] should be equal to 0 for at least one value of j in the range 0 to 4356 // NumLayersInIdList[ h ] −1, inclusive.4998 // NumLayersInIdList[ h ] ? 1, inclusive. 4357 4999 4358 5000 … … 4369 5011 4370 5012 // For any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ] 4371 // shall be equal to 1 for at most one value of i in the range of 0 to num_bitstream_partitions[ h ] −1, inclusive.5013 // shall be equal to 1 for at most one value of i in the range of 0 to num_bitstream_partitions[ h ] ? 1, inclusive. 4372 5014 4373 5015 for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ ) … … 4395 5037 // assert( getBspCombSchedIdx(h, i, j ) <= vps->getHrdParameters( getBspCombHrdIdx( h, i, j ) )->getCpbCntMinus1( highestTid ) ); 4396 5038 } 5039 #endif 5040 5041 #if H_MV_HLS10_VPS_VUI_BSP 5042 5043 TComVpsVuiBspHrdParameters::~TComVpsVuiBspHrdParameters() 5044 { 5045 delete[] m_cprmsAddPresentFlag; 5046 delete[] m_numSubLayerHrdMinus1; 5047 delete[] m_hrdParameters; 5048 5049 for (Int h = 0; h < m_numOls; h++) 5050 { 5051 if ( h > 0 ) 5052 { 5053 for (Int i = 0; i < getNumSignalledPartitioningSchemes(h)+1; i++) 5054 { 5055 for (Int t = 0; t < m_vps->getMaxSubLayersInLayerSetMinus1( m_vps->olsIdxToLsIdx(h) ) + 1; t++) 5056 { 5057 for ( Int j = 0; j <= getNumBspSchedulesMinus1(h,i,j);j++ ) 5058 { 5059 delete[] m_bspHrdIdx [h][i][t][j]; 5060 delete[] m_bspSchedIdx[h][i][t][j]; 5061 } 5062 } 5063 delete[] m_numBspSchedulesMinus1[h][i]; 5064 } 5065 } 5066 5067 for (Int j = 0; j <= getNumSignalledPartitioningSchemes(h ) + 1; j++ ) 5068 { 5069 for (Int k = 0; k <= getNumPartitionsInSchemeMinus1(h,j); k++ ) 5070 { 5071 delete[] m_layerIncludedInPartitionFlag[h][j][k]; 5072 } 5073 } 5074 delete[] m_numPartitionsInSchemeMinus1[h]; 5075 } 5076 delete[] m_numSignalledPartitioningSchemes; 5077 } 5078 5079 5080 Int TComVpsVuiBspHrdParameters::getBspHrdIdxLen(TComVPS* vps) 5081 { 5082 return gCeilLog2( vps->getNumHrdParameters() + getVpsNumAddHrdParams() ); 5083 } 5084 5085 Void TComVpsVuiBspHrdParameters::createAfterVpsNumAddHrdParams( TComVPS* vps ) 5086 { 5087 assert( vps == NULL ); 5088 m_vps = vps; 5089 m_offsetHrdParamIdx = vps->getNumHrdParameters(); 5090 m_numHrdParam = vps->getNumHrdParameters() + getVpsNumAddHrdParams() - m_offsetHrdParamIdx; 5091 m_numOls = vps->getNumOutputLayerSets(); 5092 5093 m_cprmsAddPresentFlag = new Bool [ m_numHrdParam ]; 5094 m_numSubLayerHrdMinus1 = new Int [ m_numHrdParam ]; 5095 m_hrdParameters = new TComHRD [ m_numHrdParam ]; 5096 5097 m_numSignalledPartitioningSchemes = new Int [ m_numOls ]; 5098 m_numPartitionsInSchemeMinus1 = new Int* [ m_numOls ]; 5099 m_numBspSchedulesMinus1 = new Int** [ m_numOls ]; 5100 m_bspHrdIdx = new Int****[ m_numOls ]; 5101 m_bspSchedIdx = new Int****[ m_numOls ]; 5102 } 5103 5104 Void TComVpsVuiBspHrdParameters::createAfterNumSignalledPartitioningSchemes( Int h ) 5105 { 5106 m_numPartitionsInSchemeMinus1 [h] = new Int [ getNumSignalledPartitioningSchemes(h) ]; 5107 m_layerIncludedInPartitionFlag[h] = new Bool** [ getNumSignalledPartitioningSchemes(h) ]; 5108 5109 m_numBspSchedulesMinus1[h] = new Int* [ getNumSignalledPartitioningSchemes(h) + 1 ]; 5110 for (Int i = 0; i < getNumSignalledPartitioningSchemes(h) + 1; i++) 5111 { 5112 Int tMax = m_vps->getMaxSubLayersInLayerSetMinus1( m_vps->olsIdxToLsIdx(h) ) + 1; 5113 m_numBspSchedulesMinus1[h][i] = new Int [ tMax ]; 5114 m_bspHrdIdx [h][i] = new Int**[ tMax ]; 5115 m_bspSchedIdx [h][i] = new Int**[ tMax ]; 5116 } 5117 } 5118 5119 Void TComVpsVuiBspHrdParameters::createAfterNumPartitionsInSchemeMinus1( Int h, Int j ) 5120 { 5121 m_layerIncludedInPartitionFlag[h][j] = new Bool*[ getNumPartitionsInSchemeMinus1(h,j)]; 5122 for( Int k = 0; k < getNumPartitionsInSchemeMinus1(h,j); k++ ) 5123 { 5124 m_layerIncludedInPartitionFlag[h][j][k] = new Bool[ m_vps->getNumLayersInIdList( m_vps->olsIdxToLsIdx(h))]; 5125 } 5126 } 5127 5128 Void TComVpsVuiBspHrdParameters::createAfterNumBspSchedulesMinus1( Int h, Int i, Int t ) 5129 { 5130 m_bspSchedIdx[h][i][t] = new Int* [ getNumBspSchedulesMinus1( h, i, t ) + 1 ]; 5131 m_bspHrdIdx [h][i][t] = new Int* [ getNumBspSchedulesMinus1( h, i, t ) + 1 ]; 5132 for( Int j = 0; j < getNumBspSchedulesMinus1( h, i, t ) + 1; j++ ) 5133 { 5134 m_bspSchedIdx[h][i][t][j] = new Int[ getNumPartitionsInSchemeMinus1( h, i ) ]; 5135 m_bspHrdIdx [h][i][t][j] = new Int[ getNumPartitionsInSchemeMinus1( h, i ) ]; 5136 } 5137 } 5138 5139 #endif 4397 5140 4398 5141 Void TComVUI::inferVideoSignalInfo( TComVPS* vps, Int layerIdCurr ) … … 4430 5173 for (Int k = 0; k < MAX_NUM_LAYER_IDS; k++ ) 4431 5174 { 5175 #if H_MV_HLS10_ADD_LAYERSETS 5176 m_maxVpsDecPicBufferingMinus1[i][k][j] = MIN_INT; 5177 #else 4432 5178 m_maxVpsDecPicBufferingMinus1[i][k][j] = 0; 5179 #endif 4433 5180 } 4434 5181 } -
trunk/source/Lib/TLibCommon/TComSlice.h
r1039 r1066 1 /* The copyright in this software is being made available under the BSD1 /* The copyright in this software is being made available under the BSD 2 2 * License, included below. This software may be subject to other third party 3 3 * and contributor rights, including patent rights, and no such rights are … … 45 45 #include "TComRom.h" 46 46 #include "TComList.h" 47 47 #if H_MV_HLS10_GEN_FIX 48 #if H_MV 49 #include <ios> 50 #include <iostream> 51 #include <iomanip> 52 #endif 53 #endif 48 54 //! \ingroup TLibCommon 49 55 //! \{ … … 201 207 Bool m_frameOnlyConstraintFlag; 202 208 209 #if H_MV_HLS10_PTL 210 #if H_MV 211 Bool m_max12bitConstraintFlag; 212 Bool m_max10bitConstraintFlag; 213 Bool m_max8bitConstraintFlag; 214 Bool m_max422chromaConstraintFlag; 215 Bool m_max420chromaConstraintFlag; 216 Bool m_maxMonochromeConstraintFlag; 217 Bool m_intraConstraintFlag; 218 Bool m_onePictureOnlyConstraintFlag; 219 Bool m_lowerBitRateConstraintFlag; 220 Bool m_inbldFlag; 221 #endif 222 #endif 203 223 public: 204 224 ProfileTierLevel(); … … 230 250 Bool getFrameOnlyConstraintFlag() const { return m_frameOnlyConstraintFlag; } 231 251 Void setFrameOnlyConstraintFlag(Bool b) { m_frameOnlyConstraintFlag = b; } 252 253 #if H_MV 254 #if H_MV_HLS10_PTL 255 Void setMax12bitConstraintFlag( Bool flag ) { m_max12bitConstraintFlag = flag; } 256 Bool getMax12bitConstraintFlag( ) { return m_max12bitConstraintFlag; } 257 258 Void setMax10bitConstraintFlag( Bool flag ) { m_max10bitConstraintFlag = flag; } 259 Bool getMax10bitConstraintFlag( ) { return m_max10bitConstraintFlag; } 260 261 Void setMax8bitConstraintFlag( Bool flag ) { m_max8bitConstraintFlag = flag; } 262 Bool getMax8bitConstraintFlag( ) { return m_max8bitConstraintFlag; } 263 264 Void setMax422chromaConstraintFlag( Bool flag ) { m_max422chromaConstraintFlag = flag; } 265 Bool getMax422chromaConstraintFlag( ) { return m_max422chromaConstraintFlag; } 266 267 Void setMax420chromaConstraintFlag( Bool flag ) { m_max420chromaConstraintFlag = flag; } 268 Bool getMax420chromaConstraintFlag( ) { return m_max420chromaConstraintFlag; } 269 270 Void setMaxMonochromeConstraintFlag( Bool flag ) { m_maxMonochromeConstraintFlag = flag; } 271 Bool getMaxMonochromeConstraintFlag( ) { return m_maxMonochromeConstraintFlag; } 272 Void setIntraConstraintFlag( Bool flag ) { m_intraConstraintFlag = flag; } 273 Bool getIntraConstraintFlag( ) { return m_intraConstraintFlag; } 274 275 Void setOnePictureOnlyConstraintFlag( Bool flag ) { m_onePictureOnlyConstraintFlag = flag; } 276 Bool getOnePictureOnlyConstraintFlag( ) { return m_onePictureOnlyConstraintFlag; } 277 278 Void setLowerBitRateConstraintFlag( Bool flag ) { m_lowerBitRateConstraintFlag = flag; } 279 Bool getLowerBitRateConstraintFlag( ) { return m_lowerBitRateConstraintFlag; } 280 281 Void setInbldFlag( Bool flag ) { m_inbldFlag = flag; } 282 Bool getInbldFlag( ) { return m_inbldFlag; } 283 #endif 284 #if H_MV_HLS10_PTL_INFER_FIX 285 Bool getV2ConstraintsPresentFlag(); 286 Bool getInbldPresentFlag(); 287 Void copyV2ConstraintFlags( ProfileTierLevel* ptlRef ); 288 Void copyProfile( ProfileTierLevel* ptlRef ); 289 #endif 290 #endif 232 291 }; 233 292 … … 251 310 ProfileTierLevel* getSubLayerPTL(Int i) { return &m_subLayerPTL[i]; } 252 311 #if H_MV 312 #if H_MV_HLS10_PTL_INFER_FIX 313 Void inferGeneralValues ( Bool profilePresentFlag , Int k, TComPTL* refPTL );; 314 Void inferSubLayerValues( Int maxNumSubLayersMinus1, Int k, TComPTL* refPTL );; 315 #else 253 316 Void copyLevelFrom( TComPTL* source ); 317 #endif 254 318 #endif 255 319 }; … … 359 423 Void setCpbCntMinus1 ( Int layer, UInt value ) { m_HRD[layer].cpbCntMinus1 = value; } 360 424 UInt getCpbCntMinus1 ( Int layer ) { return m_HRD[layer].cpbCntMinus1; } 361 425 362 426 Void setBitRateValueMinus1 ( Int layer, Int cpbcnt, Int nalOrVcl, UInt value ) { m_HRD[layer].bitRateValueMinus1[cpbcnt][nalOrVcl] = value; } 363 427 UInt getBitRateValueMinus1 ( Int layer, Int cpbcnt, Int nalOrVcl ) { return m_HRD[layer].bitRateValueMinus1[cpbcnt][nalOrVcl]; } … … 434 498 Int getMatrixCoeffsVps( ) { return m_matrixCoeffsVps; } 435 499 }; 500 436 501 class TComVpsVuiBspHrdParameters 437 502 { 503 #if H_MV_HLS10_VPS_VUI_BSP 504 505 /* Not yet tested */ 506 private: 507 508 Int m_vpsNumAddHrdParams; 509 Bool* m_cprmsAddPresentFlag; 510 TComHRD* m_hrdParameters; 511 Int* m_numSubLayerHrdMinus1; 512 Int* m_numSignalledPartitioningSchemes; 513 Int** m_numPartitionsInSchemeMinus1; 514 515 Bool**** m_layerIncludedInPartitionFlag; 516 Int*** m_numBspSchedulesMinus1; 517 Int***** m_bspHrdIdx; 518 Int***** m_bspSchedIdx; 519 520 // Array sizes 521 Int m_offsetHrdParamIdx; 522 Int m_numHrdParam; 523 Int m_numOls; 524 TComVPS* m_vps; 525 public: 526 527 ~TComVpsVuiBspHrdParameters(); 528 529 Void createAfterVpsNumAddHrdParams( TComVPS* vps ); 530 Void createAfterNumSignalledPartitioningSchemes(Int h ); 531 Void createAfterNumPartitionsInSchemeMinus1(Int h, Int j); 532 Void createAfterNumBspSchedulesMinus1( Int h, Int i, Int t); 533 534 Void setVpsNumAddHrdParams( Int val ) { m_vpsNumAddHrdParams = val; } 535 Int getVpsNumAddHrdParams( ) { return m_vpsNumAddHrdParams; } 536 537 Void setCprmsAddPresentFlag( Int i, Bool flag ) { m_cprmsAddPresentFlag[i - m_offsetHrdParamIdx] = flag; } 538 Bool getCprmsAddPresentFlag( Int i ) { return m_cprmsAddPresentFlag[i - m_offsetHrdParamIdx]; } 539 540 Void setNumSubLayerHrdMinus1( Int i, Int val ) { m_numSubLayerHrdMinus1[i - m_offsetHrdParamIdx] = val; } 541 Int getNumSubLayerHrdMinus1( Int i ) { return m_numSubLayerHrdMinus1[i - m_offsetHrdParamIdx]; } 542 543 Void setNumSignalledPartitioningSchemes( Int h, Int val ) { m_numSignalledPartitioningSchemes[h] = val; } 544 Int getNumSignalledPartitioningSchemes( Int h ) { return m_numSignalledPartitioningSchemes[h]; } 545 546 Void setNumPartitionsInSchemeMinus1( Int h, Int j, Int val ) { m_numPartitionsInSchemeMinus1[h][j] = val; } 547 Int getNumPartitionsInSchemeMinus1( Int h, Int j ) { return m_numPartitionsInSchemeMinus1[h][j]; } 548 549 Void setLayerIncludedInPartitionFlag( Int h, Int j, Int k, Int r, Bool flag ) { m_layerIncludedInPartitionFlag[h][j][k][r] = flag; } 550 Bool getLayerIncludedInPartitionFlag( Int h, Int j, Int k, Int r ) { return m_layerIncludedInPartitionFlag[h][j][k][r]; } 551 552 Void setNumBspSchedulesMinus1( Int h, Int i, Int t, Int val ) { m_numBspSchedulesMinus1[h][i][t] = val; } 553 Int getNumBspSchedulesMinus1( Int h, Int i, Int t ) { return m_numBspSchedulesMinus1[h][i][t]; } 554 555 Void setBspHrdIdx( Int h, Int i, Int t, Int j, Int k, Int val ) { m_bspHrdIdx[h][i - m_offsetHrdParamIdx][t][j][k] = val; } 556 Int getBspHrdIdx( Int h, Int i, Int t, Int j, Int k ) { return m_bspHrdIdx[h][i - m_offsetHrdParamIdx][t][j][k]; } 557 558 Int getBspHrdIdxLen( TComVPS* vps ); 559 560 Void setBspSchedIdx( Int h, Int i, Int t, Int j, Int k, Int val ) { m_bspSchedIdx[h][i - m_offsetHrdParamIdx][t][j][k] = val; } 561 Int getBspSchedIdx( Int h, Int i, Int t, Int j, Int k ) { return m_bspSchedIdx[h][i - m_offsetHrdParamIdx][t][j][k]; } 562 563 Void setHrdParametermeters( Int k, TComHRD* val ) { *(m_hrdParameters + k ) = *val; }; 564 TComHRD* getHrdParametermeters( Int k ) { return m_hrdParameters + k; }; 565 #else 438 566 private: 439 567 Int m_vpsNumBspHrdParametersMinus1; … … 475 603 Void setHrdParametermeters( Int k, TComHRD* val ) { m_hrdParameters[k] = val; }; 476 604 TComHRD* getHrdParametermeters( Int k ) { return m_hrdParameters[k]; }; 605 #endif 477 606 }; 478 607 … … 501 630 Bool m_wppNotInUseFlag; 502 631 Bool m_wppInUseFlag [MAX_NUM_LAYERS]; 632 #if H_MV_HLS10_VPS_VUI 633 Bool m_singleLayerForNonIrapFlag; 634 Bool m_higherLayerIrapSkipFlag; 635 #endif 503 636 Bool m_ilpRestrictedRefLayersFlag; 504 637 Int m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS][MAX_NUM_LAYERS]; … … 574 707 Void setWppInUseFlag( Int i, Bool flag ) { m_wppInUseFlag[i] = flag; } 575 708 Bool getWppInUseFlag( Int i ) { return m_wppInUseFlag[i]; } 709 710 #if H_MV_HLS10_VPS_VUI 711 Void setSingleLayerForNonIrapFlag( Bool flag ) { m_singleLayerForNonIrapFlag = flag; } 712 Bool getSingleLayerForNonIrapFlag( ) { return m_singleLayerForNonIrapFlag; } 713 714 Void setHigherLayerIrapSkipFlag( Bool flag ) { m_higherLayerIrapSkipFlag = flag; } 715 Bool getHigherLayerIrapSkipFlag( ) { return m_higherLayerIrapSkipFlag; } 716 #endif 576 717 577 718 Void setIlpRestrictedRefLayersFlag( Bool flag ) { m_ilpRestrictedRefLayersFlag = flag; } … … 609 750 Int m_bitDepthVpsLumaMinus8; 610 751 Int m_bitDepthVpsChromaMinus8; 752 #if H_MV_HLS10_GEN_VSP_CONF_WIN 753 Bool m_conformanceWindowVpsFlag; 754 Int m_confWinVpsLeftOffset; 755 Int m_confWinVpsRightOffset; 756 Int m_confWinVpsTopOffset; 757 Int m_confWinVpsBottomOffset; 758 #endif 611 759 612 760 public: 761 762 #if H_MV_HLS10_GEN_VSP_CONF_WIN 763 TComRepFormat() 764 { 765 m_conformanceWindowVpsFlag = 0; 766 m_confWinVpsLeftOffset = 0; 767 m_confWinVpsRightOffset = 0; 768 m_confWinVpsTopOffset = 0; 769 m_confWinVpsBottomOffset = 0; 770 }; 771 #else 613 772 TComRepFormat() { }; 773 #endif 614 774 615 775 Void setChromaAndBitDepthVpsPresentFlag( Bool flag ) { m_chromaAndBitDepthVpsPresentFlag = flag; } … … 635 795 Void setBitDepthVpsChromaMinus8( Int val ) { m_bitDepthVpsChromaMinus8 = val; } 636 796 Int getBitDepthVpsChromaMinus8( ) { return m_bitDepthVpsChromaMinus8; } 797 798 #if H_MV_HLS10_GEN_VSP_CONF_WIN 799 Void setConformanceWindowVpsFlag( Bool flag ) { m_conformanceWindowVpsFlag = flag; } 800 Bool getConformanceWindowVpsFlag( ) { return m_conformanceWindowVpsFlag; } 801 802 Void setConfWinVpsLeftOffset( Int val ) { m_confWinVpsLeftOffset = val; } 803 Int getConfWinVpsLeftOffset( ) { return m_confWinVpsLeftOffset; } 804 805 Void setConfWinVpsRightOffset( Int val ) { m_confWinVpsRightOffset = val; } 806 Int getConfWinVpsRightOffset( ) { return m_confWinVpsRightOffset; } 807 808 Void setConfWinVpsTopOffset( Int val ) { m_confWinVpsTopOffset = val; } 809 Int getConfWinVpsTopOffset( ) { return m_confWinVpsTopOffset; } 810 811 Void setConfWinVpsBottomOffset( Int val ) { m_confWinVpsBottomOffset = val; } 812 Int getConfWinVpsBottomOffset( ) { return m_confWinVpsBottomOffset; } 813 #endif 637 814 }; 638 815 … … 657 834 658 835 Void setMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j, Int val ) { m_maxVpsDecPicBufferingMinus1[i][k][j] = val; } 836 #if H_MV_HLS10_ADD_LAYERSETS 837 Int getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { assert( m_maxVpsDecPicBufferingMinus1[i][k][j] >= 0 ); return m_maxVpsDecPicBufferingMinus1[i][k][j]; } 838 #else 659 839 Int getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { return m_maxVpsDecPicBufferingMinus1[i][k][j]; } 840 #endif 660 841 661 842 Void setMaxVpsNumReorderPics( Int i, Int j, Int val ) { m_maxVpsNumReorderPics[i][j] = val; } … … 672 853 #if H_MV 673 854 Bool m_vpsBaseLayerInternalFlag; 855 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL 856 Bool m_vpsBaseLayerAvailableFlag; 857 #endif // H_MV_HLS10_GEN 674 858 #endif 675 859 … … 741 925 Int m_layerSetIdxForOlsMinus1 [MAX_VPS_OUTPUTLAYER_SETS]; 742 926 Bool m_outputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1]; 927 #if H_MV_HLS10_PTL 928 Int m_profileTierLevelIdx [MAX_VPS_OUTPUTLAYER_SETS ][MAX_NUM_LAYERS]; 929 #else 743 930 Int m_profileLevelTierIdx [MAX_VPS_OUTPUTLAYER_SETS ]; 931 #endif 744 932 Bool m_altOutputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS]; 745 933 Bool m_repFormatIdxPresentFlag; … … 770 958 // VPS EXTENSION SEMANTICS VARIABLES 771 959 Int m_layerIdInVps [MAX_NUM_LAYERS ]; 960 #if H_MV_HLS10_REF_PRED_LAYERS 961 Int m_dependencyFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 962 #endif 772 963 773 964 Int m_numDirectRefLayers [MAX_NUM_LAYERS]; 965 #if H_MV_HLS10_REF_PRED_LAYERS 966 Int m_idDirectRefLayer [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 967 #else 774 968 Int m_refLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 969 #endif 775 970 776 971 Int m_numRefLayers [MAX_NUM_LAYER_IDS]; 777 Int m_numPredictedLayers [MAX_NUM_LAYERS]; 972 #if H_MV_HLS10_REF_PRED_LAYERS 973 Int m_idRefLayer [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 974 #endif 975 976 977 Int m_numPredictedLayers [MAX_NUM_LAYERS ]; 978 #if !H_MV_HLS10_REF_PRED_LAYERS 778 979 Int m_predictedLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS]; 980 #else 981 Int m_idPredictedLayer [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS]; 982 #endif 779 983 Int m_numIndependentLayers; 780 984 Int m_numLayersInTreePartition [MAX_NUM_LAYER_IDS]; 781 985 Int m_treePartitionLayerIdList [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS]; 986 #if H_MV_HLS10_REF_PRED_LAYERS 782 987 Bool m_recursiveRefLayerFlag [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS]; 783 988 #endif 784 989 Int m_viewIndex [MAX_NUM_LAYERS ]; 785 990 … … 788 993 std::vector< std::vector< Int> > m_layerSetLayerIdList; 789 994 995 #if H_MV_HLS10_NESSECARY_LAYER 996 Int m_numNecessaryLayers [MAX_VPS_OUTPUTLAYER_SETS]; 997 Bool m_necessaryLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYERS]; 998 #endif 790 999 791 1000 Int xGetDimBitOffset( Int j ); 1001 #if H_MV_HLS10_REF_PRED_LAYERS 792 1002 Void xSetRefLayerFlags( Int currLayerId ); 1003 #endif 793 1004 // VPS EXTENSION 2 SYNTAX ELEMENTS 794 1005 #if H_3D_ARP … … 870 1081 Void setVpsBaseLayerInternalFlag( Bool flag ) { m_vpsBaseLayerInternalFlag = flag; } 871 1082 Bool getVpsBaseLayerInternalFlag( ) { return m_vpsBaseLayerInternalFlag; } 1083 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL 1084 Void setVpsBaseLayerAvailableFlag( Bool flag ) { m_vpsBaseLayerAvailableFlag = flag; } 1085 Bool getVpsBaseLayerAvailableFlag( ) { return m_vpsBaseLayerAvailableFlag; } 1086 #endif 872 1087 #endif 873 1088 … … 877 1092 #if H_MV 878 1093 UInt getMaxSubLayersMinus1() { return m_uiMaxTLayers - 1; } // For consistency with draft spec 1094 #if H_MV_HLS10_GEN_FIX 1095 Void setMaxSubLayersMinus1(UInt val) { m_uiMaxTLayers = (val + 1); }; 1096 #endif 879 1097 UInt getMaxLayersMinus1() { return m_uiMaxLayersMinus1; }; 880 1098 Void setMaxLayersMinus1(UInt l) { m_uiMaxLayersMinus1 = l; } … … 916 1134 917 1135 #if H_MV 1136 #if H_MV_HLS10_PTL 1137 TComPTL* getPTL( Int idx = 0 ) { return &m_pcPTL[idx]; } 1138 #else 918 1139 TComPTL* getPTL( Int layerSet = 0 ) { return &m_pcPTL[layerSet]; } 1140 #endif 919 1141 #else 920 1142 TComPTL* getPTL() { return &m_pcPTL; } … … 996 1218 Void setLayerSetIdxForOlsMinus1( Int outLayerSetIdx, Int val ) { m_layerSetIdxForOlsMinus1[ outLayerSetIdx ] = val; } 997 1219 Int getLayerSetIdxForOlsMinus1( Int outLayerSetIdx ) { return m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]; } 1220 #if VPS_MISC_UPDATES 1221 Int getLayerSetIdxForOlsMinus1Len( Int outLayerSetIdx ) { return gCeilLog2( getNumLayerSets() ); } 1222 #endif 998 1223 999 1224 Void setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag ) { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; } … … 1002 1227 Bool inferOutputLayerFlag( Int i, Int j ); 1003 1228 1229 #if H_MV_HLS10_PTL 1230 Void setProfileTierLevelIdx( Int i, Int j, Int val ) { m_profileTierLevelIdx[ i ][ j ] = val; } 1231 Int getProfileTierLevelIdx( Int i, Int j ) { return m_profileTierLevelIdx[ i ][ j ]; } 1232 #if H_MV_HLS10_PTL_FIX 1233 Int inferProfileTierLevelIdx( Int i, Int j ); 1234 #endif 1235 #else 1004 1236 Void setProfileLevelTierIdx( Int outLayerSetIdx, Int val ) { m_profileLevelTierIdx[ outLayerSetIdx ] = val; } 1005 1237 Int getProfileLevelTierIdx( Int outLayerSetIdx ) { return m_profileLevelTierIdx[ outLayerSetIdx ]; } 1238 #endif 1006 1239 1007 1240 Void setAltOutputLayerFlag( Int i, Bool flag ) { m_altOutputLayerFlag[i] = flag; } … … 1033 1266 TComDpbSize* getDpbSize( ) { return m_dpbSize;} 1034 1267 1268 #if !H_MV_HLS10_ADD_LAYERSETS 1035 1269 Void inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder ); 1036 1270 #endif 1271 1037 1272 Void setPocLsbNotPresentFlag( Int i, Bool flag ) { m_pocLsbNotPresentFlag[i] = flag; } 1038 1273 Bool getPocLsbNotPresentFlag( Int i ) { return m_pocLsbNotPresentFlag[i]; } … … 1064 1299 1065 1300 Int getViewIndex ( Int layerIdInNuh ) { return getScalabilityId( getLayerIdInVps(layerIdInNuh), VIEW_ORDER_INDEX ); } 1301 #if H_MV_HLS10_AUX 1302 Int getAuxId ( Int layerIdInNuh ) { return getScalabilityId( getLayerIdInVps(layerIdInNuh), AUX_ID ); } 1303 Int getDependencyId ( Int layerIdInNuh ) { return getScalabilityId( getLayerIdInVps(layerIdInNuh), DEPENDENCY_ID ); } 1304 #endif 1066 1305 Int getNumViews(); 1067 1306 1307 #if H_MV_HLS10_REF_PRED_LAYERS 1308 Bool getDependencyFlag( Int i, Int j ) { return m_dependencyFlag[i][j]; } 1309 #endif 1068 1310 Int getNumDirectRefLayers( Int layerIdInNuh ) { return m_numDirectRefLayers[ layerIdInNuh ]; }; 1311 #if !H_MV_HLS10_REF_PRED_LAYERS 1069 1312 Int getRefLayerId ( Int layerIdInNuh, Int idx );; 1070 1313 #endif 1071 1314 Int getNumRefLayers ( Int i ) { return m_numRefLayers[i]; } 1072 1315 Int getNumPredictedLayers ( Int i ) { return m_numPredictedLayers[i]; } 1316 1317 #if !H_MV_HLS10_REF_PRED_LAYERS 1073 1318 Int getPredictedLayerId ( Int i, Int j ) { return m_predictedLayerId[i][j]; } 1319 #else 1320 Int getIdRefLayer ( Int i, Int j ) { assert( j >= 0 && j < getNumRefLayers ( i )); return m_idRefLayer [i][j]; } 1321 Int getIdPredictedLayer ( Int i, Int j ) { assert( j >= 0 && j < getNumPredictedLayers( i )); return m_idPredictedLayer[i][j]; } 1322 Int getIdDirectRefLayer ( Int i, Int j ) { assert( j >= 0 && j < getNumDirectRefLayers( i )); return m_idDirectRefLayer[i][j]; } 1323 #endif 1074 1324 Int getNumIndependentLayers ( ) { return m_numIndependentLayers; } 1075 1325 Int getNumLayersInTreePartition( Int i ) { return m_numLayersInTreePartition[i]; } … … 1078 1328 Int getNumLayerSets( ) { return getVpsNumLayerSetsMinus1() + 1 + getNumAddLayerSets(); }; 1079 1329 1330 #if H_MV_HLS10_ADD_LAYERSETS 1331 Int getFirstAddLayerSetIdx() { return getVpsNumLayerSetsMinus1() + 1; } 1332 Int getLastAddLayerSetIdx() { return getFirstAddLayerSetIdx() + getNumAddLayerSets() - 1; } 1333 #endif 1080 1334 Bool checkVPSExtensionSyntax(); 1081 1335 Int scalTypeToScalIdx ( ScalabilityType scalType ); 1082 1336 1337 #if H_MV_HLS10_PTL 1338 Int getProfileTierLevelIdxLen() { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); }; 1339 #else 1083 1340 Int getProfileLevelTierIdxLen() { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); }; 1341 #endif 1084 1342 Int getVpsRepFormatIdxLen() { return gCeilLog2( getVpsNumRepFormatsMinus1() + 1 ); }; 1085 1343 … … 1092 1350 Void deriveLayerSetLayerIdList(); 1093 1351 1352 #if H_MV_HLS10_ADD_LAYERSETS 1353 Int olsIdxToLsIdx( Int i ) { return ( i < getNumLayerSets() ) ? i : getLayerSetIdxForOlsMinus1( i ) + 1 ; }; 1354 #else 1094 1355 Int olsIdxToLsIdx( Int i ) { return ( i <= getVpsNumLayerSetsMinus1() ) ? i : getLayerSetIdxForOlsMinus1( i ) + 1 ; }; 1095 1356 #endif 1096 1357 Void initTargetLayerIdLists ( ); 1097 1358 Void deriveTargetLayerIdList ( Int i ); 1098 1099 1359 std::vector<Int> getTargetDecLayerIdList( Int targetDecLayerSetIdx ) { return m_targetDecLayerIdLists[targetDecLayerSetIdx]; }; 1100 1360 std::vector<Int> getTargetOptLayerIdList( Int targetOptLayerSetIdx ) { return m_targetOptLayerIdLists[targetOptLayerSetIdx]; }; … … 1103 1363 Int getOlsHighestOutputLayerId( Int i ) { return getTargetOptLayerIdList( i ).back(); }; 1104 1364 1365 #if H_MV_HLS10_ADD_LAYERSETS 1366 Void deriveAddLayerSetLayerIdList( Int i ); 1367 #endif 1368 #if H_MV_HLS10_NESSECARY_LAYER 1369 Void deriveNecessaryLayerFlags( Int olsIdx );; 1370 Int getNecessaryLayerFlag( Int i, Int j ) { AOF( i >= 0 && i < getNumOutputLayerSets() ); AOF( j >= 0 && j < getNumLayersInIdList( olsIdxToLsIdx( i ) ) ); return m_necessaryLayerFlag[i][j]; }; 1371 #endif 1372 1105 1373 Int getMaxSubLayersInLayerSetMinus1( Int i ); 1106 1374 Int getHighestLayerIdxPlus1Len( Int j ) { return gCeilLog2( getNumLayersInTreePartition( j ) + 1 ); }; 1107 1108 Bool getAltOutputLayerFlagVar( Int i );; 1375 Bool getAltOutputLayerFlagVar( Int i );; 1109 1376 1110 1377 // inference … … 1113 1380 1114 1381 // helpers 1382 #if !H_MV_HLS10_REF_PRED_LAYERS 1115 1383 Bool getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth = 0 ); 1384 #endif 1385 #if !H_MV_HLS10_MAXNUMPICS 1116 1386 Int getMaxNumPics( Int layerId ); 1387 #endif 1388 #if H_MV_HLS10_ADD_LAYERSETS 1389 Void printPTL(); 1390 Void printLayerDependencies(); 1391 #if H_MV_HLS10_AUX 1392 Void printScalabilityId();; 1393 #endif 1394 Void printLayerSets();; 1395 1396 1397 1398 template <typename T, typename S, typename U> Void xPrintArray( const Char* name, Int numElemDim1, U idx, S numElemDim2, T vec, Bool printNumber, Bool printIdx = true ) 1399 { 1400 std::cout << std::endl; 1401 for (Int j = 0; j < numElemDim1; j++ ) 1402 { 1403 std::cout << std::right << std::setw(27) << name; 1404 if (printIdx) 1405 { 1406 std::cout << "[" << std::right << std::setw(3) << idx[ j ] << "]" ; 1407 } 1408 else 1409 { 1410 std::cout << std::right << std::setw(5) << " "; 1411 } 1412 1413 if ( printNumber ) 1414 { 1415 std::cout << " (" << std::right << std::setw(3) << numElemDim2[j] << ")"; 1416 } 1417 else 1418 { 1419 std::cout << std::right << std::setw(6) << " "; 1420 } 1421 1422 std::cout << ":"; 1423 for (Int i = 0; i < numElemDim2[j]; i++) 1424 { 1425 std::cout << std::right << std::setw(3) << vec[j][i]; 1426 } 1427 std::cout << std::endl; 1428 } 1429 } 1430 1431 template <typename T> Void xPrintArray( const char* name, Int numElem, T vec, Bool printNumber ) 1432 { 1433 std::vector<Int> numElemDim2(1, numElem); 1434 std::vector<T> vec2 (1, vec ); 1435 std::vector<Int> idx2 (0); 1436 xPrintArray( name, 1, idx2, numElemDim2, vec2, printNumber, false ); 1437 } 1438 #endif 1439 1117 1440 1118 1441 /// VPS EXTENSION 2 SYNTAX ELEMENTS … … 1557 1880 TComVPS* m_pcVPS; 1558 1881 // SPS 1882 #if H_MV_HLS10_MULTILAYERSPS 1883 Int m_spsMaxSubLayersMinus1; 1884 Int m_spsExtOrMaxSubLayersMinus1; 1885 #endif 1559 1886 Bool m_spsExtensionPresentFlag; 1560 1887 … … 1574 1901 // SPS Extension 1575 1902 Bool m_interViewMvVertConstraintFlag; 1903 #if !H_MV_HLS10_PPS 1576 1904 Int m_numScaledRefLayerOffsets; 1577 1905 Int m_scaledRefLayerId [MAX_NUM_SCALED_REF_LAYERS]; … … 1580 1908 Int m_scaledRefLayerRightOffset [MAX_NUM_LAYERS]; 1581 1909 Int m_scaledRefLayerBottomOffset[MAX_NUM_LAYERS]; 1910 #endif 1582 1911 #endif 1583 1912 #if H_3D … … 1683 2012 #if H_MV 1684 2013 UInt getSpsMaxSubLayersMinus1() { return ( m_uiMaxTLayers - 1); } 2014 #if H_MV_HLS10_MULTILAYERSPS 2015 Void setSpsMaxSubLayersMinus1( UInt val ) { setMaxTLayers( val + 1 ); } 2016 #endif 1685 2017 #endif 1686 2018 … … 1715 2047 TComPTL* getPTL() { return &m_pcPTL; } 1716 2048 #if H_MV 2049 #if H_MV_HLS10_MULTILAYERSPS 2050 Void setSpsExtOrMaxSubLayersMinus1( Int val ) { m_spsExtOrMaxSubLayersMinus1 = val; } 2051 Int getSpsExtOrMaxSubLayersMinus1( ) { return m_spsExtOrMaxSubLayersMinus1; } 2052 Void inferSpsMaxSubLayersMinus1( Bool atPsActivation, TComVPS* vps ); 2053 2054 Bool getMultiLayerExtSpsFlag() { return ( getLayerId() != 0 && getSpsExtOrMaxSubLayersMinus1() == 7 ); } 2055 #endif 1717 2056 Void inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool encoder ); 1718 2057 … … 1753 2092 Bool getInterViewMvVertConstraintFlag() { return m_interViewMvVertConstraintFlag;} 1754 2093 2094 #if !H_MV_HLS10_PPS 1755 2095 Void setNumScaledRefLayerOffsets( Int val ) { m_numScaledRefLayerOffsets = val; } 1756 2096 Int getNumScaledRefLayerOffsets( ) { return m_numScaledRefLayerOffsets; } … … 1770 2110 Void setScaledRefLayerBottomOffset( Int j, Int val ) { m_scaledRefLayerBottomOffset[j] = val; } 1771 2111 Int getScaledRefLayerBottomOffset( Int j ) { return m_scaledRefLayerBottomOffset[j]; } 2112 #endif 1772 2113 // Inference 2114 1773 2115 Void inferRepFormat( TComVPS* vps, Int layerIdCurr ); 1774 2116 Void inferScalingList( TComSPS* spsSrc ); … … 2195 2537 2196 2538 Bool m_enableTMVPFlag; 2539 #if I0044_SLICE_TMVP 2540 Bool m_availableForTMVPRefFlag; 2541 #endif 2542 2197 2543 #if H_MV 2198 2544 std::vector<TComPic*>* m_refPicSetInterLayer0; … … 2255 2601 #if MTK_SINGLE_DEPTH_MODE_I0095 2256 2602 Bool m_bApplySingleDepthMode; 2603 #endif 2604 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 2605 Int *m_aICEnableCandidate; 2606 Int *m_aICEnableNum; 2257 2607 #endif 2258 2608 public: … … 2527 2877 Void setEnableTMVPFlag ( Bool b ) { m_enableTMVPFlag = b; } 2528 2878 Bool getEnableTMVPFlag () { return m_enableTMVPFlag;} 2879 #if I0044_SLICE_TMVP 2880 Void setAvailableForTMVPRefFlag ( Bool b ) { m_availableForTMVPRefFlag = b; } 2881 Bool getAvailableForTMVPRefFlag () { return m_availableForTMVPRefFlag;} 2882 #endif 2529 2883 2530 2884 #if H_MV … … 2567 2921 #endif 2568 2922 #endif 2923 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 2924 Void setICEnableCandidate( Int* ICEnableCandidate) { m_aICEnableCandidate = ICEnableCandidate; }; 2925 Void setICEnableNum( Int* ICEnableNum) { m_aICEnableNum = ICEnableNum; }; 2926 Void setICEnableCandidate( UInt layer, Int value) { m_aICEnableCandidate[ layer ] = value; }; 2927 Void setICEnableNum( UInt layer, Int value) { m_aICEnableNum[ layer ] = value; }; 2928 2929 Int getICEnableCandidate( Int layer){ return m_aICEnableCandidate[ layer ]; }; 2930 Int getICEnableNum( Int layer){ return m_aICEnableNum[ layer ]; }; 2931 #endif 2569 2932 #if H_MV 2570 2933 // Additional slice header syntax elements -
trunk/source/Lib/TLibCommon/TypeDef.h
r1039 r1066 123 123 // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121 124 124 // MTK_LOW_LATENCY_IC_ENCODING_H0086 Low-latency IC encoding in JCT3V-H0086 125 126 #define MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 1 // Remove the global variables used in JCT3V-H0086 127 125 128 126 129 #define SEC_IC_NEIGHBOR_CLIP_I0080 1 // Clipping of neighboring sample position, JCT3V-I0080 … … 225 228 #endif 226 229 230 #define H_3D_FIX_UNINIT 1 // Fix uninitialized flag 227 231 #define H_3D_INTER_SDC 1 // INTER SDC, Inter simplified depth coding 228 232 // LGE_INTER_SDC_E0156 Enable inter SDC for depth coding … … 251 255 252 256 #define H_3D_FCO 0 // Flexible coding order for 3D 257 #if H_3D_FCO 258 #define LGE_FCO_I0116 1 259 #endif 253 260 254 261 #define SCU_HS_FAST_INTRA_SDC_I0123 1 … … 275 282 #define SEC_HLS_CLEANUP_I0100 1 276 283 284 #define H_3D_FIX_64BIT_SHIFT 1 277 285 #endif // H_3D 278 286 … … 300 308 #define H_3D_VSO_RM_ASSERTIONS 0 // Output VSO assertions 301 309 #define H_3D_VSO_SYNTH_DIST_OUT 0 // Output of synthesized view distortion instead of depth distortion in encoder output 302 #define H_3D_VSO_FIX 0// This fix should be enabled after verification310 #define H_3D_VSO_FIX 1 // This fix should be enabled after verification 303 311 #endif 304 312 … … 381 389 ///////////////////////////////////////////////////////////////////////////////// 382 390 // TBD: Check if integration is necessary. 391 392 393 394 //Added by Qualcomm for HLS 395 #define DISCARDABLE_PIC_RPS 1 ///< JCT3V-G0131: Inter-layer RPS and temporal RPS should not contain picture with discardable_flag equal to 1 396 #define VPS_MISC_UPDATES 1 ///< Misc updates:JCT3V-0240, 397 #define NON_REF_NAL_TYPE_DISCARDABLE 1 ///< JCT3V-G0031: If discardable picture is a non-IRAP, it must be a non-referenced sub-layer picture 398 #define INFERENCE_POC_MSB_VAL_PRESENT 1 ///< JCT3V-H0042: poc_msb_val_present_flag shall be equal to 0 when slice_header_extension_length is (inferred to be ) equal to 0 399 #define INFERENCE_POC_RESET_INFO_PRESENT 1 ///< JCT3V-H0042: Infer the value of poc_reset_info_present_flag to be equal to 0 when no pps extension / pps extension for multilayer. 400 #define I0044_SLICE_TMVP 1 ///< JCT3V-I0044: Regarding slice_temporal_mvp_enabled_flag 401 #define I0045_BR_PR_ADD_LAYER_SET 1 ///< JCT3V-I0045: Signalling of bit-rate and picture rate for additional layer set 402 #define I0045_VPS_VUI_VST_PARAMS 1 ///< JCT3V-I0045: Related to signalling of VST parameters of the base layer. 403 404 405 #define H_MV_HLS10_GEN 0 // General changes (not tested) 406 407 #define H_MV_HLS10_AUX 1 // Auxiliary pictures 408 #define H_MV_HLS10_GEN_FIX 1 409 #define H_MV_FIX_LOOP_GOPSIZE 1 410 #define H_MV_FIX_SUB_LAYERS_MAX_MINUS1 1 411 412 #define H_MV_HLS10_GEN_VSP_CONF_WIN 1 // VPS conformance window 413 #define H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL 1 // vps_base_layer_available 414 #define H_MV_HLS10_REF_PRED_LAYERS 1 // reference and predicted layer derivation 415 #define H_MV_HLS10_NESSECARY_LAYER 1 // necessary layers 416 #define H_MV_HLS10_ADD_LAYERSETS 1 // additional layer sets 417 #define H_MV_HLS10_DBP_SIZE 1 // dpb size syntax structure 418 #define H_MV_HLS10_MAXNUMPICS 1 // constraint on number of pictures in rps 419 #define H_MV_HLS10_PTL 1 // profile tier level 420 #define H_MV_HLS10_PTL_FIX 1 // profile tier level fix 421 #define H_MV_HLS10_PTL_INBL_FIX 1 // profile tier level fix 422 #define H_MV_HLS10_PTL_INFER_FIX 1 // fix inference ptl 423 #define H_MV_HLS10_MULTILAYERSPS 1 // multilayer SPS extension 424 #define H_MV_HLS10_VPS_VUI 1 // vsp vui 425 #define H_MV_HLS10_VPS_VUI_BSP 1 // vsp vui bsp 426 #define H_MV_HLS10_PPS 1 // PPS modifications 427 428 #define H_MV_HLS10_VPS_VUI_BSP_STORE 0 // Currently bsp vui bsp hrd parameters are not stored, some dynamic memory allocation with upper bounds is required. 429 430 383 431 #define H_MV_HLS7_GEN 0 // General changes (not tested) 432 384 433 385 434 // POC … … 457 506 #define MAX_NESTING_NUM_LAYER 64 458 507 508 #if H_MV_HLS10_VPS_VUI_BSP 509 #define MAX_VPS_NUM_HRD_PARAMETERS 1024 510 #define MAX_NUM_SUB_LAYERS 7 511 #define MAX_NUM_SIGNALLED_PARTITIONING_SCHEMES 16 512 #else 459 513 #define MAX_VPS_NUM_HRD_PARAMETERS 1 514 #endif 515 460 516 #define MAX_VPS_OP_SETS_PLUS1 1024 461 517 #if H_MV 518 #if H_MV_HLS10_ADD_LAYERSETS 519 #define MAX_VPS_NUM_ADD_LAYER_SETS 1024 520 #endif 462 521 #define MAX_VPS_NUH_LAYER_ID_PLUS1 63 463 522 #define MAX_NUM_SCALABILITY_TYPES 16 … … 474 533 #define MAX_VPS_PROFILE_TIER_LEVEL 64 475 534 #define MAX_VPS_ADD_OUTPUT_LAYER_SETS 1024 535 #if H_MV_HLS10_ADD_LAYERSETS 536 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 + MAX_VPS_OP_SETS_PLUS1 ) 537 #else 476 538 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 ) 539 #endif 477 540 #define MAX_NUM_VIDEO_SIGNAL_INFO 16 478 541 #define MAX_NUM_SCALED_REF_LAYERS MAX_NUM_LAYERS-1 542 #if !H_MV_HLS10_VPS_VUI_BSP 479 543 #define MAX_NUM_BSP_HRD_PARAMETERS 100 ///< Maximum value is actually not specified 480 544 #define MAX_NUM_BITSTREAM_PARTITIONS 100 ///< Maximum value is actually not specified 481 545 #define MAX_NUM_BSP_SCHED_COMBINATION 100 ///< Maximum value is actually not specified 482 546 #define MAX_SUB_STREAMS 1024 547 #endif 483 548 #else 484 549 #define MAX_NUM_LAYER_IDS 64 … … 951 1016 MAINSTILLPICTURE = 3, 952 1017 #if H_MV 1018 #if H_MV_HLS10_PTL 1019 MULTIVIEWMAIN = 6, 1020 #if H_3D 1021 MAIN3D = 8, 1022 #endif 1023 #else 953 1024 MAINSTEREO = 4, 954 1025 MAINMULTIVIEW = 5, 955 1026 #if H_3D 956 1027 MAIN3D = 6, 1028 #endif 957 1029 #endif 958 1030 #endif … … 997 1069 #endif 998 1070 VIEW_ORDER_INDEX = 1, 1071 #if H_MV_HLS10_AUX 1072 DEPENDENCY_ID = 2, 1073 AUX_ID = 3, 1074 #endif 999 1075 }; 1000 1076 #endif
Note: See TracChangeset for help on using the changeset viewer.