Skip to content

Commit abe5838

Browse files
authored
Merge pull request #5463 from remotion-dev/copilot/fix-5462
2 parents c29aec0 + 9a0716f commit abe5838

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

packages/renderer/src/render-media.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ import {wrapWithErrorHandling} from './wrap-with-error-handling';
7878
export type StitchingState = 'encoding' | 'muxing';
7979

8080
const SLOWEST_FRAME_COUNT = 10;
81+
const MAX_RECENT_FRAME_TIMINGS = 50;
8182

8283
export type SlowFrame = {frame: number; time: number};
8384

@@ -322,7 +323,7 @@ const internalRenderMediaRaw = ({
322323
let encodedDoneIn: number | null = null;
323324
let cancelled = false;
324325
let renderEstimatedTime = 0;
325-
let totalTimeSpentOnFrames = 0;
326+
const recentFrameTimings: number[] = [];
326327

327328
const renderStart = Date.now();
328329

@@ -606,8 +607,18 @@ const internalRenderMediaRaw = ({
606607
) => {
607608
renderedFrames = frame;
608609

609-
totalTimeSpentOnFrames += timeToRenderInMilliseconds;
610-
const newAverage = totalTimeSpentOnFrames / renderedFrames;
610+
// Track recent frame timings (at most 50)
611+
recentFrameTimings.push(timeToRenderInMilliseconds);
612+
if (recentFrameTimings.length > MAX_RECENT_FRAME_TIMINGS) {
613+
recentFrameTimings.shift();
614+
}
615+
616+
// Calculate average using only recent timings for better estimation
617+
const recentTimingsSum = recentFrameTimings.reduce(
618+
(sum, time) => sum + time,
619+
0,
620+
);
621+
const newAverage = recentTimingsSum / recentFrameTimings.length;
611622

612623
const remainingFrames = totalFramesToRender - renderedFrames;
613624

0 commit comments

Comments
 (0)