refactor(producer): unify render requests

This commit is contained in:
James
2026-07-17 16:22:23 -04:00
parent 2577aaffeb
commit 65f2e2927c
10 changed files with 469 additions and 47 deletions
+23 -18
View File
@@ -49,6 +49,7 @@ import {
isAspectAgnosticResolutionAlias,
type CanvasResolution,
} from "@hyperframes/core";
import { createRenderRequest, renderConfigFromRequest } from "./renderRequest.js";
// ---------------------------------------------------------------------------
// Types
@@ -221,22 +222,26 @@ function parseRenderOverrides(body: Record<string, unknown>): {
* the sync (`render`) and streaming (`render-stream`) handlers so the field
* set — including `variables` and `outputResolution` — stays in one place.
*/
function buildRenderJobConfig(input: RenderInput, log: ProducerLogger) {
return {
fps: input.fps,
quality: input.quality,
format: input.format,
workers: input.workers,
useGpu: input.useGpu,
debug: input.debug,
strictness: input.strictness,
entryFile: input.entryFile,
variables: input.variables,
outputResolution: input.outputResolution,
outputResolutionAspectAgnostic: input.outputResolutionAspectAgnostic,
videoFrameFormat: input.videoFrameFormat,
logger: log,
};
function buildRenderJobConfig(input: RenderInput, outputPath: string, log: ProducerLogger) {
const request = createRenderRequest({
projectDir: input.projectDir,
outputPath,
options: {
fps: input.fps,
quality: input.quality,
format: input.format ?? "mp4",
workers: input.workers,
useGpu: input.useGpu,
debug: input.debug,
strictness: input.strictness,
entryFile: input.entryFile,
variables: input.variables,
outputResolution: input.outputResolution,
outputResolutionAspectAgnostic: input.outputResolutionAspectAgnostic,
videoFrameFormat: input.videoFrameFormat,
},
});
return renderConfigFromRequest(request, { logger: log });
}
/**
@@ -642,7 +647,7 @@ export function createRenderHandlers(options: HandlerOptions = {}): RenderHandle
quality: input.quality,
});
const job = createRenderJob(buildRenderJobConfig(input, log));
const job = createRenderJob(buildRenderJobConfig(input, absoluteOutputPath, log));
try {
await executeRenderJob(
@@ -718,7 +723,7 @@ export function createRenderHandlers(options: HandlerOptions = {}): RenderHandle
log.info("render-stream started", { requestId, projectDir: input.projectDir });
const job = createRenderJob(buildRenderJobConfig(input, log));
const job = createRenderJob(buildRenderJobConfig(input, absoluteOutputPath, log));
const abortController = new AbortController();
const onRequestAbort = () =>
abortController.abort(new RenderCancelledError("request_aborted"));