diff --git a/libavcodec/arm/Makefile b/libavcodec/arm/Makefile
index 9c64b361f1fee11bf4f475da26967f86c05f4f30..0e5e53a16ade5f35eac5977b0b930a355cbb5fc9 100644
--- a/libavcodec/arm/Makefile
+++ b/libavcodec/arm/Makefile
@@ -25,8 +25,7 @@ OBJS-$(CONFIG_MPEGAUDIODSP)            += arm/mpegaudiodsp_init_arm.o
 OBJS-$(CONFIG_MPEGVIDEO)               += arm/mpegvideo_arm.o
 OBJS-$(CONFIG_VORBIS_DECODER)          += arm/vorbisdsp_init_arm.o
 OBJS-$(CONFIG_VP3DSP)                  += arm/vp3dsp_init_arm.o
-OBJS-$(CONFIG_VP5_DECODER)             += arm/vp56dsp_init_arm.o
-OBJS-$(CONFIG_VP6_DECODER)             += arm/vp56dsp_init_arm.o
+OBJS-$(CONFIG_VP6_DECODER)             += arm/vp6dsp_init_arm.o
 OBJS-$(CONFIG_VP8_DECODER)             += arm/vp8dsp_init_arm.o
 OBJS-$(CONFIG_RV30_DECODER)            += arm/rv34dsp_init_arm.o
 OBJS-$(CONFIG_RV40_DECODER)            += arm/rv34dsp_init_arm.o        \
@@ -89,7 +88,6 @@ NEON-OBJS-$(CONFIG_RV40_DECODER)       += arm/rv34dsp_neon.o            \
                                           arm/rv40dsp_neon.o
 NEON-OBJS-$(CONFIG_VORBIS_DECODER)     += arm/vorbisdsp_neon.o
 NEON-OBJS-$(CONFIG_VP3DSP)             += arm/vp3dsp_neon.o
-NEON-OBJS-$(CONFIG_VP5_DECODER)        += arm/vp56dsp_neon.o
-NEON-OBJS-$(CONFIG_VP6_DECODER)        += arm/vp56dsp_neon.o
+NEON-OBJS-$(CONFIG_VP6_DECODER)        += arm/vp6dsp_neon.o
 NEON-OBJS-$(CONFIG_VP8_DECODER)        += arm/vp8dsp_init_neon.o        \
                                           arm/vp8dsp_neon.o
diff --git a/libavcodec/arm/vp56dsp_init_arm.c b/libavcodec/arm/vp6dsp_init_arm.c
similarity index 90%
rename from libavcodec/arm/vp56dsp_init_arm.c
rename to libavcodec/arm/vp6dsp_init_arm.c
index 65e892dafab50f47a0842e848b64b405d85cd778..4ec41ed9f1d79c787d69669ec567876482e73f45 100644
--- a/libavcodec/arm/vp56dsp_init_arm.c
+++ b/libavcodec/arm/vp6dsp_init_arm.c
@@ -28,11 +28,11 @@
 void ff_vp6_edge_filter_hor_neon(uint8_t *yuv, int stride, int t);
 void ff_vp6_edge_filter_ver_neon(uint8_t *yuv, int stride, int t);
 
-av_cold void ff_vp56dsp_init_arm(VP56DSPContext *s, enum AVCodecID codec)
+av_cold void ff_vp6dsp_init_arm(VP56DSPContext *s, enum AVCodecID codec)
 {
     int cpu_flags = av_get_cpu_flags();
 
-    if (codec != AV_CODEC_ID_VP5 && have_neon(cpu_flags)) {
+    if (have_neon(cpu_flags)) {
         s->edge_filter_hor = ff_vp6_edge_filter_hor_neon;
         s->edge_filter_ver = ff_vp6_edge_filter_ver_neon;
     }
diff --git a/libavcodec/arm/vp56dsp_neon.S b/libavcodec/arm/vp6dsp_neon.S
similarity index 100%
rename from libavcodec/arm/vp56dsp_neon.S
rename to libavcodec/arm/vp6dsp_neon.S
diff --git a/libavcodec/vp56dsp.c b/libavcodec/vp56dsp.c
index 9929530221ed9c8439ad45dce6748bc71c934475..5e09d2414e6b95393b1fee467e0f3d27a85ae9f3 100644
--- a/libavcodec/vp56dsp.c
+++ b/libavcodec/vp56dsp.c
@@ -88,9 +88,11 @@ av_cold void ff_vp56dsp_init(VP56DSPContext *s, enum AVCodecID codec)
 
         if (CONFIG_VP6_DECODER) {
             s->vp6_filter_diag4 = ff_vp6_filter_diag4_c;
+
+            if (ARCH_ARM)
+                ff_vp6dsp_init_arm(s, codec);
+            if (ARCH_X86)
+                ff_vp6dsp_init_x86(s, codec);
         }
     }
-
-    if (ARCH_ARM) ff_vp56dsp_init_arm(s, codec);
-    if (ARCH_X86) ff_vp56dsp_init_x86(s, codec);
 }
