diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index 14754eca9c316e8d2e90dfe3eb33dc3487cf8607..81c7342cfe60fa9654c951a90a0961b4a4a2a953 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -35,6 +35,7 @@
 #include "mpeg12decdata.h"
 #include "bytestream.h"
 #include "vdpau_internal.h"
+#include "xvmc_internal.h"
 
 //#undef NDEBUG
 //#include <assert.h>
@@ -61,11 +62,6 @@ static inline int mpeg2_fast_decode_block_intra(MpegEncContext *s, DCTELEM *bloc
 static int mpeg_decode_motion(MpegEncContext *s, int fcode, int pred);
 static void exchange_uv(MpegEncContext *s);
 
-int  ff_xvmc_field_start(MpegEncContext *s, AVCodecContext *avctx);
-int  ff_xvmc_field_end(MpegEncContext *s);
-void ff_xvmc_pack_pblocks(MpegEncContext *s,int cbp);
-void ff_xvmc_init_block(MpegEncContext *s);//set s->block
-
 static const enum PixelFormat pixfmt_xvmc_mpg2_420[] = {
                                            PIX_FMT_XVMC_MPEG2_IDCT,
                                            PIX_FMT_XVMC_MPEG2_MC,
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 660b7990efa5a6b5e118b507f2c62dad999951e6..da192439664e08a1d91fca521d48bea1a5612ea5 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -34,6 +34,7 @@
 #include "mjpegenc.h"
 #include "msmpeg4.h"
 #include "faandct.h"
+#include "xvmc_internal.h"
 #include <limits.h>
 
 //#undef NDEBUG
@@ -54,10 +55,6 @@ static void dct_unquantize_h263_intra_c(MpegEncContext *s,
 static void dct_unquantize_h263_inter_c(MpegEncContext *s,
                                   DCTELEM *block, int n, int qscale);
 
-int  ff_xvmc_field_start(MpegEncContext*s, AVCodecContext *avctx);
-void ff_xvmc_field_end(MpegEncContext *s);
-void ff_xvmc_decode_mb(MpegEncContext *s);
-
 
 /* enable all paranoid tests for rounding, overflows, etc... */
 //#define PARANOID
diff --git a/libavcodec/mpegvideo_xvmc.c b/libavcodec/mpegvideo_xvmc.c
index 5a6105af058cbedbfad37450653a7e386d73637f..b05a49505ff218c4454079bc97f0d826fe6f0f1d 100644
--- a/libavcodec/mpegvideo_xvmc.c
+++ b/libavcodec/mpegvideo_xvmc.c
@@ -29,6 +29,7 @@
 #include <assert.h>
 
 #include "xvmc.h"
+#include "xvmc_internal.h"
 
 //set s->block
 void ff_xvmc_init_block(MpegEncContext *s)
diff --git a/libavcodec/xvmc_internal.h b/libavcodec/xvmc_internal.h
new file mode 100644
index 0000000000000000000000000000000000000000..9bb8909d2831114c3c8bc62df91f6d6ef570b223
--- /dev/null
+++ b/libavcodec/xvmc_internal.h
@@ -0,0 +1,33 @@
+/*
+ * XVideo Motion Compensation internal functions
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVCODEC_INTERNAL_XVMC_H
+#define AVCODEC_INTERNAL_XVMC_H
+
+#include "avcodec.h"
+#include "mpegvideo.h"
+
+void ff_xvmc_init_block(MpegEncContext *s);
+void ff_xvmc_pack_pblocks(MpegEncContext *s, int cbp);
+int  ff_xvmc_field_start(MpegEncContext*s, AVCodecContext *avctx);
+void ff_xvmc_field_end(MpegEncContext *s);
+void ff_xvmc_decode_mb(MpegEncContext *s);
+
+#endif /* AVCODEC_INTERNAL_XVMC_H */