Changeset 1007 in 3DVCSoftware


Ignore:
Timestamp:
22 Jul 2014, 10:27:09 (10 years ago)
Author:
mediatek-htm
Message:

JCT3V-I0099. Changes of sub-PU size signaling and lim_qt_pred_flag signaling in VPS extension 2. Remove use_qtl_flag and use_pc_flag.

Location:
branches/HTM-11.2-dev2-MediaTek/source
Files:
14 edited

Legend:

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

    r976 r1007  
    761761
    762762#endif //HHI_VSO
     763#if MTK_I0099_VPS_EX2
     764  ("LimQtPredFlag",                   m_bLimQtPredFlag          , true          , "Use Predictive Coding with QTL" )
     765#endif
     766#if !MTK_I0099_VPS_EX2
    763767#if H_3D_QTLPC
    764768  ("QTL",                             m_bUseQTL                 , true          , "Use depth Quadtree Limitation" )
    765769  ("PC",                              m_bUsePC                  , true          , "Use Predictive Coding with QTL" )
     770#endif
    766771#endif
    767772#if H_3D_IV_MERGE
     
    24912496  printf("WVSO:%d ", m_bUseWVSO ); 
    24922497#endif
     2498#if MTK_I0099_VPS_EX2
     2499  printf("LimQtPredFlag:%d", m_bLimQtPredFlag ? 1 : 0);
     2500#endif
     2501#if !MTK_I0099_VPS_EX2
    24932502#if H_3D_QTLPC
    24942503  printf("QTL:%d ", m_bUseQTL);
    24952504  printf("PC:%d " , m_bUsePC );
     2505#endif
    24962506#endif
    24972507#if H_3D_IV_MERGE
  • branches/HTM-11.2-dev2-MediaTek/source/App/TAppEncoder/TAppEncCfg.h

    r976 r1007  
    128128  vector<Bool>           m_ivMvPredFlag;                      ///< Interview motion vector prediction
    129129#if H_3D_SPIVMP
    130   Int                    m_iSubPULog2Size;                   
    131   Int                    m_iSubPUMPILog2Size;                   
    132 #endif
     130  Int                    m_iSubPULog2Size;   
     131  Int                    m_iSubPUMPILog2Size;   
     132#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
     
    473476  Bool      m_useDLT;                                        ///< flag for using DLT
    474477#endif
     478#if !MTK_I0099_VPS_EX2
    475479#if H_3D_QTLPC
    476480  Bool      m_bUseQTL;                                        ///< flag for using depth QuadTree Limitation
    477481  Bool      m_bUsePC;                                         ///< flag for using Predictive Coding with QTL
     482#endif
    478483#endif
    479484#if H_3D_INTER_SDC
  • branches/HTM-11.2-dev2-MediaTek/source/App/TAppEncoder/TAppEncTop.cpp

    r976 r1007  
    202202    m_cTEncTop.setUseDLT                       ( isDepth ? m_useDLT               : false );
    203203#endif
     204#if !MTK_I0099_VPS_EX2
    204205#if H_3D_QTLPC
    205206    m_cTEncTop.setUseQTL                       ( isDepth ? m_bUseQTL               : false );
    206207    m_cTEncTop.setUsePC                        ( isDepth ? m_bUsePC                : false );
     208#endif
    207209#endif
    208210    //====== Depth Inter SDC =========
     
    18151817    {
    18161818      vps.setSubPULog2Size         ( layer, (layer != 1) ? 6: 0 );
     1819#if MTK_I0099_VPS_EX2
     1820      vps.setSubPUMPILog2Size      ( layer, (!isLayerZero) ? m_iSubPUMPILog2Size: 0 );
     1821#endif
    18171822    }
    18181823    else
     
    18431848    }
    18441849#endif
     1850#if MTK_I0099_VPS_EX2
     1851    vps.setLimQtPredFlag         ( layer, isDepth && m_bLimQtPredFlag );
     1852#endif
    18451853#if H_3D_NBDV_REF
    18461854    vps.setDepthRefinementFlag  ( layer, !isLayerZero && !isDepth && m_depthRefinementFlag );         
     
    18591867#endif
    18601868  } 
     1869#if !MTK_I0099_VPS_EX2
    18611870#if H_3D_SPIVMP
    18621871  vps.setSubPUMPILog2Size( m_iSubPUMPILog2Size );
     1872#endif
    18631873#endif
    18641874#if H_3D
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibCommon/TComDataCU.cpp

    r976 r1007  
    66506650  if( getSlice()->getIsDepth() )
    66516651  {
     6652#if MTK_I0099_VPS_EX2
     6653    iSubPUSize = 1<<getSlice()->getVPS()->getSubPUMPILog2Size(getSlice()->getLayerId());
     6654#else
    66526655    iSubPUSize = 1 << getSlice()->getVPS()->getSubPUMPILog2Size();
     6656#endif
    66536657  }
    66546658
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibCommon/TComSlice.cpp

    r976 r1007  
    19741974#endif
    19751975#endif
     1976#if MTK_I0099_VPS_EX2
     1977    m_bLimQtPredFlag       [ i ] = false;
     1978#endif
    19761979#if H_3D_VSP
    19771980    m_viewSynthesisPredFlag[ i ] = false;
     
    25022505, m_pcmLog2MaxSize            (  5)
    25032506, m_uiPCMLog2MinSize          (  7)
     2507#if !MTK_I0099_VPS_EX2
    25042508#if H_3D_QTLPC
    25052509, m_bUseQTL                   (false)
    25062510, m_bUsePC                    (false)
     2511#endif
    25072512#endif
    25082513, m_bitDepthY                 (  8)
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibCommon/TComSlice.h

    r976 r1007  
    800800#if H_3D_SPIVMP
    801801  Int         m_iSubPULog2Size           [MAX_NUM_LAYERS   ];
     802#if MTK_I0099_VPS_EX2
     803  Int         m_iSubPUMPILog2Size        [MAX_NUM_LAYERS   ];
     804#else
    802805  Int         m_iSubPUMPILog2Size;
    803806#endif
     807#endif
     808#endif
     809#if MTK_I0099_VPS_EX2
     810  Bool        m_bLimQtPredFlag           [ MAX_NUM_LAYERS ];
    804811#endif
    805812#if H_3D_VSP
     
    11301137  Int     getSubPULog2Size(Int layerIdInVps)           { return m_iSubPULog2Size[layerIdInVps]; }
    11311138  Void    setSubPULog2Size(Int layerIdInVps, Int u)    { m_iSubPULog2Size[layerIdInVps] = u;}
     1139#if MTK_I0099_VPS_EX2
     1140  Int     getSubPUMPILog2Size(Int layerIdInVps)           { return m_iSubPUMPILog2Size[layerIdInVps]; }
     1141  Void    setSubPUMPILog2Size(Int layerIdInVps, Int u)    { m_iSubPUMPILog2Size[layerIdInVps] = u;}
     1142#else
    11321143  Int     getSubPUMPILog2Size( )           { return m_iSubPUMPILog2Size; }
    11331144  Void    setSubPUMPILog2Size( Int u )     { m_iSubPUMPILog2Size = u;    }
    11341145#endif
     1146#endif
     1147#endif
     1148#if MTK_I0099_VPS_EX2
     1149  Void    setLimQtPredFlag    ( Int layerIdInVps, Bool val )  { m_bLimQtPredFlag[ layerIdInVps ] = val; }
     1150  Bool    getLimQtPredFlag    ( Int layerIdInVps ) { return m_bLimQtPredFlag[layerIdInVps];}
    11351151#endif
    11361152#if H_3D_VSP
     
    14661482  Bool        m_useAMP;
    14671483
     1484#if !MTK_I0099_VPS_EX2
    14681485#if H_3D_QTLPC
    14691486  Bool        m_bUseQTL;
    14701487  Bool        m_bUsePC;
     1488#endif
    14711489#endif
    14721490  // Parameter
     
    17321750
    17331751#endif
     1752#if !MTK_I0099_VPS_EX2
    17341753#if H_3D_QTLPC
    17351754  Void setUseQTL( Bool b ) { m_bUseQTL = b;    }
     
    17371756  Void setUsePC ( Bool b ) { m_bUsePC  = b;    }
    17381757  Bool getUsePC ()         { return m_bUsePC;  }
     1758#endif
    17391759#endif
    17401760#if H_MV
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibCommon/TypeDef.h

    r995 r1007  
    249249                                              // SCU_HS_FAST_DEPTH_INTRA_E0238_HHIFIX
    250250#endif
     251
     252#define MTK_I0099_VPS_EX2                 1  ///< JCT3V-I0099, sub-PU size signaling and lim_qt_pred_flag in VPS extension 2
     253
    251254
    252255// Rate Control
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r976 r1007  
    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}
     
    17671769    if ( i != 0 )
    17681770    {
     1771#if MTK_I0099_VPS_EX2
     1772      READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( i, uiCode == 1 ? true : false );
     1773#endif
    17691774      if( !( pcVPS->getDepthId( i ) == 1 ) )
    17701775      {
    17711776#if H_3D_IV_MERGE
     1777#if !MTK_I0099_VPS_EX2
    17721778        READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( i, uiCode == 1 ? true : false );
     1779#endif
    17731780        if( !pcVPS->getNumDirectRefLayers(i) )
    17741781        {
     
    18021809      else
    18031810      {
     1811#if !MTK_I0099_VPS_EX2
    18041812#if H_3D_IV_MERGE
    18051813        if(i!=1)
     
    18181826        }
    18191827#endif
     1828#endif
    18201829#if H_3D_IV_MERGE
    18211830        READ_FLAG( uiCode, "mpi_flag[i]" );             pcVPS->setMPIFlag( i, uiCode == 1 ? true : false );
    18221831#endif
     1832#if MTK_I0099_VPS_EX2
     1833        READ_UVLC (uiCode, "log2_mpi_sub_PU_size_minus3[i]");     pcVPS->setSubPUMPILog2Size(i, uiCode+3);
     1834#endif
    18231835        READ_FLAG( uiCode, "vps_depth_modes_flag[i]" );             pcVPS->setVpsDepthModesFlag( i, uiCode == 1 ? true : false );
    1824         //          READ_FLAG( uiCode, "lim_qt_pred_flag[i]");                  pcVPS->setLimQtPreFlag     ( i, uiCode == 1 ? true : false );
     1836#if MTK_I0099_VPS_EX2
     1837        READ_FLAG( uiCode, "lim_qt_pred_flag[i]");                  pcVPS->setLimQtPredFlag     ( i, uiCode == 1 ? true : false );
     1838#endif
    18251839#if H_3D_INTER_SDC
    18261840            READ_FLAG( uiCode, "depth_inter_SDC_flag" );              pcVPS->setInterSDCFlag( i, uiCode ? true : false );
     
    18571871    }
    18581872  }
     1873#if !MTK_I0099_VPS_EX2
    18591874  READ_UVLC (uiCode, "log2_sub_PU_MPI_size_minus3");              pcVPS->setSubPUMPILog2Size( uiCode + 3 );
     1875#endif
    18601876  READ_FLAG( uiCode, "iv_mv_scaling_flag");                       pcVPS->setIvMvScalingFlag( uiCode == 1 ? true : false );
    18611877}
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibDecoder/TDecSbac.cpp

    r976 r1007  
    721721  Bool bParseSplitFlag    = true;
    722722
    723   TComSPS *sps            = pcCU->getPic()->getSlice(0)->getSPS();
     723#if MTK_I0099_VPS_EX2
     724  TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
     725  Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
     726#else
     727  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     728#endif
    724729  TComPic *pcTexture      = pcCU->getSlice()->getTexturePic();
    725730  Bool bDepthMapDetect    = (pcTexture != NULL);
     
    728733  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);
    729734
     735#if MTK_I0099_VPS_EX2
     736  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag)
     737#else
    730738  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())
     739#endif
    731740  {
    732741    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     
    770779#if H_3D_QTLPC
    771780  Bool bParsePartSize    = true;
     781#if MTK_I0099_VPS_EX2
     782  TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
     783  Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
     784#else
    772785  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     786#endif
    773787  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
    774788  Bool bDepthMapDetect   = (pcTexture != NULL);
     
    779793  Bool depthDependent = false;
    780794  UInt uiTexturePart = uiMode;
     795#if MTK_I0099_VPS_EX2
     796  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag )
     797#else
    781798  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())
     799#endif
    782800  {
    783801    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibEncoder/TEncCavlc.cpp

    r976 r1007  
    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}
     
    15621564    if (i!= 0)
    15631565    {
     1566#if MTK_I0099_VPS_EX2
     1567      WRITE_FLAG( pcVPS->getIvMvPredFlag         ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]");
     1568#endif
    15641569      if ( !( pcVPS->getDepthId( i ) == 1 ) )
    15651570      {
    15661571#if H_3D_IV_MERGE
     1572#if !MTK_I0099_VPS_EX2
    15671573        WRITE_FLAG( pcVPS->getIvMvPredFlag         ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]");
     1574#endif
    15681575#if H_3D_SPIVMP
    15691576        WRITE_UVLC( pcVPS->getSubPULog2Size(i)-3, "log2_sub_PU_size_minus3[i]");
     
    15851592      else
    15861593      {
     1594#if !MTK_I0099_VPS_EX2
    15871595        if(i!=1)
    15881596        {
     
    15951603        }
    15961604#endif
     1605#endif
    15971606#if H_3D_IV_MERGE
    15981607        WRITE_FLAG( pcVPS->getMPIFlag( i ) ? 1 : 0 ,          "mpi_flag[i]" );
    15991608#endif
     1609#if MTK_I0099_VPS_EX2
     1610        WRITE_UVLC( pcVPS->getSubPUMPILog2Size(i)-3, "log2_mpi_sub_PU_size_minus3[i]");
     1611#endif
    16001612        WRITE_FLAG( pcVPS->getVpsDepthModesFlag( i ) ? 1 : 0 ,          "vps_depth_modes_flag[i]" );
    1601         //WRITE_FLAG( pcVPS->getLimQtPredFlag    ( i ) ? 1 : 0 ,          "lim_qt_pred_flag[i]"     );
     1613#if MTK_I0099_VPS_EX2
     1614        WRITE_FLAG( pcVPS->getLimQtPredFlag    ( i ) ? 1 : 0 ,          "lim_qt_pred_flag[i]"     );
     1615#endif
    16021616#if H_3D_INTER_SDC
    16031617        WRITE_FLAG( pcVPS->getInterSDCFlag( i ) ? 1 : 0, "depth_inter_SDC_flag" );
     
    16251639    }
    16261640  }
     1641#if !MTK_I0099_VPS_EX2
    16271642  WRITE_UVLC( pcVPS->getSubPUMPILog2Size( ) - 3, "log2_sub_PU_MPI_size_minus3");
     1643#endif
    16281644#if H_3D_TMVP
    16291645  WRITE_FLAG( pcVPS->getIvMvScalingFlag( ) ? 1 : 0 ,          "iv_mv_scaling_flag" );
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibEncoder/TEncCfg.h

    r976 r1007  
    420420  Bool      m_useMPI;
    421421#endif
     422#if !MTK_I0099_VPS_EX2
    422423#if H_3D_QTLPC
    423424  Bool      m_bUseQTL;
    424425  Bool      m_bUsePC;
     426#endif
    425427#endif
    426428#endif
     
    10081010  Void      setUseDLT                       ( Bool b) { m_useDLT = b;    }
    10091011#endif
     1012#if !MTK_I0099_VPS_EX2
    10101013#if H_3D_QTLPC
    10111014  Void      setUseQTL                       ( Bool b ) { m_bUseQTL = b;    }
     
    10141017  Bool      getUsePC                        ()         { return m_bUsePC;  }
    10151018#endif
     1019#endif
    10161020#if H_3D_IV_MERGE
    10171021  Void      setUseMPI                       ( Bool b ) { m_useMPI = b;    }
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibEncoder/TEncCu.cpp

    r976 r1007  
    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(depthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFalg)
     540#else
    533541      if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())
     542#endif
    534543      {
    535544        TComDataCU* pcTextureCU = pcTexture->getCU( rpcBestCU->getAddr() ); //Corresponding texture LCU
     
    685694
    686695#if H_3D_QTLPC     
     696#if MTK_I0099_VPS_EX2
     697      if(depthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFalg)
     698#else
    687699      if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())
     700#endif
    688701      {
    689702        bTrySplitDQP = bTrySplit;
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibEncoder/TEncSbac.cpp

    r976 r1007  
    664664  PartSize eSize         = pcCU->getPartitionSize( uiAbsPartIdx );
    665665#if H_3D_QTLPC
     666#if MTK_I0099_VPS_EX2
     667  TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
     668  Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
     669#else
    666670  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     671#endif
    667672  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
    668673  Bool bDepthMapDetect   = (pcTexture != NULL);
     
    673678  Bool depthDependent = false;
    674679  UInt uiTexturePart = eSize;
     680#if MTK_I0099_VPS_EX2
     681  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag )
     682#else
    675683  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC() )
     684#endif
    676685  {
    677686    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     
    10311040  Bool bCodeSplitFlag    = true;
    10321041
     1042#if MTK_I0099_VPS_EX2
     1043  TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
     1044  Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
     1045#else
    10331046  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     1047#endif
    10341048  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
    10351049  Bool bDepthMapDetect   = (pcTexture != NULL);
     
    10381052  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);
    10391053
     1054#if MTK_I0099_VPS_EX2
     1055  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag  )
     1056#else
    10401057  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC())
     1058#endif
    10411059  {
    10421060    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
  • branches/HTM-11.2-dev2-MediaTek/source/Lib/TLibEncoder/TEncTop.cpp

    r976 r1007  
    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.