diff --git a/libavcodec/vp56dsp.h b/libavcodec/vp56dsp.h
index 034e2e9c5b24ac44295c8ff324f2420ff2cd7caf..389d35901ccab7983e6f9ef8cc012e5c36b100b5 100644
--- a/libavcodec/vp56dsp.h
+++ b/libavcodec/vp56dsp.h
@@ -36,7 +36,7 @@ void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, int stride,
                            const int16_t *h_weights, const int16_t *v_weights);
 
 void ff_vp56dsp_init(VP56DSPContext *s, enum AVCodecID codec);
-void ff_vp56dsp_init_arm(VP56DSPContext *s, enum AVCodecID codec);
-void ff_vp56dsp_init_x86(VP56DSPContext* c, enum AVCodecID codec);
+void ff_vp6dsp_init_arm(VP56DSPContext *s, enum AVCodecID codec);
+void ff_vp6dsp_init_x86(VP56DSPContext* c, enum AVCodecID codec);
 
 #endif /* AVCODEC_VP56DSP_H */
diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile
index e3b533d2d1cf1dcca7dac8ad53296ca8f1c2bf42..9a0c0971c6d5bbe09099fec807642e9c3bfc2f26 100644
--- a/libavcodec/x86/Makefile
+++ b/libavcodec/x86/Makefile
@@ -27,8 +27,7 @@ OBJS-$(CONFIG_VC1_DECODER)             += x86/vc1dsp_init.o
 OBJS-$(CONFIG_VIDEODSP)                += x86/videodsp_init.o
 OBJS-$(CONFIG_VORBIS_DECODER)          += x86/vorbisdsp_init.o
 OBJS-$(CONFIG_VP3DSP)                  += x86/vp3dsp_init.o
-OBJS-$(CONFIG_VP5_DECODER)             += x86/vp56dsp_init.o
-OBJS-$(CONFIG_VP6_DECODER)             += x86/vp56dsp_init.o
+OBJS-$(CONFIG_VP6_DECODER)             += x86/vp6dsp_init.o
 OBJS-$(CONFIG_VP8_DECODER)             += x86/vp8dsp_init.o
 OBJS-$(CONFIG_XMM_CLOBBER_TEST)        += x86/w64xmmtest.o
 
@@ -88,5 +87,5 @@ YASM-OBJS-$(CONFIG_VC1_DECODER)        += x86/vc1dsp.o
 YASM-OBJS-$(CONFIG_VIDEODSP)           += x86/videodsp.o
 YASM-OBJS-$(CONFIG_VORBIS_DECODER)     += x86/vorbisdsp.o
 YASM-OBJS-$(CONFIG_VP3DSP)             += x86/vp3dsp.o
-YASM-OBJS-$(CONFIG_VP6_DECODER)        += x86/vp56dsp.o
+YASM-OBJS-$(CONFIG_VP6_DECODER)        += x86/vp6dsp.o
 YASM-OBJS-$(CONFIG_VP8_DECODER)        += x86/vp8dsp.o
diff --git a/libavcodec/x86/vp56dsp.asm b/libavcodec/x86/vp6dsp.asm
similarity index 100%
rename from libavcodec/x86/vp56dsp.asm
rename to libavcodec/x86/vp6dsp.asm
diff --git a/libavcodec/x86/vp56dsp_init.c b/libavcodec/x86/vp6dsp_init.c
similarity index 80%
rename from libavcodec/x86/vp56dsp_init.c
rename to libavcodec/x86/vp6dsp_init.c
index 1596273fddfa1b7b3bc74cf610e8de4f57fe7f36..c4a500b28a812cf40b2f97d17c4b67b8843adabb 100644
--- a/libavcodec/x86/vp56dsp_init.c
+++ b/libavcodec/x86/vp6dsp_init.c
@@ -30,19 +30,16 @@ void ff_vp6_filter_diag4_mmx(uint8_t *dst, uint8_t *src, int stride,
 void ff_vp6_filter_diag4_sse2(uint8_t *dst, uint8_t *src, int stride,
                               const int16_t *h_weights,const int16_t *v_weights);
 
-av_cold void ff_vp56dsp_init_x86(VP56DSPContext* c, enum AVCodecID codec)
+av_cold void ff_vp6dsp_init_x86(VP56DSPContext* c, enum AVCodecID codec)
 {
     int cpu_flags = av_get_cpu_flags();
 
-    if (CONFIG_VP6_DECODER && codec == AV_CODEC_ID_VP6) {
 #if ARCH_X86_32
-        if (EXTERNAL_MMX(cpu_flags)) {
-            c->vp6_filter_diag4 = ff_vp6_filter_diag4_mmx;
-        }
+    if (EXTERNAL_MMX(cpu_flags)) {
+        c->vp6_filter_diag4 = ff_vp6_filter_diag4_mmx;
+    }
 #endif
-
-        if (EXTERNAL_SSE2(cpu_flags)) {
-            c->vp6_filter_diag4 = ff_vp6_filter_diag4_sse2;
-        }
+    if (EXTERNAL_SSE2(cpu_flags)) {
+        c->vp6_filter_diag4 = ff_vp6_filter_diag4_sse2;
     }
 }