opencv: Refactor files structure

Remove internal folders and put all code inside the main plugin
folder. Also fixes some building warnings.
This commit is contained in:
Thiago Santos 2010-09-08 14:59:54 -03:00
parent cf86df2d00
commit 27fedbb352
35 changed files with 85 additions and 203 deletions

View file

@ -1,45 +1,45 @@
SUBDIRS = basicfilters edgedetect faceblur facedetect pyramidsegment templatematch textwrite
# plugindir is set in configure
plugin_LTLIBRARIES = libgstopencv.la
# sources used to compile this plug-in
libgstopencv_la_SOURCES = gstopencv.c gstopencvvideofilter.c gstopencvutils.c
libgstopencv_la_SOURCES = gstopencv.c \
gstopencvvideofilter.c \
gstopencvutils.c \
gstcvdilate.c \
gstcvdilateerode.c \
gstcvequalizehist.c \
gstcverode.c \
gstcvlaplace.c \
gstcvsmooth.c \
gstcvsobel.c \
gstedgedetect.c \
gstfaceblur.c \
gstfacedetect.c \
gstpyramidsegment.c \
gsttemplatematch.c \
gsttextwrite.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}/ext \
-I${top_srcdir}/ext/opencv/basicfilters \
-I${top_srcdir}/ext/opencv/edgedetect \
-I${top_srcdir}/ext/opencv/faceblur \
-I${top_srcdir}/ext/opencv/facedetect \
-I${top_srcdir}/ext/opencv/pyramidsegment \
-I${top_srcdir}/ext/opencv/templatematch \
-I${top_srcdir}/ext/opencv/textwrite
$(GST_PLUGINS_BASE_CFLAGS)
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 \
$(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)
libgstopencv_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstopencv_la_DEPENDENCIES = \
$(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
# headers we need but don't want installed
noinst_HEADERS = gstopencvvideofilter.h gstopencvutils.h
noinst_HEADERS = gstopencvvideofilter.h gstopencvutils.h \
gstcvdilateerode.h \
gstcvdilate.h \
gstcvequalizehist.h \
gstcverode.h \
gstcvlaplace.h \
gstcvsmooth.h \
gstcvsobel.h \
gstedgedetect.h \
gstfaceblur.h \
gstfacedetect.h \
gstpyramidsegment.h \
gsttemplatematch.h \
gsttextwrite.h

View file

@ -1,28 +0,0 @@
noinst_LTLIBRARIES = libgstbasicfilters.la
# sources used to compile this plug-in
libgstbasicfilters_la_SOURCES = gstcvsmooth.c \
gstcvdilateerode.c \
gstcvdilate.c \
gstcvequalizehist.c \
gstcvlaplace.c \
gstcverode.c \
gstcvsobel.c
# flags used to compile this pyramidsegment
# add other _CFLAGS and _LIBS as needed
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
noinst_HEADERS = gstcvsmooth.h \
gstcvdilateerode.h \
gstcvdilate.h \
gstcvequalizehist.h \
gstcverode.h \
gstcvlaplace.h \
gstcvsobel.h

View file

@ -1,15 +0,0 @@
# plugindir is set in configure
noinst_LTLIBRARIES = libgstedgedetect.la
# sources used to compile this plug-in
libgstedgedetect_la_SOURCES = gstedgedetect.c
# flags used to compile this edgedetect
# add other _CFLAGS and _LIBS as needed
libgstedgedetect_la_CFLAGS = $(GST_CFLAGS) $(OPENCV_CFLAGS)
libgstedgedetect_la_LIBADD = $(GST_LIBS) $(OPENCV_LIBS)
libgstedgedetect_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
# headers we need but don't want installed
noinst_HEADERS = gstedgedetect.h

View file

@ -1,15 +0,0 @@
# plugindir is set in configure
noinst_LTLIBRARIES = libgstfaceblur.la
# sources used to compile this plug-in
libgstfaceblur_la_SOURCES = gstfaceblur.c
# flags used to compile this faceblur
# add other _CFLAGS and _LIBS as needed
libgstfaceblur_la_CFLAGS = $(GST_CFLAGS) $(OPENCV_CFLAGS)
libgstfaceblur_la_LIBADD = $(GST_LIBS) $(OPENCV_LIBS)
libgstfaceblur_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
# headers we need but don't want installed
noinst_HEADERS = gstfaceblur.h

View file

@ -1,17 +0,0 @@
# plugindir is set in configure
noinst_LTLIBRARIES = libgstfacedetect.la
# sources used to compile this plug-in
libgstfacedetect_la_SOURCES = gstfacedetect.c
# flags used to compile this facedetect
# add other _CFLAGS and _LIBS as needed
libgstfacedetect_la_CFLAGS = $(GST_CFLAGS) $(OPENCV_CFLAGS) \
$(GSTPB_BASE_CFLAGS) -I..
libgstfacedetect_la_LIBADD = $(GST_LIBS) $(OPENCV_LIBS) $(GSTPB_BASE_LIBS) \
-lgstvideo-$(GST_MAJORMINOR)
libgstfacedetect_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
# headers we need but don't want installed
noinst_HEADERS = gstfacedetect.h

View file

@ -119,8 +119,7 @@ gst_cv_dilate_erode_get_type (void)
};
_type = g_type_register_static (GST_TYPE_OPENCV_VIDEO_FILTER,
"GstCvDilateErode", &opencv_dilate_erode_info,
G_TYPE_FLAG_ABSTRACT);
"GstCvDilateErode", &opencv_dilate_erode_info, G_TYPE_FLAG_ABSTRACT);
/*
GST_DEBUG_CATEGORY_INIT (gst_cv_dilate_erode_debug, "cvdilateerode", 0,
"cvdilateerode");

View file

@ -65,9 +65,9 @@ static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
GST_BOILERPLATE (GstCvEqualizeHist, gst_cv_equalize_hist,
GstOpencvVideoFilter, GST_TYPE_OPENCV_VIDEO_FILTER);
static GstFlowReturn gst_cv_equalize_hist_transform (
GstOpencvVideoFilter * filter, GstBuffer * buf, IplImage * img,
GstBuffer * outbuf, IplImage * outimg);
static GstFlowReturn gst_cv_equalize_hist_transform (GstOpencvVideoFilter *
filter, GstBuffer * buf, IplImage * img, GstBuffer * outbuf,
IplImage * outimg);
/* Clean up */
static void

