From 16263982446f55b02f53dfeef2dd72f8c3456ddd Mon Sep 17 00:00:00 2001 From: Brandon W Date: Tue, 22 Oct 2024 19:33:14 -0400 Subject: [PATCH] Fix for movies shorter than the buffer size. --- src/arch/MovieTexture/MovieTexture_FFMpeg.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp index 0a23297530..9555c6f015 100644 --- a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp +++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp @@ -225,6 +225,10 @@ int MovieDecoder_FFMpeg::HandleNextPacket() { // total number of frames. This is benign even if we did have an // accurate frame count at the start. total_frames_ = packet_buffer_.size(); + if (total_frames_ < frame_buffer_.size()) { + LOG->Trace("Video shorter than frame buffer, shrinking the buffer."); + frame_buffer_.resize(total_frames_); + } return 1; } lock.unlock(); @@ -575,6 +579,10 @@ RString MovieDecoder_FFMpeg::Open(RString sFile) * (av_stream_->avg_frame_rate.num) / (av_stream_->avg_frame_rate.den) / (1000000); LOG->Trace("Number of frames provided is inaccurate, estimating."); } + if (total_frames_ < frame_buffer_.size()) { + LOG->Trace("Video shorter than frame buffer, shrinking the buffer."); + frame_buffer_.resize(total_frames_); + } LOG->Trace("Number of frames detected: %i", total_frames_); return RString();