Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/ContextTables.h
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/ContextTables.h	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/ContextTables.h	(revision 251)
@@ -153,5 +153,9 @@
 #define NUM_DMM_FLAG_CTX              1       ///< number of context models for DMM flag
 #define NUM_DMM_MODE_CTX              1       ///< number of context models for DMM mode
+#if LGE_DMM3_SIMP_C0044
+#define NUM_DMM_DATA_CTX              4       ///< number of context models for DMM data
+#else
 #define NUM_DMM_DATA_CTX              3       ///< number of context models for DMM data
+#endif
 #endif
 
@@ -1304,4 +1308,15 @@
 INIT_DMM_DATA[3][NUM_DMM_DATA_CTX] = 
 {
+#if LGE_DMM3_SIMP_C0044
+  {
+    CNU, CNU, CNU, CNU
+  },
+  {
+    CNU, CNU, CNU, CNU
+  },
+  {
+    CNU, CNU, CNU, CNU
+  }
+#else
   {
     CNU, CNU, CNU
@@ -1313,4 +1328,5 @@
     CNU, CNU, CNU
   }
+#endif
 };
 
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComDataCU.cpp	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComDataCU.cpp	(revision 251)
@@ -135,4 +135,7 @@
 #if HHI_DMM_PRED_TEX
   m_puiWedgePredTexTabIdx    = NULL;
+#if LGE_DMM3_SIMP_C0044
+  m_puiWedgePredTexIntraTabIdx = NULL;
+#endif
   m_piWedgePredTexDeltaDC1   = NULL;
   m_piWedgePredTexDeltaDC2   = NULL;
@@ -283,4 +286,7 @@
 #if HHI_DMM_PRED_TEX
     m_puiWedgePredTexTabIdx    = (UInt*)xMalloc(UInt, uiNumPartition);
+#if LGE_DMM3_SIMP_C0044
+    m_puiWedgePredTexIntraTabIdx    = (UInt*)xMalloc(UInt, uiNumPartition);
+#endif
     m_piWedgePredTexDeltaDC1   = (Int* )xMalloc(Int,  uiNumPartition);
     m_piWedgePredTexDeltaDC2   = (Int* )xMalloc(Int,  uiNumPartition);
@@ -408,4 +414,7 @@
 #if HHI_DMM_PRED_TEX
     if ( m_puiWedgePredTexTabIdx    ) { xFree(m_puiWedgePredTexTabIdx   ); m_puiWedgePredTexTabIdx    = NULL; }
+#if LGE_DMM3_SIMP_C0044
+    if ( m_puiWedgePredTexIntraTabIdx ) { xFree(m_puiWedgePredTexIntraTabIdx); m_puiWedgePredTexIntraTabIdx    = NULL; }
+#endif
     if ( m_piWedgePredTexDeltaDC1   ) { xFree(m_piWedgePredTexDeltaDC1  ); m_piWedgePredTexDeltaDC1   = NULL; }
     if ( m_piWedgePredTexDeltaDC2   ) { xFree(m_piWedgePredTexDeltaDC2  ); m_piWedgePredTexDeltaDC2   = NULL; }
@@ -618,4 +627,7 @@
 #if HHI_DMM_PRED_TEX
     memset( m_puiWedgePredTexTabIdx    + firstElement, 0, sizeof( UInt ) * numElements );
+#if LGE_DMM3_SIMP_C0044
+    memset( m_puiWedgePredTexIntraTabIdx + firstElement, 0, sizeof( UInt ) * numElements );
+#endif
     memset( m_piWedgePredTexDeltaDC1   + firstElement, 0, sizeof( Int  ) * numElements );
     memset( m_piWedgePredTexDeltaDC2   + firstElement, 0, sizeof( Int  ) * numElements );
@@ -803,4 +815,7 @@
 #if HHI_DMM_PRED_TEX
     m_puiWedgePredTexTabIdx   [ui] = 0;
+#if LGE_DMM3_SIMP_C0044
+    m_puiWedgePredTexIntraTabIdx [ui] = 0;
+#endif
     m_piWedgePredTexDeltaDC1  [ui] = 0;
     m_piWedgePredTexDeltaDC2  [ui] = 0;
