tools: gst-play: seek at least in steps of a second
authorTim-Philipp Müller <tim@centricular.com>
Fri, 24 Jul 2015 09:15:21 +0000 (10:15 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 24 Jul 2015 09:15:21 +0000 (10:15 +0100)
In case of very short files we might end up seeking in
steps of a fraction of a second, which is silly and gives
the impression that seeking doesn't actually work. Make
minimum seek step a second instead.

tools/gst-play.c

index 9b9fe06..bbcde11 100644 (file)
@@ -708,7 +708,7 @@ relative_seek (GstPlay * play, gdouble percent)
 {
   GstQuery *query;
   gboolean seekable = FALSE;
-  gint64 dur = -1, pos = -1;
+  gint64 dur = -1, pos = -1, step;
 
   g_return_if_fail (percent >= -1.0 && percent <= 1.0);
 
@@ -727,7 +727,11 @@ relative_seek (GstPlay * play, gdouble percent)
   if (!seekable || dur <= 0)
     goto seek_failed;
 
-  pos = pos + dur * percent;
+  step = dur * percent;
+  if (ABS (step) < GST_SECOND)
+    step = (percent < 0) ? -GST_SECOND : GST_SECOND;
+
+  pos = pos + step;
   if (pos > dur) {
     if (!play_next (play)) {
       g_print ("\n%s\n", _("Reached end of play list."));