[FFmpeg-devel] [PATCH 1/2] vf_blend: Templatize identity function and use a better name

Timothy Gu timothygu99 at gmail.com
Sun Feb 14 00:55:05 CET 2016


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



More information about the ffmpeg-devel mailing list