summaryrefslogtreecommitdiff
path: root/gst-libs
diff options
context:
space:
mode:
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2017-03-03 16:20:15 +0200
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2017-03-06 17:20:56 +0200
commit08c52c931e5145a569da1efcd53d77e0090ec898 (patch)
tree42a10999ebafcecdf263a2aee3f9a98e2e74d33a /gst-libs
parentb7065f5f8e69fa0ca1bfdba6537c5676584d45d3 (diff)
downloadgstreamer-plugins-bad-08c52c931e5145a569da1efcd53d77e0090ec898.tar.gz
videoaggregator: redo src caps negotiation if a sink pad's caps have changed in the meantime
https://bugzilla.gnome.org/show_bug.cgi?id=755782
Diffstat (limited to 'gst-libs')
-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;
}
}