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 }