diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2014-12-04 12:34:30 +0100 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2014-12-26 11:24:48 +0100 |
commit | afaa4a89463187fe98042ba6bab0269ba4b4ba47 (patch) | |
tree | f9faf5c73dd6edd7d696a3aa81aabdf2311a8b53 | |
parent | 7c210c442462db78e05569ee23d4dd955c1b1a0b (diff) | |
download | ffmpeg-afaa4a89463187fe98042ba6bab0269ba4b4ba47.tar.gz |
lavfi/blend: add difference128 mode
-rw-r--r-- | doc/filters.texi | 1 | ||||
-rw-r--r-- | libavfilter/version.h | 2 | ||||
-rw-r--r-- | libavfilter/vf_blend.c | 4 |
3 files changed, 6 insertions, 1 deletions
diff --git a/doc/filters.texi b/doc/filters.texi index aa8bb610a9..aaa3083a70 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -2661,6 +2661,7 @@ Available values for component modes are: @item burn @item darken @item difference +@item difference128 @item divide @item dodge @item exclusion diff --git a/libavfilter/version.h b/libavfilter/version.h index 5c7489f908..4afcbe0f80 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -31,7 +31,7 @@ #define LIBAVFILTER_VERSION_MAJOR 5 #define LIBAVFILTER_VERSION_MINOR 5 -#define LIBAVFILTER_VERSION_MICRO 101 +#define LIBAVFILTER_VERSION_MICRO 102 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ LIBAVFILTER_VERSION_MINOR, \ 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; |