Commit 28b5dc61 authored by Marton Balint's avatar 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: 's avatarMarton Balint <cus@passwd.hu>
parent 8b5ef2dc
...@@ -37,6 +37,12 @@ ...@@ -37,6 +37,12 @@
#define TINTERLACE_FLAG_CVLPF 2 #define TINTERLACE_FLAG_CVLPF 2
#define TINTERLACE_FLAG_EXACT_TB 4 #define TINTERLACE_FLAG_EXACT_TB 4
enum VLPFilter {
VLPF_OFF = 0,
VLPF_LIN = 1,
VLPF_CMP = 2,
};
enum TInterlaceMode { enum TInterlaceMode {
MODE_MERGE = 0, MODE_MERGE = 0,
MODE_DROP_EVEN, MODE_DROP_EVEN,
...@@ -59,6 +65,7 @@ typedef struct TInterlaceContext { ...@@ -59,6 +65,7 @@ typedef struct TInterlaceContext {
int mode; ///< TInterlaceMode, interlace mode selected int mode; ///< TInterlaceMode, interlace mode selected
AVRational preout_time_base; AVRational preout_time_base;
int flags; ///< flags affecting interlacing algorithm int flags; ///< flags affecting interlacing algorithm
int lowpass; ///< legacy interlace filter lowpass mode
int frame; ///< number of the output frame int frame; ///< number of the output frame
int vsub; ///< chroma vertical subsampling int vsub; ///< chroma vertical subsampling
AVFrame *cur; AVFrame *cur;
......
...@@ -63,10 +63,10 @@ static const AVOption interlace_options[] = { ...@@ -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"}, { "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"}, { "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"}, { "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" }, { "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 = 0}, INT_MIN, INT_MAX, FLAGS, "flags" }, { "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 = TINTERLACE_FLAG_VLPF}, INT_MIN, INT_MAX, FLAGS, "flags" }, { "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 = TINTERLACE_FLAG_CVLPF},INT_MIN, INT_MAX, FLAGS, "flags" }, { "complex", "complex vertical low-pass filter", 0, AV_OPT_TYPE_CONST, {.i64 = VLPF_CMP}, INT_MIN, INT_MAX, FLAGS, "lowpass" },
{ NULL } { NULL }
}; };
...@@ -518,6 +518,11 @@ static int init_interlace(AVFilterContext *ctx) ...@@ -518,6 +518,11 @@ static int init_interlace(AVFilterContext *ctx)
if (tinterlace->mode <= MODE_BFF) if (tinterlace->mode <= MODE_BFF)
tinterlace->mode += MODE_INTERLEAVE_TOP; 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; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment