diff --git a/test/build/win32/codec_ut/codec_unittest.vcproj b/test/build/win32/codec_ut/codec_unittest.vcproj
index 37c8f29b..16199ffa 100644
--- a/test/build/win32/codec_ut/codec_unittest.vcproj
+++ b/test/build/win32/codec_ut/codec_unittest.vcproj
@@ -414,6 +414,10 @@
RelativePath="..\..\..\encoder\EncUT_MemoryZero.cpp"
>
+
+
diff --git a/test/encoder/EncUT_MotionCompensation.cpp b/test/encoder/EncUT_MotionCompensation.cpp
new file mode 100644
index 00000000..255d7894
--- /dev/null
+++ b/test/encoder/EncUT_MotionCompensation.cpp
@@ -0,0 +1,38 @@
+#include
+#include "codec_def.h"
+#include "mc.h"
+#include "cpu.h"
+using namespace WelsEnc;
+
+static void McLumaFunc (SMcFunc* pFuncs, const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride,
+ int16_t iMvX, int16_t iMvY, int32_t iWidth, int32_t iHeight) {
+ uint8_t uiMvpIdx = ((iMvY & 0x03) << 2) + (iMvX & 0x03);
+ ASSERT_EQ (iWidth, 16);
+ pFuncs->pfLumaQuarpelMc[uiMvpIdx] (pSrc, iSrcStride, pDst, iDstStride, iHeight);
+}
+
+#define InitMcFunc WelsInitMcFuncs
+
+#define LUMA_FUNC(funcs, src, srcstride, dst, dststride, mvx, mvy, width, height) \
+ McLumaFunc (funcs, src, srcstride, dst, dststride, mvx, mvy, width, height)
+
+#define CHROMA_FUNC sMcFunc.pfChromaMc
+
+#define PREFIX Enc
+
+#define DEF_MCCOPYTESTS(pfx) \
+DEF_MCCOPYTEST (pfx, 16, 8, 0) \
+DEF_MCCOPYTEST (pfx, 16, 16, 0)
+
+#define DEF_LUMA_MCTEST(pfx,a,b) \
+DEF_LUMA_MCTEST_SUBCASE(pfx,a,b,16,8) \
+DEF_LUMA_MCTEST_SUBCASE(pfx,a,b,16,16)
+
+#define DEF_CHROMA_MCTEST(pfx,a,b) \
+DEF_CHROMA_MCTEST_SUBCASE(pfx,a,b,4,2) \
+DEF_CHROMA_MCTEST_SUBCASE(pfx,a,b,4,4) \
+DEF_CHROMA_MCTEST_SUBCASE(pfx,a,b,4,8) \
+DEF_CHROMA_MCTEST_SUBCASE(pfx,a,b,8,4) \
+DEF_CHROMA_MCTEST_SUBCASE(pfx,a,b,8,8)
+
+#include "mc_test_common.h"
diff --git a/test/encoder/targets.mk b/test/encoder/targets.mk
index 4f8c9cb4..87279552 100644
--- a/test/encoder/targets.mk
+++ b/test/encoder/targets.mk
@@ -10,6 +10,7 @@ ENCODER_UNITTEST_CPP_SRCS=\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_MBCopy.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_MemoryAlloc.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_MemoryZero.cpp\
+ $(ENCODER_UNITTEST_SRCDIR)/EncUT_MotionCompensation.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_MotionEstimate.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_ParameterSetStrategy.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_Reconstruct.cpp\