Skip to content

Commit

Permalink
videoaggregator: Don't require any pads to be configured for negotiat…
Browse files Browse the repository at this point in the history
…ing source pad caps

This is not actually required (anymore?). Source pad caps can be
negotiated at any time regardless of any configured (or existing) sink
pads and videoaggregator comes up with some fixated caps based on the
downstream caps.

Subclasses can override this behaviour as needed by overriding
update_src_caps().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/848>
  • Loading branch information
sdroege authored and tp-m committed Oct 3, 2020
1 parent 83047de commit ba39a54
Showing 1 changed file with 0 additions and 23 deletions.
23 changes: 0 additions & 23 deletions gst-libs/gst/video/gstvideoaggregator.c
Expand Up @@ -981,29 +981,6 @@ gst_video_aggregator_default_update_src_caps (GstAggregator * agg,
{
GstVideoAggregatorClass *vagg_klass = GST_VIDEO_AGGREGATOR_GET_CLASS (agg);
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
gboolean at_least_one_pad_configured = FALSE;
GList *l;

GST_OBJECT_LOCK (vagg);
for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
GstVideoAggregatorPad *mpad = l->data;

if (GST_VIDEO_INFO_WIDTH (&mpad->info) == 0
|| GST_VIDEO_INFO_HEIGHT (&mpad->info) == 0)
continue;

at_least_one_pad_configured = TRUE;
}
GST_OBJECT_UNLOCK (vagg);

if (!at_least_one_pad_configured) {
/* We couldn't decide the output video info because the sinkpads don't have
* all the caps yet, so we mark the pad as needing a reconfigure. This
* allows aggregate() to skip ahead a bit and try again later. */
GST_DEBUG_OBJECT (vagg, "Couldn't decide output video info");
gst_pad_mark_reconfigure (agg->srcpad);
return GST_AGGREGATOR_FLOW_NEED_DATA;
}

g_assert (vagg_klass->update_caps);

Expand Down

0 comments on commit ba39a54

Please sign in to comment.