allocate canny variables from stack
[processor-sdk/gst-plugin-dsp66.git] / src / gstdsp66videokernel.h
1 /*
2  * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
3  *
4  *
5  *  Redistribution and use in source and binary forms, with or without
6  *  modification, are permitted provided that the following conditions
7  *  are met:
8  *
9  *    Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  *    Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the  
15  *    distribution.
16  *
17  *    Neither the name of Texas Instruments Incorporated nor the names of
18  *    its contributors may be used to endorse or promote products derived
19  *    from this software without specific prior written permission.
20  *
21  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  *
33  */
35 #ifndef __GST_DSP66_VIDEO_KERNEL_H__
36 #define __GST_DSP66_VIDEO_KERNEL_H__
39 #include <gst/gst.h>
40 #include <gst/video/video.h>
41 #include <gst/video/gstvideofilter.h>
43 G_BEGIN_DECLS
45 #define GST_TYPE_DSP66_VIDEO_KERNEL \
46   (gst_dsp66_video_kernel_get_type())
47 #define GST_DSP66_VIDEO_KERNEL(obj) \
48   (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DSP66_VIDEO_KERNEL,GstDsp66VideoKernel))
49 #define GST_DSP66_VIDEO_KERNEL_CLASS(klass) \
50   (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DSP66_VIDEO_KERNEL,GstDsp66VideoKernelClass))
51 #define GST_IS_DSP66_VIDEO_KERNEL(obj) \
52   (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DSP66_VIDEO_KERNEL))
53 #define GST_IS_DSP66_VIDEO_KERNEL_CLASS(klass) \
54   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DSP66_VIDEO_KERNEL))
56 typedef struct _GstDsp66VideoKernel GstDsp66VideoKernel;
57 typedef struct _GstDsp66VideoKernelClass GstDsp66VideoKernelClass;
59 typedef enum
60 {
61   GST_DSP66_VIDEO_KERNEL_FILTERSIZE_5  = 5,
62   GST_DSP66_VIDEO_KERNEL_FILTERSIZE_9  = 9,
63   GST_DSP66_VIDEO_KERNEL_FILTERSIZE_25 = 25
64 } GstDsp66VideoKernelFilterSize;
66 typedef enum {
67   GST_DSP66_VIDEO_KERNELTYPE_MEDIAN = 0,
68   GST_DSP66_VIDEO_KERNELTYPE_SOBEL  = 1,
69   GST_DSP66_VIDEO_KERNELTYPE_CONV   = 2,
70   GST_DSP66_VIDEO_KERNELTYPE_CANNY  = 3,
71   GST_DSP66_VIDEO_KERNELTYPE_ARB    = 4
72 } GstDsp66VideoKernelType;
74 struct _GstDsp66VideoKernel {
75   GstVideoFilter parent;
76   GstDsp66VideoKernelFilterSize filtersize;
77   GstDsp66VideoKernelType kerneltype;
78   gboolean lum_only;
79   gchar *arbkernel;
80 };
82 struct _GstDsp66VideoKernelClass {
83   GstVideoFilterClass parent_class;
84 };
86 GType gst_dsp66_video_kernel_get_type (void);
88 G_END_DECLS
90 #endif /* __GST_DSP66_VIDEO_KERNEL_H__ */