Index: /branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibCommon/TComRdCost.cpp
===================================================================
--- /branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibCommon/TComRdCost.cpp	(revision 807)
+++ /branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibCommon/TComRdCost.cpp	(revision 808)
@@ -585,5 +585,7 @@
   cDtParam.bApplyWeight = false;
   cDtParam.uiComp       = 255;    // just for assert: to be sure it was set before use, since only values 0,1 or 2 are allowed.
-
+#if SCU_HS_VSD_BUGFIX_IMPROV_G0163
+  cDtParam.bitDepth   = g_bitDepthY;
+#endif
   Dist dist = cDtParam.DistFunc( &cDtParam );
 
@@ -2746,6 +2748,10 @@
 
   dD = ( (Double) ( dDM >> DISTORTION_PRECISION_ADJUSTMENT( g_bitDepthY - 8 ) ) ) * m_dDisparityCoeff;
-
+#if SCU_HS_VSD_BUGFIX_IMPROV_G0163
+  Double dDepthWeight = ( pOrg[x] >=  ( (1<<(g_bitDepthY - 3)) + (1<<(g_bitDepthY - 2)) ) ? 4 : pOrg[x] > ((1<<g_bitDepthY) >> 4) ? (Float)(pOrg[x] - ((1<<g_bitDepthY) >> 4))/(Float)((1<<g_bitDepthY) >> 3) + 1 : 1.0 );
+  Double dTemp = ( 0.5 * fabs(dD) * dDepthWeight * ( abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x-1+y*iVirStride ] ) + abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x+1+y*iVirStride ] ) ) );
+#else
   Double dTemp = ( 0.5 * fabs(dD) * ( abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x-1+y*iVirStride ] ) + abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x+1+y*iVirStride ] ) ) );
+#endif  
   iTemp = (Int) (((dTemp) < 0)? (Int)((dTemp) - 0.5) : (Int)((dTemp) + 0.5));
 
Index: /branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- /branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibCommon/TypeDef.h	(revision 807)
+++ /branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibCommon/TypeDef.h	(revision 808)
@@ -213,5 +213,5 @@
 #define H_3D_VSO_FIX                      0   // This fix should be enabled after verification 
 #endif
-
+#define SCU_HS_VSD_BUGFIX_IMPROV_G0163    1
 ////   ****** NEIGHBOURING BLOCK-BASED DISPARITY VECTOR  *********
 #if H_3D_NBDV
