Changeset 773 in 3DVCSoftware for trunk/source/App/TAppEncoder/TAppEncTop.cpp
- Timestamp:
- 16 Jan 2014, 09:56:13 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/App/TAppEncoder/TAppEncTop.cpp
r758 r773 76 76 #endif 77 77 78 #if CAM_HLS_F0136_F0045_F008278 #if H_3D 79 79 vps.createCamPars(m_iNumberOfViews); 80 #endif81 82 #if DLT_DIFF_CODING_IN_PPS83 80 TComDLT& dlt = m_dlt; 84 81 #endif … … 134 131 xSetVPSExtension2 ( vps ); 135 132 m_ivPicLists.setVPS ( &vps ); 136 #if DLT_DIFF_CODING_IN_PPS137 133 xDeriveDltArray ( vps, dlt ); 138 #endif139 134 #endif 140 135 … … 160 155 //====== Camera Parameters ========= 161 156 m_cTEncTop.setCameraParameters ( &m_cCameraData ); 162 #if QC_DEPTH_IV_MRG_F0125163 157 m_cTEncTop.setCamParPrecision ( m_cCameraData.getCamParsCodedPrecision () ); 164 158 m_cTEncTop.setCamParInSliceHeader ( m_cCameraData.getVaryingCameraParameters() ); 165 159 m_cTEncTop.setCodedScale ( m_cCameraData.getCodedScale () ); 166 160 m_cTEncTop.setCodedOffset ( m_cCameraData.getCodedOffset () ); 167 #else168 m_cTEncTop.setCamParPrecision ( isDepth ? false : m_cCameraData.getCamParsCodedPrecision () );169 m_cTEncTop.setCamParInSliceHeader ( isDepth ? 0 : m_cCameraData.getVaryingCameraParameters() );170 m_cTEncTop.setCodedScale ( isDepth ? 0 : m_cCameraData.getCodedScale () );171 m_cTEncTop.setCodedOffset ( isDepth ? 0 : m_cCameraData.getCodedOffset () );172 #endif173 161 #if H_3D_VSO 174 162 //====== VSO ========= … … 194 182 m_cTEncTop.setARPStepNum ( ( isDepth || 0==layerIdInVps ) ? 1 : H_3D_ARP_WFNR ); 195 183 #endif 196 #if MTK_SPIVMP_F0110184 #if H_3D_SPIVMP 197 185 m_cTEncTop.setSubPULog2Size (( isDepth || 0==layerIdInVps ) ? 0 : m_iSubPULog2Size ); 198 186 #endif 199 187 #if H_3D_IC 200 #if SEC_ONLY_TEXTURE_IC_F0151201 188 m_cTEncTop.setUseIC ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC ); 202 #else203 m_cTEncTop.setUseIC ( vps.getViewIndex( layerId ) == 0 ? false : m_abUseIC[isDepth ? 1 : 0] );204 #endif205 189 #endif 206 190 //========== Depth intra modes ========== 207 191 #if H_3D_DIM 208 192 m_cTEncTop.setUseDMM ( isDepth ? m_useDMM : false ); 209 #if !SEC_DMM3_RBC_F0147210 m_cTEncTop.setUseRBC ( isDepth ? m_useRBC : false );211 #endif212 193 m_cTEncTop.setUseSDC ( isDepth ? m_useSDC : false ); 213 194 m_cTEncTop.setUseDLT ( isDepth ? m_useDLT : false ); … … 221 202 m_cTEncTop.setInterSDCEnable ( isDepth ? m_bDepthInterSDCFlag : false ); 222 203 #endif 223 #if SEC_MPI_ENABLING_MERGE_F0150204 #if H_3D_IV_MERGE 224 205 m_cTEncTop.setUseMPI ( isDepth ? m_bMPIFlag : false ); 225 206 #endif … … 227 208 228 209 m_cTEncTop.setIvPicLists ( &m_ivPicLists ); 229 // H_MV210 #endif // H_MV 230 211 m_cTEncTop.setVPS(&vps); 231 212 232 #if DLT_DIFF_CODING_IN_PPS213 #if H_3D 233 214 m_cTEncTop.setDLT(&dlt); 234 215 #endif … … 249 230 250 231 //====== Coding Structure ======== 251 #if H_MV _LAYER_WISE_STARTUP232 #if H_MV 252 233 m_cTEncTop.setIntraPeriod ( m_iIntraPeriod[ layerIdInVps ] ); 253 234 #else … … 796 777 Void TAppEncTop::xInitLib(Bool isFieldCoding) 797 778 { 798 #if CAM_HLS_F0136_F0045_F0082779 #if H_3D 799 780 for ( Int viewIndex = 0; viewIndex < m_vps.getNumViews(); viewIndex++ ) 800 781 { … … 1270 1251 1271 1252 #if H_3D_DIM_DLT 1272 #if DLT_DIFF_CODING_IN_PPS1273 1253 Void TAppEncTop::xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps, TComDLT* dlt) 1274 #else1275 Void TAppEncTop::xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps)1276 #endif1277 1254 { 1278 1255 TComPicYuv* pcDepthPicYuvOrg = new TComPicYuv; … … 1334 1311 if( uiNumFrames == 0 || numBitsForValue(iNumDepthValues) == g_bitDepthY ) 1335 1312 { 1336 #if DLT_DIFF_CODING_IN_PPS1337 1313 dlt->setUseDLTFlag(layer, false); 1338 #else1339 // don't use DLT1340 vps->setUseDLTFlag(layer, false);1341 #endif1342 1314 } 1343 1315 1344 1316 // assign LUT 1345 #if DLT_DIFF_CODING_IN_PPS1346 1317 if( dlt->getUseDLTFlag(layer) ) 1318 { 1347 1319 dlt->setDepthLUTs(layer, aiIdx2DepthValue, iNumDepthValues); 1348 #else 1349 if( vps->getUseDLTFlag(layer) ) 1350 vps->setDepthLUTs(layer, aiIdx2DepthValue, iNumDepthValues); 1351 #endif 1320 } 1352 1321 1353 1322 // free temporary memory … … 1372 1341 Int maxViewId = xGetMax( m_viewId ); 1373 1342 1374 #if H_MV_6_PS_O0109_221375 1343 Int viewIdLen = gCeilLog2( maxViewId + 1 ); 1376 1344 const Int maxViewIdLen = ( 1 << 4 ) - 1; 1377 1345 assert( viewIdLen <= maxViewIdLen ); 1378 1346 vps.setViewIdLen( viewIdLen ); 1379 #else1380 Int viewIdLenMinus1 = std::max( gCeilLog2( maxViewId + 1 ) - 1, 0 ) ;1381 const Int maxViewIdLenMinus1 = ( 1 << 4 ) - 1;1382 assert( viewIdLenMinus1 <= maxViewIdLenMinus1 );1383 vps.setViewIdLenMinus1( viewIdLenMinus1 );1384 #endif1385 1347 for (Int i = 0; i < m_iNumberOfViews; i++) 1386 1348 { … … 1403 1365 } 1404 1366 1405 #if H_MV_6_PS_O0096_211406 1367 Int defaultDirectDependencyType = -1; 1407 1368 Bool defaultDirectDependencyFlag = true; 1408 #endif1409 1369 for( Int depLayer = 1; depLayer < m_numberOfLayers; depLayer++ ) 1410 1370 { … … 1415 1375 Int refLayer = m_directRefLayers[depLayer][i]; 1416 1376 vps.setDirectDependencyFlag( depLayer, refLayer, true); 1417 #if H_MV_6_PS_O0096_211418 1377 Int curDirectDependencyType = m_dependencyTypes[depLayer][i]; 1419 1378 … … 1428 1387 1429 1388 vps.setDirectDependencyType( depLayer, refLayer, curDirectDependencyType); 1430 #else 1431 vps.setDirectDependencyType( depLayer, refLayer,m_dependencyTypes[depLayer][i]); 1432 #endif 1433 } 1434 } 1435 1436 #if H_MV_6_PS_O0096_21 1389 } 1390 } 1391 1437 1392 vps.setDefaultDirectDependencyFlag( defaultDirectDependencyFlag ); 1438 1393 vps.setDefaultDirectDependencyType( defaultDirectDependencyFlag ? defaultDirectDependencyType : -1 ); 1439 #endif 1440 1441 #if H_MV_6_ILDSD_O0120_26 1394 1442 1395 // Max sub layers, + presence flag 1443 1396 Bool subLayersMaxMinus1PresentFlag = false; … … 1464 1417 1465 1418 vps.setVpsSubLayersMaxMinus1PresentFlag( subLayersMaxMinus1PresentFlag ); 1466 #endif1467 1419 1468 1420 … … 1471 1423 for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++) 1472 1424 { 1473 #if !H_MV_6_ILDDS_O0225_301474 Int maxTid = -1;1475 #endif1476 1425 for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++) 1477 1426 { 1478 #if H_MV_6_ILDDS_O0225_301479 1427 Int maxTid = -1; 1480 #endif1481 1428 for( Int i = 0; i < getGOPSize(); i++ ) 1482 1429 { … … 1492 1439 } 1493 1440 } 1494 #if H_MV_6_ILDDS_O0225_301495 1441 vps.setMaxTidIlRefPicsPlus1( refLayerIdInVps, curLayerIdInVps, maxTid + 1 ); 1496 1442 maxTidRefPresentFlag = maxTidRefPresentFlag || ( maxTid != 6 ); 1497 1443 } 1498 #else1499 }1500 vps.setMaxTidIlRefPicPlus1( refLayerIdInVps, maxTid + 1 );1501 maxTidRefPresentFlag = maxTidRefPresentFlag || ( maxTid != 6 );1502 #endif1503 1444 } 1504 1445 … … 1518 1459 1519 1460 // Poc Lsb Not Present Flag 1520 #if H_MV_6_MISC_O0062_311521 1461 for ( Int layerIdInVps = 1; layerIdInVps < m_numberOfLayers; layerIdInVps++) 1522 1462 { … … 1526 1466 } 1527 1467 } 1528 #endif1529 1468 1530 1469 // All Ref layers active flag … … 1535 1474 { 1536 1475 GOPEntry ge = m_GOPListMvc[layerIdInVps][ ( i < getGOPSize() ? i : MAX_GOP ) ]; 1537 #if H_MV_6_ILDDS_ILREFPICS_27_341538 1476 Int tId = ge.m_temporalId; // Should be equal for all layers. 1539 1477 … … 1571 1509 } 1572 1510 assert ( maxTidIlRefAndSubLayerMaxVaildFlag ); // Something wrong with MaxTidIlRefPicsPlus1 or SubLayersVpsMaxMinus1 1573 #else1574 allRefLayersActiveFlag = allRefLayersActiveFlag && (ge.m_numActiveRefLayerPics == m_directRefLayers[ layerIdInVps ].size() );1575 #endif1576 1511 } 1577 1512 } … … 1579 1514 vps.setAllRefLayersActiveFlag( allRefLayersActiveFlag ); 1580 1515 1581 #if !H_MV_6_PS_O0223_291582 // Currently cross layer irap aligned is always true.1583 vps.setCrossLayerIrapAlignedFlag( true );1584 #endif1585 1516 vps.setRefLayers(); 1586 1517 }; … … 1652 1583 repFormat->setPicHeightVpsInLumaSamples ( m_iSourceHeight ); 1653 1584 repFormat->setPicWidthVpsInLumaSamples ( m_iSourceWidth ); 1654 #if H_MV_6_PS_REP_FORM_18_19_201655 1585 repFormat->setChromaAndBitDepthVpsPresentFlag( true ); 1656 #endif1657 1586 // ToDo not supported yet. 1658 1587 //repFormat->setSeparateColourPlaneVpsFlag( ); … … 1667 1596 } 1668 1597 1669 #if H_MV_6_HRD_O0217_131670 1598 Void TAppEncTop::xSetDpbSize ( TComVPS& vps ) 1671 1599 { … … 1723 1651 } 1724 1652 } 1725 #endif1726 1653 1727 1654 … … 1743 1670 } 1744 1671 } 1745 #if H_MV_6_HRD_O0217_131746 1672 vps.deriveLayerSetLayerIdList(); 1747 #endif1748 1673 1749 1674 Int numAddOuputLayerSets = (Int) m_outputLayerSetIdx.size(); 1750 1675 // Additional output layer sets + profileLevelTierIdx 1751 #if H_MV_6_PS_0109_251752 1676 vps.setDefaultOneTargetOutputLayerIdc ( m_defaultOneTargetOutputLayerIdc ); 1753 #else1754 vps.setDefaultOneTargetOutputLayerFlag ( m_defaultOneTargetOutputLayerFlag );1755 #endif1756 1677 vps.setMoreOutputLayerSetsThanDefaultFlag( numAddOuputLayerSets != 0 ); 1757 1678 vps.setNumAddOutputLayerSetsMinus1 ( numAddOuputLayerSets - 1 ); … … 1759 1680 1760 1681 1761 #if H_MV_6_HRD_O0217_131762 1682 for (Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++) 1763 1683 { … … 1774 1694 } 1775 1695 } 1776 #else1777 for (Int lsIdx = 1; lsIdx < m_vpsNumLayerSets; lsIdx++)1778 {1779 vps.setProfileLevelTierIdx( lsIdx, m_profileLevelTierIdx[ lsIdx ] );1780 }1781 #endif1782 1696 1783 1697 for (Int addOutLs = 0; addOutLs < numAddOuputLayerSets; addOutLs++ ) … … 1802 1716 } 1803 1717 } 1804 #if H_MV_6_HRD_O0217_131805 1718 vps.deriveTargetLayerIdLists(); 1806 #endif1807 1719 } 1808 1720 … … 1821 1733 // however preliminary setting it from input parameters 1822 1734 1823 #if H_MV_6_PS_O0223_291824 1735 pcVPSVUI->setCrossLayerPicTypeAlignedFlag( m_crossLayerPicTypeAlignedFlag ); 1825 1736 pcVPSVUI->setCrossLayerIrapAlignedFlag ( m_crossLayerIrapAlignedFlag ); 1826 #endif1827 1737 1828 1738 pcVPSVUI->setBitRatePresentVpsFlag( m_bitRatePresentVpsFlag ); … … 1863 1773 } 1864 1774 1865 #if H_MV_6_O0226_371866 1775 pcVPSVUI->setTilesNotInUseFlag( m_tilesNotInUseFlag ); 1867 1776 … … 1899 1808 } 1900 1809 } 1901 #else1902 for( Int i = 1; i <= vps.getMaxLayersMinus1(); i++ )1903 {1904 for( Int j = 0; j < vps.getNumDirectRefLayers( vps.getLayerIdInNuh( i ) ); j++ )1905 {1906 if ( m_tileBoundariesAlignedFlag[i].size() > j )1907 {1908 pcVPSVUI->setTileBoundariesAlignedFlag( i, j, m_tileBoundariesAlignedFlag[i][j]);1909 }1910 }1911 }1912 #endif1913 1810 1914 1811 pcVPSVUI->setIlpRestrictedRefLayersFlag( m_ilpRestrictedRefLayersFlag ); … … 1941 1838 } 1942 1839 } 1943 #if H_MV_6_PS_O0118_331944 1840 pcVPSVUI->setVideoSignalInfoIdxPresentFlag( true ); 1945 1841 pcVPSVUI->setVpsNumVideoSignalInfoMinus1 ( 0 ); … … 1961 1857 pcVPSVUI->setVpsVideoSignalInfoIdx( i, 0 ); 1962 1858 } 1963 #endif1964 #if H_MV_6_HRD_O0164_151965 1859 pcVPSVUI->setVpsVuiBspHrdPresentFlag( false ); // TBD 1966 #endif1967 1860 } 1968 1861 } … … 1971 1864 Void TAppEncTop::xSetVPSExtension2( TComVPS& vps ) 1972 1865 { 1973 1974 1866 for ( Int layer = 0; layer <= vps.getMaxLayersMinus1(); layer++ ) 1975 1867 { … … 1981 1873 vps.setARPStepNum ( layer, ( isDepth || isLayerZero ) ? 1 : H_3D_ARP_WFNR ); 1982 1874 #endif 1983 #if MTK_SPIVMP_F01101875 #if H_3D_SPIVMP 1984 1876 if( isDepth ) 1985 1877 { 1986 #if MTK_F0110_FIX1987 1878 vps.setSubPULog2Size ( layer, (layer != 1) ? 6: 0 ); 1988 #else1989 vps.setSubPULog2Size ( layer, (layer != 1) ? m_iSubPULog2Size: 0 );1990 #endif1991 1879 } 1992 1880 else … … 1997 1885 1998 1886 #if H_3D_DIM 1999 #if SEC_DMM3_RBC_F01472000 1887 vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useSDC || m_useDLT ) ); 2001 #else2002 vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useRBC || m_useSDC || m_useDLT ) );2003 #endif2004 #if H_3D_DIM_DLT2005 #if !DLT_DIFF_CODING_IN_PPS2006 vps.setUseDLTFlag( layer , isDepth && m_useDLT );2007 if( vps.getUseDLTFlag( layer ) )2008 {2009 #if H_MV_LAYER_WISE_STARTUP2010 xAnalyzeInputBaseDepth(layer, max( m_iIntraPeriod[layer], 24), &vps);2011 #else2012 xAnalyzeInputBaseDepth(layer, max(m_iIntraPeriod, 24), &vps);2013 #endif2014 }2015 #endif2016 #endif2017 1888 #endif 2018 1889 2019 1890 #if H_3D_IV_MERGE 2020 #if QC_DEPTH_IV_MRG_F01252021 1891 if( isDepth ) 2022 1892 { … … 2027 1897 vps.setIvMvPredFlag ( layer, !isLayerZero && m_ivMvPredFlag[0] ); 2028 1898 } 2029 #else2030 vps.setIvMvPredFlag ( layer, !isLayerZero && !isDepth && m_ivMvPredFlag );2031 #endif2032 1899 #endif 2033 1900 #if H_3D_NBDV_REF … … 2040 1907 vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag ); 2041 1908 #endif 2042 #if SEC_MPI_ENABLING_MERGE_F01501909 #if H_3D_IV_MERGE 2043 1910 vps.setMPIFlag( layer, !isLayerZero && isDepth && m_bMPIFlag ); 2044 1911 #endif … … 2048 1915 #endif 2049 1916 } 2050 #endif 2051 2052 #if DLT_DIFF_CODING_IN_PPS 1917 2053 1918 Void TAppEncTop::xDeriveDltArray( TComVPS& vps, TComDLT& dlt ) 2054 1919 { … … 2080 1945 } 2081 1946 #endif 2082 #endif 1947 2083 1948 //! \}
Note: See TracChangeset for help on using the changeset viewer.