Multimodal inspection / Guide 99
VFX Compositing Readiness Starts with Real Frames and Color Metadata
Check VFX compositing readiness through frame manifests, decoded file evidence, color-space metadata, and channel contracts before a compositor accepts delivery.
Illustrative engineering guide. Examples are not client deployments, production-ready integrations, or evidence of measured results. Validate the design with your domain and security owners.

A hypothetical VFX delivery arrives with a contact sheet showing clean foreground edges. The assistant declares it ready for compositing. The actual sequence is missing frame 1002, one file has a different data window, and the RGB channels were exported through a display transform without correct color-space metadata. The contact sheet is attractive evidence of appearance, but it is not evidence that the delivered files satisfy the shot contract.
Readiness requires inspection of real file frames in production. A filename pattern, vendor spreadsheet, or preview movie cannot establish that every expected frame exists, decodes, has the correct channels, and carries usable color interpretation. The assistant may locate suspicious edges and summarize findings. Deterministic tools must inventory and inspect the delivery, and a compositor decides whether to accept it or request a corrected version.
Declare the Delivery Contract
Freeze production, shot, task, delivery version, manifest digest, expected frame range, handles, rational frame rate, and source plate references. State whether numbering is inclusive and whether retiming has already been applied. Frame 1001 may map to timeline time zero, but that mapping is a project convention, not something inferred from the number. Record source presentation timestamps when comparing against a movie reference.
Specify display window, allowed data window behavior, pixel aspect ratio, part and view requirements, channel names and types, alpha association, and color encoding. OpenEXR’s technical introduction distinguishes display and data windows and describes arbitrary channels and multipart images. Overscan outside the display window may be legitimate. A smaller data window may be legitimate for an element, but only when the agreed contract permits it.
Pixel coordinates use the file’s integer pixel space, with horizontal values increasing right and vertical values increasing down. Data windows can have nonzero or negative origins. Preserve those origins when making thumbnails or edge measurements; otherwise, an apparently shifted matte may be a coordinate conversion error. Depth and motion channels require their own units and conventions rather than borrowing RGB semantics.
Color Metadata Is Part of the Evidence
An EXR extension does not prove a particular scene-linear encoding. The OpenEXR technical guidance explicitly discusses color-space identification and stale metadata. Compare actual header metadata, exporter settings, the vendor’s declared pipeline, and controlled reference values. Missing or contradictory color interpretation means unknown, not an automatic default to the studio’s favorite working space.
OpenColorIO’s usage guide explains configuration-driven transforms and states that configuration validation cannot prove the transforms are correct. Pin the configuration and referenced resources by digest, record input and working spaces, and keep display transforms separate from compositing transforms. Normal, depth, identifier, and motion data must not receive an RGB color transform simply because they are stored alongside beauty channels.
Specialist checks should decode actual frames in a bounded sandbox, inspect headers, and measure required pixel properties. FFprobe documentation is relevant to the accompanying reference movie’s streams and frame timestamps, not a replacement for EXR-aware inspection. Sampled edge review cannot establish full-sequence pixel correctness. Inventory coverage, decode coverage, header coverage, and visual measurement coverage need separate denominators.
A No-Write Metadata Fixture
This self-contained Python example tests the HARNESS using synthetic structured file metadata and measurements. It does not inspect real files, decode images, execute a trained vision model, camera, CAD engine, or actual VFX performance test. It performs no filesystem writes or network calls. The dictionaries stand in for results a trusted, sandboxed production reader would obtain from actual frames.
from copy import deepcopy
expected = {1001, 1002, 1003}
window = (0, 0, 1919, 1079)
frames = {n: dict(version="v8", decoded=True, channels={"R", "G", "B", "A"},
display=window, data=window, color="ACEScg",
config="show-config-r3", alpha="premultiplied",
nonfinite_pixels=0) for n in expected}
def readiness(items):
if set(items) != expected:
return "frame-range-review"
for row in items.values():
if row["version"] != "v8" or not row["decoded"]:
return "file-review"
if not {"R", "G", "B", "A"} <= row["channels"]:
return "channel-review"
if row["display"] != window or row["data"] != window:
return "window-review"
if (row["color"], row["config"], row["alpha"]) != (
"ACEScg", "show-config-r3", "premultiplied"):
return "interpretation-unknown"
if row["nonfinite_pixels"] != 0:
return "pixel-review"
return "technical-packet-ready"
assert readiness(frames) == "technical-packet-ready"
assert readiness({1001: frames[1001], 1003: frames[1003]}) == "frame-range-review"
bad = deepcopy(frames)
bad[1002]["color"] = None
assert readiness(bad) == "interpretation-unknown"
bad = deepcopy(frames)
bad[1002]["decoded"] = False
assert readiness(bad) == "file-review"
bad = deepcopy(frames)
bad[1003]["data"] = (100, 100, 500, 500)
assert readiness(bad) == "window-review"
bad = deepcopy(frames)
bad[1001]["nonfinite_pixels"] = 4
assert readiness(bad) == "pixel-review"
print("six synthetic readiness checks passed; no files written")
This example deliberately chooses a strict full-window RGBA contract. Other deliveries require different channels, overscan, deep samples, or views. The zero-nonfinite rule is an illustrative project policy, not a universal EXR rule. The dictionary also cannot represent duplicate frame filenames; the real inventory adapter must detect duplicates and conflicting digests before building this canonical mapping.
The fixture does not verify truthfulness of color tags or alpha association. A production check needs known reference patches, approved test composites, and method-specific pixel tolerances to detect a mislabeled transform or premultiplication error. Record numerical precision, resampling uncertainty, and any geometric registration residual in pixels. Photographic calibration may be irrelevant to a purely digital export, but plate lens and undistortion versions still matter when evaluating geometric alignment.
Accept a Packet, Not a Thumbnail
The compositor receives exact failing frame identifiers, file digests, measured issues, interpretation metadata, and coverage counts. They can request a redelivery or approve a scoped exception. A clean technical packet does not certify artistic integration: spill, grain, defocus, edge treatment, and motion continuity still require appropriate visual review across the shot.
Enforce server-side project authorization and read-only sandbox access to untrusted vendor files. Bound image dimensions, memory, decode time, and external resource resolution. Embedded metadata is not a command to execute scripts or fetch arbitrary LUTs. This extends the data quality quarantine pattern to media without treating a parseable header as trustworthy content.
Never overwrite delivered frames to repair them silently. Approved remediation should create a new version with lineage, independently verified outputs, and a compositor decision. If publishing the review ticket times out, reconcile its shot-and-delivery identity before retrying. Production storage, authorization, decoder behavior, full schema checks, and durable approvals are intentionally absent from the synthetic demonstration.
Acceptance Tests and Evaluation
- Remove one middle frame while retaining the preview movie; reject range completeness based on actual inventory.
- Corrupt one file after header generation; full decode must expose the failure rather than trusting the manifest.
- Remove color interpretation or contradict the exporter declaration; retain interpretation unknown.
- Shift the data-window origin; preserve coordinates and compare against the agreed overscan contract.
- Supply motion vectors in RGB-named channels; require explicit data semantics before any color processing.
- Duplicate a frame number with a different digest; quarantine the delivery rather than selecting the last file.
Baseline against manual compositor intake on complete deliveries. Measure caught adjudicated technical defects divided by all adjudicated technical defects, false blocks divided by all blocked deliveries, and successfully decoded expected frames divided by all expected frames. Report visual checks separately as inspected frames divided by required visual frames. Evaluate by shot and vendor delivery, not thumbnails from the same sequence.
Start with a single flat RGBA delivery contract and a no-write inspection service. Film continuity review addresses editorial comparisons rather than file readiness. The first AI systems engineering deliverable should make one missing frame impossible to hide behind a convincing contact sheet.