@@ -921,4 +936,7 @@
 #if HHI_DMM_PRED_TEX
   memset( m_puiWedgePredTexTabIdx,    0, sizeof( UInt ) * m_uiNumPartition );
+#if LGE_DMM3_SIMP_C0044
+  memset( m_puiWedgePredTexIntraTabIdx, 0, sizeof( UInt ) * m_uiNumPartition );
+#endif
   memset( m_piWedgePredTexDeltaDC1,   0, sizeof( Int  ) * m_uiNumPartition );
   memset( m_piWedgePredTexDeltaDC2,   0, sizeof( Int  ) * m_uiNumPartition );
@@ -992,4 +1010,7 @@
 #if HHI_DMM_PRED_TEX
       m_puiWedgePredTexTabIdx   [ui]=pcCU->getWedgePredTexTabIdx    (uiPartOffset+ui);
+#if LGE_DMM3_SIMP_C0044
+      m_puiWedgePredTexIntraTabIdx [ui]=pcCU->getWedgePredTexIntraTabIdx (uiPartOffset+ui);
+#endif
       m_piWedgePredTexDeltaDC1  [ui]=pcCU->getWedgePredTexDeltaDC1  (uiPartOffset+ui);
       m_piWedgePredTexDeltaDC2  [ui]=pcCU->getWedgePredTexDeltaDC2  (uiPartOffset+ui);
@@ -1193,4 +1214,7 @@
 #if HHI_DMM_PRED_TEX
   m_puiWedgePredTexTabIdx    = pcCU->getWedgePredTexTabIdx()     + uiPart;   
+#if LGE_DMM3_SIMP_C0044
+  m_puiWedgePredTexIntraTabIdx = pcCU->getWedgePredTexIntraTabIdx() + uiPart;   
+#endif
   m_piWedgePredTexDeltaDC1   = pcCU->getWedgePredTexDeltaDC1()   + uiPart;   
   m_piWedgePredTexDeltaDC2   = pcCU->getWedgePredTexDeltaDC2()   + uiPart;   
@@ -1375,4 +1399,7 @@
 #if HHI_DMM_PRED_TEX
   memcpy( m_puiWedgePredTexTabIdx    + uiOffset, pcCU->getWedgePredTexTabIdx(),     sizeof( UInt ) * uiNumPartition );
+#if LGE_DMM3_SIMP_C0044
+  memcpy( m_puiWedgePredTexIntraTabIdx + uiOffset, pcCU->getWedgePredTexIntraTabIdx(), sizeof( UInt ) * uiNumPartition );
+#endif
   memcpy( m_piWedgePredTexDeltaDC1   + uiOffset, pcCU->getWedgePredTexDeltaDC1(),   sizeof( Int  ) * uiNumPartition );
   memcpy( m_piWedgePredTexDeltaDC2   + uiOffset, pcCU->getWedgePredTexDeltaDC2(),   sizeof( Int  ) * uiNumPartition );
@@ -1501,4 +1528,7 @@
 #if HHI_DMM_PRED_TEX
   memcpy( rpcCU->getWedgePredTexTabIdx()     + m_uiAbsIdxInLCU, m_puiWedgePredTexTabIdx,    sizeof( UInt ) * m_uiNumPartition );
+#if LGE_DMM3_SIMP_C0044
+  memcpy( rpcCU->getWedgePredTexIntraTabIdx() + m_uiAbsIdxInLCU, m_puiWedgePredTexIntraTabIdx,    sizeof( UInt ) * m_uiNumPartition );
+#endif
   memcpy( rpcCU->getWedgePredTexDeltaDC1()   + m_uiAbsIdxInLCU, m_piWedgePredTexDeltaDC1,   sizeof( Int  ) * m_uiNumPartition );
   memcpy( rpcCU->getWedgePredTexDeltaDC2()   + m_uiAbsIdxInLCU, m_piWedgePredTexDeltaDC2,   sizeof( Int  ) * m_uiNumPartition );
@@ -1628,4 +1658,7 @@
 #if HHI_DMM_PRED_TEX
   memcpy( rpcCU->getWedgePredTexTabIdx()     + uiPartOffset, m_puiWedgePredTexTabIdx,    sizeof( UInt ) * uiQNumPart );
