rtpjpegpay: propagate the GST_BUFFER_FLAG_DISCONT flag
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 20 May 2014 11:58:20 +0000 (13:58 +0200)
committerWim Taymans <wtaymans@redhat.com>
Wed, 18 Jun 2014 14:25:07 +0000 (16:25 +0200)
Propagate the DISCONT flag to the first RTP packet being used to transfer
a DISCONT buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=730563

gst/rtp/gstrtpjpegpay.c

index 4f58269..3e820a0 100644 (file)
@@ -688,6 +688,7 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload,
   gboolean sos_found, sof_found, dqt_found, dri_found;
   gint i;
   GstBufferList *list = NULL;
+  gboolean discont;
 
   pay = GST_RTP_JPEG_PAY (basepayload);
   mtu = GST_RTP_BASE_PAYLOAD_MTU (pay);
@@ -697,6 +698,7 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload,
   size = map.size;
   timestamp = GST_BUFFER_TIMESTAMP (buffer);
   offset = 0;
+  discont = GST_BUFFER_IS_DISCONT (buffer);
 
   GST_LOG_OBJECT (pay, "got buffer size %" G_GSIZE_FORMAT
       " , timestamp %" GST_TIME_FORMAT, size, GST_TIME_ARGS (timestamp));
@@ -895,6 +897,12 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload,
 
     GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
 
+    if (discont) {
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+      /* Only the first outputted buffer has the DISCONT flag */
+      discont = FALSE;
+    }
+
     /* and add to list */
     gst_buffer_list_insert (list, -1, outbuf);