Create IMF Packages
with IMF Wizard

Open-source CLI tool and desktop GUI for creating standards-compliant Interoperable Master Format packages. Supports encoding, transcoding, Dolby Vision, ACES, subtitles, loudness metering, and Netflix Photon validation.

View on GitHub Quick Start

Features

Standards-compliant IMF package creation, from essence to validated delivery.

📦

AS-02 MXF Wrapping

Wrap JPEG 2000 codestreams and PCM audio into SMPTE 2067-5 compliant MXF track files with full metadata.

🎬

Image Encoding Pipeline

Accept DPX, TIFF, EXR, PNG, BMP, JPEG input — auto-encode to JPEG 2000 via grok (GPU and CPU).

🎞️

ProRes / DNxHR Transcode

Transcode ProRes, DNxHR, H.264, H.265, and AV1 video files to image sequences via ffmpeg.

📋

Multi-CPL & Supplemental

Create multi-composition IMPs and supplemental versions with segment replacement workflows.

📝

TTML Subtitles & Captions

Package TTML / IMSC subtitles as AS-02 timed text MXF. Convert SCC and SRT to TTML.

🎥

Dolby Vision & HDR10+

Inject Dolby Vision RPU and HDR10+ dynamic metadata for HDR IMF packaging.

🎨

ACES (App#5) Colour

BT.709, BT.2020 PQ/HLG, P3-D65, and ACES colour spaces with proper metadata signaling.

📊

Loudness Analysis

EBU R128 and ATSC A/85 loudness measurement with compliance badges and normalization.

Photon Validation

Validate output IMPs using Netflix Photon for SMPTE conformance checking and error reporting.

Delivery Presets

One-click configuration for Netflix, Disney+, Amazon, Apple TV+, Cinema 2K/4K, Broadcast, Archival.

🔐

Hash & Signing

SHA-1 hash computation for all assets with optional XML-DSIG signing for secure delivery.

🖥️

Desktop GUI

Tauri 2 desktop app with dark theme, drag-and-drop, timeline editor, metadata editor, and job queue.

🎞️

ProRes IMF

Create IMF packages directly from ProRes .mov files. Apple TV+ delivery ready.

🔤

Subtitle Burn-In

Permanently render SRT/TTML/SCC subtitles into video frames for festival delivery.

🎬

IMF → DCP

Convert IMF packages to Digital Cinema Packages for theatrical exhibition.

📊

Bitrate Analytics

Per-second bitrate charts, histograms, and statistics. JSON export for dashboards.

🚀

Batch Delivery

Create IMPs for Netflix + Disney+ + Amazon + Apple TV+ in a single command.

🌐

REST API Server

HTTP interface for automated workflows. Endpoints for create, validate, encode, transcode, and job management.

✂️

EDL / FCP XML Import

Parse CMX 3600 EDL and Final Cut Pro XML timelines into edit events for CPL assembly.

🔍

Frame Comparison

PSNR/SSIM frame-accurate comparison between two IMPs with visual diff reports.

🔌

Plugin System

Discover and execute Python plugin scripts with pre/post hooks for extensible workflows.

🎵

Dolby Atmos ADM Import

Import ADM Broadcast Wave Format files and wrap to IAB MXF for immersive audio delivery.

🏷️

MCA Label Generation

SMPTE ST 377-4 Multi-Channel Audio labeling with 5.1, 7.1, and stereo soundfield presets.

🗣️

Audio Description

Mix AD narration track with main audio using intelligent ducking for accessibility compliance.

🎨

3D LUT Application

Apply .cube LUT files to image sequences for color grading in the IMF pipeline.

🌈

ACES Color Pipeline

Full IDT→RRT→ODT pipeline via ctlrender with automatic ffmpeg colorspace fallback.

⏱️

A/V Sync Detection

Detect audio/video drift and auto-fix with precision trimming or padding.

Platform Compliance

Validate against Netflix, Disney+, Amazon, Apple, Cinema 2K/4K, and Broadcast delivery specs.

📊

Detailed QC Report

HTML report with package info, track listing, loudness measurements, and compliance status.

📝

CPL Annotation

Add revision notes, author metadata, and version tracking to CPL XML documents.

🧩

Partial Version

Create supplemental IMPs replacing specific reel segments while referencing the Original Version.

🎬

Slate & Leader Generation

Countdown, SMPTE bars, academy leader, text slate, and black — as TIFF image sequences with optional tone.

Subtitle Retiming

Convert TTML/SRT timing between framerates (24→25, 23.976→24, etc.) with stretch or recount modes.

📺

SDI Output (Blackmagic DeckLink)

Play J2K frames over HD-SDI to reference monitors via GStreamer + decklinkvideosink. Supports 1080p, 2K, and UHD.

🔔

Webhook Notifications

POST to external endpoints on job completion or failure. Integrates with Slack, Teams, and CI/CD pipelines.

⌨️

Shell Tab Completion

Generate completion scripts for bash, zsh, and fish. Auto-complete 52 subcommands and flags.

📄

XSD Schema Validation

Validate CPL, PKL, and AssetMap XML against SMPTE ST 2067 XSD schemas via xmllint.

📑

PDF QC Reports

Generate print-ready PDF quality control reports using wkhtmltopdf or weasyprint.

Installation

Build from source in minutes. Requires Rust 1.85+.

Prerequisites

RequiredRust toolchain (1.85+)
RequiredCMake (for asdcplib FFI build)
RequiredOpenSSL, Xerces-C (for asdcplib)
Optionalgrok (J2K encode/decode, GPU and CPU)
Optionalffmpeg / ffprobe (transcode, loudness)
OptionalJava + Netflix Photon (validation)
OptionalNode.js + Rust (GUI build)
Optionalxmllint / libxml2-utils (XSD schema validation)
Optionalwkhtmltopdf or weasyprint (PDF reports)
Optionalcurl (webhook notifications)

Build Steps

1

Clone

git clone --recurse-submodules https://github.com/DcpDoctor/imfwizard.git

2

Build CLI

cd imfwizard && mkdir build && cd build && cmake .. && make -j$(nproc)

3

Run Tests

ctest in the build directory to verify everything works.

4

GUI (Optional)

cd gui && npm install && npm run tauri dev

Desktop GUI

Full-featured Tauri 2 desktop application with dark theme.

🌙 Dark Theme

Native dark mode with optional light theme toggle. Properly styled on Linux/WebKitGTK.

📂 Drag & Drop

Drop WAV, TTML, or image sequence files directly onto the app to import them.

🎬 Timeline Editor

Visual segment arrangement for video, audio, and subtitle tracks with drag positioning.

📊 Loudness Meter

EBU R128 / ATSC A/85 compliance measurement with pass/fail indicators.

📝 Metadata Editor

Edit CPL annotations, content versioning, locale, and content kind for existing IMPs.

⚡ Presets

Netflix, Disney+, Amazon, Apple TV+, Cinema, Broadcast, and Archival delivery presets.

🔔 Notifications

System notifications when long-running jobs (encode, validate, create) complete.

📋 Job Queue

Background daemon for batch processing. Submit, monitor, and cancel jobs from the GUI.

🕐 Recent Projects

Quick access to the last 8 IMPs you created or validated.

🎥 Preview Player

Frame-by-frame J2K playback with scrub bar and waveform display.

🔀 Supplemental

Guided workflow for creating versioned supplemental IMPs with segment replacement.

✅ Validation

One-click Netflix Photon validation with detailed error reporting in the GUI.

📊 Analytics Dashboard

Per-second bitrate charts, histograms, and statistics for J2K streams.

🔤 Burn-In

Burn SRT/TTML subtitles permanently into video — for festival screeners.

🚀 Batch Deliver

Select target platforms with checkboxes and deliver to all in one click.

🎬 IMF → DCP

One-click conversion from IMF to Digital Cinema Package for theatrical.

Quick Start

Create your first IMP in minutes.

# Create IMP from J2K + WAV
$ ./imfwizard create \
    --title "My Feature Film" \
    --video /path/to/j2k_frames/ \
    --audio /path/to/audio.wav \
    --output /path/to/output_imp/

# Create IMP with subtitles and HDR (auto-encodes DPX to J2K)
$ ./imfwizard create \
    --title "My HDR Film" \
    --video /path/to/dpx_frames/ \
    --subtitle /path/to/subs.ttml \
    --color-space bt2020-pq \
    --output /path/to/output/

# Use a delivery preset
$ ./imfwizard create --preset netflix --video frames/ --audio audio.wav -o out/

# Measure loudness
$ ./imfwizard loudness /path/to/audio.wav

# Validate with Netflix Photon
$ ./imfwizard validate /path/to/imp/

How Does IMF Wizard Compare?

Feature comparison with easyDCP IMF Studio — the industry-standard commercial tool.

IMF Wizard — Free & Open Source
Feature IMF Wizard easyDCP IMF Studio
Create IMF packages (App#2 / App#2E)
Supplemental / Versioned IMPs
Multi-CPL timeline
Command-line interface (CLI)
Netflix Photon validation
Dolby Vision 4.0 packaging
TTML / IMSC subtitles
Up to 4K resolution
Wide framerate support (23.98–120 fps)
JPEG 2000 encoding / transcoding
Desktop GUI
HD-SDI output (Blackmagic)
Subtitle burn-in
ProRes IMF profiles
IMF Wizard Advantages
HDR10+ metadata packaging
EBU R128 loudness measurement
Job queue daemon (batch processing)
Watch folder automation
Cloud delivery (AWS S3 / Aspera)
Forensic watermarking
Accessibility (AD, HoH)
ACES colour management
Digital signatures (SMPTE 430-6)
Delivery presets (Netflix, Disney+, Amazon, Apple)
Batch multi-platform delivery
IMF-to-DCP conversion
Bitrate analytics dashboard
Linux support
Open source (GPL-3.0)
IMF Wizard Premium
IMF package diff (compare IMPs)
OTIOZ / OpenTimelineIO import
Multi-node distributed render
KDM generation (SMPTE 430-1)
Dolby Vision Profile 8.1
MXF playback & probe
Forensic watermarking
Asset browser with thumbnails
Prometheus metrics endpoint
Docker / Flatpak / .dmg packaging
easyDCP Exclusives
GPU / CUDA accelerationPlanned✓ (Windows)
Real-time IMF playbackPlanned

Capabilities

Comprehensive IMF workflow — from raw footage to validated delivery.

Input

Any Source Format

J2K, DPX, TIFF, EXR, PNG, ProRes, DNxHR, H.264, H.265, AV1. Auto-detects and converts.

Packaging

Full IMP Creation

OV & Supplemental IMPs, multi-CPL, TTML subtitles, XML signing, SHA-1 hashing.

Colour

HDR & ACES

Dolby Vision 4.0, HDR10+, BT.2020 PQ/HLG, P3-D65, ACES App#5 colour management.

QC

Validation & Metrics

Netflix Photon, loudness metering, VMAF/PSNR/SSIM, bitrate analysis, QC reports.

Workflow

Automation

Job queue daemon, watch folder, delivery presets, EDL/AAF conform, S3 upload.

GUI

Desktop App

Tauri 2 GUI with dark theme, drag-drop, timeline, metadata editor, notifications.