+#if LGE_DMM3_SIMP_C0044
+  memcpy( rpcCU->getWedgePredTexIntraTabIdx() + uiPartOffset, m_puiWedgePredTexIntraTabIdx, sizeof( UInt ) * uiQNumPart );
+#endif
   memcpy( rpcCU->getWedgePredTexDeltaDC1()   + uiPartOffset, m_piWedgePredTexDeltaDC1,   sizeof( Int  ) * uiQNumPart );
   memcpy( rpcCU->getWedgePredTexDeltaDC2()   + uiPartOffset, m_piWedgePredTexDeltaDC2,   sizeof( Int  ) * uiQNumPart );
@@ -7786,4 +7819,16 @@
 }
 
+#if LGE_DMM3_SIMP_C0044
+Void TComDataCU::setWedgePredTexIntraTabIdxSubParts( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth )
+{
+  UInt uiCurrPartNumb = m_pcPic->getNumPartInCU() >> (uiDepth << 1);
+
+  for ( UInt ui = 0; ui < uiCurrPartNumb; ui++ )
+  {
+    m_puiWedgePredTexIntraTabIdx[uiAbsPartIdx+ui] = uiTIdx;
+  }
+}
+#endif
+
 Void TComDataCU::setWedgePredTexDeltaDC1SubParts( Int iDC1, UInt uiAbsPartIdx, UInt uiDepth )
 {
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComDataCU.h
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComDataCU.h	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComDataCU.h	(revision 251)
@@ -262,4 +262,7 @@
 #if HHI_DMM_PRED_TEX
   UInt*         m_puiWedgePredTexTabIdx;
+#if LGE_DMM3_SIMP_C0044
+  UInt*         m_puiWedgePredTexIntraTabIdx;
+#endif
   Int*          m_piWedgePredTexDeltaDC1;
   Int*          m_piWedgePredTexDeltaDC2;
@@ -796,4 +799,10 @@
   Void  setWedgePredTexTabIdx             ( UInt uiIdx, UInt uh ) { m_puiWedgePredTexTabIdx[uiIdx] = uh;      }
   Void  setWedgePredTexTabIdxSubParts     ( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth );
+#if LGE_DMM3_SIMP_C0044
+  UInt* getWedgePredTexIntraTabIdx             ()                      { return m_puiWedgePredTexIntraTabIdx;           }
+  UInt  getWedgePredTexIntraTabIdx             ( UInt uiIdx )          { return m_puiWedgePredTexIntraTabIdx[uiIdx];    }
+  Void  setWedgePredTexIntraTabIdx             ( UInt uiIdx, UInt uh ) { m_puiWedgePredTexIntraTabIdx[uiIdx] = uh;      }
+  Void  setWedgePredTexIntraTabIdxSubParts     ( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth );
+#endif 
   Int*  getWedgePredTexDeltaDC1           ()                      { return m_piWedgePredTexDeltaDC1;          }
   Int   getWedgePredTexDeltaDC1           ( UInt uiIdx )          { return m_piWedgePredTexDeltaDC1[uiIdx];   }
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComPrediction.cpp
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComPrediction.cpp	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComPrediction.cpp	(revision 251)
@@ -2136,5 +2136,43 @@
 }
 
