mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-08-31 02:41:44 +00:00
feat(engine,cli): drawElement fast-capture config + CLI flag (#1916)
## drawElement fast-capture — config + CLI flag (stack 1/6) Foundation layer for the drawElement fast-capture feature: the config surface and CLI/Docker plumbing that the rest of the stack builds on. ### What this adds - **`packages/engine/src/config.ts`** — new config fields for fast capture: `useDrawElement` / `enableDrawElementWorkerEncode` (macOS-GPU `drawElementImage` capture + worker-offloaded JPEG encode), resolved from env in `resolveConfig` (env `HF_DE_WORKER_ENCODE`). Wired alongside main's existing `staticFrameDedup` (unified downstream in 4/6). - **`packages/cli/src/commands/render.ts`** — `--experimental-fast-capture` flag → sets `experimentalFastCapture`; `--debug` passthrough. - **`packages/cli/src/utils/dockerRunArgs.ts`** — pass the fast-capture env through to the container. - **`.github/workflows/fast-video-validation.yml`** — CI job validating fast-capture renders. - `.oxlintrc.json` / `.fallowrc.jsonc` — ignore-pattern housekeeping for the new paths. ### Notes - Config-only + entrypoint; no capture behavior yet (that's 2/6–4/6). - Tests: `config.test.ts`, `dockerRunArgs.test.ts` added. --- **Stack (drawElement fast-capture, rebased onto current `main`, supersedes #1295 + #1444):** 1. **#1916 config + CLI** ← you are here 2. #1917 drawElementImage capture service 3. #1918 3D projection + compositor-effect risk gate 4. #1919 frame-capture core (routing, worker-encode, static-dedup unification) 5. #1920 producer render stages + remote bg-image localizer 6. #1921 lint rule + player media sync ⚠️ Intermediate PRs (1–5) are split by package boundary for review and **do not each compile independently** (cross-file deps); the complete feature is green at the stack tip (#1921) — tsc-clean on engine + producer, 231 tests pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Validates the experimental fast-capture (drawElementImage) VIDEO path on a
|
||||
# native amd64 Linux runner — where chrome-headless-shell's per-frame BeginFrame
|
||||
# drives a real paint each frame, so drawElementImage's snapshot is fresh and
|
||||
# video captures correctly. This is the one part of the feature that could not be
|
||||
# validated locally (macOS has no BeginFrame; Docker-on-rosetta hung).
|
||||
# See docs/fast-capture-limitations.md (Limitation 2).
|
||||
#
|
||||
# Manual trigger: Actions → "Fast-capture video validation" → Run workflow.
|
||||
name: Fast-capture video validation
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
# Manual only. NOTE: currently fails by design — fast capture cannot capture
|
||||
# video on any platform yet (see docs/fast-capture-limitations.md, Limitation 2).
|
||||
# This is the regression gate for if/when fast video is implemented.
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
composition:
|
||||
description: Test composition to render (must contain <video>)
|
||||
default: sub-composition-video
|
||||
min_psnr:
|
||||
description: Min fast-vs-baseline PSNR (dB) to pass
|
||||
default: "25"
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
|
||||
|
||||
- name: Build test Docker image (cached)
|
||||
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
|
||||
with:
|
||||
context: .
|
||||
file: Dockerfile.test
|
||||
load: true
|
||||
tags: hyperframes-producer:test
|
||||
cache-from: type=gha,scope=regression-test-image
|
||||
cache-to: type=gha,mode=max,scope=regression-test-image
|
||||
|
||||
- name: Validate fast-capture video (drawElement + BeginFrame)
|
||||
run: |
|
||||
docker run --rm \
|
||||
--security-opt seccomp=unconfined \
|
||||
--shm-size=4g \
|
||||
-e PRODUCER_VALIDATE_COMP='${{ inputs.composition }}' \
|
||||
-e PRODUCER_VALIDATE_MIN_PSNR='${{ inputs.min_psnr }}' \
|
||||
--workdir /app/packages/producer \
|
||||
--entrypoint bunx \
|
||||
hyperframes-producer:test tsx scripts/validate-fast-video.ts
|
||||
Reference in New Issue
Block a user