streamsplitter: Fix getcaps src pad caps merge

Caps returned from gst_pad_peer_get_caps_reffed () may not be writable.
If they are not is should cause an assertion in gst_caps_merge (),
however, sometimes assertions are disabled in binary builds of -base and
it's safer to just be sure the caps are writable. Also, check that the
reffed caps pointer is not NULL.
This commit is contained in:
Robert Swain 2011-06-29 11:30:51 +02:00
parent f3e65f1c93
commit dc79c42484

View file

@ -268,10 +268,13 @@ resync:
GstPad *srcpad = (GstPad *) tmp->data;
STREAMS_UNLOCK (stream_splitter);
if (res)
gst_caps_merge (res, gst_pad_peer_get_caps_reffed (srcpad));
else
if (res) {
GstCaps *peercaps = gst_pad_peer_get_caps_reffed (srcpad);
if (peercaps)
gst_caps_merge (res, gst_caps_make_writable (peercaps));
} else {
res = gst_pad_peer_get_caps (srcpad);
}
STREAMS_LOCK (stream_splitter);
if (G_UNLIKELY (cookie != stream_splitter->cookie)) {