rtpfunnel: copy caps before sending them in a caps-event

Reason being we don't want downstream to own a ref to our
internal caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/681>
This commit is contained in:
Havard Graff 2020-02-23 23:44:16 +01:00 committed by GStreamer Merge Bot
parent aa34c29d3b
commit f5fc34ae83

View file

@ -155,6 +155,7 @@ static void
gst_rtp_funnel_send_sticky (GstRtpFunnel * funnel, GstPad * pad) gst_rtp_funnel_send_sticky (GstRtpFunnel * funnel, GstPad * pad)
{ {
GstEvent *stream_start; GstEvent *stream_start;
GstCaps *caps;
GstEvent *caps_ev; GstEvent *caps_ev;
if (!funnel->send_sticky_events) if (!funnel->send_sticky_events)
@ -166,7 +167,9 @@ gst_rtp_funnel_send_sticky (GstRtpFunnel * funnel, GstPad * pad)
goto done; goto done;
} }
caps_ev = gst_event_new_caps (funnel->srccaps); caps = gst_caps_copy (funnel->srccaps);
caps_ev = gst_event_new_caps (caps);
gst_caps_unref (caps);
if (caps_ev && !gst_pad_push_event (funnel->srcpad, caps_ev)) { if (caps_ev && !gst_pad_push_event (funnel->srcpad, caps_ev)) {
GST_ERROR_OBJECT (funnel, "Could not push caps"); GST_ERROR_OBJECT (funnel, "Could not push caps");
goto done; goto done;