+#if LGE_DMM3_SIMP_C0044
+/**
+ - fetch best Wedgelet pattern at decoder
+ */
+UInt TComPrediction::getBestWedgeFromTex( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt IntraTabIdx)
+{
+  assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE );
+
+  UInt          uiBestTabIdx = 0;
+  TComPic*      pcPicTex = pcCU->getSlice()->getTexturePic();
+  TComDataCU*   pcColTexCU = pcPicTex->getCU(pcCU->getAddr());
+  UInt          uiTexPartIdx = pcCU->getZorderIdxInCU() + uiAbsPartIdx;
+  Int           uiColTexIntraDir = pcColTexCU->isIntra( uiTexPartIdx ) ? pcColTexCU->getLumaIntraDir( uiTexPartIdx ) : 255;
+
+  std::vector< std::vector<UInt> > pauiWdgLstSz = g_aauiWdgLstM3[g_aucConvertToBit[uiWidth]];
+
+  if( uiColTexIntraDir > DC_IDX && uiColTexIntraDir < 35 )
+  {
+    std::vector<UInt>* pauiWdgLst = &pauiWdgLstSz[uiColTexIntraDir-2];
+    uiBestTabIdx    =   pauiWdgLst->at(IntraTabIdx);
+  }
+  else
+  {
+    WedgeNodeList* pacWedgeNodeList = &g_aacWedgeNodeLists[(g_aucConvertToBit[uiWidth])];
+    uiBestTabIdx = pacWedgeNodeList->at(IntraTabIdx).getPatternIdx();
+  }
+
+  return uiBestTabIdx;
+}
+#endif
+
+#if LGE_DMM3_SIMP_C0044
+/**
+ - calculate best Wedgelet pattern at encoder
+ */
+UInt TComPrediction::getBestWedgeFromTex( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Pel* piOrigi, UInt uiStride, UInt & ruiIntraTabIdx)
+#else
 UInt TComPrediction::getBestWedgeFromTex( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight )
+#endif
 {
   assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE );
@@ -2164,5 +2202,7 @@
   Int  iDC2 = 0;
   WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiWidth])];
-
+#if LGE_DMM3_SIMP_C0044
+  ruiIntraTabIdx  = 0;
+#endif
 #if HHIQC_DMMFASTSEARCH_B0039
   TComPic*      pcPicTex = pcCU->getSlice()->getTexturePic();
@@ -2178,8 +2218,16 @@
     {
       UInt uiIdx     =   pauiWdgLst->at(uiIdxW);
+#if LGE_DMM3_SIMP_C0044
+      calcWedgeDCs       ( &(pacWedgeList->at(uiIdx)), piOrigi,   uiWidth,      iDC1, iDC2 );
+#else
       calcWedgeDCs       ( &(pacWedgeList->at(uiIdx)), piRefBlkY, uiWidth,      iDC1, iDC2 );
+#endif
       assignWedgeDCs2Pred( &(pacWedgeList->at(uiIdx)), piPred,    uiPredStride, iDC1, iDC2 );
 
+#if LGE_DMM3_SIMP_C0044
+      UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piOrigi, uiStride, uiWidth, uiHeight, WedgeDist_SAD );
+#else
       UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piRefBlkY, uiWidth, uiWidth, uiHeight, WedgeDist_SAD );
+#endif
 
       if( uiActDist < uiBestDist || uiBestDist == MAX_UINT )
@@ -2187,4 +2235,7 @@
         uiBestDist   = uiActDist;
         uiBestTabIdx = uiIdx;
+#if LGE_DMM3_SIMP_C0044
+        ruiIntraTabIdx = uiIdxW;
+#endif
       }
     }
@@ -2197,8 +2248,16 @@
     for( UInt uiNodeId = 0; uiNodeId < pacWedgeNodeList->size(); uiNodeId++ )
     {
+#if LGE_DMM3_SIMP_C0044
+      calcWedgeDCs       ( &(pacWedgeList->at(pacWedgeNodeList->at(uiNodeId).getPatternIdx())), piOrigi, uiWidth,      iDC1, iDC2 );
+#else
       calcWedgeDCs       ( &(pacWedgeList->at(pacWedgeNodeList->at(uiNodeId).getPatternIdx())), piRefBlkY, uiWidth,      iDC1, iDC2 );
+#endif
       assignWedgeDCs2Pred( &(pacWedgeList->at(pacWedgeNodeList->at(uiNodeId).getPatternIdx())), piPred,    uiPredStride, iDC1, iDC2 );
 
+#if LGE_DMM3_SIMP_C0044
+      UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piOrigi, uiStride, uiWidth, uiHeight, WedgeDist_SAD );
+#else
       UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piRefBlkY, uiWidth, uiWidth, uiHeight, WedgeDist_SAD );
+#endif
 
       if( uiActDist < uiBestNodeDist || uiBestNodeDist == MAX_UINT )
