mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 16:50:47 +00:00
opencvbasetrans: Use GstVideoFilter as the base class
Port from GstBaseTransform to GstVideoFilter as the base class.
This commit is contained in:
parent
4c03c980ce
commit
dcb97354bf
16 changed files with 159 additions and 174 deletions
|
@ -5,11 +5,12 @@ SUBDIRS = basicfilters edgedetect faceblur facedetect pyramidsegment templatemat
|
|||
plugin_LTLIBRARIES = libgstopencv.la
|
||||
|
||||
# sources used to compile this plug-in
|
||||
libgstopencv_la_SOURCES = gstopencv.c gstopencvbasetrans.c gstopencvutils.c
|
||||
libgstopencv_la_SOURCES = gstopencv.c gstopencvvideofilter.c gstopencvutils.c
|
||||
|
||||
# flags used to compile this facedetect
|
||||
# add other _CFLAGS and _LIBS as needed
|
||||
libgstopencv_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(OPENCV_CFLAGS) \
|
||||
$(GSTPB_BASE_CFLAGS) \
|
||||
-I${top_srcdir}/src \
|
||||
-I${top_srcdir}/ext/opencv/basicfilters \
|
||||
-I${top_srcdir}/ext/opencv/edgedetect \
|
||||
|
@ -20,6 +21,7 @@ libgstopencv_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(OPENCV_CFLAGS) \
|
|||
-I${top_srcdir}/ext/opencv/textwrite
|
||||
|
||||
libgstopencv_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) $(OPENCV_LIBS) \
|
||||
$(GSTPB_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) \
|
||||
$(top_builddir)/ext/opencv/basicfilters/libgstbasicfilters.la \
|
||||
$(top_builddir)/ext/opencv/edgedetect/libgstedgedetect.la \
|
||||
$(top_builddir)/ext/opencv/faceblur/libgstfaceblur.la \
|
||||
|
@ -40,4 +42,4 @@ libgstopencv_la_DEPENDENCIES = \
|
|||
$(top_builddir)/ext/opencv/textwrite/libgsttextwrite.la
|
||||
|
||||
# headers we need but don't want installed
|
||||
noinst_HEADERS = gstopencvbasetrans.h gstopencvutils.h
|
||||
noinst_HEADERS = gstopencvvideofilter.h gstopencvutils.h
|
||||
|
|
|
@ -11,8 +11,11 @@ libgstbasicfilters_la_SOURCES = gstcvsmooth.c \
|
|||
|
||||
# flags used to compile this pyramidsegment
|
||||
# add other _CFLAGS and _LIBS as needed
|
||||
libgstbasicfilters_la_CFLAGS = $(GST_CFLAGS) $(OPENCV_CFLAGS) -I..
|
||||
libgstbasicfilters_la_LIBADD = $(GST_LIBS) $(OPENCV_LIBS)
|
||||
libgstbasicfilters_la_CFLAGS = $(GST_CFLAGS) $(OPENCV_CFLAGS) -I.. \
|
||||
$(GST_BASE_CFLAGS) $(GSTPB_BASE_CFLAGS)
|
||||
libgstbasicfilters_la_LIBADD = $(GST_LIBS) $(OPENCV_LIBS) \
|
||||
$(GST_BASE_LIBS) $(GSTPB_BASE_LIBS) \
|
||||
-lgstvideo-$(GST_MAJORMINOR)
|
||||
libgstbasicfilters_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
||||
# headers we need but don't want installed
|
||||
|
|
|
@ -55,9 +55,9 @@ GST_DEBUG_CATEGORY_STATIC (gst_cv_dilate_debug);
|
|||
GST_BOILERPLATE (GstCvDilate, gst_cv_dilate, GstCvDilateErode,
|
||||
GST_TYPE_CV_DILATE_ERODE);
|
||||
|
||||
static GstFlowReturn gst_cv_dilate_transform_ip (GstOpencvBaseTransform *
|
||||
static GstFlowReturn gst_cv_dilate_transform_ip (GstOpencvVideoFilter *
|
||||
filter, GstBuffer * buf, IplImage * img);
|
||||
static GstFlowReturn gst_cv_dilate_transform (GstOpencvBaseTransform * filter,
|
||||
static GstFlowReturn gst_cv_dilate_transform (GstOpencvVideoFilter * filter,
|
||||
GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg);
|
||||
|
||||
/* GObject vmethod implementations */
|
||||
|
@ -77,9 +77,9 @@ gst_cv_dilate_base_init (gpointer gclass)
|
|||
static void
|
||||
gst_cv_dilate_class_init (GstCvDilateClass * klass)
|
||||
{
|
||||
GstOpencvBaseTransformClass *gstopencvbasefilter_class;
|
||||
GstOpencvVideoFilterClass *gstopencvbasefilter_class;
|
||||
|
||||
gstopencvbasefilter_class = (GstOpencvBaseTransformClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
@ -98,7 +98,7 @@ gst_cv_dilate_init (GstCvDilate * filter, GstCvDilateClass * gclass)
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_cv_dilate_transform (GstOpencvBaseTransform * base, GstBuffer * buf,
|
||||
gst_cv_dilate_transform (GstOpencvVideoFilter * base, GstBuffer * buf,
|
||||
IplImage * img, GstBuffer * outbuf, IplImage * outimg)
|
||||
{
|
||||
GstCvDilateErode *filter = GST_CV_DILATE_ERODE (base);
|
||||
|
@ -110,7 +110,7 @@ gst_cv_dilate_transform (GstOpencvBaseTransform * base, GstBuffer * buf,
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_cv_dilate_transform_ip (GstOpencvBaseTransform * base, GstBuffer * buf,
|
||||
gst_cv_dilate_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
|
||||
IplImage * img)
|
||||
{
|
||||
GstCvDilateErode *filter = GST_CV_DILATE_ERODE (base);
|
||||
|
|
|
@ -118,7 +118,7 @@ gst_cv_dilate_erode_get_type (void)
|
|||
(GInstanceInitFunc) gst_cv_dilate_erode_init,
|
||||
};
|
||||
|
||||
_type = g_type_register_static (GST_TYPE_OPENCV_BASE_TRANSFORM,
|
||||
_type = g_type_register_static (GST_TYPE_OPENCV_VIDEO_FILTER,
|
||||
"GstCvDilateErode", &opencv_dilate_erode_info,
|
||||
G_TYPE_FLAG_ABSTRACT);
|
||||
/*
|
||||
|
@ -156,12 +156,12 @@ static void
|
|||
gst_cv_dilate_erode_class_init (GstCvDilateErodeClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstOpencvBaseTransformClass *gstopencvbasefilter_class;
|
||||
GstOpencvVideoFilterClass *gstopencvbasefilter_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
||||
gobject_class = (GObjectClass *) klass;
|
||||
gstelement_class = (GstElementClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvBaseTransformClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
#include <gst/gst.h>
|
||||
#include <cv.h>
|
||||
#include <gstopencvbasetrans.h>
|
||||
#include <gstopencvvideofilter.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
@ -67,14 +67,14 @@ typedef struct _GstCvDilateErodeClass GstCvDilateErodeClass;
|
|||
|
||||
struct _GstCvDilateErode
|
||||
{
|
||||
GstOpencvBaseTransform element;
|
||||
GstOpencvVideoFilter element;
|
||||
|
||||
gint iterations;
|
||||
};
|
||||
|
||||
struct _GstCvDilateErodeClass
|
||||
{
|
||||
GstOpencvBaseTransformClass parent_class;
|
||||
GstOpencvVideoFilterClass parent_class;
|
||||
};
|
||||
|
||||
GType gst_cv_dilate_erode_get_type (void);
|
||||
|
|
|
@ -63,10 +63,10 @@ static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
|||
GST_STATIC_CAPS ("video/x-raw-gray, depth=(int)8, bpp=(int)8"));
|
||||
|
||||
GST_BOILERPLATE (GstCvEqualizeHist, gst_cv_equalize_hist,
|
||||
GstOpencvBaseTransform, GST_TYPE_OPENCV_BASE_TRANSFORM);
|
||||
GstOpencvVideoFilter, GST_TYPE_OPENCV_VIDEO_FILTER);
|
||||
|
||||
static GstFlowReturn gst_cv_equalize_hist_transform (
|
||||
GstOpencvBaseTransform * filter, GstBuffer * buf, IplImage * img,
|
||||
GstOpencvVideoFilter * filter, GstBuffer * buf, IplImage * img,
|
||||
GstBuffer * outbuf, IplImage * outimg);
|
||||
|
||||
/* Clean up */
|
||||
|
@ -99,10 +99,10 @@ static void
|
|||
gst_cv_equalize_hist_class_init (GstCvEqualizeHistClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstOpencvBaseTransformClass *gstopencvbasefilter_class;
|
||||
GstOpencvVideoFilterClass *gstopencvbasefilter_class;
|
||||
|
||||
gobject_class = (GObjectClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvBaseTransformClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_cv_equalize_hist_finalize);
|
||||
|
@ -117,7 +117,7 @@ gst_cv_equalize_hist_init (GstCvEqualizeHist * filter,
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_cv_equalize_hist_transform (GstOpencvBaseTransform * base,
|
||||
gst_cv_equalize_hist_transform (GstOpencvVideoFilter * base,
|
||||
GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg)
|
||||
{
|
||||
cvEqualizeHist (img, outimg);
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
#include <gst/gst.h>
|
||||
#include <cv.h>
|
||||
#include <gstopencvbasetrans.h>
|
||||
#include <gstopencvvideofilter.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
@ -67,12 +67,12 @@ typedef struct _GstCvEqualizeHistClass GstCvEqualizeHistClass;
|
|||
|
||||
struct _GstCvEqualizeHist
|
||||
{
|
||||
GstOpencvBaseTransform element;
|
||||
GstOpencvVideoFilter element;
|
||||
};
|
||||
|
||||
struct _GstCvEqualizeHistClass
|
||||
{
|
||||
GstOpencvBaseTransformClass parent_class;
|
||||
GstOpencvVideoFilterClass parent_class;
|
||||
};
|
||||
|
||||
GType gst_cv_equalize_hist_get_type (void);
|
||||
|
|
|
@ -55,9 +55,9 @@ GST_DEBUG_CATEGORY_STATIC (gst_cv_erode_debug);
|
|||
GST_BOILERPLATE (GstCvErode, gst_cv_erode, GstCvDilateErode,
|
||||
GST_TYPE_CV_DILATE_ERODE);
|
||||
|
||||
static GstFlowReturn gst_cv_erode_transform_ip (GstOpencvBaseTransform *
|
||||
static GstFlowReturn gst_cv_erode_transform_ip (GstOpencvVideoFilter *
|
||||
filter, GstBuffer * buf, IplImage * img);
|
||||
static GstFlowReturn gst_cv_erode_transform (GstOpencvBaseTransform * filter,
|
||||
static GstFlowReturn gst_cv_erode_transform (GstOpencvVideoFilter * filter,
|
||||
GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg);
|
||||
|
||||
/* GObject vmethod implementations */
|
||||
|
@ -77,9 +77,9 @@ gst_cv_erode_base_init (gpointer gclass)
|
|||
static void
|
||||
gst_cv_erode_class_init (GstCvErodeClass * klass)
|
||||
{
|
||||
GstOpencvBaseTransformClass *gstopencvbasefilter_class;
|
||||
GstOpencvVideoFilterClass *gstopencvbasefilter_class;
|
||||
|
||||
gstopencvbasefilter_class = (GstOpencvBaseTransformClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
@ -98,7 +98,7 @@ gst_cv_erode_init (GstCvErode * filter, GstCvErodeClass * gclass)
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_cv_erode_transform (GstOpencvBaseTransform * base, GstBuffer * buf,
|
||||
gst_cv_erode_transform (GstOpencvVideoFilter * base, GstBuffer * buf,
|
||||
IplImage * img, GstBuffer * outbuf, IplImage * outimg)
|
||||
{
|
||||
GstCvDilateErode *filter = GST_CV_DILATE_ERODE (base);
|
||||
|
@ -110,7 +110,7 @@ gst_cv_erode_transform (GstOpencvBaseTransform * base, GstBuffer * buf,
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_cv_erode_transform_ip (GstOpencvBaseTransform * base, GstBuffer * buf,
|
||||
gst_cv_erode_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
|
||||
IplImage * img)
|
||||
{
|
||||
GstCvDilateErode *filter = GST_CV_DILATE_ERODE (base);
|
||||
|
|
|
@ -79,8 +79,8 @@ enum
|
|||
|
||||
#define DEFAULT_APERTURE_SIZE 3
|
||||
|
||||
GST_BOILERPLATE (GstCvLaplace, gst_cv_laplace, GstOpencvBaseTransform,
|
||||
GST_TYPE_OPENCV_BASE_TRANSFORM);
|
||||
GST_BOILERPLATE (GstCvLaplace, gst_cv_laplace, GstOpencvVideoFilter,
|
||||
GST_TYPE_OPENCV_VIDEO_FILTER);
|
||||
|
||||
static void gst_cv_laplace_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec);
|
||||
|
@ -90,10 +90,10 @@ static void gst_cv_laplace_get_property (GObject * object, guint prop_id,
|
|||
static GstCaps *gst_cv_laplace_transform_caps (GstBaseTransform * trans,
|
||||
GstPadDirection dir, GstCaps * caps);
|
||||
|
||||
static GstFlowReturn gst_cv_laplace_transform (GstOpencvBaseTransform * filter,
|
||||
static GstFlowReturn gst_cv_laplace_transform (GstOpencvVideoFilter * filter,
|
||||
GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg);
|
||||
|
||||
static gboolean gst_cv_laplace_cv_set_caps (GstOpencvBaseTransform * trans,
|
||||
static gboolean gst_cv_laplace_cv_set_caps (GstOpencvVideoFilter * trans,
|
||||
gint in_width, gint in_height, gint in_depth, gint in_channels,
|
||||
gint out_width, gint out_height, gint out_depth, gint out_channels);
|
||||
|
||||
|
@ -134,13 +134,13 @@ gst_cv_laplace_class_init (GstCvLaplaceClass * klass)
|
|||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstBaseTransformClass *gstbasetransform_class;
|
||||
GstOpencvBaseTransformClass *gstopencvbasefilter_class;
|
||||
GstOpencvVideoFilterClass *gstopencvbasefilter_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
||||
gobject_class = (GObjectClass *) klass;
|
||||
gstelement_class = (GstElementClass *) klass;
|
||||
gstbasetransform_class = (GstBaseTransformClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvBaseTransformClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
@ -168,7 +168,7 @@ gst_cv_laplace_init (GstCvLaplace * filter, GstCvLaplaceClass * gclass)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
gst_cv_laplace_cv_set_caps (GstOpencvBaseTransform * trans, gint in_width,
|
||||
gst_cv_laplace_cv_set_caps (GstOpencvVideoFilter * trans, gint in_width,
|
||||
gint in_height, gint in_depth, gint in_channels, gint out_width,
|
||||
gint out_height, gint out_depth, gint out_channels)
|
||||
{
|
||||
|
@ -273,7 +273,7 @@ gst_cv_laplace_get_property (GObject * object, guint prop_id,
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_cv_laplace_transform (GstOpencvBaseTransform * base, GstBuffer * buf,
|
||||
gst_cv_laplace_transform (GstOpencvVideoFilter * base, GstBuffer * buf,
|
||||
IplImage * img, GstBuffer * outbuf, IplImage * outimg)
|
||||
{
|
||||
GstCvLaplace *filter = GST_CV_LAPLACE (base);
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
#include <gst/gst.h>
|
||||
#include <cv.h>
|
||||
#include <gstopencvbasetrans.h>
|
||||
#include <gstopencvvideofilter.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
@ -67,7 +67,7 @@ typedef struct _GstCvLaplaceClass GstCvLaplaceClass;
|
|||
|
||||
struct _GstCvLaplace
|
||||
{
|
||||
GstOpencvBaseTransform element;
|
||||
GstOpencvVideoFilter element;
|
||||
|
||||
gint aperture_size;
|
||||
|
||||
|
@ -76,7 +76,7 @@ struct _GstCvLaplace
|
|||
|
||||
struct _GstCvLaplaceClass
|
||||
{
|
||||
GstOpencvBaseTransformClass parent_class;
|
||||
GstOpencvVideoFilterClass parent_class;
|
||||
};
|
||||
|
||||
GType gst_cv_laplace_get_type (void);
|
||||
|
|
|
@ -119,17 +119,17 @@ gst_cv_smooth_type_get_type (void)
|
|||
#define DEFAULT_PARAM3 0.0
|
||||
#define DEFAULT_PARAM4 0.0
|
||||
|
||||
GST_BOILERPLATE (GstCvSmooth, gst_cv_smooth, GstOpencvBaseTransform,
|
||||
GST_TYPE_OPENCV_BASE_TRANSFORM);
|
||||
GST_BOILERPLATE (GstCvSmooth, gst_cv_smooth, GstOpencvVideoFilter,
|
||||
GST_TYPE_OPENCV_VIDEO_FILTER);
|
||||
|
||||
static void gst_cv_smooth_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec);
|
||||
static void gst_cv_smooth_get_property (GObject * object, guint prop_id,
|
||||
GValue * value, GParamSpec * pspec);
|
||||
|
||||
static GstFlowReturn gst_cv_smooth_transform_ip (GstOpencvBaseTransform *
|
||||
static GstFlowReturn gst_cv_smooth_transform_ip (GstOpencvVideoFilter *
|
||||
filter, GstBuffer * buf, IplImage * img);
|
||||
static GstFlowReturn gst_cv_smooth_transform (GstOpencvBaseTransform * filter,
|
||||
static GstFlowReturn gst_cv_smooth_transform (GstOpencvVideoFilter * filter,
|
||||
GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg);
|
||||
|
||||
/* Clean up */
|
||||
|
@ -164,12 +164,12 @@ static void
|
|||
gst_cv_smooth_class_init (GstCvSmoothClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstOpencvBaseTransformClass *gstopencvbasefilter_class;
|
||||
GstOpencvVideoFilterClass *gstopencvbasefilter_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
||||
gobject_class = (GObjectClass *) klass;
|
||||
gstelement_class = (GstElementClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvBaseTransformClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
@ -328,7 +328,7 @@ gst_cv_smooth_get_property (GObject * object, guint prop_id,
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_cv_smooth_transform (GstOpencvBaseTransform * base, GstBuffer * buf,
|
||||
gst_cv_smooth_transform (GstOpencvVideoFilter * base, GstBuffer * buf,
|
||||
IplImage * img, GstBuffer * outbuf, IplImage * outimg)
|
||||
{
|
||||
GstCvSmooth *filter = GST_CV_SMOOTH (base);
|
||||
|
@ -340,7 +340,7 @@ gst_cv_smooth_transform (GstOpencvBaseTransform * base, GstBuffer * buf,
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_cv_smooth_transform_ip (GstOpencvBaseTransform * base, GstBuffer * buf,
|
||||
gst_cv_smooth_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
|
||||
IplImage * img)
|
||||
{
|
||||
GstCvSmooth *filter = GST_CV_SMOOTH (base);
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
#include <gst/gst.h>
|
||||
#include <cv.h>
|
||||
#include <gstopencvbasetrans.h>
|
||||
#include <gstopencvvideofilter.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
@ -67,7 +67,7 @@ typedef struct _GstCvSmoothClass GstCvSmoothClass;
|
|||
|
||||
struct _GstCvSmooth
|
||||
{
|
||||
GstOpencvBaseTransform element;
|
||||
GstOpencvVideoFilter element;
|
||||
|
||||
gint type;
|
||||
|
||||
|
@ -79,7 +79,7 @@ struct _GstCvSmooth
|
|||
|
||||
struct _GstCvSmoothClass
|
||||
{
|
||||
GstOpencvBaseTransformClass parent_class;
|
||||
GstOpencvVideoFilterClass parent_class;
|
||||
};
|
||||
|
||||
GType gst_cv_smooth_get_type (void);
|
||||
|
|
|
@ -83,8 +83,8 @@ enum
|
|||
#define DEFAULT_Y_ORDER 0
|
||||
#define DEFAULT_APERTURE_SIZE 3
|
||||
|
||||
GST_BOILERPLATE (GstCvSobel, gst_cv_sobel, GstOpencvBaseTransform,
|
||||
GST_TYPE_OPENCV_BASE_TRANSFORM);
|
||||
GST_BOILERPLATE (GstCvSobel, gst_cv_sobel, GstOpencvVideoFilter,
|
||||
GST_TYPE_OPENCV_VIDEO_FILTER);
|
||||
|
||||
static void gst_cv_sobel_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec);
|
||||
|
@ -94,7 +94,7 @@ static void gst_cv_sobel_get_property (GObject * object, guint prop_id,
|
|||
static GstCaps *gst_cv_sobel_transform_caps (GstBaseTransform * trans,
|
||||
GstPadDirection dir, GstCaps * caps);
|
||||
|
||||
static GstFlowReturn gst_cv_sobel_transform (GstOpencvBaseTransform * filter,
|
||||
static GstFlowReturn gst_cv_sobel_transform (GstOpencvVideoFilter * filter,
|
||||
GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg);
|
||||
|
||||
/* Clean up */
|
||||
|
@ -129,13 +129,13 @@ gst_cv_sobel_class_init (GstCvSobelClass * klass)
|
|||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstBaseTransformClass *gstbasetransform_class;
|
||||
GstOpencvBaseTransformClass *gstopencvbasefilter_class;
|
||||
GstOpencvVideoFilterClass *gstopencvbasefilter_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
||||
gobject_class = (GObjectClass *) klass;
|
||||
gstelement_class = (GstElementClass *) klass;
|
||||
gstbasetransform_class = (GstBaseTransformClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvBaseTransformClass *) klass;
|
||||
gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
@ -260,7 +260,7 @@ gst_cv_sobel_get_property (GObject * object, guint prop_id,
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_cv_sobel_transform (GstOpencvBaseTransform * base, GstBuffer * buf,
|
||||
gst_cv_sobel_transform (GstOpencvVideoFilter * base, GstBuffer * buf,
|
||||
IplImage * img, GstBuffer * outbuf, IplImage * outimg)
|
||||
{
|
||||
GstCvSobel *filter = GST_CV_SOBEL (base);
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
#include <gst/gst.h>
|
||||
#include <cv.h>
|
||||
#include <gstopencvbasetrans.h>
|
||||
#include <gstopencvvideofilter.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
@ -67,7 +67,7 @@ typedef struct _GstCvSobelClass GstCvSobelClass;
|
|||
|
||||
struct _GstCvSobel
|
||||
{
|
||||
GstOpencvBaseTransform element;
|
||||
GstOpencvVideoFilter element;
|
||||
|
||||
gint x_order;
|
||||
gint y_order;
|
||||
|
@ -76,7 +76,7 @@ struct _GstCvSobel
|
|||
|
||||
struct _GstCvSobelClass
|
||||
{
|
||||
GstOpencvBaseTransformClass parent_class;
|
||||
GstOpencvVideoFilterClass parent_class;
|
||||
};
|
||||
|
||||
GType gst_cv_sobel_get_type (void);
|
||||
|
|
|
@ -49,11 +49,11 @@
|
|||
|
||||
#include <gst/gst.h>
|
||||
|
||||
#include "gstopencvbasetrans.h"
|
||||
#include "gstopencvvideofilter.h"
|
||||
#include "gstopencvutils.h"
|
||||
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_opencv_base_transform_debug);
|
||||
#define GST_CAT_DEFAULT gst_opencv_base_transform_debug
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_opencv_video_filter_debug);
|
||||
#define GST_CAT_DEFAULT gst_opencv_video_filter_debug
|
||||
|
||||
/* Filter signals and args */
|
||||
enum
|
||||
|
@ -69,47 +69,45 @@ enum
|
|||
|
||||
static GstElementClass *parent_class = NULL;
|
||||
|
||||
static void gst_opencv_base_transform_class_init (GstOpencvBaseTransformClass *
|
||||
static void gst_opencv_video_filter_class_init (GstOpencvVideoFilterClass *
|
||||
klass);
|
||||
static void gst_opencv_base_transform_init (GstOpencvBaseTransform * trans,
|
||||
GstOpencvBaseTransformClass * klass);
|
||||
static void gst_opencv_base_transform_base_init (gpointer gclass);
|
||||
static void gst_opencv_video_filter_init (GstOpencvVideoFilter * trans,
|
||||
GstOpencvVideoFilterClass * klass);
|
||||
static void gst_opencv_video_filter_base_init (gpointer gclass);
|
||||
|
||||
static gboolean gst_opencv_base_transform_set_caps (GstBaseTransform * trans,
|
||||
static gboolean gst_opencv_video_filter_set_caps (GstBaseTransform * trans,
|
||||
GstCaps * incaps, GstCaps * outcaps);
|
||||
static GstFlowReturn gst_opencv_base_transform_transform_ip (GstBaseTransform *
|
||||
static GstFlowReturn gst_opencv_video_filter_transform_ip (GstBaseTransform *
|
||||
trans, GstBuffer * buf);
|
||||
static GstFlowReturn gst_opencv_base_transform_transform (GstBaseTransform *
|
||||
static GstFlowReturn gst_opencv_video_filter_transform (GstBaseTransform *
|
||||
trans, GstBuffer * inbuf, GstBuffer * outbuf);
|
||||
static gboolean gst_opencv_base_transform_get_unit_size (GstBaseTransform *
|
||||
trans, GstCaps * caps, guint * size);
|
||||
|
||||
static void gst_opencv_base_transform_set_property (GObject * object,
|
||||
static void gst_opencv_video_filter_set_property (GObject * object,
|
||||
guint prop_id, const GValue * value, GParamSpec * pspec);
|
||||
static void gst_opencv_base_transform_get_property (GObject * object,
|
||||
static void gst_opencv_video_filter_get_property (GObject * object,
|
||||
guint prop_id, GValue * value, GParamSpec * pspec);
|
||||
|
||||
GType
|
||||
gst_opencv_base_transform_get_type (void)
|
||||
gst_opencv_video_filter_get_type (void)
|
||||
{
|
||||
static volatile gsize opencv_base_transform_type = 0;
|
||||
|
||||
if (g_once_init_enter (&opencv_base_transform_type)) {
|
||||
GType _type;
|
||||
static const GTypeInfo opencv_base_transform_info = {
|
||||
sizeof (GstOpencvBaseTransformClass),
|
||||
(GBaseInitFunc) gst_opencv_base_transform_base_init,
|
||||
sizeof (GstOpencvVideoFilterClass),
|
||||
(GBaseInitFunc) gst_opencv_video_filter_base_init,
|
||||
NULL,
|
||||
(GClassInitFunc) gst_opencv_base_transform_class_init,
|
||||
(GClassInitFunc) gst_opencv_video_filter_class_init,
|
||||
NULL,
|
||||
NULL,
|
||||
sizeof (GstOpencvBaseTransform),
|
||||
sizeof (GstOpencvVideoFilter),
|
||||
0,
|
||||
(GInstanceInitFunc) gst_opencv_base_transform_init,
|
||||
(GInstanceInitFunc) gst_opencv_video_filter_init,
|
||||
};
|
||||
|
||||
_type = g_type_register_static (GST_TYPE_BASE_TRANSFORM,
|
||||
"GstOpencvBaseTransform", &opencv_base_transform_info,
|
||||
_type = g_type_register_static (GST_TYPE_VIDEO_FILTER,
|
||||
"GstOpencvVideoFilter", &opencv_base_transform_info,
|
||||
G_TYPE_FLAG_ABSTRACT);
|
||||
g_once_init_leave (&opencv_base_transform_type, _type);
|
||||
}
|
||||
|
@ -118,9 +116,9 @@ gst_opencv_base_transform_get_type (void)
|
|||
|
||||
/* Clean up */
|
||||
static void
|
||||
gst_opencv_base_transform_finalize (GObject * obj)
|
||||
gst_opencv_video_filter_finalize (GObject * obj)
|
||||
{
|
||||
GstOpencvBaseTransform *transform = GST_OPENCV_BASE_TRANSFORM (obj);
|
||||
GstOpencvVideoFilter *transform = GST_OPENCV_VIDEO_FILTER (obj);
|
||||
|
||||
if (transform->cvImage)
|
||||
cvReleaseImage (&transform->cvImage);
|
||||
|
@ -130,12 +128,12 @@ gst_opencv_base_transform_finalize (GObject * obj)
|
|||
|
||||
/* GObject vmethod implementations */
|
||||
static void
|
||||
gst_opencv_base_transform_base_init (gpointer gclass)
|
||||
gst_opencv_video_filter_base_init (gpointer gclass)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gst_opencv_base_transform_class_init (GstOpencvBaseTransformClass * klass)
|
||||
gst_opencv_video_filter_class_init (GstOpencvVideoFilterClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
@ -146,35 +144,34 @@ gst_opencv_base_transform_class_init (GstOpencvBaseTransformClass * klass)
|
|||
basetrans_class = (GstBaseTransformClass *) klass;
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
GST_DEBUG_CATEGORY_INIT (gst_opencv_base_transform_debug,
|
||||
GST_DEBUG_CATEGORY_INIT (gst_opencv_video_filter_debug,
|
||||
"opencvbasetransform", 0, "opencvbasetransform element");
|
||||
|
||||
gobject_class->finalize =
|
||||
GST_DEBUG_FUNCPTR (gst_opencv_base_transform_finalize);
|
||||
gobject_class->set_property = gst_opencv_base_transform_set_property;
|
||||
gobject_class->get_property = gst_opencv_base_transform_get_property;
|
||||
GST_DEBUG_FUNCPTR (gst_opencv_video_filter_finalize);
|
||||
gobject_class->set_property = gst_opencv_video_filter_set_property;
|
||||
gobject_class->get_property = gst_opencv_video_filter_get_property;
|
||||
|
||||
basetrans_class->transform = gst_opencv_base_transform_transform;
|
||||
basetrans_class->transform_ip = gst_opencv_base_transform_transform_ip;
|
||||
basetrans_class->set_caps = gst_opencv_base_transform_set_caps;
|
||||
basetrans_class->get_unit_size = gst_opencv_base_transform_get_unit_size;
|
||||
basetrans_class->transform = gst_opencv_video_filter_transform;
|
||||
basetrans_class->transform_ip = gst_opencv_video_filter_transform_ip;
|
||||
basetrans_class->set_caps = gst_opencv_video_filter_set_caps;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_opencv_base_transform_init (GstOpencvBaseTransform * transform,
|
||||
GstOpencvBaseTransformClass * bclass)
|
||||
gst_opencv_video_filter_init (GstOpencvVideoFilter * transform,
|
||||
GstOpencvVideoFilterClass * bclass)
|
||||
{
|
||||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_opencv_base_transform_transform (GstBaseTransform * trans,
|
||||
gst_opencv_video_filter_transform (GstBaseTransform * trans,
|
||||
GstBuffer * inbuf, GstBuffer * outbuf)
|
||||
{
|
||||
GstOpencvBaseTransform *transform;
|
||||
GstOpencvBaseTransformClass *fclass;
|
||||
GstOpencvVideoFilter *transform;
|
||||
GstOpencvVideoFilterClass *fclass;
|
||||
|
||||
transform = GST_OPENCV_BASE_TRANSFORM (trans);
|
||||
fclass = GST_OPENCV_BASE_TRANSFORM_GET_CLASS (transform);
|
||||
transform = GST_OPENCV_VIDEO_FILTER (trans);
|
||||
fclass = GST_OPENCV_VIDEO_FILTER_GET_CLASS (transform);
|
||||
|
||||
g_return_val_if_fail (fclass->cv_trans_func != NULL, GST_FLOW_ERROR);
|
||||
g_return_val_if_fail (transform->cvImage != NULL, GST_FLOW_ERROR);
|
||||
|
@ -187,34 +184,35 @@ gst_opencv_base_transform_transform (GstBaseTransform * trans,
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_opencv_base_transform_transform_ip (GstBaseTransform * trans,
|
||||
gst_opencv_video_filter_transform_ip (GstBaseTransform * trans,
|
||||
GstBuffer * buffer)
|
||||
{
|
||||
GstOpencvBaseTransform *transform;
|
||||
GstOpencvBaseTransformClass *fclass;
|
||||
GstOpencvVideoFilter *transform;
|
||||
GstOpencvVideoFilterClass *fclass;
|
||||
|
||||
transform = GST_OPENCV_BASE_TRANSFORM (trans);
|
||||
fclass = GST_OPENCV_BASE_TRANSFORM_GET_CLASS (transform);
|
||||
transform = GST_OPENCV_VIDEO_FILTER (trans);
|
||||
fclass = GST_OPENCV_VIDEO_FILTER_GET_CLASS (transform);
|
||||
|
||||
g_return_val_if_fail (fclass->cv_trans_ip_func != NULL, GST_FLOW_ERROR);
|
||||
g_return_val_if_fail (transform->cvImage != NULL, GST_FLOW_ERROR);
|
||||
|
||||
/* TODO this is not always needed and should be solved at BaseTransform
|
||||
* level */
|
||||
buffer = gst_buffer_make_writable (buffer);
|
||||
|
||||
transform->cvImage->imageData = (char *) GST_BUFFER_DATA (buffer);
|
||||
|
||||
|
||||
/* FIXME how to release buffer? */
|
||||
return fclass->cv_trans_ip_func (transform, buffer, transform->cvImage);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_opencv_base_transform_set_caps (GstBaseTransform * trans, GstCaps * incaps,
|
||||
gst_opencv_video_filter_set_caps (GstBaseTransform * trans, GstCaps * incaps,
|
||||
GstCaps * outcaps)
|
||||
{
|
||||
GstOpencvBaseTransform *transform = GST_OPENCV_BASE_TRANSFORM (trans);
|
||||
GstOpencvBaseTransformClass *klass =
|
||||
GST_OPENCV_BASE_TRANSFORM_GET_CLASS (transform);
|
||||
GstOpencvVideoFilter *transform = GST_OPENCV_VIDEO_FILTER (trans);
|
||||
GstOpencvVideoFilterClass *klass =
|
||||
GST_OPENCV_VIDEO_FILTER_GET_CLASS (transform);
|
||||
gint in_width, in_height;
|
||||
gint in_depth, in_channels;
|
||||
gint out_width, out_height;
|
||||
|
@ -239,7 +237,7 @@ gst_opencv_base_transform_set_caps (GstBaseTransform * trans, GstCaps * incaps,
|
|||
}
|
||||
|
||||
if (klass->cv_set_caps) {
|
||||
if (!klass->cv_set_caps(transform, in_width, in_height, in_depth,
|
||||
if (!klass->cv_set_caps (transform, in_width, in_height, in_depth,
|
||||
in_channels, out_width, out_height, out_depth, out_channels))
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -262,27 +260,8 @@ gst_opencv_base_transform_set_caps (GstBaseTransform * trans, GstCaps * incaps,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_opencv_base_transform_get_unit_size (GstBaseTransform * trans,
|
||||
GstCaps * caps, guint * size)
|
||||
{
|
||||
gint width, height;
|
||||
gint bpp;
|
||||
GstStructure *structure;
|
||||
|
||||
structure = gst_caps_get_structure (caps, 0);
|
||||
|
||||
if (!gst_structure_get_int (structure, "width", &width) ||
|
||||
!gst_structure_get_int (structure, "height", &height) ||
|
||||
!gst_structure_get_int (structure, "bpp", &bpp)) {
|
||||
return FALSE;
|
||||
}
|
||||
*size = width * height * bpp / 8;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_opencv_base_transform_set_property (GObject * object, guint prop_id,
|
||||
gst_opencv_video_filter_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec)
|
||||
{
|
||||
switch (prop_id) {
|
||||
|
@ -293,7 +272,7 @@ gst_opencv_base_transform_set_property (GObject * object, guint prop_id,
|
|||
}
|
||||
|
||||
static void
|
||||
gst_opencv_base_transform_get_property (GObject * object, guint prop_id,
|
||||
gst_opencv_video_filter_get_property (GObject * object, guint prop_id,
|
||||
GValue * value, GParamSpec * pspec)
|
||||
{
|
||||
switch (prop_id) {
|
||||
|
@ -304,7 +283,7 @@ gst_opencv_base_transform_get_property (GObject * object, guint prop_id,
|
|||
}
|
||||
|
||||
void
|
||||
gst_opencv_base_transform_set_in_place (GstOpencvBaseTransform * transform,
|
||||
gst_opencv_video_filter_set_in_place (GstOpencvVideoFilter * transform,
|
||||
gboolean ip)
|
||||
{
|
||||
transform->in_place = ip;
|
|
@ -41,44 +41,45 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GST_OPENCV_BASE_TRANSFORM_H__
|
||||
#define __GST_OPENCV_BASE_TRANSFORM_H__
|
||||
#ifndef __GST_OPENCV_VIDEO_FILTER_H__
|
||||
#define __GST_OPENCV_VIDEO_FILTER_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include <gst/base/gstbasetransform.h>
|
||||
#include <gst/video/gstvideofilter.h>
|
||||
#include <cv.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
/* #defines don't like whitespacey bits */
|
||||
#define GST_TYPE_OPENCV_BASE_TRANSFORM \
|
||||
(gst_opencv_base_transform_get_type())
|
||||
#define GST_OPENCV_BASE_TRANSFORM(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OPENCV_BASE_TRANSFORM,GstOpencvBaseTransform))
|
||||
#define GST_OPENCV_BASE_TRANSFORM_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OPENCV_BASE_TRANSFORM,GstOpencvBaseTransformClass))
|
||||
#define GST_IS_OPENCV_BASE_TRANSFORM(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OPENCV_BASE_TRANSFORM))
|
||||
#define GST_IS_OPENCV_BASE_TRANSFORM_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OPENCV_BASE_TRANSFORM))
|
||||
#define GST_OPENCV_BASE_TRANSFORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GST_TYPE_OPENCV_BASE_TRANSFORM,GstOpencvBaseTransformClass))
|
||||
#define GST_TYPE_OPENCV_VIDEO_FILTER \
|
||||
(gst_opencv_video_filter_get_type())
|
||||
#define GST_OPENCV_VIDEO_FILTER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OPENCV_VIDEO_FILTER,GstOpencvVideoFilter))
|
||||
#define GST_OPENCV_VIDEO_FILTER_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OPENCV_VIDEO_FILTER,GstOpencvVideoFilterClass))
|
||||
#define GST_IS_OPENCV_VIDEO_FILTER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OPENCV_VIDEO_FILTER))
|
||||
#define GST_IS_OPENCV_VIDEO_FILTER_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OPENCV_VIDEO_FILTER))
|
||||
#define GST_OPENCV_VIDEO_FILTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GST_TYPE_OPENCV_VIDEO_FILTER,GstOpencvVideoFilterClass))
|
||||
#define GST_OPENCV_VIDEO_FILTER_CAST(obj) ((GstOpencvVideoFilter *) (obj))
|
||||
|
||||
typedef struct _GstOpencvBaseTransform GstOpencvBaseTransform;
|
||||
typedef struct _GstOpencvBaseTransformClass GstOpencvBaseTransformClass;
|
||||
typedef struct _GstOpencvVideoFilter GstOpencvVideoFilter;
|
||||
typedef struct _GstOpencvVideoFilterClass GstOpencvVideoFilterClass;
|
||||
|
||||
typedef GstFlowReturn (*GstOpencvBaseTransformTransformIPFunc)
|
||||
(GstOpencvBaseTransform * transform, GstBuffer * buffer, IplImage * img);
|
||||
typedef GstFlowReturn (*GstOpencvBaseTransformTransformFunc)
|
||||
(GstOpencvBaseTransform * transform, GstBuffer * buffer, IplImage * img,
|
||||
typedef GstFlowReturn (*GstOpencvVideoFilterTransformIPFunc)
|
||||
(GstOpencvVideoFilter * transform, GstBuffer * buffer, IplImage * img);
|
||||
typedef GstFlowReturn (*GstOpencvVideoFilterTransformFunc)
|
||||
(GstOpencvVideoFilter * transform, GstBuffer * buffer, IplImage * img,
|
||||
GstBuffer * outbuf, IplImage * outimg);
|
||||
|
||||
typedef gboolean (*GstOpencvBaseTransformSetCaps)
|
||||
(GstOpencvBaseTransform * transform, gint in_width, gint in_height,
|
||||
typedef gboolean (*GstOpencvVideoFilterSetCaps)
|
||||
(GstOpencvVideoFilter * transform, gint in_width, gint in_height,
|
||||
gint in_depth, gint in_channels, gint out_width, gint out_height,
|
||||
gint out_depth, gint out_channels);
|
||||
|
||||
struct _GstOpencvBaseTransform
|
||||
struct _GstOpencvVideoFilter
|
||||
{
|
||||
GstBaseTransform trans;
|
||||
GstVideoFilter trans;
|
||||
|
||||
gboolean in_place;
|
||||
|
||||
|
@ -86,20 +87,20 @@ struct _GstOpencvBaseTransform
|
|||
IplImage *out_cvImage;
|
||||
};
|
||||
|
||||
struct _GstOpencvBaseTransformClass
|
||||
struct _GstOpencvVideoFilterClass
|
||||
{
|
||||
GstBaseTransformClass parent_class;
|
||||
GstVideoFilterClass parent_class;
|
||||
|
||||
GstOpencvBaseTransformTransformFunc cv_trans_func;
|
||||
GstOpencvBaseTransformTransformIPFunc cv_trans_ip_func;
|
||||
GstOpencvVideoFilterTransformFunc cv_trans_func;
|
||||
GstOpencvVideoFilterTransformIPFunc cv_trans_ip_func;
|
||||
|
||||
GstOpencvBaseTransformSetCaps cv_set_caps;
|
||||
GstOpencvVideoFilterSetCaps cv_set_caps;
|
||||
};
|
||||
|
||||
GType gst_opencv_base_transform_get_type (void);
|
||||
GType gst_opencv_video_filter_get_type (void);
|
||||
|
||||
void gst_opencv_base_transform_set_in_place (GstOpencvBaseTransform * transform,
|
||||
void gst_opencv_video_filter_set_in_place (GstOpencvVideoFilter * transform,
|
||||
gboolean ip);
|
||||
|
||||
G_END_DECLS
|
||||
#endif /* __GST_OPENCV_BASE_TRANSFORM_H__ */
|
||||
#endif /* __GST_OPENCV_VIDEO_FILTER_H__ */
|
Loading…
Reference in a new issue