diff --git a/libavfilter/x86/vf_interlace.asm b/libavfilter/x86/vf_interlace.asm
index 06b269828a27e0280bbeb51c0288bb94e4be8c24..99ec9e05425ff65a21c5802e7710537e5eabe5ec 100644
--- a/libavfilter/x86/vf_interlace.asm
+++ b/libavfilter/x86/vf_interlace.asm
@@ -201,5 +201,10 @@ LOWPASS_LINE
 INIT_XMM avx
 LOWPASS_LINE
 
+%if HAVE_AVX2_EXTERNAL
+INIT_YMM avx2
+LOWPASS_LINE
+%endif
+
 INIT_XMM sse2
 LOWPASS_LINE_COMPLEX
diff --git a/libavfilter/x86/vf_interlace_init.c b/libavfilter/x86/vf_interlace_init.c
index b024b6173574978d72879678097022a5cd879998..0de0fea382e53a5bd1441aeba90e25f3a27197a7 100644
--- a/libavfilter/x86/vf_interlace_init.c
+++ b/libavfilter/x86/vf_interlace_init.c
@@ -32,6 +32,9 @@ void ff_lowpass_line_sse2(uint8_t *dstp, ptrdiff_t linesize,
 void ff_lowpass_line_avx (uint8_t *dstp, ptrdiff_t linesize,
                           const uint8_t *srcp, ptrdiff_t mref,
                           ptrdiff_t pref, int clip_max);
+void ff_lowpass_line_avx2 (uint8_t *dstp, ptrdiff_t linesize,
+                          const uint8_t *srcp, ptrdiff_t mref,
+                          ptrdiff_t pref, int clip_max);
 
 void ff_lowpass_line_16_sse2(uint8_t *dstp, ptrdiff_t linesize,
                              const uint8_t *srcp, ptrdiff_t mref,
@@ -39,6 +42,9 @@ void ff_lowpass_line_16_sse2(uint8_t *dstp, ptrdiff_t linesize,
 void ff_lowpass_line_16_avx (uint8_t *dstp, ptrdiff_t linesize,
                              const uint8_t *srcp, ptrdiff_t mref,
                              ptrdiff_t pref, int clip_max);
+void ff_lowpass_line_16_avx2 (uint8_t *dstp, ptrdiff_t linesize,
+                             const uint8_t *srcp, ptrdiff_t mref,
+                             ptrdiff_t pref, int clip_max);
 
 void ff_lowpass_line_complex_sse2(uint8_t *dstp, ptrdiff_t linesize,
                                   const uint8_t *srcp, ptrdiff_t mref,
@@ -62,6 +68,9 @@ av_cold void ff_interlace_init_x86(InterlaceContext *s, int depth)
         if (EXTERNAL_AVX(cpu_flags))
             if (s->lowpass == VLPF_LIN)
                 s->lowpass_line = ff_lowpass_line_16_avx;
+        if (EXTERNAL_AVX2_FAST(cpu_flags))
+            if (s->lowpass == VLPF_LIN)
+                s->lowpass_line = ff_lowpass_line_16_avx2;
     } else {
         if (EXTERNAL_SSE2(cpu_flags)) {
             if (s->lowpass == VLPF_LIN)
@@ -72,5 +81,8 @@ av_cold void ff_interlace_init_x86(InterlaceContext *s, int depth)
         if (EXTERNAL_AVX(cpu_flags))
             if (s->lowpass == VLPF_LIN)
                 s->lowpass_line = ff_lowpass_line_avx;
+        if (EXTERNAL_AVX2_FAST(cpu_flags))
+            if (s->lowpass == VLPF_LIN)
+                s->lowpass_line = ff_lowpass_line_avx2;
     }
 }