Re: [FFmpeg-devel] [PATCH 2/2] vf_blend: Use memcpy when opacity is 0

2016-02-14 Thread Paul B Mahol
On 2/14/16, Timothy Gu  wrote:
> For xor mode, 1.8x faster on Haswell.
> ---
>  libavfilter/vf_blend.c | 6 ++
>  1 file changed, 6 insertions(+)
>
> 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)

lgtm if bitexact for all modes.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 2/2] vf_blend: Use memcpy when opacity is 0

2016-02-13 Thread Timothy Gu
For xor mode, 1.8x faster on Haswell.
---
 libavfilter/vf_blend.c | 6 ++
 1 file changed, 6 insertions(+)

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)
-- 
2.1.4

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel