DCP Builder 0.3

User's Guide







Copyright 2009-2012 Giuseppe Baruffa, All Rights Reserved




Technical support

Email baruffa@diei.unipg.it, info@dcpbuilder.com

Forum http://dsplab.diei.unipg.it/forums/projects/dcp_builder


Digital Signal Processing Laboratory (DSPLab)
Department of Electronic and Information Engineering (DIEI)
University of Perugia
Via G. Duranti 93, I-06125
Perugia, Italy




First print: February 3rd, 2012



Copyright 2009-2012 Giuseppe Baruffa, All Rights Reserved


Introduction. 1

Quick start for DCP Builder 1

What is a DCP?. 1

DCP Creation. 2

DCP delivery methods. 2

Main characteristics of DCP Builder 2

Editions. 3

Compatibility and tests. 4

Other similar programs. 5

Setup. 8

Supported platforms. 8

Requirements. 10

How to download. 10

Installation. 11

Microsoft Windows. 11

Apple Mac OS X.. 12

GNU Linux. 12

Removal 14

Microsoft Windows. 14

Apple Mac OS X.. 14

GNU Linux. 14

Graphical User Interface. 15

Main panel 16

LCD section. 16

Buttons section. 20

Input panel 20

Video clips. 21

Audio clips. 23

Subtitle clips. 23

Clip formats. 23

DCDM panel 25

Common aspect ratios. 28

DCP panel 33

Engine panel 35

Trace panel 37

Log panel 38

Menu bar 39

File menu. 39

Edit menu. 41

View menu. 46

Help menu. 48

Status bar 50

How-To's. 52

How to build a DCP. 52

How to encode video clips. 54

Video import in Freeware Edition. 55

Video import in Basic edition. 55

How to play a DCP without a server or projector 60

Command line user interface. 61

Technical aspects overview.. 65

Technical specifications of DCPs. 65

Picture MXF files. 65

Sound MXF files. 65

XML files. 66

Stereoscopic DCPs. 66

The XYZ colorspace. 66

How JPEG 2000 works. 69

Lossy coding. 69

Sample data partitioning. 73

Tier-1 Lossless coding. 74

Tier-2 lossy coding and codestream formation. 75

Encoding performance of DCP Builder 76

Project file syntax. 78

Comments. 78

Input video section. 78

InputVideoFileName [string] 78

InputLVideoFileName [string], InputRVideoFileName [string] 78

InputVideoFrameRate [float] 79

InputVideoDownSample [integer] 79

InputVideoRepeat [integer] 79

InputVideoColourSpace [string] 79

InputVideoCustomTransform [list of 9 floats] 79

InputVideoGamma [float] 80

Input audio section. 80

InputAudioFileName [string] 80

InputXAudioFileName [string] 80

InputAudioLayout [float] 81

Input text files. 81

InputTextFileName [string] 81

DCDM section. 81

DCDMPicturePath [string] 81

DCDMXmlPath [string] 81

DCDMSoundPath [string] 82

DCDMSaveType [string] 82

DCDMPictureResolution [string] 82

DCDMPictureResolutionLevels [string] 82

DCDMPictureRate [integer] 82

DCDMSoundRate [integer] 83

DCDMPictureAspectRatio [string] 83

DCDMPictureCustomAspectRatio [string] 83

DCDMPictureBoxing [string] 83

DCDMSubtitleMethod [string] 84

DCDMJ2KPicturePath [string] 84

DCDMNumberOfFrames [integer] 84

DCDMFramesPerReel [integer] 84

DCDMCueList [string] 84

DCDMPictureBitrate [float] 85

DCDMBitrate2 [float] 85

DCDMBypass [string] 85

DCP section. 85

DCPPath [string] 85

DCPType [string] 85

DCPVersion [integer] 86

DCPClipTitle [string] 86

DCPTitle [string] 86

DCPAnnotation [string] 86

DCPIssuer [string] 86

DCPFacility [string] 86

DCPAgency [string] 87

DCPLabel [string] 87

DCPLocale [string] 87

DCPStandard [string] 87

Names of the DCP files [string] 88

