Changeset 712 in 3DVCSoftware


Ignore:
Timestamp:
21 Nov 2013, 13:28:24 (11 years ago)
Author:
tech
Message:

Merged DEV3 ( branch HTM-8.2-dev3-Samsung@699 )

Location:
branches/HTM-8.2-dev0
Files:
32 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-8.2-dev0/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view+depth_AllIntra.cfg

    r655 r712  
    145145VSO                       : 1                                      # use of view synthesis optimization for depth coding
    146146DMM                                : 1
    147 RBC                                : 1
    148147SDC                                : 1
    149148DLT                                : 1
  • branches/HTM-8.2-dev0/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view+depth_AllIntra.cfg

    r655 r712  
    152152VSO                       : 1                                      # use of view synthesis optimization for depth coding
    153153DMM                                : 1
    154 RBC                                : 1
    155154SDC                                : 1
    156155DLT                                : 1
  • branches/HTM-8.2-dev0/cfg/3D-HEVC/NonCTC/fco/baseCfg_3view+depth.cfg

    r696 r712  
    227227IvMvPred                            : 1                # Inter-view motion prediction
    228228AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    229 IlluCompEnable                      : 1 1              # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
     229IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
    230230ViewSynthesisPred                   : 1                # View synthesis prediction
    231231DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
     
    237237VSO                       : 1                                      # use of view synthesis optimization for depth coding
    238238DMM                                : 1
    239 RBC                                : 1
    240239SDC                                : 1
    241240DLT                                : 1
  • branches/HTM-8.2-dev0/cfg/3D-HEVC/NonCTC/rc/baseCfg_3view+depth_rate_control.cfg

    r696 r712  
    239239IvMvPred                            : 1                # Inter-view motion prediction
    240240AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    241 IlluCompEnable                      : 1 1              # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
     241IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
    242242ViewSynthesisPred                   : 1                # View synthesis prediction
    243243DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
     
    249249VSO                       : 1                                      # use of view synthesis optimization for depth coding
    250250DMM                                : 1
    251 RBC                                : 1
    252251SDC                                : 1
    253252DLT                                : 1
  • branches/HTM-8.2-dev0/cfg/3D-HEVC/baseCfg_2view+depth.cfg

    r696 r712  
    197197IvMvPred                            : 1 1              # Inter-view motion prediction
    198198AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    199 IlluCompEnable                      : 1 1              # Enable Illumination compensation ( 0: off, 1: on )   (v/d)
     199IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )   (v/d)
    200200ViewSynthesisPred                   : 1                # View synthesis prediction
    201201DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
     
    205205VSO                       : 1                                      # use of view synthesis optimization for depth coding
    206206DMM                                : 1
    207 RBC                                : 1
    208207SDC                                : 1
    209208DLT                                : 1
  • branches/HTM-8.2-dev0/cfg/3D-HEVC/baseCfg_2view.cfg

    r622 r712  
    170170IvMvPred                            : 1                # Inter-view motion prediction
    171171AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    172 IlluCompEnable                      : 1 1              # Enable Illumination compensation ( 0: off, 1: on ) (v/d)
     172IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on ) (v/d)
    173173ViewSynthesisPred                   : 1                # View synthesis prediction
    174174DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
  • branches/HTM-8.2-dev0/cfg/3D-HEVC/baseCfg_3view+depth.cfg

    r696 r712  
    227227IvMvPred                            : 1 1              # Inter-view motion prediction
    228228AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    229 IlluCompEnable                      : 1 1              # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
     229IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
    230230ViewSynthesisPred                   : 1                # View synthesis prediction
    231231DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
     
    237237VSO                       : 1                                      # use of view synthesis optimization for depth coding
    238238DMM                                : 1
    239 RBC                                : 1
    240239SDC                                : 1
    241240DLT                                : 1
  • branches/HTM-8.2-dev0/cfg/3D-HEVC/fullCfg.cfg

    r696 r712  
    254254IvMvPred                            : 1                # Inter-view motion prediction
    255255AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    256 IlluCompEnable                      : 1 1              # Enable Illumination compensation ( 0: off, 1: on ) (v/d)
     256IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on ) (v/d)
    257257ViewSynthesisPred                   : 1                # View synthesis prediction
    258258DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
     
    262262VSO                       : 1                          # use of view synthesis optimization for depth coding
    263263DMM                                : 1
    264 RBC                                : 1
    265264SDC                                : 1
    266265DLT                                : 1
  • branches/HTM-8.2-dev0/source/App/TAppEncoder/TAppEncCfg.cpp

    r696 r712  
    378378#if H_3D_DIM
    379379  ("DMM",                   m_useDMM,           true,  "Depth intra model modes")
     380#if !SEC_DMM3_RBC_F0147
    380381  ("RBC",                   m_useRBC,           true,  "Region boundary chain mode")
     382#endif
    381383  ("SDC",                   m_useSDC,           true,  "Simplified depth coding")
    382384  ("DLT",                   m_useDLT,           true,  "Depth lookup table")
     
    509511#endif
    510512#if H_3D_IC
     513#if SEC_ONLY_TEXTURE_IC_F0151
     514  ("IlluCompEnable",           m_abUseIC, true, "Enable illumination compensation")
     515#else
    511516  ("IlluCompEnable",           m_abUseIC, std::vector<Bool>(2, true), "Enable illumination compensation")
     517#endif
    512518#endif
    513519#if H_3D_INTER_SDC
     
    24312437#endif
    24322438#if H_3D_IC
     2439#if SEC_ONLY_TEXTURE_IC_F0151
     2440  printf( "IlluCompEnable: %d ", m_abUseIC);
     2441#else
    24332442  printf( "IlluCompEnable: %d %d ", m_abUseIC[0] ? 1 : 0, m_abUseIC[1] ? 1 : 0 );
     2443#endif
    24342444#endif
    24352445#if H_3D_NBDV_REF
     
    24442454#if H_3D_DIM
    24452455  printf("DMM:%d ", m_useDMM );
     2456#if !SEC_DMM3_RBC_F0147
    24462457  printf("RBC:%d ", m_useRBC );
     2458#endif
    24472459  printf("SDC:%d ", m_useSDC );
    24482460  printf("DLT:%d ", m_useDLT );
  • branches/HTM-8.2-dev0/source/App/TAppEncoder/TAppEncCfg.h

    r696 r712  
    126126#endif
    127127#if H_3D_IC
     128#if SEC_ONLY_TEXTURE_IC_F0151
     129  Bool   m_abUseIC;
     130#else
    128131  vector<Bool> m_abUseIC;                                    ///< flag for using illumination compensation for inter-view prediction
     132#endif
    129133#endif
    130134#if H_3D_NBDV_REF
     
    465469#if H_3D_DIM
    466470  Bool      m_useDMM;                                        ///< flag for using DMM
     471#if !SEC_DMM3_RBC_F0147
    467472  Bool      m_useRBC;                                        ///< flag for using RBC
     473#endif
    468474  Bool      m_useSDC;                                        ///< flag for using SDC
    469475  Bool      m_useDLT;                                        ///< flag for using DLT
  • branches/HTM-8.2-dev0/source/App/TAppEncoder/TAppEncTop.cpp

    r696 r712  
    184184#endif
    185185#if H_3D_IC
     186#if SEC_ONLY_TEXTURE_IC_F0151
     187    m_cTEncTop.setUseIC                        ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC );
     188#else
    186189    m_cTEncTop.setUseIC                        ( vps.getViewIndex( layerId ) == 0 ? false : m_abUseIC[isDepth ? 1 : 0] );
     190#endif
    187191#endif
    188192  //========== Depth intra modes ==========
    189193#if H_3D_DIM
    190194    m_cTEncTop.setUseDMM                       ( isDepth ? m_useDMM               : false );
     195#if !SEC_DMM3_RBC_F0147
    191196    m_cTEncTop.setUseRBC                       ( isDepth ? m_useRBC               : false );
     197#endif
    192198    m_cTEncTop.setUseSDC                       ( isDepth ? m_useSDC               : false );
    193199    m_cTEncTop.setUseDLT                       ( isDepth ? m_useDLT               : false );
     
    16511657
    16521658#if H_3D_DIM
     1659#if SEC_DMM3_RBC_F0147
     1660    vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useSDC || m_useDLT ) );
     1661#else
    16531662    vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useRBC || m_useSDC || m_useDLT ) );
     1663#endif
    16541664#if H_3D_DIM_DLT
    16551665    vps.setUseDLTFlag( layer , isDepth && m_useDLT );
  • branches/HTM-8.2-dev0/source/Lib/TLibCommon/ContextTables.h

    r710 r712  
    109109#define NUM_DEPTH_INTRA_MODE_CTX      8       ///< number of context models for depth intra modes
    110110#define NUM_DDC_FLAG_CTX              2       ///< number of context models for deltaDC flag (DMM or RBC)
     111#if QC_DIM_DELTADC_UNIFY_F0132
     112#define NUM_DDC_DATA_CTX              1       ///< number of context models for deltaDC data (DMM or RBC)
     113#else
    111114#define NUM_DDC_DATA_CTX              2       ///< number of context models for deltaDC data (DMM or RBC)
     115#endif
    112116#if H_3D_DIM_DMM
    113117#define NUM_DMM1_DATA_CTX             1       ///< number of context models for DMM1 data
     118#if !SEC_DMM3_RBC_F0147
    114119#define NUM_DMM3_DATA_CTX             1       ///< number of context models for DMM3 data
     120#endif
    115121#endif
    116122#if H_3D_DIM_RBC
     
    387393INIT_IC_FLAG[3][NUM_IC_FLAG_CTX] = 
    388394{
     395#if LGE_IC_CTX_F0160
     396    { 154,  154,  154, },
     397    { 154,  154,  154, },
     398    { 154,  154,  154, },
     399#else
    389400  { CNU,  CNU,  CNU, },
    390401  { 197,  185,  201, },
    391402  { 197,  185,  201, },
     403#endif
    392404};
    393405#endif
     
    411423INIT_DDC_DATA[3][NUM_DDC_DATA_CTX] =
    412424{
     425#if QC_DIM_DELTADC_UNIFY_F0132
     426  { 154 },
     427  { 154 },
     428  { 154 },
     429#else
    413430  { CNU, CNU },
    414431  { CNU, CNU },
    415432  { CNU, CNU },
     433#endif
    416434};
    417435#if H_3D_DIM_DMM
     
    423441  { CNU },
    424442};
     443#if !SEC_DMM3_RBC_F0147
    425444static const UChar
    426445INIT_DMM3_DATA[3][NUM_DMM3_DATA_CTX] =
     
    430449  { CNU },
    431450};
     451#endif
    432452#endif
    433453#if H_3D_DIM_RBC
  • branches/HTM-8.2-dev0/source/Lib/TLibCommon/TComDataCU.cpp

    r708 r712  
    120120    m_dmmWedgeTabIdx[i] = NULL;
    121121  }
     122#if !SEC_DMM3_RBC_F0147
    122123  m_dmm3IntraTabIdx = NULL;
     124#endif
    123125#endif
    124126#if H_3D_DIM_RBC
     
    271273      m_dmmWedgeTabIdx[i]    = (UInt*)xMalloc(UInt, uiNumPartition);
    272274    }
     275#if !SEC_DMM3_RBC_F0147
    273276    m_dmm3IntraTabIdx = (UInt*)xMalloc(UInt, uiNumPartition);
     277#endif
    274278#endif
    275279#if H_3D_DIM_RBC
     
    404408      if ( m_dmmWedgeTabIdx[i] ) { xFree( m_dmmWedgeTabIdx[i] ); m_dmmWedgeTabIdx[i] = NULL; }
    405409    }
     410#if !SEC_DMM3_RBC_F0147
    406411    if ( m_dmm3IntraTabIdx ) { xFree( m_dmm3IntraTabIdx ); m_dmm3IntraTabIdx = NULL; }
     412#endif
    407413#endif
    408414#if H_3D_DIM_RBC
     
    622628      memset( m_dmmWedgeTabIdx[i] + firstElement, 0,                      numElements * sizeof( *m_dmmWedgeTabIdx[i] ) );
    623629    }
     630#if !SEC_DMM3_RBC_F0147
    624631    memset( m_dmm3IntraTabIdx   + firstElement, 0,                        numElements * sizeof( *m_dmm3IntraTabIdx ) );
     632#endif
    625633#endif
    626634#if H_3D_DIM_RBC
     
    799807        m_dmmWedgeTabIdx[i] [ui] = 0;
    800808      }
     809#if !SEC_DMM3_RBC_F0147
    801810      m_dmm3IntraTabIdx [ui] = 0;
     811#endif
    802812#endif
    803813#if H_3D_DIM_SDC
     
    910920    memset( m_dmmWedgeTabIdx[i], 0, sizeof(UInt) * m_uiNumPartition );
    911921  }
     922#if !SEC_DMM3_RBC_F0147
    912923  memset( m_dmm3IntraTabIdx, 0, sizeof(UInt) * m_uiNumPartition );
     924#endif
    913925#endif
    914926#if H_3D_DIM_RBC
     
    9921004        m_dmmWedgeTabIdx[i] [ui] = pcCU->m_dmmWedgeTabIdx[i] [uiPartOffset+ui];
    9931005      }
     1006#if !SEC_DMM3_RBC_F0147
    9941007      m_dmm3IntraTabIdx [ui] = pcCU->m_dmm3IntraTabIdx[uiPartOffset+ui];
     1008#endif
    9951009#endif
    9961010#if H_3D_DIM_SDC
     
    11461160    m_dmmWedgeTabIdx[i] = pcCU->getDmmWedgeTabIdx( i ) + uiPart;
    11471161  }
     1162#if !SEC_DMM3_RBC_F0147
    11481163  m_dmm3IntraTabIdx = pcCU->getDmm3IntraTabIdx() + uiPart;
     1164#endif
    11491165#endif
    11501166#if H_3D_DIM_RBC
     
    13421358    memcpy( m_dmmWedgeTabIdx[i] + uiOffset, pcCU->getDmmWedgeTabIdx( i ), sizeof(UInt) * uiNumPartition );
    13431359  }
     1360#if !SEC_DMM3_RBC_F0147
    13441361  memcpy( m_dmm3IntraTabIdx + uiOffset, pcCU->getDmm3IntraTabIdx(), sizeof(UInt) * uiNumPartition );
     1362#endif
    13451363#endif
    13461364#if H_3D_DIM_RBC
     
    14691487    memcpy( rpcCU->getDmmWedgeTabIdx( i ) + m_uiAbsIdxInLCU, m_dmmWedgeTabIdx[i], sizeof(UInt) * m_uiNumPartition );
    14701488  }
     1489#if !SEC_DMM3_RBC_F0147
    14711490  memcpy( rpcCU->getDmm3IntraTabIdx() + m_uiAbsIdxInLCU, m_dmm3IntraTabIdx, sizeof(UInt) * m_uiNumPartition );
     1491#endif
    14721492#endif
    14731493#if H_3D_DIM_RBC
     
    15821602    memcpy( rpcCU->getDmmWedgeTabIdx( i ) + uiPartOffset, m_dmmWedgeTabIdx[i], sizeof(UInt) * uiQNumPart );
    15831603  }
     1604#if !SEC_DMM3_RBC_F0147
    15841605  memcpy( rpcCU->getDmm3IntraTabIdx() + uiPartOffset, m_dmm3IntraTabIdx, sizeof(UInt) * uiQNumPart );
     1606#endif
    15851607#endif
    15861608#if H_3D_DIM_RBC
     
    23132335{
    23142336  UInt        uiCtx = 0;
     2337
     2338#if LGE_IC_CTX_F0160
     2339  TComDataCU* pcTempCU = NULL;
     2340  UInt        uiTempPartIdx = 0;
     2341
     2342  pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
     2343  uiCtx    = ( pcTempCU ) ? pcTempCU->isIC( uiTempPartIdx ) : 0;
     2344
     2345  pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
     2346  uiCtx    += ( pcTempCU ) ? pcTempCU->isIC( uiTempPartIdx ) : 0;
     2347#endif
    23152348
    23162349  return uiCtx;
     
    66476680}
    66486681
     6682#if LGE_IC_CTX_F0160
     6683Bool TComDataCU::isIC( UInt uiPartIdx )
     6684{
     6685    if ( m_pcSlice->isIntra () )
     6686    {
     6687        return false;
     6688    }
     6689    return ( ( getSkipFlag(uiPartIdx) || getPredictionMode(uiPartIdx) == MODE_INTER) && getICFlag( uiPartIdx ) && isICFlagRequired( uiPartIdx ) );
     6690}
     6691#endif
     6692
    66496693// ====================================================================================================================
    66506694// Protected member functions
     
    83048348  for( UInt ui = 0; ui < uiCurrPartNumb; ui++ ) { m_dmmWedgeTabIdx[dmmType][uiAbsPartIdx+ui] = tabIdx; }
    83058349}
     8350#if !SEC_DMM3_RBC_F0147
    83068351Void  TComDataCU::setDmm3IntraTabIdxSubParts( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth )
    83078352{
     
    83098354  for( UInt ui = 0; ui < uiCurrPartNumb; ui++ ) { m_dmm3IntraTabIdx[uiAbsPartIdx+ui] = uiTIdx; }
    83108355}
     8356#endif
    83118357#endif
    83128358#if H_3D_DIM_RBC
  • branches/HTM-8.2-dev0/source/Lib/TLibCommon/TComDataCU.h

    r708 r712  
    208208#if H_3D_DIM_DMM
    209209  UInt*         m_dmmWedgeTabIdx[DMM_NUM_TYPE];
     210#if !SEC_DMM3_RBC_F0147
    210211  UInt*         m_dmm3IntraTabIdx;
     212#endif
    211213#endif
    212214#if H_3D_DIM_RBC
     
    570572  Void  setDmmWedgeTabIdxSubParts     ( UInt tabIdx, UInt dmmType, UInt uiAbsPartIdx, UInt uiDepth );
    571573
     574#if !SEC_DMM3_RBC_F0147
    572575  UInt* getDmm3IntraTabIdx            ()                      { return m_dmm3IntraTabIdx;        }
    573576  UInt  getDmm3IntraTabIdx            ( UInt uiIdx )          { return m_dmm3IntraTabIdx[uiIdx]; }
    574577  Void  setDmm3IntraTabIdx            ( UInt uiIdx, UInt uh ) { m_dmm3IntraTabIdx[uiIdx] = uh;   }
    575578  Void  setDmm3IntraTabIdxSubParts    ( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth );
     579#endif
    576580#endif
    577581#if H_3D_DIM_RBC
     
    725729  Bool          isSkipped ( UInt uiPartIdx );                                                     ///< SKIP (no residual)
    726730  Bool          isBipredRestriction( UInt puIdx );
     731
     732#if LGE_IC_CTX_F0160
     733  Bool          isIC      ( UInt uiPartIdx );
     734#endif
    727735
    728736  // -------------------------------------------------------------------------------------------------------------------
  • branches/HTM-8.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp

    r710 r712  
    425425  Bool dimDeltaDC = isDimDeltaDC( uiIntraMode );   
    426426  Bool isDmmMode  = (dimType <  DMM_NUM_TYPE);
     427#if !SEC_DMM3_RBC_F0147
    427428  Bool isRbcMode  = (dimType == RBC_IDX);
     429#endif
    428430
    429431  Bool* biSegPattern  = NULL;
     
    441443        dmmSegmentation = &(g_dmmWedgeLists[ g_aucConvertToBit[iWidth] ][ pcCU->getDmmWedgeTabIdx( dimType, uiAbsPartIdx ) ]);
    442444      } break;
     445#if !SEC_DMM3_RBC_F0147
    443446    case( DMM3_IDX ):
    444447      {
     
    452455        dmmSegmentation = &(g_dmmWedgeLists[ g_aucConvertToBit[iWidth] ][ uiTabIdx ]);
    453456      } break;
     457#endif
    454458    case( DMM4_IDX ):
    455459      {
     
    475479  assert( biSegPattern );
    476480  Int* piMask = NULL;
     481#if QC_DIM_DELTADC_UNIFY_F0132 || HHI_DIM_PREDSAMP_FIX_F0171
     482  piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt ); // no filtering
     483#else
    477484  if( isDmmMode ) piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt ); // no filtering for DMM
    478485  else            piMask = pcCU->getPattern()->getPredictorPtr( 0, g_aucConvertToBit[ iWidth ] + 2, m_piYuvExt );
     486#endif
    479487  assert( piMask );
    480488  Int maskStride = 2*iWidth + 1; 
     
    491499    Pel deltaDC2 = pcCU->getDimDeltaDC( dimType, 1, uiAbsPartIdx );
    492500#if H_3D_DIM_DMM
     501#if QC_DIM_DELTADC_UNIFY_F0132 && !SEC_DMM3_RBC_F0147
     502    if( isDmmMode || isRbcMode)
     503#else
    493504    if( isDmmMode )
     505#endif
    494506    {
    495507#if H_3D_DIM_DLT
     
    502514    }
    503515#endif
    504 #if H_3D_DIM_RBC
     516#if H_3D_DIM_RBC && !QC_DIM_DELTADC_UNIFY_F0132
    505517    if( isRbcMode )
    506518    {
     
    23982410
    23992411#if H_3D_DIM_DMM
     2412#if !SEC_DMM3_RBC_F0147
    24002413UInt TComPrediction::xPredWedgeFromTex( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt intraTabIdx )
    24012414{
     
    24092422  return g_aauiWdgLstM3[g_aucConvertToBit[uiWidth]][uiColTexIntraDir-2].at(intraTabIdx);
    24102423}
     2424#endif
    24112425
    24122426Void TComPrediction::xPredContourFromTex( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, TComWedgelet* pcContourWedge )
  • branches/HTM-8.2-dev0/source/Lib/TLibCommon/TComRom.cpp

    r655 r712  
    604604std::vector< std::vector<TComWedgeRef>  > g_dmmWedgeRefLists;
    605605std::vector< std::vector<TComWedgeNode> > g_dmmWedgeNodeLists;
     606#if !SEC_DMM3_RBC_F0147
    606607std::vector< std::vector< std::vector<UInt> > > g_aauiWdgLstM3;
     608#endif
    607609
    608610Void initWedgeLists( Bool initNodeList )
     
    723725  }
    724726
     727#if !SEC_DMM3_RBC_F0147
    725728  UInt uiThrSz = DMM3_SIMPLIFY_TR;
    726729  std::vector< std::vector<UInt> > auiWdgListSz;
     
    739742  }
    740743  g_aauiWdgLstM3.push_back(auiWdgListSz);
     744#endif
    741745}
    742746
  • branches/HTM-8.2-dev0/source/Lib/TLibCommon/TComRom.h

    r655 r712  
    172172extern       std::vector< std::vector<TComWedgeRef> >        g_dmmWedgeRefLists;
    173173extern       std::vector< std::vector<TComWedgeNode> >       g_dmmWedgeNodeLists;
     174#if !SEC_DMM3_RBC_F0147
    174175extern       std::vector< std::vector< std::vector<UInt> > > g_aauiWdgLstM3;
     176#endif
    175177
    176178Void initWedgeLists( Bool initNodeList = false );
  • branches/HTM-8.2-dev0/source/Lib/TLibCommon/TComWedgelet.h

    r655 r712  
    5050enum DIM_IDX
    5151{
     52#if SEC_DMM3_RBC_F0147
     53  DMM1_IDX = 0,
     54  DMM4_IDX = 1,
     55#else
    5256  DMM1_IDX = 0,
    5357  DMM3_IDX = 1,
    5458  DMM4_IDX = 2,
    5559  RBC_IDX  = 3
     60#endif
    5661};
    5762
     63#if SEC_DMM3_RBC_F0147
     64#define DMM_NUM_TYPE   2
     65#define DIM_NUM_TYPE   (DMM_NUM_TYPE)
     66#else
    5867#define DMM_NUM_TYPE   3
    5968#define RBC_NUM_TYPE   1
    6069#define DIM_NUM_TYPE   (DMM_NUM_TYPE+RBC_NUM_TYPE)
     70#endif
    6171#define DIM_NO_IDX     MAX_UINT
    6272
     
    7585#define DMM_NO_WEDGEINDEX       MAX_UINT
    7686#define DMM_NUM_WEDGE_REFINES   8
     87#if !SEC_DMM3_RBC_F0147
    7788#define DMM3_SIMPLIFY_TR        1
     89#endif
    7890
    7991enum WedgeResolution
  • branches/HTM-8.2-dev0/source/Lib/TLibCommon/TypeDef.h

    r711 r712  
    6565#define H_3D          ( HEVC_EXT == 2)
    6666
     67#define LGE_BUGFIX_F0158 1 //JCT3V-F0158
    6768/////////////////////////////////////////////////////////////////////////////////////////
    6869///////////////////////////////////   MAJOR DEFINES   /////////////////////////////////// 
     
    103104                                              // MTK_CLIPPING_ALIGN_IC_E0168       // To support simplify bi-prediction PU with identical motion checking, JCT3V-E0168
    104105
     106#define LGE_IC_CTX_F0160 1 //JCT3V-F0160
     107#define SEC_ONLY_TEXTURE_IC_F0151         1
     108
    105109#if H_3D_NBDV
    106110#define H_3D_NBDV_REF                     1   // Depth oriented neighboring block disparity derivation
     
    158162                                              // LGE_SDC_REMOVE_DC_E0158 Removal of DC mode from SDC
    159163                                              // LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 1   Removal of overlap between DMM3 and DMM1
     164#define SEC_DMM3_RBC_F0147                1   // Removal of DMM3 and RBC from DMMs
    160165
    161166#define H_3D_INTER_SDC                    1   // INTER SDC, Inter simplified depth coding
     
    213218#if H_3D_DIM
    214219#define H_3D_DIM_DMM                      1   // Depth Modeling Modes
     220#if !SEC_DMM3_RBC_F0147
    215221#define H_3D_DIM_RBC                      1   // Region Boundary Chain mode
     222#endif
    216223#define H_3D_DIM_SDC                      1   // Simplified Depth Coding method
    217224#define H_3D_DIM_DLT                      1   // Depth Lookup Table
     
    219226                                              // HHI_DEPTH_INTRA_SEARCH_RAU_C0160
    220227                                              // LG_ZEROINTRADEPTHRESI_A0087
     228#define QC_DIM_DELTADC_UNIFY_F0132        1   // Unify delta DC coding in depth intra modes
     229#define HHI_DIM_PREDSAMP_FIX_F0171        1
     230#define LGE_PRED_RES_CODING_DLT_DOMAIN_F0159 1 //JCT3V-F0159
    221231#endif
    222232///// ***** VIEW SYNTHESIS PREDICTION *********
  • branches/HTM-8.2-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r696 r712  
    18031803    }
    18041804#if H_3D_IC
     1805#if SEC_ONLY_TEXTURE_IC_F0151
     1806    else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) && !rpcSlice->getIsDepth())
     1807#else
    18051808    else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) )
     1809#endif
    18061810    {
    18071811      UInt uiCodeTmp = 0;
  • branches/HTM-8.2-dev0/source/Lib/TLibDecoder/TDecCu.cpp

    r708 r712  
    741741    for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    742742    {
     743#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
     744        if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
     745        {
     746            pReco    [ uiX ] = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) );
     747        }
     748        else
     749        {
    743750      pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
     751        }
     752#else
     753      pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
     754#endif
    744755      pRecIPred[ uiX ] = pReco[ uiX ];
    745756    }
  • branches/HTM-8.2-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp

    r708 r712  
    111111  pcCU->setICFlagSubParts( false , uiAbsPartIdx, 0, uiDepth );
    112112
     113#if SEC_ONLY_TEXTURE_IC_F0151
     114  if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) || pcCU->getSlice()->getIsDepth() )
     115#else
    113116  if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) )
     117#endif
    114118  {
    115119    return;
  • branches/HTM-8.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp

    r655 r712  
    8989#if H_3D_DIM_DMM
    9090, m_cDmm1DataSCModel          ( 1,             1,               NUM_DMM1_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
     91#if !SEC_DMM3_RBC_F0147
    9192, m_cDmm3DataSCModel          ( 1,             1,               NUM_DMM3_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
     93#endif
    9294#endif
    9395#if H_3D_DIM_RBC
     
    176178#if H_3D_DIM_DMM
    177179  m_cDmm1DataSCModel.initBuffer          ( sliceType, qp, (UChar*)INIT_DMM1_DATA );
     180#if !SEC_DMM3_RBC_F0147
    178181  m_cDmm3DataSCModel.initBuffer          ( sliceType, qp, (UChar*)INIT_DMM3_DATA );
     182#endif
    179183#endif
    180184#if H_3D_DIM_RBC
     
    249253#if H_3D_DIM_DMM
    250254  m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
     255#if !SEC_DMM3_RBC_F0147
    251256  m_cDmm3DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA );
     257#endif
    252258#endif
    253259#if H_3D_DIM_RBC
     
    408414}
    409415
     416#if QC_DIM_DELTADC_UNIFY_F0132
     417Void TDecSbac::xParseDimDeltaDC( Pel& rValDeltaDC, UInt uiNumSeg )
     418{
     419  UInt absValDeltaDC = 0;
     420  xReadExGolombLevel( absValDeltaDC, m_cDdcDataSCModel.get(0, 0, 0) );
     421  rValDeltaDC = (Pel)absValDeltaDC + ( uiNumSeg > 1 ? 0 : 1 );
     422
     423  if( rValDeltaDC != 0 )
     424  {
     425    UInt uiSign;
     426    m_pcTDecBinIf->decodeBinEP( uiSign );
     427    if ( uiSign )
     428    {
     429      rValDeltaDC = -rValDeltaDC;
     430    }
     431  }
     432}
     433#else
    410434Void TDecSbac::xParseDimDeltaDC( Pel& rValDeltaDC, UInt dimType )
    411435{
     
    424448  }
    425449}
     450#endif
     451
    426452#if H_3D_DIM_DMM
    427453Void TDecSbac::xParseDmm1WedgeIdx( UInt& ruiTabIdx, Int iNumBit )
     
    435461  ruiTabIdx = uiIdx;
    436462}
    437 
     463#if !SEC_DMM3_RBC_F0147
    438464Void TDecSbac::xParseDmm3WedgeIdx( UInt& ruiIntraIdx, Int iNumBit )
    439465{
     
    446472  ruiIntraIdx = uiIdx;
    447473}
     474#endif
    448475#endif
    449476#if H_3D_DIM_RBC
     
    11401167      pcCU->setDmmWedgeTabIdxSubParts( uiTabIdx, dimType, absPartIdx, depth );
    11411168    } break;
     1169#if !SEC_DMM3_RBC_F0147
    11421170  case( DMM3_IDX ):
    11431171    {
     
    11461174      pcCU->setDmm3IntraTabIdxSubParts( uiIntraIdx, absPartIdx, depth );
    11471175    } break;
     1176#endif
    11481177  case( DMM4_IDX ): break;
    11491178#endif
     
    11571186  }
    11581187
    1159 #if H_3D_DIM_SDC
     1188#if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132
    11601189  if( pcCU->getSDCFlag(absPartIdx) )
    11611190  {
     
    11731202  {
    11741203#endif
     1204#if QC_DIM_DELTADC_UNIFY_F0132
     1205    if( dimType < DIM_NUM_TYPE || pcCU->getSDCFlag( absPartIdx ) )
     1206#else
    11751207    if( dimType < DIM_NUM_TYPE )
     1208#endif
    11761209    {
    11771210      UInt symbol;
     1211#if QC_DIM_DELTADC_UNIFY_F0132
     1212      UInt uiNumSegments = ( dir == PLANAR_IDX ) ? 1 : 2;
     1213
     1214      if( pcCU->getSDCFlag( absPartIdx ) )
     1215      {
     1216        assert(pcCU->getPartitionSize(absPartIdx)==SIZE_2Nx2N);
     1217        pcCU->setTrIdxSubParts(0, absPartIdx, depth);
     1218        pcCU->setCbfSubParts(1, 1, 1, absPartIdx, depth);
     1219      }
     1220
     1221      m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get(0, 0, uiNumSegments-1) );
     1222
     1223      if( symbol )
     1224      {
     1225        if( !pcCU->getSDCFlag( absPartIdx ) )
     1226        {
     1227          dir += symbol;
     1228        }
     1229      }
     1230      for( UInt segment = 0; segment < uiNumSegments; segment++ )
     1231      {
     1232        Pel valDeltaDC = 0;
     1233        if( symbol )
     1234        {
     1235          xParseDimDeltaDC( valDeltaDC, uiNumSegments );
     1236        }
     1237
     1238        if( pcCU->getSDCFlag( absPartIdx ) )
     1239        {
     1240          pcCU->setSDCSegmentDCOffset( valDeltaDC, segment, absPartIdx );
     1241        }
     1242        else
     1243        {
     1244          pcCU->setDimDeltaDC( dimType, segment, absPartIdx, valDeltaDC );
     1245        }
     1246      }
     1247#else
    11781248      m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get(0, 0, (RBC_IDX == dimType) ? 1 : 0) );
    11791249      if( symbol )
     
    11871257        }
    11881258      }
    1189     }
    1190 #if H_3D_DIM_SDC
     1259#endif
     1260    }
     1261#if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132
    11911262  }
    11921263#endif
     
    12181289  else if( puIdx == 0 )
    12191290  {
     1291#if SEC_DMM3_RBC_F0147
     1292    while( binNum < 1 && symbol )
     1293#else
    12201294    while( binNum < 3 && symbol )
     1295#endif
    12211296    {
    12221297      ctxDepthMode = puIdx*3 + ((binNum >= 2) ? 2 : binNum);
     
    12251300      binNum++;
    12261301    }
     1302#if SEC_DMM3_RBC_F0147
     1303    if( modeCode == 0 ) { dir = 0;                       sdcFlag = 0;}
     1304    else if( modeCode == 1 ) { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 0;}
     1305#else
    12271306         if( modeCode == 0 ) { dir = 0;                       sdcFlag = 0;}
    12281307    else if( modeCode == 2 ) { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 0;}
    12291308    else if( modeCode == 6 ) { dir = (2*DMM3_IDX+DIM_OFFSET); sdcFlag = 0;}
    12301309    else if( modeCode == 7 ) { dir = (2* RBC_IDX+DIM_OFFSET); sdcFlag = 0;}
     1310#endif
    12311311  }
    12321312  else
    12331313  {
     1314#if SEC_DMM3_RBC_F0147
     1315    while( binNum < 4 && symbol )
     1316    {
     1317      ctxDepthMode = puIdx*3 + ((binNum >= 2) ? 2 : binNum);
     1318      m_pcTDecBinIf->decodeBin( symbol, m_cDepthIntraModeSCModel.get(0,0,ctxDepthMode) );
     1319      modeCode = (modeCode<<1) + symbol;
     1320      binNum++;
     1321    }
     1322    if ( modeCode == 0 )        { dir =  PLANAR_IDX;             sdcFlag = 1;}
     1323    else if ( modeCode == 2 )   { dir = 5;                       sdcFlag = 0;}
     1324    else if ( modeCode == 6 )   { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 1;}
     1325    else if ( modeCode == 14 )  { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 0;}
     1326    else if ( modeCode == 15 )  { dir = (2*DMM4_IDX+DIM_OFFSET); sdcFlag = 0;}
     1327#else
    12341328    UInt maxBinNum = 0;
    12351329    m_pcTDecBinIf->decodeBinEP(symbol);
     
    12631357      else if ( modeCode == 3 )  { dir = (2*DMM4_IDX+DIM_OFFSET); sdcFlag = 0;}
    12641358    }
     1359#endif
    12651360  }
    12661361  pcCU->setLumaIntraDirSubParts( (UChar)dir, absPartIdx, depth );
  • branches/HTM-8.2-dev0/source/Lib/TLibDecoder/TDecSbac.h

    r655 r712  
    9999#if H_3D_DIM
    100100  Void  xReadExGolombLevel   ( UInt& ruiSymbol, ContextModel& rcSCModel  );
     101#if QC_DIM_DELTADC_UNIFY_F0132
     102  Void  xParseDimDeltaDC     ( Pel& rValDeltaDC, UInt uiNumSeg );
     103#else
    101104  Void  xParseDimDeltaDC     ( Pel& rValDeltaDC, UInt dimType );
     105#endif
    102106#if H_3D_DIM_DMM
    103107  Void  xParseDmm1WedgeIdx   ( UInt& ruiTabIdx, Int iNumBit );
     108#if !SEC_DMM3_RBC_F0147
    104109  Void  xParseDmm3WedgeIdx   ( UInt& ruiIntraIdx, Int iNumBit );
     110#endif
    105111#endif
    106112#if H_3D_DIM_RBC
     
    213219#if H_3D_DIM_DMM
    214220  ContextModel3DBuffer m_cDmm1DataSCModel;
     221#if !SEC_DMM3_RBC_F0147
    215222  ContextModel3DBuffer m_cDmm3DataSCModel;
     223#endif
    216224#endif
    217225#if H_3D_DIM_RBC
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp

    r696 r712  
    13961396    }
    13971397#if H_3D_IC
     1398#if SEC_ONLY_TEXTURE_IC_F0151
     1399    else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth())
     1400#else
    13981401    else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) )
     1402#endif
    13991403    {
    14001404      WRITE_FLAG( pcSlice->getApplyIC() ? 1 : 0, "slice_ic_enable_flag" );
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncCfg.h

    r696 r712  
    412412#if H_3D_DIM
    413413  Bool      m_useDMM;
     414#if !SEC_DMM3_RBC_F0147
    414415  Bool      m_useRBC;
     416#endif
    415417  Bool      m_useSDC;
    416418  Bool      m_useDLT;
     
    983985  Bool      getUseDMM                       ()        { return m_useDMM; }
    984986  Void      setUseDMM                       ( Bool b) { m_useDMM = b;    }
     987#if !SEC_DMM3_RBC_F0147
    985988  Bool      getUseRBC                       ()        { return m_useRBC; }
    986989  Void      setUseRBC                       ( Bool b) { m_useRBC = b;    }
     990#endif
    987991  Bool      getUseSDC                       ()        { return m_useSDC; }
    988992  Void      setUseSDC                       ( Bool b) { m_useSDC = b;    }
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncCu.cpp

    r711 r712  
    497497#endif
    498498#if H_3D_IC
     499#if SEC_ONLY_TEXTURE_IC_F0151
     500  Bool bICEnabled = rpcTempCU->getSlice()->getViewIndex() && ( rpcTempCU->getSlice()->getSliceType() == P_SLICE || rpcTempCU->getSlice()->getSliceType() == B_SLICE ) && !rpcTempCU->getSlice()->getIsDepth();
     501#else
    499502  Bool bICEnabled = rpcTempCU->getSlice()->getViewIndex() && ( rpcTempCU->getSlice()->getSliceType() == P_SLICE || rpcTempCU->getSlice()->getSliceType() == B_SLICE );
     503#endif
    500504  bICEnabled = bICEnabled && rpcTempCU->getSlice()->getApplyIC();
    501505#endif
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp

    r655 r712  
    160160Void TEncEntropy::encodeICFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
    161161{
     162#if SEC_ONLY_TEXTURE_IC_F0151
     163  if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) || pcCU->getSlice()->getIsDepth() )
     164#else
    162165  if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) )
     166#endif
    163167  {
    164168    return;
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSbac.cpp

    r655 r712  
    9595#if H_3D_DIM_DMM
    9696, m_cDmm1DataSCModel          ( 1,             1,               NUM_DMM1_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
     97#if !SEC_DMM3_RBC_F0147
    9798, m_cDmm3DataSCModel          ( 1,             1,               NUM_DMM3_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
     99#endif
    98100#endif
    99101#if H_3D_DIM_RBC
     
    174176#if H_3D_DIM_DMM
    175177  m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
     178#if !SEC_DMM3_RBC_F0147
    176179  m_cDmm3DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA );
     180#endif
    177181#endif
    178182#if H_3D_DIM_RBC
     
    262266#if H_3D_DIM_DMM
    263267      curCost += m_cDmm1DataSCModel.calcCost          ( curSliceType, qp, (UChar*)INIT_DMM1_DATA );
     268#if !SEC_DMM3_RBC_F0147
    264269      curCost += m_cDmm3DataSCModel.calcCost          ( curSliceType, qp, (UChar*)INIT_DMM3_DATA );
     270#endif
    265271#endif
    266272#if H_3D_DIM_RBC
     
    331337#if H_3D_DIM_DMM
    332338  m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
     339#if !SEC_DMM3_RBC_F0147
    333340  m_cDmm3DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA );
     341#endif
    334342#endif
    335343#if H_3D_DIM_RBC
     
    518526}
    519527
     528#if QC_DIM_DELTADC_UNIFY_F0132
     529Void TEncSbac::xCodeDimDeltaDC( Pel valDeltaDC, UInt uiNumSeg )
     530{
     531  xWriteExGolombLevel( UInt( abs( valDeltaDC ) - ( uiNumSeg > 1 ? 0 : 1 ) ), m_cDdcDataSCModel.get(0, 0, 0) );
     532  if( valDeltaDC != 0 )
     533  {
     534    UInt uiSign = valDeltaDC > 0 ? 0 : 1;
     535    m_pcBinIf->encodeBinEP( uiSign );
     536  }
     537}
     538#else
    520539Void TEncSbac::xCodeDimDeltaDC( Pel valDeltaDC, UInt dimType )
    521540{
     
    527546  }
    528547}
     548#endif
    529549
    530550#if H_3D_DIM_DMM
     
    537557}
    538558
     559#if !SEC_DMM3_RBC_F0147
    539560Void TEncSbac::xCodeDmm3WedgeIdx( UInt uiIntraIdx, Int iNumBit )
    540561{
     
    544565  }
    545566}
     567#endif
    546568#endif
    547569#if H_3D_DIM_RBC
     
    12091231      xCodeDmm1WedgeIdx( pcCU->getDmmWedgeTabIdx( dimType, absPartIdx ), g_dmm1TabIdxBits[pcCU->getIntraSizeIdx(absPartIdx)] );
    12101232    } break;
     1233#if !SEC_DMM3_RBC_F0147
    12111234  case( DMM3_IDX ):
    12121235    {
    12131236      xCodeDmm3WedgeIdx( pcCU->getDmm3IntraTabIdx( absPartIdx ), g_dmm3IntraTabIdxBits[pcCU->getIntraSizeIdx(absPartIdx)] );
    12141237    } break;
     1238#endif
    12151239  case( DMM4_IDX ): break;
    12161240#endif
     
    12251249  }
    12261250
    1227 #if H_3D_DIM_SDC
     1251#if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132
    12281252  if( pcCU->getSDCFlag( absPartIdx ) )
    12291253  {
     
    12381262  {
    12391263#endif
     1264#if QC_DIM_DELTADC_UNIFY_F0132
     1265    if( dimType < DIM_NUM_TYPE || pcCU->getSDCFlag( absPartIdx ) )
     1266#else
    12401267    if( dimType < DIM_NUM_TYPE )
    1241     {
     1268#endif
     1269    {
     1270#if QC_DIM_DELTADC_UNIFY_F0132
     1271      UInt dimDeltaDC;
     1272      Pel  deltaDC;
     1273      UInt uiNumSegments = ( dir == PLANAR_IDX ) ? 1 : 2;
     1274      if( pcCU->getSDCFlag( absPartIdx ) )
     1275    {
     1276        if( uiNumSegments==1 )
     1277        {
     1278          dimDeltaDC = pcCU->getSDCSegmentDCOffset(0, absPartIdx) ? 1 : 0;
     1279        }
     1280        else
     1281        {
     1282          dimDeltaDC = ( pcCU->getSDCSegmentDCOffset(0, absPartIdx) || pcCU->getSDCSegmentDCOffset(1, absPartIdx) ) ? 1 : 0;
     1283        }
     1284      }
     1285      else
     1286      {
     1287        dimDeltaDC = isDimDeltaDC( dir );
     1288      }
     1289
     1290      m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get(0, 0, uiNumSegments-1) );
     1291
     1292      if( dimDeltaDC )
     1293      {
     1294        for( UInt segment = 0; segment < uiNumSegments; segment++ )
     1295        {
     1296          deltaDC = pcCU->getSDCFlag( absPartIdx ) ? pcCU->getSDCSegmentDCOffset(segment, absPartIdx) : pcCU->getDimDeltaDC( dimType, segment, absPartIdx );
     1297          xCodeDimDeltaDC( deltaDC, uiNumSegments );
     1298        }
     1299      }
     1300#else
    12421301      UInt dimDeltaDC = isDimDeltaDC( dir );
    12431302      m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get(0, 0, (RBC_IDX == dimType) ? 1 : 0) );
     
    12491308        }
    12501309      }
    1251     }
    1252 #if H_3D_DIM_SDC
     1310#endif
     1311    }
     1312#if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132
    12531313  }
    12541314#endif
     
    12571317Void TEncSbac::codeIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx )
    12581318{
     1319#if SEC_DMM3_RBC_F0147
     1320  UInt codeWordTable[3][7] =    {{0, 0, 0, 1, 0, 0, 0},{0, 2, 6, 14, 15, 0, 0},{0, 1, 0, 0, 0, 0, 0}};
     1321  UInt codeWordLenTable[3][7] = {{0, 1, 0, 1, 0, 0, 0},{1, 2, 3,  4,  4, 0, 0},{1, 1, 0, 0, 0, 0, 0}};
     1322#else
    12591323    UInt codeWordTable[3][7] =    {{0, 0, 0, 2, 0,6, 7},{0, 0, 2, 7, 3, 6, 2},{0, 1, 0, 0, 0, 0, 0}};
    12601324    UInt codeWordLenTable[3][7] = {{0, 1, 0, 2, 0,3, 3},{1, 1, 2, 3, 2, 3, 2},{1, 1, 0, 0, 0, 0, 0}};
     1325#endif
    12611326  UInt dir = pcCU->getLumaIntraDir( absPartIdx );
    12621327  UInt puIdx = (pcCU->getWidth(absPartIdx) == 64) ? 2 : ( (pcCU->getPartitionSize(absPartIdx) == SIZE_NxN && pcCU->getWidth(absPartIdx) == 8) ? 0 : 1 );
     
    12731338    case DMM1_IDX: codeIdx = 3; break;
    12741339    case DMM4_IDX: codeIdx = 4; break;
     1340#if !SEC_DMM3_RBC_F0147
    12751341    case DMM3_IDX: codeIdx = 5; break;
    12761342    case  RBC_IDX: codeIdx = 6; break;
     1343#endif
    12771344    default:                    break;
    12781345    }
     
    12891356  }
    12901357#endif
     1358#if !SEC_DMM3_RBC_F0147
    12911359  if( puIdx==1 )
    12921360  {
     
    13001368      }
    13011369  }
     1370#endif
    13021371  //mode coding
    13031372  for( UInt i = 0; i < codeWordLenTable[puIdx][codeIdx]; i++ )
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSbac.h

    r655 r712  
    118118  #if H_3D_DIM
    119119  Void  xWriteExGolombLevel  ( UInt uiSymbol, ContextModel& rcSCModel  );
     120#if QC_DIM_DELTADC_UNIFY_F0132
     121  Void  xCodeDimDeltaDC      ( Pel valDeltaDC, UInt uiNumSeg );
     122#else
    120123  Void  xCodeDimDeltaDC      ( Pel valDeltaDC, UInt dimType );
     124#endif
    121125#if H_3D_DIM_DMM
    122126  Void  xCodeDmm1WedgeIdx    ( UInt uiTabIdx, Int iNumBit );
     127#if !SEC_DMM3_RBC_F0147
    123128  Void  xCodeDmm3WedgeIdx    ( UInt uiIntraIdx, Int iNumBit );
     129#endif
    124130#endif
    125131#if H_3D_DIM_RBC
     
    253259#if H_3D_DIM_DMM
    254260  ContextModel3DBuffer m_cDmm1DataSCModel;
     261#if !SEC_DMM3_RBC_F0147
    255262  ContextModel3DBuffer m_cDmm3DataSCModel;
     263#endif
    256264#endif
    257265#if H_3D_DIM_RBC
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSearch.cpp

    r708 r712  
    11261126      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    11271127      {
     1128#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
     1129          if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
     1130          {
     1131              pResi[ uiX ] = pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pOrg[ uiX ] ) - pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] );
     1132          }
     1133          else
     1134          {
     1135              pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ];
     1136          }
     1137#else
    11281138        pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ];
     1139#endif
    11291140      }
    11301141      pOrg  += uiStride;
     
    11901201      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    11911202      {
     1203#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
     1204          if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
     1205          {
     1206              pReco    [ uiX ] = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) );
     1207          }
     1208          else
     1209          {
     1210              pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
     1211          }
     1212#else
    11921213        pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
     1214#endif
    11931215        pRecQt   [ uiX ] = pReco[ uiX ];
    11941216        pRecIPred[ uiX ] = pReco[ uiX ];
     
    28762898              biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]);
    28772899            } break;
     2900#if !SEC_DMM3_RBC_F0147
    28782901          case( DMM3_IDX ):
    28792902            {
     
    28932916              }
    28942917            } break;
     2918#endif
    28952919          case( DMM4_IDX ):
    28962920            {
     
    29282952        {
    29292953          Pel deltaDC1 = 0; Pel deltaDC2 = 0;
     2954#if QC_DIM_DELTADC_UNIFY_F0132
     2955          xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, pcCU->getEdgePartition( uiPartOffset ), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 );
     2956#else
    29302957          xSearchRbcDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, pcCU->getEdgePartition( uiPartOffset ), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 );
     2958#endif
    29312959          pcCU->setDimDeltaDC( RBC_IDX, 0, uiPartOffset, deltaDC1 );
    29322960          pcCU->setDimDeltaDC( RBC_IDX, 1, uiPartOffset, deltaDC2 );
     
    29753003      Bool bTestZeroResi = false;
    29763004#if H_3D_DIM_ENC
     3005#if LGE_BUGFIX_F0158
     3006      bTestZeroResi |= pcCU->getSlice()->getIsDepth() && !pcCU->getSlice()->isIRAP();
     3007#else
    29773008      bTestZeroResi |= pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->isIRAP();
     3009#endif
    29783010#endif
    29793011#if H_3D_DIM_SDC
     
    73247356}
    73257357
     7358#if !SEC_DMM3_RBC_F0147
    73267359Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir )
    73277360{
     
    73607393  cPredYuv.destroy();
    73617394}
    7362 
     7395#endif
    73637396#endif
    73647397#if H_3D_DIM_RBC
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSearch.h

    r655 r712  
    351351  Void xSearchDmmDeltaDCs         ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piOrig, Pel* piPredic, UInt uiStride, Bool* biSegPattern, Int patternStride, UInt uiWidth, UInt uiHeight, Pel& rDeltaDC1, Pel& rDeltaDC2 );
    352352  Void xSearchDmm1Wedge           ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx );
     353#if !SEC_DMM3_RBC_F0147
    353354  Void xSearchDmm3Wedge           ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir );
     355#endif
    354356#endif
    355357#if H_3D_DIM_RBC
Note: See TracChangeset for help on using the changeset viewer.