@@ -2206,7 +2265,12 @@
         uiBestNodeDist = uiActDist;
         uiBestNodeId   = uiNodeId;
-      }
-    }
-
+#if LGE_DMM3_SIMP_C0044
+        ruiIntraTabIdx = uiNodeId;
+#endif
+      }
+    }
+#if LGE_DMM3_SIMP_C0044
+    uiBestTabIdx = pacWedgeNodeList->at(uiBestNodeId).getPatternIdx();
+#else
     // refinement
     uiBestDist   = uiBestNodeDist;
@@ -2228,4 +2292,5 @@
       }
     }
+#endif
   }
 #else
@@ -2282,5 +2347,11 @@
   {
     // decoder: get and store wedge pattern in CU
+      // decoder: get and store wedge pattern in CU
+#if LGE_DMM3_SIMP_C0044
+    UInt uiIntraTabIdx   = pcCU->getWedgePredTexIntraTabIdx ( uiAbsPartIdx );
+    uiTextureWedgeTabIdx = getBestWedgeFromTex( pcCU, uiAbsPartIdx, (UInt)iWidth, (UInt)iHeight, uiIntraTabIdx );
+#else
     uiTextureWedgeTabIdx = getBestWedgeFromTex( pcCU, uiAbsPartIdx, (UInt)iWidth, (UInt)iHeight );
+#endif
 
     UInt uiDepth = (pcCU->getDepth(0)) + (pcCU->getPartitionSize(0) == SIZE_2Nx2N ? 0 : 1);
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComPrediction.h
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComPrediction.h	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComPrediction.h	(revision 251)
@@ -176,5 +176,10 @@
 #if HHI_DMM_PRED_TEX
   Void  getBestContourFromTex   ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, TComWedgelet* pcContourWedge );
+#if LGE_DMM3_SIMP_C0044
+  UInt  getBestWedgeFromTex     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Pel * piOrgi, UInt uiStride, UInt &ruiIntraTabIdx);//encoder
+  UInt  getBestWedgeFromTex     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt IntraTabIdx);//decoder
+#else 
   UInt  getBestWedgeFromTex     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight );
+#endif
   Void  copyTextureLumaBlock    ( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piDestBlockY, UInt uiWidth, UInt uiHeight );
 #endif
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComRom.cpp
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComRom.cpp	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComRom.cpp	(revision 251)
@@ -587,4 +587,17 @@
 };
 
+#if LGE_DMM3_SIMP_C0044
+const UChar g_aucWedgeTexPredBitsListIdx[7] =
+{
+  0,   //   2x2
+  6,   //   4x4    
+  9,  //   8x8    
+  9,  //  16x16   
+  9,  //  32x32   
+  0,  //  64x64   
+  0    // 128x128  
+};
+#endif
+
 const UChar g_aucIntraSizeIdxToWedgeSize[7] =
 {
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComRom.h
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComRom.h	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TComRom.h	(revision 251)
@@ -188,4 +188,7 @@
 extern const WedgeResolution g_aeWedgeResolutionList[5];
 extern const UChar           g_aucWedgeFullBitsListIdx[7];
+#if LGE_DMM3_SIMP_C0044
+extern const UChar           g_aucWedgeTexPredBitsListIdx[7];
+#endif
 extern const UChar           g_aucIntraSizeIdxToWedgeSize[7];
 
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TypeDef.h	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibCommon/TypeDef.h	(revision 251)
@@ -82,5 +82,7 @@
 #define HHIQC_DMMFASTSEARCH_B0039         1   // JCT3V-B0039: fast Wedgelet search for DMM modes 1 and 3
 #define HHI_DMM_DELTADC_Q1_C0034          1   // JCT3V-C0034: no quantization and fast encoder search for DMM delta DC values
-
+#if HHIQC_DMMFASTSEARCH_B0039 && HHI_DMM_PRED_TEX
+#define LGE_DMM3_SIMP_C0044               1
+#endif
 
 ///// ***** INTERVIEW MOTION VECTOR PREDICTION *********
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibDecoder/TDecSbac.cpp
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 251)
@@ -980,4 +980,7 @@
 #if HHI_DMM_PRED_TEX
     if( intraPredMode == DMM_WEDGE_PREDTEX_D_IDX )     { xParseWedgePredTexDeltaInfo  ( pcCU, uiAbsPartIdx, uiDepth ); }
