From 60256da17fa6b9e21c014698ea4c98aed34238de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Tue, 14 Jul 2026 08:42:42 +0000 Subject: [PATCH] fix(render): extend high-quality encode timeout --- .../render/stages/encodeStage.test.ts | 20 +++++++++++++++++++ .../src/services/render/stages/encodeStage.ts | 11 ++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/packages/producer/src/services/render/stages/encodeStage.test.ts b/packages/producer/src/services/render/stages/encodeStage.test.ts index 58df97ae65..cf02a5c82a 100644 --- a/packages/producer/src/services/render/stages/encodeStage.test.ts +++ b/packages/producer/src/services/render/stages/encodeStage.test.ts @@ -154,6 +154,26 @@ describe("gif encode args", () => { }); describe("runEncodeStage config plumbing", () => { + it("gives high-quality encodes enough budget for slow Windows libx264", async () => { + const { runEncodeStage } = await import("./encodeStage.js"); + const input = makeInput(); + + await runEncodeStage( + makeInput({ + job: { + ...input.job, + config: { ...input.job.config, quality: "high" }, + duration: 172.56, + }, + engineConfig: { ffmpegEncodeTimeout: 600_000 }, + }), + ); + + expect(encodeFramesFromDirMock.mock.calls[0]?.[5]).toEqual({ + ffmpegEncodeTimeout: 4_141_440, + }); + }); + it("scales the encode timeout for long compositions", async () => { const { runEncodeStage } = await import("./encodeStage.js"); diff --git a/packages/producer/src/services/render/stages/encodeStage.ts b/packages/producer/src/services/render/stages/encodeStage.ts index c66e4bedf7..9722703939 100644 --- a/packages/producer/src/services/render/stages/encodeStage.ts +++ b/packages/producer/src/services/render/stages/encodeStage.ts @@ -278,10 +278,13 @@ export async function runEncodeStage(input: EncodeStageInput): Promise engineCfg.ffmpegEncodeTimeout ? { ...engineCfg, ffmpegEncodeTimeout: scaledEncodeTimeout }