summaryrefslogtreecommitdiff
path: root/gstreamer_ti_dm81xx/opensource_build/patchfiles/gst-plugins-good-0.10.27/0011-v4l2sink-fix-issue-seen-with-autoconvert.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gstreamer_ti_dm81xx/opensource_build/patchfiles/gst-plugins-good-0.10.27/0011-v4l2sink-fix-issue-seen-with-autoconvert.patch')
-rw-r--r--gstreamer_ti_dm81xx/opensource_build/patchfiles/gst-plugins-good-0.10.27/0011-v4l2sink-fix-issue-seen-with-autoconvert.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/gstreamer_ti_dm81xx/opensource_build/patchfiles/gst-plugins-good-0.10.27/0011-v4l2sink-fix-issue-seen-with-autoconvert.patch b/gstreamer_ti_dm81xx/opensource_build/patchfiles/gst-plugins-good-0.10.27/0011-v4l2sink-fix-issue-seen-with-autoconvert.patch
new file mode 100644
index 0000000..44c82af
--- /dev/null
+++ b/gstreamer_ti_dm81xx/opensource_build/patchfiles/gst-plugins-good-0.10.27/0011-v4l2sink-fix-issue-seen-with-autoconvert.patch
@@ -0,0 +1,49 @@
+From 4e319948c62aafd5339c38d065fd8dbfa5a09ced Mon Sep 17 00:00:00 2001
+From: Rob Clark <rob@ti.com>
+Date: Thu, 13 Jan 2011 09:43:08 -0600
+Subject: [PATCH 11/11] v4l2sink: fix issue seen with autoconvert
+
+In this scenario _set_caps() will get called earlier than _buffer_alloc()
+so we need to not override the number of buffers in the case that the
+upstream element answers the query about number of requested buffers.
+---
+ sys/v4l2/gstv4l2sink.c | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/sys/v4l2/gstv4l2sink.c b/sys/v4l2/gstv4l2sink.c
+index feafe7a..ca6ae15 100644
+--- a/sys/v4l2/gstv4l2sink.c
++++ b/sys/v4l2/gstv4l2sink.c
+@@ -881,6 +881,8 @@ gst_v4l2sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
+
+ gst_query_parse_buffers_count (query, &min_buffers);
+
++ GST_DEBUG_OBJECT (v4l2sink, "min_buffers=%d", min_buffers);
++
+ /* XXX need to account for some buffers used by queue, etc.. probably
+ * queue should handle query, pass on to sink pad, and then add some
+ * number of buffers to the min, so this value is dynamic depending
+@@ -888,10 +890,10 @@ gst_v4l2sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
+ */
+ if (min_buffers != -1) {
+ min_buffers += 3 + v4l2sink->min_queued_bufs;
++ v4l2sink->num_buffers_can_change = FALSE;
+ }
+
+ if (min_buffers > v4l2sink->num_buffers) {
+- v4l2sink->num_buffers_can_change = FALSE;
+ v4l2sink->num_buffers = min_buffers;
+ }
+
+@@ -972,7 +974,7 @@ gst_v4l2sink_buffer_alloc (GstBaseSink * bsink, guint64 offset, guint size,
+ * than four buffers:
+ */
+ if (!strcmp ("omap_vout", driver)) {
+- if (v4l2sink->num_buffers > 4) {
++ if (v4l2sink->num_buffers_can_change && v4l2sink->num_buffers > 4) {
+ v4l2sink->num_buffers = 4;
+ GST_DEBUG_OBJECT (v4l2sink,
+ "limiting to 4 buffers to work-around omap_vout driver bug");
+--
+1.7.0.4
+