+#if LGE_DMM3_SIMP_C0044
+    if( intraPredMode == DMM_WEDGE_PREDTEX_IDX )       { xParseWedgePredTexInfo       ( pcCU, uiAbsPartIdx, uiDepth ); }
+#endif
     if( intraPredMode == DMM_CONTOUR_PREDTEX_D_IDX )   { xParseContourPredTexDeltaInfo( pcCU, uiAbsPartIdx, uiDepth ); }
 #endif
@@ -2422,6 +2425,36 @@
 #endif
 #if HHI_DMM_PRED_TEX
+#if LGE_DMM3_SIMP_C0044
+Void TDecSbac::xParseWedgePredTexInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
+{
+  Int iIntraIdx = pcCU->getIntraSizeIdx(uiAbsPartIdx);
+  Int iBits = g_aucWedgeTexPredBitsListIdx[iIntraIdx];
+
+  UInt uiSymbol, uiTabIdx = 0;
+  for ( Int i = 0; i < iBits; i++ )
+  {
+    m_pcTDecBinIf->decodeBin( uiSymbol, m_cDmmDataSCModel.get(0, 0, 3) );
+    uiTabIdx += ( uiSymbol && i == 0 ) ? 1 : 0;
+    uiTabIdx += ( uiSymbol && i == 1 ) ? 2 : 0;
+    uiTabIdx += ( uiSymbol && i == 2 ) ? 4 : 0;
+    uiTabIdx += ( uiSymbol && i == 3 ) ? 8 : 0;
+    uiTabIdx += ( uiSymbol && i == 4 ) ? 16 : 0;
+    uiTabIdx += ( uiSymbol && i == 5 ) ? 32 : 0;
+    uiTabIdx += ( uiSymbol && i == 6 ) ? 64 : 0;
+    uiTabIdx += ( uiSymbol && i == 7 ) ? 128 : 0;
+    uiTabIdx += ( uiSymbol && i == 8 ) ? 256 : 0;
+    uiTabIdx += ( uiSymbol && i == 9 ) ? 512 : 0;
+    uiTabIdx += ( uiSymbol && i == 10 ) ? 1024 : 0;
+  }
+
+  pcCU->setWedgePredTexIntraTabIdxSubParts( uiTabIdx, uiAbsPartIdx, uiDepth );
+}
+#endif
+
 Void TDecSbac::xParseWedgePredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
 {
+#if LGE_DMM3_SIMP_C0044
+  xParseWedgePredTexInfo( pcCU, uiAbsPartIdx, uiDepth );
+#endif
   UInt uiDC1, uiDC2;
   xReadExGolombLevel( uiDC1, m_cDmmDataSCModel.get(0, 0, 1) );
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibDecoder/TDecSbac.h
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibDecoder/TDecSbac.h	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibDecoder/TDecSbac.h	(revision 251)
@@ -148,4 +148,7 @@
 #endif
 #if HHI_DMM_PRED_TEX
+#if LGE_DMM3_SIMP_C0044
+  Void xParseWedgePredTexInfo       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#endif
   Void xParseWedgePredTexDeltaInfo  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
   Void xParseContourPredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 251)
@@ -1096,4 +1096,7 @@
 
     if( uiDir == DMM_WEDGE_PREDTEX_D_IDX )     { xCodeWedgePredTexDeltaInfo  ( pcCU, uiAbsPartIdx ); }
+#if LGE_DMM3_SIMP_C0044
+    if( uiDir == DMM_WEDGE_PREDTEX_IDX )       { xCodeWedgePredTexInfo       ( pcCU, uiAbsPartIdx ); }
+#endif
     if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX )   { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); }
 #endif
@@ -2671,6 +2674,24 @@
 #endif
 #if HHI_DMM_PRED_TEX
