[FFmpeg-devel,1/6] reitnerlace - tinterlace-like filter under LGPL

Submitted by Vasile Toncu on April 10, 2018, 8:34 p.m.

Details

Message ID f667a5ed-7fe8-df31-a876-305b0a8c56a6@tremend.com
State New
Headers show

Commit Message

Vasile Toncu April 10, 2018, 8:34 p.m.
Hello,

This is the first part of the first patch. I added interlace options to 
tinterlace. On the next patch I will delete vf_interlace.


Thank you,

Vasile Toncu


 From b2be4e949e071f9017d8a9d6fbd1fbb56505ac50 Mon Sep 17 00:00:00 2001
From: Vasile Toncu <vasile.toncu@tremend.com>
Date: Tue, 10 Apr 2018 23:28:32 +0300
Subject: [PATCH] Added interlace options to tinterlace

---
  libavfilter/Makefile        | 2 +-
  libavfilter/vf_tinterlace.c | 9 +++++++++
  2 files changed, 10 insertions(+), 1 deletion(-)

MODE_INTERLEAVE_TOP},    INT_MIN, INT_MAX, FLAGS, "mode"},
+    {"bff",               "bottom field 
first",                           0, AV_OPT_TYPE_CONST, {.i64 = 
MODE_INTERLEAVE_BOTTOM}, INT_MIN, INT_MAX, FLAGS, "mode"},
+
+    {"lowpass",           "set vertical low-pass 
filter",                 0, AV_OPT_TYPE_CONST, {.i64 = 
TINTERLACE_FLAG_VLPF}, INT_MIN, INT_MAX, FLAGS, "flags"},
+    {"off",               "disable low-pass 
filter",                      0, AV_OPT_TYPE_CONST, {.i64 = 
0},                    INT_MIN, INT_MAX, FLAGS, "flags" },
+    {"linear",            "linear vertical low-pass 
filter",              0, AV_OPT_TYPE_CONST, {.i64 = 
TINTERLACE_FLAG_VLPF}, INT_MIN, INT_MAX, FLAGS, "flags" },
+    {"complex",           "complex vertical low-pass 
filter",             0, AV_OPT_TYPE_CONST, {.i64 = 
TINTERLACE_FLAG_CVLPF},INT_MIN, INT_MAX, FLAGS, "flags" },

      {NULL}
  };

Comments

Thomas Mundt April 12, 2018, 4:45 p.m.
Hi,

2018-04-10 22:34 GMT+02:00 Vasile Toncu <vasile.toncu@tremend.com>:

