Don't seek EVERY GOD DAMN FUCKING FRAME

This commit is contained in:
2025-09-18 17:31:10 +02:00
parent 83ef71934b
commit 0fd108bc9a

View File

@@ -65,18 +65,15 @@ class Cv2BufferedCap:
# Clamp frame number to valid range
frame_number = max(0, min(frame_number, self.total_frames - 1))
# Check cache first
cached_frame = self._get_from_cache(frame_number)
if cached_frame is not None:
self.current_frame = frame_number
return cached_frame
# Not in cache, seek to frame and read
# Optimize for sequential reading (next frame)
if frame_number == self.current_frame + 1:
ret, frame = self.cap.read()
else:
# Seek for non-sequential access
self.cap.set(cv2.CAP_PROP_POS_FRAMES, frame_number)
ret, frame = self.cap.read()
if ret:
self._add_to_cache(frame_number, frame)
self.current_frame = frame_number
return frame
else:
@@ -461,7 +458,7 @@ class ProjectView:
class VideoEditor:
# Configuration constants
BASE_FRAME_DELAY_MS = 16 # ~60 FPS
BASE_FRAME_DELAY_MS = 1 # ~60 FPS
SPEED_INCREMENT = 0.2
MIN_PLAYBACK_SPEED = 0.1
MAX_PLAYBACK_SPEED = 10.0