diff --git a/libavcodec/copy_block.h b/libavcodec/copy_block.h
new file mode 100644
index 0000000000000000000000000000000000000000..ec465db4347d8ce6504d3632ba41a7b8dadec997
--- /dev/null
+++ b/libavcodec/copy_block.h
@@ -0,0 +1,61 @@
+/*
+ * This file is part of Libav.
+ *
+ * Libav 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.
+ *
+ * Libav 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 Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVCODEC_COPY_BLOCK_H
+#define AVCODEC_COPY_BLOCK_H
+
+#include <stdint.h>
+
+#include "libavutil/intreadwrite.h"
+
+static inline void copy_block8(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
+{
+    int i;
+    for(i=0; i<h; i++)
+    {
+        AV_COPY64U(dst, src);
+        dst+=dstStride;
+        src+=srcStride;
+    }
+}
+
+static inline void copy_block9(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
+{
+    int i;
+    for(i=0; i<h; i++)
+    {
+        AV_COPY64U(dst, src);
+        dst[8]= src[8];
+        dst+=dstStride;
+        src+=srcStride;
+    }
+}
+
+static inline void copy_block17(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
+{
+    int i;
+    for(i=0; i<h; i++)
+    {
+        AV_COPY128U(dst, src);
+        dst[16]= src[16];
+        dst+=dstStride;
+        src+=srcStride;
+    }
+}
+
+#endif /* AVCODEC_COPY_BLOCK_H */
diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c
index fac51bcbae32ebd2ac5f725abf4ce7dd7ba8d9f6..2980684c64b57cbc1a902111f89be7f1d6cb2749 100644
--- a/libavcodec/dsputil.c
+++ b/libavcodec/dsputil.c
@@ -29,6 +29,7 @@
 
 #include "libavutil/imgutils.h"
 #include "avcodec.h"
+#include "copy_block.h"
 #include "dsputil.h"
 #include "simple_idct.h"
 #include "faandct.h"
diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h
index d42518c522ed4fe7946fb868f16b833658edb2af..22c204c4754889cba18f799bbc2c51b56fb5e094 100644
--- a/libavcodec/dsputil.h
+++ b/libavcodec/dsputil.h
@@ -514,40 +514,4 @@ static int name16(void /*MpegEncContext*/ *s, uint8_t *dst, uint8_t *src, int st
     return score;\
 }
 
-
-static inline void copy_block8(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
-{
-    int i;
-    for(i=0; i<h; i++)
-    {
-        AV_COPY64U(dst, src);
-        dst+=dstStride;
-        src+=srcStride;
-    }
-}
-
-static inline void copy_block9(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
-{
-    int i;
-    for(i=0; i<h; i++)
-    {
-        AV_COPY64U(dst, src);
-        dst[8]= src[8];
-        dst+=dstStride;
-        src+=srcStride;
-    }
-}
-
-static inline void copy_block17(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
-{
-    int i;
-    for(i=0; i<h; i++)
-    {
-        AV_COPY128U(dst, src);
-        dst[16]= src[16];
-        dst+=dstStride;
-        src+=srcStride;
-    }
-}
-
 #endif /* AVCODEC_DSPUTIL_H */
diff --git a/libavcodec/sh4/qpel.c b/libavcodec/sh4/qpel.c
index 27d56a1563a7dbd6c429fa85627b57f869e551a4..04823edde1c70e9a5abb2cbb0b55aa3f5faab8ec 100644
--- a/libavcodec/sh4/qpel.c
+++ b/libavcodec/sh4/qpel.c
@@ -22,6 +22,7 @@
  */
 
 #include "libavutil/common.h"
+#include "libavcodec/copy_block.h"
 
 #define PIXOP2(OPNAME, OP) \
 \