diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c
index de295a5..e7e98de 100644
--- a/libs/gst/base/gstbasesink.c
+++ b/libs/gst/base/gstbasesink.c
@@ -3356,10 +3356,22 @@ gst_base_sink_chain_unlocked (GstBaseSink * basesink, GstPad * pad,
     if (G_UNLIKELY (stepped))
       goto dropped;
 
-    if (syncable && do_sync)
-      late =
+    if (syncable && do_sync) {
+      GstClock *clock;
+      clock = GST_ELEMENT_CLOCK (basesink);
+      if (clock && GST_STATE (basesink) == GST_STATE_PLAYING) {
+        GstClockTime base_time;
+        GstClockTime stime;
+        GstClockTime now;
+
+        base_time = GST_ELEMENT_CAST (basesink)->base_time;
+        stime = base_time + gst_base_sink_adjust_time (basesink, rstart);
+        now = gst_clock_get_time (clock);
+        late =
           gst_base_sink_is_too_late (basesink, obj, rstart, rstop,
-          GST_CLOCK_EARLY, 0, FALSE);
+              GST_CLOCK_EARLY, GST_CLOCK_DIFF (stime, now), FALSE);
+      }
+    }
 
     if (G_UNLIKELY (late))
       goto dropped;