> Hello,
>
> This is the first part of the first patch. I added interlace options to
> tinterlace. On the next patch I will delete vf_interlace.
>
>
> Thank you,
>
> Vasile Toncu
>
>
> From b2be4e949e071f9017d8a9d6fbd1fbb56505ac50 Mon Sep 17 00:00:00 2001
> From: Vasile Toncu <vasile.toncu@tremend.com>
> Date: Tue, 10 Apr 2018 23:28:32 +0300
> Subject: [PATCH] Added interlace options to tinterlace
>
> ---
>  libavfilter/Makefile        | 2 +-
>  libavfilter/vf_tinterlace.c | 9 +++++++++
>  2 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/libavfilter/Makefile b/libavfilter/Makefile
> index a90ca30..586d9c7 100644
> --- a/libavfilter/Makefile
> +++ b/libavfilter/Makefile
> @@ -231,7 +231,7 @@ OBJS-$(CONFIG_HYSTERESIS_FILTER) += vf_hysteresis.o
> framesync.o
>  OBJS-$(CONFIG_IDET_FILTER)                   += vf_idet.o
>  OBJS-$(CONFIG_IL_FILTER)                     += vf_il.o
>  OBJS-$(CONFIG_INFLATE_FILTER)                += vf_neighbor.o
> -OBJS-$(CONFIG_INTERLACE_FILTER)              += vf_interlace.o
> +OBJS-$(CONFIG_INTERLACE_FILTER)              += vf_tinterlace.o
>  OBJS-$(CONFIG_INTERLEAVE_FILTER)             += f_interleave.o
>  OBJS-$(CONFIG_KERNDEINT_FILTER)              += vf_kerndeint.o
>  OBJS-$(CONFIG_LENSCORRECTION_FILTER)         += vf_lenscorrection.o
> diff --git a/libavfilter/vf_tinterlace.c b/libavfilter/vf_tinterlace.c
> index f13791d..5bf384d 100644
> --- a/libavfilter/vf_tinterlace.c
> +++ b/libavfilter/vf_tinterlace.c
> @@ -53,6 +53,15 @@ static const AVOption tinterlace_options[] = {
>      {"complex_filter",    "enable complex vertical low-pass filter",
> 0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_CVLPF},INT_MIN, INT_MAX,
> FLAGS, "flags" },
>      {"cvlpf",             "enable complex vertical low-pass filter",
> 0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_CVLPF},INT_MIN, INT_MAX,
> FLAGS, "flags" },
>      {"exact_tb",          "force a timebase which can represent
> timestamps exactly", 0, AV_OPT_TYPE_CONST, {.i64 =
> TINTERLACE_FLAG_EXACT_TB}, INT_MIN, INT_MAX, FLAGS, "flags" },
> +
> +    {"scan",              "scanning mode",
> 0, AV_OPT_TYPE_CONST, {.i64 = MODE_INTERLEAVE_TOP},    INT_MIN, INT_MAX,
> FLAGS, "mode"},
> +    {"tff",               "top field first",
> 0, AV_OPT_TYPE_CONST, {.i64 = MODE_INTERLEAVE_TOP},    INT_MIN, INT_MAX,
> FLAGS, "mode"},
> +    {"bff",               "bottom field first",
> 0, AV_OPT_TYPE_CONST, {.i64 = MODE_INTERLEAVE_BOTTOM}, INT_MIN, INT_MAX,
> FLAGS, "mode"},
> +
> +    {"lowpass",           "set vertical low-pass filter",
> 0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_VLPF}, INT_MIN, INT_MAX,
> FLAGS, "flags"},
> +    {"off",               "disable low-pass filter",
> 0, AV_OPT_TYPE_CONST, {.i64 = 0},                    INT_MIN, INT_MAX,
> FLAGS, "flags" },
> +    {"linear",            "linear vertical low-pass filter",
> 0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_VLPF}, INT_MIN, INT_MAX,
> FLAGS, "flags" },
> +    {"complex",           "complex vertical low-pass filter",
> 0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_CVLPF},INT_MIN, INT_MAX,
> FLAGS, "flags" },
>
>      {NULL}
>  };
> --
>
>
You need to write separate AVOption interlace_options and AVFilter
avfilter_vf_interlace in vf_tinterlace.c
Have a look at this patch:
https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/88e0e2054d911b38662f681bdc267e08312d313a

Regards,
Thomas

Patch hide | download patch | download mbox

diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index a90ca30..586d9c7 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -231,7 +231,7 @@  OBJS-$(CONFIG_HYSTERESIS_FILTER) += vf_hysteresis.o 
framesync.o
  OBJS-$(CONFIG_IDET_FILTER)                   += vf_idet.o
  OBJS-$(CONFIG_IL_FILTER)                     += vf_il.o
  OBJS-$(CONFIG_INFLATE_FILTER)                += vf_neighbor.o
-OBJS-$(CONFIG_INTERLACE_FILTER)              += vf_interlace.o
+OBJS-$(CONFIG_INTERLACE_FILTER)              += vf_tinterlace.o
  OBJS-$(CONFIG_INTERLEAVE_FILTER)             += f_interleave.o
  OBJS-$(CONFIG_KERNDEINT_FILTER)              += vf_kerndeint.o
  OBJS-$(CONFIG_LENSCORRECTION_FILTER)         += vf_lenscorrection.o
diff --git a/libavfilter/vf_tinterlace.c b/libavfilter/vf_tinterlace.c
index f13791d..5bf384d 100644
--- a/libavfilter/vf_tinterlace.c
+++ b/libavfilter/vf_tinterlace.c
@@ -53,6 +53,15 @@  static const AVOption tinterlace_options[] = {
      {"complex_filter",    "enable complex vertical low-pass 
filter",      0, AV_OPT_TYPE_CONST, {.i64 = 
TINTERLACE_FLAG_CVLPF},INT_MIN, INT_MAX, FLAGS, "flags" },
      {"cvlpf",             "enable complex vertical low-pass 
filter",      0, AV_OPT_TYPE_CONST, {.i64 = 
TINTERLACE_FLAG_CVLPF},INT_MIN, INT_MAX, FLAGS, "flags" },
      {"exact_tb",          "force a timebase which can represent 
timestamps exactly", 0, AV_OPT_TYPE_CONST, {.i64 = 
TINTERLACE_FLAG_EXACT_TB}, INT_MIN, INT_MAX, FLAGS, "flags" },
+
+    {"scan",              "scanning 
mode",                                0, AV_OPT_TYPE_CONST, {.i64 = 
MODE_INTERLEAVE_TOP},    INT_MIN, INT_MAX, FLAGS, "mode"},
+    {"tff",               "top field 
first",                              0, AV_OPT_TYPE_CONST, {.i64 =