Go to the source code of this file.
|
#define | OFFSET(x) offsetof(XFadeContext, x) |
|
#define | FLAGS (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) |
|
#define | CUSTOM_TRANSITION(name, type, div) |
|
#define | FADE_TRANSITION(name, type, div) |
|
#define | WIPELEFT_TRANSITION(name, type, div) |
|
#define | WIPERIGHT_TRANSITION(name, type, div) |
|
#define | WIPEUP_TRANSITION(name, type, div) |
|
#define | WIPEDOWN_TRANSITION(name, type, div) |
|
#define | SLIDELEFT_TRANSITION(name, type, div) |
|
#define | SLIDERIGHT_TRANSITION(name, type, div) |
|
#define | SLIDEUP_TRANSITION(name, type, div) |
|
#define | SLIDEDOWN_TRANSITION(name, type, div) |
|
#define | CIRCLECROP_TRANSITION(name, type, div) |
|
#define | RECTCROP_TRANSITION(name, type, div) |
|
#define | DISTANCE_TRANSITION(name, type, div) |
|
#define | FADEBLACK_TRANSITION(name, type, div) |
|
#define | FADEWHITE_TRANSITION(name, type, div) |
|
#define | RADIAL_TRANSITION(name, type, div) |
|
#define | SMOOTHLEFT_TRANSITION(name, type, div) |
|
#define | SMOOTHRIGHT_TRANSITION(name, type, div) |
|
#define | SMOOTHUP_TRANSITION(name, type, div) |
|
#define | SMOOTHDOWN_TRANSITION(name, type, div) |
|
#define | CIRCLEOPEN_TRANSITION(name, type, div) |
|
#define | CIRCLECLOSE_TRANSITION(name, type, div) |
|
#define | VERTOPEN_TRANSITION(name, type, div) |
|
#define | VERTCLOSE_TRANSITION(name, type, div) |
|
#define | HORZOPEN_TRANSITION(name, type, div) |
|
#define | HORZCLOSE_TRANSITION(name, type, div) |
|
#define | DISSOLVE_TRANSITION(name, type, div) |
|
#define | PIXELIZE_TRANSITION(name, type, div) |
|
#define | DIAGTL_TRANSITION(name, type, div) |
|
#define | DIAGTR_TRANSITION(name, type, div) |
|
#define | DIAGBL_TRANSITION(name, type, div) |
|
#define | DIAGBR_TRANSITION(name, type, div) |
|
#define | HLSLICE_TRANSITION(name, type, div) |
|
#define | HRSLICE_TRANSITION(name, type, div) |
|
#define | VUSLICE_TRANSITION(name, type, div) |
|
#define | VDSLICE_TRANSITION(name, type, div) |
|
#define | HBLUR_TRANSITION(name, type, div) |
|
#define | FADEGRAYS_TRANSITION(name, type, div) |
|
#define | WIPETL_TRANSITION(name, type, div) |
|
#define | WIPETR_TRANSITION(name, type, div) |
|
#define | WIPEBL_TRANSITION(name, type, div) |
|
#define | WIPEBR_TRANSITION(name, type, div) |
|
#define | SQUEEZEH_TRANSITION(name, type, div) |
|
#define | SQUEEZEV_TRANSITION(name, type, div) |
|
#define | ZOOMIN_TRANSITION(name, type, div) |
|
#define | FADEFAST_TRANSITION(name, type, div) |
|
#define | FADESLOW_TRANSITION(name, type, div) |
|
#define | HWIND_TRANSITION(name, z, type, div, expr) |
|
#define | VWIND_TRANSITION(name, z, type, div, expr) |
|
#define | COVERH_TRANSITION(dir, name, type, div, expr) |
|
#define | COVERV_TRANSITION(dir, name, type, div, expr) |
|
#define | REVEALH_TRANSITION(dir, name, type, div, expr) |
|
#define | REVEALV_TRANSITION(dir, name, type, div, expr) |
|
|
enum | XFadeTransitions {
CUSTOM = -1,
FADE,
WIPELEFT,
WIPERIGHT,
WIPEUP,
WIPEDOWN,
SLIDELEFT,
SLIDERIGHT,
SLIDEUP,
SLIDEDOWN,
CIRCLECROP,
RECTCROP,
DISTANCE,
FADEBLACK,
FADEWHITE,
RADIAL,
SMOOTHLEFT,
SMOOTHRIGHT,
SMOOTHUP,
SMOOTHDOWN,
CIRCLEOPEN,
CIRCLECLOSE,
VERTOPEN,
VERTCLOSE,
HORZOPEN,
HORZCLOSE,
DISSOLVE,
PIXELIZE,
DIAGTL,
DIAGTR,
DIAGBL,
DIAGBR,
HLSLICE,
HRSLICE,
VUSLICE,
VDSLICE,
HBLUR,
FADEGRAYS,
WIPETL,
WIPETR,
WIPEBL,
WIPEBR,
SQUEEZEH,
SQUEEZEV,
ZOOMIN,
FADEFAST,
FADESLOW,
HLWIND,
HRWIND,
VUWIND,
VDWIND,
COVERLEFT,
COVERRIGHT,
COVERUP,
COVERDOWN,
REVEALLEFT,
REVEALRIGHT,
REVEALUP,
REVEALDOWN,
NB_TRANSITIONS,
CUSTOM,
FADE,
WIPELEFT,
WIPERIGHT,
WIPEUP,
WIPEDOWN,
SLIDELEFT,
SLIDERIGHT,
SLIDEUP,
SLIDEDOWN,
NB_TRANSITIONS,
FADE,
WIPELEFT,
WIPERIGHT,
WIPEUP,
WIPEDOWN,
SLIDEDOWN,
SLIDEUP,
SLIDELEFT,
SLIDERIGHT,
CIRCLEOPEN,
CIRCLECLOSE,
DISSOLVE,
PIXELIZE,
WIPETL,
WIPETR,
WIPEBL,
WIPEBR,
NB_TRANSITIONS
} |
|
enum | {
VAR_X,
VAR_Y,
VAR_W,
VAR_H,
VAR_A,
VAR_B,
VAR_PLANE,
VAR_PROGRESS,
VAR_VARS_NB
} |
|
|
static av_cold void | uninit (AVFilterContext *ctx) |
|
| AVFILTER_DEFINE_CLASS (xfade) |
|
static float | mix (float a, float b, float mix) |
|
static float | fract (float a) |
|
static float | smoothstep (float edge0, float edge1, float x) |
|
static float | frand (int x, int y) |
|
static void | zoom (float *u, float *v, float amount) |
|
static double | getpix (void *priv, double x, double y, int plane, int nb) |
|
static double | a0 (void *priv, double x, double y) |
|
static double | a1 (void *priv, double x, double y) |
|
static double | a2 (void *priv, double x, double y) |
|
static double | a3 (void *priv, double x, double y) |
|
static double | b0 (void *priv, double x, double y) |
|
static double | b1 (void *priv, double x, double y) |
|
static double | b2 (void *priv, double x, double y) |
|
static double | b3 (void *priv, double x, double y) |
|
static int | config_output (AVFilterLink *outlink) |
|
static int | xfade_slice (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) |
|
static int | xfade_frame (AVFilterContext *ctx, AVFrame *a, AVFrame *b) |
|
static int | forward_frame (XFadeContext *s, AVFilterLink *inlink, AVFilterLink *outlink) |
|
static int | xfade_activate (AVFilterContext *avctx) |
|
static AVFrame * | get_video_buffer (AVFilterLink *inlink, int w, int h) |
|
◆ OFFSET
◆ FLAGS
◆ CUSTOM_TRANSITION
#define CUSTOM_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
◆ FADE_TRANSITION
#define FADE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] =
mix(xf0[x], xf1[x], progress); \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 300 of file vf_xfade.c.
◆ WIPELEFT_TRANSITION
#define WIPELEFT_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z =
width * progress;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] = x > z ? xf1[x] : xf0[x]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 330 of file vf_xfade.c.
◆ WIPERIGHT_TRANSITION
#define WIPERIGHT_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z =
width * (1.f - progress);
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] = x > z ? xf0[x] : xf1[x]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 361 of file vf_xfade.c.
◆ WIPEUP_TRANSITION
#define WIPEUP_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z =
out->height * progress;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] = slice_start + y > z ? xf1[x] : xf0[x]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 392 of file vf_xfade.c.
◆ WIPEDOWN_TRANSITION
#define WIPEDOWN_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z =
out->height * (1.f - progress);
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] = slice_start + y > z ? xf0[x] : xf1[x]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 423 of file vf_xfade.c.
◆ SLIDELEFT_TRANSITION
#define SLIDELEFT_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z = -progress *
width;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
const int zx = z + x; \
dst[x] = (zx >= 0) && (zx <
width) ? xf1[zz] : xf0[zz]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 454 of file vf_xfade.c.
◆ SLIDERIGHT_TRANSITION
#define SLIDERIGHT_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z = progress *
width;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
const int zx = z + x; \
dst[x] = (zx >= 0) && (zx <
width) ? xf1[zz] : xf0[zz]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 487 of file vf_xfade.c.
◆ SLIDEUP_TRANSITION
#define SLIDEUP_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z = -progress *
height;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
const int zy = z + y; \
const
type *xf0 = (
const type *)(
a->data[p] + zz *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + zz *
b->linesize[p]);
\
dst[x] = (zy >= 0) && (zy <
height) ? xf1[x] : xf0[x]; \
} \
\
dst +=
out->linesize[p] / div; \
} \
} \
}
Definition at line 520 of file vf_xfade.c.
◆ SLIDEDOWN_TRANSITION
#define SLIDEDOWN_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
for (
int p = 0; p <
s->nb_planes; p++) { \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
const int zy = z + y; \
const
type *xf0 = (
const type *)(
a->data[p] + zz *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + zz *
b->linesize[p]);
\
dst[x] = (zy >= 0) && (zy <
height) ? xf1[x] : xf0[x]; \
} \
\
dst +=
out->linesize[p] / div; \
} \
} \
}
Definition at line 552 of file vf_xfade.c.
◆ CIRCLECROP_TRANSITION
#define CIRCLECROP_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
int bg =
s->black[p]; \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]);
\
int
val = progress < 0.5f ? xf1[x] : xf0[x]; \
dst[x] = (z < dist) ? bg :
val; \
} \
\
dst +=
out->linesize[p] / div; \
} \
} \
}
Definition at line 584 of file vf_xfade.c.
◆ RECTCROP_TRANSITION
#define RECTCROP_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
int bg =
s->black[p]; \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]);
\
int
val = progress < 0.5f ? xf1[x] : xf0[x]; \
dst[x] = !dist ? bg :
val; \
} \
\
dst +=
out->linesize[p] / div; \
} \
} \
}
Definition at line 617 of file vf_xfade.c.
◆ DISTANCE_TRANSITION
#define DISTANCE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float max =
s->max_value;
\
for (
int x = 0; x <
width; x++) { \
float dist = 0.f; \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
\
dist += (xf0[x] /
max - xf1[x] /
max) * \
(xf0[x] /
max - xf1[x] /
max); \
} \
\
dist =
sqrtf(dist) <= progress; \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
dst[x] =
mix(
mix(xf0[x], xf1[x], dist), xf1[x], progress); \
} \
} \
} \
}
Definition at line 652 of file vf_xfade.c.
◆ FADEBLACK_TRANSITION
#define FADEBLACK_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float phase = 0.2f;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]); \
const
int bg =
s->black[p];
\
for (
int x = 0; x <
width; x++) { \
progress); \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 687 of file vf_xfade.c.
◆ FADEWHITE_TRANSITION
#define FADEWHITE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float phase = 0.2f;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]); \
const
int bg =
s->white[p];
\
for (
int x = 0; x <
width; x++) { \
progress); \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 721 of file vf_xfade.c.
◆ RADIAL_TRANSITION
#define RADIAL_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
for (
int x = 0; x <
width; x++) { \
(progress - 0.5f) * (
M_PI * 2.5
f); \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 755 of file vf_xfade.c.
◆ SMOOTHLEFT_TRANSITION
#define SMOOTHLEFT_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
for (
int x = 0; x <
width; x++) { \
const
float smooth = 1.f + x /
w - progress * 2.f;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 783 of file vf_xfade.c.
◆ SMOOTHRIGHT_TRANSITION
#define SMOOTHRIGHT_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
for (
int x = 0; x <
width; x++) { \
const
float smooth = 1.f + (
w - 1 - x) /
w - progress * 2.
f;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 811 of file vf_xfade.c.
◆ SMOOTHUP_TRANSITION
#define SMOOTHUP_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float h =
out->height;
\
const
float smooth = 1.f + y /
h - progress * 2.f; \
for (
int x = 0; x <
width; x++) { \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 839 of file vf_xfade.c.
◆ SMOOTHDOWN_TRANSITION
#define SMOOTHDOWN_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float h =
out->height;
\
const
float smooth = 1.f + (
h - 1 - y) /
h - progress * 2.
f; \
for (
int x = 0; x <
width; x++) { \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 866 of file vf_xfade.c.
◆ CIRCLEOPEN_TRANSITION
#define CIRCLEOPEN_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float p = (progress - 0.5f) * 3.
f;
\
for (
int x = 0; x <
width; x++) { \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 893 of file vf_xfade.c.
◆ CIRCLECLOSE_TRANSITION
#define CIRCLECLOSE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float p = (1.f - progress - 0.5f) * 3.
f;
\
for (
int x = 0; x <
width; x++) { \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 922 of file vf_xfade.c.
◆ VERTOPEN_TRANSITION
#define VERTOPEN_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float w2 =
out->width / 2;
\
for (
int x = 0; x <
width; x++) { \
const
float smooth = 2.f -
fabsf((x - w2) / w2) - progress * 2.f; \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 951 of file vf_xfade.c.
◆ VERTCLOSE_TRANSITION
#define VERTCLOSE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
float w2 =
out->width / 2;
\
for (
int x = 0; x <
width; x++) { \
const
float smooth = 1.f +
fabsf((x - w2) / w2) - progress * 2.f; \
for (int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 978 of file vf_xfade.c.
◆ HORZOPEN_TRANSITION
#define HORZOPEN_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
float h2 =
out->height / 2;
\
const
float smooth = 2.f -
fabsf((y - h2) / h2) - progress * 2.f; \
for (
int x = 0; x <
width; x++) { \
for (int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 1006 of file vf_xfade.c.
◆ HORZCLOSE_TRANSITION
#define HORZCLOSE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
float h2 =
out->height / 2;
\
const
float smooth = 1.f +
fabsf((y - h2) / h2) - progress * 2.f; \
for (
int x = 0; x <
width; x++) { \
for (int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 1034 of file vf_xfade.c.
◆ DISSOLVE_TRANSITION
#define DISSOLVE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
for (
int x = 0; x <
width; x++) { \
const
float smooth =
frand(x, y) * 2.f + progress * 2.f - 1.5f; \
for (int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
dst[x] =
smooth >= 0.5f ? xf0[x] : xf1[x]; \
} \
} \
} \
}
Definition at line 1069 of file vf_xfade.c.
◆ PIXELIZE_TRANSITION
#define PIXELIZE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
int w =
out->width; \
const
int h =
out->height; \
const
float d =
fminf(progress, 1.
f - progress); \
const
float dist =
ceilf(
d * 50.
f) / 50.f; \
const
float sqx = 2.f * dist *
FFMIN(
w,
h) / 20.f; \
const
float sqy = 2.f * dist *
FFMIN(
w,
h) / 20.f;
\
for (
int x = 0; x <
w; x++) { \
int sx = dist > 0.f ?
FFMIN((
floorf(x / sqx) + .5
f) * sqx,
w - 1) : x; \
int sy = dist > 0.f ?
FFMIN((
floorf(y / sqy) + .5
f) * sqy,
h - 1) : y; \
for (int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + sy *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + sy *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
dst[x] =
mix(xf0[sx], xf1[sx], progress); \
} \
} \
} \
}
Definition at line 1096 of file vf_xfade.c.
◆ DIAGTL_TRANSITION
#define DIAGTL_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
float h =
out->height;
\
for (
int x = 0; x <
width; x++) { \
const
float smooth = 1.f + x /
w * y /
h - progress * 2.f;
\
for (
int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 1129 of file vf_xfade.c.
◆ DIAGTR_TRANSITION
#define DIAGTR_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
float h =
out->height;
\
for (
int x = 0; x <
width; x++) { \
const
float smooth = 1.f + (
w - 1 - x) /
w * y /
h - progress * 2.
f;
\
for (
int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 1159 of file vf_xfade.c.
◆ DIAGBL_TRANSITION
#define DIAGBL_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
float h =
out->height;
\
for (
int x = 0; x <
width; x++) { \
const
float smooth = 1.f + x /
w * (
h - 1 - y) /
h - progress * 2.
f;
\
for (
int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 1189 of file vf_xfade.c.
◆ DIAGBR_TRANSITION
#define DIAGBR_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
float h =
out->height;
\
for (
int x = 0; x <
width; x++) { \
const
float smooth = 1.f + (
w - 1 - x) /
w * (
h - 1 - y) /
h - \
for (
int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
} \
} \
} \
}
Definition at line 1219 of file vf_xfade.c.
◆ HLSLICE_TRANSITION
#define HLSLICE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
for (
int x = 0; x <
width; x++) { \
for (
int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
dst[x] =
mix(xf1[x], xf0[x],
ss); \
} \
} \
} \
}
Definition at line 1250 of file vf_xfade.c.
◆ HRSLICE_TRANSITION
#define HRSLICE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
for (
int x = 0; x <
width; x++) { \
const
float xx = (
w - 1 - x) /
w; \
for (
int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
dst[x] =
mix(xf1[x], xf0[x],
ss); \
} \
} \
} \
}
Definition at line 1280 of file vf_xfade.c.
◆ VUSLICE_TRANSITION
#define VUSLICE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
float h =
out->height;
\
for (int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
dst[x] =
mix(xf1[x], xf0[x],
ss); \
} \
} \
} \
}
Definition at line 1311 of file vf_xfade.c.
◆ VDSLICE_TRANSITION
#define VDSLICE_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int nb_planes =
s->nb_planes; \
const
float h =
out->height;
\
const
float yy = (
h - 1 - y) /
h; \
for (int p = 0; p < nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
dst[x] =
mix(xf1[x], xf0[x],
ss); \
} \
} \
} \
}
Definition at line 1341 of file vf_xfade.c.
◆ HBLUR_TRANSITION
#define HBLUR_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
◆ FADEGRAYS_TRANSITION
#define FADEGRAYS_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
◆ WIPETL_TRANSITION
#define WIPETL_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int zw =
out->width * progress; \
const
int zh =
out->height * progress;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] = slice_start + y <= zh && \
x <= zw ? xf0[x] : xf1[x]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 1487 of file vf_xfade.c.
◆ WIPETR_TRANSITION
#define WIPETR_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int zw =
width * (1.f - progress); \
const
int zh =
out->height * progress;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] = slice_start + y <= zh && \
x > zw ? xf0[x] : xf1[x]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 1520 of file vf_xfade.c.
◆ WIPEBL_TRANSITION
#define WIPEBL_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int zw =
width * progress; \
const
int zh =
out->height * (1.f - progress);
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] = slice_start + y > zh && \
x <= zw ? xf0[x] : xf1[x]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 1553 of file vf_xfade.c.
◆ WIPEBR_TRANSITION
#define WIPEBR_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int zh =
out->height * (1.f - progress); \
const
int zw =
width * (1.f - progress);
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] = slice_start + y > zh && \
x > zw ? xf0[x] : xf1[x]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 1586 of file vf_xfade.c.
◆ SQUEEZEH_TRANSITION
#define SQUEEZEH_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
◆ SQUEEZEV_TRANSITION
#define SQUEEZEV_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
◆ ZOOMIN_TRANSITION
#define ZOOMIN_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
◆ FADEFAST_TRANSITION
#define FADEFAST_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float imax = 1.f /
s->max_value;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] =
mix(xf0[x], xf1[x],
powf(progress, 1.
f + \
logf(1.
f+
FFABS(xf0[x]-xf1[x])*imax)\
)); \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 1741 of file vf_xfade.c.
◆ FADESLOW_TRANSITION
#define FADESLOW_TRANSITION |
( |
|
name, |
|
|
|
type, |
|
|
|
div |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float imax = 1.f /
s->max_value;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
dst[x] =
mix(xf0[x], xf1[x],
powf(progress, 1.
f + \
logf(2.
f-
FFABS(xf0[x]-xf1[x])*imax)\
)); \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 1774 of file vf_xfade.c.
◆ HWIND_TRANSITION
#define HWIND_TRANSITION |
( |
|
name, |
|
|
|
z, |
|
|
|
type, |
|
|
|
div, |
|
|
|
expr |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float r =
frand(0, y); \
for (
int x = 0; x <
width; x++) { \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
+ 0.2
f *
r - (1.
f - progress)\
} \
} \
} \
}
Definition at line 1807 of file vf_xfade.c.
◆ VWIND_TRANSITION
#define VWIND_TRANSITION |
( |
|
name, |
|
|
|
z, |
|
|
|
type, |
|
|
|
div, |
|
|
|
expr |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
float fy = expr y / (
float)
out->height; \
const
float r =
frand(x, 0); \
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + y *
out->linesize[p]); \
\
+ 0.2
f *
r - (1.
f - progress)\
} \
} \
} \
}
Definition at line 1838 of file vf_xfade.c.
◆ COVERH_TRANSITION
#define COVERH_TRANSITION |
( |
|
dir, |
|
|
|
name, |
|
|
|
type, |
|
|
|
div, |
|
|
|
expr |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z = (expr progress) *
width;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
const int zx = z + x; \
dst[x] = (zx >= 0) && (zx <
width) ? xf1[zz] : xf0[x]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 1869 of file vf_xfade.c.
◆ COVERV_TRANSITION
#define COVERV_TRANSITION |
( |
|
dir, |
|
|
|
name, |
|
|
|
type, |
|
|
|
div, |
|
|
|
expr |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z = (expr progress) *
height;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
const int zy = z + y; \
const
type *xf0 = (
const type *)(
a->data[p] + y *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + zz *
b->linesize[p]);
\
dst[x] = (zy >= 0) && (zy <
height) ? xf1[x] : xf0[x]; \
\
dst +=
out->linesize[p] / div; \
} \
} \
}
Definition at line 1904 of file vf_xfade.c.
◆ REVEALH_TRANSITION
#define REVEALH_TRANSITION |
( |
|
dir, |
|
|
|
name, |
|
|
|
type, |
|
|
|
div, |
|
|
|
expr |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z = (expr progress) *
width;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
const
type *xf0 = (
const type *)(
a->data[p] + slice_start *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + slice_start *
b->linesize[p]); \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
for (
int x = 0; x <
width; x++) { \
const int zx = z + x; \
dst[x] = (zx >= 0) && (zx <
width) ? xf1[x] : xf0[zz]; \
} \
\
dst +=
out->linesize[p] / div; \
xf0 +=
a->linesize[p] / div; \
xf1 +=
b->linesize[p] / div; \
} \
} \
}
Definition at line 1937 of file vf_xfade.c.
◆ REVEALV_TRANSITION
#define REVEALV_TRANSITION |
( |
|
dir, |
|
|
|
name, |
|
|
|
type, |
|
|
|
div, |
|
|
|
expr |
|
) |
| |
Value:
float progress, \
{ \
XFadeContext *
s =
ctx->priv; \
const
int z = (expr progress) *
height;
\
for (
int p = 0; p <
s->nb_planes; p++) { \
type *dst = (
type *)(
out->data[p] + slice_start *
out->linesize[p]);
\
const int zy = z + y; \
const
type *xf0 = (
const type *)(
a->data[p] + zz *
a->linesize[p]); \
const
type *xf1 = (
const type *)(
b->data[p] + y *
b->linesize[p]);
\
dst[x] = (zy >= 0) && (zy <
height) ? xf1[x] : xf0[x]; \
\
dst +=
out->linesize[p] / div; \
} \
} \
}
Definition at line 1972 of file vf_xfade.c.
◆ XFadeTransitions
Enumerator |
---|
CUSTOM | |
FADE | |
WIPELEFT | |
WIPERIGHT | |
WIPEUP | |
WIPEDOWN | |
SLIDELEFT | |
SLIDERIGHT | |
SLIDEUP | |
SLIDEDOWN | |
CIRCLECROP | |
RECTCROP | |
DISTANCE | |
FADEBLACK | |
FADEWHITE | |
RADIAL | |
SMOOTHLEFT | |
SMOOTHRIGHT | |
SMOOTHUP | |
SMOOTHDOWN | |
CIRCLEOPEN | |
CIRCLECLOSE | |
VERTOPEN | |
VERTCLOSE | |
HORZOPEN | |
HORZCLOSE | |
DISSOLVE | |
PIXELIZE | |
DIAGTL | |
DIAGTR | |
DIAGBL | |
DIAGBR | |
HLSLICE | |
HRSLICE | |
VUSLICE | |
VDSLICE | |
HBLUR | |
FADEGRAYS | |
WIPETL | |
WIPETR | |
WIPEBL | |
WIPEBR | |
SQUEEZEH | |
SQUEEZEV | |
ZOOMIN | |
FADEFAST | |
FADESLOW | |
HLWIND | |
HRWIND | |
VUWIND | |
VDWIND | |
COVERLEFT | |
COVERRIGHT | |
COVERUP | |
COVERDOWN | |
REVEALLEFT | |
REVEALRIGHT | |
REVEALUP | |
REVEALDOWN | |
NB_TRANSITIONS | |
CUSTOM | |
FADE | |
WIPELEFT | |
WIPERIGHT | |
WIPEUP | |
WIPEDOWN | |
SLIDELEFT | |
SLIDERIGHT | |
SLIDEUP | |
SLIDEDOWN | |
NB_TRANSITIONS | |
FADE | |
WIPELEFT | |
WIPERIGHT | |
WIPEUP | |
WIPEDOWN | |
SLIDEDOWN | |
SLIDEUP | |
SLIDELEFT | |
SLIDERIGHT | |
CIRCLEOPEN | |
CIRCLECLOSE | |
DISSOLVE | |
PIXELIZE | |
WIPETL | |
WIPETR | |
WIPEBL | |
WIPEBR | |
NB_TRANSITIONS | |
Definition at line 30 of file vf_xfade.c.
◆ anonymous enum
Enumerator |
---|
VAR_X | |
VAR_Y | |
VAR_W | |
VAR_H | |
VAR_A | |
VAR_B | |
VAR_PLANE | |
VAR_PROGRESS | |
VAR_VARS_NB | |
Definition at line 134 of file vf_xfade.c.
◆ uninit()
◆ AVFILTER_DEFINE_CLASS()
AVFILTER_DEFINE_CLASS |
( |
xfade |
| ) |
|
◆ mix()
◆ fract()
◆ smoothstep()
◆ frand()
◆ zoom()
◆ getpix()
◆ a0()
◆ a1()
◆ a2()
◆ a3()
◆ b0()
Definition at line 2034 of file vf_xfade.c.
Referenced by av_rescale_rnd(), biquad_process(), calc_lowcomp(), calc_lowcomp1(), cavs_idct8_add_c(), checkasm_check_synth_filter(), colorcontrast_slice16(), colorcontrast_slice16p(), colorcontrast_slice8(), colorcontrast_slice8p(), config_output(), extract_color(), ff_add_pixels_clamped_lasx(), ff_h264_idct8_add(), ff_ivi_recompose_haar(), ff_put_no_rnd_pixels_l2_msa(), ff_put_pixels_clamped_lasx(), ff_put_signed_pixels_clamped_lasx(), ff_simple_idct_add_lasx(), ff_simple_idct_lasx(), ff_simple_idct_put_lasx(), filter_channels(), filter_frame(), filter_horizontally(), filter_samples(), generate_noise(), horizontal_compose_daub97i_TMPL(), idct_col(), idct_row(), idctRowCondDC(), idctSparseCol(), idctSparseColAdd(), idctSparseColPut(), kaiser_beta(), set_ap(), set_highshelf_rbj(), set_hp(), set_lp(), set_params(), set_tf1s(), snow_vertical_compose97i(), spatial_compose53i_dy(), spatial_compose53i_dy_buffered(), spatial_compose97i_dy(), spatial_compose97i_dy_buffered(), spatial_compose_haari_dy_TMPL(), spatial_decompose53i(), spatial_decompose97i(), vb_stereo(), vertical_compose53iH0(), vertical_compose53iL0(), vertical_compose53iL0_TMPL(), vertical_compose97iH0(), vertical_compose97iH1(), vertical_compose97iL0(), vertical_compose97iL1(), vertical_compose_daub97iH0_TMPL(), vertical_compose_daub97iH1_TMPL(), vertical_compose_daub97iL0_TMPL(), vertical_compose_daub97iL1_TMPL(), vertical_compose_dd137iL0_TMPL(), vertical_compose_dd97iH0_TMPL(), vertical_compose_dirac53iH0_TMPL(), vertical_compose_fidelityiH0_TMPL(), vertical_compose_fidelityiL0_TMPL(), vertical_compose_haar_TMPL(), vertical_decompose53iH0(), vertical_decompose53iL0(), vertical_decompose97iH0(), vertical_decompose97iH1(), vertical_decompose97iL0(), vertical_decompose97iL1(), yuv2rgb_full_2_template_lasx(), and yuv2rgb_full_2_template_lsx().
◆ b1()
Definition at line 2035 of file vf_xfade.c.
Referenced by av_adler32_update(), av_rescale_rnd(), biquad_process(), calc_lowcomp(), calc_lowcomp1(), cavs_idct8_add_c(), checkasm_check_synth_filter(), colorcontrast_slice16(), colorcontrast_slice16p(), colorcontrast_slice8(), colorcontrast_slice8p(), config_input(), config_output(), dct4x4(), decode_dlta(), decode_hq_slice(), decode_move(), decode_predictor_coeffs(), decode_subband(), extract_color(), ff_add_pixels_clamped_lasx(), ff_eval_coefs(), ff_h264_idct8_add(), ff_ivi_recompose_haar(), ff_put_no_rnd_pixels_l2_msa(), ff_put_pixels_clamped_lasx(), ff_put_signed_pixels_clamped_lasx(), ff_simple_idct_add_lasx(), ff_simple_idct_lasx(), ff_simple_idct_put_lasx(), ff_vp8_luma_dc_wht_msa(), filter_channels(), filter_frame(), filter_horizontally(), filter_samples(), horizontal_compose_daub97i_TMPL(), icc_context(), idct_col(), idct_row(), idctRowCondDC(), idctSparseCol(), idctSparseColAdd(), idctSparseColPut(), kaiser_beta(), parse_chunk_headers(), residue_encode(), rgb24_to_yuv420p(), run_test(), search_for_ms(), set_ap(), set_hp(), set_lp(), set_params(), set_tf1s(), snow_vertical_compose97i(), spatial_compose53i_dy(), spatial_compose53i_dy_buffered(), spatial_compose97i_dy(), spatial_compose97i_dy_buffered(), spatial_compose_haari_dy_TMPL(), spatial_decompose53i(), spatial_decompose97i(), vb_stereo(), vertical_compose53iH0(), vertical_compose53iL0(), vertical_compose53iL0_TMPL(), vertical_compose97iH0(), vertical_compose97iH1(), vertical_compose97iL0(), vertical_compose97iL1(), vertical_compose_daub97iH0_TMPL(), vertical_compose_daub97iH1_TMPL(), vertical_compose_daub97iL0_TMPL(), vertical_compose_daub97iL1_TMPL(), vertical_compose_dd137iL0_TMPL(), vertical_compose_dd97iH0_TMPL(), vertical_compose_dirac53iH0_TMPL(), vertical_compose_fidelityiH0_TMPL(), vertical_compose_fidelityiL0_TMPL(), vertical_compose_haar_TMPL(), vertical_decompose53iH0(), vertical_decompose53iL0(), vertical_decompose97iH0(), vertical_decompose97iH1(), vertical_decompose97iL0(), vertical_decompose97iL1(), wht4x4(), yuv2rgb_full_2_template_lasx(), and yuv2rgb_full_2_template_lsx().
◆ b2()
Definition at line 2036 of file vf_xfade.c.
Referenced by av_adler32_update(), biquad_process(), cavs_idct8_add_c(), colorcontrast_slice16(), colorcontrast_slice16p(), colorcontrast_slice8(), colorcontrast_slice8p(), compare_by_prob(), config_input(), config_output(), decode_dlta(), decode_move(), decode_predictor_coeffs(), decode_subband(), ff_add_pixels_clamped_lasx(), ff_eval_coefs(), ff_h264_idct8_add(), ff_ivi_recompose_haar(), ff_put_no_rnd_pixels_l2_msa(), ff_put_pixels_clamped_lasx(), ff_put_signed_pixels_clamped_lasx(), ff_simple_idct_add_lasx(), ff_simple_idct_lasx(), ff_simple_idct_put_lasx(), filter_channels(), filter_frame(), filter_samples(), horizontal_compose_daub97i_TMPL(), icc_context(), idct_col(), idct_row(), idctRowCondDC(), idctSparseCol(), idctSparseColAdd(), idctSparseColPut(), parse_chunk_headers(), qoi_decode_frame(), qpel_motion_search(), residue_encode(), run_test(), search_for_ms(), set_ap(), set_hp(), set_lp(), set_params(), snow_vertical_compose97i(), spatial_compose53i_dy(), spatial_compose53i_dy_buffered(), spatial_compose97i_dy(), spatial_compose97i_dy_buffered(), spatial_decompose53i(), spatial_decompose97i(), vertical_compose53iH0(), vertical_compose53iL0(), vertical_compose53iL0_TMPL(), vertical_compose97iH0(), vertical_compose97iH1(), vertical_compose97iL0(), vertical_compose97iL1(), vertical_compose_daub97iH0_TMPL(), vertical_compose_daub97iH1_TMPL(), vertical_compose_daub97iL0_TMPL(), vertical_compose_daub97iL1_TMPL(), vertical_compose_dd137iL0_TMPL(), vertical_compose_dd97iH0_TMPL(), vertical_compose_dirac53iH0_TMPL(), vertical_compose_fidelityiH0_TMPL(), vertical_compose_fidelityiL0_TMPL(), vertical_decompose53iH0(), vertical_decompose53iL0(), vertical_decompose97iH0(), vertical_decompose97iH1(), vertical_decompose97iL0(), and vertical_decompose97iL1().
◆ b3()
Definition at line 2037 of file vf_xfade.c.
Referenced by cavs_idct8_add_c(), config_output(), ff_add_pixels_clamped_lasx(), ff_h264_idct8_add(), ff_ivi_recompose_haar(), ff_put_no_rnd_pixels_l2_msa(), ff_put_pixels_clamped_lasx(), ff_put_signed_pixels_clamped_lasx(), ff_simple_idct_add_lasx(), ff_simple_idct_lasx(), ff_simple_idct_put_lasx(), idct_col(), idct_row(), idctRowCondDC(), idctSparseCol(), idctSparseColAdd(), idctSparseColPut(), search_for_ms(), snow_vertical_compose97i(), spatial_compose53i_dy(), spatial_compose53i_dy_buffered(), spatial_compose97i_dy(), spatial_compose97i_dy_buffered(), spatial_decompose53i(), spatial_decompose97i(), vertical_compose_dd137iL0_TMPL(), vertical_compose_dd97iH0_TMPL(), vertical_compose_fidelityiH0_TMPL(), and vertical_compose_fidelityiL0_TMPL().
◆ config_output()
◆ xfade_slice()
◆ xfade_frame()
◆ forward_frame()
◆ xfade_activate()
◆ get_video_buffer()
◆ var_names
const char* const var_names[] = { "X", "Y", "W", "H", "A", "B", "PLANE", "P", NULL } |
|
static |
◆ pix_fmts
◆ xfade_options
◆ xfade_inputs
Initial value:= {
{
.name = "main",
},
{
.name = "xfade",
},
}
Definition at line 2361 of file vf_xfade.c.
◆ xfade_outputs
Initial value:= {
{
.name = "default",
},
}
Definition at line 2374 of file vf_xfade.c.
◆ ff_vf_xfade
Initial value:= {
.name = "xfade",
.priv_class = &xfade_class,
}
Definition at line 2382 of file vf_xfade.c.
static enum AVPixelFormat pix_fmts[]
#define AV_PIX_FMT_GBRAP16
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 default minimum maximum flags name is the option name
#define FILTER_PIXFMTS_ARRAY(array)
static __device__ float floorf(float a)
static int xfade_activate(AVFilterContext *avctx)
This structure describes decoded (raw) audio or video data.
static AVFrame * get_video_buffer(AVFilterLink *inlink, int w, int h)
static float mix(float a, float b, float mix)
static __device__ float ceilf(float a)
#define AV_PIX_FMT_GBRP14
@ AV_PIX_FMT_GBRAP
planar GBRA 4:4:4:4 32bpp
#define AV_PIX_FMT_GBRP10
#define AV_PIX_FMT_YUVA444P16
static double val(void *priv, double ch)
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 AV_PIX_FMT_GRAY16
#define ss(width, name, subs,...)
static __device__ float fabsf(float a)
#define AV_PIX_FMT_YUV444P10
#define AV_PIX_FMT_GBRAP10
#define AV_PIX_FMT_GBRAP12
#define AV_PIX_FMT_YUV444P16
static float smoothstep(float edge0, float edge1, float x)
static int slice_end(AVCodecContext *avctx, AVFrame *pict)
Handle slice ends.
float fminf(float, float)
#define AV_PIX_FMT_YUVA444P12
#define FILTER_INPUTS(array)
@ AV_PIX_FMT_YUVJ444P
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
#define AV_PIX_FMT_GRAY10
#define AV_PIX_FMT_GBRP16
filter_frame For filters that do not use the activate() callback
static __device__ float sqrtf(float a)
static const AVFilterPad xfade_inputs[]
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
static const AVFilterPad xfade_outputs[]
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
static av_cold void uninit(AVFilterContext *ctx)
#define AV_PIX_FMT_YUV444P12
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
@ AV_PIX_FMT_YUVA444P
planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
#define AV_PIX_FMT_YUVA444P10
static float frand(int x, int y)
static int config_output(AVFilterLink *outlink)
#define AV_PIX_FMT_GBRP12
static void fade(uint8_t *dst, ptrdiff_t dst_linesize, const uint8_t *src, ptrdiff_t src_linesize, int width, int height, int alpha, int beta)
static float fract(float a)
#define AV_PIX_FMT_YUVA444P9
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
@ AV_PIX_FMT_GBRP
planar GBR 4:4:4 24bpp
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
static float smooth(DeshakeOpenCLContext *deshake_ctx, float *gauss_kernel, int length, float max_val, AVFifo *values)
#define FILTER_OUTPUTS(array)
static float distance(float x, float y, int band)
#define AV_PIX_FMT_YUV444P14
#define AV_PIX_FMT_GRAY12