#endif
/*#define DEBUG_ENABLED */
-#include <gstvideoflip.h>
+#include "gstvideoflip.h"
#include <string.h>
/* GstVideoflip signals and args */
/* FILL ME */
};
+GST_DEBUG_CATEGORY_STATIC (gst_videoflip_debug);
+#define GST_CAT_DEFAULT gst_videoflip_debug
+
static void gst_videoflip_base_init (gpointer g_class);
static void gst_videoflip_class_init (gpointer g_class, gpointer class_data);
static void gst_videoflip_init (GTypeInstance * instance, gpointer g_class);
{
static GType videoflip_method_type = 0;
static GEnumValue videoflip_methods[] = {
- {GST_VIDEOFLIP_METHOD_IDENTITY, "0", "Identity (no rotation)"},
- {GST_VIDEOFLIP_METHOD_90R, "1", "Rotate clockwise 90 degrees"},
- {GST_VIDEOFLIP_METHOD_180, "2", "Rotate 180 degrees"},
- {GST_VIDEOFLIP_METHOD_90L, "3", "Rotate counter-clockwise 90 degrees"},
- {GST_VIDEOFLIP_METHOD_HORIZ, "4", "Flip horizontally"},
- {GST_VIDEOFLIP_METHOD_VERT, "5", "Flip vertically"},
- {GST_VIDEOFLIP_METHOD_TRANS, "6",
- "Flip across upper left/lower right diagonal"},
- {GST_VIDEOFLIP_METHOD_OTHER, "7",
- "Flip across upper right/lower left diagonal"},
+ {GST_VIDEOFLIP_METHOD_IDENTITY, "Identity (no rotation)", "none"},
+ {GST_VIDEOFLIP_METHOD_90R, "Rotate clockwise 90 degrees", "clockwise"},
+ {GST_VIDEOFLIP_METHOD_180, "Rotate 180 degrees", "rotate-180"},
+ {GST_VIDEOFLIP_METHOD_90L, "Rotate counter-clockwise 90 degrees",
+ "counterclockwise"},
+ {GST_VIDEOFLIP_METHOD_HORIZ, "Flip horizontally", "horizontal-flip"},
+ {GST_VIDEOFLIP_METHOD_VERT, "Flip vertically", "vertical-flip"},
+ {GST_VIDEOFLIP_METHOD_TRANS,
+ "Flip across upper left/lower right diagonal", "upper-left-diagonal"},
+ {GST_VIDEOFLIP_METHOD_OTHER,
+ "Flip across upper right/lower left diagonal", "upper-right-diagonal"},
{0, NULL, NULL},
};
gobject_class = G_OBJECT_CLASS (g_class);
videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
+ gobject_class->set_property = gst_videoflip_set_property;
+ gobject_class->get_property = gst_videoflip_get_property;
+
g_object_class_install_property (gobject_class, ARG_METHOD,
g_param_spec_enum ("method", "method", "method",
GST_TYPE_VIDEOFLIP_METHOD, GST_VIDEOFLIP_METHOD_90R,
G_PARAM_READWRITE));
- gobject_class->set_property = gst_videoflip_set_property;
- gobject_class->get_property = gst_videoflip_get_property;
-
videofilter_class->setup = gst_videoflip_setup;
}
GstVideoflip *videoflip = GST_VIDEOFLIP (instance);
GstVideofilter *videofilter;
- GST_DEBUG ("gst_videoflip_init");
+ GST_DEBUG_OBJECT (videoflip, "gst_videoflip_init");
videofilter = GST_VIDEOFILTER (videoflip);
gst_videoflip_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
- GstVideoflip *src;
+ GstVideoflip *videoflip;
+ GstVideofilter *videofilter;
- /* it's not null if we got it, but it might not be ours */
g_return_if_fail (GST_IS_VIDEOFLIP (object));
- src = GST_VIDEOFLIP (object);
+ videoflip = GST_VIDEOFLIP (object);
+ videofilter = GST_VIDEOFILTER (object);
- GST_DEBUG ("gst_videoflip_set_property");
+ GST_DEBUG_OBJECT (videoflip, "gst_videoflip_set_property");
switch (prop_id) {
case ARG_METHOD:
- src->method = g_value_get_enum (value);
- /* FIXME is this ok? (threading issues) */
- gst_videoflip_setup (GST_VIDEOFILTER (src));
+ videoflip->method = g_value_get_enum (value);
+ if (videofilter->inited) {
+ GST_DEBUG_OBJECT (videoflip, "setting up videoflip again");
+ gst_videofilter_setup (videofilter);
+ }
break;
default:
break;
gst_videoflip_get_property (GObject * object, guint prop_id, GValue * value,
GParamSpec * pspec)
{
- GstVideoflip *src;
+ GstVideoflip *videoflip;
- /* it's not null if we got it, but it might not be ours */
g_return_if_fail (GST_IS_VIDEOFLIP (object));
- src = GST_VIDEOFLIP (object);
+ videoflip = GST_VIDEOFLIP (object);
switch (prop_id) {
case ARG_METHOD:
- g_value_set_enum (value, src->method);
+ g_value_set_enum (value, videoflip->method);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
static gboolean
plugin_init (GstPlugin * plugin)
{
- if (!gst_library_load ("gstvideofilter"))
- return FALSE;
+ GST_DEBUG_CATEGORY_INIT (gst_videoflip_debug, "videoflip", 0, "videoflip");
return gst_element_register (plugin, "videoflip", GST_RANK_NONE,
GST_TYPE_VIDEOFLIP);
GST_VERSION_MINOR,
"videoflip",
"Flips and rotates video",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
- static void gst_videoflip_flip (GstVideoflip * videoflip,
+static void gst_videoflip_flip (GstVideoflip * videoflip,
unsigned char *dest, unsigned char *src, int sw, int sh, int dw, int dh);
- static void gst_videoflip_setup (GstVideofilter * videofilter)
+static void
+gst_videoflip_setup (GstVideofilter * videofilter)
{
int from_width, from_height;
GstVideoflip *videoflip;
- GST_DEBUG ("gst_videoflip_setup");
-
videoflip = GST_VIDEOFLIP (videofilter);
+ GST_DEBUG_OBJECT (videoflip, "gst_videoflip_setup");
from_width = gst_videofilter_get_input_width (videofilter);
from_height = gst_videofilter_get_input_height (videofilter);
break;
}
- GST_DEBUG ("format=%p \"%s\" from %dx%d to %dx%d",
+ GST_DEBUG_OBJECT (videoflip, "format=%p \"%s\" from %dx%d to %dx%d",
videofilter->format, videofilter->format->fourcc,
from_width, from_height, videofilter->to_width, videofilter->to_height);
if (videoflip->method == GST_VIDEOFLIP_METHOD_IDENTITY) {
- GST_DEBUG ("videoflip: using passthru");
+ GST_DEBUG_OBJECT (videoflip, "videoflip: using passthru");
videofilter->passthru = TRUE;
} else {
videofilter->passthru = FALSE;
}
-
- videofilter->from_buf_size =
- (videofilter->from_width * videofilter->from_height *
- videofilter->format->depth) / 8;
- videofilter->to_buf_size =
- (videofilter->to_width * videofilter->to_height *
- videofilter->format->depth) / 8;
-
- videofilter->inited = TRUE;
}
static void
dw = videofilter->to_width;
dh = videofilter->to_height;
- GST_DEBUG ("videoflip: scaling planar 4:1:1 %dx%d to %dx%d", sw, sh, dw, dh);
+ GST_LOG_OBJECT (videoflip, "videoflip: scaling planar 4:1:1 %dx%d to %dx%d",
+ sw, sh, dw, dh);
gst_videoflip_flip (videoflip, dest, src, sw, sh, dw, dh);