+#if LGE_DMM3_SIMP_C0044
+Void TEncSbac::xCodeWedgePredTexInfo( TComDataCU* pcCU, UInt uiAbsPartIdx )
+{
+  Int iIntraIdx = pcCU->getIntraSizeIdx(uiAbsPartIdx);
+  Int iBits = g_aucWedgeTexPredBitsListIdx[iIntraIdx];
+
+  UInt uiTabIdx = pcCU->getWedgePredTexIntraTabIdx( uiAbsPartIdx );
+
+  for ( Int i = 0; i < iBits; i++ )
+  {
+    m_pcBinIf->encodeBin( ( uiTabIdx >> i ) & 1, m_cDmmDataSCModel.get(0, 0, 3) );
+  }
+}
+#endif
+
 Void TEncSbac::xCodeWedgePredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx )
 {
+#if LGE_DMM3_SIMP_C0044
+  xCodeWedgePredTexInfo( pcCU, uiAbsPartIdx );
+#endif
   Int iDeltaDC1 = pcCU->getWedgePredTexDeltaDC1( uiAbsPartIdx );
   Int iDeltaDC2 = pcCU->getWedgePredTexDeltaDC2( uiAbsPartIdx );
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSbac.h
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSbac.h	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSbac.h	(revision 251)
@@ -178,4 +178,7 @@
 #endif
 #if HHI_DMM_PRED_TEX
+#if LGE_DMM3_SIMP_C0044
+  Void  xCodeWedgePredTexInfo       ( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#endif
   Void  xCodeWedgePredTexDeltaInfo  ( TComDataCU* pcCU, UInt uiAbsPartIdx );
   Void  xCodeContourPredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx );
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 251)
@@ -2252,5 +2252,11 @@
       Int  iTexDeltaDC1 = 0;
       Int  iTexDeltaDC2 = 0;
+#if LGE_DMM3_SIMP_C0044
+      UInt uiTexIntraIdx = 0;
+      findWedgeTexMinDist( pcCU, uiPartOffset, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTexTabIdx, iTexDeltaDC1, iTexDeltaDC2, bAboveAvail, bLeftAvail, uiTexIntraIdx); 
+      pcCU->setWedgePredTexIntraTabIdxSubParts( uiTexIntraIdx, uiPartOffset, uiDepth + uiInitTrDepth );
+#else
       findWedgeTexMinDist( pcCU, uiPartOffset, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTexTabIdx, iTexDeltaDC1, iTexDeltaDC2, bAboveAvail, bLeftAvail ); 
+#endif
       pcCU->setWedgePredTexTabIdxSubParts  ( uiTexTabIdx,  uiPartOffset, uiDepth + uiInitTrDepth );
       pcCU->setWedgePredTexDeltaDC1SubParts( iTexDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth );
@@ -7161,10 +7167,18 @@
                                       Int&         riDeltaDC2, 
                                       Bool         bAboveAvail, 
-                                      Bool         bLeftAvail )
+                                      Bool         bLeftAvail
+#if LGE_DMM3_SIMP_C0044
+                                      ,UInt&        ruiIntraTabIdx
+#endif
+                                      )
 {
   assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE );
   WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiWidth])];
 
+#if LGE_DMM3_SIMP_C0044
+  ruiTabIdx = getBestWedgeFromTex( pcCU, uiAbsPtIdx, uiWidth, uiHeight, piOrig, uiStride, ruiIntraTabIdx );
+#else
   ruiTabIdx = getBestWedgeFromTex( pcCU, uiAbsPtIdx, uiWidth, uiHeight );
+#endif
 
   TComWedgelet* pcBestWedgelet = &(pacWedgeList->at(ruiTabIdx));
Index: /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSearch.h
===================================================================
--- /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSearch.h	(revision 250)
+++ /branches/HTM-5.1-dev1-LG/source/Lib/TLibEncoder/TEncSearch.h	(revision 251)
@@ -435,5 +435,9 @@
                                     Int&           riDeltaDC2,
                                     Bool           bAboveAvail,
-                                    Bool           bLeftAvail );
+                                    Bool           bLeftAvail
+#if LGE_DMM3_SIMP_C0044
+                                    ,UInt&         ruiIntraTabIdx
+#endif
+                                    );
   Void findContourPredTex         ( TComDataCU*    pcCU, 
                                     UInt           uiAbsPtIdx,
