Changeset 1030 in 3DVCSoftware for branches


Ignore:
Timestamp:
30 Jul 2014, 19:51:27 (10 years ago)
Author:
tech
Message:

Merged 11.2-dev2-Samsung@1026.

Location:
branches/HTM-11.2-dev0/source
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-11.2-dev0/source/App/TAppEncoder/TAppEncCfg.cpp

    r1015 r1030  
    767767
    768768#endif //HHI_VSO
     769#if MTK_I0099_VPS_EX2
     770  ("LimQtPredFlag",                   m_bLimQtPredFlag          , true          , "Use Predictive Coding with QTL" )
     771#endif
     772#if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX
    769773#if H_3D_QTLPC
    770774  ("QTL",                             m_bUseQTL                 , true          , "Use depth Quadtree Limitation" )
     775#if !MTK_I0099_VPS_EX2
    771776  ("PC",                              m_bUsePC                  , true          , "Use Predictive Coding with QTL" )
     777#endif
     778#endif
    772779#endif
    773780#if H_3D_IV_MERGE
     
    24972504  printf("WVSO:%d ", m_bUseWVSO ); 
    24982505#endif
     2506#if MTK_I0099_VPS_EX2
     2507  printf("LimQtPredFlag:%d ", m_bLimQtPredFlag ? 1 : 0);
     2508#endif
     2509#if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX
    24992510#if H_3D_QTLPC
    25002511  printf("QTL:%d ", m_bUseQTL);
     2512#if !MTK_I0099_VPS_EX2
    25012513  printf("PC:%d " , m_bUsePC );
     2514#endif
     2515#endif
    25022516#endif
    25032517#if H_3D_IV_MERGE
  • branches/HTM-11.2-dev0/source/App/TAppEncoder/TAppEncCfg.h

    r1015 r1030  
    131131  Int                    m_iSubPUMPILog2Size;                   
    132132#endif
     133#endif
     134#if MTK_I0099_VPS_EX2
     135  Bool                   m_bLimQtPredFlag;
    133136#endif
    134137#if H_3D_ARP                                                  /// < flag and number of weighting factors in ARP
     
    479482  Bool     m_useSingleDepthMode;                          ///< flag for using single depth mode
    480483#endif
     484#if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX
     485#if H_3D_QTLPC
     486  Bool      m_bUseQTL;                                        ///< flag for using depth QuadTree Limitation
     487#if !MTK_I0099_VPS_EX2
     488  Bool      m_bUsePC;                                         ///< flag for using Predictive Coding with QTL
     489#endif
     490#endif
     491#endif
     492
    481493#if H_3D_QTLPC
    482494  Bool      m_bUseQTL;                                        ///< flag for using depth QuadTree Limitation
  • branches/HTM-11.2-dev0/source/App/TAppEncoder/TAppEncTop.cpp

    r1015 r1030  
    208208    m_cTEncTop.setUseSingleDepthMode           ( isDepth ? m_useSingleDepthMode   : false );
    209209#endif
     210#if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX
     211#if H_3D_QTLPC
     212    m_cTEncTop.setUseQTL                       ( isDepth ? m_bUseQTL               : false );
     213#if !MTK_I0099_VPS_EX2   
     214    m_cTEncTop.setUsePC                        ( isDepth ? m_bUsePC                : false );
     215#endif
     216#endif
     217#endif
     218
    210219#if H_3D_QTLPC
    211220    m_cTEncTop.setUseQTL                       ( isDepth ? m_bUseQTL               : false );
     
    18211830    {
    18221831      vps.setSubPULog2Size         ( layer, (layer != 1) ? 6: 0 );
     1832#if MTK_I0099_VPS_EX2
     1833      vps.setSubPUMPILog2Size      ( layer, (!isLayerZero) ? m_iSubPUMPILog2Size: 0 );
     1834#endif
    18231835    }
    18241836    else
     
    18391851    {
    18401852      vps.setIvMvPredFlag    (layer, false);
     1853#if SEC_HLS_CLEANUP_I0100
     1854      vps.setIvMvScalingFlag (layer, false);
     1855#endif
    18411856    }
    18421857    else
     
    18501865        vps.setIvMvPredFlag         ( layer, !isLayerZero && m_ivMvPredFlag[0] );
    18511866      }
    1852     }
     1867#if SEC_HLS_CLEANUP_I0100
     1868      vps.setIvMvScalingFlag (layer, m_ivMvScalingFlag);
     1869#endif
     1870    }
     1871#endif
     1872#if MTK_I0099_VPS_EX2
     1873    vps.setLimQtPredFlag         ( layer, isDepth && m_bLimQtPredFlag );
    18531874#endif
    18541875#if H_3D_NBDV_REF
     
    18681889#endif
    18691890  } 
     1891#if !MTK_I0099_VPS_EX2
    18701892#if H_3D_SPIVMP
    18711893  vps.setSubPUMPILog2Size( m_iSubPUMPILog2Size );
    18721894#endif
     1895#endif
    18731896#if H_3D
     1897#if !SEC_HLS_CLEANUP_I0100
    18741898  vps.setIvMvScalingFlag( m_ivMvScalingFlag );   
     1899#endif
    18751900#endif
    18761901}
  • branches/HTM-11.2-dev0/source/Lib/TLibCommon/TComDataCU.cpp

    r1029 r1030  
    59675967    Int iColRefViewId  = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewIndex();
    59685968    iScale = xGetDistScaleFactor( iCurrViewId, iCurrRefViewId, iColViewId, iColRefViewId );
     5969#if SEC_HLS_CLEANUP_I0100
     5970    if ( iScale != 4096 && m_pcSlice->getVPS()->getIvMvScalingFlag(getSlice()->getLayerIdInVps()) )
     5971#else
    59695972    if ( iScale != 4096 && m_pcSlice->getVPS()->getIvMvScalingFlag() )
     5973#endif
    59705974    {
    59715975      rcMv = cColMv.scaleMv( iScale );
     
    67786782  if( getSlice()->getIsDepth() )
    67796783  {
     6784#if MTK_I0099_VPS_EX2
     6785    iSubPUSize = 1<<getSlice()->getVPS()->getSubPUMPILog2Size(getSlice()->getLayerId());
     6786#else
    67806787    iSubPUSize = 1 << getSlice()->getVPS()->getSubPUMPILog2Size();
     6788#endif
    67816789  }
    67826790
  • branches/HTM-11.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp

    r1029 r1030  
    568568    pcCU->getSPAbsPartIdx(uiPartAddr, iSPWidth, iSPHeight, i, iNumSPInOneLine, uiSPAddr[i]);
    569569  }
     570#if SHARP_ARP_CHROMA_I0104
     571  if( pcCU->getARPW( uiPartAddr ) != 0 )
     572  {
     573    return;
     574  }
     575#endif
    570576  // horizontal sub-PU merge
    571577  for (Int i=0; i<iNumSP; i++)
     
    14691475  pcCU->clipMv(cMv);
    14701476  TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPicYuvRec();
     1477#if QC_I0129_ARP_FIX
     1478  xPredInterLumaBlk  ( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 ), true );
     1479  xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 ), true );
     1480#else
    14711481  xPredInterLumaBlk  ( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi, true );
    14721482  xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi, true );
    1473 
     1483#endif
    14741484  if( dW > 0 )
    14751485  {
     
    14791489    TComMv cMVwithDisparity = cMv + cDistparity.m_acNBDV;
    14801490    pcCU->clipMv(cMVwithDisparity);
     1491#if SHARP_ARP_CHROMA_I0104
     1492    if (iWidth <= 8)
     1493    {
     1494      pYuvB0->clear(); pYuvB1->clear();
     1495    }
     1496#endif
    14811497
    14821498    assert ( cDistparity.bDV );
     
    14871503   
    14881504    pcPicYuvRef = pcPicYuvBaseCol->getPicYuvRec();
     1505#if QC_I0129_ARP_FIX
     1506    xPredInterLumaBlk  ( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, true, true );
     1507#if SHARP_ARP_CHROMA_I0104
     1508    if (iWidth > 8)
     1509#endif
     1510    xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, true, true );
     1511#else
    14891512    xPredInterLumaBlk  ( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, bi, true );
    14901513    xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, bi, true );
     1514#endif
    14911515#else
    14921516    pcPicYuvRef = pcPicYuvBaseCol->getPicYuvRec();
     
    14961520   
    14971521    pcPicYuvRef = pcPicYuvBaseRef->getPicYuvRec();
     1522#if QC_I0129_ARP_FIX
     1523    xPredInterLumaBlk  ( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, true, true );
     1524#if SHARP_ARP_CHROMA_I0104
     1525    if (iWidth > 8)
     1526#endif
     1527    xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, true, true );
     1528#else
    14981529    xPredInterLumaBlk  ( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, bi, true );
    14991530    xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, bi, true );
    1500 
     1531#endif
    15011532    pYuvB0->subtractARP( pYuvB0 , pYuvB1 , uiPartAddr , iWidth , iHeight );
    15021533
     
    15081539  }
    15091540}
     1541
     1542#if QC_I0051_ARP_SIMP
     1543Bool TComPrediction::xCheckBiInterviewARP( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eBaseRefPicList, TComPic*& pcPicYuvCurrTRef, TComMv& cBaseTMV, Int& iCurrTRefPoc )
     1544{
     1545  Int         iRefIdx       = pcCU->getCUMvField( eBaseRefPicList )->getRefIdx( uiPartAddr );
     1546  TComMv      cDMv          = pcCU->getCUMvField( eBaseRefPicList )->getMv( uiPartAddr );
     1547  TComPic* pcPicYuvBaseCol  = pcCU->getSlice()->getRefPic( eBaseRefPicList, iRefIdx ); 
     1548  TComPicYuv* pcYuvBaseCol  = pcPicYuvBaseCol->getPicYuvRec();
     1549  Int uiLCUAddr,uiAbsPartAddr;
     1550  Int irefPUX = pcCU->getCUPelX() + g_auiRasterToPelX[g_auiZscanToRaster[uiPartAddr]] + iWidth/2  + ((cDMv.getHor() + 2)>>2);
     1551  Int irefPUY = pcCU->getCUPelY() + g_auiRasterToPelY[g_auiZscanToRaster[uiPartAddr]] + iHeight/2 + ((cDMv.getVer() + 2)>>2);
     1552
     1553  irefPUX = (Int)Clip3<Int>(0, pcCU->getSlice()->getSPS()-> getPicWidthInLumaSamples()-1, irefPUX);
     1554  irefPUY = (Int)Clip3<Int>(0, pcCU->getSlice()->getSPS()->getPicHeightInLumaSamples()-1, irefPUY); 
     1555  pcYuvBaseCol->getCUAddrAndPartIdx( irefPUX, irefPUY, uiLCUAddr, uiAbsPartAddr);
     1556  TComDataCU *pColCU = pcPicYuvBaseCol->getCU( uiLCUAddr );
     1557
     1558  TComPic* pcPicYuvBaseTRef = NULL;
     1559  pcPicYuvCurrTRef = NULL;
     1560
     1561  //If there is available motion in base reference list, use it
     1562  if(!pColCU->isIntra(uiAbsPartAddr))
     1563  {
     1564    for(Int iList = 0; iList < (pColCU->getSlice()->isInterB() ? 2: 1); iList ++)
     1565    {
     1566      RefPicList eRefPicListCurr = RefPicList(iList);
     1567      Int iRef = pColCU->getCUMvField(eRefPicListCurr)->getRefIdx(uiAbsPartAddr);
     1568      if( iRef != -1)
     1569      {
     1570        pcPicYuvBaseTRef = pColCU->getSlice()->getRefPic(eRefPicListCurr, iRef); 
     1571        Int  iCurrPOC    = pColCU->getSlice()->getPOC();
     1572        Int  iCurrRefPOC = pcPicYuvBaseTRef->getPOC();
     1573        Int  iCurrRef    = pcCU->getSlice()->getFirstTRefIdx(eRefPicListCurr);
     1574#if MTK_I0072_IVARP_SCALING_FIX
     1575        if( iCurrRef >= 0 && iCurrPOC != iCurrRefPOC)
     1576#else
     1577        if( iCurrRef >= 0)
     1578#endif
     1579        {
     1580          pcPicYuvCurrTRef =  pcCU->getSlice()->getRefPic(eRefPicListCurr,iCurrRef); 
     1581          Int iTargetPOC = pcPicYuvCurrTRef->getPOC();
     1582          pcPicYuvBaseTRef =  pcCU->getSlice()->getBaseViewRefPic(iTargetPOC,  pcPicYuvBaseCol->getViewIndex() ); 
     1583          if(pcPicYuvBaseTRef)
     1584          {
     1585            cBaseTMV = pColCU->getCUMvField(eRefPicListCurr)->getMv(uiAbsPartAddr);
     1586            Int iScale = pcCU-> xGetDistScaleFactor(iCurrPOC, iTargetPOC, iCurrPOC, iCurrRefPOC);
     1587            if ( iScale != 4096 )
     1588            {
     1589              cBaseTMV = cBaseTMV.scaleMv( iScale );
     1590            }
     1591            iCurrTRefPoc = iTargetPOC;
     1592            return true;
     1593          }
     1594        }
     1595      }
     1596    }
     1597  }
     1598
     1599  //If there is no available motion in base reference list, use ( 0, 0 )
     1600  if( pcCU->getSlice()->getFirstTRefIdx( eBaseRefPicList ) >= 0 )
     1601  {
     1602    cBaseTMV.set( 0, 0 );
     1603    pcPicYuvCurrTRef = pcCU->getSlice()->getRefPic( eBaseRefPicList,  pcCU->getSlice()->getFirstTRefIdx( eBaseRefPicList ) );
     1604    iCurrTRefPoc = pcPicYuvCurrTRef->getPOC();
     1605    return true;
     1606  }
     1607
     1608  return false;
     1609}
     1610#endif
     1611
    15101612Void TComPrediction::xPredInterUniARPviewRef( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi, TComMvField * pNewMvFiled )
    15111613{
     
    15411643  pcYuvBaseCol->getCUAddrAndPartIdx( irefPUX, irefPUY, uiLCUAddr, uiAbsPartAddr);
    15421644  TComDataCU *pColCU = pcPicYuvBaseCol->getCU( uiLCUAddr );
    1543 
     1645#if QC_I0051_ARP_SIMP
     1646  if( pcCU->getSlice()->isInterB() && !pcCU->getSlice()->getIsDepth() )
     1647  {
     1648    RefPicList eOtherRefList = ( eRefPicList == REF_PIC_LIST_0 ) ? REF_PIC_LIST_1 : REF_PIC_LIST_0;
     1649    Int iOtherRefIdx = pcCU->getCUMvField( eOtherRefList )->getRefIdx( uiPartAddr );
     1650    //The other prediction direction is temporal ARP
     1651    if( iOtherRefIdx >= 0 && pcCU->getSlice()->getViewIndex() == pcCU->getSlice()->getRefPic( eOtherRefList, iOtherRefIdx )->getViewIndex() )
     1652    {
     1653      bTMVAvai = true;
     1654      pcPicYuvBaseTRef = pcCU->getSlice()->getRefPic( eOtherRefList, iOtherRefIdx );
     1655      Int  iCurrPOC    = pcCU->getSlice()->getPOC();
     1656      Int  iCurrRefPOC = pcPicYuvBaseTRef->getPOC();
     1657      Int  iCurrRef    = pcCU->getSlice()->getFirstTRefIdx( eOtherRefList );
     1658     
     1659      if( iCurrRef >= 0 )
     1660      {
     1661        pcPicYuvCurrTRef =  pcCU->getSlice()->getRefPic( eOtherRefList,iCurrRef ); 
     1662        Int iTargetPOC = pcPicYuvCurrTRef->getPOC();
     1663        pcPicYuvBaseTRef =  pcCU->getSlice()->getBaseViewRefPic( iTargetPOC,  pcPicYuvBaseCol->getViewIndex() );
     1664        if( pcPicYuvBaseTRef )
     1665        {
     1666          cBaseTMV = pcCU->getCUMvField( eOtherRefList )->getMv( uiPartAddr );
     1667          Int iScale = pcCU-> xGetDistScaleFactor( iCurrPOC, iTargetPOC, iCurrPOC, iCurrRefPOC );
     1668          if ( iScale != 4096 )
     1669          {
     1670            cBaseTMV = cBaseTMV.scaleMv( iScale );
     1671          }
     1672        }
     1673        else
     1674        {
     1675          dW = 0;
     1676        }
     1677      }
     1678      else
     1679      {
     1680        dW = 0;
     1681      }
     1682    }
     1683
     1684    //Both prediction directions are inter-view ARP
     1685    if ( iOtherRefIdx >= 0 && !bTMVAvai )
     1686    {
     1687      RefPicList eBaseList = REF_PIC_LIST_0;
     1688      Int iCurrTRefPoc;
     1689      bTMVAvai = ( eBaseList != eRefPicList ) && ( pcCU->getSlice()->getViewIndex() != pcCU->getSlice()->getRefPic( eOtherRefList, iOtherRefIdx )->getViewIndex() );
     1690
     1691      if ( bTMVAvai )
     1692      {
     1693        if( xCheckBiInterviewARP( pcCU, uiPartAddr, iWidth, iHeight, eBaseList, pcPicYuvCurrTRef, cBaseTMV, iCurrTRefPoc ) )
     1694        {
     1695          pcPicYuvBaseTRef = pcCU->getSlice()->getBaseViewRefPic( iCurrTRefPoc,  pcPicYuvBaseCol->getViewIndex() );
     1696          if ( pcPicYuvBaseTRef == NULL )
     1697          {
     1698            dW = 0;
     1699          }
     1700        }
     1701        else
     1702        {
     1703          dW = 0;
     1704        }
     1705      }
     1706    }
     1707  }
     1708
     1709  if( !pColCU->isIntra( uiAbsPartAddr ) && !bTMVAvai )
     1710#else
    15441711  if(!pColCU->isIntra(uiAbsPartAddr))
     1712#endif
    15451713  {
    15461714    TComMvField puMVField;
     
    15551723        Int  iCurrRefPOC = pcPicYuvBaseTRef->getPOC();
    15561724        Int  iCurrRef    = pcCU->getSlice()->getFirstTRefIdx(eRefPicListCurr);
     1725#if MTK_I0072_IVARP_SCALING_FIX
     1726        if (iCurrRef >= 0 && iCurrRefPOC != iCurrPOC)
     1727#else
    15571728        if( iCurrRef >= 0)
     1729#endif
    15581730        {
    15591731          pcPicYuvCurrTRef =  pcCU->getSlice()->getRefPic(eRefPicListCurr,iCurrRef); 
     
    15821754    pcPicYuvCurrTRef =  pcCU->getSlice()->getRefPic  (eRefPicList,  pcCU->getSlice()->getFirstTRefIdx(eRefPicList));     
    15831755  }
    1584 
     1756#if QC_I0129_ARP_FIX
     1757  xPredInterLumaBlk  ( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 && bTMVAvai ),        bTMVAvai);
     1758  xPredInterChromaBlk( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 && bTMVAvai ),        bTMVAvai);
     1759#else
    15851760  xPredInterLumaBlk  ( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi,        bTMVAvai);
    15861761  xPredInterChromaBlk( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi,        bTMVAvai);
    1587 
     1762#endif
    15881763  if( dW > 0 && bTMVAvai )
    15891764  {
     
    15961771    pcCU->clipMv(cBaseTMV);
    15971772    pcCU->clipMv(cTempMv);
    1598 
     1773#if SHARP_ARP_CHROMA_I0104
     1774    if (iWidth <= 8)
     1775    {
     1776      pYuvCurrTRef->clear(); pYuvBaseTRef->clear();
     1777    }
     1778#endif
     1779#if QC_I0129_ARP_FIX
     1780    xPredInterLumaBlk  ( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, true,   true);
     1781#if SHARP_ARP_CHROMA_I0104
     1782    if (iWidth > 8)
     1783#endif
     1784    xPredInterChromaBlk( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, true,   true);
     1785    xPredInterLumaBlk  ( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv,  iWidth, iHeight, pYuvBaseTRef, true,   true);
     1786#if SHARP_ARP_CHROMA_I0104
     1787    if (iWidth > 8)
     1788#endif
     1789    xPredInterChromaBlk( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv,  iWidth, iHeight, pYuvBaseTRef, true,   true);
     1790#else
    15991791    xPredInterLumaBlk  ( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, bi,   true);
    16001792    xPredInterChromaBlk( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, bi,   true);
     
    16021794    xPredInterChromaBlk( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv,  iWidth, iHeight, pYuvBaseTRef, bi,   true);
    16031795
     1796#endif
    16041797    pYuvCurrTRef->subtractARP( pYuvCurrTRef , pYuvBaseTRef , uiPartAddr , iWidth , iHeight ); 
    16051798    if(dW == 2)
     
    21352328  Int iRecStride = ( eType == TEXT_LUMA ) ? pRecPic->getStride() : pRecPic->getCStride();
    21362329  Int iRefStride = ( eType == TEXT_LUMA ) ? pRefPic->getStride() : pRefPic->getCStride();
     2330#if SEC_IC_NEIGHBOR_CLIP_I0080
     2331  Int iRefOffset, iHor, iVer;
     2332#else
    21372333  Int iCUPelX, iCUPelY, iRefX, iRefY, iRefOffset, iHor, iVer;
    21382334
    21392335  iCUPelX = pcCU->getCUPelX() + g_auiRasterToPelX[g_auiZscanToRaster[pcCU->getZorderIdxInCU()]];
    21402336  iCUPelY = pcCU->getCUPelY() + g_auiRasterToPelY[g_auiZscanToRaster[pcCU->getZorderIdxInCU()]];
     2337#endif
    21412338  iHor = pcCU->getSlice()->getIsDepth() ? pMv->getHor() : ( ( pMv->getHor() + 2 ) >> 2 );
    21422339  iVer = pcCU->getSlice()->getIsDepth() ? pMv->getVer() : ( ( pMv->getVer() + 2 ) >> 2 );
     2340#if !SEC_IC_NEIGHBOR_CLIP_I0080
    21432341  iRefX   = iCUPelX + iHor;
    21442342  iRefY   = iCUPelY + iVer;
     2343#endif
    21452344  if( eType != TEXT_LUMA )
    21462345  {
     
    21582357  Int precShift = std::max(0, (( eType == TEXT_LUMA ) ? g_bitDepthY : g_bitDepthC) - 12);
    21592358
     2359#if SEC_IC_NEIGHBOR_CLIP_I0080
     2360  if( pcCU->getPUAbove( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) )
     2361#else
    21602362  if( pcCU->getPUAbove( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) && iCUPelY > 0 && iRefY > 0 )
     2363#endif
    21612364  {
    21622365    iRefOffset = iHor + iVer * iRefStride - iRefStride;
     
    21882391  }
    21892392
    2190 
     2393#if SEC_IC_NEIGHBOR_CLIP_I0080
     2394  if( pcCU->getPULeft( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) )
     2395#else
    21912396  if( pcCU->getPULeft( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) && iCUPelX > 0 && iRefX > 0 )
     2397#endif
    21922398  {
    21932399    iRefOffset = iHor + iVer * iRefStride - 1;
  • branches/HTM-11.2-dev0/source/Lib/TLibCommon/TComPrediction.h

    r1029 r1030  
    9090#if H_3D_ARP
    9191  Void xPredInterUniARP         ( TComDataCU* pcCU,                          UInt uiPartAddr,               Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi=false, TComMvField * pNewMvFiled = NULL );
     92#if QC_I0051_ARP_SIMP
     93  Bool xCheckBiInterviewARP     ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eBaseRefPicList, TComPic*& pcPicYuvCurrTRef, TComMv& cBaseTMV, Int& iCurrTRefPoc );
     94#endif
    9295  Void xPredInterUniARPviewRef( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi, TComMvField * pNewMvFiled = NULL );
    9396#endif
  • branches/HTM-11.2-dev0/source/Lib/TLibCommon/TComSlice.cpp

    r1015 r1030  
    19521952    m_viewIndex         [i] = -1;
    19531953    m_vpsDepthModesFlag [i] = false;
     1954#if SEC_HLS_CLEANUP_I0100
     1955    m_ivMvScalingFlag[i] = true;
     1956#else
     1957    m_ivMvScalingFlag = true;
     1958#endif
     1959#endif
    19541960#if SEPARATE_FLAG_I0085
    19551961    m_bIVPFlag [i]      = false;
     
    19861992    m_iSubPULog2Size       [ i ] = 0;
    19871993#endif
     1994#endif
     1995#if MTK_I0099_VPS_EX2
     1996    m_bLimQtPredFlag       [ i ] = false;
    19881997#endif
    19891998#if H_3D_VSP
     
    25182527, m_pcmLog2MaxSize            (  5)
    25192528, m_uiPCMLog2MinSize          (  7)
     2529#if !MTK_I0099_VPS_EX2
    25202530#if H_3D_QTLPC
    25212531, m_bUseQTL                   (false)
    25222532, m_bUsePC                    (false)
     2533#endif
    25232534#endif
    25242535, m_bitDepthY                 (  8)
  • branches/HTM-11.2-dev0/source/Lib/TLibCommon/TComSlice.h

    r1023 r1030  
    798798#if H_3D_IV_MERGE
    799799  Bool        m_ivMvPredFlag             [ MAX_NUM_LAYERS ];
     800#if SEC_HLS_CLEANUP_I0100
     801  Bool        m_ivMvScalingFlag          [ MAX_NUM_LAYERS ];
     802#endif
    800803#if H_3D_SPIVMP
    801804  Int         m_iSubPULog2Size           [MAX_NUM_LAYERS   ];
     805#if MTK_I0099_VPS_EX2
     806  Int         m_iSubPUMPILog2Size        [MAX_NUM_LAYERS   ];
     807#else
    802808  Int         m_iSubPUMPILog2Size;
    803809#endif
     810#endif
     811#endif
     812#if MTK_I0099_VPS_EX2
     813  Bool        m_bLimQtPredFlag           [ MAX_NUM_LAYERS ];
    804814#endif
    805815#if H_3D_VSP
     
    820830  Int         ***m_aaaiCodedScale ;
    821831  Int         ***m_aaaiCodedOffset;
     832
     833#if !SEC_HLS_CLEANUP_I0100
    822834  Bool        m_ivMvScalingFlag;
     835#endif
     836
    823837#endif
    824838#if H_3D_INTER_SDC
     
    11331147  Int     getSubPULog2Size(Int layerIdInVps)           { return m_iSubPULog2Size[layerIdInVps]; }
    11341148  Void    setSubPULog2Size(Int layerIdInVps, Int u)    { m_iSubPULog2Size[layerIdInVps] = u;}
     1149#if MTK_I0099_VPS_EX2
     1150  Int     getSubPUMPILog2Size(Int layerIdInVps)           { return m_iSubPUMPILog2Size[layerIdInVps]; }
     1151  Void    setSubPUMPILog2Size(Int layerIdInVps, Int u)    { m_iSubPUMPILog2Size[layerIdInVps] = u;}
     1152#else
    11351153  Int     getSubPUMPILog2Size( )           { return m_iSubPUMPILog2Size; }
    11361154  Void    setSubPUMPILog2Size( Int u )     { m_iSubPUMPILog2Size = u;    }
    11371155#endif
     1156#endif
     1157#endif
     1158#if MTK_I0099_VPS_EX2
     1159  Void    setLimQtPredFlag    ( Int layerIdInVps, Bool val )  { m_bLimQtPredFlag[ layerIdInVps ] = val; }
     1160  Bool    getLimQtPredFlag    ( Int layerIdInVps ) { return m_bLimQtPredFlag[layerIdInVps];}
    11381161#endif
    11391162#if H_3D_VSP
     
    11521175#endif
    11531176
     1177#if SEC_HLS_CLEANUP_I0100
     1178  Bool    getIvMvScalingFlag   ( Int layerIdInVps )                        { return m_ivMvScalingFlag[ layerIdInVps ]; }
     1179  Void    setIvMvScalingFlag   (Int layerIdInVps, Bool b )                 { m_ivMvScalingFlag[ layerIdInVps ] = b;    } 
     1180#else
    11541181  Bool    getIvMvScalingFlag   (  )                       { return m_ivMvScalingFlag; }
    11551182  Void    setIvMvScalingFlag   ( Bool b )                 { m_ivMvScalingFlag = b;    } 
     1183#endif
     1184
    11561185#if H_3D_INTER_SDC
    11571186  Bool    getInterSDCFlag      ( Int layerIdInVps )           { return m_bInterSDCFlag[layerIdInVps]; }
     
    14771506  Bool        m_useAMP;
    14781507
     1508#if !MTK_I0099_VPS_EX2
    14791509#if H_3D_QTLPC
    14801510  Bool        m_bUseQTL;
    14811511  Bool        m_bUsePC;
     1512#endif
    14821513#endif
    14831514  // Parameter
     
    17431774
    17441775#endif
     1776#if !MTK_I0099_VPS_EX2
    17451777#if H_3D_QTLPC
    17461778  Void setUseQTL( Bool b ) { m_bUseQTL = b;    }
     
    17481780  Void setUsePC ( Bool b ) { m_bUsePC  = b;    }
    17491781  Bool getUsePC ()         { return m_bUsePC;  }
     1782#endif
    17501783#endif
    17511784#if H_MV
  • branches/HTM-11.2-dev0/source/Lib/TLibCommon/TComYuv.cpp

    r872 r1030  
    689689  UInt iSrc1Stride = pcYuvSrc1->getStride();
    690690  UInt iDstStride  = getStride();
     691#if QC_I0129_ARP_FIX
     692  Int iIFshift = IF_INTERNAL_PREC - g_bitDepthY;
     693  Int iOffSet  = ( 1 << ( iIFshift - 1 ) ) + IF_INTERNAL_OFFS;
     694#endif
    691695  for ( y = uiHeight-1; y >= 0; y-- )
    692696  {
     
    696700      if( bClip )
    697701      {
     702#if QC_I0129_ARP_FIX
     703        pDst[x] = ClipY( ( pDst[x] + iOffSet ) >> iIFshift );
     704#else
    698705        pDst[x] = ClipY( pDst[x] );
     706#endif
    699707      }
    700708    }
     
    719727  UInt  iSrc1Stride = pcYuvSrc1->getCStride();
    720728  UInt  iDstStride  = getCStride();
     729#if QC_I0129_ARP_FIX
     730  Int iIFshift = IF_INTERNAL_PREC - g_bitDepthC;
     731  Int iOffSet  = ( 1 << ( iIFshift - 1 ) ) + IF_INTERNAL_OFFS;
     732#endif
    721733  for ( y = uiHeight-1; y >= 0; y-- )
    722734  {
     
    727739      if( bClip )
    728740      {
     741#if QC_I0129_ARP_FIX
     742        pDstU[x] = ClipC( ( pDstU[x] + iOffSet ) >> iIFshift );
     743        pDstV[x] = ClipC( ( pDstV[x] + iOffSet ) >> iIFshift );
     744#else
    729745        pDstU[x] = ClipC( pDstU[x] );
    730746        pDstV[x] = ClipC( pDstV[x] );
     747#endif
    731748      }
    732749    }
     
    744761{
    745762  subtractARPLuma  ( pcYuvSrc0, pcYuvSrc1,  uiAbsPartIdx, uiWidth    , uiHeight    );
     763#if SHARP_ARP_CHROMA_I0104
     764  if (uiWidth > 8)
     765#endif
    746766  subtractARPChroma( pcYuvSrc0, pcYuvSrc1,  uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 );
    747767}
     
    803823{
    804824  multiplyARPLuma( uiAbsPartIdx , uiWidth , uiHeight , dW );
     825#if SHARP_ARP_CHROMA_I0104
     826  if (uiWidth > 8)
     827#endif
    805828  multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW );
    806829}
  • branches/HTM-11.2-dev0/source/Lib/TLibCommon/TypeDef.h

    r1029 r1030  
    123123                                              // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121
    124124                                              // MTK_LOW_LATENCY_IC_ENCODING_H0086  Low-latency IC encoding in JCT3V-H0086
     125
     126#define SEC_IC_NEIGHBOR_CLIP_I0080        1   // Clipping of neighboring sample position, JCT3V-I0080
    125127
    126128
     
    262264#endif
    263265
     266#define MTK_I0099_VPS_EX2                 1  ///< JCT3V-I0099, sub-PU size signaling and lim_qt_pred_flag in VPS extension 2
     267#define MTK_I0099_FIX                     1  ///< Fix the problem of removing encoder only QTL
     268
    264269// Rate Control
    265270#define KWU_FIX_URQ                       1
    266271#define KWU_RC_VIEWRC_E0227               0  ///< JCT3V-E0227, view-wise target bitrate allocation
    267272#define KWU_RC_MADPRED_E0227              0  ///< JCT3V-E0227, inter-view MAD prediction
     273
     274#define SEC_VPS_CLEANUP_I0090             1
     275#define SEC_HLS_CLEANUP_I0100             1
    268276
    269277#endif // H_3D
     
    295303#if H_3D_ARP
    296304#define H_3D_ARP_WFNR                     3
     305#define QC_I0129_ARP_FIX                  1
     306#define QC_I0051_ARP_SIMP                 1
     307#define SHARP_ARP_CHROMA_I0104            1
     308#define MTK_I0072_IVARP_SCALING_FIX       1
    297309#endif
    298310
  • branches/HTM-11.2-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r1015 r1030  
    10511051Void TDecCavlc::parseSPSExtension2( TComSPS* pcSPS, Int viewIndex, Bool depthFlag )
    10521052{
     1053#if !MTK_I0099_VPS_EX2
    10531054  UInt uiCode;
    10541055#if H_3D_QTLPC
     
    10611062    pcSPS->setUsePC( uiCode );
    10621063  }
     1064#endif
    10631065#endif
    10641066}
     
    17561758{
    17571759  UInt uiCode;
     1760#if SEC_VPS_CLEANUP_I0090
     1761  for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ )
     1762#else
    17581763  for( Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ )
     1764#endif
    17591765  {
    17601766#if H_3D_ARP
     
    17651771    pcVPS->setSubPULog2Size(i, 0);
    17661772#endif
     1773#if !SEC_VPS_CLEANUP_I0090
    17671774    if ( i != 0 )
    1768     {
     1775#endif
     1776    {
     1777#if MTK_I0099_VPS_EX2
     1778      READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( i, uiCode == 1 ? true : false );
     1779#if SEC_HLS_CLEANUP_I0100
     1780      READ_FLAG( uiCode, "iv_mv_scaling_flag[i]");       pcVPS->setIvMvScalingFlag         ( i, uiCode == 1 ? true : false );
     1781#endif
     1782#endif
    17691783      if( !( pcVPS->getDepthId( i ) == 1 ) )
    17701784      {
    17711785#if H_3D_IV_MERGE
     1786#if !MTK_I0099_VPS_EX2
    17721787        READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( i, uiCode == 1 ? true : false );
     1788#endif
    17731789        if( !pcVPS->getNumDirectRefLayers(i) )
    17741790        {
     
    18021818      else
    18031819      {
     1820#if !MTK_I0099_VPS_EX2
    18041821#if H_3D_IV_MERGE
    18051822        if(i!=1)
     
    18181835        }
    18191836#endif
     1837#endif
    18201838#if H_3D_IV_MERGE
    18211839        READ_FLAG( uiCode, "mpi_flag[i]" );             pcVPS->setMPIFlag( i, uiCode == 1 ? true : false );
     1840#endif
     1841#if MTK_I0099_VPS_EX2
     1842        READ_UVLC (uiCode, "log2_mpi_sub_PU_size_minus3[i]");     pcVPS->setSubPUMPILog2Size(i, uiCode+3);
    18221843#endif
    18231844        READ_FLAG( uiCode, "vps_depth_modes_flag[i]" );             pcVPS->setVpsDepthModesFlag( i, uiCode == 1 ? true : false );
     
    18251846        READ_FLAG( uiCode, "ivp_flag[i]" );                   pcVPS->setIVPFlag( i, uiCode == 1 ? true : false );
    18261847#endif
    1827         //          READ_FLAG( uiCode, "lim_qt_pred_flag[i]");                  pcVPS->setLimQtPreFlag     ( i, uiCode == 1 ? true : false );
     1848#if MTK_I0099_VPS_EX2
     1849        READ_FLAG( uiCode, "lim_qt_pred_flag[i]");                  pcVPS->setLimQtPredFlag     ( i, uiCode == 1 ? true : false );
     1850#endif
    18281851#if H_3D_INTER_SDC
    18291852            READ_FLAG( uiCode, "depth_inter_SDC_flag" );              pcVPS->setInterSDCFlag( i, uiCode ? true : false );
     
    18381861
    18391862  READ_UVLC( uiCamParPrecision, "cp_precision" );
     1863#if SEC_VPS_CLEANUP_I0090
     1864  for (UInt viewIndex=1; viewIndex<pcVPS->getNumViews(); viewIndex++)
     1865#else
    18401866  for (UInt viewIndex=0; viewIndex<pcVPS->getNumViews(); viewIndex++)
     1867#endif
    18411868  {
    18421869    pcVPS->setCamParPresent         ( viewIndex, false );
     
    18601887    }
    18611888  }
     1889#if !MTK_I0099_VPS_EX2
    18621890  READ_UVLC (uiCode, "log2_sub_PU_MPI_size_minus3");              pcVPS->setSubPUMPILog2Size( uiCode + 3 );
     1891#endif
     1892#if !SEC_HLS_CLEANUP_I0100
    18631893  READ_FLAG( uiCode, "iv_mv_scaling_flag");                       pcVPS->setIvMvScalingFlag( uiCode == 1 ? true : false );
     1894#endif
    18641895}
    18651896#endif
     
    24622493    }
    24632494#if H_3D_IC
     2495#if SEC_HLS_CLEANUP_I0100
     2496    else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) && !rpcSlice->getIsDepth() && vps->getNumDirectRefLayers( layerId ) > 0 )
     2497#else
    24642498    else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) && !rpcSlice->getIsDepth())
     2499#endif
    24652500    {
    24662501      UInt uiCodeTmp = 0;
  • branches/HTM-11.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp

    r1029 r1030  
    780780  Bool bParseSplitFlag    = true;
    781781
     782#if MTK_I0099_VPS_EX2
     783  TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
     784  Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
     785#else
    782786  TComSPS *sps            = pcCU->getPic()->getSlice(0)->getSPS();
     787#endif
    783788  TComPic *pcTexture      = pcCU->getSlice()->getTexturePic();
    784789  Bool bDepthMapDetect    = (pcTexture != NULL);
     
    787792  Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA);
    788793
     794#if MTK_I0099_VPS_EX2
     795  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag)
     796#else
    789797  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())
     798#endif
    790799  {
    791800    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     
    829838#if H_3D_QTLPC
    830839  Bool bParsePartSize    = true;
     840#if MTK_I0099_VPS_EX2
     841  TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
     842  Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
     843#else
    831844  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     845#endif
    832846  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
    833847  Bool bDepthMapDetect   = (pcTexture != NULL);
     
    838852  Bool depthDependent = false;
    839853  UInt uiTexturePart = uiMode;
     854#if MTK_I0099_VPS_EX2
     855  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag )
     856#else
    840857  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())
     858#endif
    841859  {
    842860    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
  • branches/HTM-11.2-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp

    r1015 r1030  
    887887{
    888888#if H_3D_QTLPC
     889#if !MTK_I0099_VPS_EX2
    889890//GT: This has to go to VPS
    890891if( depthFlag )
     
    893894  WRITE_FLAG( pcSPS->getUsePC()  ? 1 : 0, "use_pc_flag");
    894895}
     896#endif
    895897#endif
    896898}
     
    15581560Void TEncCavlc::codeVPSExtension2( TComVPS* pcVPS )
    15591561{
     1562#if SEC_VPS_CLEANUP_I0090
     1563  for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ )
     1564#else
    15601565  for( Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ )
    1561   {
     1566#endif
     1567  {
     1568#if !SEC_VPS_CLEANUP_I0090
    15621569    if (i!= 0)
    1563     {
     1570#endif
     1571    {
     1572#if MTK_I0099_VPS_EX2
     1573      WRITE_FLAG( pcVPS->getIvMvPredFlag         ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]");
     1574#if SEC_HLS_CLEANUP_I0100
     1575      WRITE_FLAG( pcVPS->getIvMvScalingFlag( i ) ? 1 : 0 ,       "iv_mv_scaling_flag[i]" );
     1576#endif
     1577
     1578#endif
    15641579      if ( !( pcVPS->getDepthId( i ) == 1 ) )
    15651580      {
    15661581#if H_3D_IV_MERGE
     1582#if !MTK_I0099_VPS_EX2
    15671583        WRITE_FLAG( pcVPS->getIvMvPredFlag         ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]");
     1584#endif
    15681585#if H_3D_SPIVMP
    15691586        WRITE_UVLC( pcVPS->getSubPULog2Size(i)-3, "log2_sub_PU_size_minus3[i]");
     
    15851602      else
    15861603      {
     1604#if !MTK_I0099_VPS_EX2
    15871605        if(i!=1)
    15881606        {
     
    15951613        }
    15961614#endif
     1615#endif
    15971616#if H_3D_IV_MERGE
    15981617        WRITE_FLAG( pcVPS->getMPIFlag( i ) ? 1 : 0 ,          "mpi_flag[i]" );
     1618#endif
     1619#if MTK_I0099_VPS_EX2
     1620        WRITE_UVLC( pcVPS->getSubPUMPILog2Size(i)-3, "log2_mpi_sub_PU_size_minus3[i]");
    15991621#endif
    16001622        WRITE_FLAG( pcVPS->getVpsDepthModesFlag( i ) ? 1 : 0 ,          "vps_depth_modes_flag[i]" );
     
    16021624        WRITE_FLAG( pcVPS->getIVPFlag( i ) ? 1 : 0 ,               "IVP_flag[i]" );
    16031625#endif
    1604         //WRITE_FLAG( pcVPS->getLimQtPredFlag    ( i ) ? 1 : 0 ,          "lim_qt_pred_flag[i]"     );
     1626#if MTK_I0099_VPS_EX2
     1627        WRITE_FLAG( pcVPS->getLimQtPredFlag    ( i ) ? 1 : 0 ,          "lim_qt_pred_flag[i]"     );
     1628#endif
     1629
    16051630#if H_3D_INTER_SDC
    16061631        WRITE_FLAG( pcVPS->getInterSDCFlag( i ) ? 1 : 0, "depth_inter_SDC_flag" );
     
    16101635  }
    16111636  WRITE_UVLC( pcVPS->getCamParPrecision(), "cp_precision" );
     1637#if SEC_VPS_CLEANUP_I0090
     1638  for (UInt viewIndex=1; viewIndex<pcVPS->getNumViews(); viewIndex++)
     1639#else
    16121640  for (UInt viewIndex=0; viewIndex<pcVPS->getNumViews(); viewIndex++)
     1641#endif
    16131642  {
    16141643    WRITE_FLAG( pcVPS->getCamParPresent(viewIndex) ? 1 : 0, "cp_present_flag[i]" );
     
    16281657    }
    16291658  }
     1659#if !MTK_I0099_VPS_EX2
    16301660  WRITE_UVLC( pcVPS->getSubPUMPILog2Size( ) - 3, "log2_sub_PU_MPI_size_minus3");
     1661#endif
    16311662#if H_3D_TMVP
     1663#if !SEC_HLS_CLEANUP_I0100
    16321664  WRITE_FLAG( pcVPS->getIvMvScalingFlag( ) ? 1 : 0 ,          "iv_mv_scaling_flag" );
     1665#endif
    16331666#endif
    16341667}
     
    20162049    }
    20172050#if H_3D_IC
     2051#if SEC_HLS_CLEANUP_I0100
     2052    else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth() && vps->getNumDirectRefLayers( layerId ) > 0 )
     2053#else
    20182054    else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth())
     2055#endif
    20192056    {
    20202057      WRITE_FLAG( pcSlice->getApplyIC() ? 1 : 0, "slice_ic_enable_flag" );
  • branches/HTM-11.2-dev0/source/Lib/TLibEncoder/TEncCfg.h

    r1015 r1030  
    426426  Bool      m_useMPI;
    427427#endif
     428#if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX
    428429#if H_3D_QTLPC
    429430  Bool      m_bUseQTL;
     431#if !MTK_I0099_VPS_EX2
    430432  Bool      m_bUsePC;
     433#endif
     434#endif
    431435#endif
    432436#endif
     
    10221026  Bool       getUseSingleDepthMode          ()               { return m_useSingleDepthMode; }
    10231027#endif
     1028#if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX
    10241029#if H_3D_QTLPC
    10251030  Void      setUseQTL                       ( Bool b ) { m_bUseQTL = b;    }
    10261031  Bool      getUseQTL                       ()         { return m_bUseQTL; }
     1032#if !MTK_I0099_VPS_EX2
    10271033  Void      setUsePC                        ( Bool b ) { m_bUsePC  = b;    }
    10281034  Bool      getUsePC                        ()         { return m_bUsePC;  }
     1035#endif
     1036#endif
    10291037#endif
    10301038#if H_3D_IV_MERGE
  • branches/HTM-11.2-dev0/source/Lib/TLibEncoder/TEncCu.cpp

    r1029 r1030  
    409409
    410410#if H_3D_QTLPC
     411#if MTK_I0099_VPS_EX2
     412  TComVPS *vps            = pcPic->getSlice(0)->getVPS();
     413  Bool  bLimQtPredFalg    = vps->getLimQtPredFlag(pcPic->getSlice(0)->getLayerId());
     414#else
    411415  TComSPS *sps            = pcPic->getSlice(0)->getSPS();
     416#endif
    412417  TComPic *pcTexture      = rpcBestCU->getSlice()->getTexturePic();
    413418
     
    531536      //logic for setting bTrySplit using the partition information that is stored of the texture colocated CU
    532537
     538#if MTK_I0099_VPS_EX2
     539#if MTK_I0099_FIX
     540      if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg ))
     541#else
     542      if(depthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFalg)
     543#endif
     544#else
    533545      if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())
     546#endif
    534547      {
    535548        TComDataCU* pcTextureCU = pcTexture->getCU( rpcBestCU->getAddr() ); //Corresponding texture LCU
     
    685698
    686699#if H_3D_QTLPC     
     700#if MTK_I0099_VPS_EX2
     701#if MTK_I0099_FIX
     702      if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg ))
     703#else
     704      if(depthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFalg)
     705#endif
     706#else
    687707      if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())
     708#endif
    688709      {
    689710        bTrySplitDQP = bTrySplit;
  • branches/HTM-11.2-dev0/source/Lib/TLibEncoder/TEncSbac.cpp

    r1029 r1030  
    714714  PartSize eSize         = pcCU->getPartitionSize( uiAbsPartIdx );
    715715#if H_3D_QTLPC
     716#if MTK_I0099_VPS_EX2
     717  TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
     718  Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
     719#else
    716720  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     721#endif
    717722  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
    718723  Bool bDepthMapDetect   = (pcTexture != NULL);
     
    723728  Bool depthDependent = false;
    724729  UInt uiTexturePart = eSize;
     730#if MTK_I0099_VPS_EX2
     731  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag )
     732#else
    725733  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC() )
     734#endif
    726735  {
    727736    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     
    10811090  Bool bCodeSplitFlag    = true;
    10821091
     1092#if MTK_I0099_VPS_EX2
     1093  TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
     1094  Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
     1095#else
    10831096  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     1097#endif
    10841098  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
    10851099  Bool bDepthMapDetect   = (pcTexture != NULL);
     
    10881102  Bool rapPic     = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA);
    10891103
     1104#if MTK_I0099_VPS_EX2
     1105  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag  )
     1106#else
    10901107  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC())
     1108#endif
    10911109  {
    10921110    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
  • branches/HTM-11.2-dev0/source/Lib/TLibEncoder/TEncTop.cpp

    r976 r1030  
    744744  m_cSPS.setUseAMP ( m_useAMP );
    745745
     746#if !MTK_I0099_VPS_EX2
    746747#if H_3D_QTLPC
    747748  m_cSPS.setUseQTL( m_bUseQTL );
    748749  m_cSPS.setUsePC ( m_bUsePC  );
     750#endif
    749751#endif
    750752
Note: See TracChangeset for help on using the changeset viewer.