The computation in analyze_source was wrong, and would state that the element
has "all raw source pads" if it had at least one.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1029
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3199>
gboolean res = TRUE;
GstPad *pad;
GValue item = { 0, };
+ guint nb_raw = 0;
+ guint nb_pads = 0;
GstCaps *rawcaps = DEFAULT_CAPS;
*have_out = FALSE;
*have_out = FALSE;
*is_raw = FALSE;
*is_dynamic = FALSE;
+ nb_pads = nb_raw = 0;
gst_iterator_resync (pads_iter);
break;
case GST_ITERATOR_OK:
break;
}
+ nb_pads++;
/* caps on source pad are all raw, we can add the pad */
if (*is_raw) {
GstPad *output_pad;
+ nb_raw++;
GST_URI_SOURCE_BIN_LOCK (urisrc);
if (use_queue) {
OutputSlotInfo *slot = get_output_slot (urisrc, FALSE, FALSE, NULL);
walk = g_list_next (walk);
}
+ if (nb_pads && nb_pads == nb_raw)
+ *is_raw = TRUE;
+
return res;
no_slot:
{