videorate: Drop incoming buffers that are outside of the segment
authorOlivier Crête <olivier.crete@collabora.com>
Wed, 16 Jun 2021 19:06:57 +0000 (15:06 -0400)
committerOlivier Crête <olivier.crete@ocrete.ca>
Wed, 15 Sep 2021 15:35:43 +0000 (15:35 +0000)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/767>

gst/videorate/gstvideorate.c

index e12fe39..3c4fe0b 100644 (file)
@@ -1521,6 +1521,10 @@ gst_video_rate_transform_ip (GstBaseTransform * trans, GstBuffer * buffer)
       goto invalid_buffer;
   }
 
+  if (!gst_segment_clip (&videorate->segment, GST_FORMAT_TIME, in_ts,
+          GST_CLOCK_TIME_NONE, NULL, NULL))
+    goto outside_segment;
+
   /* get the time of the next expected buffer timestamp, we use this when the
    * next buffer has -1 as a timestamp */
   last_ts = videorate->last_ts;
@@ -1787,6 +1791,13 @@ invalid_buffer:
     res = GST_BASE_TRANSFORM_FLOW_DROPPED;
     goto done;
   }
+
+outside_segment:
+  {
+    GST_WARNING_OBJECT (videorate, "Got buffer outide segment, discarding it");
+    res = GST_BASE_TRANSFORM_FLOW_DROPPED;
+    goto done;
+  }
 }
 
 static gboolean