summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch187
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
-