From ee281b884e2d401f7c3b3ce95849211748ca2b53 Mon Sep 17 00:00:00 2001 From: Timothy Gu Date: Sat, 13 Feb 2016 23:42:45 +0000 Subject: vf_blend: Use memcpy when opacity is 0 For xor mode, 1.8x faster on Haswell. --- libavfilter/vf_blend.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'libavfilter') diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c index c24013d..599084f 100644 --- a/libavfilter/vf_blend.c +++ b/libavfilter/vf_blend.c @@ -130,6 +130,7 @@ static void blend_copy ## src(const uint8_t *top, ptrdiff_t top_linesize, \ } COPY(top) +COPY(bottom) #undef COPY @@ -512,6 +513,7 @@ static int config_output(AVFilterLink *outlink) case BLEND_MULTIPLY128:param->blend = is_16bit ? blend_multiply128_16bit: blend_multiply128_8bit;break; case BLEND_NEGATION: param->blend = is_16bit ? blend_negation_16bit : blend_negation_8bit; break; case BLEND_NORMAL: param->blend = param->opacity == 1 ? blend_copytop : + param->opacity == 0 ? blend_copybottom : is_16bit ? blend_normal_16bit : blend_normal_8bit; break; case BLEND_OR: param->blend = is_16bit ? blend_or_16bit : blend_or_8bit; break; case BLEND_OVERLAY: param->blend = is_16bit ? blend_overlay_16bit : blend_overlay_8bit; break; @@ -528,6 +530,10 @@ static int config_output(AVFilterLink *outlink) if (ARCH_X86) ff_blend_init_x86(param, is_16bit); + if (param->opacity == 0 && param->mode != BLEND_NORMAL) { + param->blend = blend_copytop; + } + if (s->all_expr && !param->expr_str) { param->expr_str = av_strdup(s->all_expr); if (!param->expr_str) -- cgit v1.1