[FFmpeg-cvslog] avfilter/vf_interlace : move func init in ff_interlace_init and add depth arg for ff_interlace_init_x86

Martin Vignali git at videolan.org
Tue Dec 19 22:02:44 EET 2017


ffmpeg | branch: master | Martin Vignali <martin.vignali at gmail.com> | Mon Dec 18 11:18:14 2017 +0100| [d31770d9a603596a0ae970328a34c1bf5cff1715] | committer: Martin Vignali

avfilter/vf_interlace : move func init in ff_interlace_init and add depth arg for ff_interlace_init_x86

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d31770d9a603596a0ae970328a34c1bf5cff1715
---

 libavfilter/interlace.h             |  3 ++-
 libavfilter/vf_interlace.c          | 35 ++++++++++++++++++++---------------
 libavfilter/x86/vf_interlace_init.c |  4 ++--
 3 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/libavfilter/interlace.h b/libavfilter/interlace.h
index 90a0198bdc..b41f0d5706 100644
--- a/libavfilter/interlace.h
+++ b/libavfilter/interlace.h
@@ -62,6 +62,7 @@ typedef struct InterlaceContext {
                          ptrdiff_t mref, ptrdiff_t pref, int clip_max);
 } InterlaceContext;
 
-void ff_interlace_init_x86(InterlaceContext *interlace);
+void ff_interlace_init(InterlaceContext *interlace, int depth);
+void ff_interlace_init_x86(InterlaceContext *interlace, int depth);
 
 #endif /* AVFILTER_INTERLACE_H */
diff --git a/libavfilter/vf_interlace.c b/libavfilter/vf_interlace.c
index 731069818f..24c422ded2 100644
--- a/libavfilter/vf_interlace.c
+++ b/libavfilter/vf_interlace.c
@@ -185,6 +185,25 @@ static av_cold void uninit(AVFilterContext *ctx)
     av_frame_free(&s->next);
 }
 
+void ff_interlace_init(InterlaceContext *s, int depth)
+{
+    if (s->lowpass) {
+        if (s->lowpass == VLPF_LIN) {
+            if (depth > 8)
+                s->lowpass_line = lowpass_line_c_16;
+            else
+                s->lowpass_line = lowpass_line_c;
+        } else if (s->lowpass == VLPF_CMP) {
+            if (depth > 8)
+                s->lowpass_line = lowpass_line_complex_c_16;
+            else
+                s->lowpass_line = lowpass_line_complex_c;
+        }
+        if (ARCH_X86)
+            ff_interlace_init_x86(s, depth);
+    }
+}
+
 static int config_out_props(AVFilterLink *outlink)
 {
     AVFilterContext *ctx = outlink->src;
@@ -210,21 +229,7 @@ static int config_out_props(AVFilterLink *outlink)
     outlink->frame_rate.den *= 2;
 
     s->csp = av_pix_fmt_desc_get(outlink->format);
-    if (s->lowpass) {
-        if (s->lowpass == VLPF_LIN) {
-            if (s->csp->comp[0].depth > 8)
-                s->lowpass_line = lowpass_line_c_16;
-            else
-                s->lowpass_line = lowpass_line_c;
-        } else if (s->lowpass == VLPF_CMP) {
-            if (s->csp->comp[0].depth > 8)
-                s->lowpass_line = lowpass_line_complex_c_16;
-            else
-                s->lowpass_line = lowpass_line_complex_c;
-        }
-        if (ARCH_X86)
-            ff_interlace_init_x86(s);
-    }
+    ff_interlace_init(s, s->csp->comp[0].depth);
 
     av_log(ctx, AV_LOG_VERBOSE, "%s interlacing %s lowpass filter\n",
            s->scan == MODE_TFF ? "tff" : "bff", (s->lowpass) ? "with" : "without");
diff --git a/libavfilter/x86/vf_interlace_init.c b/libavfilter/x86/vf_interlace_init.c
index 70fe86ccff..b024b61735 100644
--- a/libavfilter/x86/vf_interlace_init.c
+++ b/libavfilter/x86/vf_interlace_init.c
@@ -48,11 +48,11 @@ void ff_lowpass_line_complex_12_sse2(uint8_t *dstp, ptrdiff_t linesize,
                                      const uint8_t *srcp, ptrdiff_t mref,
                                      ptrdiff_t pref, int clip_max);
 
-av_cold void ff_interlace_init_x86(InterlaceContext *s)
+av_cold void ff_interlace_init_x86(InterlaceContext *s, int depth)
 {
     int cpu_flags = av_get_cpu_flags();
 
-    if (s->csp->comp[0].depth > 8) {
+    if (depth > 8) {
         if (EXTERNAL_SSE2(cpu_flags)) {
             if (s->lowpass == VLPF_LIN)
                 s->lowpass_line = ff_lowpass_line_16_sse2;



More information about the ffmpeg-cvslog mailing list