opencvbasetrans: Use GstVideoFilter as the base class
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>
Fri, 3 Sep 2010 23:27:31 +0000 (20:27 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>
Wed, 8 Sep 2010 20:15:50 +0000 (17:15 -0300)
Port from GstBaseTransform to GstVideoFilter as the base class.

16 files changed:
ext/opencv/Makefile.am
ext/opencv/basicfilters/Makefile.am
ext/opencv/basicfilters/gstcvdilate.c
ext/opencv/basicfilters/gstcvdilateerode.c
ext/opencv/basicfilters/gstcvdilateerode.h
ext/opencv/basicfilters/gstcvequalizehist.c
ext/opencv/basicfilters/gstcvequalizehist.h
ext/opencv/basicfilters/gstcverode.c
ext/opencv/basicfilters/gstcvlaplace.c
ext/opencv/basicfilters/gstcvlaplace.h
ext/opencv/basicfilters/gstcvsmooth.c
ext/opencv/basicfilters/gstcvsmooth.h
ext/opencv/basicfilters/gstcvsobel.c
ext/opencv/basicfilters/gstcvsobel.h
ext/opencv/gstopencvvideofilter.c [moved from ext/opencv/gstopencvbasetrans.c with 63% similarity]
ext/opencv/gstopencvvideofilter.h [moved from ext/opencv/gstopencvbasetrans.h with 57% similarity]

index 7b5fa9c..0d226c3 100644 (file)
@@ -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,13 +21,14 @@ 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) \
-                                                                $(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)
 
@@ -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
index 45a5dc4..52a0ba9 100644 (file)
@@ -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
index 6170fcd..e03627b 100644 (file)
@@ -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);
index 4f99ea9..2275d2a 100644 (file)
@@ -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);
 
index 4db07d7..26190b5 100644 (file)
@@ -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);
index f891e5e..553734a 100644 (file)
@@ -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);
index fe22981..74a3aab 100644 (file)
@@ -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);
index 5478af4..2a0cb36 100644 (file)
@@ -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);
index 31cb4da..f528428 100644 (file)
@@ -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);
index 74fe3d7..4fcc104 100644 (file)
@@ -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);
index d4228f1..46d880d 100644 (file)
@@ -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);
index 448b4b0..b8608ee 100644 (file)
@@ -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);
index dcbf01b..eaeeeb8 100644 (file)
@@ -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);
index d9effd6..65fe65a 100644 (file)
@@ -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);
similarity index 63%
rename from ext/opencv/gstopencvbasetrans.c
rename to ext/opencv/gstopencvvideofilter.c
index f47a5dd..ed70656 100644 (file)
 
 #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;
-
-  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);
@@ -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;
similarity index 57%
rename from ext/opencv/gstopencvbasetrans.h
rename to ext/opencv/gstopencvvideofilter.h
index 5ab3ddb..0222a30 100644 (file)
  * 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__ */