diff --git a/gst/rtpmanager/gstrtpptdemux.c b/gst/rtpmanager/gstrtpptdemux.c index 7a7fc6ef50..562f162177 100644 --- a/gst/rtpmanager/gstrtpptdemux.c +++ b/gst/rtpmanager/gstrtpptdemux.c @@ -325,23 +325,26 @@ gst_rtp_pt_demux_get_caps (GstRtpPtDemux * rtpdemux, guint pt) g_value_unset (&ret); sink_caps = gst_pad_get_current_caps (rtpdemux->sink); - if (caps == NULL) { - caps = gst_caps_ref (sink_caps); - } else { - GstStructure *s1; - GstStructure *s2; - guint ssrc; - caps = gst_caps_make_writable (caps); - s1 = gst_caps_get_structure (sink_caps, 0); - s2 = gst_caps_get_structure (caps, 0); + if (sink_caps) { + if (caps == NULL) { + caps = gst_caps_ref (sink_caps); + } else { + GstStructure *s1; + GstStructure *s2; + guint ssrc; - gst_structure_get_uint (s1, "ssrc", &ssrc); - gst_structure_set (s2, "ssrc", G_TYPE_UINT, ssrc, NULL); + caps = gst_caps_make_writable (caps); + s1 = gst_caps_get_structure (sink_caps, 0); + s2 = gst_caps_get_structure (caps, 0); + + gst_structure_get_uint (s1, "ssrc", &ssrc); + gst_structure_set (s2, "ssrc", G_TYPE_UINT, ssrc, NULL); + } + + gst_caps_unref (sink_caps); } - gst_caps_unref (sink_caps); - GST_DEBUG ("pt %d, got caps %" GST_PTR_FORMAT, pt, caps); return caps;