Cryptography section (EXPERIMENTAL - DON'T USE) 88

CryptoEncrypt [boolean] 88

Compression engine section. 89

EngineNumberOfThreads [integer] 89

EnginePictureResize [string] 89

EngineSoundResample [string] 89

EngineResume [string] 89

EngineTraceFileName [string] 90

EngineTraceContents [list of strings] 90

EngineLogFileName [string] 90

EngineLog [list of strings] 90

Registration. 91

How to obtain a registration code. 92

Why I ask for your machine fingerprint?. 92

Frequently Asked Questions (FAQ) 93

License. 96

DCP Builder 96

Included libraries. 97

Zlib.. 97

Libbzip2. 97

LibTIFF. 98

Libav. 99

LibPNG.. 99

Libnsbmp. 99

LibFLAC.. 99

LibTarga. 99

Libxml2. 99

OpenDPX.. 99

OpenJPEG.. 100

SQLCipher 100

XMLSec. 100

Bitstream Vera Sans. 100

Glossary. 102

Bibliography. 104

Credits. 106

People. 106

Auxiliary libraries, software, and other things. 107

Changelog. 109

Document history. 111












Quick start for DCP Builder

DCP Builder is a natively multiplatform software that can be used to create Digital Cinema Packages (DCPs), which can be thus played on Digital Cinema projectors.

  • If you are an expert and just need a quick start for creating a DCP using DCP Builder, skip to the section "How to build a DCP".
  • If you want to understand well the operation of the program, you need to read first the "Graphical User Interface" section and then the "Project file syntax" section.
  • If you are still more curious about how a DCP is done "internally", explore the section "Technical specifications of DCPs".

What is a DCP?

A Digital Cinema Package is a collection of digital files used to store and convey Digital Cinema (DC) audio, image, and data streams.[1]

The term has been defined by Digital Cinema Initiatives, LLC in their recommendations for packaging of DC contents.[2] Following to the recommendations, general practice adopts a file structure that is organized into a number of (generally) multi-gigabyte size Material eXchange Format (MXF) files, which are separately used to store audio and video streams, and auxiliary index files in XML format. One such file, the Composition Playlist, defines the playback order of Digital Cinema Packages during presentation.

The MXF files contain streams that are compressed, encoded, and encrypted, in order to reduce the huge amount of required storage and to protect from unauthorized use. The image part is JPEG 2000 compressed, whereas the audio part is linear PCM. The adopted (optional) encryption standard is AES 128 bit in CBC mode.

SMPTE standards are used to conform to the recommendations among different tool vendors and producers.

For more technical information on DCPs, see the Technical aspects section.

DCP Creation

Film producers and distributors generally rely on digital cinema encoding facilities to produce and quality control check a digital cinema package before release. Facilities follow guidelines set out in the recommendations to ensure compatibility with all digital cinema equipment. For bigger studio release films, the facility will usually create a DCDM (Digital Cinema Distribution Master).

A DCDM is similar to DCP, only the frames are in either DPX or TIFF format and both sound and picture are not yet wrapped into MXF files. The frames are then compressed with the JPEG 2000 algorithm, and this step is denoted as DCDM*.

A DCP can be encoded directly from a DCDM. A DCDM is useful for archiving purposes and also facilities can share them for international re-versioning purposes. They can easily be turned into alternative version DCPs for foreign territories. For smaller release films, the facility will usually skip the creation of a DCDM and instead encode directly from the DSM (Digital Source Master) the original film supplied to the encoding facility. A DSM can be supplied in a multitude of formats and color spaces. For this reason, the encoding facility need to have extensive knowledge in color space handling including, on occasion, the use of 3D LUTs to carefully match the look of the finished DCP to a celluloid film print. This can be a highly involved process in which the DCP and the film print are "butterflied" (shown side by side) in a highly calibrated cinema.

Less demanding DCPs are encoded from tape formats such as HDCAM SR. Quality control checks are always performed in calibrated cinemas and carefully checked for errors. QC checks are often attended by colorists, directors, sound mixers, and other personnel to check for correct picture and sound reproduction in the finished DCP.

DCP delivery methods

The most common method uses a hard disk designed specifically for digital cinema servers to ingest from. The hard drives are usually formatted in the Linux EXT2 or EXT3 format. NTFS is occasionally used but is generally not considered reliable as some Linux based digital cinema servers are unable to read this format. Hard drive units are normally hired from a digital cinema encoding company, sometimes in quantities of thousands. Drives are commonly shipped in protective hard cases. The drives are delivered via Express Courier to the exhibition site. Other, less common methods adopt a full digital delivery, using either dedicated satellite links or high speed Internet connections.

Main characteristics of DCP Builder

Main features of the program are:

  • multiplatform - Microsoft Windows, Mac OS X, Linux, 32 and 64 bit;
  • 2K, 4K, and 3D picture format;
  • Flat, scope, HDTV, full, and other custom aspect ratios;
  • 24, 25, 30, 48, 50, and 60 FPS frame rates are supported;
  • 48/96 kHz sound sampling rate;
  • 1.0, 2.0, 5.1, 7.1, and (up to) 16 audio channels layout;
  • converts audio clip formats (WAV, FLAC) plus TIFF/PNG/TGA/DPX/BMP sequence of pictures. It also converts nearly all video formats, if the final user wants to;
  • supports multiple origin RGB color spaces (PAL, NTSC, BT.709, sRGB, etc.);
  • can save Digital Cinema Distribution Master (DCDM and DCDM*) in PPM/AU/J2K/XML format;
  • can use different files for audio, video, and text input;
  • supports SMPTE and Interop DCP formats;
  • can resume work from partially completed DCDM or DCDM*;
  • subtitles in burn-in and Interop mode;
  • DCP finalization success email.

What it does not support:

  • MPEG-2 DCPs;
  • assembly of multiple input clips;
  • video frame rate resampling (audio is slowed-down or speeded-up);
  • pitch shift of audio;
  • encryption, signing, and generation of Key Delivery Message (KDM).


DCP Builder is customized in several editions, in order to satisfy the requirements of the different types of users. Thus, in this user's guide, not all options will be available to all versions of DCP Builder. This will be signaled with a proper logo, e.g., AVAILABLE ONLY IN .... Table 1 lists and compares all the salient characteristics of the different editions: please note that, at the moment of writing, not all editions could be available, and their features could change without notice.

Table 1 - Overview of DCP Builder editions and their features.


FE Freeware Edition

BE Basic Edition

AE Advanced Edition

Microsoft Windows version

Apple Mac OS X version

GNU Linux version

2K & 3D


16 channels audio layout


Imports BMP, TIFF, DPX, PNG, TGA picture sequences

Imports WAV, FLAC audio clips

Imports video clips[3]

Hyperthreading limit




Command line version

Sends email when done

Custom aspect ratio

Custom colorspace

C Quick JPEG 2000 compression engine

Digital signature of XML files

Reels encryption


Compatibility and tests

The DCPs prepared by this program have been tested on the following DC servers or DC software:

  • Hardware players
    • Doremi Labs DCP-2000;[4]
    • Kodak JMN-3000;
    • Kodak SMS;
    • Dolby dss100;[5]
    • Dolby dss200;[6]
    • Doremi Labs IMB-4K;[7]
    • XDC CineStore Solo G3;[8]
  • Software players
    • Fraunhofers EasyDCP player;[9]
    • digitAlls dcpPlayer;[10]
    • 3dtv.at's Stereoscopic player.[11]

Other similar programs

Table 2 presents a list of programs that, to my (and Wikipedia) knowledge, are able to prepare DCPs. For further details, please check out Wikipedia page.[12]

Table 2 - DCP encoding software at a glance.


JPEG 2000




Frame size













CineCert AS-DCP File Access Library[14]





2K, 4K


Windows, Mac OS X, Linux


Doremi CineAsset[15]





2K, 4K


Windows, Mac OS X







2K, 4K




DVS Clipster[17]





2K, 4K




DCPC - Digital Cinema Package Creator[18]





2K, 4K




Prism DCP Encoder[19]





2K, 4K




Yade DCP Encoder





2K, 4K


Windows, Linux


Inition DCP Pro[20]









DCP Tool[21]





2K, 4K









2K, 4K




Fraunhofer IIS easyDCP Creator[23]





2K, 4K


Windows, Mac OS X


MagnaMana FinalDCP[24]





2K, 4K


Windows, Mac OS X


Extron J2KENC[25]














2K, 4K


Windows, Mac OS X, Linux







2K, 4K









2K, 4K


Windows, Linux, Mac OS X


Qube QubeMaster Pro[29]





2K, 4K




Dolby SCC2000[30]





2K, 4K




Cinecert Wailua[31]





2K, 4K


Mac OS X, Linux


QuVIS Wraptor[32]







Mac OS X



Supported platforms

DCP Builder is natively multiplatform: it has been written in C and C++, uses the wxWidgets GUI library[33] and it can be ported to multiple OS and CPU architectures.

The currently supported platforms are:

  • Microsoft Windows, 32 and 64 bit (XP/Vista/7);
  • Mac OS X Intel, 32 and 64 bit (Leopard, Snow Leopard, and following versions);
  • GNU Linux, 32 and 64 bit (Ubuntu/openSUSE and possibly other compatible distributions);[34]
  • FreeBSD (experimental).

In the following, if not differently specified, we will always refer to the Windows version for screenshots and menus. Linux and Mac OS X versions follow exactly the same GUI paradigm, though with minor differences to respect OS interface (minimize/close buttons position, menu position, etc.).

Figure 1 - DCP Builder with Aero interface running on Windows 7.

Figure 2 - DCP Builder with GTK2 interface running on Ubuntu Linux.

Figure 3 - DCP Builder with Quartz interface running on Mac OS X Leopard.


  • 1 GHz CPU or higher (2 GHz multi-core CPU is preferred);
  • 1 GB RAM or higher (2 GB is preferred);
  • 500 GB free disk space available or higher, for clips of duration of 2 hours.

How to download

You can download DCP Builder only from the following websites (the DCPBUILDER.COM domain is generally updated less often)





The direct download link is





The download folder is organized as:

  • dcp/
    • The folder may contain some short testing DCPs built with DCP Builder.
  • docs/
    • This folder contains general documentation and the PDF user manual.
  • linux/
    • This folder contains 32 and 64 bit installation packages for GNU Linux.
  • macosx/
    • This folder contains 32 and 64 bit disk images for Mac OS X.
  • windows/
    • This folder contains the 32 and 64 bit installers for Microsoft Windows.


You must download the version that is most suited to your hardware and OS: please note that 32 bit versions can be installed on 32 and 64 bit platforms, generally, but they do not necessarily provide the same degrees of freedom.

Please be careful when installing 32 and 64 bit versions at the same time, alongside operation has not been tested.

Microsoft Windows

Run the .exe installer (fig. 4) and follow on-screen instructions.

Figure 4 - DCP Builder setup running under Microsoft Windows.

Apple Mac OS X

Double click on the .dmg disk image and drag-and-drop the program over the Applications folder (fig. 5). You may omit to copy the manual, since it is a link to the manual embedded in the bundle.

Figure 5 - DCP Builder disk image contents under Mac OS X Leopard.

GNU Linux

Double click on the .deb or .rpm archive and install with programs like gdebi or KPackageKit (figs. 6 and 7).

Figure 6 - DCP Builder setup running within 'gdebi' under Ubuntu Linux.

Figure 7 - DCP Builder setup running within 'KPackageKit' under openSUSE Linux.

Differently, you can install it from the command line with (Ubuntu)

#> sudo dpkg -i dcpbuilder_03_be_i386.deb

or (openSUSE)


Microsoft Windows

Uninstall the program from the Control Panel or from the proper program menu entry, and follow the given instructions.

Apple Mac OS X

Delete the application from the Applications folder.

GNU Linux

Uninstall the package using Ubuntu Software Center, synaptics, or yast. From the command line, you can issue the following commands

#> sudo dpkg -r dcpbuilder


#> sudo apt-get remove dcpbuilder



#> sudo zypper remove dcpbuilder

The GUI has two different operating modes, compact and extended, which can be selected in the program preferences. The program needs to be restarted in order to change interface.

In compact mode, there is only one window (see previous figures), which you can manage via multiple tabs.

In expanded mode (fig. 8), there are many windows, which can be positioned on the desktop as preferred (if you have two monitors, you could use one of them to see a real color full screen preview of the encoding results).

Figure 8 - DCP Builder running in expanded mode.

In both cases, a number of panels are, each one, dedicated to a particular task or parameters set. They are:

  • Main panel, hosting the LCD display and the operating buttons;
  • Input panel, for the selection of input audio/image clips and their relevant parameters;
  • DCDM panel: to specify the format of the DCP;
  • DCP panel, to set the compression parameters and DCP metadata;
  • Engine panel, to adjust compression settings;
  • Trace panel, hosting a timed log of encoding quality.
  • Log panel, hosting a timed log of actions and responses.

Main panel

The main panel (fig. 9) is composed by two sections: the LCD section and the buttons section.

Figure 9 - The main panel, with the LCD and the operating buttons.

LCD section

The LCD shows some basic information that keeps you up-to-date with the current and actual processing:

  • Time code: in HH:MM:SS.FF format, represents the current advancement status of the DCP (fig. 10).

Figure 10 - Time code.

  • Elapsed time (E): in HH:MM:SS format, shows the elapsed time since encoding began (fig. 11, top).
  • Total time (T): in HH:MM:SS format, shows the expected total time for the encoding (fig. 11, middle).
  • Remaining time (R): in HH:MM:SS format, shows the expected remaining time for the encoding to finish (fig. 11, bottom).

Figure 11 - Elapsed (E), total (T), and remaining (R) processing time.

  • Reel number: in CURRENT/TOTAL format, shows the current reel being worked on and the total number of reels that will be done (fig. 12).

Figure 12 - Current and total number of reels.

  • Frame rate: given in FPS, is a direct indicator of the speed of your CPU in fulfilling the encoding task (fig. 13, top left).
  • Bit rate: given in Mbps, shows how much your current frame is actually being compressed (fig. 13, top right).
  • PSNR quality: given in dB, shows how much your current frame is being corrupted from compression artifacts (fig. 13, bottom).

Figure 13 - Processing frame rate, actual compressed bit rate, and PSNR quality.

  • Machine load: disk usage is represented in terms of percentage of occupied disk space (the disk is that where the DCP is being saved), whereas CPU load is expressed as percent of time dedicated to the encoding process (fig. 14).

Figure 14 Disk usage and CPU load.

  • Preview window: shows a frame every n frames, after decoding. It allows you to predict if the DCP is being done without problems and allows you to keep an eye to the advancement status. Preview can be enabled/disabled via the EditPreview menu (fig. 15, top).

Note: please do not rely on DCP Builder preview for tone corrections!

Note: real-time preview is a costly operation, since your just-encoded frames must be completely decoded. Set a proper update period or disable the preview completely if your main concern is speed.

  • DCP formats: line summarizing the main characteristics of the DCP being created (fig. 15, bottom).

Figure 15 - Preview window and DCP characteristics one-line summary.

  • DCP title (fig. 16): this is imported from the DCDM panel.

Figure 16 - DCP title.

  • Advancement status (fig. 17, top left):
    • READY when the program is ready to encode;
    • MXF during encoding;
    • HASH during the final hashing phase;
    • blinking DONE when the DCP is ready.
  • Advancement slider: shows the percentage of MXF done, during MXF status, or of hashing done, during HASH status (fig. 17, bottom).

Figure 17 - Advancement status and percentage slider during MXF (top) and HASH (bottom) stages.

You can drag-and-drop project files (with .dcb extension) over the LCD for opening them.

Buttons section

There are five buttons that allow controlling the operation:

  • RESET: after a stop or halt action, resets the encoding status.
  • START: begins the encoding process.
  • PAUSE: pause the encoding process (note: this may not be implemented in current release).
  • STOP: gracefully stop the encoding process, meaning that a DCP will be created up to the currently processed frame.
  • HALT: aborts DCP creation entirely, resulting DCP is unplayable.

Figure 18 - Operation buttons.

Input panel

The input panel (fig. 19) allows the user to enter the audio and video clips to be converted into the DCP. Such files can be dragged-and-dropped from your file manager onto the Video, Audio, and Text input panels.[35]

Figure 19 - The input panel.

Video clips

Enter video clips by right-clicking on the list box (fig. 20) and selecting the files you want to include in your project. The video clip must be in one of the supported formats (see tab. 4): in case of a sequence of images, select the first image (the one with the lowest ordinal).

Similarly, files can be also removed from the lists. Use + and keys to raise up/lower down a file in the list.

Figure 20 - Pop-up menu in input clip panel.

You can also decide to enter two different files, one per view, when encoding stereoscopic DCPs (fig. 21).

Figure 21 - Stereoscopic setup in input clip panel.

You cannot enter more than two files: this program does not do nonlinear editing operations such as cut-and-paste of video clips. You must have your final clip already prepared.

Adjust the Frame rate, Downsample, and Repeat values when encoding from a list of sequentially numbered images. Thus, BEFORE entering the sequence of images clip in the video input panel:

  • select the proper frame rate (a sequence of images has, generally, no means to convey frame rate information);
  • choose how many images you want to take out of every group of n (generally, this is set to 1);
  • choose how many times you want to cyclically repeat that sequence (generally, this is set to 1). For instance, you may just enter one single image and virtually replicate this one in order to create a whole static sequence.

Note: to encode faster a DCP with static images, select a folder for DCDM J2K storage and select "Resume from DCDM" in the Engine panel. In this case your sequence will undergo just one J2K transform sequence, and will do a simple copy afterwards.

Moreover, remember to select the proper Colorspace for your input video clip, else color tones could appear very different from wanted ones when projecting. Generally, BT.709 or sRGB are fine for HD contents.

If you are an expert, you can choose your particular colorspace transformation coefficients, by setting a custom colorspace and filling in the 9 transformation coefficients in the proper control.[36]

Just to make an example, if C is your origin color in the source RGB space, then it will be transformed into the destination XYZ colorspace as color C', according to the following relationship


and the tij coefficients are those entered in the GUI control.

The Gamma field must be left empty; just use with care when you want to force a gamma different from the default colorspace one.

Audio clips

Enter audio clips by right-clicking on the list box and selecting the files you want to include in your project. Similarly, files can be also removed from the lists. Use + and keys to raise up/lower down a file in the list.

  • If the video clip has an audio content, too, this will be used for DCP audio. Else, a stereophonic silence track is included.
  • If an auxiliary multichannel audio content is specified, that will be used.
  • If many auxiliary monophonic audio channels are added, they will be used.

Eventually, choose the proper channel layout configuration (up to 16 channels are supported).

A particular care must be made to match, as best as possible, the video frame rates with audio sampling rates. In some particular cases, the program will warn that possible audio glitches will be presented to output. This warning can normally be ignored, but always check your DCP audio before projection (from beginning to end, that is, check that there is no delay sync accumulation).

Subtitle clips

Enter one subtitle file only in SubRip (.srt) format, in the list box. The subtitle file must begin with a spot number, i.e. no blank line. The times are associated with the original frame rate of the video clip, thus a change in video frame rate will keep the subtitles synchronized.

Clip formats

At the time of writing, the supported clip (image, video, audio, subtitle) formats are reported in tables 3 to 6. Some of these formats will not give you the full expected precision, so please read also the accompanying notes.

Table 3 - Supported image sequence formats.


Library used for import




8 bit only






8 and 16 bits



16 bit OK






8, 12, 16 bit (no RGBA)

Table 4 - Supported video formats.


Library used for import


All video codecs supported by FFmpeg

FFmpeg plugin[42]

8 bit only. Due to patenting and licensing reasons, in order to have extended video support, FFmpeg binaries must be downloaded and installed optionally and separately. You are in charge of satisfying and respecting all royalty-related issues when using licensed codecs in FFmpeg.[43]

Table 5 - Supported audio formats.


Library used for import







8, 16, and 24 bit, PCM format only

All audio codecs supported by FFmpeg

FFmpeg plugin42

Due to patenting and licensing reasons, , in order to have extended audio support, FFmpeg binaries can be downloaded and installed optionally and separately. You are in charge of satisfying and respecting all royalty-related issues when using licensed codecs in FFmpeg.43

Table 6 - Supported subtitle formats.


Library used for import




ASCII encoding only, no UNICODE. First character in file must be spot number 1.

DCDM panel

The DCDM panel (fig. 22) allows the user to select the picture and sound properties of the DCP.

The frame rate of video and sampling rate of audio can be decided in the rates section. There are a bunch of rates available, the most standard and working ones are 24 and 48 FPS, for video, and 48 kHz, for audio.

If you entered a SubRip file in the input section, you can also choose the way to embed subtitles in your DCP. The first one, burn-in, of course, superimposes the text right on the images. The other methods use XML and font files.

The total duration of the DCP can be decided by entering the required number of frame, or the duration in seconds. Specifying a value of 0 frames will use all the available frames in the input source. Simply put, you should always set it to 0, unless you are testing.

Moreover, reels can be created every x minutes or having a max storage size or containing a certain number of frames. If you just want one reel, set Frames to 0. However, when you first add a new clip in the video Input panel, the number of frames is used to fill this control (i.e., one reel only).

Reels can also be specified by adding a number of points in the cue list: you can enter a timecode or frame number per line, and a new reel will be created at that timecode.

Making multiple reels out of a single input clip is a debated question. One possible answer is that, if you use a FAT 32 formatted device for storing the DCP (a USB key, for instance), your maximum file size is limited to 2 GB.

You can decide the size of your DCP files by adjusting the Total bitrate value: 250 Mbps is the highest standardized value, so do not exceed to maintain compatibility.

Expert users may also want to change the Component bitrate: this is the maximum bitrate that each one of the three components can achieve.

In the Folders section can be entered the paths of the folders that can (optionally) contain the DCDM files. You can drag-and-drop folders over them.

Figure 22 - The DCDM panel.

Stereoscopic DCPs can be created, provided that you enter two input files in the input video section.

You can also decide the resolution and what the best aspect ratio is for your DCP based on the input material, and you get an idea of how the screen is filled. In the aspect ratio screen, the black area represents the full projection matrix (2048x1080 for 2K or 4096x2160 for 4K), the red area is the active projection area (i.e., the actually encoded picture), and the cyan area is the input video clip picture format (fig. 23).

Figure 23 - The aspect ratio layout area.

Eventually, for the more experienced people, there is the option to completely bypass the DC gamma encoding and the digital headroom scaling.[45] Normally, these options are disabled: in order to enable them, you must visit the EditPreferences dialog. Doing so, the DCDM preparation is completely into your hands. Figure 24 reports the difference, in the DC gamma transfer function, when the normalization constant is used or not: the correct transfer function should be the red one.

Figure 24 Normalized and un-normalized DC gamma transfer function.

Common aspect ratios

Figure 25 presents a visual and direct comparison of the most common aspect ratios used in Digital Cinema and HD video, both for the 2K and 4K paradigms.

WARNING! Don't use a custom aspect ratio unless you know what you are doing! Even if valid, custom aspect ratios are generally not implemented in many projector macro setups, so it should be necessary to ask the projectionist or the installer to modify/add it manually.

Figure 25 - Comparison of common aspect ratios: 2K Scope (2048x858), 2K Flat (1998x1080), 2K HDTV (1920x1080), 2K Full (2048x1080), 4K Scope (4096x1716), 4K Flat (3996x2160), 4K SHDTV (3840x2160), 4K Full (4096x2160).

Figure 26 - Rendering of 4:3 SDTV onto Scope in pillarbox (top) and letterbox (bottom) modes. Red border outlines effective projection screen size. N.B.: 4:3 clips (without cropping) should not be rendered in pillarbox scope, but are best done in pillarbox flat.

Figure 27 - Rendering of 16:9 HDTV onto Scope in pillarbox (top) and letterbox (bottom) modes. Red border outlines effective projection screen size. N.B.: 16:9 clips (without cropping) should not be rendered in pillarbox scope, but are best done in pillarbox flat.


Figure 28 - Rendering of 4:3 SDTV onto Flat in pillarbox (top) and letterbox (bottom) modes. Red border outlines effective projection screen size.

Figure 29 - Rendering of 16:9 HDTV onto Flat in pillarbox (top) and letterbox (bottom) modes. Red border outlines effective projection screen size.

DCP panel

The DCP panel (fig. 30) allows the user to select the format and metadata of the DCP.

Figure 30 - The DCP panel.

The movie is stored in a folder that you can enter or select in the DCP text field (accepts drag-and-drop).

In the Package & files section, the names of MXF reels and XML files are given, whereas in the Composition properties section, you can fill all the metadata of your DCP. In some cases, a predefined list presents some possible choices, which nonetheless can be overridden with custom values.

There are two large buttons (Suggest) that help you to fill automatically some fields.

In Package & file names section, pressing several times the suggest button will give you different naming schemes for the DCP files. Just accept one of them or, if you are an expert, override them to suit your needs (see manual section "Names of the DCP files [string]" for a more detailed explanation).

In the Composition properties section, title, and annotation are filled according to the commonly used digital cinema naming convention.[46]

Engine panel

The engine panel (fig. 31) allows the user to select some processing parameters to use during transcoding.

For example, Resume can be used to start encoding from a partially done DCP: if you dump J2Ks, the program reads them[47] and encoding is faster.

The Resize method is used to adapt original video and audio to the DCP ones:

  • Picture: complexity but accuracy grows as you select copy, nearest, bilinear, lanczos, bicubic, or bspline.
  • Sound: complexity but accuracy grows as you select copy, nearest, linear, or sinc.[48]

The copy option should be selected only when you are sure that the origin format is exactly in the proportion and resolution required by your DCP project.

Figure 31 - The engine panel.

Differently from all other controls, which are disabled during DCP creation, the Threads spin button remains active and allows you to dynamically choose the number of concurrent threads dedicated to compression. For instance, when you need more responsiveness for other tasks done in the encoding PC, you can decrease this value temporarily and increase it back when you are done.

The number of threads is limited as follows:

  • there is a maximum of (virtualCPUs - 1) possible threads (or 2);
  • the maximum limit for threads is 24.[49]

It is also possible to specify the path of a trace file, where information on encoding (PSNR, time, bitrate) is written. This same information is also available on the trace panel, in a nice view.

The trace file is an ASCII text file, with a very simple format, such as

Casella di testo: ...
108  63.8  0  250049472  144232512  66710208  37150080  3.4
120  62.9  0  250023744  148121088  64031424  37605312  3.4
132  61.6  0  250022976  146086464  63366720  40508544  3.4
144  60.2  0  249775872  135135360  72251520  42510528  3.4
156  59.3  0  249834432  134035776  75941568  39974592  3.4

Each line is a tab-separated list of

  • frame number,
  • PSNR (dB),
  • 4K, 2K, and component bit rates (bps),
  • frame rate (fps).

This file can be easily post-processed for recovering the encoding history (fig. 32). An m-script[50] that can be used for loading and drawing the results shown in the figure is available from the download site.

(a) (b)

Figure 32 - PSNR (a) and bitrate (b) history as extracted from the trace file. The shown trace is that obtained with the "Sintel" 2K movie frames.[51]

Eventually, you can also specify a log file, where all the logging is also copied into. A sample log is as follows:

Casella di testo: ...
07/06/2011 12:48:02: CTH00: Compression thread starting
07/06/2011 12:48:02: CTH01: Compression thread starting
07/06/2011 12:48:02: CTH02: Compression thread starting
07/06/2011 12:48:02: DTH00: Decompression thread starting
07/06/2011 12:51:27: CTH#00: Created new reel
07/06/2011 12:54:32: CTH#02: Created new reel
07/06/2011 13:07:44: CTH01: Compression thread exiting
07/06/2011 13:07:45: CTH02: Compression thread exiting
07/06/2011 13:07:46: CTH00: Compression thread exiting
07/06/2011 13:07:46: Finalizing DCP (might take a little time)

Trace panel

The trace panel (fig. 33) hosts a running history view of the DCP encoding process, useful for quality check purposes. The top portion of the panel plots the PSNR, whereas the bottom portion plots the bitrate.

The bitrate plot hosts five different curves:

  • 4K bitrate, valid only if doing 4K, differently it is set at 0;
  • 2K bitrate, that is total for 2K or subtotal for 4K;
  • Y component bitrate;[52]
  • Cx component bitrate;
  • Cz component bitrate.

Left clicking on each panel will pop-up a small menu, allowing to scale, fit, shift, or fix the axes. It is also possible to save a snapshot of every plot as a bmp file.

Figure 33 - The trace panel, showing PSNR (top) and bitrate (bottom) encoding history.

Log panel

The logging panel (fig. 34) allows the user to inspect information emitted during the encoding process.

Figure 34 - The log panel.

At startup, the logger shows all the loaded and compiled libraries.

Every event is time-stamped.

If errors are popped up during normal operation, please check this log window for inspecting details.

Menu bar

File menu

Commands in the File menu (fig. 35) are used to clean, initialize, close, save, or open an existing set of parameters, called project (with extension .dcb). And, of course, to shut down the application.

Figure 35 - The File menu.

New project menu

You can either start from a brand new set of parameters, with all fields clean, or follow the indications of a simple wizard.

Just answer to the simple questions (and follow the hints) that you will be asked, and you'll finish with functional project settings (fig. 36).

Figure 36 - Some steps of the simple wizard procedure.

Edit menu

Commands in the Edit menu (fig. 37) are used to set program preferences and to enable/disable the processing quality preview image.

Figure 37 - The Edit menu.

Preferences menu

Some default program preferences can be setup via the EditPreferences menu.

A dialog will allow changing these parameters:

  • Aspect (fig. 38-a)
    • LCD background color: the color to be used in the LCD background (default is black).
    • LCD foreground color: the color to be used in the LCD foreground (default is green).
    • Layout: change from single window to multiple window layout. Application restart is required.
  • Input (fig. 38-b)
    • BE Enable FFmpeg support: tick if you want to enable support for video input files. This requires that you have installed or compiled a recent version of FFmpeg.[53] For further details, read the section "Video import in Basic edition".
    • BE FFmpeg folder: this is the folder where the ffmpeg and ffprobe executables can be found. If the programs are in your search path, leave this field empty.

Note: if you specify the executables folder, always append the trailing slash or backslash in your path, e.g.,
c:\Program files\ffmpeg\bin\

  • DCP (fig. 38-c)
    • Issuer: default issuer name for your DCPs.
    • Facility: default rating label for your DCPs.
    • Rating label: default rating label for your DCPs.
    • Rating agency: default rating agency for your DCPs.
    • Prompt on overwrite: it will always prompt before overwriting files in the DCP folder.
    • Create folder: if there are output folders that do not yet exist, they will be created (however, hierarchical folder creation is not available).
    • Custom filenames: you may override the standard recommendations and select custom names for volume index and asset map files. Clearly, doing so will render the DCP unplayable. Application restart is required.
  • DCDM (fig. 38-d)
    • White point chromaticity adaptation: the color transformation matrix can be weighted in order to adapt the origin colorspace white point to the SMPTE DCDM white point. This is done by means of a Bradford-type cone response. I do not understand if that is really necessary from a "colorist" point-of-view, so instead of applying it by default, the choice is left to you. I expect feedback on this.
    • Enable gamma/headroom bypass: if you want to create the DCDM entirely on your own responsibility, you can disable DCI gamma encoding and digital headroom in the DCDM panel. For doing so, you must enable this option here.
  • Preview (fig. 38-e)
    • Frame decode interval: increase or decrease the interval between frames that will also be fully decoded in order to obtain a preview. A good trade-off is 1 or 2 previews (interval set to 24 or 12) for each second of clip.

Note: this is also the frame period at which bit rate and PSNR are updated in the LCD panel and in the trace file.

    • XYZ->RGB transform & gamma: activate real colors on your preview panel, slightly decelerating the encoding speed.
  • Other (fig. 38-f)
    • Send mail when done: if the encoding job takes a lot of time, and you are far from your PC, you can get informed by a summary email when the task is accomplished.
    • SMTP data: in order for the email to be sent, you have to provide a valid SMTP server address and port, in the form server_name:port_number (usually, port number is 25, but you have to specify it anyway). You can also customize the From and To fields of the email. The received email will contain some details on the encoding task (title, reels, size, encoding duration, etc.) and, if enabled, the log file of the encoding as an attachment (fig. 39).

Note: the SMTP server must not require any sort of authentication, otherwise no email will be sent.

(a) (b)

(c) (d)

(e) (f)

Figure 38 - The Preferences dialog.

Figure 39 - The email received at the end of an encoding job.

View menu

This menu appears only when expanded mode layout is selected (fig. 40). It can be used to show or hide all the accessory panels (project settings, preview, log, trace) and to take them all on top of the windows stack at once.

Figure 40 - The View menu.

In this case, the aspect of the main panel is that of fig. 9, and the preview lives in a separate window (fig. 42).

Figure 41 - The main panel in expanded layout.

Figure 42 - The preview panel.

In the preview panel, a popup menu allows choosing several things:

  • Fullscreen: go full screen with the preview. If you have a second monitor, you can use it.
  • Zoom: Fit lets the preview always touch from inside the preview panel windows borders, or you can select a variable zoom (25%, 50%, 75%, and 100%) and drag with the mouse to explore several parts of the picture.
  • Stereo: choose between previewing the Left or the Right view.

There is a small one-line summary of encoding quality on the top-left side of the preview: in this case, the reported FPS are averaged on the last 100 frames, thus you can have a running complexity estimation.

Help menu

Commands in the Help menu (fig. 43) are used to show generic information on the program version and author(s), as well as the credits to all the software libraries adopted. A PDF manual (this document) can also be opened.

Moreover, it is also possible to enter the registration code that removes the watermark imprinted on all the images in the rendered DCP. For more info on registration, see Registration section.

Figure 43 - The Help menu.

Other windows are those relevant to About (fig. 44) and Credits (fig. 45).

Figure 44 - The About window.

Figure 45 - The Credits window.

Status bar

The status bar shows a summary of the menu being selected and the current processing status (fig. 46).

Figure 46 - The status bar.

How to build a DCP

Well, it's time for you to create a DCP.

You have several options, such as being guided by the easy wizard

  • Select FileNew projectSimple wizard

or choosing between a number of predefined setups

  • Select FileNew project2K 24 fps Interop (or similar names)

Differently, if you prefer a completely manual configuration, follow these steps:

  • Start the program, and select FileNew projectEmpty project.
  • Add a video clip in the Input panel video section.[54]
  • Select the proper origin Colorspace
    • BT.709 is acceptable for HD video footage shot with professional camcorders; sRGB may be good for synthetic contents such as cartoons or computer-generated scenery (e.g. Blender).
    • Write down a Gamma value only if you want to use one that is different from the selected colorspace one, otherwise let the space blank.
  • If the video clip has no audio, and you want no sound, the created DCP will have a stereophonic silence.
    Otherwise, if the video clip has also audio, this will be used.
    If you want to add a different multichannel audio, then add the file in the input panel audio sections.
    If you have a group of monophonic files, one per channel, add them.
  • Remember to select the proper audio channel configuration (indeed, this is automatically inferred by the added files, but this selector is required for improved compatibility).
  • If you want subtitles, you can either burn them in or add them as XML files in CineCanvasTM format. Add a SubRip (.srt) subtitle file in the input field and choose the proper method of embedding.
  • Select size and rates in the DCDM panel.
    • 2K, scope, letterbox, 24 fps, and 48 kHz is the most common format. Choose the best aspect ratio and boxing for your clip.
    • If you have subtitles, choose the burn-in method or the Interop XML+font method (the other methods are not fully tested and could not work).
    • Do not enable picture, sound, j2k, or subtitle folders, if you don't need a DCDM or DCDM*.
    • Set global duration to 0 frames for encoding the whole clip.
    • Set reel size to 0 frames, to have a single reel.

Hint: if you store the DCP on a FAT32 formatted disk, make reels and set their size to a value lower than 2 GB.

    • Set bitrate to a value lower than the standardized maximum 250 Mbps. Values in the range from 100 to 180 Mbps generally produce a good visual result, with a lower bitrate. Values higher than 250 Mbps might not work on certain servers (it's not standardized).
  • Choose the characteristics in the DCP panel.
    • Interop is the old standard (but some servers still support only this[55]), whereas SMPTE is the newest one. Use Suggest names to let the system fill automatically the other fields.
    • Select the folder where the DCP will be stored (please check before that enough room is available in that disk).
    • Choose the type of the DCP, write down the rating agency and label, and the issuer. Then, select the languages. Eventually, press Suggest title & annotation to fill the last two fields with common conventions. Since the naming convention is a bit complicated sometimes, you may need to check it and correct accordingly.[56]
      Anyhow, a DCP with an off-standard naming convention will always work on every server.
  • Set the encoding parallelization in the Engine panel.
    • You can begin by setting a low value, e.g., 2. You can modify this value as the encoding goes. Do not choose a number higher than the number of CPUs/hyperthreads on your machine.
    • Set Resume to None.
    • If the picture and sound do not need resampling, leave Nearest as method in both selectors. You can use Copy if the frame rate, sample rate, and image size of inputs are exactly the same of the DCP.
  • Press Start button in the main panel to begin encoding and wait for finish.
    • The MXF label is lit during the main encoding phase; this means that the .mxf files containing the audio and video reels are being produced. You can have an estimate of how long the encoding will last (if you have an SMTP server available, you can receive an email at the end).
    • The HASH label is lit nearly at the end of the whole process. The possibly multi-gigabyte reel files are being scanned and their checksum is written in a set of .xml files. During this phase, the timing labels are not working (but the slider is), just be patient and wait for finish (for full features, this step takes even 15-20 minutes, depending on your HD and CPU speed).
    • Do not stop or abort anything up to the blinking DONE label.
  • If you want to make a short test, press Stop when you want to finalize the DCP at the timecode shown in the LCD panel.[57]

How to encode video clips

Starting from version 0.3, it is no more possible to import in a straightforward way any video format.

Up to version 0.2, this was possible on the fly, by using the FFmpeg/Libav libraries.[58] However, this support has been discontinued, for patenting reasons. In fact, even if FFmpeg or Libav were compiled in LGPL compatibility (it means that a closed source program, such as DCP Builder, can use open source programs as external, dynamically loaded library), this does not relief one's responsibility to satisfy all the licenses for the involved patented technologies. Most notably, they are H.264, mp3, and MPEG-2.

This support can now be available via separate install of FFmpeg, which must be downloaded by you.

Video import in Freeware Edition

In this case, if you need to convert a video clip file into a DCP, I suggest you to extract all the frames from the video clip as a sequence of PNG images and as a single multichannel WAV file. This is what you have to do:

  • Download a compiled version of FFmpeg or Libav for your operating system. Generally, these programs can be found via Google, or starting from the project home pages.
  • Once you have the ffmpeg executable working, open a terminal and go to folder where you want to make the conversion step.
  • Create the folders extrpng and extrwav, or similar names.
  • Execute the command in order to extract all the frames to the PNG format

#> ffmpeg -i my_clip.avi extrpng/my_clip_%06d.png

  • Execute the command in order to extract all the audio channels to a WAV file

#> ffmpeg -i my_clip.avi -acodec pcm_s24le extrwav/my_clip.wav

  • You now have a sequence of images (the frames of your input video clip) in the extrpng folder, and a single multichannel wave file in the extrwav folder. You can use these files as input to DCP Builder.

Video import in Basic edition

In this case, if you need to convert a video clip file into a DCP, you must explicitly enable FFmpeg support into DCP Builder. There are two ways: binaries download, or source download and compilation. I have tested the program with ffmpeg-git-14d94a1 version. Any newer version should be ok, for older ones nothing is guaranteed.

Binary downloads

Download a compiled version of FFmpeg or Libav for your operating system. Generally, these programs can be found via Google, or starting from the project home pages. Note that you need both the ffmpeg and ffprobe programs, preferably compiled statically in order to avoid shared libraries mismatch.

Microsoft Windows

A good place to look at, is Zeranoe's website (google it).

GNU Linux

You can use the official or unofficial repositories of your distribution. For instance, under Ubuntu, you can do the following:

#> sudo apt-get install ffmpeg ffprobe

Apple Mac OS X

Precompiled binaries are hard to find, but you can have a chance by looking at the ffmpegX project. Browse inside the ffmpegX app and look for ffmpeg executables.

Differently, a semi-automatic method to get the program installed is to use macports or fink.

Source download and compilation

Install manually the program executables into a folder of your choice. You might also do a system-wide install.

Microsoft Windows
  • Download the FFmpeg release tarball (e.g., ffmpeg-git-14d94a1.tar.bz2) from its download page.
  • Open the compressed archive and extract its contents to a folder (e.g., c:\Program Files\ffmpeg-git-14d94a1). You can use 7zip.[59]
  • Download and install Visual C++ 2008 Express Edition with SP1 from Microsoft page.[60]
  • Download and run the most recent MinGW installer (e.g., mingw-get-inst-20111118.exe) from the MinGW page.[61]
  • During the setup phase, select to install C compiler and MSYS Basic System. Wait for all packages being downloaded and installed automatically, some minutes are needed.
  • Download generic Win32 Yasm executable (e.g., yasm-1.2.0-win32.exe) from Yasm download page.[62] Rename it to yasm.exe and copy it inside the bin folder of your MinGW installation directory (e.g., c:\MinGW\bin).
  • Launch MinGW Shell from your Windows menu.
  • In the just opened MINGW32 console, type lib and verify that you obtain an output containing "Microsoft (R) Library Manager". Differently, ...
  • Change to the folder where you extracted the FFmpeg archive,

#> cd c:/Program\ Files/ffmpeg-git-14d94a1

  • Create directories build and inst, and change folder to build

#> mkdir build inst & cd build

  • Now you need to configure FFmpeg. Since you are compiling by yourself, and experimenting for personal use, you can enable almost anything. When you have tested this, you have to recompile according to patent restrictions issued in your country. Thus, issue the configure command and let it run for some minutes:

#> ../configure --prefix=../inst --enable-nonfree --enable-gpl --disable-devices --disable-doc --disable-ffplay --disable-ffserver --enable-w32threads --enable-memalign-hack --disable-debug --enable-static --disable-shared

  • At this point, you can issue the compilation commands (this can take a long time, so please be patient and wait)

#> make clean & make


[lines of compilation results]


#> make install

  • Now, if no compilation errors appeared, check inside the inst folder of FFmpeg directory: in the bin subfolder there will be all the required programs (ffmpeg and ffprobe)

#> ls ../inst/bin

ffmpeg ffprobe

  • You can now indicate this folder in program preferences.
GNU Linux
  • Download the FFmpeg release tarball (e.g., ffmpeg-git-14d94a1.tar.bz2) from its download page.
  • Open the compressed archive and extract its contents to a folder (e.g., /tmp/ffmpeg-git-14d94a1)

#> cd /tmp

#> tar zxvf ffmpeg-git-14d94a1.tar.bz2

  • Install the required compilation tools. For instance, under Ubuntu,

#> sudo apt-get update & sudo apt-get install build-essential yasm zlib1g-dev

  • Change to the folder where you extracted the FFmpeg archive

#> cd /tmp/ffmpeg-git-14d94a1

  • Create directories build and /opt/ffmpeg and change folder to build

#> mkdir build /opt/ffmpeg & cd build

  • Now you need to configure FFmpeg. Since you are compiling by yourself, and experimenting for personal use, you can enable almost anything. When you have tested this, you have to recompile according to patent restrictions issued in your country. Thus, issue the configure command and let it run for some minutes:

#> ../configure --prefix=/opt/ffmpeg --enable-nonfree --enable-gpl --disable-devices --disable-doc --disable-ffplay --disable-ffserver --enable-w32threads --enable-memalign-hack --disable-debug --enable-static --disable-shared

  • At this point, you can issue the compilation commands (this can take a long time, so please be patient and wait)

#> make clean & make


[lines of compilation results]


#> sudo make install

  • Now, if no compilation errors appeared, check inside the /opt/ffmpeg folder: in the bin subfolder there will be all the required programs (ffmpeg and ffprobe)

#> ls /opt/ffmpeg/bin

ffmpeg ffprobe

  • You can now indicate this folder in program preferences.
Apple Mac OS X
  • Download the FFmpeg release tarball (e.g., ffmpeg-git-14d94a1.tar.bz2) from its download page.
  • Using the terminal, open the compressed archive and extract its contents to a folder (e.g., /tmp/ffmpeg-git-14d94a1)

#> cd /tmp

#> tar zxvf ffmpeg-git-14d94a1.tar.bz2

  • Install the required compilation tools, namely Xcode. Insert your Mac OS X operating system DVD in the tray, and look into the Optional installs folder. Then, double click on Xcode.mpkg and follow the installation instructions.
  • Change to the folder where you extracted the FFmpeg archive

#> cd /tmp/ffmpeg-git-14d94a1

  • Create directories build and /opt/ffmpeg and change folder to build

#> mkdir build /opt/ffmpeg & cd build

  • Now you need to configure FFmpeg. Since you are compiling by yourself, and experimenting for personal use, you can enable almost anything. When you have tested this, you have to recompile according to patent restrictions issued in your country. Thus, issue the configure command and let it run for some minutes:

#> ../configure --prefix=/opt/ffmpeg --enable-nonfree --enable-gpl --disable-devices --disable-doc --disable-ffplay --disable-ffserver --enable-w32threads --enable-memalign-hack --disable-debug --enable-static --disable-shared --disable-yasm

  • At this point, you can issue the compilation commands (this can take a long time, so please be patient and wait)

#> make clean & make


[lines of compilation results]


#> sudo make install

  • Now, if no compilation errors appeared, check inside the /opt/ffmpeg folder: in the bin subfolder there will be all the required programs (ffmpeg and ffprobe)

#> ls /opt/ffmpeg/bin

ffmpeg ffprobe

  • You can now indicate this folder in program preferences.

How to play a DCP without a server or projector

When your DCP is ready, you may want to test before ingesting it into the DC server. There are some possibilities in this case, mainly using a software player.

For purposes of syntactic correctness of the DCP, I suggest you to use Fraunhofer's EasyDCP player,[63] which has a limited playtime of 15 s, and no color transform, but is great for checking if the XML files are fine.

If you need to preview your full DCP, then you can use digitAll's dcpPlayer,[64] which is quite fast but has a limited time license and watermarks the image.

Another option is to use 3dtv.at's Stereoscopic player,[65] which limits the play-out to 5 minutes but has no time expiration. Anyway, this is very cheap software which you can afford easily.

In addition to the GUI, DCP Builder has also a command line interface (CLI) that allows producing a DCP with exactly the same quality, without need of windows or physical screens (fig. 47-a, -b, and -c).

The CLI reads the projects saved by the GUI and processes the files exactly as usual, by providing the file as a parameter:

#> dcpbuilder [i project_file_name] [R registration_code] [-h] [-smtps smtp_server_name:port] [-smtpf smtp_from] [-smtpt smtp_to] [-sf search_folder]

The parameters are:

  • -i project_file_name, accepts the input project file. By default, it is dcp_builder_sample.dcb.
  • -R registration_code, enter the received serial to remove the watermark.
  • -smtps smtp_server_name:port, enter the name and port of a SMTP server used to send emails.
  • -smtpf smtp_from, enter the "From" address of emails.
  • -smtpt smtp_to, enter the "To" address of emails.
  • -sf search_folder, folder where the ffmpeg executables are looked for. Remember to terminate the path with a trailing slash or backslash.
  • -h, prints help and usage.

During encoding, pressing "h" will show a mini-menu of commands available to the user:

  • h - prints help
  • i - prints information
  • s - prints information
  • + - add a thread
  • - remove a thread
  • q - quits the encoding at the current point (equivalent to pressing STOP in the GUI)




Figure 47 - The Windows (a), Linux (b), and Mac OS X (c) command line interface.

Technical specifications of DCPs

The DCP root folder (in the storage medium) contains a number of files, some of them used to store the image and audio contents, and some other used to organize and manage the whole playlist.

Picture MXF files

Picture contents are stored in one or more reels corresponding to one or more MXF files. Each reel contains pictures as MPEG-2 or JPEG 2000 essence, depending on the adopted codec. MPEG-2 is no longer compliant with the DCI specification. JPEG 2000 is the only accepted compression format.

  • Supported frame rates are 24, 25, 30, 48, 50, and 60 frames per second. Maximum frame size is 2048x1080 for 2K DC (24, 25, 30, 48, 50, and 60 frames per second), and 4096x2160 for 4K DC (24, 25, and 30 frames per second).[66] Common formats are:
    • Flat (1998x1080 or 3996x2160), ~1.85:1 aspect ratio
    • Scope (2048x858 or 4096x1716), ~2.39:1 aspect ratio
  • 12 bits per pixel precision (36 bits total)
  • XYZ colorspace
  • Maximum bit rate is 250 Mbps (1.3 MBytes per frame at 24 fps)

Sound MXF files

Sound contents are stored in reels, too, corresponding to picture reels in number and duration. In case of multilingual features, separate reels are required to convey different languages. Each file contains linear PCM essence.

  • Sampling rate is 48,000 or 96,000 samples per second
  • Sample precision of 24 bits
  • Linear mapping (no companding)
  • Up to 16 independent channels.

XML files

Asset Map file

List of all files included in the DCP, in XML format.

Composition Playlist file

The presentation order is saved in XML format in this file; each picture and sound reel is identified by its UUID.

Packing List file

All files in the composition are hashed and their hash is stored here, in XML format. This file is generally used during ingestion in DC server to verify if data have been corrupted or tampered in some way.

Volume Index file

A single DCP may be stored in more than one medium (e.g., multiple hard disks). This file is used to identify the volume order in the series.

Stereoscopic DCPs

The very same format shown before is also used to store stereoscopic (3D) contents. In this case, 48, 50, or 60 frames per second are used, with frames alternating for left eye and right eye pictures.[67] Since the maximum bit rate is always 250 Mbit/s, this results in a net 125 Mbit/s for single frame, but the visual quality decrease is generally unnoticeable.

The XYZ colorspace

The XYZ colorspace is used since it can act as a reference colorspace for all devices be them either cameras or projectors. This fact guarantees that the reproduced color tones will be identical to those of the original clip. Fig. 48 shows the CIE XYZ colorspace and how the RGB gamut is enclosed in it.

Figure 48 - The CIE XYZ chromaticity diagram with some notable points.

As an example, figures 49 and 50 show how one frame of the Big Buck Bunny movie is rendered in the original sRGB colorspace, and how it appears after transformation into XYZ colorspace. the shallower colors do not pose any problems, since during rendering at the projector, an opposite color transform is done.

Each component sample of the XYZ frame is assumed to be represented with 12 bits: data alignment to byte boundaries is done by moving these 12 bits towards the top of a two bytes 16 bits word.

Figure 49 - The frame no. 2441 of Big Buck Bunny in sRGB colorspace.

Figure 50 - The frame transformed in XYZ colorspace and rendered in RGB colorspace.

How JPEG 2000 works

This section wants to be a concise but technically correct review of how JPEG 2000 standard works to compress digital cinema images.

Lossy coding

A first part of the standard is involved into achieving a first compression target by doing lossy operations, i.e., a sequence of steps that cannot be exactly inverted during decompression. If done judiciously, however, this has no visual impact on the final image quality.

Pixel value normalization

Every sample x in every component is normalized in a way to be represented in the [-0.5, +0.5] amplitude interval. With 12 bits, this means that a normalized sample xnorm is given by


Irreversible Color Transform (ICT)

Another color transform is applied, in order to better decorrelate color components and achieve improved compression efficiency. This color transform is practically equivalent to the well known RGBYCbCr color transform, only that it is applied to an XYZ source; the destination colorspace is generally denoted as YCxCz. A representation in the sRGB colorspace of the transformed picture is shown in figure 51.

Figure 51 - The frame transformed in YCxCz colorspace and rendered in RGB colorspace.

Discrete Wavelet Transform (DWT)

This transf