summaryrefslogtreecommitdiff
path: root/libavfilter/blend.h (plain)
blob: 54c4fdb6d1e12e279eb792c0dd2b267252d5b0a8
1/*
2 * Copyright (c) 2013 Paul B Mahol
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#ifndef AVFILTER_BLEND_H
22#define AVFILTER_BLEND_H
23
24#include "libavutil/eval.h"
25#include "avfilter.h"
26
27enum BlendMode {
28 BLEND_UNSET = -1,
29 BLEND_NORMAL,
30 BLEND_ADDITION,
31 BLEND_AND,
32 BLEND_AVERAGE,
33 BLEND_BURN,
34 BLEND_DARKEN,
35 BLEND_DIFFERENCE,
36 BLEND_DIFFERENCE128,
37 BLEND_DIVIDE,
38 BLEND_DODGE,
39 BLEND_EXCLUSION,
40 BLEND_HARDLIGHT,
41 BLEND_LIGHTEN,
42 BLEND_MULTIPLY,
43 BLEND_NEGATION,
44 BLEND_OR,
45 BLEND_OVERLAY,
46 BLEND_PHOENIX,
47 BLEND_PINLIGHT,
48 BLEND_REFLECT,
49 BLEND_SCREEN,
50 BLEND_SOFTLIGHT,
51 BLEND_SUBTRACT,
52 BLEND_VIVIDLIGHT,
53 BLEND_XOR,
54 BLEND_HARDMIX,
55 BLEND_LINEARLIGHT,
56 BLEND_GLOW,
57 BLEND_ADDITION128,
58 BLEND_MULTIPLY128,
59 BLEND_HEAT,
60 BLEND_FREEZE,
61 BLEND_NB
62};
63
64typedef struct FilterParams {
65 enum BlendMode mode;
66 double opacity;
67 AVExpr *e;
68 char *expr_str;
69 void (*blend)(const uint8_t *top, ptrdiff_t top_linesize,
70 const uint8_t *bottom, ptrdiff_t bottom_linesize,
71 uint8_t *dst, ptrdiff_t dst_linesize,
72 ptrdiff_t width, ptrdiff_t height,
73 struct FilterParams *param, double *values, int starty);
74} FilterParams;
75
76void ff_blend_init(FilterParams *param, int is_16bit);
77void ff_blend_init_x86(FilterParams *param, int is_16bit);
78
79#endif /* AVFILTER_BLEND_H */
80