summaryrefslogtreecommitdiff
path: root/gst/encoding
diff options
context:
space:
mode:
authorRobert Swain <robert.swain@collabora.co.uk>2011-06-29 11:30:51 +0200
committerRobert Swain <robert.swain@collabora.co.uk>2011-06-29 11:57:52 +0200
commitdc79c424849133d4ee1687beff40e33d472f8919 (patch)
treec1c5115034d34c9044006ab21163938a4df79027 /gst/encoding
parentf3e65f1c9374df13e4fa082bc750ce94e38c58de (diff)
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.
Diffstat (limited to 'gst/encoding')
-rw-r--r--gst/encoding/gststreamsplitter.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/gst/encoding/gststreamsplitter.c b/gst/encoding/gststreamsplitter.c
index c473386e5..c531b4c6c 100644
--- a/gst/encoding/gststreamsplitter.c
+++ b/gst/encoding/gststreamsplitter.c
@@ -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)) {