waylandsink: Rollback video info changes when copying

We change the video info base on the received buffer. We need to
rollback these changes whenever we want to copy into our internal
pool of buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=790057
This commit is contained in:
Nicolas Dufresne 2017-11-22 22:27:04 -05:00
parent 1a7363e023
commit 2db81d6597

View file

@ -631,6 +631,7 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer)
GstWlBuffer *wlbuffer; GstWlBuffer *wlbuffer;
GstVideoMeta *vmeta; GstVideoMeta *vmeta;
GstVideoFormat format; GstVideoFormat format;
GstVideoInfo old_vinfo;
GstMemory *mem; GstMemory *mem;
struct wl_buffer *wbuf = NULL; struct wl_buffer *wbuf = NULL;
@ -676,6 +677,7 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer)
/* update video info from video meta */ /* update video info from video meta */
mem = gst_buffer_peek_memory (buffer, 0); mem = gst_buffer_peek_memory (buffer, 0);
old_vinfo = sink->video_info;
vmeta = gst_buffer_get_video_meta (buffer); vmeta = gst_buffer_get_video_meta (buffer);
if (vmeta) { if (vmeta) {
gint i; gint i;
@ -713,6 +715,9 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer)
GstVideoFrame src, dst; GstVideoFrame src, dst;
GstVideoInfo src_info = sink->video_info; GstVideoInfo src_info = sink->video_info;
/* rollback video info changes */
sink->video_info = old_vinfo;
/* we don't know how to create a wl_buffer directly from the provided /* we don't know how to create a wl_buffer directly from the provided
* memory, so we have to copy the data to shm memory that we know how * memory, so we have to copy the data to shm memory that we know how
* to handle... */ * to handle... */