mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-07 18:26:17 +00:00
feat(cli): add --output-resolution to lambda render
Allows authored-at-1080p compositions to render at 4K/2K via Chrome deviceScaleFactor supersampling without re-laying-out the composition. Plain --width 3840 silently lays out at 1920×1080 because data-width/ data-height attrs override Config.width — this flag is the supported way to ask the renderer to supersample. Accepts canonical CanvasResolution names (landscape, landscape-4k, portrait, portrait-4k, square, square-4k) and aliases (1080p, 4k, uhd, hd, 1080p-portrait, 4k-portrait, 1080p-square, 4k-square). Wired through render + render-batch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
committed by
James Russo
co-authored by
Claude Opus 4.7
parent
154359d95d
commit
6d1236a0cc
@@ -28,6 +28,7 @@ import type {
|
||||
SerializableDistributedRenderConfig,
|
||||
SiteHandle,
|
||||
} from "@hyperframes/aws-lambda/sdk";
|
||||
import type { CanvasResolution } from "@hyperframes/core";
|
||||
import { c } from "../../ui/colors.js";
|
||||
import { errorBox } from "../../ui/format.js";
|
||||
import {
|
||||
@@ -60,6 +61,8 @@ export interface RenderBatchArgs {
|
||||
fps: 24 | 30 | 60;
|
||||
width: number;
|
||||
height: number;
|
||||
/** See {@link RenderArgs.outputResolution}. */
|
||||
outputResolution?: CanvasResolution;
|
||||
format: DistributedFormat;
|
||||
codec?: "h264" | "h265";
|
||||
quality?: "draft" | "standard" | "high";
|
||||
@@ -199,6 +202,7 @@ export async function runRenderBatch(args: RenderBatchArgs): Promise<void> {
|
||||
fps: args.fps,
|
||||
width: args.width,
|
||||
height: args.height,
|
||||
outputResolution: args.outputResolution,
|
||||
format: args.format,
|
||||
codec: args.codec,
|
||||
quality: args.quality,
|
||||
|
||||
@@ -10,6 +10,7 @@ import type {
|
||||
DistributedFormat,
|
||||
SerializableDistributedRenderConfig,
|
||||
} from "@hyperframes/aws-lambda/sdk";
|
||||
import type { CanvasResolution } from "@hyperframes/core";
|
||||
import { c } from "../../ui/colors.js";
|
||||
import {
|
||||
reportVariableIssues,
|
||||
@@ -32,6 +33,14 @@ export interface RenderArgs {
|
||||
fps: 24 | 30 | 60;
|
||||
width: number;
|
||||
height: number;
|
||||
/**
|
||||
* Optional output resolution preset that engages Chrome `deviceScaleFactor`
|
||||
* supersampling. When set, the composition is laid out at the canvas size
|
||||
* declared by `data-width`/`data-height` (or `--width`/`--height`) and
|
||||
* supersampled to the preset's dimensions — `landscape-4k` (3840×2160)
|
||||
* from a 1920×1080 layout uses DPR 2, etc.
|
||||
*/
|
||||
outputResolution?: CanvasResolution;
|
||||
format: DistributedFormat;
|
||||
codec?: "h264" | "h265";
|
||||
quality?: "draft" | "standard" | "high";
|
||||
@@ -99,6 +108,7 @@ export async function runRender(args: RenderArgs): Promise<void> {
|
||||
fps: args.fps,
|
||||
width: args.width,
|
||||
height: args.height,
|
||||
outputResolution: args.outputResolution,
|
||||
format: args.format,
|
||||
codec: args.codec,
|
||||
quality: args.quality,
|
||||
|
||||
Reference in New Issue
Block a user