From b76efc7f5dcefb43b1ee737fdb5a4511826122c7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 16 Mar 2011 15:56:34 +0100 Subject: [PATCH] playbin2: Set sinks to READY before checking if it accept caps Fixes bug #642732. --- gst/playback/gstplaybin2.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c index 2bf07de..1cd9d5b 100644 --- a/gst/playback/gstplaybin2.c +++ b/gst/playback/gstplaybin2.c @@ -2967,6 +2967,12 @@ autoplug_continue_cb (GstElement * element, GstPad * pad, GstCaps * caps, if (sinkpad) { GstCaps *sinkcaps; + /* Ignore errors here, if a custom sink fails to go + * to READY things are wrong and will error out later + */ + if (GST_STATE (sink) < GST_STATE_READY) + gst_element_set_state (sink, GST_STATE_READY); + sinkcaps = gst_pad_get_caps_reffed (sinkpad); if (!gst_caps_is_any (sinkcaps)) ret = !gst_pad_accept_caps (sinkpad, caps); @@ -2993,6 +2999,12 @@ autoplug_continue_cb (GstElement * element, GstPad * pad, GstCaps * caps, if (sinkpad) { GstCaps *sinkcaps; + /* Ignore errors here, if a custom sink fails to go + * to READY things are wrong and will error out later + */ + if (GST_STATE (sink) < GST_STATE_READY) + gst_element_set_state (sink, GST_STATE_READY); + sinkcaps = gst_pad_get_caps_reffed (sinkpad); if (!gst_caps_is_any (sinkcaps)) ret = !gst_pad_accept_caps (sinkpad, caps); @@ -3008,6 +3020,12 @@ autoplug_continue_cb (GstElement * element, GstPad * pad, GstCaps * caps, if (sinkpad) { GstCaps *sinkcaps; + /* Ignore errors here, if a custom sink fails to go + * to READY things are wrong and will error out later + */ + if (GST_STATE (sink) < GST_STATE_READY) + gst_element_set_state (sink, GST_STATE_READY); + sinkcaps = gst_pad_get_caps_reffed (sinkpad); if (!gst_caps_is_any (sinkcaps)) ret = !gst_pad_accept_caps (sinkpad, caps); -- 2.7.4