[FFmpeg-cvslog] avfilter/vf_blend: add extremity blend mode

Paul B Mahol git at videolan.org
Sun Jun 25 17:46:27 EEST 2017


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sun Jun 25 16:39:10 2017 +0200| [22a03c29006e9c6b41ce6e63831bd3faa69a1fe8] | committer: Paul B Mahol

avfilter/vf_blend: add extremity blend mode

Signed-off-by: Paul B Mahol <onemda at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=22a03c29006e9c6b41ce6e63831bd3faa69a1fe8
---

 doc/filters.texi       | 1 +
 libavfilter/blend.h    | 1 +
 libavfilter/vf_blend.c | 4 ++++
 3 files changed, 6 insertions(+)

diff --git a/doc/filters.texi b/doc/filters.texi
index 7ec7f5d959..930ca4cfab 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -4859,6 +4859,7 @@ Available values for component modes are:
 @item dodge
 @item freeze
 @item exclusion
+ at item extremity
 @item glow
 @item hardlight
 @item hardmix
diff --git a/libavfilter/blend.h b/libavfilter/blend.h
index 54c4fdb6d1..0f27b4d29d 100644
--- a/libavfilter/blend.h
+++ b/libavfilter/blend.h
@@ -58,6 +58,7 @@ enum BlendMode {
     BLEND_MULTIPLY128,
     BLEND_HEAT,
     BLEND_FREEZE,
+    BLEND_EXTREMITY,
     BLEND_NB
 };
 
diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c
index 9f003b29b6..9bde3b22a1 100644
--- a/libavfilter/vf_blend.c
+++ b/libavfilter/vf_blend.c
@@ -76,6 +76,7 @@ typedef struct ThreadData {
     { "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" },\
+    { "extremity",  "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_EXTREMITY},  0, 0, FLAGS, "mode" },\
     { "freeze",     "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_FREEZE},     0, 0, FLAGS, "mode" },\
     { "glow",       "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_GLOW},       0, 0, FLAGS, "mode" },\
     { "hardlight",  "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_HARDLIGHT},  0, 0, FLAGS, "mode" },\
@@ -241,6 +242,7 @@ DEFINE_BLEND8(subtract,   FFMAX(0, A - B))
 DEFINE_BLEND8(multiply,   MULTIPLY(1, A, B))
 DEFINE_BLEND8(multiply128,av_clip_uint8((A - 128) * B / 32. + 128))
 DEFINE_BLEND8(negation,   255 - FFABS(255 - A - B))
+DEFINE_BLEND8(extremity,  FFABS(255 - A - B))
 DEFINE_BLEND8(difference, FFABS(A - B))
 DEFINE_BLEND8(difference128, av_clip_uint8(128 + A - B))
 DEFINE_BLEND8(screen,     SCREEN(1, A, B))
@@ -283,6 +285,7 @@ DEFINE_BLEND16(subtract,   FFMAX(0, A - B))
 DEFINE_BLEND16(multiply,   MULTIPLY(1, A, B))
 DEFINE_BLEND16(multiply128, av_clip_uint16((A - 32768) * B / 8192. + 32768))
 DEFINE_BLEND16(negation,   65535 - FFABS(65535 - A - B))
+DEFINE_BLEND16(extremity,  FFABS(65535 - A - B))
 DEFINE_BLEND16(difference, FFABS(A - B))
 DEFINE_BLEND16(difference128, av_clip_uint16(32768 + A - B))
 DEFINE_BLEND16(screen,     SCREEN(1, A, B))
@@ -457,6 +460,7 @@ void ff_blend_init(FilterParams *param, int is_16bit)
     case BLEND_DIVIDE:     param->blend = is_16bit ? blend_divide_16bit     : blend_divide_8bit;     break;
     case BLEND_DODGE:      param->blend = is_16bit ? blend_dodge_16bit      : blend_dodge_8bit;      break;
     case BLEND_EXCLUSION:  param->blend = is_16bit ? blend_exclusion_16bit  : blend_exclusion_8bit;  break;
+    case BLEND_EXTREMITY:  param->blend = is_16bit ? blend_extremity_16bit  : blend_extremity_8bit;  break;
     case BLEND_FREEZE:     param->blend = is_16bit ? blend_freeze_16bit     : blend_freeze_8bit;     break;
     case BLEND_GLOW:       param->blend = is_16bit ? blend_glow_16bit       : blend_glow_8bit;       break;
     case BLEND_HARDLIGHT:  param->blend = is_16bit ? blend_hardlight_16bit  : blend_hardlight_8bit;  break;



More information about the ffmpeg-cvslog mailing list