Bounded HandBrake video adapter¶
Renderflow exposes video.transcode.whole_file through
adapter.media.handbrake. The adapter creates whole-file MP4 delivery or
mezzanine derivatives. It does not select time ranges, split media, order
segments, or reconstruct segments.
Ownership boundary¶
| Concern | Owner | Contract |
|---|---|---|
| Whole-file delivery transcode | Renderflow | video.transcode.whole_file |
| Temporal decomposition and boundary accuracy | Aniflow | media.video.segment/v1 |
| Ordered segment manifest and reconstruction | Aniflow | media.video.reconstruct/v1 |
| Cross-provider sequencing and artifact routing | Flow | flow.artifact/v1 |
Aniflow may send Renderflow either the original whole video before splitting or
a validated reconstructed whole video after joining. Renderflow never accepts
an Aniflow plan or segment manifest as a substitute for a video input. Flow
must treat the returned flow_artifact as a new lossy derivative and retain
the source relationship included in that record.
Typed presets¶
| Renderflow ID | HandBrake preset | Intended output |
|---|---|---|
fast_720p30 |
Fast 720p30 |
Compact compatible MP4 |
fast_1080p30 |
Fast 1080p30 |
Default compatible MP4 |
creator_1080p60 |
Creator 1080p60 |
High-quality creator upload master |
production_standard |
Production Standard |
Editing or mezzanine handoff |
These stable IDs map to an allowlist of official preset names. Arbitrary HandBrake arguments are not accepted. The registry requires HandBrake 1.6.0 or newer because the Creator preset naming was standardized in that release.
Inspect the contract or plan a transform without running HandBrake:
renderflow video capabilities --format json
renderflow video plan \
--input "source.mp4" \
--output "delivery.mp4" \
--preset "fast-1080p30" \
--format json
Execute the planned shape:
renderflow video transcode \
--input "source.mp4" \
--output "delivery.mp4" \
--preset "creator-1080p60" \
--timeout-seconds 7200 \
--capture-limit-bytes 262144 \
--progress-interval-ms 1000 \
--maximum-output-bytes 21474836480 \
--format json
Process and artifact safety¶
HandBrakeCLI runs directly through renderflow.process/v1; no shell parses
the command. The request declares a wall-clock timeout, bounded stdout and
stderr capture, a progress heartbeat interval, denied network intent, and a
maximum accepted output size. Each adapter request starts only one child
process. Ctrl+C uses the same cancellation token as SDK callers and terminates
the process tree.
HandBrake writes to a randomized temporary MP4 in the destination directory.
Renderflow requires a non-empty file, an MP4 ftyp box, and the configured
size bound before atomically publishing it. Existing output and provenance
files are never replaced. A successful run writes <output>.renderflow.json
with provider/tool versions, preset identity, input/output SHA-256 digests,
argv digest, timing, bounded-output evidence, validation, and a
flow.artifact/v1 projection.
Progress uses renderflow.progress/v1. Heartbeats report elapsed execution
time without claiming an unreliable percentage; the durable transform report
is authoritative.
The machine-readable surfaces are published as the
renderflow.handbrake-capability/v1 schema
and the
renderflow.handbrake-transform/v1 schema.