Go to the source code of this file.
|
#define | MAX_R 15 |
|
#define | S (MAX_R * 2 + 1) |
|
#define | OFFSET(x) offsetof(ESTDIFContext, x) |
|
#define | FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_RUNTIME_PARAM |
|
#define | CONST(name, help, val, unit) { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, 0, 0, FLAGS, unit } |
|
#define | MIDL(type, ss) |
|
#define | MID2(type, ss) |
|
#define | MID4(type, ss) |
|
#define | MID6(type, ss) |
|
#define | DIFF(type, ss) |
|
#define | COST(type, ss) |
|
#define | INTERPOLATE(type, atype, max, ss) |
|
◆ MAX_R
#define S (MAX_R * 2 + 1) |
◆ OFFSET
◆ FLAGS
◆ CONST
#define CONST |
( |
|
name, |
|
|
|
help, |
|
|
|
val, |
|
|
|
unit |
|
) |
| { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, 0, 0, FLAGS, unit } |
◆ MIDL
Value:static unsigned midl_##
ss(
const type *
const prev, \
const type *
const next, \
int end, int x, int k) \
{ \
return (prev[
av_clip(x + k, 0, end)] + \
next[
av_clip(x - k, 0, end)] + 1) >> 1; \
}
Definition at line 155 of file vf_estdif.c.
◆ MID2
Value:static unsigned mid2_##
ss(
const type *
const prev, \
const type *
const next, \
const type *
const prev2, \
const type *
const next2, \
const type *
const prev3, \
const type *
const next3, \
int end, int x, int k, int depth) \
{ \
return (prev[
av_clip(x + k, 0, end)] + \
next[
av_clip(x - k, 0, end)] + 1) >> 1; \
}
Definition at line 167 of file vf_estdif.c.
◆ MID4
Value:static unsigned mid4_##
ss(
const type *
const prev, \
const type *
const next, \
const type *
const prev2, \
const type *
const next2, \
const type *
const prev3, \
const type *
const next3, \
int end, int x, int k, int depth) \
{ \
9 * (prev[
av_clip(x + k, 0, end)] + \
1 * (prev2[
av_clip(x + k*3, 0, end)] + \
next2[
av_clip(x - k*3, 0, end)]) + 8) >> 4, \
depth); \
}
Definition at line 183 of file vf_estdif.c.
◆ MID6
Value:static unsigned mid6_##
ss(
const type *
const prev, \
const type *
const next, \
const type *
const prev2, \
const type *
const next2, \
const type *
const prev3, \
const type *
const next3, \
int end, int x, int k, int depth) \
{ \
20 * (prev[
av_clip(x + k, 0, end)] + \
5 * (prev2[
av_clip(x + k*3, 0, end)] + \
next2[
av_clip(x - k*3, 0, end)]) + \
1 * (prev3[
av_clip(x + k*5, 0, end)] + \
next3[
av_clip(x - k*5, 0, end)]) + 16) >> 5, \
depth); \
}
Definition at line 203 of file vf_estdif.c.
◆ DIFF
Value:static unsigned diff_##
ss(
const type *
const prev, \
const type *
const next, \
int end, int x, int k, int j) \
{ \
next[
av_clip(x - k + j, 0, end)]); \
}
Definition at line 225 of file vf_estdif.c.
◆ COST
Value:static unsigned cost_##
ss(
const type *
const prev, \
const type *
const next, \
int end, int x, int k) \
{ \
const
int m = midl_##
ss(prev, next, end, x, k); \
const int p = prev[x]; \
const int n = next[x]; \
\
}
Definition at line 237 of file vf_estdif.c.
◆ INTERPOLATE
◆ AVFILTER_DEFINE_CLASS()
AVFILTER_DEFINE_CLASS |
( |
estdif |
| ) |
|
◆ query_formats()
◆ config_output()
◆ deinterlace_slice()
◆ filter()
◆ config_input()
◆ filter_frame()
◆ request_frame()
◆ uninit()
◆ estdif_options
Initial value:= {
CONST(
"frame",
"send one frame for each frame", 0,
"mode"),
CONST(
"field",
"send one frame for each field", 1,
"mode"),
CONST(
"tff",
"assume top field first", 0,
"parity"),
CONST(
"bff",
"assume bottom field first", 1,
"parity"),
CONST(
"auto",
"auto detect parity", -1,
"parity"),
CONST(
"all",
"deinterlace all frames", 0,
"deint"),
CONST(
"interlaced",
"only deinterlace frames marked as interlaced", 1,
"deint"),
CONST(
"2p",
"two-point interpolation", 0,
"interp"),
CONST(
"4p",
"four-point interpolation", 1,
"interp"),
CONST(
"6p",
"six-point interpolation", 2,
"interp"),
}
Definition at line 82 of file vf_estdif.c.
◆ estdif_inputs
Initial value:= {
{
.name = "default",
},
}
Definition at line 560 of file vf_estdif.c.
◆ estdif_outputs
Initial value:= {
{
.name = "default",
},
}
Definition at line 570 of file vf_estdif.c.
◆ ff_vf_estdif
Initial value:= {
.name = "estdif",
.priv_class = &estdif_class,
}
Definition at line 580 of file vf_estdif.c.
static const AVFilterPad estdif_inputs[]
static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p)
Clip a signed integer to an unsigned power of two range.
static int filter_frame(AVFilterLink *inlink, AVFrame *in)
static int config_output(AVFilterLink *outlink)
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
#define ss(width, name, subs,...)
static const AVFilterPad outputs[]
static int config_input(AVFilterLink *inlink)
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
static av_cold void uninit(AVFilterContext *ctx)
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several inputs
static const AVFilterPad estdif_outputs[]
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
static int process_command(AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags)
int ff_filter_process_command(AVFilterContext *ctx, const char *cmd, const char *arg, char *res, int res_len, int flags)
Generic processing of user supplied commands that are set in the same way as the filter options.
#define CONST(name, help, val, unit)
static int request_frame(AVFilterLink *link)
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
static int query_formats(AVFilterContext *ctx)
#define AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL
Same as AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, except that the filter will have its filter_frame() c...
#define flags(name, subs,...)