Changeset 1131 in 3DVCSoftware for branches/HTM-13.0-dev0/source/App/TAppEncoder/TAppEncTop.cpp
- Timestamp:
- 18 Feb 2015, 17:39:40 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-13.0-dev0/source/App/TAppEncoder/TAppEncTop.cpp
r1124 r1131 140 140 xSetVPSVUI ( vps ); 141 141 #if H_3D 142 #if !HHI_TOOL_PARAMETERS_I2_J0107143 xSetVPSExtension2 ( vps );144 #endif145 142 m_ivPicLists.setVPS ( &vps ); 146 143 xDeriveDltArray ( vps, dlt ); … … 176 173 } 177 174 178 #if HHI_TOOL_PARAMETERS_I2_J0107179 175 #if H_3D 180 176 // Set 3d tool parameters … … 203 199 } 204 200 } 205 #endif206 201 #endif 207 202 … … 248 243 m_cTEncTop.setDWeight ( isDepth ? m_iDWeight : 0 ); 249 244 #endif // H_3D_VSO 250 #if !HHI_TOOL_PARAMETERS_I2_J0107251 #if H_3D_SPIVMP252 m_cTEncTop.setSubPULog2Size (( isDepth || 0==layerIdInVps ) ? 0 : m_iSubPULog2Size );253 m_cTEncTop.setSubPUMPILog2Size ( !isDepth ? 0 : m_iSubPUMPILog2Size );254 #endif255 #endif256 245 #if H_3D_IC 257 246 m_cTEncTop.setUseIC ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC ); … … 260 249 261 250 262 #if HHI_TOOL_PARAMETERS_I2_J0107263 251 m_cTEncTop.setUseDMM ( isDepth ? m_intraWedgeFlag : false ); 264 252 m_cTEncTop.setUseSDC ( isDepth ? m_intraSdcFlag : false ); 265 253 m_cTEncTop.setUseDLT ( isDepth ? m_useDLT : false ); 266 254 m_cTEncTop.setUseQTL ( isDepth ? m_bUseQTL : false ); 267 #else 268 //========== Depth intra modes ========== 269 #if H_3D_DIM 270 m_cTEncTop.setUseDMM ( isDepth ? m_useDMM : false ); 271 #if !HHI_TOOL_PARAMETERS_I2_J0107 272 #if H_3D_FCO 273 m_cTEncTop.setUseIVP ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_useIVP : false ); 274 #else 275 m_cTEncTop.setUseIVP ( isDepth ? m_useIVP : false ); 276 #endif 277 #endif 278 m_cTEncTop.setUseSDC ( isDepth ? m_useSDC : false ); 279 m_cTEncTop.setUseDLT ( isDepth ? m_useDLT : false ); 280 #endif 281 282 283 #if H_3D_SINGLE_DEPTH 284 m_cTEncTop.setUseSingleDepthMode ( isDepth ? m_useSingleDepthMode : false ); 285 #endif 286 #if H_3D_QTLPC 287 m_cTEncTop.setUseQTL ( isDepth ? m_bUseQTL : false ); 288 #endif 289 //====== Depth Inter SDC ========= 290 #if H_3D_INTER_SDC 291 m_cTEncTop.setInterSDCEnable ( isDepth ? m_bDepthInterSDCFlag : false ); 292 #endif 293 #if H_3D_DBBP 294 m_cTEncTop.setUseDBBP ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_bUseDBBP ); 295 #endif 296 #if H_3D_IV_MERGE 297 #if H_3D_FCO 298 m_cTEncTop.setUseMPI ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_bMPIFlag : false ); 299 #else 300 m_cTEncTop.setUseMPI ( isDepth ? m_bMPIFlag : false ); 301 #endif 302 #endif 303 #endif 304 305 306 #if HHI_TOOL_PARAMETERS_I2_J0107 255 256 307 257 m_cTEncTop.setSps3dExtension ( m_sps3dExtension ); 308 #endif309 258 #endif // H_3D 310 259 … … 937 886 #endif 938 887 939 #if !LGE_DDD_REMOVAL_J0042_J0030940 #if H_3D_DDD941 m_acTEncTopList[ layer ]->getSliceEncoder()->setDDDPar( m_cCameraData.getCodedScale()[0][ m_acTEncTopList[layer]->getViewIndex() ],942 m_cCameraData.getCodedOffset()[0][ m_acTEncTopList[layer]->getViewIndex() ],943 m_cCameraData.getCamParsCodedPrecision() );944 #endif945 #endif946 888 Int iNumEncoded = 0; 947 889 … … 1374 1316 } 1375 1317 1376 #if H_MV_FIX_NUM_VIEWS1377 1318 vps.initNumViews(); 1378 #endif1379 1319 Int maxViewId = xGetMax( m_viewId ); 1380 1320 … … 1433 1373 vps.setDefaultDirectDependencyType( defaultDirectDependencyFlag ? defaultDirectDependencyType : -1 ); 1434 1374 1435 #if HHI_DEPENDENCY_SIGNALLING_I1_J01071436 1375 vps.setRefLayers(); 1437 #endif1438 1376 1439 1377 // Max sub layers, + presence flag … … 1454 1392 vps.setVpsSubLayersMaxMinus1PresentFlag( subLayersMaxMinus1PresentFlag ); 1455 1393 1456 #if HHI_DEPENDENCY_SIGNALLING_I1_J01071457 1394 // Max temporal id for inter layer reference pictures 1458 1395 for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++) … … 1462 1399 { 1463 1400 Int curLayerIdInNuh = vps.getLayerIdInNuh( curLayerIdInVps ); 1401 Int maxTid = -1; 1464 1402 #if H_3D 1465 Int maxTid = -1;1466 1403 if ( vps.getDirectDependencyFlag( curLayerIdInVps, refLayerIdInVps ) ) 1467 1404 { … … 1491 1428 else 1492 1429 { 1493 #if HHI_TOOL_PARAMETERS_I2_J01071494 1430 if( m_depthFlag[ curLayerIdInVps ] && ( m_mpiFlag|| m_qtPredFlag || m_intraContourFlag ) ) 1495 #else1496 if( m_depthFlag[ curLayerIdInVps ] && ( m_bMPIFlag || m_bLimQtPredFlag || m_useIVP ) )1497 #endif1498 1431 { 1499 1432 Int nuhLayerIdTex = vps.getLayerIdInNuh( vps.getViewIndex( curLayerIdInNuh ), false ); … … 1503 1436 } 1504 1437 } 1505 #if HHI_TOOL_PARAMETERS_I2_J01071506 1438 if( !m_depthFlag[ curLayerIdInVps ] && vps.getNumRefListLayers( curLayerIdInNuh) > 0 && ( m_depthRefinementFlag || m_viewSynthesisPredFlag || m_depthBasedBlkPartFlag ) ) 1507 #else1508 if( !m_depthFlag[ curLayerIdInVps ] && vps.getNumRefListLayers( curLayerIdInNuh) > 0 && ( m_depthRefinementFlag || m_viewSynthesisPredFlag || m_bUseDBBP) )1509 #endif1510 1439 { 1511 1440 Int maxPresentTid =-1; … … 1546 1475 } 1547 1476 vps.setMaxTidRefPresentFlag( maxTidRefPresentFlag ); 1548 #else1549 // Max temporal id for inter layer reference pictures + presence flag1550 Bool maxTidRefPresentFlag = false;1551 for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++)1552 {1553 for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++)1554 {1555 Int maxTid = -1;1556 for( Int i = 0; i < ( getGOPSize() + 1); i++ )1557 {1558 GOPEntry geCur = m_GOPListMvc[curLayerIdInVps][( i < getGOPSize() ? i : MAX_GOP )];1559 GOPEntry geRef = m_GOPListMvc[refLayerIdInVps][( i < getGOPSize() ? i : MAX_GOP )];1560 for (Int j = 0; j < geCur.m_numActiveRefLayerPics; j++)1561 {1562 if ( m_directRefLayers[ curLayerIdInVps ][ geCur.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps )1563 {1564 Bool refAlwaysIntra = ( i == getGOPSize() ) && ( m_iIntraPeriod[ curLayerIdInVps ] % m_iIntraPeriod[ refLayerIdInVps ] == 0 );1565 Bool refLayerZero = ( i == getGOPSize() ) && ( refLayerIdInVps == 0 );1566 maxTid = std::max( maxTid, ( refAlwaysIntra || refLayerZero ) ? 0 : geRef.m_temporalId );1567 }1568 }1569 }1570 vps.setMaxTidIlRefPicsPlus1( refLayerIdInVps, curLayerIdInVps, maxTid + 1 );1571 maxTidRefPresentFlag = maxTidRefPresentFlag || ( maxTid != 6 );1572 }1573 }1574 1575 vps.setMaxTidRefPresentFlag( maxTidRefPresentFlag );1576 #endif1577 1477 1578 1478 … … 1603 1503 for ( Int layerIdInVps = 1; layerIdInVps < m_numberOfLayers && allRefLayersActiveFlag; layerIdInVps++) 1604 1504 { 1605 #if HHI_DEPENDENCY_SIGNALLING_I1_J01071606 1505 Int layerIdInNuh = vps.getLayerIdInNuh( layerIdInVps ); 1607 #endif1608 1506 for( Int i = 0; i < ( getGOPSize() + 1) && allRefLayersActiveFlag; i++ ) 1609 1507 { … … 1612 1510 1613 1511 // check if all reference layers when allRefLayerActiveFlag is equal to 1 are reference layer pictures specified in the gop entry 1614 #if HHI_DEPENDENCY_SIGNALLING_I1_J01071615 1512 #if H_3D 1616 1513 for (Int k = 0; k < vps.getNumRefListLayers( layerIdInNuh ) && allRefLayersActiveFlag; k++ ) … … 1622 1519 Int refLayerIdInVps = vps.getLayerIdInVps( vps.getIdDirectRefLayer( layerIdInNuh , k ) ); 1623 1520 #endif 1624 #else1625 for (Int k = 0; k < m_directRefLayers[ layerIdInVps].size() && allRefLayersActiveFlag; k++ )1626 {1627 Int refLayerIdInVps = vps.getLayerIdInVps( m_directRefLayers[ layerIdInVps ][ k ] );1628 #endif1629 #if H_MV_FIX_REF_LAYER_PIC_FLAG1630 1521 if ( vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId && ( tId == 0 || vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId ) ) 1631 #else1632 if ( vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId && vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId )1633 #endif1634 1522 { 1635 1523 Bool gopEntryFoundFlag = false; … … 1648 1536 { 1649 1537 Bool referenceLayerFoundFlag = false; 1650 #if HHI_DEPENDENCY_SIGNALLING_I1_J01071651 1538 #if H_3D 1652 1539 for (Int k = 0; k < vps.getNumRefListLayers( layerIdInNuh ); k++ ) … … 1658 1545 Int refLayerIdInVps = vps.getLayerIdInVps( vps.getIdDirectRefLayer( layerIdInNuh, k) ); 1659 1546 #endif 1660 #else1661 for (Int k = 0; k < m_directRefLayers[ layerIdInVps].size(); k++ )1662 {1663 Int refLayerIdInVps = vps.getLayerIdInVps( m_directRefLayers[ layerIdInVps ][ k ] );1664 #endif1665 #if H_MV_FIX_REF_LAYER_PIC_FLAG1666 1547 if ( vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId && ( tId == 0 || vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId ) ) 1667 #else1668 if ( vps.getMaxTidIlRefPicsPlus1(refLayerIdInVps,layerIdInVps) > tId && vps.getSubLayersVpsMaxMinus1(refLayerIdInVps) >= tId )1669 #endif1670 1548 { 1671 1549 referenceLayerFoundFlag = referenceLayerFoundFlag || ( ge.m_interLayerPredLayerIdc[l] == k ); … … 1679 1557 1680 1558 vps.setAllRefLayersActiveFlag( allRefLayersActiveFlag ); 1681 #if !HHI_DEPENDENCY_SIGNALLING_I1_J01071682 vps.setRefLayers();1683 #endif1684 1559 }; 1685 1560 … … 2210 2085 2211 2086 #if H_3D 2212 #if HHI_TOOL_PARAMETERS_I2_J01072213 #else2214 Void TAppEncTop::xSetVPSExtension2( TComVPS& vps )2215 {2216 for ( Int layer = 0; layer <= vps.getMaxLayersMinus1(); layer++ )2217 {2218 Bool isDepth = ( vps.getDepthId( layer ) == 1 ) ;2219 Bool isLayerZero = ( layer == 0 );2220 #if H_3D_FCO2221 Bool isDepthFirst = (layer > 1 ? true : false);2222 #endif2223 2224 #if H_3D_ARP2225 vps.setUseAdvRP ( layer, ( isDepth || isLayerZero || !vps.getNumDirectRefLayers(layer) ) ? 0 : m_uiUseAdvResPred );2226 vps.setARPStepNum ( layer, ( isDepth || isLayerZero || !vps.getNumDirectRefLayers(layer) ) ? 1 : H_3D_ARP_WFNR );2227 #endif2228 #if H_3D_SPIVMP2229 if( isDepth )2230 {2231 vps.setSubPULog2Size ( layer, (layer != 1) ? 6: 0 );2232 vps.setSubPUMPILog2Size ( layer, (!isLayerZero) ? m_iSubPUMPILog2Size: 0 );2233 }2234 else2235 {2236 vps.setSubPULog2Size ( layer, (!isLayerZero) ? m_iSubPULog2Size: 0 );2237 }2238 #endif2239 2240 #if H_3D_DIM2241 vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useSDC || m_useDLT ) );2242 #if H_3D_FCO2243 vps.setIVPFlag ( layer, isDepth && !isLayerZero && m_useIVP && !isDepthFirst );2244 #else2245 vps.setIVPFlag ( layer, isDepth && !isLayerZero && m_useIVP );2246 #endif2247 #endif2248 2249 #if H_3D_IV_MERGE2250 if( !vps.getNumDirectRefLayers(layer) )2251 {2252 vps.setIvMvPredFlag (layer, false);2253 vps.setIvMvScalingFlag (layer, false);2254 }2255 else2256 {2257 if( isDepth )2258 {2259 vps.setIvMvPredFlag ( layer, (layer != 1) && m_ivMvPredFlag[1] );2260 }2261 else2262 {2263 vps.setIvMvPredFlag ( layer, !isLayerZero && m_ivMvPredFlag[0] );2264 }2265 vps.setIvMvScalingFlag (layer, m_ivMvScalingFlag);2266 }2267 #endif2268 #if H_3D_QTLPC2269 #if H_3D_FCO2270 vps.setLimQtPredFlag ( layer, isDepth && m_bLimQtPredFlag && !isDepthFirst );2271 #else2272 vps.setLimQtPredFlag ( layer, isDepth && m_bLimQtPredFlag );2273 #endif2274 #endif2275 #if H_3D_NBDV_REF2276 vps.setDepthRefinementFlag ( layer, !isLayerZero && !isDepth && m_depthRefinementFlag );2277 #endif2278 #if H_3D_VSP2279 vps.setViewSynthesisPredFlag( layer, !isLayerZero && !isDepth && vps.getNumDirectRefLayers(layer) && m_viewSynthesisPredFlag );2280 #endif2281 #if H_3D_DBBP2282 vps.setUseDBBP ( layer, !isLayerZero && !isDepth && m_bUseDBBP );2283 #endif2284 #if H_3D_INTER_SDC2285 vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag );2286 #endif2287 #if MTK_SINGLE_DEPTH_VPS_FLAG_J00602288 vps.setSingleDepthModeFlag( layer, !isLayerZero && isDepth && m_useSingleDepthMode );2289 #endif2290 #if H_3D_IV_MERGE2291 #if H_3D_FCO2292 vps.setMPIFlag( layer, !isLayerZero && isDepth && m_bMPIFlag && !isDepthFirst );2293 #else2294 vps.setMPIFlag( layer, !isLayerZero && isDepth && m_bMPIFlag );2295 #endif2296 #endif2297 }2298 }2299 #endif2300 2087 2301 2088 Void TAppEncTop::xDeriveDltArray( TComVPS& vps, TComDLT& dlt )
Note: See TracChangeset for help on using the changeset viewer.