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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/708>
This commit is contained in:
Mathieu Duponchelle 2020-11-26 18:16:10 +01:00 committed by GStreamer Marge Bot
parent cc3a79d7f1
commit 7988acad36

View file

@ -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;