[FFmpeg-cvslog] avfilter/vf_interlace: restore lowpass mode constants
Marton Balint
git at videolan.org
Sun Dec 15 01:25:04 EET 2019
ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Fri Dec 6 10:35:41 2019 +0100| [28b5dc6199ed7b4f62e345865fe28142b9cbf9e0] | committer: Marton Balint
avfilter/vf_interlace: restore lowpass mode constants
The documentation still mentions numerical constants in addition to textual
ones. It is also wrong to use distinct modes as flags and it disallows us to
actually use the flags field for real flags in the future.
Signed-off-by: Marton Balint <cus at passwd.hu>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=28b5dc6199ed7b4f62e345865fe28142b9cbf9e0
---
libavfilter/tinterlace.h | 7 +++++++
libavfilter/vf_tinterlace.c | 13 +++++++++----
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/libavfilter/tinterlace.h b/libavfilter/tinterlace.h
index 5bcb9a583a..e204b61aa0 100644
--- a/libavfilter/tinterlace.h
+++ b/libavfilter/tinterlace.h
@@ -37,6 +37,12 @@
#define TINTERLACE_FLAG_CVLPF 2
#define TINTERLACE_FLAG_EXACT_TB 4
+enum VLPFilter {
+ VLPF_OFF = 0,
+ VLPF_LIN = 1,
+ VLPF_CMP = 2,
+};
+
enum TInterlaceMode {
MODE_MERGE = 0,
MODE_DROP_EVEN,
@@ -59,6 +65,7 @@ typedef struct TInterlaceContext {
int mode; ///< TInterlaceMode, interlace mode selected
AVRational preout_time_base;
int flags; ///< flags affecting interlacing algorithm
+ int lowpass; ///< legacy interlace filter lowpass mode
int frame; ///< number of the output frame
int vsub; ///< chroma vertical subsampling
AVFrame *cur;
diff --git a/libavfilter/vf_tinterlace.c b/libavfilter/vf_tinterlace.c
index fc5d11e053..32b2ff9f5a 100644
--- a/libavfilter/vf_tinterlace.c
+++ b/libavfilter/vf_tinterlace.c
@@ -63,10 +63,10 @@ static const AVOption interlace_options[] = {
{ "scan", "scanning mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = MODE_TFF}, 0, 1, FLAGS, "mode"},
{ "tff", "top field first", 0, AV_OPT_TYPE_CONST, {.i64 = MODE_TFF}, INT_MIN, INT_MAX, FLAGS, .unit = "mode"},
{ "bff", "bottom field first", 0, AV_OPT_TYPE_CONST, {.i64 = MODE_BFF}, INT_MIN, INT_MAX, FLAGS, .unit = "mode"},
- { "lowpass", "set vertical low-pass filter", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64 = TINTERLACE_FLAG_VLPF}, 0, 2, FLAGS, "flags" },
- { "off", "disable vertical 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" },
+ { "lowpass", "set vertical low-pass filter", OFFSET(lowpass), AV_OPT_TYPE_INT, {.i64 = VLPF_LIN}, 0, 2, FLAGS, "lowpass" },
+ { "off", "disable vertical low-pass filter", 0, AV_OPT_TYPE_CONST, {.i64 = VLPF_OFF}, INT_MIN, INT_MAX, FLAGS, "lowpass" },
+ { "linear", "linear vertical low-pass filter", 0, AV_OPT_TYPE_CONST, {.i64 = VLPF_LIN}, INT_MIN, INT_MAX, FLAGS, "lowpass" },
+ { "complex", "complex vertical low-pass filter", 0, AV_OPT_TYPE_CONST, {.i64 = VLPF_CMP}, INT_MIN, INT_MAX, FLAGS, "lowpass" },
{ NULL }
};
@@ -518,6 +518,11 @@ static int init_interlace(AVFilterContext *ctx)
if (tinterlace->mode <= MODE_BFF)
tinterlace->mode += MODE_INTERLEAVE_TOP;
+ if (tinterlace->lowpass == VLPF_LIN)
+ tinterlace->flags |= TINTERLACE_FLAG_VLPF;
+ if (tinterlace->lowpass == VLPF_CMP)
+ tinterlace->flags |= TINTERLACE_FLAG_CVLPF;
+
return 0;
}
More information about the ffmpeg-cvslog
mailing list