From 6f63254c089331ac5ce78e9361a54d0da1bf3590 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Mon, 9 Feb 2026 21:35:06 -0600 Subject: [PATCH] More changes to seek logic to pass unit tests on Windows. --- src/FFmpegReader.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/FFmpegReader.cpp b/src/FFmpegReader.cpp index 4df68e57..2844e385 100644 --- a/src/FFmpegReader.cpp +++ b/src/FFmpegReader.cpp @@ -1510,13 +1510,12 @@ bool FFmpegReader::CheckSeek() { // Seek again... to the nearest Keyframe if (seek_count < kSeekRetryMax) { Seek(seeking_frame - (10 * seek_count * seek_count)); + } else if (seek_stagnant_count >= kSeekStagnantMax) { + // Stagnant seek: force a much earlier target and keep seeking. + Seek(seeking_frame - (10 * kSeekRetryMax * kSeekRetryMax)); } else { - // Retry budget exhausted: always restart from frame 1 and walk forward. - // This avoids returning frames from an overshot seek position. - Seek(1); - is_seeking = false; - seeking_frame = 0; - seeking_pts = -1; + // Retry budget exhausted: keep seeking from a conservative offset. + Seek(seeking_frame - (10 * seek_count * seek_count)); } } else { // SEEK WORKED