ffmpeg | branch: master | Timothy Gu <timothyg...@gmail.com> | Sat Feb 13 23:23:17 2016 +0000| [ba25936df589c62b097f799ed751973ebeac42b2] | committer: Timothy Gu
vf_blend: Templatize identity function and use a better name > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ba25936df589c62b097f799ed751973ebeac42b2 --- libavfilter/vf_blend.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c index 2b734b4..c24013d 100644 --- a/libavfilter/vf_blend.c +++ b/libavfilter/vf_blend.c @@ -118,15 +118,21 @@ static const AVOption blend_options[] = { AVFILTER_DEFINE_CLASS(blend); -static void blend_normal(const uint8_t *top, ptrdiff_t top_linesize, - const uint8_t *bottom, ptrdiff_t bottom_linesize, - uint8_t *dst, ptrdiff_t dst_linesize, - ptrdiff_t width, ptrdiff_t start, ptrdiff_t end, - FilterParams *param, double *values) -{ - av_image_copy_plane(dst, dst_linesize, top, top_linesize, width, end - start); +#define COPY(src) \ +static void blend_copy ## src(const uint8_t *top, ptrdiff_t top_linesize, \ + const uint8_t *bottom, ptrdiff_t bottom_linesize,\ + uint8_t *dst, ptrdiff_t dst_linesize, \ + ptrdiff_t width, ptrdiff_t start, ptrdiff_t end, \ + FilterParams *param, double *values) \ +{ \ + av_image_copy_plane(dst, dst_linesize, src, src ## _linesize, \ + width, end - start); \ } +COPY(top) + +#undef COPY + static void blend_normal_8bit(const uint8_t *top, ptrdiff_t top_linesize, const uint8_t *bottom, ptrdiff_t bottom_linesize, uint8_t *dst, ptrdiff_t dst_linesize, @@ -505,7 +511,7 @@ static int config_output(AVFilterLink *outlink) case BLEND_MULTIPLY: param->blend = is_16bit ? blend_multiply_16bit : blend_multiply_8bit; break; 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_normal: + case BLEND_NORMAL: param->blend = param->opacity == 1 ? blend_copytop : 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; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog