rtpklvdepay: add the SPARSE flag to the outgoing stream-start event
authorTim-Philipp Müller <tim@centricular.com>
Wed, 25 Mar 2015 13:51:30 +0000 (13:51 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Sun, 18 Dec 2016 12:00:38 +0000 (12:00 +0000)
gst/rtp/gstrtpklvdepay.c

index eeefe7e..424f6aa 100644 (file)
@@ -68,6 +68,8 @@ static gboolean gst_rtp_klv_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_klv_depay_process (GstRTPBaseDepayload * depayload,
     GstRTPBuffer * rtp);
+static gboolean gst_rtp_klv_depay_handle_event (GstRTPBaseDepayload * depay,
+    GstEvent * ev);
 
 static void gst_rtp_klv_depay_reset (GstRtpKlvDepay * klvdepay);
 
@@ -97,6 +99,7 @@ gst_rtp_klv_depay_class_init (GstRtpKlvDepayClass * klass)
 
   rtpbasedepayload_class->set_caps = gst_rtp_klv_depay_setcaps;
   rtpbasedepayload_class->process_rtp_packet = gst_rtp_klv_depay_process;
+  rtpbasedepayload_class->handle_event = gst_rtp_klv_depay_handle_event;
 }
 
 static void
@@ -128,6 +131,25 @@ gst_rtp_klv_depay_reset (GstRtpKlvDepay * klvdepay)
 }
 
 static gboolean
+gst_rtp_klv_depay_handle_event (GstRTPBaseDepayload * depay, GstEvent * ev)
+{
+  switch (GST_EVENT_TYPE (ev)) {
+    case GST_EVENT_STREAM_START:{
+      GstStreamFlags flags;
+
+      ev = gst_event_make_writable (ev);
+      gst_event_parse_stream_flags (ev, &flags);
+      gst_event_set_stream_flags (ev, flags | GST_STREAM_FLAG_SPARSE);
+      break;
+    }
+    default:
+      break;
+  }
+
+  return GST_RTP_BASE_DEPAYLOAD_CLASS (parent_class)->handle_event (depay, ev);
+}
+
+static gboolean
 gst_rtp_klv_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 {
   GstStructure *s;