diff options
author | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2017-03-03 16:20:15 +0200 |
---|---|---|
committer | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2017-03-06 17:20:56 +0200 |
commit | 08c52c931e5145a569da1efcd53d77e0090ec898 (patch) | |
tree | 42a10999ebafcecdf263a2aee3f9a98e2e74d33a /gst-libs | |
parent | b7065f5f8e69fa0ca1bfdba6537c5676584d45d3 (diff) | |
download | gstreamer-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.c | 8 |
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; } } |