Changeset 840 in 3DVCSoftware for branches/HTM-10.0rc1-dev0


Ignore:
Timestamp:
8 Feb 2014, 15:29:19 (11 years ago)
Author:
tech
Message:

Further fixes.

Location:
branches/HTM-10.0rc1-dev0/source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-10.0rc1-dev0/source/App/TAppDecoder/TAppDecTop.cpp

    r838 r840  
    280280          bytestream.reset();
    281281#if H_MV_ENC_DEC_TRAC
     282#if ENC_DEC_TRACE
    282283          const Bool resetCounter = false;
    283284          if ( resetCounter )
     
    288289          {
    289290            g_disableHLSTrace = true;     // Trancing of second parsing of SH is not carried out
    290           }         
     291          }     
     292#endif
    291293#endif
    292294        }
  • branches/HTM-10.0rc1-dev0/source/App/TAppEncoder/TAppEncTop.cpp

    r839 r840  
    825825    }
    826826
    827 #if !RATE_CONTROL_LAMBDA_DOMAIN && KWU_FIX_URQ
    828     for(Int layer=0; layer < m_numberOfLayers; layer++ )
    829     {
    830       if(m_acTEncTopList[layer]->getUseRateCtrl()  && !m_acTEncTopList[layer]->getIsDepth())
    831       {
    832         m_acTEncTopList[layer]->getRateCtrl()->updateRCGOPStatus();
    833       }
    834     }
    835 #endif
    836 
    837827    gopSize = maxGopSize;
    838828  }
     
    10961086      rateStatsAccum(au, stats);   
    10971087    }
    1098   }
    1099 #endif
     1088#endif
     1089  }
    11001090}
    11011091 
  • branches/HTM-10.0rc1-dev0/source/Lib/TLibCommon/TComYuv.cpp

    r837 r840  
    647647  }
    648648}
     649#if H_3D
     650Void TComYuv::addClipPartLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiTrUnitIdx, UInt uiPartSize )
     651{
     652  Int x, y;
     653
     654  Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiTrUnitIdx);
     655  Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiTrUnitIdx);
     656  Pel* pDst  = getLumaAddr( uiTrUnitIdx);
     657
     658  UInt iSrc0Stride = pcYuvSrc0->getStride();
     659  UInt iSrc1Stride = pcYuvSrc1->getStride();
     660  UInt iDstStride  = getStride();
     661  for ( y = uiPartSize-1; y >= 0; y-- )
     662  {
     663    for ( x = uiPartSize-1; x >= 0; x-- )
     664    {
     665      pDst[x] = ClipY( pSrc0[x] + pSrc1[x] );     
     666    }
     667    pSrc0 += iSrc0Stride;
     668    pSrc1 += iSrc1Stride;
     669    pDst  += iDstStride;
     670  }
     671}
     672
     673#if H_3D_ARP
     674Void TComYuv::addARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip )
     675{
     676  addARPLuma   ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth   , uiHeight    , bClip );
     677  addARPChroma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1, uiHeight>>1 , bClip );
     678}
     679
     680Void TComYuv::addARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip )
     681{
     682  Int x, y;
     683
     684  Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx );
     685  Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx );
     686  Pel* pDst  = getLumaAddr( uiAbsPartIdx );
     687
     688  UInt iSrc0Stride = pcYuvSrc0->getStride();
     689  UInt iSrc1Stride = pcYuvSrc1->getStride();
     690  UInt iDstStride  = getStride();
     691  for ( y = uiHeight-1; y >= 0; y-- )
     692  {
     693    for ( x = uiWidth-1; x >= 0; x-- )
     694    {
     695      pDst[x] = pSrc0[x] + pSrc1[x];
     696      if( bClip )
     697      {
     698        pDst[x] = ClipY( pDst[x] );
     699      }
     700    }
     701    pSrc0 += iSrc0Stride;
     702    pSrc1 += iSrc1Stride;
     703    pDst  += iDstStride;
     704  }
     705}
     706
     707Void TComYuv::addARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip )
     708{
     709  Int x, y;
     710
     711  Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx );
     712  Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx );
     713  Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx );
     714  Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx );
     715  Pel* pDstU = getCbAddr( uiAbsPartIdx );
     716  Pel* pDstV = getCrAddr( uiAbsPartIdx );
     717
     718  UInt  iSrc0Stride = pcYuvSrc0->getCStride();
     719  UInt  iSrc1Stride = pcYuvSrc1->getCStride();
     720  UInt  iDstStride  = getCStride();
     721  for ( y = uiHeight-1; y >= 0; y-- )
     722  {
     723    for ( x = uiWidth-1; x >= 0; x-- )
     724    {
     725      pDstU[x] = pSrcU0[x] + pSrcU1[x];
     726      pDstV[x] = pSrcV0[x] + pSrcV1[x];
     727      if( bClip )
     728      {
     729        pDstU[x] = ClipC( pDstU[x] );
     730        pDstV[x] = ClipC( pDstV[x] );
     731      }
     732    }
     733
     734    pSrcU0 += iSrc0Stride;
     735    pSrcU1 += iSrc1Stride;
     736    pSrcV0 += iSrc0Stride;
     737    pSrcV1 += iSrc1Stride;
     738    pDstU  += iDstStride;
     739    pDstV  += iDstStride;
     740  }
     741}
     742
     743Void TComYuv::subtractARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight )
     744{
     745  subtractARPLuma  ( pcYuvSrc0, pcYuvSrc1,  uiAbsPartIdx, uiWidth    , uiHeight    );
     746  subtractARPChroma( pcYuvSrc0, pcYuvSrc1,  uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 );
     747}
     748
     749Void TComYuv::subtractARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight )
     750{
     751  Int x, y;
     752
     753  Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx );
     754  Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx );
     755  Pel* pDst  = getLumaAddr( uiAbsPartIdx );
     756
     757  Int  iSrc0Stride = pcYuvSrc0->getStride();
     758  Int  iSrc1Stride = pcYuvSrc1->getStride();
     759  Int  iDstStride  = getStride();
     760  for ( y = uiHeight-1; y >= 0; y-- )
     761  {
     762    for ( x = uiWidth-1; x >= 0; x-- )
     763    {
     764      pDst[x] = pSrc0[x] - pSrc1[x];
     765    }
     766    pSrc0 += iSrc0Stride;
     767    pSrc1 += iSrc1Stride;
     768    pDst  += iDstStride;
     769  }
     770}
     771
     772Void TComYuv::subtractARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight )
     773{
     774  Int x, y;
     775
     776  Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx );
     777  Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx );
     778  Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx );
     779  Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx );
     780  Pel* pDstU  = getCbAddr( uiAbsPartIdx );
     781  Pel* pDstV  = getCrAddr( uiAbsPartIdx );
     782
     783  Int  iSrc0Stride = pcYuvSrc0->getCStride();
     784  Int  iSrc1Stride = pcYuvSrc1->getCStride();
     785  Int  iDstStride  = getCStride();
     786  for ( y = uiHeight-1; y >= 0; y-- )
     787  {
     788    for ( x = uiWidth-1; x >= 0; x-- )
     789    {
     790      pDstU[x] = pSrcU0[x] - pSrcU1[x];
     791      pDstV[x] = pSrcV0[x] - pSrcV1[x];
     792    }
     793    pSrcU0 += iSrc0Stride;
     794    pSrcU1 += iSrc1Stride;
     795    pSrcV0 += iSrc0Stride;
     796    pSrcV1 += iSrc1Stride;
     797    pDstU  += iDstStride;
     798    pDstV  += iDstStride;
     799  }
     800}
     801
     802Void TComYuv::multiplyARP( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW )
     803{
     804  multiplyARPLuma( uiAbsPartIdx , uiWidth , uiHeight , dW );
     805  multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW );
     806}
     807
     808Void TComYuv::xxMultiplyLine( Pel* pSrcDst , UInt uiWidth , UChar dW )
     809{
     810  assert( dW == 2 );
     811  for( UInt x = 0 ; x < uiWidth ; x++ )
     812    pSrcDst[x] =  pSrcDst[x] >> 1;
     813}
     814
     815Void TComYuv::multiplyARPLuma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW )
     816{
     817  Pel* pDst  = getLumaAddr( uiAbsPartIdx );
     818  Int  iDstStride  = getStride();
     819  for ( Int y = uiHeight-1; y >= 0; y-- )
     820  {
     821    xxMultiplyLine( pDst , uiWidth , dW );
     822    pDst  += iDstStride;
     823  }
     824}
     825
     826Void TComYuv::multiplyARPChroma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW )
     827{
     828  Pel* pDstU  = getCbAddr( uiAbsPartIdx );
     829  Pel* pDstV  = getCrAddr( uiAbsPartIdx );
     830
     831  Int  iDstStride  = getCStride();
     832  for ( Int y = uiHeight-1; y >= 0; y-- )
     833  {
     834    xxMultiplyLine( pDstU , uiWidth , dW );
     835    xxMultiplyLine( pDstV , uiWidth , dW );
     836    pDstU  += iDstStride;
     837    pDstV  += iDstStride;
     838  }
     839}
     840#endif
     841#endif
     842
    649843//! \}
  • branches/HTM-10.0rc1-dev0/source/Lib/TLibCommon/TypeDef.h

    r839 r840  
    5555
    5656#ifndef HEVC_EXT
    57 #define HEVC_EXT                    0
     57#define HEVC_EXT                    2
    5858#endif
    5959
     
    323323#define MTK_NBDV_IVREF_FIX_G0067          1   // Disable IvMC, VSP when IVREF is not available, JCT3V-G0067
    324324#endif
     325
     326/////////////////////////////////////////////////////////////////////////////////////////
     327///////////////////////////////////   HTM-10.1 Integrations //////////////////////////////
     328/////////////////////////////////////////////////////////////////////////////////////////
     329
     330#define UPDATE_HM13                       1
    325331/////////////////////////////////////////////////////////////////////////////////////////
    326332///////////////////////////////////   HM RELATED DEFINES ////////////////////////////////
  • branches/HTM-10.0rc1-dev0/source/Lib/TLibDecoder/TDecSbac.cpp

    r838 r840  
    21732173  xCopyContextsFrom(pScr);
    21742174}
     2175
     2176#if H_3D_ARP
     2177Void TDecSbac::parseARPW( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     2178{
     2179  UInt uiMaxW = pcCU->getSlice()->getARPStepNum() - 1;
     2180  UInt uiW = 0;
     2181  UInt uiOffset = pcCU->getCTXARPWFlag(uiAbsPartIdx);
     2182  UInt uiCode = 0;
     2183
     2184  assert ( uiMaxW > 0 );
     2185
     2186  m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 0 + uiOffset ) );
     2187
     2188  uiW = uiCode;
     2189  if( 1 == uiW )   
     2190  {
     2191#if MTK_ARP_FLAG_CABAC_SIMP_G0061
     2192    m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 2 ) );
     2193#else
     2194    m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 3 ) );
     2195#endif
     2196    uiW += ( 1 == uiCode ? 1 : 0 );
     2197  }
     2198#if H_MV_ENC_DEC_TRAC
     2199  DTRACE_CU("iv_res_pred_weight_idx", uiW )
     2200#endif
     2201  pcCU->setARPWSubParts( ( UChar )( uiW ) , uiAbsPartIdx, uiDepth ); 
     2202}
     2203#endif
     2204
     2205#if H_3D_IC
     2206/** parse illumination compensation flag
     2207 * \param pcCU
     2208 * \param uiAbsPartIdx
     2209 * \param uiDepth
     2210 * \returns Void
     2211 */
     2212Void TDecSbac::parseICFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     2213{
     2214  UInt uiSymbol = 0;
     2215#if MTK_IC_FLAG_CABAC_SIMP_G0061
     2216  m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUICFlagSCModel.get( 0, 0, 0 ) );
     2217#else
     2218  UInt uiCtxIC = pcCU->getCtxICFlag( uiAbsPartIdx );
     2219  m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUICFlagSCModel.get( 0, 0, uiCtxIC ) );
     2220#endif
     2221#if !H_MV_ENC_DEC_TRAC
     2222  DTRACE_CABAC_VL( g_nSymbolCounter++ );
     2223  DTRACE_CABAC_T( "\tICFlag" );
     2224  DTRACE_CABAC_T( "\tuiCtxIC: ");
     2225  DTRACE_CABAC_V( uiCtxIC );
     2226  DTRACE_CABAC_T( "\tuiSymbol: ");
     2227  DTRACE_CABAC_V( uiSymbol );
     2228  DTRACE_CABAC_T( "\n");
     2229#else
     2230  DTRACE_CU("ic_flag", uiSymbol)
     2231#endif
     2232 
     2233  pcCU->setICFlagSubParts( uiSymbol ? true : false , uiAbsPartIdx, 0, uiDepth );
     2234}
     2235#endif
     2236
     2237#if H_3D_INTER_SDC
     2238#if QC_SDC_UNIFY_G0130
     2239Void TDecSbac::parseDeltaDC( TComDataCU* pcCU, UInt absPartIdx, UInt depth )
     2240{
     2241  if( ! ( pcCU->getSDCFlag( absPartIdx ) || ( pcCU->isIntra( absPartIdx ) && getDimType( pcCU->getLumaIntraDir( absPartIdx ) ) < DIM_NUM_TYPE ) ) )
     2242  {
     2243    assert( 0 );
     2244  }
     2245
     2246  UInt symbol = 0;
     2247  UInt uiNumSegments = 0;
     2248
     2249  if( pcCU->isIntra( absPartIdx ) )
     2250  {
     2251    UInt dir     = pcCU->getLumaIntraDir( absPartIdx );
     2252    uiNumSegments = isDimMode( dir ) ? 2 : 1;
     2253
     2254    m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, uiNumSegments-1 ) );
     2255
     2256    if( pcCU->getSDCFlag( absPartIdx ) )
     2257    {
     2258      assert( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N );
     2259      pcCU->setTrIdxSubParts( 0, absPartIdx, depth );
     2260      pcCU->setCbfSubParts( 1, 1, 1, absPartIdx, depth );
     2261    }
     2262    else
     2263    {
     2264      pcCU->setLumaIntraDirSubParts( dir + symbol, absPartIdx, depth );
     2265    }
     2266  }
     2267  else
     2268  {
     2269#if SEC_INTER_SDC_G0101
     2270    uiNumSegments = 1;
     2271#else
     2272    PartSize cPartSize = pcCU->getPartitionSize( absPartIdx );
     2273    uiNumSegments = ( cPartSize == SIZE_2Nx2N ) ? 1 : ( cPartSize == SIZE_NxN ? 4 : 2 );
     2274#endif
     2275    symbol = 1;
     2276  }
     2277
     2278
     2279  for( UInt segment = 0; segment < uiNumSegments; segment++ )
     2280  {
     2281    Pel valDeltaDC = 0;
     2282    if( symbol )
     2283    {
     2284      xParseDimDeltaDC( valDeltaDC, uiNumSegments );
     2285    }
     2286
     2287    if( pcCU->isIntra( absPartIdx ) )
     2288    {
     2289      UInt dir     = pcCU->getLumaIntraDir( absPartIdx );
     2290
     2291      if( pcCU->getSDCFlag( absPartIdx ) )
     2292      {
     2293        pcCU->setSDCSegmentDCOffset( valDeltaDC, segment, absPartIdx );
     2294      }
     2295      else
     2296      {
     2297        pcCU->setDimDeltaDC( getDimType( dir ), segment, absPartIdx, valDeltaDC );
     2298      }
     2299    }
     2300    else
     2301    {
     2302      pcCU->setSDCSegmentDCOffset( valDeltaDC, segment, absPartIdx );
     2303    }
     2304  }
     2305}
     2306
     2307Void TDecSbac::parseSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     2308{
     2309  UInt uiSymbol = 0;
     2310  UInt uiCtxSDCFlag = pcCU->getCtxSDCFlag( uiAbsPartIdx );
     2311
     2312  m_pcTDecBinIf->decodeBin( uiSymbol, m_cSDCFlagSCModel.get( 0, 0, uiCtxSDCFlag ) );
     2313
     2314  if( uiSymbol )
     2315  {
     2316    pcCU->setSDCFlagSubParts( true, uiAbsPartIdx, uiDepth );
     2317    pcCU->setTrIdxSubParts( 0, uiAbsPartIdx, uiDepth );
     2318    pcCU->setCbfSubParts( 1, 1, 1, uiAbsPartIdx, uiDepth );
     2319  }
     2320  else
     2321  {
     2322    pcCU->setSDCFlagSubParts( false, uiAbsPartIdx, uiDepth );
     2323  }
     2324}
     2325#else
     2326Void TDecSbac::parseInterSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     2327{
     2328  UInt uiSymbol = 0;
     2329  UInt uiCtxInterSDCFlag = pcCU->getCtxInterSDCFlag( uiAbsPartIdx );
     2330
     2331  m_pcTDecBinIf->decodeBin( uiSymbol, m_cInterSDCFlagSCModel.get( 0, 0, uiCtxInterSDCFlag ) );
     2332
     2333  if( uiSymbol )
     2334  {
     2335    pcCU->setInterSDCFlagSubParts( true, uiAbsPartIdx, 0, uiDepth );
     2336    pcCU->setTrIdxSubParts( 0, uiAbsPartIdx, uiDepth );
     2337    pcCU->setCbfSubParts( 1, 1, 1, uiAbsPartIdx, uiDepth );
     2338  }
     2339  else
     2340  {
     2341    pcCU->setInterSDCFlagSubParts( false, uiAbsPartIdx, 0, uiDepth);
     2342  }
     2343}
     2344
     2345Void TDecSbac::parseInterSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiSegment )
     2346{
     2347  UInt uiAbsIdx   = 0;
     2348  UInt uiSign     = 0;
     2349  Int  iIdx       = 0;
     2350
     2351  xReadExGolombLevel( uiAbsIdx, m_cInterSDCResidualSCModel.get( 0, 0, 0 ) );
     2352
     2353  uiAbsIdx++;
     2354  m_pcTDecBinIf->decodeBin( uiSign, m_cInterSDCResidualSignFlagSCModel.get( 0, 0, 0 ) );
     2355  iIdx = (Int)( uiSign ? -1 : 1 ) * uiAbsIdx;
     2356
     2357  pcCU->setInterSDCSegmentDCOffset( iIdx, uiSegment, uiAbsPartIdx );
     2358}
     2359#endif
     2360#endif
     2361
     2362#if H_3D_DBBP
     2363Void TDecSbac::parseDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     2364{
     2365  PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx );
     2366  AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) );
     2367  AOF( !pcCU->getSlice()->getIsDepth() );
     2368  AOF( ePartSize == RWTH_DBBP_PACK_MODE );
     2369 
     2370  UInt uiSymbol = 0;
     2371 
     2372  m_pcTDecBinIf->decodeBin( uiSymbol, m_cDBBPFlagSCModel.get( 0, 0, 0 ) );
     2373 
     2374  if( uiSymbol )
     2375  {
     2376    pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth);
     2377  }
     2378}
     2379#endif
     2380
     2381
     2382
    21752383//! \}
  • branches/HTM-10.0rc1-dev0/source/Lib/TLibEncoder/TEncCu.cpp

    r839 r840  
    18051805    memset( mergeCandBuffer, 0, MRG_MAX_NUM_CANDS_MEM*sizeof(Int) );
    18061806    rpcTempCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uhDepth ); // interprets depth relative to LCU level
     1807#if !UPDATE_HM13
    18071808    rpcTempCU->setCUTransquantBypassSubParts( m_pcEncCfg->getCUTransquantBypassFlagValue(), 0, uhDepth );
     1809#endif
    18081810    rpcTempCU->setARPWSubParts( (UChar)nARPW , 0 , uhDepth );
    18091811#if H_3D_IC
     
    19921994              if( rpcTempCU != rpcTempCUPre )
    19931995              {
    1994                 rpcTempCU->initEstData( uhDepth, orgQP );
     1996                rpcTempCU->initEstData( uhDepth, orgQP, bTransquantBypassFlag );
    19951997                rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth );
    19961998              }
     
    20222024            if( rpcTempCU != rpcTempCUPre )
    20232025            {
    2024               rpcTempCU->initEstData( uhDepth, orgQP );
     2026              rpcTempCU->initEstData( uhDepth, orgQP, bTransquantBypassFlag );
    20252027              rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth );
    20262028            }
     
    21212123#endif
    21222124{
     2125
     2126#if UPDATE_HM13
     2127#if H_3D
     2128  const Bool bTransquantBypassFlag = rpcTempCU->getCUTransquantBypass(0);
     2129#endif
     2130#endif
    21232131#if  H_3D_FAST_TEXTURE_ENCODING
    21242132  if(!(bFMD && (ePartSize == SIZE_2Nx2N)))  //have  motion estimation or merge check
     
    21442152    if( bFirstTime == false && rpcTempCU->getSlice()->getVPS()->getUseAdvRP( iLayerId ) )
    21452153    {
     2154#if UPDATE_HM13
     2155      rpcTempCU->initEstData( rpcTempCU->getDepth(0), rpcTempCU->getQP(0),bTransquantBypassFlag );     
     2156#else
    21462157      rpcTempCU->initEstData( rpcTempCU->getDepth(0), rpcTempCU->getQP(0) );
     2158#endif
    21472159    }
    21482160#endif
     
    22582270      {
    22592271        Int orgQP = rpcBestCU->getQP( 0 );
     2272#if UPDATE_HM13
     2273        rpcTempCU->initEstData( uhDepth, orgQP ,bTransquantBypassFlag );     
     2274#else
    22602275        rpcTempCU->initEstData( uhDepth, orgQP );
     2276#endif
    22612277        rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth );
    22622278      }
  • branches/HTM-10.0rc1-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp

    r837 r840  
    798798}
    799799
     800#if H_3D_INTER_SDC
     801#if QC_SDC_UNIFY_G0130
     802Void TEncEntropy::encodeDeltaDC  ( TComDataCU* pcCU, UInt absPartIdx )
     803{
     804  m_pcEntropyCoderIf->codeDeltaDC( pcCU, absPartIdx );
     805}
     806
     807Void TEncEntropy::encodeSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
     808{
     809  if( ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) ) ||
     810    ( pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getVpsDepthModesFlag( pcCU->getSlice()->getLayerIdInVps() ) ) )
     811  {
     812    return;
     813  }
     814
     815#if SEC_INTER_SDC_G0101
     816  if( !pcCU->getSlice()->getIsDepth() || pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_2Nx2N || pcCU->isSkipped( uiAbsPartIdx ) )
     817#else
     818  if( !pcCU->getSlice()->getIsDepth() || ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_2Nx2N ) || pcCU->isSkipped( uiAbsPartIdx ) )
     819#endif
     820  {
     821    return;
     822  }
     823
     824#if SEC_INTER_SDC_G0101
     825  assert( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N || ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->isSkipped( uiAbsPartIdx ) ) );
     826#else
     827  assert( ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) || ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->isSkipped( uiAbsPartIdx ) ) );
     828#endif
     829
     830  if( bRD )
     831  {
     832    uiAbsPartIdx = 0;
     833  }
     834
     835  m_pcEntropyCoderIf->codeSDCFlag( pcCU, uiAbsPartIdx );
     836}
     837#else
     838Void TEncEntropy::encodeInterSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
     839{
     840  if( !pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) )
     841  {
     842    return;
     843  }
     844
     845  if( !pcCU->getSlice()->getIsDepth() || pcCU->isIntra( uiAbsPartIdx ) || pcCU->isSkipped( uiAbsPartIdx ) )
     846  {
     847    return;
     848  }
     849
     850  if( bRD )
     851  {
     852    uiAbsPartIdx = 0;
     853  }
     854
     855  m_pcEntropyCoderIf->codeInterSDCFlag( pcCU, uiAbsPartIdx );
     856}
     857
     858Void TEncEntropy::encodeInterSDCResidualData( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
     859{
     860  if( !pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) )
     861  {
     862    return;
     863  }
     864
     865  if( !pcCU->getSlice()->getIsDepth() || pcCU->isIntra( uiAbsPartIdx ) || !pcCU->getInterSDCFlag( uiAbsPartIdx ) )
     866  {
     867    return;
     868  }
     869
     870  if( bRD )
     871  {
     872    uiAbsPartIdx = 0;
     873  }
     874
     875  // number of segments depends on prediction mode for INTRA
     876  UInt uiNumSegments = ( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) ? 1 : ( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ? 4 : 2 );
     877
     878  // encode residual data for each segment
     879  for( UInt uiSeg = 0; uiSeg < uiNumSegments; uiSeg++ )
     880  {
     881    m_pcEntropyCoderIf->codeInterSDCResidualData( pcCU, uiAbsPartIdx, uiSeg );
     882  }
     883}
     884#endif
     885#endif
     886#if H_3D_DBBP
     887Void TEncEntropy::encodeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
     888{
     889  if( bRD )
     890  {
     891    uiAbsPartIdx = 0;
     892  }
     893  m_pcEntropyCoderIf->codeDBBPFlag( pcCU, uiAbsPartIdx );
     894}
     895#endif
    800896//! \}
  • branches/HTM-10.0rc1-dev0/source/Lib/TLibEncoder/TEncSbac.h

    r837 r840  
    257257  ContextModel3DBuffer m_cTransformSkipSCModel;
    258258  ContextModel3DBuffer m_CUTransquantBypassFlagSCModel;
     259
     260#if H_3D_DIM
     261  ContextModel3DBuffer m_cDepthIntraModeSCModel;
     262  ContextModel3DBuffer m_cDdcFlagSCModel;
     263  ContextModel3DBuffer m_cDdcDataSCModel;
     264#if QC_GENERIC_SDC_G0122
     265  ContextModel3DBuffer m_cAngleFlagSCModel;
     266#if !QC_SDC_UNIFY_G0130
     267  ContextModel3DBuffer m_cIntraSdcFlagSCModel;
     268#endif
     269#endif
     270#if H_3D_DIM_DMM
     271  ContextModel3DBuffer m_cDmm1DataSCModel;
     272#endif
     273#if H_3D_DIM_SDC 
     274  ContextModel3DBuffer m_cSDCResidualFlagSCModel;
     275  ContextModel3DBuffer m_cSDCResidualSCModel;
     276#endif
     277#endif
     278#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
     279  ContextModel3DBuffer m_cInterSDCFlagSCModel;
     280  ContextModel3DBuffer m_cInterSDCResidualSCModel;
     281  ContextModel3DBuffer m_cInterSDCResidualSignFlagSCModel;
     282#endif
     283#if QC_SDC_UNIFY_G0130
     284  ContextModel3DBuffer m_cSDCFlagSCModel;
     285#endif
     286#if H_3D_DBBP
     287  ContextModel3DBuffer m_cDBBPFlagSCModel;
     288#endif
    259289};
    260290
  • branches/HTM-10.0rc1-dev0/source/Lib/TLibEncoder/TEncSearch.cpp

    r839 r840  
    60446044    UInt uiBits = 0;
    60456045    TComYuv *pDummy = NULL;
    6046     if( m_bUseSBACRD )
    6047     {
    6048       m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST] );
    6049     }
     6046    m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST] );
    60506047
    60516048    xAddSymbolBitsInter( pcCU, 0, 0, uiBits, pDummy, NULL, pDummy );
     
    60666063    pcCU->getTotalCost()       = rdCost;
    60676064
    6068     if( m_bUseSBACRD )
    6069     {
    6070       m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_TEMP_BEST ] );
    6071     }
     6065    m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_TEMP_BEST ] );
    60726066  }
    60736067
Note: See TracChangeset for help on using the changeset viewer.