From: Sidraya <[email protected]> When importing dmabufs, the video meta is set on the dest buffer, but not on the src buffer. In this case, the src buffer is not made aware of the stride of the video buffer, which is needed to properly display the buffer.
This is a result of the v4l2 plugin creating it's own empty dmabuf pool of GstBuffers, and then assigning the memory from the downstream GstBuffer. We then update the video meta of the buffer in our pool, but not the downstream pool. The downstream pool buffer should be updated as well. Signed-off-by: Sidraya <[email protected]> --- ...l-Set-Video-Meta-to-Imported-Buffers.patch | 58 +++++++++++++++++++ .../gstreamer1.0-plugins-good_1.16.%.bbappend | 1 + 2 files changed, 59 insertions(+) create mode 100644 meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-v4l2bufferpool-Set-Video-Meta-to-Imported-Buffers.patch diff --git a/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-v4l2bufferpool-Set-Video-Meta-to-Imported-Buffers.patch b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-v4l2bufferpool-Set-Video-Meta-to-Imported-Buffers.patch new file mode 100644 index 00000000..59d9080c --- /dev/null +++ b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-v4l2bufferpool-Set-Video-Meta-to-Imported-Buffers.patch @@ -0,0 +1,58 @@ +From e677028494081f93558d24b1f72da9e6835ef954 Mon Sep 17 00:00:00 2001 +From: Sidraya <[email protected]> +Date: Mon, 18 Oct 2021 13:35:09 +0530 +Subject: [PATCH] v4l2bufferpool: Set Video Meta to Imported Buffers + +When importing dmabufs, the video meta is set on the dest +buffer, but not on the src buffer. In this case, the src +buffer is not made aware of the stride of the video buffer, +which is needed to properly display the buffer. + +This is a result of the v4l2 plugin creating it's own +empty dmabuf pool of GstBuffers, and then assigning the +memory from the downstream GstBuffer. We then update the +video meta of the buffer in our pool, but not the downstream +pool. + +The downstream pool buffer should be updated as well. + +Upstream-Status: Submitted +https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1723#note_1266433 + +Signed-off-by: Sidraya <[email protected]> +--- + sys/v4l2/gstv4l2bufferpool.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c +index 49f222b6e..f4d964b9e 100644 +--- a/sys/v4l2/gstv4l2bufferpool.c ++++ b/sys/v4l2/gstv4l2bufferpool.c +@@ -330,6 +330,10 @@ gst_v4l2_buffer_pool_import_dmabuf (GstV4l2BufferPool * pool, + GstMemory *dma_mem[GST_VIDEO_MAX_PLANES] = { 0 }; + guint n_mem = gst_buffer_n_memory (src); + gint i; ++ GstV4l2Object *obj; ++ GstVideoInfo *info; ++ obj = pool->obj; ++ info = &obj->info; + + GST_LOG_OBJECT (pool, "importing dmabuf"); + +@@ -346,6 +350,13 @@ gst_v4l2_buffer_pool_import_dmabuf (GstV4l2BufferPool * pool, + dma_mem)) + goto import_failed; + ++ /* add metadata to raw video buffers */ ++ if (pool->add_videometa) ++ gst_buffer_add_video_meta_full (src, GST_VIDEO_FRAME_FLAG_NONE, ++ GST_VIDEO_INFO_FORMAT (info), GST_VIDEO_INFO_WIDTH (info), ++ GST_VIDEO_INFO_HEIGHT (info), GST_VIDEO_INFO_N_PLANES (info), ++ info->offset, info->stride); ++ + gst_mini_object_set_qdata (GST_MINI_OBJECT (dest), GST_V4L2_IMPORT_QUARK, + gst_buffer_ref (src), (GDestroyNotify) gst_buffer_unref); + +-- +2.17.1 + diff --git a/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.%.bbappend b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.%.bbappend index 11513f2f..07cd08a7 100644 --- a/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.%.bbappend +++ b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.%.bbappend @@ -10,6 +10,7 @@ SRC_URI += " \ file://0001-qmlglsink-fix-build-on-EGL-platform-without-X11-head.patch \ file://0001-gst-plugins-good-1.16.3-v4l2h264enc-Add-Extended-con.patch \ file://0001-Avoiding-Failure-to-allocate-required-memory.patch \ + file://0001-v4l2bufferpool-Set-Video-Meta-to-Imported-Buffers.patch \ " PR_append = ".arago3" -- 2.17.1 -- This message contains confidential information and is intended only for the individual(s) named. If you are not the intended recipient, you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this mail and attached file/s is strictly prohibited. Please notify the sender immediately and delete this e-mail from your system. E-mail transmission cannot be guaranteed to be secured or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept liability for any errors or omissions in the contents of this message, which arise as a result of e-mail transmission. -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#13570): https://lists.yoctoproject.org/g/meta-arago/message/13570 Mute This Topic: https://lists.yoctoproject.org/mt/89312069/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/meta-arago/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
