rtpfunnel: copy caps before sending them in a caps-event
authorHavard Graff <havard@pexip.com>
Sun, 23 Feb 2020 22:44:16 +0000 (23:44 +0100)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Tue, 28 Jul 2020 07:08:04 +0000 (07:08 +0000)
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>

gst/rtpmanager/gstrtpfunnel.c

index ec70cf6..8e54cd1 100644 (file)
@@ -155,6 +155,7 @@ static void
 gst_rtp_funnel_send_sticky (GstRtpFunnel * funnel, GstPad * pad)
 {
   GstEvent *stream_start;
+  GstCaps *caps;
   GstEvent *caps_ev;
 
   if (!funnel->send_sticky_events)
@@ -166,7 +167,9 @@ gst_rtp_funnel_send_sticky (GstRtpFunnel * funnel, GstPad * pad)
     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)) {
     GST_ERROR_OBJECT (funnel, "Could not push caps");
     goto done;