From c728854f5cca2712081638fc28cc8f7c488f3b3f Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Tue, 29 Apr 2025 11:34:19 +0200 Subject: [PATCH] Revert "stm32mp: gstreamer1.0-plugins-bad: revert STM patch to fix .flv video playback" After more in-depth testing, we discovered that the flv/ogv video issues on the ccmp25-dvk don't happen when playing videos with standard resolutions. Since the workaround consisted of reverting a patch backported from upstream gstreamer, and it only fixed flv video playback anyway, revert said workaround and test using videos with standard formats. This reverts commit e09eff7e1aa5e2b1b28d73c106d0b7cc9e17bf15. Signed-off-by: Gabriel Valcazar --- ...abuf-Handle-video-meta-inside-the-im.patch | 189 ------------------ .../gstreamer1.0-plugins-bad_1.22.12.bbappend | 5 - 2 files changed, 194 deletions(-) delete mode 100644 meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/Revert-wllinuxdmabuf-Handle-video-meta-inside-the-im.patch diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/Revert-wllinuxdmabuf-Handle-video-meta-inside-the-im.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/Revert-wllinuxdmabuf-Handle-video-meta-inside-the-im.patch deleted file mode 100644 index 86b0ea42f..000000000 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/Revert-wllinuxdmabuf-Handle-video-meta-inside-the-im.patch +++ /dev/null @@ -1,189 +0,0 @@ -From: Gabriel Valcazar -Date: Fri, 11 Apr 2025 10:33:50 +0200 -Subject: [PATCH] Revert "wllinuxdmabuf: Handle video meta inside the importer" - -This commit is causing errors when playing .flv and .ogv files. Other formats -work as expected when reverting it - -Upstream-Status: Inappropriate [DEY specific] - -Signed-off-by: Gabriel Valcazar ---- - ext/gtk/gstgtkwaylandsink.c | 24 +++++++++++++++++++----- - ext/wayland/gstwaylandsink.c | 20 +++++++++++++++++--- - gst-libs/gst/wayland/gstwllinuxdmabuf.c | 13 ++----------- - 3 files changed, 38 insertions(+), 19 deletions(-) - -diff --git a/ext/gtk/gstgtkwaylandsink.c b/ext/gtk/gstgtkwaylandsink.c -index 758cbfe..1396afe 100644 ---- a/ext/gtk/gstgtkwaylandsink.c -+++ b/ext/gtk/gstgtkwaylandsink.c -@@ -1156,7 +1156,9 @@ gst_gtk_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) - gst_gtk_wayland_sink_get_instance_private (self); - GstBuffer *to_render; - GstWlBuffer *wlbuffer; -+ GstVideoMeta *vmeta; - GstVideoFormat format; -+ GstVideoInfo src_vinfo; - GstMemory *mem; - struct wl_buffer *wbuf = NULL; - -@@ -1199,11 +1201,23 @@ gst_gtk_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) - /* update video info from video meta */ - mem = gst_buffer_peek_memory (buffer, 0); - -+ src_vinfo = priv->video_info; -+ vmeta = gst_buffer_get_video_meta (buffer); -+ if (vmeta) { -+ gint i; -+ -+ for (i = 0; i < vmeta->n_planes; i++) { -+ src_vinfo.offset[i] = vmeta->offset[i]; -+ src_vinfo.stride[i] = vmeta->stride[i]; -+ } -+ src_vinfo.size = gst_buffer_get_size (buffer); -+ } -+ - GST_LOG_OBJECT (self, - "buffer %" GST_PTR_FORMAT " does not have a wl_buffer from our " - "display, creating it", buffer); - -- format = GST_VIDEO_INFO_FORMAT (&priv->video_info); -+ format = GST_VIDEO_INFO_FORMAT (&src_vinfo); - if (gst_wl_display_check_format_for_dmabuf (priv->display, format)) { - guint i, nb_dmabuf = 0; - -@@ -1213,7 +1227,7 @@ gst_gtk_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) - - if (nb_dmabuf && (nb_dmabuf == gst_buffer_n_memory (buffer))) - wbuf = gst_wl_linux_dmabuf_construct_wl_buffer (buffer, priv->display, -- &priv->video_info); -+ &src_vinfo); - - if (wbuf) - GST_LOG_OBJECT (self, -@@ -1257,7 +1271,7 @@ gst_gtk_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) - GST_MAP_WRITE)) - goto dst_map_failed; - -- if (!gst_video_frame_map (&src, &priv->video_info, buffer, GST_MAP_READ)) { -+ if (!gst_video_frame_map (&src, &src_vinfo, buffer, GST_MAP_READ)) { - gst_video_frame_unmap (&dst); - goto src_map_failed; - } -@@ -1275,7 +1289,7 @@ handle_shm: - if (!wbuf && gst_wl_display_check_format_for_shm (priv->display, format)) { - if (gst_buffer_n_memory (buffer) == 1 && gst_is_fd_memory (mem)) - wbuf = gst_wl_shm_memory_construct_wl_buffer (mem, priv->display, -- &priv->video_info); -+ &src_vinfo); - - /* If nothing worked, copy into our internal pool */ - if (!wbuf) { -@@ -1316,7 +1330,7 @@ handle_shm: - GST_MAP_WRITE)) - goto dst_map_failed; - -- if (!gst_video_frame_map (&src, &priv->video_info, buffer, GST_MAP_READ)) { -+ if (!gst_video_frame_map (&src, &src_vinfo, buffer, GST_MAP_READ)) { - gst_video_frame_unmap (&dst); - goto src_map_failed; - } -diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c -index c93fec9..b557ade 100644 ---- a/ext/wayland/gstwaylandsink.c -+++ b/ext/wayland/gstwaylandsink.c -@@ -862,7 +862,9 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) - GstWaylandSink *self = GST_WAYLAND_SINK (vsink); - GstBuffer *to_render; - GstWlBuffer *wlbuffer; -+ GstVideoMeta *vmeta; - GstVideoFormat format; -+ GstVideoInfo src_vinfo; - GstMemory *mem; - struct wl_buffer *wbuf = NULL; - -@@ -916,6 +918,18 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) - /* update video info from video meta */ - mem = gst_buffer_peek_memory (buffer, 0); - -+ src_vinfo = self->video_info; -+ vmeta = gst_buffer_get_video_meta (buffer); -+ if (vmeta) { -+ gint i; -+ -+ for (i = 0; i < vmeta->n_planes; i++) { -+ src_vinfo.offset[i] = vmeta->offset[i]; -+ src_vinfo.stride[i] = vmeta->stride[i]; -+ } -+ src_vinfo.size = gst_buffer_get_size (buffer); -+ } -+ - GST_LOG_OBJECT (self, - "buffer %" GST_PTR_FORMAT " does not have a wl_buffer from our " - "display, creating it", buffer); -@@ -930,7 +944,7 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) - - if (nb_dmabuf && (nb_dmabuf == gst_buffer_n_memory (buffer))) - wbuf = gst_wl_linux_dmabuf_construct_wl_buffer (buffer, self->display, -- &self->video_info); -+ &src_vinfo); - - if (wbuf) - GST_LOG_OBJECT (self, -@@ -974,7 +988,7 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) - GST_MAP_WRITE)) - goto dst_map_failed; - -- if (!gst_video_frame_map (&src, &self->video_info, buffer, GST_MAP_READ)) { -+ if (!gst_video_frame_map (&src, &src_vinfo, buffer, GST_MAP_READ)) { - gst_video_frame_unmap (&dst); - goto src_map_failed; - } -@@ -1032,7 +1046,7 @@ handle_shm: - GST_MAP_WRITE)) - goto dst_map_failed; - -- if (!gst_video_frame_map (&src, &self->video_info, buffer, GST_MAP_READ)) { -+ if (!gst_video_frame_map (&src, &src_vinfo, buffer, GST_MAP_READ)) { - gst_video_frame_unmap (&dst); - goto src_map_failed; - } -diff --git a/gst-libs/gst/wayland/gstwllinuxdmabuf.c b/gst-libs/gst/wayland/gstwllinuxdmabuf.c -index deb5d32..16b8fc1 100644 ---- a/gst-libs/gst/wayland/gstwllinuxdmabuf.c -+++ b/gst-libs/gst/wayland/gstwllinuxdmabuf.c -@@ -88,9 +88,6 @@ gst_wl_linux_dmabuf_construct_wl_buffer (GstBuffer * buf, - GstMemory *mem; - int format; - guint i, width, height; -- const gsize *offsets = info->offset; -- const gint *strides = info->stride; -- GstVideoMeta *vmeta; - guint nplanes, flags = 0; - struct zwp_linux_buffer_params_v1 *params; - gint64 timeout; -@@ -110,12 +107,6 @@ gst_wl_linux_dmabuf_construct_wl_buffer (GstBuffer * buf, - height = GST_VIDEO_INFO_HEIGHT (info); - nplanes = GST_VIDEO_INFO_N_PLANES (info); - -- vmeta = gst_buffer_get_video_meta (buf); -- if (vmeta) { -- offsets = vmeta->offset; -- strides = vmeta->stride; -- } -- - GST_DEBUG_OBJECT (display, "Creating wl_buffer from DMABuf of size %" - G_GSSIZE_FORMAT " (%d x %d), format %s", info->size, width, height, - gst_wl_dmabuf_format_to_string (format)); -@@ -128,8 +119,8 @@ gst_wl_linux_dmabuf_construct_wl_buffer (GstBuffer * buf, - guint offset, stride, mem_idx, length; - gsize skip; - -- offset = offsets[i]; -- stride = strides[i]; -+ offset = GST_VIDEO_INFO_PLANE_OFFSET (info, i); -+ stride = GST_VIDEO_INFO_PLANE_STRIDE (info, i); - if (gst_buffer_find_memory (buf, offset, 1, &mem_idx, &length, &skip)) { - GstMemory *m = gst_buffer_peek_memory (buf, mem_idx); - gint fd = gst_dmabuf_memory_get_fd (m); diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.12.bbappend b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.12.bbappend index b300c1e42..95a873c4e 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.12.bbappend +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.12.bbappend @@ -101,8 +101,3 @@ do_install:append() { install -d ${D}${includedir}/gstreamer-1.0/wayland install -m 644 ${S}/gst-libs/gst/wayland/wayland.h ${D}${includedir}/gstreamer-1.0/wayland } - -# DEY: revert STM patch nÂș8 to fix .flv video playback error -SRC_URI:append = " \ - file://Revert-wllinuxdmabuf-Handle-video-meta-inside-the-im.patch \ -"