Format enumeration in Gstreamer expects drivers to implement VIDIOC_ENUM_FMT and if not, it calls VIDIOC_TRY_FMT on a set of "emulated formats" which could be unsupported resulting in failure of the format negotiation stage [1]
We add UYVY to the set of formats making the mt9v113 sensor in this camera board and other sensors that don't support the emulated formats work out-of-the box without needing a caps filter element Upstream-Status: Inappropriate - This patch is a quick work around for a limitation of the ISP driver's lack of support of the VIDIOC_ENUM_FMT IOCTL [2] [1] http://lists.freedesktop.org/archives/gstreamer-devel/2011-July/032425.html [2] http://www.mail-archive.com/linux-media@vger.kernel.org/msg29718.html Signed-off-by: Joel A Fernandes <agnel.j...@gmail.com> --- Changes since v1: * Added Upstream-Status ...-UYVY-color-format-to-the-list-of-enumera.patch | 43 ++++++++++++++++++++ recipes/gstreamer/gst-plugins-good_0.10.28.bb | 4 +- 2 files changed, 46 insertions(+), 1 deletions(-) create mode 100644 recipes/gstreamer/gst-plugins-good/0001-v4l2src-Add-UYVY-color-format-to-the-list-of-enumera.patch diff --git a/recipes/gstreamer/gst-plugins-good/0001-v4l2src-Add-UYVY-color-format-to-the-list-of-enumera.patch b/recipes/gstreamer/gst-plugins-good/0001-v4l2src-Add-UYVY-color-format-to-the-list-of-enumera.patch new file mode 100644 index 0000000..88a0125 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-good/0001-v4l2src-Add-UYVY-color-format-to-the-list-of-enumera.patch @@ -0,0 +1,43 @@ +From d5a1f365bfd4420912735709bcb8004d3ad7226c Mon Sep 17 00:00:00 2001 +From: Joel A Fernandes <agnel.j...@gmail.com> +Date: Fri, 29 Jul 2011 17:23:43 -0500 +Subject: [PATCH] v4l2src: Add UYVY color format to the list of enumerations + +OMAP3 ISP returns -EINVAL for VIDIOC_ENUM_FMT ioctl on video node. Due to this, format negotiation fails. This adds UYVY format to the list of enumerations. + +Signed-off-by: Joel A Fernandes <agnel.j...@gmail.com> +--- + sys/v4l2/gstv4l2object.c | 17 +++++++++++++++++ + 1 files changed, 17 insertions(+), 0 deletions(-) + +diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c +index 7e15489..e04c0fd 100644 +--- a/sys/v4l2/gstv4l2object.c ++++ b/sys/v4l2/gstv4l2object.c +@@ -1025,6 +1025,23 @@ gst_v4l2_object_fill_format_list (GstV4l2Object * v4l2object) + (GCompareFunc) format_cmp_func); + } + ++/* Add UYVY format to the list of enumerations */ ++ format = g_new0 (struct v4l2_fmtdesc, 1); ++ format->type = (enum v4l2_buf_type)-1; ++ format->index = n; ++ format->flags = 0; ++ format->pixelformat = V4L2_PIX_FMT_UYVY; ++ v4l2object->formats = g_slist_insert_sorted (v4l2object->formats, format, ++ (GCompareFunc) format_cmp_func); ++ ++ GST_INFO_OBJECT (v4l2object->element, "index: %u", format->index); ++ GST_INFO_OBJECT (v4l2object->element, "type: %d", format->type); ++ GST_INFO_OBJECT (v4l2object->element, "flags: %08x", format->flags); ++ GST_INFO_OBJECT (v4l2object->element, "description: '%s'", ++ format->description); ++ GST_INFO_OBJECT (v4l2object->element, "pixelformat: %" GST_FOURCC_FORMAT, ++ GST_FOURCC_ARGS (format->pixelformat)); ++ + #ifndef GST_DISABLE_GST_DEBUG + { + GSList *l; +-- +1.7.0.4 + diff --git a/recipes/gstreamer/gst-plugins-good_0.10.28.bb b/recipes/gstreamer/gst-plugins-good_0.10.28.bb index a398f4c..b93236b 100644 --- a/recipes/gstreamer/gst-plugins-good_0.10.28.bb +++ b/recipes/gstreamer/gst-plugins-good_0.10.28.bb @@ -1,6 +1,8 @@ require gst-plugins.inc -PR = "${INC_PR}.1" +PR = "${INC_PR}.2" + +SRC_URI += "file://0001-v4l2src-Add-UYVY-color-format-to-the-list-of-enumera.patch" SRC_URI[archive.md5sum] = "6ef1588921f59d85c44ee2e49a3c97a0" SRC_URI[archive.sha256sum] = "adfbce68b9fbadb7a7aeda2227af6afe1928ef025af4158726617b9d6834b028" -- 1.7.0.4 _______________________________________________ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel