From 70db06947d05eab50139c84ac07f89e5feeabea9 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Wed, 23 Nov 2022 12:45:10 -0600 Subject: [PATCH] Prevent seeking past end of stream, which causes a huge # of Seeks once EOF is reached, if we try and request frame #s too large for the file --- examples/Example.cpp | 2 +- src/FFmpegReader.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/Example.cpp b/examples/Example.cpp index eaaa3abc..c9513f0a 100644 --- a/examples/Example.cpp +++ b/examples/Example.cpp @@ -24,7 +24,7 @@ using namespace openshot; int main(int argc, char* argv[]) { // FFmpeg Reader performance test - FFmpegReader r9("/home/jonathan/Downloads/pts-test-files/broken-files/lady-talking-1.mp4"); + FFmpegReader r9("/home/jonathan/Downloads/project-29/f5b6c409-1ecc-49cd-8660-478acf152dce.webm"); r9.Open(); for (long int frame = 1; frame <= r9.info.video_length; frame++) { diff --git a/src/FFmpegReader.cpp b/src/FFmpegReader.cpp index d8c0c941..96cf4e06 100644 --- a/src/FFmpegReader.cpp +++ b/src/FFmpegReader.cpp @@ -1773,6 +1773,10 @@ void FFmpegReader::Seek(int64_t requested_frame) { requested_frame = 1; if (requested_frame > info.video_length) requested_frame = info.video_length; + if (requested_frame > largest_frame_processed && packet_status.end_of_file) { + // Not possible to search past largest_frame once EOF is reached (no more packets) + return; + } // Debug output ZmqLogger::Instance()->AppendDebugMethod("FFmpegReader::Seek",