From 7988acad3653d8e2dcaef00095426278548ad6ac Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Thu, 26 Nov 2020 18:16:10 +0100 Subject: [PATCH] compositor: fix prepare_frame obscuring check A pad without a buffer or with a GAP buffer cannot obscure a pad below it. Ignore those when considering whether a pad should be drawn. Part-of: --- subprojects/gst-plugins-base/gst/compositor/compositor.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/subprojects/gst-plugins-base/gst/compositor/compositor.c b/subprojects/gst-plugins-base/gst/compositor/compositor.c index 1c08715..7dde46b 100644 --- a/subprojects/gst-plugins-base/gst/compositor/compositor.c +++ b/subprojects/gst-plugins-base/gst/compositor/compositor.c @@ -575,6 +575,20 @@ gst_compositor_pad_prepare_frame_start (GstVideoAggregatorPad * pad, if (l) l = l->next; for (; l; l = l->next) { + GstBuffer *pad_buffer; + + pad_buffer = + gst_video_aggregator_pad_get_current_buffer (GST_VIDEO_AGGREGATOR_PAD + (l->data)); + + if (pad_buffer == NULL) + continue; + + if (gst_buffer_get_size (pad_buffer) == 0 && + GST_BUFFER_FLAG_IS_SET (pad_buffer, GST_BUFFER_FLAG_GAP)) { + continue; + } + if (_pad_obscures_rectangle (vagg, l->data, frame_rect)) { frame_obscured = TRUE; break; -- 2.7.4