aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPooja Prajod2015-03-09 07:37:59 -0500
committerKarthik Ramanan2015-04-29 04:43:36 -0500
commit090c27b9889430f2bca42371f9bf1913adec8c87 (patch)
tree710c326224d6ec79feab00f1a4042775ab465a73
parenta4e543b660fa88b23f5a7f956b6cae97cdfbfbba (diff)
downloadgstreamer1-0-plugins-bad-090c27b9889430f2bca42371f9bf1913adec8c87.tar.gz
gstreamer1-0-plugins-bad-090c27b9889430f2bca42371f9bf1913adec8c87.tar.xz
gstreamer1-0-plugins-bad-090c27b9889430f2bca42371f9bf1913adec8c87.zip
Waylandsink: Workaround for partial frame delay artifacts
Some test cases results in partial frame delay because buffers are reused while its displayed. This patch ensures that current buffers is available only when you receive a new buffer. Signed-off-by: Pooja Prajod <a0132412@ti.com>
-rw-r--r--ext/wayland/gstwaylandsink.c6
-rw-r--r--ext/wayland/gstwaylandsink.h2
2 files changed, 8 insertions, 0 deletions
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
index bb7d838..0ef1ef8 100644
--- a/ext/wayland/gstwaylandsink.c
+++ b/ext/wayland/gstwaylandsink.c
@@ -311,6 +311,9 @@ gst_wayland_sink_finalize (GObject * object)
311 sink->wlbufferpriv = NULL; 311 sink->wlbufferpriv = NULL;
312 } 312 }
313 313
314 gst_buffer_replace (&sink->last_buf, NULL);
315 gst_buffer_replace (&sink->display_buf, NULL);
316
314 g_mutex_clear (&sink->wayland_lock); 317 g_mutex_clear (&sink->wayland_lock);
315 318
316 G_OBJECT_CLASS (parent_class)->finalize (object); 319 G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -862,6 +865,9 @@ gst_wayland_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
862 wl_surface_commit (window->surface); 865 wl_surface_commit (window->surface);
863 wl_display_dispatch (display->display); 866 wl_display_dispatch (display->display);
864 867
868 gst_buffer_replace (&sink->last_buf, sink->display_buf);
869 gst_buffer_replace (&sink->display_buf, to_render);
870
865 if (buffer != to_render) 871 if (buffer != to_render)
866 gst_buffer_unref (to_render); 872 gst_buffer_unref (to_render);
867 return GST_FLOW_OK; 873 return GST_FLOW_OK;
diff --git a/ext/wayland/gstwaylandsink.h b/ext/wayland/gstwaylandsink.h
index b3fbbac..b3cef2a 100644
--- a/ext/wayland/gstwaylandsink.h
+++ b/ext/wayland/gstwaylandsink.h
@@ -121,6 +121,8 @@ struct _GstWaylandSink
121 121
122 gint video_width; 122 gint video_width;
123 gint video_height; 123 gint video_height;
124 /* current displayed buffer and last displayed buffer: */
125 GstBuffer *display_buf, *last_buf;
124 uint32_t format; 126 uint32_t format;
125}; 127};
126 128