Port from GstBaseTransform to GstVideoFilter as the base class.
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 \
-I${top_srcdir}/ext/opencv/textwrite
libgstopencv_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) $(OPENCV_LIBS) \
- $(top_builddir)/ext/opencv/basicfilters/libgstbasicfilters.la \
- $(top_builddir)/ext/opencv/edgedetect/libgstedgedetect.la \
- $(top_builddir)/ext/opencv/faceblur/libgstfaceblur.la \
- $(top_builddir)/ext/opencv/facedetect/libgstfacedetect.la \
- $(top_builddir)/ext/opencv/pyramidsegment/libgstpyramidsegment.la \
- $(top_builddir)/ext/opencv/templatematch/libgsttemplatematch.la \
- $(top_builddir)/ext/opencv/textwrite/libgsttextwrite.la
+ $(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 \
+ $(top_builddir)/ext/opencv/facedetect/libgstfacedetect.la \
+ $(top_builddir)/ext/opencv/pyramidsegment/libgstpyramidsegment.la \
+ $(top_builddir)/ext/opencv/templatematch/libgsttemplatematch.la \
+ $(top_builddir)/ext/opencv/textwrite/libgsttextwrite.la
libgstopencv_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
$(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
# 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
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 */
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);
}
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);
}
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);
(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);
/*
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);
#include <gst/gst.h>
#include <cv.h>
-#include <gstopencvbasetrans.h>
+#include <gstopencvvideofilter.h>
G_BEGIN_DECLS
struct _GstCvDilateErode
{
- GstOpencvBaseTransform element;
+ GstOpencvVideoFilter element;
gint iterations;
};
struct _GstCvDilateErodeClass
{
- GstOpencvBaseTransformClass parent_class;
+ GstOpencvVideoFilterClass parent_class;
};
GType gst_cv_dilate_erode_get_type (void);
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 */
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);
}
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);
#include <gst/gst.h>
#include <cv.h>
-#include <gstopencvbasetrans.h>
+#include <gstopencvvideofilter.h>
G_BEGIN_DECLS
struct _GstCvEqualizeHist
{
- GstOpencvBaseTransform element;
+ GstOpencvVideoFilter element;
};
struct _GstCvEqualizeHistClass
{
- GstOpencvBaseTransformClass parent_class;
+ GstOpencvVideoFilterClass parent_class;
};
GType gst_cv_equalize_hist_get_type (void);
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 */
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);
}
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);
}
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);
#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);
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);
{
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);
}
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)
{
}
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);
#include <gst/gst.h>
#include <cv.h>
-#include <gstopencvbasetrans.h>
+#include <gstopencvvideofilter.h>
G_BEGIN_DECLS
struct _GstCvLaplace
{
- GstOpencvBaseTransform element;
+ GstOpencvVideoFilter element;
gint aperture_size;
struct _GstCvLaplaceClass
{
- GstOpencvBaseTransformClass parent_class;
+ GstOpencvVideoFilterClass parent_class;
};
GType gst_cv_laplace_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 */
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);
}
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);
}
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);
#include <gst/gst.h>
#include <cv.h>
-#include <gstopencvbasetrans.h>
+#include <gstopencvvideofilter.h>
G_BEGIN_DECLS
struct _GstCvSmooth
{
- GstOpencvBaseTransform element;
+ GstOpencvVideoFilter element;
gint type;
struct _GstCvSmoothClass
{
- GstOpencvBaseTransformClass parent_class;
+ GstOpencvVideoFilterClass parent_class;
};
GType gst_cv_smooth_get_type (void);
#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);
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 */
{
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);
}
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);
#include <gst/gst.h>
#include <cv.h>
-#include <gstopencvbasetrans.h>
+#include <gstopencvvideofilter.h>
G_BEGIN_DECLS
struct _GstCvSobel
{
- GstOpencvBaseTransform element;
+ GstOpencvVideoFilter element;
gint x_order;
gint y_order;
struct _GstCvSobelClass
{
- GstOpencvBaseTransformClass parent_class;
+ GstOpencvVideoFilterClass parent_class;
};
GType gst_cv_sobel_get_type (void);
#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
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);
}
/* 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);
/* 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;
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;
-
- 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;
+ 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_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);
}
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;
}
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;
}
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) {
}
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) {
}
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;
* 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;
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__ */