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.
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)) {