From fcde0749c4124a50eb1b71bfe2784ad17737b3a9 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 26 Mar 2025 12:30:41 +0100 Subject: [PATCH] gst: fix video metadata offsets The offsets in GStreamer are always offsets into the buffer memory where the plane starts so set this to the accumulated plane sizes. --- src/gst/gstpipewiresrc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gst/gstpipewiresrc.c b/src/gst/gstpipewiresrc.c index a3018357c..03c622677 100644 --- a/src/gst/gstpipewiresrc.c +++ b/src/gst/gstpipewiresrc.c @@ -664,7 +664,6 @@ static GstBuffer *dequeue_buffer(GstPipeWireSrc *pwsrc) GstVideoInfo *info = &pwsrc->video_info; uint32_t n_datas = b->buffer->n_datas; uint32_t n_planes = GST_VIDEO_INFO_N_PLANES (info); - gboolean is_planar = n_planes > 1; gsize video_size = 0; GstVideoMeta *meta = gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE, @@ -677,7 +676,7 @@ static GstBuffer *dequeue_buffer(GstPipeWireSrc *pwsrc) for (i = 0; i < MIN (n_datas, n_planes); i++) { struct spa_data *d = &b->buffer->datas[i]; - meta->offset[i] = is_planar ? d->chunk->offset : video_size; + meta->offset[i] = video_size; meta->stride[i] = d->chunk->stride; video_size += d->chunk->size;