summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Bedel <alban.bedel@avionic-design.de>2016-03-08 13:03:55 +0100
committerNicolas Dufresne <nicolas.dufresne@collabora.com>2016-03-08 11:15:08 -0500
commitd746e1ef513106dfa545ed3ab8c596507536c07e (patch)
tree57eeb627c5e2d2443b9722d6f62dd1c625267f5b
parentd8fb7a9c96b108814beeaa0e63f818d4648c7fe9 (diff)
downloadgstreamer-plugins-good-d746e1ef513106dfa545ed3ab8c596507536c07e.tar.gz
v4l2object: fix capture with bayer formats other than bggr
gst_v4l2_object_get_caps_info() always return V4L2_PIX_FMT_SBGGR8 for all bayer formats. This is obviously broken if the device use another ordering. Fix this by properly reading the format parameter. https://bugzilla.gnome.org/show_bug.cgi?id=763318
-rw-r--r--sys/v4l2/gstv4l2object.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c
index c326849dc..21c16fae1 100644
--- a/sys/v4l2/gstv4l2object.c
+++ b/sys/v4l2/gstv4l2object.c
@@ -1736,7 +1736,17 @@ gst_v4l2_object_get_caps_info (GstV4l2Object * v4l2object, GstCaps * caps,
} else if (g_str_equal (mimetype, "video/x-vp8")) {
fourcc = V4L2_PIX_FMT_VP8;
} else if (g_str_equal (mimetype, "video/x-bayer")) {
- fourcc = V4L2_PIX_FMT_SBGGR8;
+ const gchar *format = gst_structure_get_string (structure, "format");
+ if (format) {
+ if (!g_ascii_strcasecmp (format, "bggr"))
+ fourcc = V4L2_PIX_FMT_SBGGR8;
+ else if (!g_ascii_strcasecmp (format, "gbrg"))
+ fourcc = V4L2_PIX_FMT_SGBRG8;
+ else if (!g_ascii_strcasecmp (format, "grbg"))
+ fourcc = V4L2_PIX_FMT_SGRBG8;
+ else if (!g_ascii_strcasecmp (format, "rggb"))
+ fourcc = V4L2_PIX_FMT_SRGGB8;
+ }
} else if (g_str_equal (mimetype, "video/x-sonix")) {
fourcc = V4L2_PIX_FMT_SN9C10X;
} else if (g_str_equal (mimetype, "video/x-pwc1")) {