diff --git a/packages/producer/src/services/render/stages/audioStage.ts b/packages/producer/src/services/render/stages/audioStage.ts index 5e17b6de6..fca171212 100644 --- a/packages/producer/src/services/render/stages/audioStage.ts +++ b/packages/producer/src/services/render/stages/audioStage.ts @@ -17,7 +17,6 @@ import { join } from "node:path"; import { processCompositionAudio } from "@hyperframes/engine"; -import type { RenderJob } from "../../renderOrchestrator.js"; import type { CompositionMetadata } from "../shared.js"; export interface AudioStageInput { @@ -25,7 +24,6 @@ export interface AudioStageInput { workDir: string; /** `join(workDir, "compiled")`; passed through to the audio mixer for asset resolution. */ compiledDir: string; - job: RenderJob; /** Composition duration (post-probe). Must be > 0 — probeStage guarantees this. */ duration: number; /** Read-only view of `composition.audios`. */ diff --git a/packages/producer/src/services/render/stages/captureHdrStage.ts b/packages/producer/src/services/render/stages/captureHdrStage.ts index 9627f49bd..ee48c7452 100644 --- a/packages/producer/src/services/render/stages/captureHdrStage.ts +++ b/packages/producer/src/services/render/stages/captureHdrStage.ts @@ -1,8 +1,7 @@ /** * captureHdrStage — Z-ordered HDR / shader-transition layered composite. * - * Lifted verbatim from `executeRenderJob`'s `if (useLayeredComposite)` - * branch. The most complex capture path: + * The most complex capture path: * - Spawns a dedicated `domSession` for transparent-background screenshots. * - Spawns an `hdrEncoder` (`spawnStreamingEncoder` with * `rawInputFormat: "rgb48le"`) accepting pre-composited HDR frames. diff --git a/packages/producer/src/services/render/stages/captureStreamingStage.ts b/packages/producer/src/services/render/stages/captureStreamingStage.ts index bfd1a57c3..75bc3a8e0 100644 --- a/packages/producer/src/services/render/stages/captureStreamingStage.ts +++ b/packages/producer/src/services/render/stages/captureStreamingStage.ts @@ -34,9 +34,10 @@ * `streamingEncoderClosed` so it's idempotent. * * Known follow-up (same as captureStage): this stage imports - * `updateJobStatus` from `renderOrchestrator.ts`, re-introducing the - * cycle PR 1.3.5 broke. A subsequent PR will consolidate capture - * helpers into a shared module. + * `updateJobStatus` from `renderOrchestrator.ts`, forming a runtime + * cycle with the orchestrator's import of `runCaptureStreamingStage`. + * Safe at runtime; a subsequent change will move the capture helpers + * into a shared module so the stages can import without reaching back. */ import { @@ -102,8 +103,6 @@ export type CaptureStreamingStageResult = | { /** Streaming path ran successfully — sequencer should skip the disk path AND Stage 5 encode. */ success: true; - /** Wall-clock ms for the capture phase (`Date.now() - stage4Start` is the sequencer's job). */ - captureDurationMs: number; /** Wall-clock ms for the encode phase (overlapped with capture; from the encoder's own report). */ encodeMs: number; probeSession: CaptureSession | null; @@ -165,7 +164,6 @@ export async function runCaptureStreamingStage( return { success: false }; } - const streamStart = Date.now(); const currentEncoder: StreamingEncoder = streamingEncoder; try { @@ -280,7 +278,6 @@ export async function runCaptureStreamingStage( return { success: true, - captureDurationMs: Date.now() - streamStart, encodeMs: encodeResult.durationMs, probeSession, lastBrowserConsole, diff --git a/packages/producer/src/services/render/stages/encodeStage.ts b/packages/producer/src/services/render/stages/encodeStage.ts index 8e883103a..eca96c0cc 100644 --- a/packages/producer/src/services/render/stages/encodeStage.ts +++ b/packages/producer/src/services/render/stages/encodeStage.ts @@ -33,7 +33,6 @@ import { encodeFramesFromDir, getEncoderPreset, } from "@hyperframes/engine"; -import type { Fps } from "@hyperframes/core"; import type { ProducerLogger } from "../../../logger.js"; import { updateJobStatus, @@ -53,7 +52,6 @@ export interface EncodeStageInput { /** Output dimensions (post-deviceScaleFactor). */ width: number; height: number; - fps: Fps; /** True when the output format requires an alpha channel; selects frame extension. */ needsAlpha: boolean; /** True iff the composition has audio. Drives the sidecar copy. */ @@ -66,7 +64,6 @@ export interface EncodeStageInput { preset: ReturnType; effectiveQuality: number; effectiveBitrate: string | undefined; - useGpu: boolean | undefined; /** Producer config — enables the chunked-concat encoder when on. */ enableChunkedEncode: boolean; chunkedEncodeSize: number; @@ -89,7 +86,6 @@ export async function runEncodeStage(input: EncodeStageInput): Promise