[FFmpeg-devel] [PATCH 2/2] vf_blend: Use memcpy when opacity is 0
Paul B Mahol
onemda at gmail.com
Sun Feb 14 10:10:01 CET 2016
On 2/14/16, Timothy Gu <timothygu99 at gmail.com> 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.
More information about the ffmpeg-devel
mailing list