View file

@ -118,7 +118,7 @@ gst_faceblur_finalize (GObject * obj)
cvReleaseImage (&filter->cvImage);
cvReleaseImage (&filter->cvGray);
}
g_free (filter->profile);
G_OBJECT_CLASS (parent_class)->finalize (obj);

View file

@ -106,7 +106,7 @@ static void gst_facedetect_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
static gboolean gst_facedetect_set_caps (GstOpencvVideoFilter * transform,
gint in_width, gint in_height, gint in_depth, gint in_channels,
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_facedetect_transform_ip (GstOpencvVideoFilter * base,
GstBuffer * buf, IplImage * img);
@ -188,7 +188,7 @@ gst_facedetect_class_init (GstfacedetectClass * klass)
static void
gst_facedetect_init (Gstfacedetect * filter, GstfacedetectClass * gclass)
{
filter->profile = g_strdup(DEFAULT_PROFILE);
filter->profile = g_strdup (DEFAULT_PROFILE);
filter->display = TRUE;
gst_facedetect_load_profile (filter);

View file

@ -21,7 +21,7 @@
#include "gstopencvutils.h"
gboolean
static gboolean
gst_opencv_get_ipl_depth_and_channels (GstStructure * structure,
gint * ipldepth, gint * channels, GError ** err)
{

View file

@ -329,18 +329,20 @@ gst_templatematch_chain (GstPad * pad, GstBuffer * buf)
}
}
if (filter->cvTemplateImage) {
GstStructure *s;
GstMessage *m;
gst_templatematch_match (filter->cvImage, filter->cvTemplateImage,
filter->cvDistImage, &best_res, &best_pos, filter->method);
GstStructure *s = gst_structure_new ("template_match",
s = gst_structure_new ("template_match",
"x", G_TYPE_UINT, best_pos.x,
"y", G_TYPE_UINT, best_pos.y,
"width", G_TYPE_UINT, filter->cvTemplateImage->width,
"height", G_TYPE_UINT, filter->cvTemplateImage->height,
"result", G_TYPE_DOUBLE, best_res,
NULL);
"result", G_TYPE_DOUBLE, best_res, NULL);
GstMessage *m = gst_message_new_element (GST_OBJECT (filter), s);
m = gst_message_new_element (GST_OBJECT (filter), s);
gst_element_post_message (GST_ELEMENT (filter), m);
if (filter->display) {

View file

@ -113,7 +113,7 @@ static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
GST_STATIC_CAPS ("ANY")
);
GST_BOILERPLATE (Gsttextwrite, gst_textwrite, GstElement,GST_TYPE_ELEMENT);
GST_BOILERPLATE (Gsttextwrite, gst_textwrite, GstElement, GST_TYPE_ELEMENT);
static void gst_textwrite_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
@ -147,11 +147,10 @@ gst_textwrite_base_init (gpointer gclass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
gst_element_class_set_details_simple(element_class,
"textwrite",
"Filter/Effect/Video",
"Performs text writing to the video",
"sreerenj<bsreerenj@gmail.com>");
gst_element_class_set_details_simple (element_class,
"textwrite",
"Filter/Effect/Video",
"Performs text writing to the video", "sreerenj<bsreerenj@gmail.com>");
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_factory));
@ -176,12 +175,12 @@ gst_textwrite_class_init (GsttextwriteClass * klass)
gobject_class->get_property = gst_textwrite_get_property;
g_object_class_install_property (gobject_class, PROP_TEXT,
g_object_class_install_property (gobject_class, PROP_TEXT,
g_param_spec_string ("text", "text",
"Text to be display.", DEFAULT_PROP_TEXT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_XPOS,
g_object_class_install_property (gobject_class, PROP_XPOS,
g_param_spec_int ("xpos", "horizontal position",
"Sets the Horizontal position", 0, G_MAXINT,
DEFAULT_PROP_XPOS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
@ -191,22 +190,22 @@ gst_textwrite_class_init (GsttextwriteClass * klass)
"Sets the Vertical position", 0, G_MAXINT,
DEFAULT_PROP_YPOS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_THICKNESS,
g_object_class_install_property (gobject_class, PROP_THICKNESS,
g_param_spec_int ("thickness", "font thickness",
"Sets the Thickness of Font", 0, G_MAXINT,
DEFAULT_PROP_THICKNESS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_COLOR_R,
g_object_class_install_property (gobject_class, PROP_COLOR_R,
g_param_spec_int ("colorR", "color -Red ",
"Sets the color -R", 0, 255,
DEFAULT_PROP_COLOR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_COLOR_G,
g_object_class_install_property (gobject_class, PROP_COLOR_G,
g_param_spec_int ("colorG", "color -Green",
"Sets the color -G", 0, 255,
DEFAULT_PROP_COLOR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_COLOR_B,
g_object_class_install_property (gobject_class, PROP_COLOR_B,
g_param_spec_int ("colorB", "color -Blue",
"Sets the color -B", 0, 255,
DEFAULT_PROP_COLOR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
@ -215,14 +214,14 @@ gst_textwrite_class_init (GsttextwriteClass * klass)
g_object_class_install_property (gobject_class, PROP_HEIGHT,
g_param_spec_double ("height", "Height",
"Sets the height of fonts",1.0,5.0,
DEFAULT_HEIGHT, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
"Sets the height of fonts", 1.0, 5.0,
DEFAULT_HEIGHT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_WIDTH,
g_param_spec_double ("width", "Width",
"Sets the width of fonts",1.0,5.0,
DEFAULT_WIDTH, G_PARAM_READWRITE| G_PARAM_STATIC_STRINGS));
"Sets the width of fonts", 1.0, 5.0,
DEFAULT_WIDTH, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
/* initialize the new element
@ -231,24 +230,23 @@ gst_textwrite_class_init (GsttextwriteClass * klass)
* initialize instance structure
*/
static void
gst_textwrite_init (Gsttextwrite * filter,
GsttextwriteClass * gclass)
gst_textwrite_init (Gsttextwrite * filter, GsttextwriteClass * gclass)
{
filter->sinkpad = gst_pad_new_from_static_template (&sink_factory, "sink");
gst_pad_set_setcaps_function (filter->sinkpad,
GST_DEBUG_FUNCPTR(gst_textwrite_set_caps));
GST_DEBUG_FUNCPTR (gst_textwrite_set_caps));
gst_pad_set_getcaps_function (filter->sinkpad,
GST_DEBUG_FUNCPTR(gst_pad_proxy_getcaps));
GST_DEBUG_FUNCPTR (gst_pad_proxy_getcaps));
gst_pad_set_chain_function (filter->sinkpad,
GST_DEBUG_FUNCPTR(gst_textwrite_chain));
GST_DEBUG_FUNCPTR (gst_textwrite_chain));
filter->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
gst_pad_set_getcaps_function (filter->srcpad,
GST_DEBUG_FUNCPTR(gst_pad_proxy_getcaps));
GST_DEBUG_FUNCPTR (gst_pad_proxy_getcaps));
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
filter->textbuf = g_strdup (DEFAULT_PROP_TEXT);
filter->textbuf = g_strdup (DEFAULT_PROP_TEXT);
filter->width = DEFAULT_PROP_WIDTH;
filter->height = DEFAULT_PROP_HEIGHT;
filter->xpos = DEFAULT_PROP_XPOS;
@ -272,30 +270,30 @@ gst_textwrite_set_property (GObject * object, guint prop_id,
filter->textbuf = g_value_dup_string (value);
break;
case PROP_XPOS:
filter->xpos = g_value_get_int(value);
filter->xpos = g_value_get_int (value);
break;
case PROP_YPOS:
filter->ypos = g_value_get_int(value);
filter->ypos = g_value_get_int (value);
break;
case PROP_THICKNESS:
filter->thickness = g_value_get_int(value);
filter->thickness = g_value_get_int (value);
break;
case PROP_COLOR_R:
filter->colorR = g_value_get_int(value);
filter->colorR = g_value_get_int (value);
break;
case PROP_COLOR_G:
filter->colorG = g_value_get_int(value);
filter->colorG = g_value_get_int (value);
break;
case PROP_COLOR_B:
filter->colorB = g_value_get_int(value);
filter->colorB = g_value_get_int (value);
break;
case PROP_HEIGHT:
filter->height = g_value_get_double(value);
filter->height = g_value_get_double (value);
break;
case PROP_WIDTH:
filter->width = g_value_get_double(value);
filter->width = g_value_get_double (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -351,12 +349,12 @@ gst_textwrite_set_caps (GstPad * pad, GstCaps * caps)
{
Gsttextwrite *filter;
GstPad *otherpad;
gint width, height;
GstStructure *structure;
filter = GST_textwrite (gst_pad_get_parent (pad));
structure = gst_caps_get_structure (caps, 0);
gst_structure_get_int (structure, "width", &width);
gst_structure_get_int (structure, "height", &height);
@ -381,11 +379,14 @@ gst_textwrite_chain (GstPad * pad, GstBuffer * buf)
filter = GST_textwrite (GST_OBJECT_PARENT (pad));
filter->cvImage->imageData = (char *) GST_BUFFER_DATA (buf);
cvInitFont(&(filter->font),CV_FONT_VECTOR0, filter->width,filter->height,0,filter->thickness,0);
cvInitFont (&(filter->font), CV_FONT_VECTOR0, filter->width, filter->height,
0, filter->thickness, 0);
buf = gst_buffer_make_writable (buf);
cvPutText (filter->cvImage,filter->textbuf,cvPoint(filter->xpos,filter->ypos), &(filter->font), cvScalar(filter->colorR,filter->colorG,filter->colorB,0));
cvPutText (filter->cvImage, filter->textbuf, cvPoint (filter->xpos,
filter->ypos), &(filter->font), cvScalar (filter->colorR,
filter->colorG, filter->colorB, 0));
return gst_pad_push (filter->srcpad, buf);
}
@ -408,5 +409,3 @@ gst_textwrite_plugin_init (GstPlugin * plugin)
return gst_element_register (plugin, "textwrite", GST_RANK_NONE,
GST_TYPE_textwrite);
}

View file

@ -1,13 +0,0 @@
noinst_LTLIBRARIES = libgstpyramidsegment.la
# sources used to compile this plug-in
libgstpyramidsegment_la_SOURCES = gstpyramidsegment.c
# flags used to compile this pyramidsegment
# add other _CFLAGS and _LIBS as needed
libgstpyramidsegment_la_CFLAGS = $(GST_CFLAGS) $(OPENCV_CFLAGS)
libgstpyramidsegment_la_LIBADD = $(GST_LIBS) $(OPENCV_LIBS)
libgstpyramidsegment_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
# headers we need but don't want installed
noinst_HEADERS = gstpyramidsegment.h

View file

@ -1,15 +0,0 @@
# plugindir is set in configure
noinst_LTLIBRARIES = libgsttemplatematch.la
# sources used to compile this plug-in
libgsttemplatematch_la_SOURCES = gsttemplatematch.c
# flags used to compile this templatematch
# add other _CFLAGS and _LIBS as needed
libgsttemplatematch_la_CFLAGS = $(GST_CFLAGS) $(OPENCV_CFLAGS)
libgsttemplatematch_la_LIBADD = $(GST_LIBS) $(OPENCV_LIBS)
libgsttemplatematch_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
# headers we need but don't want installed
noinst_HEADERS = gsttemplatematch.h

View file

@ -1,15 +0,0 @@
# plugindir is set in configure
noinst_LTLIBRARIES = libgsttextwrite.la
# sources used to compile this plug-in
libgsttextwrite_la_SOURCES = gsttextwrite.c
# flags used to compile this textwrite
# add other _CFLAGS and _LIBS as needed
libgsttextwrite_la_CFLAGS = $(GST_CFLAGS) $(OPENCV_CFLAGS)
libgsttextwrite_la_LIBADD = $(GST_LIBS) $(OPENCV_LIBS)
libgsttextwrite_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
# headers we need but don't want installed
noinst_HEADERS = gsttextwrite.h