Changeset 251 in 3DVCSoftware for branches/HTM-5.1-dev1-LG/source/Lib


Ignore:
Timestamp:
4 Feb 2013, 01:35:46 (12 years ago)
Author:
lg
Message:

Integration of JCT3V-C0044

Location:
branches/HTM-5.1-dev1-LG/source/Lib
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/ContextTables.h

    r225 r251  
    153153#define NUM_DMM_FLAG_CTX              1       ///< number of context models for DMM flag
    154154#define NUM_DMM_MODE_CTX              1       ///< number of context models for DMM mode
     155#if LGE_DMM3_SIMP_C0044
     156#define NUM_DMM_DATA_CTX              4       ///< number of context models for DMM data
     157#else
    155158#define NUM_DMM_DATA_CTX              3       ///< number of context models for DMM data
     159#endif
    156160#endif
    157161
     
    13041308INIT_DMM_DATA[3][NUM_DMM_DATA_CTX] =
    13051309{
     1310#if LGE_DMM3_SIMP_C0044
     1311  {
     1312    CNU, CNU, CNU, CNU
     1313  },
     1314  {
     1315    CNU, CNU, CNU, CNU
     1316  },
     1317  {
     1318    CNU, CNU, CNU, CNU
     1319  }
     1320#else
    13061321  {
    13071322    CNU, CNU, CNU
     
    13131328    CNU, CNU, CNU
    13141329  }
     1330#endif
    13151331};
    13161332
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComDataCU.cpp

    r210 r251  
    135135#if HHI_DMM_PRED_TEX
    136136  m_puiWedgePredTexTabIdx    = NULL;
     137#if LGE_DMM3_SIMP_C0044
     138  m_puiWedgePredTexIntraTabIdx = NULL;
     139#endif
    137140  m_piWedgePredTexDeltaDC1   = NULL;
    138141  m_piWedgePredTexDeltaDC2   = NULL;
     
    283286#if HHI_DMM_PRED_TEX
    284287    m_puiWedgePredTexTabIdx    = (UInt*)xMalloc(UInt, uiNumPartition);
     288#if LGE_DMM3_SIMP_C0044
     289    m_puiWedgePredTexIntraTabIdx    = (UInt*)xMalloc(UInt, uiNumPartition);
     290#endif
    285291    m_piWedgePredTexDeltaDC1   = (Int* )xMalloc(Int,  uiNumPartition);
    286292    m_piWedgePredTexDeltaDC2   = (Int* )xMalloc(Int,  uiNumPartition);
     
    408414#if HHI_DMM_PRED_TEX
    409415    if ( m_puiWedgePredTexTabIdx    ) { xFree(m_puiWedgePredTexTabIdx   ); m_puiWedgePredTexTabIdx    = NULL; }
     416#if LGE_DMM3_SIMP_C0044
     417    if ( m_puiWedgePredTexIntraTabIdx ) { xFree(m_puiWedgePredTexIntraTabIdx); m_puiWedgePredTexIntraTabIdx    = NULL; }
     418#endif
    410419    if ( m_piWedgePredTexDeltaDC1   ) { xFree(m_piWedgePredTexDeltaDC1  ); m_piWedgePredTexDeltaDC1   = NULL; }
    411420    if ( m_piWedgePredTexDeltaDC2   ) { xFree(m_piWedgePredTexDeltaDC2  ); m_piWedgePredTexDeltaDC2   = NULL; }
     
    618627#if HHI_DMM_PRED_TEX
    619628    memset( m_puiWedgePredTexTabIdx    + firstElement, 0, sizeof( UInt ) * numElements );
     629#if LGE_DMM3_SIMP_C0044
     630    memset( m_puiWedgePredTexIntraTabIdx + firstElement, 0, sizeof( UInt ) * numElements );
     631#endif
    620632    memset( m_piWedgePredTexDeltaDC1   + firstElement, 0, sizeof( Int  ) * numElements );
    621633    memset( m_piWedgePredTexDeltaDC2   + firstElement, 0, sizeof( Int  ) * numElements );
     
    803815#if HHI_DMM_PRED_TEX
    804816    m_puiWedgePredTexTabIdx   [ui] = 0;
     817#if LGE_DMM3_SIMP_C0044
     818    m_puiWedgePredTexIntraTabIdx [ui] = 0;
     819#endif
    805820    m_piWedgePredTexDeltaDC1  [ui] = 0;
    806821    m_piWedgePredTexDeltaDC2  [ui] = 0;
     
    921936#if HHI_DMM_PRED_TEX
    922937  memset( m_puiWedgePredTexTabIdx,    0, sizeof( UInt ) * m_uiNumPartition );
     938#if LGE_DMM3_SIMP_C0044
     939  memset( m_puiWedgePredTexIntraTabIdx, 0, sizeof( UInt ) * m_uiNumPartition );
     940#endif
    923941  memset( m_piWedgePredTexDeltaDC1,   0, sizeof( Int  ) * m_uiNumPartition );
    924942  memset( m_piWedgePredTexDeltaDC2,   0, sizeof( Int  ) * m_uiNumPartition );
     
    9921010#if HHI_DMM_PRED_TEX
    9931011      m_puiWedgePredTexTabIdx   [ui]=pcCU->getWedgePredTexTabIdx    (uiPartOffset+ui);
     1012#if LGE_DMM3_SIMP_C0044
     1013      m_puiWedgePredTexIntraTabIdx [ui]=pcCU->getWedgePredTexIntraTabIdx (uiPartOffset+ui);
     1014#endif
    9941015      m_piWedgePredTexDeltaDC1  [ui]=pcCU->getWedgePredTexDeltaDC1  (uiPartOffset+ui);
    9951016      m_piWedgePredTexDeltaDC2  [ui]=pcCU->getWedgePredTexDeltaDC2  (uiPartOffset+ui);
     
    11931214#if HHI_DMM_PRED_TEX
    11941215  m_puiWedgePredTexTabIdx    = pcCU->getWedgePredTexTabIdx()     + uiPart;   
     1216#if LGE_DMM3_SIMP_C0044
     1217  m_puiWedgePredTexIntraTabIdx = pcCU->getWedgePredTexIntraTabIdx() + uiPart;   
     1218#endif
    11951219  m_piWedgePredTexDeltaDC1   = pcCU->getWedgePredTexDeltaDC1()   + uiPart;   
    11961220  m_piWedgePredTexDeltaDC2   = pcCU->getWedgePredTexDeltaDC2()   + uiPart;   
     
    13751399#if HHI_DMM_PRED_TEX
    13761400  memcpy( m_puiWedgePredTexTabIdx    + uiOffset, pcCU->getWedgePredTexTabIdx(),     sizeof( UInt ) * uiNumPartition );
     1401#if LGE_DMM3_SIMP_C0044
     1402  memcpy( m_puiWedgePredTexIntraTabIdx + uiOffset, pcCU->getWedgePredTexIntraTabIdx(), sizeof( UInt ) * uiNumPartition );
     1403#endif
    13771404  memcpy( m_piWedgePredTexDeltaDC1   + uiOffset, pcCU->getWedgePredTexDeltaDC1(),   sizeof( Int  ) * uiNumPartition );
    13781405  memcpy( m_piWedgePredTexDeltaDC2   + uiOffset, pcCU->getWedgePredTexDeltaDC2(),   sizeof( Int  ) * uiNumPartition );
     
    15011528#if HHI_DMM_PRED_TEX
    15021529  memcpy( rpcCU->getWedgePredTexTabIdx()     + m_uiAbsIdxInLCU, m_puiWedgePredTexTabIdx,    sizeof( UInt ) * m_uiNumPartition );
     1530#if LGE_DMM3_SIMP_C0044
     1531  memcpy( rpcCU->getWedgePredTexIntraTabIdx() + m_uiAbsIdxInLCU, m_puiWedgePredTexIntraTabIdx,    sizeof( UInt ) * m_uiNumPartition );
     1532#endif
    15031533  memcpy( rpcCU->getWedgePredTexDeltaDC1()   + m_uiAbsIdxInLCU, m_piWedgePredTexDeltaDC1,   sizeof( Int  ) * m_uiNumPartition );
    15041534  memcpy( rpcCU->getWedgePredTexDeltaDC2()   + m_uiAbsIdxInLCU, m_piWedgePredTexDeltaDC2,   sizeof( Int  ) * m_uiNumPartition );
     
    16281658#if HHI_DMM_PRED_TEX
    16291659  memcpy( rpcCU->getWedgePredTexTabIdx()     + uiPartOffset, m_puiWedgePredTexTabIdx,    sizeof( UInt ) * uiQNumPart );
     1660#if LGE_DMM3_SIMP_C0044
     1661  memcpy( rpcCU->getWedgePredTexIntraTabIdx() + uiPartOffset, m_puiWedgePredTexIntraTabIdx, sizeof( UInt ) * uiQNumPart );
     1662#endif
    16301663  memcpy( rpcCU->getWedgePredTexDeltaDC1()   + uiPartOffset, m_piWedgePredTexDeltaDC1,   sizeof( Int  ) * uiQNumPart );
    16311664  memcpy( rpcCU->getWedgePredTexDeltaDC2()   + uiPartOffset, m_piWedgePredTexDeltaDC2,   sizeof( Int  ) * uiQNumPart );
     
    77867819}
    77877820
     7821#if LGE_DMM3_SIMP_C0044
     7822Void TComDataCU::setWedgePredTexIntraTabIdxSubParts( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth )
     7823{
     7824  UInt uiCurrPartNumb = m_pcPic->getNumPartInCU() >> (uiDepth << 1);
     7825
     7826  for ( UInt ui = 0; ui < uiCurrPartNumb; ui++ )
     7827  {
     7828    m_puiWedgePredTexIntraTabIdx[uiAbsPartIdx+ui] = uiTIdx;
     7829  }
     7830}
     7831#endif
     7832
    77887833Void TComDataCU::setWedgePredTexDeltaDC1SubParts( Int iDC1, UInt uiAbsPartIdx, UInt uiDepth )
    77897834{
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComDataCU.h

    r189 r251  
    262262#if HHI_DMM_PRED_TEX
    263263  UInt*         m_puiWedgePredTexTabIdx;
     264#if LGE_DMM3_SIMP_C0044
     265  UInt*         m_puiWedgePredTexIntraTabIdx;
     266#endif
    264267  Int*          m_piWedgePredTexDeltaDC1;
    265268  Int*          m_piWedgePredTexDeltaDC2;
     
    796799  Void  setWedgePredTexTabIdx             ( UInt uiIdx, UInt uh ) { m_puiWedgePredTexTabIdx[uiIdx] = uh;      }
    797800  Void  setWedgePredTexTabIdxSubParts     ( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth );
     801#if LGE_DMM3_SIMP_C0044
     802  UInt* getWedgePredTexIntraTabIdx             ()                      { return m_puiWedgePredTexIntraTabIdx;           }
     803  UInt  getWedgePredTexIntraTabIdx             ( UInt uiIdx )          { return m_puiWedgePredTexIntraTabIdx[uiIdx];    }
     804  Void  setWedgePredTexIntraTabIdx             ( UInt uiIdx, UInt uh ) { m_puiWedgePredTexIntraTabIdx[uiIdx] = uh;      }
     805  Void  setWedgePredTexIntraTabIdxSubParts     ( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth );
     806#endif
    798807  Int*  getWedgePredTexDeltaDC1           ()                      { return m_piWedgePredTexDeltaDC1;          }
    799808  Int   getWedgePredTexDeltaDC1           ( UInt uiIdx )          { return m_piWedgePredTexDeltaDC1[uiIdx];   }
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComPrediction.cpp

    r242 r251  
    21362136}
    21372137
     2138#if LGE_DMM3_SIMP_C0044
     2139/**
     2140 - fetch best Wedgelet pattern at decoder
     2141 */
     2142UInt TComPrediction::getBestWedgeFromTex( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt IntraTabIdx)
     2143{
     2144  assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE );
     2145
     2146  UInt          uiBestTabIdx = 0;
     2147  TComPic*      pcPicTex = pcCU->getSlice()->getTexturePic();
     2148  TComDataCU*   pcColTexCU = pcPicTex->getCU(pcCU->getAddr());
     2149  UInt          uiTexPartIdx = pcCU->getZorderIdxInCU() + uiAbsPartIdx;
     2150  Int           uiColTexIntraDir = pcColTexCU->isIntra( uiTexPartIdx ) ? pcColTexCU->getLumaIntraDir( uiTexPartIdx ) : 255;
     2151
     2152  std::vector< std::vector<UInt> > pauiWdgLstSz = g_aauiWdgLstM3[g_aucConvertToBit[uiWidth]];
     2153
     2154  if( uiColTexIntraDir > DC_IDX && uiColTexIntraDir < 35 )
     2155  {
     2156    std::vector<UInt>* pauiWdgLst = &pauiWdgLstSz[uiColTexIntraDir-2];
     2157    uiBestTabIdx    =   pauiWdgLst->at(IntraTabIdx);
     2158  }
     2159  else
     2160  {
     2161    WedgeNodeList* pacWedgeNodeList = &g_aacWedgeNodeLists[(g_aucConvertToBit[uiWidth])];
     2162    uiBestTabIdx = pacWedgeNodeList->at(IntraTabIdx).getPatternIdx();
     2163  }
     2164
     2165  return uiBestTabIdx;
     2166}
     2167#endif
     2168
     2169#if LGE_DMM3_SIMP_C0044
     2170/**
     2171 - calculate best Wedgelet pattern at encoder
     2172 */
     2173UInt TComPrediction::getBestWedgeFromTex( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Pel* piOrigi, UInt uiStride, UInt & ruiIntraTabIdx)
     2174#else
    21382175UInt TComPrediction::getBestWedgeFromTex( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight )
     2176#endif
    21392177{
    21402178  assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE );
     
    21642202  Int  iDC2 = 0;
    21652203  WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiWidth])];
    2166 
     2204#if LGE_DMM3_SIMP_C0044
     2205  ruiIntraTabIdx  = 0;
     2206#endif
    21672207#if HHIQC_DMMFASTSEARCH_B0039
    21682208  TComPic*      pcPicTex = pcCU->getSlice()->getTexturePic();
     
    21782218    {
    21792219      UInt uiIdx     =   pauiWdgLst->at(uiIdxW);
     2220#if LGE_DMM3_SIMP_C0044
     2221      calcWedgeDCs       ( &(pacWedgeList->at(uiIdx)), piOrigi,   uiWidth,      iDC1, iDC2 );
     2222#else
    21802223      calcWedgeDCs       ( &(pacWedgeList->at(uiIdx)), piRefBlkY, uiWidth,      iDC1, iDC2 );
     2224#endif
    21812225      assignWedgeDCs2Pred( &(pacWedgeList->at(uiIdx)), piPred,    uiPredStride, iDC1, iDC2 );
    21822226
     2227#if LGE_DMM3_SIMP_C0044
     2228      UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piOrigi, uiStride, uiWidth, uiHeight, WedgeDist_SAD );
     2229#else
    21832230      UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piRefBlkY, uiWidth, uiWidth, uiHeight, WedgeDist_SAD );
     2231#endif
    21842232
    21852233      if( uiActDist < uiBestDist || uiBestDist == MAX_UINT )
     
    21872235        uiBestDist   = uiActDist;
    21882236        uiBestTabIdx = uiIdx;
     2237#if LGE_DMM3_SIMP_C0044
     2238        ruiIntraTabIdx = uiIdxW;
     2239#endif
    21892240      }
    21902241    }
     
    21972248    for( UInt uiNodeId = 0; uiNodeId < pacWedgeNodeList->size(); uiNodeId++ )
    21982249    {
     2250#if LGE_DMM3_SIMP_C0044
     2251      calcWedgeDCs       ( &(pacWedgeList->at(pacWedgeNodeList->at(uiNodeId).getPatternIdx())), piOrigi, uiWidth,      iDC1, iDC2 );
     2252#else
    21992253      calcWedgeDCs       ( &(pacWedgeList->at(pacWedgeNodeList->at(uiNodeId).getPatternIdx())), piRefBlkY, uiWidth,      iDC1, iDC2 );
     2254#endif
    22002255      assignWedgeDCs2Pred( &(pacWedgeList->at(pacWedgeNodeList->at(uiNodeId).getPatternIdx())), piPred,    uiPredStride, iDC1, iDC2 );
    22012256
     2257#if LGE_DMM3_SIMP_C0044
     2258      UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piOrigi, uiStride, uiWidth, uiHeight, WedgeDist_SAD );
     2259#else
    22022260      UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piRefBlkY, uiWidth, uiWidth, uiHeight, WedgeDist_SAD );
     2261#endif
    22032262
    22042263      if( uiActDist < uiBestNodeDist || uiBestNodeDist == MAX_UINT )
     
    22062265        uiBestNodeDist = uiActDist;
    22072266        uiBestNodeId   = uiNodeId;
    2208       }
    2209     }
    2210 
     2267#if LGE_DMM3_SIMP_C0044
     2268        ruiIntraTabIdx = uiNodeId;
     2269#endif
     2270      }
     2271    }
     2272#if LGE_DMM3_SIMP_C0044
     2273    uiBestTabIdx = pacWedgeNodeList->at(uiBestNodeId).getPatternIdx();
     2274#else
    22112275    // refinement
    22122276    uiBestDist   = uiBestNodeDist;
     
    22282292      }
    22292293    }
     2294#endif
    22302295  }
    22312296#else
     
    22822347  {
    22832348    // decoder: get and store wedge pattern in CU
     2349      // decoder: get and store wedge pattern in CU
     2350#if LGE_DMM3_SIMP_C0044
     2351    UInt uiIntraTabIdx   = pcCU->getWedgePredTexIntraTabIdx ( uiAbsPartIdx );
     2352    uiTextureWedgeTabIdx = getBestWedgeFromTex( pcCU, uiAbsPartIdx, (UInt)iWidth, (UInt)iHeight, uiIntraTabIdx );
     2353#else
    22842354    uiTextureWedgeTabIdx = getBestWedgeFromTex( pcCU, uiAbsPartIdx, (UInt)iWidth, (UInt)iHeight );
     2355#endif
    22852356
    22862357    UInt uiDepth = (pcCU->getDepth(0)) + (pcCU->getPartitionSize(0) == SIZE_2Nx2N ? 0 : 1);
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComPrediction.h

    r210 r251  
    176176#if HHI_DMM_PRED_TEX
    177177  Void  getBestContourFromTex   ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, TComWedgelet* pcContourWedge );
     178#if LGE_DMM3_SIMP_C0044
     179  UInt  getBestWedgeFromTex     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Pel * piOrgi, UInt uiStride, UInt &ruiIntraTabIdx);//encoder
     180  UInt  getBestWedgeFromTex     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt IntraTabIdx);//decoder
     181#else
    178182  UInt  getBestWedgeFromTex     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight );
     183#endif
    179184  Void  copyTextureLumaBlock    ( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piDestBlockY, UInt uiWidth, UInt uiHeight );
    180185#endif
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComRom.cpp

    r189 r251  
    587587};
    588588
     589#if LGE_DMM3_SIMP_C0044
     590const UChar g_aucWedgeTexPredBitsListIdx[7] =
     591{
     592  0,   //   2x2
     593  6,   //   4x4   
     594  9,  //   8x8   
     595  9,  //  16x16   
     596  9,  //  32x32   
     597  0,  //  64x64   
     598  0    // 128x128 
     599};
     600#endif
     601
    589602const UChar g_aucIntraSizeIdxToWedgeSize[7] =
    590603{
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComRom.h

    r189 r251  
    188188extern const WedgeResolution g_aeWedgeResolutionList[5];
    189189extern const UChar           g_aucWedgeFullBitsListIdx[7];
     190#if LGE_DMM3_SIMP_C0044
     191extern const UChar           g_aucWedgeTexPredBitsListIdx[7];
     192#endif
    190193extern const UChar           g_aucIntraSizeIdxToWedgeSize[7];
    191194
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TypeDef.h

    r242 r251  
    8282#define HHIQC_DMMFASTSEARCH_B0039         1   // JCT3V-B0039: fast Wedgelet search for DMM modes 1 and 3
    8383#define HHI_DMM_DELTADC_Q1_C0034          1   // JCT3V-C0034: no quantization and fast encoder search for DMM delta DC values
    84 
     84#if HHIQC_DMMFASTSEARCH_B0039 && HHI_DMM_PRED_TEX
     85#define LGE_DMM3_SIMP_C0044               1
     86#endif
    8587
    8688///// ***** INTERVIEW MOTION VECTOR PREDICTION *********
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibDecoder/TDecSbac.cpp

    r229 r251  
    980980#if HHI_DMM_PRED_TEX
    981981    if( intraPredMode == DMM_WEDGE_PREDTEX_D_IDX )     { xParseWedgePredTexDeltaInfo  ( pcCU, uiAbsPartIdx, uiDepth ); }
     982#if LGE_DMM3_SIMP_C0044
     983    if( intraPredMode == DMM_WEDGE_PREDTEX_IDX )       { xParseWedgePredTexInfo       ( pcCU, uiAbsPartIdx, uiDepth ); }
     984#endif
    982985    if( intraPredMode == DMM_CONTOUR_PREDTEX_D_IDX )   { xParseContourPredTexDeltaInfo( pcCU, uiAbsPartIdx, uiDepth ); }
    983986#endif
     
    24222425#endif
    24232426#if HHI_DMM_PRED_TEX
     2427#if LGE_DMM3_SIMP_C0044
     2428Void TDecSbac::xParseWedgePredTexInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     2429{
     2430  Int iIntraIdx = pcCU->getIntraSizeIdx(uiAbsPartIdx);
     2431  Int iBits = g_aucWedgeTexPredBitsListIdx[iIntraIdx];
     2432
     2433  UInt uiSymbol, uiTabIdx = 0;
     2434  for ( Int i = 0; i < iBits; i++ )
     2435  {
     2436    m_pcTDecBinIf->decodeBin( uiSymbol, m_cDmmDataSCModel.get(0, 0, 3) );
     2437    uiTabIdx += ( uiSymbol && i == 0 ) ? 1 : 0;
     2438    uiTabIdx += ( uiSymbol && i == 1 ) ? 2 : 0;
     2439    uiTabIdx += ( uiSymbol && i == 2 ) ? 4 : 0;
     2440    uiTabIdx += ( uiSymbol && i == 3 ) ? 8 : 0;
     2441    uiTabIdx += ( uiSymbol && i == 4 ) ? 16 : 0;
     2442    uiTabIdx += ( uiSymbol && i == 5 ) ? 32 : 0;
     2443    uiTabIdx += ( uiSymbol && i == 6 ) ? 64 : 0;
     2444    uiTabIdx += ( uiSymbol && i == 7 ) ? 128 : 0;
     2445    uiTabIdx += ( uiSymbol && i == 8 ) ? 256 : 0;
     2446    uiTabIdx += ( uiSymbol && i == 9 ) ? 512 : 0;
     2447    uiTabIdx += ( uiSymbol && i == 10 ) ? 1024 : 0;
     2448  }
     2449
     2450  pcCU->setWedgePredTexIntraTabIdxSubParts( uiTabIdx, uiAbsPartIdx, uiDepth );
     2451}
     2452#endif
     2453
    24242454Void TDecSbac::xParseWedgePredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    24252455{
     2456#if LGE_DMM3_SIMP_C0044
     2457  xParseWedgePredTexInfo( pcCU, uiAbsPartIdx, uiDepth );
     2458#endif
    24262459  UInt uiDC1, uiDC2;
    24272460  xReadExGolombLevel( uiDC1, m_cDmmDataSCModel.get(0, 0, 1) );
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibDecoder/TDecSbac.h

    r210 r251  
    148148#endif
    149149#if HHI_DMM_PRED_TEX
     150#if LGE_DMM3_SIMP_C0044
     151  Void xParseWedgePredTexInfo       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     152#endif
    150153  Void xParseWedgePredTexDeltaInfo  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    151154  Void xParseContourPredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSbac.cpp

    r229 r251  
    10961096
    10971097    if( uiDir == DMM_WEDGE_PREDTEX_D_IDX )     { xCodeWedgePredTexDeltaInfo  ( pcCU, uiAbsPartIdx ); }
     1098#if LGE_DMM3_SIMP_C0044
     1099    if( uiDir == DMM_WEDGE_PREDTEX_IDX )       { xCodeWedgePredTexInfo       ( pcCU, uiAbsPartIdx ); }
     1100#endif
    10981101    if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX )   { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); }
    10991102#endif
     
    26712674#endif
    26722675#if HHI_DMM_PRED_TEX
     2676#if LGE_DMM3_SIMP_C0044
     2677Void TEncSbac::xCodeWedgePredTexInfo( TComDataCU* pcCU, UInt uiAbsPartIdx )
     2678{
     2679  Int iIntraIdx = pcCU->getIntraSizeIdx(uiAbsPartIdx);
     2680  Int iBits = g_aucWedgeTexPredBitsListIdx[iIntraIdx];
     2681
     2682  UInt uiTabIdx = pcCU->getWedgePredTexIntraTabIdx( uiAbsPartIdx );
     2683
     2684  for ( Int i = 0; i < iBits; i++ )
     2685  {
     2686    m_pcBinIf->encodeBin( ( uiTabIdx >> i ) & 1, m_cDmmDataSCModel.get(0, 0, 3) );
     2687  }
     2688}
     2689#endif
     2690
    26732691Void TEncSbac::xCodeWedgePredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx )
    26742692{
     2693#if LGE_DMM3_SIMP_C0044
     2694  xCodeWedgePredTexInfo( pcCU, uiAbsPartIdx );
     2695#endif
    26752696  Int iDeltaDC1 = pcCU->getWedgePredTexDeltaDC1( uiAbsPartIdx );
    26762697  Int iDeltaDC2 = pcCU->getWedgePredTexDeltaDC2( uiAbsPartIdx );
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSbac.h

    r210 r251  
    178178#endif
    179179#if HHI_DMM_PRED_TEX
     180#if LGE_DMM3_SIMP_C0044
     181  Void  xCodeWedgePredTexInfo       ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     182#endif
    180183  Void  xCodeWedgePredTexDeltaInfo  ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    181184  Void  xCodeContourPredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx );
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSearch.cpp

    r242 r251  
    22522252      Int  iTexDeltaDC1 = 0;
    22532253      Int  iTexDeltaDC2 = 0;
     2254#if LGE_DMM3_SIMP_C0044
     2255      UInt uiTexIntraIdx = 0;
     2256      findWedgeTexMinDist( pcCU, uiPartOffset, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTexTabIdx, iTexDeltaDC1, iTexDeltaDC2, bAboveAvail, bLeftAvail, uiTexIntraIdx);
     2257      pcCU->setWedgePredTexIntraTabIdxSubParts( uiTexIntraIdx, uiPartOffset, uiDepth + uiInitTrDepth );
     2258#else
    22542259      findWedgeTexMinDist( pcCU, uiPartOffset, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTexTabIdx, iTexDeltaDC1, iTexDeltaDC2, bAboveAvail, bLeftAvail );
     2260#endif
    22552261      pcCU->setWedgePredTexTabIdxSubParts  ( uiTexTabIdx,  uiPartOffset, uiDepth + uiInitTrDepth );
    22562262      pcCU->setWedgePredTexDeltaDC1SubParts( iTexDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth );
     
    71617167                                      Int&         riDeltaDC2,
    71627168                                      Bool         bAboveAvail,
    7163                                       Bool         bLeftAvail )
     7169                                      Bool         bLeftAvail
     7170#if LGE_DMM3_SIMP_C0044
     7171                                      ,UInt&        ruiIntraTabIdx
     7172#endif
     7173                                      )
    71647174{
    71657175  assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE );
    71667176  WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiWidth])];
    71677177
     7178#if LGE_DMM3_SIMP_C0044
     7179  ruiTabIdx = getBestWedgeFromTex( pcCU, uiAbsPtIdx, uiWidth, uiHeight, piOrig, uiStride, ruiIntraTabIdx );
     7180#else
    71687181  ruiTabIdx = getBestWedgeFromTex( pcCU, uiAbsPtIdx, uiWidth, uiHeight );
     7182#endif
    71697183
    71707184  TComWedgelet* pcBestWedgelet = &(pacWedgeList->at(ruiTabIdx));
  • branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSearch.h

    r210 r251  
    435435                                    Int&           riDeltaDC2,
    436436                                    Bool           bAboveAvail,
    437                                     Bool           bLeftAvail );
     437                                    Bool           bLeftAvail
     438#if LGE_DMM3_SIMP_C0044
     439                                    ,UInt&         ruiIntraTabIdx
     440#endif
     441                                    );
    438442  Void findContourPredTex         ( TComDataCU*    pcCU,
    439443                                    UInt           uiAbsPtIdx,
Note: See TracChangeset for help on using the changeset viewer.