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__ */