summaryrefslogtreecommitdiff
path: root/gst-libs/gst
diff options
context:
space:
mode:
Diffstat (limited to 'gst-libs/gst')
-rw-r--r--gst-libs/gst/video/gstvideoaggregator.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gst-libs/gst/video/gstvideoaggregator.c b/gst-libs/gst/video/gstvideoaggregator.c
index ea2d10448..2abb4d569 100644
--- a/gst-libs/gst/video/gstvideoaggregator.c
+++ b/gst-libs/gst/video/gstvideoaggregator.c
@@ -1448,6 +1448,7 @@ gst_video_aggregator_check_reconfigure (GstVideoAggregator * vagg,
|| gst_pad_check_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg))) {
gboolean ret;
+ restart:
ret = gst_video_aggregator_update_src_caps (vagg);
if (!ret) {
gst_pad_mark_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg));
@@ -1486,6 +1487,13 @@ gst_video_aggregator_check_reconfigure (GstVideoAggregator * vagg,
else
return GST_FLOW_NOT_NEGOTIATED;
}
+ } else {
+ /* It is possible that during gst_video_aggregator_update_src_caps()
+ * we got a caps change on one of the sink pads, in which case we need
+ * to redo the negotiation
+ * - https://bugzilla.gnome.org/show_bug.cgi?id=755782 */
+ if (gst_pad_check_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg)))
+ goto restart;
}
}