Changeset 539 in 3DVCSoftware for branches/HTM-DEV-0.3-dev2/source/Lib


Ignore:
Timestamp:
19 Jul 2013, 17:02:35 (11 years ago)
Author:
orange
Message:

Integrated QTLPC and added new line mark at the end of TComWedgelet.cpp for MERL

Location:
branches/HTM-DEV-0.3-dev2/source/Lib
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComPic.cpp

    r504 r539  
    7777  m_apcPicYuv[0]      = NULL;
    7878  m_apcPicYuv[1]      = NULL;
     79#if H_3D_QTLPC
     80  m_bReduceBitsQTL    = 0;
     81#endif
    7982#if H_3D_NBDV
    8083  m_iNumDdvCandPics   = 0;
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComPic.h

    r504 r539  
    9696#endif
    9797#endif
     98#if H_3D_QTLPC
     99  Bool                  m_bReduceBitsQTL;
     100#endif
    98101#if H_3D_NBDV
    99102  UInt        m_uiRapRefIdx;
     
    130133#endif
    131134#endif
     135
     136#if H_3D_QTLPC
     137  Bool          getReduceBitsFlag ()             { return m_bReduceBitsQTL;     }
     138  Void          setReduceBitsFlag ( Bool bFlag ) { m_bReduceBitsQTL = bFlag;    }
     139#endif
     140
    132141  Bool          getUsedByCurr()             { return m_bUsedByCurr; }
    133142  Void          setUsedByCurr( Bool bUsed ) { m_bUsedByCurr = bUsed; }
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp

    r537 r539  
    18801880, m_bCamParInSliceHeader      (false)
    18811881#endif
     1882#if H_3D_QTLPC
     1883, m_bUseQTL                   (false)
     1884, m_bUsePC                    (false)
     1885#endif
    18821886{
    18831887  for ( Int i = 0; i < MAX_TLAYER; i++ )
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.h

    r537 r539  
    972972  UInt        m_uiPCMLog2MinSize;
    973973  Bool        m_useAMP;
     974
     975#if H_3D_QTLPC
     976  Bool        m_bUseQTL;
     977  Bool        m_bUsePC;
     978#endif
    974979
    975980  // Parameter
     
    11701175  Int  getMinHorizontalCtuOffsetPlus1 ( Int i )            { return m_minHorizontalCtuOffsetPlus1 [ i ];}
    11711176#endif
     1177
     1178#if H_3D_QTLPC
     1179  Void setUseQTL( Bool b ) { m_bUseQTL = b;    }
     1180  Bool getUseQTL()         { return m_bUseQTL; }
     1181  Void setUsePC ( Bool b ) { m_bUsePC  = b;    }
     1182  Bool getUsePC ()         { return m_bUsePC;  }
     1183#endif
     1184
    11721185#if H_3D
    11731186  Void initCamParaSPS      (  UInt uiViewIndex, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 );
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TypeDef.h

    r537 r539  
    7575
    7676#if H_3D
     77#define H_3D_QTLPC                        1   // OL_QTLIMIT_PREDCODING_B0068 //JCT3V-B0068
     78                                              // HHI_QTLPC_RAU_OFF_C0160     // JCT3V-C0160 change 2: quadtree limitation and predictive coding switched off in random access units
     79
    7780#define H_3D_PDM_CAM_PARAS                0 ///< PDM related parts of camera parameters, should be removed if not used anymore.
    7881#define H_3D_VSO                          1   // VSO, View synthesis optimization, includes:
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r537 r539  
    734734        } 
    735735      } 
    736     } 
     736    }
     737
     738#if H_3D_QTLPC
     739    if( depthFlag )
     740    {
     741      READ_FLAG( uiCode, "use_qtl_flag" );
     742      pcSPS->setUseQTL( uiCode );
     743      READ_FLAG( uiCode, "use_pc_flag" );
     744      pcSPS->setUsePC( uiCode );
     745    }
     746#endif
    737747
    738748    ////   sps_extension_vui_parameters( ) END
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecSbac.cpp

    r537 r539  
    821821    return;
    822822  }
    823  
     823
    824824  UInt uiSymbol;
    825   m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUSplitFlagSCModel.get( 0, 0, pcCU->getCtxSplitFlag( uiAbsPartIdx, uiDepth ) ) );
     825
     826#if H_3D_QTLPC
     827  Bool bParseSplitFlag    = true;
     828
     829  TComSPS *sps            = pcCU->getPic()->getSlice(0)->getSPS();
     830  TComPic *pcTexture      = pcCU->getSlice()->getTexturePic();
     831  Bool bDepthMapDetect    = (pcTexture != NULL);
     832  Bool bIntraSliceDetect  = (pcCU->getSlice()->getSliceType() == I_SLICE);
     833
     834  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);
     835
     836  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())
     837  {
     838    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     839    assert(pcTextureCU->getDepth(uiAbsPartIdx) >= uiDepth);
     840    bParseSplitFlag         = (pcTextureCU->getDepth(uiAbsPartIdx) > uiDepth);
     841  }
     842
     843  if(bParseSplitFlag)
     844  {
     845#endif
     846    m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUSplitFlagSCModel.get( 0, 0, pcCU->getCtxSplitFlag( uiAbsPartIdx, uiDepth ) ) );
    826847#if H_MV_ENC_DEC_TRAC
    827   DTRACE_CU("split_cu_flag", uiSymbol);
     848    DTRACE_CU("split_cu_flag", uiSymbol);
    828849#else
    829   DTRACE_CABAC_VL( g_nSymbolCounter++ )
    830   DTRACE_CABAC_T( "\tSplitFlag\n" )
     850    DTRACE_CABAC_VL( g_nSymbolCounter++ )
     851    DTRACE_CABAC_T( "\tSplitFlag\n" )
     852#endif
     853#if H_3D_QTLPC
     854  }
     855  else
     856  {
     857    uiSymbol = 0;
     858  }
    831859#endif
    832860  pcCU->setDepthSubParts( uiDepth + uiSymbol, uiAbsPartIdx );
     
    845873  UInt uiSymbol, uiMode = 0;
    846874  PartSize eMode;
     875
     876#if H_3D_QTLPC
     877  Bool bParsePartSize    = true;
     878  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     879  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
     880  Bool bDepthMapDetect   = (pcTexture != NULL);
     881  Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE);
     882
     883  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);
     884
     885  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())
     886  {
     887    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     888    assert(pcTextureCU->getDepth(uiAbsPartIdx) >= uiDepth);
     889    if (pcTextureCU->getDepth(uiAbsPartIdx) == uiDepth && pcTextureCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN)
     890    {
     891      bParsePartSize = false;
     892      eMode          = SIZE_2Nx2N;
     893    }
     894  }
     895#endif
     896
    847897 
    848898  if ( pcCU->isIntra( uiAbsPartIdx ) )
    849899  {
    850     uiSymbol = 1;
    851     if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth )
    852     {
    853       m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     900#if H_3D_QTLPC
     901    if(bParsePartSize)
     902    {
     903#endif
     904     uiSymbol = 1;
     905      if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth )
     906      {
     907        m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    854908#if H_MV_ENC_DEC_TRAC         
    855       DTRACE_CU("part_mode", uiSymbol)
     909        DTRACE_CU("part_mode", uiSymbol)
    856910#endif       
    857     }
    858     eMode = uiSymbol ? SIZE_2Nx2N : SIZE_NxN;
     911      }
     912      eMode = uiSymbol ? SIZE_2Nx2N : SIZE_NxN;
     913#if H_3D_QTLPC
     914    }
     915#endif
    859916    UInt uiTrLevel = 0;   
    860917    UInt uiWidthInBit  = g_aucConvertToBit[pcCU->getWidth(uiAbsPartIdx)]+2;
     
    872929  else
    873930  {
    874     UInt uiMaxNumBits = 2;
    875     if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( (g_uiMaxCUWidth>>uiDepth) == 8 && (g_uiMaxCUHeight>>uiDepth) == 8 ) )
    876     {
    877       uiMaxNumBits ++;
    878     }
    879     for ( UInt ui = 0; ui < uiMaxNumBits; ui++ )
    880     {
    881       m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, ui) );
    882       if ( uiSymbol )
    883       {
    884         break;
    885       }
    886       uiMode++;
    887     }
    888     eMode = (PartSize) uiMode;
    889     if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
    890     {
    891       if (eMode == SIZE_2NxN)
    892       {
    893         m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 ));
    894         if (uiSymbol == 0)
     931#if H_3D_QTLPC
     932    if(bParsePartSize)
     933    {
     934#endif
     935      UInt uiMaxNumBits = 2;
     936      if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( (g_uiMaxCUWidth>>uiDepth) == 8 && (g_uiMaxCUHeight>>uiDepth) == 8 ) )
     937      {
     938        uiMaxNumBits ++;
     939      }
     940      for ( UInt ui = 0; ui < uiMaxNumBits; ui++ )
     941      {
     942        m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, ui) );
     943        if ( uiSymbol )
    895944        {
    896           m_pcTDecBinIf->decodeBinEP(uiSymbol);
    897           eMode = (uiSymbol == 0? SIZE_2NxnU : SIZE_2NxnD);
     945          break;
    898946        }
    899       }
    900       else if (eMode == SIZE_Nx2N)
    901       {
    902         m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 ));
    903         if (uiSymbol == 0)
     947        uiMode++;
     948      }
     949      eMode = (PartSize) uiMode;
     950      if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
     951      {
     952        if (eMode == SIZE_2NxN)
    904953        {
    905           m_pcTDecBinIf->decodeBinEP(uiSymbol);
    906           eMode = (uiSymbol == 0? SIZE_nLx2N : SIZE_nRx2N);
     954          m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 ));
     955          if (uiSymbol == 0)
     956          {
     957            m_pcTDecBinIf->decodeBinEP(uiSymbol);
     958            eMode = (uiSymbol == 0? SIZE_2NxnU : SIZE_2NxnD);
     959          }
    907960        }
    908       }
    909     }
     961        else if (eMode == SIZE_Nx2N)
     962        {
     963          m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 ));
     964          if (uiSymbol == 0)
     965          {
     966            m_pcTDecBinIf->decodeBinEP(uiSymbol);
     967            eMode = (uiSymbol == 0? SIZE_nLx2N : SIZE_nRx2N);
     968          }
     969        }
     970      }
    910971#if H_MV_ENC_DEC_TRAC         
    911     DTRACE_CU("part_mode", eMode )
    912 #endif       
     972      DTRACE_CU("part_mode", eMode )
     973#endif
     974#if H_3D_QTLPC
     975    }
     976#endif
    913977  }
    914978  pcCU->setPartSizeSubParts( eMode, uiAbsPartIdx, uiDepth );
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCavlc.cpp

    r537 r539  
    550550      } 
    551551    } 
    552   } 
     552  }
     553
     554#if H_3D_QTLPC
     555  if( depthFlag )
     556  {
     557    WRITE_FLAG( pcSPS->getUseQTL() ? 1 : 0, "use_qtl_flag");
     558    WRITE_FLAG( pcSPS->getUsePC()  ? 1 : 0, "use_pc_flag");
     559  }
     560#endif
     561
    553562  ////   sps_extension_vui_parameters( ) END
    554563  WRITE_UVLC( 0, "sps_shvc_reserved_zero_idc" );
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCfg.h

    r537 r539  
    401401  Bool      m_useDLT;
    402402#endif
     403
     404#if H_3D_QTLPC
     405  Bool      m_bUseQTL;
     406  Bool      m_bUsePC;
     407#endif
     408
    403409#endif
    404410public:
     
    946952  Void      setUseDLT                       ( Bool b) { m_useDLT = b;    }
    947953#endif
     954
     955#if H_3D_QTLPC
     956  Void      setUseQTL                       ( Bool b ) { m_bUseQTL = b;    }
     957  Bool      getUseQTL                       ()         { return m_bUseQTL; }
     958  Void      setUsePC                        ( Bool b ) { m_bUsePC  = b;    }
     959  Bool      getUsePC                        ()         { return m_bUsePC;  }
     960#endif
     961
    948962#endif // H_3D
    949963};
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCu.cpp

    r537 r539  
    388388  TComPic* pcPic = rpcBestCU->getPic();
    389389
     390#if H_3D_QTLPC
     391  TComSPS *sps            = pcPic->getSlice(0)->getSPS();
     392  TComPic *pcTexture      = rpcBestCU->getSlice()->getTexturePic();
     393
     394  Bool  depthMapDetect    = (pcTexture != NULL);
     395  Bool  bIntraSliceDetect = (rpcBestCU->getSlice()->getSliceType() == I_SLICE);
     396
     397  Bool rapPic             = (rpcBestCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || rpcBestCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || rpcBestCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA);
     398
     399  Bool bTry2NxN           = true;
     400  Bool bTryNx2N           = true;
     401#endif
     402
    390403  // get Original YUV data from picture
    391404  m_ppcOrigYuv[uiDepth]->copyFromPicYuv( pcPic->getPicYuvOrg(), rpcBestCU->getAddr(), rpcBestCU->getZorderIdxInCU() );
     
    481494
    482495      rpcTempCU->initEstData( uiDepth, iQP );
     496
     497#if H_3D_QTLPC
     498      //logic for setting bTrySplit using the partition information that is stored of the texture colocated CU
     499
     500      if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())
     501      {
     502        TComDataCU* pcTextureCU = pcTexture->getCU( rpcBestCU->getAddr() ); //Corresponding texture LCU
     503        UInt uiCUIdx            = rpcBestCU->getZorderIdxInCU();
     504        assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth); //Depth cannot be more partitionned than the texture.
     505        if (pcTextureCU->getDepth(uiCUIdx) > uiDepth || pcTextureCU->getPartitionSize(uiCUIdx) == SIZE_NxN) //Texture was split.
     506        {
     507          bTrySplit = true;
     508          bTryNx2N  = true;
     509          bTry2NxN  = true;
     510        }
     511        else
     512        {
     513          bTrySplit = false;
     514          bTryNx2N  = false;
     515          bTry2NxN  = false;
     516        }
     517      }
     518#endif
     519
    483520#if H_3D_NBDV
    484521      DisInfo DvInfo;
     
    575612      }
    576613
    577       if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() )
    578       {
    579         if(iQP == iBaseQP)
     614#if H_3D_QTLPC
     615      if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())
     616      {
     617        bTrySplitDQP = bTrySplit;
     618      }
     619      else
     620      {
     621#endif
     622        if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() )
     623        {
     624          if(iQP == iBaseQP)
     625          {
     626            bTrySplitDQP = bTrySplit;
     627          }
     628        }
     629        else
    580630        {
    581631          bTrySplitDQP = bTrySplit;
    582632        }
    583       }
    584       else
    585       {
    586         bTrySplitDQP = bTrySplit;
    587       }
     633#if H_3D_QTLPC
     634      }
     635#endif
    588636      if (isAddLowestQP && (iQP == lowestQP))
    589637      {
     
    625673            if(!( (rpcBestCU->getWidth(0)==8) && (rpcBestCU->getHeight(0)==8) ))
    626674            {
    627               if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && doNotBlockPu)
     675              if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && doNotBlockPu
     676#if H_3D_QTLPC
     677                && bTrySplit
     678#endif
     679                )
    628680              {
    629681                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN   );
     
    634686
    635687          // 2NxN, Nx2N
    636           if(doNotBlockPu)
     688          if(doNotBlockPu
     689#if H_3D_QTLPC
     690            && bTryNx2N
     691#endif
     692            )
    637693          {
    638694            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N  );
     
    643699            }
    644700          }
    645           if(doNotBlockPu)
     701          if(doNotBlockPu
     702#if H_3D_QTLPC
     703            && bTry2NxN
     704#endif
     705            )
    646706          {
    647707            xCheckRDCostInter      ( rpcBestCU, rpcTempCU, SIZE_2NxN  );
     
    671731            if ( bTestAMP_Hor )
    672732            {
    673               if(doNotBlockPu)
     733              if(doNotBlockPu
     734#if H_3D_QTLPC
     735                && bTry2NxN
     736#endif
     737                )
    674738              {
    675739                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
     
    680744                }
    681745              }
    682               if(doNotBlockPu)
     746              if(doNotBlockPu
     747#if H_3D_QTLPC
     748                && bTry2NxN
     749#endif
     750                )
    683751              {
    684752                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
     
    693761            else if ( bTestMergeAMP_Hor )
    694762            {
    695               if(doNotBlockPu)
     763              if(doNotBlockPu
     764#if H_3D_QTLPC
     765                && bTry2NxN
     766#endif
     767                )
    696768              {
    697769                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, true );
     
    702774                }
    703775              }
    704               if(doNotBlockPu)
     776              if(doNotBlockPu
     777#if H_3D_QTLPC
     778                && bTry2NxN
     779#endif
     780                )
    705781              {
    706782                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, true );
     
    717793            if ( bTestAMP_Ver )
    718794            {
    719               if(doNotBlockPu)
     795              if(doNotBlockPu
     796#if H_3D_QTLPC
     797                && bTryNx2N
     798#endif
     799                )
    720800              {
    721801                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
     
    726806                }
    727807              }
    728               if(doNotBlockPu)
     808              if(doNotBlockPu
     809#if H_3D_QTLPC
     810                && bTryNx2N
     811#endif
     812                )
    729813              {
    730814                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
     
    735819            else if ( bTestMergeAMP_Ver )
    736820            {
    737               if(doNotBlockPu)
     821              if(doNotBlockPu
     822#if H_3D_QTLPC
     823                && bTryNx2N
     824#endif
     825                )
    738826              {
    739827                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, true );
     
    744832                }
    745833              }
    746               if(doNotBlockPu)
     834              if(doNotBlockPu
     835#if H_3D_QTLPC
     836                && bTryNx2N
     837#endif
     838                )
    747839              {
    748840                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, true );
     
    753845
    754846#else
    755             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
    756             rpcTempCU->initEstData( uiDepth, iQP );
    757             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
    758             rpcTempCU->initEstData( uiDepth, iQP );
    759             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
    760             rpcTempCU->initEstData( uiDepth, iQP );
    761 
    762             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
    763             rpcTempCU->initEstData( uiDepth, iQP );
     847#if H_3D_QTLPC
     848            if (bTry2NxN)
     849            {
     850#endif
     851              xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
     852              rpcTempCU->initEstData( uiDepth, iQP );
     853              xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
     854              rpcTempCU->initEstData( uiDepth, iQP );
     855#if H_3D_QTLPC
     856            }
     857            if (bTryNx2N)
     858            {
     859#endif
     860              xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
     861              rpcTempCU->initEstData( uiDepth, iQP );
     862              xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
     863              rpcTempCU->initEstData( uiDepth, iQP );
     864#if H_3D_QTLPC
     865            }
     866#endif
    764867
    765868#endif
     
    789892            if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth )
    790893            {
    791               if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
     894#if H_3D_QTLPC //Try IntraNxN
     895              if(bTrySplit)
    792896              {
    793                 xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
    794                 rpcTempCU->initEstData( uiDepth, iQP );
     897#endif
     898                if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
     899                {
     900                  xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
     901                  rpcTempCU->initEstData( uiDepth, iQP );
     902                }
     903#if H_3D_QTLPC
    795904              }
     905#endif
    796906            }
    797907          }
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncSbac.cpp

    r531 r539  
    730730{
    731731  PartSize eSize         = pcCU->getPartitionSize( uiAbsPartIdx );
     732
     733#if H_3D_QTLPC
     734  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     735  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
     736  Bool bDepthMapDetect   = (pcTexture != NULL);
     737  Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE);
     738 
     739  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);
     740
     741  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC() )
     742  {
     743    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     744    UInt uiCUIdx            = (pcCU->getZorderIdxInCU() == 0) ? uiAbsPartIdx : pcCU->getZorderIdxInCU();
     745    assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth);
     746    if (pcTextureCU->getDepth(uiCUIdx) == uiDepth && pcTextureCU->getPartitionSize( uiCUIdx ) != SIZE_NxN)
     747    {
     748      assert( eSize == SIZE_2Nx2N );
     749      return;
     750    }
     751  }
     752#endif
     753
    732754  if ( pcCU->isIntra( uiAbsPartIdx ) )
    733755  {
     
    9891011 
    9901012  assert( uiCtx < 3 );
     1013
     1014#if H_3D_QTLPC
     1015  Bool bCodeSplitFlag    = true;
     1016
     1017  TComSPS *sps           = pcCU->getPic()->getSlice(0)->getSPS();
     1018  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
     1019  Bool bDepthMapDetect   = (pcTexture != NULL);
     1020  Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE);
     1021
     1022  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);
     1023
     1024  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC())
     1025  {
     1026    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     1027    UInt uiCUIdx            = (pcCU->getZorderIdxInCU() == 0) ? uiAbsPartIdx : pcCU->getZorderIdxInCU();
     1028    assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth);
     1029    bCodeSplitFlag          = (pcTextureCU->getDepth(uiCUIdx) > uiDepth);
     1030  }
     1031
     1032  if(!bCodeSplitFlag)
     1033  {
     1034    assert(uiCurrSplitFlag == 0);
     1035    return;
     1036  }
     1037#endif
     1038
    9911039  m_pcBinIf->encodeBin( uiCurrSplitFlag, m_cCUSplitFlagSCModel.get( 0, 0, uiCtx ) );
    9921040#if !H_MV_ENC_DEC_TRAC
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncSlice.cpp

    r537 r539  
    16141614    }
    16151615
     1616#if H_3D_QTLPC
     1617    rpcPic->setReduceBitsFlag(true);
     1618#endif
     1619
    16161620    TComDataCU*& pcCU = rpcPic->getCU( uiCUAddr );   
    16171621    if ( pcSlice->getSPS()->getUseSAO() && (pcSlice->getSaoEnabledFlag()||pcSlice->getSaoEnabledFlagChroma()) )
     
    17231727      }
    17241728    }
     1729#if H_3D_QTLPC
     1730    rpcPic->setReduceBitsFlag(false);
     1731#endif
    17251732  }
    17261733  if( depSliceSegmentsEnabled )
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncTop.cpp

    r537 r539  
    588588  m_cSPS.setUseAMP ( m_useAMP );
    589589
     590#if H_3D_QTLPC
     591  m_cSPS.setUseQTL( m_bUseQTL );
     592  m_cSPS.setUsePC ( m_bUsePC  );
     593#endif
     594
    590595  for (i = g_uiMaxCUDepth-g_uiAddCUDepth; i < g_uiMaxCUDepth; i++ )
    591596  {
Note: See TracChangeset for help on using the changeset viewer.