• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2011 Pascal Getreuer
3  * Copyright (c) 2016 Paul B Mahol
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  *  * Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  *  * Redistributions in binary form must reproduce the above
11  *    copyright notice, this list of conditions and the following
12  *    disclaimer in the documentation and/or other materials provided
13  *    with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19  * HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 #ifndef AVFILTER_GBLUR_H
29 #define AVFILTER_GBLUR_H
30 #include "avfilter.h"
31 
32 typedef struct GBlurContext {
33     const AVClass *class;
34 
35     float sigma;
36     float sigmaV;
37     int steps;
38     int planes;
39 
40     int flt;
41     int depth;
42     int stride;
43     int planewidth[4];
44     int planeheight[4];
45     float *buffer;
46     float *localbuf;  ///< temporary buffer for horiz_slice. NULL if not used
47     float boundaryscale;
48     float boundaryscaleV;
49     float postscale;
50     float postscaleV;
51     float nu;
52     float nuV;
53     int nb_planes;
54     void (*horiz_slice)(float *buffer, int width, int height, int steps, float nu, float bscale, float *localbuf);
55     void (*verti_slice)(float *buffer, int width, int height, int slice_start, int slice_end, int steps,
56                             float nu, float bscale);
57     void (*postscale_slice)(float *buffer, int length, float postscale, float min, float max);
58 } GBlurContext;
59 
60 void ff_gblur_init_x86(GBlurContext *s);
61 #endif
62