Play DCPs and IMPs
from your own library

DCP Screen plays DCPs and IMF packages from a library of folders. It picks the KDM for an encrypted composition from a store of KDMs, runs playlists with intermissions and start times, shows subtitles and captions, and verifies packages with DCP Doctor.

Get DCP Screen See what it does

Get DCP Screen

Add the folders your packages are in, add the KDMs for encrypted compositions, and play.

Windows

Installer .exe / .msi, x86_64

Download latest

macOS

.dmg, Apple Silicon

Download latest

Linux

.AppImage / .deb / .rpm, x86_64

Download latest

The macOS app is not notarized, so the first time it is blocked, open System Settings, Privacy & Security, and choose Open Anyway. Make the AppImage executable with chmod +x before running it. The Windows installers are unsigned, so if SmartScreen stops one, choose More info, then Run anyway.

Free and open source under the AGPL. No licence key, no seat limits, no subscription.

From the library to the screen

Grouped by the job in front of you, from the folders your packages are in to the picture on the screen.

Library and keys

A library of folders

Add the folders your packages are in. DCP Screen finds the DCPs and IMF packages under them at startup and on Refresh, and lists each composition with its standard, length and whether it is encrypted.

A store of KDMs

Add KDM puts a KDM in the store. The Keys view lists each one with its title, composition and validity window, and says whether it is valid now, not yet valid, expired or made for another certificate. Settings holds the certificate and private key the KDMs are made for.

The right KDM at play time

An encrypted composition plays with the KDM from the store that is valid now. In a playlist, the KDM is picked when the row loads.

Verify with DCP Doctor

Verify runs DCP Doctor's strict check on a DCP, or its IMF checks on an IMP, as a job in a process of its own. Cancel or quitting the app stops it at once. The library shows each package's result and its error count.

Version files and supplemental IMPs

A version file plays with the reels and sound it takes from its original version in the library. A supplemental IMP takes the picture and sound it lacks the same way. When the original version is missing, the play is refused, naming the assets no package holds.

The player

A window of its own

Play opens the player as a normal window, and the library stays on the main window. F, a double click or the full screen button go full screen on the display chosen in Settings. Escape leaves full screen.

Controls on mouse-over

Moving the pointer over the picture shows play and pause, the scrubber with the time, Stop and full screen. They fade out while playing and stay while paused. Space pauses, and Stop or closing the window ends playback.

Subtitles and captions

SMPTE timed text, encrypted ones included, and Interop text or PNG subtitles show over the picture, closed captions too. A Subtitles button names the language and hides or shows them. A Language button switches languages when a track has several. An IMP's IMSC subtitles show too, text and image.

IMF packages

An IMP lists each composition with its application and the colour primaries and transfer its picture signals. It plays with its first audio track through the App 2E colour path. An encrypted IMP picture plays with a KDM from the store.

Stereoscopic 3D

A 3D DCP plays as the left eye, the right eye, side by side, or top and bottom, as set in Settings. While it plays, clicking the output in the controls steps to the next one.

Picture and sound settings

Brightness, masks on each edge, scaling (fit, fill or native), the sound device and layout, an A/V delay, a subtitle offset and a subtitle colour. A change applies to a composition already playing.

Monitor profile

DCP pictures are shown through an ICC display profile, picked as a file or, on Linux, from the profiles colord has for the full screen display. Without one, the player shows sRGB.

Decode resolution

The CPU decodes JPEG 2000 at full, half or quarter resolution. Automatic starts each composition at full and steps down one scale when the frame rate stays under the composition's rate for 3 seconds. The optional Grok GPU accelerator, a commercial plugin, decodes on the GPU at full resolution.

Playlists

Compositions and intermissions

A playlist runs compositions and intermissions in order. One composition follows another with no black frame between them. An intermission holds black or a still image for its length. Each row shows when it is expected to start.

In and out points

A composition row can play part of its composition, from its In timecode to the frame before its Out timecode. Type the timecode, or set it from the frame on screen while the row plays.

Start times

A row with a start time waits on black until that local time. When the row before runs past it, the row starts late and the Playlist view shows a warning. A composition that cannot play is skipped, with the reason on the Playlist view.

In the booth

Settings lock

A password of at least 8 characters locks the settings, the library folders and the KDM store. Playing, verifying and playlists stay open. A wrong password holds off the next try for 5 seconds. The lock does not stop anyone who can edit the user's files.

HDCP check

"Require HDCP for encrypted content" plays an encrypted composition only when the output the player window is on reads HDCP on, and stops within 2 seconds of it going off. On Linux that is the DRM Content Protection property, and GNOME and KDE never turn HDCP on, so on those desktops the setting blocks every encrypted composition. On Windows the player asks the driver for HDCP through Output Protection Manager and plays once every output of its monitor reads it on.

For developers

DCP Screen is a Tauri app over postkit and guikit. Contributions welcome.

1

Clone

git clone --recurse-submodules https://github.com/PostPerfection/dcpscreen.git

2

Run the desktop app

cd dcpscreen/gui && pnpm install && pnpm tauri dev

Grok, FFmpeg and libmpv must be found by pkg-config at build time. Linux only for now.

3

Built on postkit and guikit

The package library, KDM store, playlist timing and JPEG 2000 player are in postkit. The player window is from guikit, shared with DCP Wizard and IMF Wizard.

4

Source and issues

Build notes, tests and the AGPL-3.0 licence on GitHub.