Produce broadcast-grade MXF OP1a or Netflix IMF masters with HDR dynamic metadata (Dolby Vision / HDR10+), SDI capture/playout, ACES color management, CEA-608/708 captions, and timecode-accurate delivery. Use when the user says "deliver to broadcast", "make an IMF for Netflix", "MXF OP1a", "SDI ingest", "Dolby Vision profile 8.1", "convert DV profile 7 to 8.1", "broadcast master", or anything about professional broadcast/OTT mastering.
What: Turn a source master into a broadcast-spec or OTT-spec deliverable — MXF OP1a for traditional broadcast, IMF (J2K + XML CPL/PKL/ASSETMAP) for Netflix/Amazon, with HDR dynamic metadata preserved and captions intact.
decklink-tools, decklink-docs, ffmpeg-probe, media-mediainfo, ffmpeg-ivtc, ffmpeg-hdr-color, hdr-dovi-tool, hdr-hdr10plus-tool, hdr-dynmeta-docs, ffmpeg-ocio-colorpro, vfx-oiio, vfx-openexr, ffmpeg-captions, ffmpeg-mxf-imf, ffmpeg-quality, media-cloud-upload.
Use decklink-tools with -f decklink, explicit format code (Hp50, Hi59, ), (or on 10-bit-capable devices). Encode to ProRes 422 HQ + PCM 24-bit 48 kHz working master.
2k24-pixel_format uyvy422yuv422p10leUse ffmpeg-probe and media-mediainfo. Capture: exact frame rate (numerator/denominator), interlace/progressive, pix_fmt, bit depth, chroma subsampling, color primaries/transfer/matrix/range, audio channel layout, caption track(s), starting timecode, drop-frame flag.
If 29.97i is telecined film, use ffmpeg-ivtc — fieldmatch → decimate in that exact order — to recover 23.976p.
hdr-dovi-tool. Extract RPU (extract-rpu), convert profile 7 → 8.1 for OTT (convert --mode 2), re-inject into the final encode (inject-rpu).hdr-hdr10plus-tool. Extract JSON (extract), optionally edit scene metadata, inject back (inject).Never transcode while trying to preserve DoVi/HDR10+ inline — the SEI NAL units get stripped. Extract → encode fresh → re-inject.
Use ffmpeg-ocio-colorpro for OCIO-config-driven ACES transforms. For EXR sources, conform through vfx-oiio → vfx-openexr first.
Use ffmpeg-captions. Extract with -c:s copy or copy-cc. Re-inject through the transcode. Naive -c copy often drops captions.
Use ffmpeg-mxf-imf. Spec: mpeg2video or XAVC / DNxHR / ProRes depending on house spec, yuv422p, 50 M bitrate typical, PCM audio, starting timecode 01:00:00:00 (broadcast convention).
Use ffmpeg-mxf-imf with J2K encoding, PCM 24-bit 48 kHz 8-ch, emit CPL XML + PKL + ASSETMAP. Validate with Photon (Netflix's open-source IMF validator).
Run ffmpeg-quality (VMAF vs source) and a deep media-mediainfo report. Compare to the delivery spec sheet.
Aspera for Netflix, S3 / rclone for general broadcast, both via media-cloud-upload.
hdr-dovi-tool.-f mxf_opatom).vfx-openexr → OIIO → J2K encode.-c:v copy where possible; otherwise extract → encode → inject.-x265-params master-display unit is 0.00002 for chromaticity and 0.0001 for luminance. Wrong units = invalid SEI.smpte2084) and HLG (arib-std-b67) are incompatible transfer curves. Do not mix without the zscale=t=linear→format=gbrpf32le sandwich.bt2020nc) is the default. bt2020c (Constant Luminance) is rarely correct.-flags +ilme+ildct plus -top 1 (TFF) or -top 0 (BFF). Wrong field order produces a zipper pattern every frame.01:00:00:00 (1 h pre-roll). Archives often use 00:00:00:00.-c:s mov_text or an explicit SCC sidecar. Naive -c copy drops captions.Hp50 = 1920×1080p50, Hi59 = 1080i59.94, 2k24 = 2K 24p).decklink-tools captures the tape to ProRes 422 HQ master. ffmpeg-probe confirms Rec.2020 PQ. hdr-dovi-tool extracts RPU profile 7 and converts to 8.1. ffmpeg-mxf-imf encodes J2K IMF with captions and PCM audio. hdr-dovi-tool inject-rpu adds the 8.1 track. Photon validates. media-cloud-upload Asperas to Netflix.
workflow-hdr — HDR color-pipeline details (PQ↔HLG, ACES, tone mapping).workflow-vfx-pipeline — EXR / OIIO feeding the delivery master.workflow-analysis-quality — VMAF + MediaInfo QC gate.