libavfilter/blend.h
9762554d
 /*
  * Copyright (c) 2013 Paul B Mahol
  *
  * This file is part of FFmpeg.
  *
  * FFmpeg is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2.1 of the License, or (at your option) any later version.
  *
  * FFmpeg is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
44304ae3
 #ifndef AVFILTER_BLEND_H
 #define AVFILTER_BLEND_H
 
9762554d
 #include "libavutil/eval.h"
 #include "avfilter.h"
 
 enum BlendMode {
     BLEND_UNSET = -1,
     BLEND_NORMAL,
     BLEND_ADDITION,
     BLEND_AND,
     BLEND_AVERAGE,
     BLEND_BURN,
     BLEND_DARKEN,
     BLEND_DIFFERENCE,
f8d0689d
     BLEND_GRAINEXTRACT,
9762554d
     BLEND_DIVIDE,
     BLEND_DODGE,
     BLEND_EXCLUSION,
     BLEND_HARDLIGHT,
     BLEND_LIGHTEN,
     BLEND_MULTIPLY,
     BLEND_NEGATION,
     BLEND_OR,
     BLEND_OVERLAY,
     BLEND_PHOENIX,
     BLEND_PINLIGHT,
     BLEND_REFLECT,
     BLEND_SCREEN,
     BLEND_SOFTLIGHT,
     BLEND_SUBTRACT,
     BLEND_VIVIDLIGHT,
     BLEND_XOR,
     BLEND_HARDMIX,
     BLEND_LINEARLIGHT,
     BLEND_GLOW,
f8d0689d
     BLEND_GRAINMERGE,
ba618bde
     BLEND_MULTIPLY128,
b6a0aa1c
     BLEND_HEAT,
     BLEND_FREEZE,
22a03c29
     BLEND_EXTREMITY,
9762554d
     BLEND_NB
 };
 
 typedef struct FilterParams {
     enum BlendMode mode;
     double opacity;
     AVExpr *e;
     char *expr_str;
     void (*blend)(const uint8_t *top, ptrdiff_t top_linesize,
                   const uint8_t *bottom, ptrdiff_t bottom_linesize,
                   uint8_t *dst, ptrdiff_t dst_linesize,
45743239
                   ptrdiff_t width, ptrdiff_t height,
5b8faaad
                   struct FilterParams *param, double *values, int starty);
9762554d
 } FilterParams;
 
8c56a4a1
 void ff_blend_init(FilterParams *param, int is_16bit);
9762554d
 void ff_blend_init_x86(FilterParams *param, int is_16bit);
44304ae3
 
 #endif /* AVFILTER_BLEND_H */