mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-19 05:55:07 +00:00
lavfi/yadif: add support to named constants
This commit is contained in:
parent
f7dc6aa6b1
commit
cb8d3965fd
@ -4303,32 +4303,32 @@ Specify the interlacing mode to adopt. Accept one of the following
|
||||
values:
|
||||
|
||||
@table @option
|
||||
@item 0
|
||||
@item 0, send_frame
|
||||
output 1 frame for each frame
|
||||
@item 1
|
||||
@item 1, send_field
|
||||
output 1 frame for each field
|
||||
@item 2
|
||||
like 0 but skips spatial interlacing check
|
||||
@item 3
|
||||
like 1 but skips spatial interlacing check
|
||||
@item 2, send_frame_nospatial
|
||||
like @code{send_frame} but skip spatial interlacing check
|
||||
@item 3, send_field_nospatial
|
||||
like @code{send_field} but skip spatial interlacing check
|
||||
@end table
|
||||
|
||||
Default value is 0.
|
||||
Default value is @code{send_frame}.
|
||||
|
||||
@item parity
|
||||
Specify the picture field parity assumed for the input interlaced
|
||||
video. Accept one of the following values:
|
||||
|
||||
@table @option
|
||||
@item 0
|
||||
@item 0, tff
|
||||
assume top field first
|
||||
@item 1
|
||||
@item 1, bff
|
||||
assume bottom field first
|
||||
@item -1
|
||||
@item -1, auto
|
||||
enable automatic detection
|
||||
@end table
|
||||
|
||||
Default value is -1.
|
||||
Default value is @code{auto}.
|
||||
If interlacing is unknown or decoder does not export this information,
|
||||
top field first will be assumed.
|
||||
|
||||
@ -4337,13 +4337,13 @@ Specify which frames to deinterlace. Accept one of the following
|
||||
values:
|
||||
|
||||
@table @option
|
||||
@item 0
|
||||
@item 0, all
|
||||
deinterlace all frames
|
||||
@item 1
|
||||
@item 1, interlaced
|
||||
only deinterlace frames marked as interlaced
|
||||
@end table
|
||||
|
||||
Default value is 0.
|
||||
Default value is @code{all}.
|
||||
@end table
|
||||
|
||||
@c man end VIDEO FILTERS
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
#define LIBAVFILTER_VERSION_MAJOR 3
|
||||
#define LIBAVFILTER_VERSION_MINOR 30
|
||||
#define LIBAVFILTER_VERSION_MICRO 103
|
||||
#define LIBAVFILTER_VERSION_MICRO 104
|
||||
|
||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||
LIBAVFILTER_VERSION_MINOR, \
|
||||
|
@ -300,10 +300,24 @@ static int request_frame(AVFilterLink *link)
|
||||
#define OFFSET(x) offsetof(YADIFContext, x)
|
||||
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
|
||||
|
||||
#define CONST(name, help, val, unit) { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, INT_MIN, INT_MAX, FLAGS, unit }
|
||||
|
||||
static const AVOption yadif_options[] = {
|
||||
{ "mode", "specify the interlacing mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=0}, 0, 3, FLAGS },
|
||||
{ "parity", "specify the assumed picture field parity", OFFSET(parity), AV_OPT_TYPE_INT, {.i64=-1}, -1, 1, FLAGS },
|
||||
{ "deint", "specify which frames to deinterlace", OFFSET(deint), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, FLAGS },
|
||||
{ "mode", "specify the interlacing mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=YADIF_MODE_SEND_FRAME}, 0, 3, FLAGS, "mode"},
|
||||
CONST("send_frame", "send one frame for each frame", YADIF_MODE_SEND_FRAME, "mode"),
|
||||
CONST("send_field", "send one frame for each field", YADIF_MODE_SEND_FIELD, "mode"),
|
||||
CONST("send_frame_nospatial", "send one frame for each frame, but skip spatial interlacing check", YADIF_MODE_SEND_FRAME_NOSPATIAL, "mode"),
|
||||
CONST("send_field_nospatial", "send one frame for each field, but skip spatial interlacing check", YADIF_MODE_SEND_FIELD_NOSPATIAL, "mode"),
|
||||
|
||||
{ "parity", "specify the assumed picture field parity", OFFSET(parity), AV_OPT_TYPE_INT, {.i64=YADIF_PARITY_AUTO}, -1, 1, FLAGS, "parity" },
|
||||
CONST("tff", "assume top field first", YADIF_PARITY_TFF, "parity"),
|
||||
CONST("bff", "assume bottom field first", YADIF_PARITY_BFF, "parity"),
|
||||
CONST("auto", "auto detect parity", YADIF_PARITY_AUTO, "parity"),
|
||||
|
||||
{ "deint", "specify which frames to deinterlace", OFFSET(deint), AV_OPT_TYPE_INT, {.i64=YADIF_DEINT_ALL}, 0, 1, FLAGS, "deint" },
|
||||
CONST("all", "deinterlace all frames", YADIF_DEINT_ALL, "deint"),
|
||||
CONST("interlaced", "only deinterlace frames marked as interlaced", YADIF_DEINT_INTERLACED, "deint"),
|
||||
|
||||
{NULL},
|
||||
};
|
||||
|
||||
|
@ -22,32 +22,33 @@
|
||||
#include "libavutil/pixdesc.h"
|
||||
#include "avfilter.h"
|
||||
|
||||
enum YADIFMode {
|
||||
YADIF_MODE_SEND_FRAME = 0, ///< send 1 frame for each frame
|
||||
YADIF_MODE_SEND_FIELD = 1, ///< send 1 frame for each field
|
||||
YADIF_MODE_SEND_FRAME_NOSPATIAL = 2, ///< send 1 frame for each frame but skips spatial interlacing check
|
||||
YADIF_MODE_SEND_FIELD_NOSPATIAL = 3, ///< send 1 frame for each field but skips spatial interlacing check
|
||||
};
|
||||
|
||||
enum YADIFParity {
|
||||
YADIF_PARITY_TFF = 0, ///< top field first
|
||||
YADIF_PARITY_BFF = 1, ///< bottom field first
|
||||
YADIF_PARITY_AUTO = -1, ///< auto detection
|
||||
};
|
||||
|
||||
enum YADIFDeint {
|
||||
YADIF_DEINT_ALL = 0, ///< deinterlace all frames
|
||||
YADIF_DEINT_INTERLACED = 1, ///< only deinterlace frames marked as interlaced
|
||||
};
|
||||
|
||||
typedef struct YADIFContext {
|
||||
const AVClass *class;
|
||||
|
||||
/**
|
||||
* 0: send 1 frame for each frame
|
||||
* 1: send 1 frame for each field
|
||||
* 2: like 0 but skips spatial interlacing check
|
||||
* 3: like 1 but skips spatial interlacing check
|
||||
*/
|
||||
int mode;
|
||||
|
||||
/**
|
||||
* 0: top field first
|
||||
* 1: bottom field first
|
||||
* -1: auto-detection
|
||||
*/
|
||||
int parity;
|
||||
enum YADIFMode mode;
|
||||
enum YADIFParity parity;
|
||||
enum YADIFDeint deint;
|
||||
|
||||
int frame_pending;
|
||||
|
||||
/**
|
||||
* 0: deinterlace all frames
|
||||
* 1: only deinterlace frames marked as interlaced
|
||||
*/
|
||||
int deint;
|
||||
|
||||
AVFilterBufferRef *cur;
|
||||
AVFilterBufferRef *next;
|
||||
AVFilterBufferRef *prev;
|
||||
|
Loading…
Reference in New Issue
Block a user