From 367d21affe4da5a8c6abdb189fd3ec4f700e5854 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Mon, 9 Feb 2026 20:51:24 -0600 Subject: [PATCH] Fix FFmpeg seek fallback to avoid overshoot frame mismatches. Harden FFmpegReader::CheckSeek() when seek retries are exhausted. --- src/FFmpegReader.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/FFmpegReader.cpp b/src/FFmpegReader.cpp index 361832f8..4df68e57 100644 --- a/src/FFmpegReader.cpp +++ b/src/FFmpegReader.cpp @@ -1511,18 +1511,12 @@ bool FFmpegReader::CheckSeek() { if (seek_count < kSeekRetryMax) { Seek(seeking_frame - (10 * seek_count * seek_count)); } else { - if (seek_stagnant_count >= kSeekStagnantMax) { - // Overshot and no progress: restart from the beginning and walk forward - Seek(1); - is_seeking = false; - seeking_frame = 0; - seeking_pts = -1; - } else { - // Give up retrying and walk forward - is_seeking = false; - seeking_frame = 0; - seeking_pts = -1; - } + // 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; } } else { // SEEK WORKED