scenario: fix PAUSED position check
authorMathieu Duponchelle <mathieu@centricular.com>
Fri, 26 Jul 2019 00:28:42 +0000 (02:28 +0200)
committerMathieu Duponchelle <mathieu@centricular.com>
Fri, 26 Jul 2019 00:34:55 +0000 (02:34 +0200)
The way this was implemented was simply wrong, first of all checking
the position against the segment after a seek in PAUSED by a query
of the pipeline position is of limited interest, and can only work
in forward playback.

Furthermore the check was a huge blob of code that didn't even look
like it was pretending to do a good job at checking the position in
reverse playback.

validate/gst/validate/gst-validate-scenario.c

index b05330c6f9f9d0e5f2eb2385674fd565822f9bb1..e0d0940770cb36b8e382dab9e8f67e6d878c1b8e 100644 (file)
@@ -1639,14 +1639,9 @@ _check_position (GstValidateScenario * scenario, GstValidateAction * act,
 
   if (priv->seeked_in_pause && priv->seek_flags & GST_SEEK_FLAG_ACCURATE &&
       priv->seek_format == GST_FORMAT_TIME) {
-    if ((*rate > 0 && (*position >= priv->segment_start + priv->seek_pos_tol ||
-                *position < ((priv->segment_start <
-                        priv->seek_pos_tol) ? 0 : priv->segment_start -
-                    priv->seek_pos_tol)))
-        || (*rate < 0 && (*position > priv->segment_start + priv->seek_pos_tol
-                || *position < ((priv->segment_start <
-                        priv->seek_pos_tol) ? 0 : priv->segment_start -
-                    priv->seek_pos_tol)))) {
+    if (*rate > 0
+        && (GstClockTime) ABS (GST_CLOCK_DIFF (*position,
+                priv->segment_start)) > priv->seek_pos_tol) {
       priv->seeked_in_pause = FALSE;
       GST_VALIDATE_REPORT (scenario, EVENT_SEEK_RESULT_POSITION_WRONG,
           "Reported position after accurate seek in PAUSED state should be exactly"