identity: send gap events when dropping buffers
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Wed, 14 Jan 2015 10:52:11 +0000 (10:52 +0000)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Wed, 14 Jan 2015 10:52:40 +0000 (10:52 +0000)
plugins/elements/gstidentity.c

index f31599f..8f564cf 100644 (file)
@@ -503,6 +503,7 @@ gst_identity_transform_ip (GstBaseTransform * trans, GstBuffer * buf)
   GstFlowReturn ret = GST_FLOW_OK;
   GstIdentity *identity = GST_IDENTITY (trans);
   GstClockTime runtimestamp = G_GINT64_CONSTANT (0);
+  GstClockTime ts, duration;
   gsize size;
 
   size = gst_buffer_get_size (buf);
@@ -610,6 +611,14 @@ dropped:
       gst_identity_update_last_message_for_buffer (identity, "dropping", buf,
           size);
     }
+
+    ts = GST_BUFFER_TIMESTAMP (buf);
+    if (GST_CLOCK_TIME_IS_VALID (ts)) {
+      duration = GST_BUFFER_DURATION (buf);
+      gst_pad_push_event (GST_BASE_TRANSFORM_SRC_PAD (identity),
+          gst_event_new_gap (ts, duration));
+    }
+
     /* return DROPPED to basetransform. */
     return GST_BASE_TRANSFORM_FLOW_DROPPED;
   }