@hyperframes/producer 0.9.13 → 0.9.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,6 +44,8 @@ export interface PadTrimAudioInput {
44
44
  audioPath: string;
45
45
  /** Path the helper writes the duration-corrected audio to. */
46
46
  outputPath: string;
47
+ /** The PCM `audioPath` was encoded from: a pad, trim or peak correction encodes it instead of decoding the AAC. */
48
+ sourcePath?: string;
47
49
  signal?: AbortSignal;
48
50
  /** Deadline for each ffmpeg process; defaults to the engine's `ffmpegProcessTimeout`. */
49
51
  timeoutMs?: number;
@@ -126,12 +128,16 @@ export declare function constrainAacTruePeak(input: {
126
128
  timeoutMs?: number;
127
129
  probeTruePeakDbfs?: (audioPath: string, signal?: AbortSignal) => Promise<number>;
128
130
  encodeAac?: AacEncoder;
131
+ rewriteSource?: SourceRewriter;
129
132
  }): Promise<{
130
133
  success: boolean;
131
134
  error?: string;
132
135
  failureReason?: "external_interruption";
133
136
  loweredDb?: number;
137
+ sourceStale?: true;
134
138
  }>;
139
+ /** Writes `sourcePath` through `filter` to `outputPath` as float PCM. */
140
+ type SourceRewriter = (sourcePath: string, outputPath: string, filter: string) => Promise<StepResult>;
135
141
  export declare function defaultProbeVideoFrameInfo(videoPath: string, signal?: AbortSignal): Promise<ProbeVideoFrameInfo>;
136
142
  export declare function runFfprobeJson<T>(args: string[], signal?: AbortSignal): Promise<T>;
137
143
  export {};
@@ -27,6 +27,7 @@ export interface AssembleStageInput {
27
27
  videoOnlyPath: string;
28
28
  /** Mixed audio path (only read when `hasAudio` is true). */
29
29
  audioOutputPath: string;
30
+ audioPcmPath?: string;
30
31
  /** Final on-disk output. A directory when `format` is `"hls"`. */
31
32
  outputPath: string;
32
33
  hasAudio: boolean;
@@ -41,12 +41,16 @@ export interface AudioStageInput {
41
41
  assertNotAborted: () => void;
42
42
  /** Where a per-track failure's detail goes. Optional so tests need not pass one. */
43
43
  log?: ProducerLogger;
44
+ /** Leave the delivered PCM in `workDir` for the assemble stage; its owner removes the dir. */
45
+ keepDeliverySource?: boolean;
44
46
  }
45
47
  export interface AudioStageResult {
46
48
  /** Actual delivery attenuation, for the render warning and metadata. */
47
49
  audioLoweredDb?: number;
48
50
  /** Always `join(workDir, MIXED_AUDIO_FILENAME)`. */
49
51
  audioOutputPath: string;
52
+ /** The PCM `audioOutputPath` encodes, when `keepDeliverySource` asked for it. */
53
+ deliverySourcePath?: string;
50
54
  /** True iff the audio mix actually produced a file. False when there are no audio elements. */
51
55
  hasAudio: boolean;
52
56
  /** Wall-clock ms for the audio mix phase. Zero-elements path is near-zero but always set. */
@@ -44,7 +44,10 @@ import type { ProducerLogger } from "../../../logger.js";
44
44
  import type { ProgressCallback, RenderJob } from "../../renderOrchestrator.js";
45
45
  import type { SdrStreamingCapturePlan } from "../capturePlan.js";
46
46
  export declare function resolveCaptureStallTimeoutMs(): number;
47
- type StalledSession = Pick<CaptureSession, "captureMode" | "captureStep">;
47
+ type StalledSession = {
48
+ captureMode: CaptureSession["captureMode"];
49
+ captureStep?: string;
50
+ };
48
51
  export declare function raceAgainstStall<T>(promise: Promise<T>, deadlineMs: number, input: {
49
52
  session: StalledSession;
50
53
  frameIndex: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/producer",
3
- "version": "0.9.13",
3
+ "version": "0.9.15",
4
4
  "description": "HTML-to-video rendering engine using Chrome's BeginFrame API",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,11 +35,11 @@
35
35
  "postcss": "^8.4.0",
36
36
  "puppeteer": "~25.11.0",
37
37
  "puppeteer-core": "^25.11.0",
38
- "@hyperframes/lint": "0.9.13",
39
- "@hyperframes/core": "0.9.13",
40
- "@hyperframes/engine": "0.9.13",
41
- "@hyperframes/parsers": "0.9.13",
42
- "@hyperframes/studio-server": "0.9.13"
38
+ "@hyperframes/core": "0.9.15",
39
+ "@hyperframes/engine": "0.9.15",
40
+ "@hyperframes/lint": "0.9.15",
41
+ "@hyperframes/parsers": "0.9.15",
42
+ "@hyperframes/studio-server": "0.9.15"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^25.0.10",
@@ -48,7 +48,7 @@
48
48
  "tsx": "^4.21.0",
49
49
  "typescript": "^5.7.2",
50
50
  "vitest": "^4.1.11",
51
- "@hyperframes/aws-lambda": "0.9.13"
51
+ "@hyperframes/aws-lambda": "0.9.15"
52
52
  },
53
53
  "engines": {
54
54
  "node": ">=22"