validate: Actually accept rounding errors and small mistakes for position

WHen seeking in paused the position right after should be pretty much
the exact one, but sometimes it can be a little different because of
rounding issues and similare.
This commit is contained in:
Thibault Saunier 2014-07-26 11:42:09 +02:00
parent 8518e08dbb
commit f42f0724e5

View file

@ -704,9 +704,13 @@ _check_position (GstValidateScenario * scenario, gdouble rate,
} }
if (priv->seeked_in_pause && priv->seek_flags & GST_SEEK_FLAG_ACCURATE) { if (priv->seeked_in_pause && priv->seek_flags & GST_SEEK_FLAG_ACCURATE) {
if ((rate > 0 && position != priv->segment_start) || if ((rate > 0 && (position >= priv->segment_start + priv->seek_pos_tol ||
(rate < 0 && position != priv->segment_stop)) { position < MIN (0,
GST_VALIDATE_REPORT (scenario, QUERY_POSITION_OUT_OF_SEGMENT, ((gint64) priv->segment_start - priv->seek_pos_tol))))
|| (rate < 0 && (position > priv->segment_start + priv->seek_pos_tol
|| position < MIN (0,
(gint64) priv->segment_start - priv->seek_pos_tol)))) {
GST_VALIDATE_REPORT (scenario, EVENT_SEEK_RESULT_POSITION_WRONG,
"Reported position after accurate seek in PAUSED state should be exactlty" "Reported position after accurate seek in PAUSED state should be exactlty"
" what the user asked for %" GST_TIME_FORMAT " != %" GST_TIME_FORMAT, " what the user asked for %" GST_TIME_FORMAT " != %" GST_TIME_FORMAT,
GST_TIME_ARGS (position), GST_TIME_ARGS (priv->segment_start)); GST_TIME_ARGS (position), GST_TIME_ARGS (priv->segment_start));