aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter/vf_blend.c
diff options
context:
space:
mode:
authorStefano Sabatini <stefasab@gmail.com>2014-12-04 12:34:30 +0100
committerStefano Sabatini <stefasab@gmail.com>2014-12-26 11:24:48 +0100
commitafaa4a89463187fe98042ba6bab0269ba4b4ba47 (patch)
treef9faf5c73dd6edd7d696a3aa81aabdf2311a8b53 /libavfilter/vf_blend.c
parent7c210c442462db78e05569ee23d4dd955c1b1a0b (diff)
downloadffmpeg-afaa4a89463187fe98042ba6bab0269ba4b4ba47.tar.gz
lavfi/blend: add difference128 mode
Diffstat (limited to 'libavfilter/vf_blend.c')
-rw-r--r--libavfilter/vf_blend.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c
index 8bf19ffd50..1b3ba95b1a 100644
--- a/libavfilter/vf_blend.c
+++ b/libavfilter/vf_blend.c
@@ -41,6 +41,7 @@ enum BlendMode {
BLEND_BURN,
BLEND_DARKEN,
BLEND_DIFFERENCE,
+ BLEND_DIFFERENCE128,
BLEND_DIVIDE,
BLEND_DODGE,
BLEND_EXCLUSION,
@@ -112,6 +113,7 @@ static const AVOption blend_options[] = {
{ "burn", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_BURN}, 0, 0, FLAGS, "mode" },
{ "darken", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_DARKEN}, 0, 0, FLAGS, "mode" },
{ "difference", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_DIFFERENCE}, 0, 0, FLAGS, "mode" },
+ { "difference128", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_DIFFERENCE128}, 0, 0, FLAGS, "mode" },
{ "divide", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_DIVIDE}, 0, 0, FLAGS, "mode" },
{ "dodge", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_DODGE}, 0, 0, FLAGS, "mode" },
{ "exclusion", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_EXCLUSION}, 0, 0, FLAGS, "mode" },
@@ -190,6 +192,7 @@ DEFINE_BLEND(subtract, FFMAX(0, A - B))
DEFINE_BLEND(multiply, MULTIPLY(1, A, B))
DEFINE_BLEND(negation, 255 - FFABS(255 - A - B))
DEFINE_BLEND(difference, FFABS(A - B))
+DEFINE_BLEND(difference128, av_clip_uint8(128 + A - B))
DEFINE_BLEND(screen, SCREEN(1, A, B))
DEFINE_BLEND(overlay, (A < 128) ? MULTIPLY(2, A, B) : SCREEN(2, A, B))
DEFINE_BLEND(hardlight, (B < 128) ? MULTIPLY(2, B, A) : SCREEN(2, B, A))
@@ -310,6 +313,7 @@ static av_cold int init(AVFilterContext *ctx)
case BLEND_BURN: param->blend = blend_burn; break;
case BLEND_DARKEN: param->blend = blend_darken; break;
case BLEND_DIFFERENCE: param->blend = blend_difference; break;
+ case BLEND_DIFFERENCE128: param->blend = blend_difference128; break;
case BLEND_DIVIDE: param->blend = blend_divide; break;
case BLEND_DODGE: param->blend = blend_dodge; break;
case BLEND_EXCLUSION: param->blend = blend_exclusion; break;