diff options
Diffstat (limited to 'media-plugins/gst-plugins-v4l2/files/gst-0.10.27-0003-v4l2sink-Add-flip-property.patch')
-rw-r--r-- | media-plugins/gst-plugins-v4l2/files/gst-0.10.27-0003-v4l2sink-Add-flip-property.patch | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/media-plugins/gst-plugins-v4l2/files/gst-0.10.27-0003-v4l2sink-Add-flip-property.patch b/media-plugins/gst-plugins-v4l2/files/gst-0.10.27-0003-v4l2sink-Add-flip-property.patch deleted file mode 100644 index 9bdfa51..0000000 --- a/media-plugins/gst-plugins-v4l2/files/gst-0.10.27-0003-v4l2sink-Add-flip-property.patch +++ /dev/null @@ -1,187 +0,0 @@ -From 1381c64fd606d8ab7169eef52386139a4848c439 Mon Sep 17 00:00:00 2001 -From: Kiran Nataraju <knataraju@ti.com> -Date: Tue, 21 Sep 2010 06:21:23 +0200 -Subject: [PATCH 03/11] v4l2sink: Add flip property. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Kiran Nataraju <knataraju@ti.com> -Signed-off-by: Daniel Díaz <yosoy@danieldiaz.org> ---- - sys/v4l2/gstv4l2sink.c | 88 +++++++++++++++++++++++++++++++++++++++++++++-- - sys/v4l2/gstv4l2sink.h | 1 + - 2 files changed, 85 insertions(+), 4 deletions(-) - -diff --git a/sys/v4l2/gstv4l2sink.c b/sys/v4l2/gstv4l2sink.c -index 5abf915..6163747 100644 ---- a/sys/v4l2/gstv4l2sink.c -+++ b/sys/v4l2/gstv4l2sink.c -@@ -91,6 +91,7 @@ enum - PROP_CROP_WIDTH, - PROP_CROP_HEIGHT, - PROP_ROTATION, -+ PROP_FLIP, - }; - - -@@ -129,6 +130,34 @@ gst_v4l2sink_iface_supported (GstImplementsInterface * iface, GType iface_type) - return TRUE; - } - -+/* -+ * Flip state -+ */ -+enum -+{ -+ FLIP_NONE = 0, -+ FLIP_HORIZONTAL = 1, -+ FLIP_VERTICAL = 2, -+}; -+ -+#define GST_TYPE_V4L2_FLIP (gst_v4l2_flip_get_type ()) -+static GType -+gst_v4l2_flip_get_type (void) -+{ -+ static GType type = 0; -+ -+ if (!type) { -+ static GEnumValue vals[] = { -+ {FLIP_NONE, "No Flip", "none"}, -+ {FLIP_HORIZONTAL, "Horizontal Flip", "horiz"}, -+ {FLIP_VERTICAL, "Vertical Flip", "vert"}, -+ {0, NULL, NULL}, -+ }; -+ type = g_enum_register_static ("GstV4l2SinkFlip", vals); -+ } -+ return type; -+} -+ - static void - gst_v4l2sink_interface_init (GstImplementsInterfaceClass * klass) - { -@@ -225,7 +254,7 @@ static GstFlowReturn gst_v4l2sink_buffer_alloc (GstBaseSink * bsink, - guint64 offset, guint size, GstCaps * caps, GstBuffer ** buf); - static GstFlowReturn gst_v4l2sink_show_frame (GstBaseSink * bsink, - GstBuffer * buf); --static void gst_v4l2sink_set_rotation (GstV4l2Sink * v4l2sink); -+static void gst_v4l2sink_sync_rotation (GstV4l2Sink * v4l2sink); - - static void - gst_v4l2sink_base_init (gpointer g_class) -@@ -317,6 +346,11 @@ gst_v4l2sink_class_init (GstV4l2SinkClass * klass) - "Rotation angle for the image", MIN_ROTATION_ANGLE, - MAX_ROTATION_ANGLE, DEFAULT_ROTATION_ANGLE, G_PARAM_READWRITE)); - -+ g_object_class_install_property (gobject_class, PROP_FLIP, -+ g_param_spec_enum ("flip", "Flip State", -+ "Flip horizontal/vertical", -+ GST_TYPE_V4L2_FLIP, FLIP_NONE, G_PARAM_READWRITE)); -+ - basesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_v4l2sink_get_caps); - basesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_v4l2sink_set_caps); - basesink_class->buffer_alloc = GST_DEBUG_FUNCPTR (gst_v4l2sink_buffer_alloc); -@@ -348,8 +382,46 @@ gst_v4l2sink_init (GstV4l2Sink * v4l2sink, GstV4l2SinkClass * klass) - v4l2sink->crop_fields_set = 0; - v4l2sink->state = 0; - v4l2sink->rotation = 0; -+ v4l2sink->flip = FLIP_NONE; - } - -+static void -+gst_v4l2sink_sync_flip (GstV4l2Sink * v4l2sink) -+{ -+ if (GST_V4L2_IS_OPEN (v4l2sink->v4l2object)) { -+ struct v4l2_control control; -+ gint fd = v4l2sink->v4l2object->video_fd; -+ -+ memset (&control, 0x00, sizeof (struct v4l2_control)); -+ -+ switch (v4l2sink->flip) { -+ case FLIP_VERTICAL: -+ v4l2sink->rotation = 0; -+ control.value = 1; -+ break; -+ case FLIP_HORIZONTAL: -+ /* Horizontal Flip = Vertical Flip + 180 rotation */ -+ v4l2sink->rotation = 180; -+ control.value = 1; -+ break; -+ case FLIP_NONE: -+ /* In the below switch case logic we need to handle FLIP_NONE -+ * case since the v4l2 driver holds on to the last configured -+ * flip value even after the device file is closed. -+ */ -+ control.value = 0; -+ break; -+ default: -+ GST_WARNING_OBJECT (v4l2sink, "Invalid flip property"); -+ control.value = 0; -+ break; -+ } -+ -+ gst_v4l2sink_sync_rotation (v4l2sink); -+ control.id = V4L2_CID_VFLIP; -+ g_return_if_fail (v4l2_ioctl (fd, VIDIOC_S_CTRL, &control) >= 0); -+ } -+} - - static void - gst_v4l2sink_dispose (GObject * object) -@@ -488,7 +560,7 @@ gst_v4l2sink_sync_crop_fields (GstV4l2Sink * v4l2sink) - } - - static void --gst_v4l2sink_set_rotation (GstV4l2Sink * v4l2sink) -+gst_v4l2sink_sync_rotation (GstV4l2Sink * v4l2sink) - { - if (GST_V4L2_IS_OPEN (v4l2sink->v4l2object)) { - struct v4l2_control control; -@@ -559,7 +631,11 @@ gst_v4l2sink_set_property (GObject * object, - break; - case PROP_ROTATION: - v4l2sink->rotation = g_value_get_int (value); -- gst_v4l2sink_set_rotation (v4l2sink); -+ gst_v4l2sink_sync_rotation (v4l2sink); -+ break; -+ case PROP_FLIP: -+ v4l2sink->flip = g_value_get_enum (value); -+ gst_v4l2sink_sync_flip (v4l2sink); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); -@@ -611,6 +687,9 @@ gst_v4l2sink_get_property (GObject * object, - case PROP_ROTATION: - g_value_set_int (value, v4l2sink->rotation); - break; -+ case PROP_FLIP: -+ g_value_set_enum (value, v4l2sink->flip); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -633,7 +712,8 @@ gst_v4l2sink_change_state (GstElement * element, GstStateChange transition) - /* open the device */ - if (!gst_v4l2_object_start (v4l2sink->v4l2object)) - return GST_STATE_CHANGE_FAILURE; -- gst_v4l2sink_set_rotation (v4l2sink); -+ gst_v4l2sink_sync_rotation (v4l2sink); -+ gst_v4l2sink_sync_flip (v4l2sink); - break; - default: - break; -diff --git a/sys/v4l2/gstv4l2sink.h b/sys/v4l2/gstv4l2sink.h -index 1239621..907973a 100644 ---- a/sys/v4l2/gstv4l2sink.h -+++ b/sys/v4l2/gstv4l2sink.h -@@ -76,6 +76,7 @@ struct _GstV4l2Sink { - - guint8 state; - gint rotation; -+ gint flip; - }; - - struct _GstV4l2SinkClass { --- -1.7.1 - |