This manual uses icons from the <ulink url="http://tango.freedesktop.org/">Tango Desktop Project</ulink>, with thanks.
</para>
+</section>
+
+<!-- ============================================================== -->
+<section>
+<title>This manual</title>
+
+<para>
+This manual presents bits of DCP-o-matic's user interface (such as menu items or buttons) <guilabel>like this</guilabel>.
+</para>
+
+<note>
+Notes of an advanced nature are presented like this. Ignore them unless you want to know the gory details.
+</note>
+
</section>
</chapter>
version.
</para>
+<para>
+If you are still using Windows XP, download the specific XP version as
+it should be more stable on your machine than the ‘normal’
+Windows version.
+</para>
+
</section>
<listitem>Debian unstable (‘sid’)</listitem>
<listitem>Ubuntu 12.04 (‘Precise Pangolin’)</listitem>
<listitem>Ubuntu 14.04 (‘Trusty Tahr’)</listitem>
- <listitem>Ubuntu 15.10 (‘Wily Werewolf’)</listitem>
<listitem>Ubuntu 16.04 (‘Xenial Xerus’)</listitem>
</itemizedlist>
computationally intensive as encoding them.
</para>
+<para>
+If your DCP is a Version File (VF), in other words it refers to
+another DCP's assets, you should import it as follows:
+</para>
+
+<itemizedlist>
+<listitem>Use <guilabel>Add folder...</guilabel> to import the VF DCP.
+The VF DCP will be added to the content list and marked “NEEDS
+OV”.</listitem>
+<listitem>Right-click on the VF DCP in the content list and choose <guilabel>Add OV...</guilabel> from the menu.</listitem>
+<listitem>Choose the folder that contains the OV DCP. The VF will now be playable as normal.</listitem>
+</itemizedlist>
+
</section>
</section>
-<section>
+<section xml:id="sec-overlay">
<title>Making overlay files</title>
<para>
<listitem>Subtitle — a file containing subtitle which will be
superimposed on the image of the DCP. These can be
-<guilabel>.srt</guilabel>, <guilabel>.ssa</guilabel> or <guilabel>.xml</guilabel>
+<guilabel>.srt</guilabel>, <guilabel>.ssa</guilabel>, <guilabel>.ass</guilabel> or <guilabel>.xml</guilabel>
files.</listitem>
<listitem>DCP — an existing DCP.</listitem>
</figure>
+<!-- ============================================================== -->
+<section>
+<title>Refer to existing DCP</title>
+
+<para>
+This option is only applicable if the selected content is an existing
+DCP. It allows you to get the video content from the existing DCP by
+referencing it (rather than copying). See <xref
+linkend="sec-overlay"/>.
+</para>
+
+</section>
+
<!-- ============================================================== -->
<section>
<title>Image type</title>
<para>
-The first option on this tab is the ‘type’ of the video.
+The next option on this tab is the ‘type’ of the video.
This specifies how DCP-o-matic should interpret the video's image.
<guilabel>2D</guilabel> is the default; this just takes the video
image as a standard 2D frame. The <guilabel>3D
</mediaobject>
</figure>
-
<!-- ============================================================== -->
<section>
<title>The audio map</title>
<!-- ============================================================== -->
<section>
-<title>Other controls</title>
+ <title>Other controls</title>
+
+<para>
+The <guilabel>Refer to existing DCP</guilabel> checkbox isonly
+applicable if the selected content is an existing DCP. It allows you
+to get the audio content from the existing DCP by referencing it
+(rather than copying). See <xref linkend="sec-overlay"/>.
+</para>
+
+<para>
+<guilabel>Show graphs of audio levels</guilabel> will analyse the
+audio of the selected content and plot it on a graph. See <xref
+linkend="sec-show-audio"/> for more details.
+</para>
<para>
‘Audio Gain’ is used to alter the volume of the
scale such subtitles down using these controls.
</para>
+<para>
+The <guilabel>Line spacing</guilabel> control adjusts the line spacing
+of the subtitles. This only works for non-embedded (text) subtitles.
+</para>
+
<para>
The <guilabel>Stream</guilabel> control changes the subtitle stream
that is used when the content has more than one.
</para>
<para>
-<guilabel>Trim from start</guilabel> specifies the amount that should be trimmed from the start of the content.
+<guilabel>Trim from start</guilabel> specifies the amount that should
+be trimmed from the start of the content. You can set this amount to
+trim up to the current preview position by clicking <guilabel>Trim up
+to current position</guilabel>.
</para>
<para>
-<guilabel>Trim from end</guilabel> specifies the amount that should be trimmed from the end of the content.
+<guilabel>Trim from end</guilabel> specifies the amount that should be
+trimmed from the end of the content. You can set this amount to trim
+after the current preview position by clicking <guilabel>Trim after to
+current position</guilabel>.
</para>
<para>
<!-- ============================================================== -->
-<section>
+<section xml:id="sec-show-audio">
<title>Show audio</title>
<para>
</chapter>
+
+<!-- ============================================================== -->
+<chapter xml:id="ch-templates" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+<title>Templates</title>
+
+<para>
+If you frequently make DCPs with similar settings you may find it
+useful to use templates.
+</para>
+
+<para>
+Say, for example, you often make 4K feature DCPs from video files in
+’scope at 25fps. You can speed up this process by following
+these steps:
+</para>
+
+<itemizedlist>
+ <listitem>Create a film with any content and set it up how you like;
+ in our example, set the content to scale to DCP, the DCP resolution
+ to 4K, and so on.</listitem>
+ <listitem>Choose <guilabel>Save as template...</guilabel> from the <guilabel>File</guilabel> menu.</listitem>
+ <listitem>Enter a name for your template.</listitem>
+</itemizedlist>
+
+<para>
+Then in the future you can create a new film, tick the
+<guilabel>Template</guilabel> box and choose your previously-saved
+template. The basic film's settings will come from your template, and
+when you add some content it will take on the settings of the
+first similarly-typed piece of content in your template.
+</para>
+
+<para>
+For example if the template has a piece of video content and some
+subtitles, any video that you add to the new film will take on the
+settings of the video in the template. Similarly, any subtitles that
+you add will take on the settings of the subtitles from the template.
+</para>
+
+<para>
+The following settings from the <guilabel>DCP</guilabel> tab are saved
+in templates:
+</para>
+
+<itemizedlist>
+ <listitem>“Use ISDCF name” checkbox</listitem>
+ <listitem>Content type (FTR, TLR etc.)</listitem>
+ <listitem>Container</listitem>
+ <listitem>Resolution</listitem>
+ <listitem>JPEG200 bandwidth</listitem>
+ <listitem>Video frame rate</listitem>
+ <listitem>Signed and encrypted checkboxes</listitem>
+ <listitem>Audio channels</listitem>
+ <listitem>Standard (Interop / SMPTE)</listitem>
+ <listitem>Audio processor</listitem>
+ <listitem>Reel type and length</listitem>
+ <listitem>Upload after make DCP checkbox</listitem>
+</itemizedlist>
+
+<para>
+In addition to this, the settings (but not the filenames) of any
+content in the template are stored, as discussed above. The status of
+the <guilabel>Keep video and subtitles in sequence</guilabel> checkbox
+from the timeline is also preserved.
+</para>
+
+</chapter>
+
+
+
+<!-- ============================================================== -->
<chapter xml:id="ch-encryption" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
<title>Encryption</title>
<title>KDM dialog</title>
<mediaobject>
<imageobject>
- <imagedata fileref="screenshots/kdm&scs;"/>
+ <imagedata scale="40" fileref="screenshots/kdm&scs;"/>
</imageobject>
</mediaobject>
</figure>
doubt, use <guilabel>Modified Transitional 1</guilabel>.
</para>
+<note>
+The differences between the three KDM types are fairly subtle.
+<guilabel>DCI Specific</guilabel> and <guilabel>DCI Any</guilabel> add
+a <code><ContentAuthenticator></code> tag to the KDM which
+allows the exhibitor to check that the DCP and KDM have come from a
+bona-fide source. In addition, <guilabel>DCI Specific</guilabel> adds
+information on trusted devices to the KDM. This allows the KDM
+creator to specify devices (such as sound processors) that are allowed
+to use keys delivered by the KDM. At present it is not clear how
+widely the <guilabel>DCI Specific</guilabel> and <guilabel>DCI
+Any</guilabel> features are supported (or even tolerated) by servers
+so you are advised to use <guilabel>Modified Transitional
+1</guilabel>.
+</note>
+
<para>
Finally, choose what you want to do with the KDMs. They can be
written to disk, to a location that you can specify by clicking
<guilabel>Browse</guilabel>. Alternatively, if you choose
<guilabel>Send by email</guilabel> the KDMs will be zipped up and
-emailed to the appropriate cinema email addresses. Click OK to
-generate the KDMs.
+emailed to the appropriate cinema email addresses. Click
+<guilabel>Make KDMs</guilabel> to generate the KDMs.
</para>
</section>
<guilabel>Jobs</guilabel> menu. Select the CPL that you want to make
the DKDM for and click <guilabel>OK</guilabel>. This DKDM will then
be available in the KDM creator. This is a separate program which you
-can start from the same place that you start the ‘Normal’
+can start from the same place that you start the ‘normal’
DCP-o-matic. Its window is shown in <xref linkend="fig-kdm-creator"/>.
</para>
<title>The KDM creator</title>
<mediaobject>
<imageobject>
- <imagedata fileref="screenshots/kdm-creator&scs;"/>
+ <imagedata scale="35" fileref="screenshots/kdm-creator&scs;"/>
</imageobject>
</mediaobject>
</figure>
behaviour. This chapter explains those options.
</para>
-
-<!-- ============================================================== -->
-<section>
-<title>The preferences dialogue</title>
-
<para>
-The preferences dialogue is opened by choosing
+Preferences can be edited by choosing
<guilabel>Preferences...</guilabel> from the <guilabel>Edit</guilabel>
-menu. The dialogue is split into seven tabs.
+menu. This opens a dialogue which is split into seven tabs.
</para>
<!-- ============================================================== -->
If you want to import an encrypted DCP you will need to give the
decryption certificate to the distributor of the DCP so that they can
generate a DKDM for you. You can save this certificate to disk by
-clicking <guilabel>Export DCP decryption certificate...</guilabel>. As
-with the signing chain, DCP-o-matic will create a certificate chain
+clicking <guilabel>Export DCP decryption certificate...</guilabel>.
+As with the signing chain, DCP-o-matic will create a certificate chain
and private key for you. You can also choose to load your own
certificates and key or re-make the chain and key with new, random
values.
</para>
+<para>
+Clicking <guilabel>Export DCP decryption chain...</guilabel> will
+export the whole certificate chain, rather than just the leaf
+certificate.
+</para>
+
</section>
<!-- ============================================================== -->
suggest you leave this un-ticked unless you have a good reason to do otherwise.
</para>
+<para>
+With the filename format fields you can adjust the filenames that are
+used for metadata (CPL and PKL files) and assets (MXF and subtitle
+files). Below each field there is a list of the ‘magic’
+values that you can use in the format and an example of a filename
+that you might see with your current settings.
+</para>
+
<para>
The four checkboxes labelled <guilabel>Log</guilabel> control what
sort of messages DCP-o-matic writes to its log file when creating a
unticked.
</para>
-</section>
</section>
</chapter>
</chapter>
+<!-- ============================================================== -->
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en" xml:id="ch-servers">
<title>Encoding servers</title>
Following this is the DCP itself:
<code>DCP-TEST_EN-XX_UK-U_51_2K_CSY_20130218_CSY_OV</code>. This
contains some small XML files, which describe the DCP, and two large
-MXF files, which contain the DCP's audio and video data. This folder
+MXF files, which contain the DCP's audio and video data. It may also
+contain subtitles in either XML or MXF format. This folder
(<code>DCP-TEST_EN-XX_...</code>) is what you should ingest, or pass
to the cinema which is showing your DCP.
</para>
</chapter>
+
+<chapter>
+ <title>Command-line tools</title>
+
+ <para>
+ DCP-o-matic includes some tools which allow DCP creation from the
+ command line or from scripting languages. This chapter covers the
+ use of those tools.
+ </para>
+
+ <para>
+ There are two command-line tools in DCP-o-matic.
+ <code>dcpomatic2_create</code> creates film directories, with the
+ associated metadata, from a list of content files. Then
+ <code>dcpomatic2_cli</code> runs the transcode process on these
+ film directories.
+ </para>
+
+ <para>
+ Some applications will benefit from setting up the films using the
+ main DCP-o-matic GUI and then using <code>dcpomatic2_cli</code> to
+ do the encode. This allows, for example, setup on a relatively
+ low-powered machine before running the encode on a higher-powered
+ headless server.
+ </para>
+
+ <section>
+ <title><code>dcpomatic2_create</code></title>
+
+ <para>
+ The syntax for <code>dcpomatic2_create</code> is:
+ </para>
+
+ <para>
+ <code>dcpomatic2_create [OPTION] [CONTENT] [<CONTENT> ...]</code>
+ </para>
+
+ <para>
+ <code>[CONTENT]</code> are the files or folders that you want to use in the
+ DCP. They can be:
+ <itemizedlist>
+ <listitem>‘Movie’ files in almost any common format (e.g. MP4, MOV, MKV, etc.)</listitem>
+ <listitem>A folder containing and image sequence in almost any common format (e.g. TIFF, DPX etc.)</listitem>
+ <listitem>Sound files (e.g. WAV, MP3, AIFF)</listitem>
+ <listitem>Subtitles files (e.g. <code>.srt</code>, DCP XML, <code>.ssa</code> etc.)</listitem>
+ </itemizedlist>
+ </para>
+
+ <para>
+ The options are:
+ </para>
+
+ <itemizedlist>
+ <listitem><code>-v</code>, <code>--version</code> — show DCP-o-matic version</listitem>
+ <listitem><code>-h</code>, <code>--help</code> — show this help</listitem>
+ <listitem><code>-n</code>, <code>--name</code> — <name> film name</listitem>
+ <listitem><code>-t, --template <name></code> — template name</listitem>
+ <listitem><code>-c, --dcp-content-type <type></code> — FTR, SHR, TLR, TST, XSN, RTG, TSR, POL, PSA or ADV</listitem>
+ <listitem><code>--container-ratio <ratio></code> — 119, 133, 137, 138, 166, 178, 185 or 239</listitem>
+ <listitem><code>--content-ratio <ratio></code> — 119, 133, 137, 138, 166, 178, 185 or 239</listitem>
+ <listitem><code>-s, --still-length <n></code> — number of seconds that still content should last</listitem>
+ <listitem><code>--standard <standard></code> — SMPTE or interop (default SMPTE)</listitem>
+ <listitem><code>--no-use-isdcf-name></code> — do not use an ISDCF name; use the specified name unmodified</listitem>
+ <listitem><code>--no-sign</code>— do not sign the DCP</listitem>
+ <listitem><code>-o</code>, <code>--output <dir></code> — output directory</listitem>
+ </itemizedlist>
+
+ <para>
+ For example, to setup a film using a MP4 file you might do:
+ </para>
+
+ <para>
+ <code>dcpomatic2_create -o my_film --container-ratio 185 --content-ratio 185 -c FTR -n "My Film" Stuff.mp4</code>
+ </para>
+
+ <para>
+ This will create a folder called <code>my_film</code> which is ready for a DCP to be made by <code>dcpomatic2_cli</code>.
+ </para>
+
+ <para>
+ <code>dcpomatic2_create</code> will use any default settings that you have configured in the main DCP-o-matic preferences.
+ </para>
+ </section>
+
+ <section>
+ <title><code>dcpomatic2_cli</code></title>
+
+ <para>
+ The syntax for <code>dcpomatic2_cli</code> is:
+ </para>
+
+ <para>
+ <code>dcpomatic2_cli [OPTION] [FILM]</code>
+ </para>
+
+ <para>
+ <itemizedlist>
+ <listitem><code>-v</code>, <code>--version</code> — show DCP-o-matic version</listitem>
+ <listitem><code>-h</code>, <code>--help</code> — show this help</listitem>
+ <listitem><code>-f</code>, <code>--flags</code> — show flags passed to C++ compiler on build</listitem>
+ <listitem><code>-n</code>, <code>--no-progress</code> — do not print progress to stdout</listitem>
+ <listitem><code>-r</code>, <code>--no-remote</code> — do not use any remote servers</listitem>
+ <listitem><code>-t</code>, <code>--threads</code> — specify number of local encoding threads (overriding configuration)</listitem>
+ <listitem><code>-j</code>, <code>--json</code> <port> — run a JSON server on the specified port</listitem>
+ <listitem><code>-k</code>, <code>--keep-going</code> — keep running even when the job is complete</listitem>
+ <listitem><code>-s</code>, <code>--servers</code> — just display a list of encoding servers that DCP-o-matic is configured to use; don't encode</listitem>
+ <listitem><code>-d</code>, <code>--dcp-path</code> — echo DCP's path to stdout on successful completion (implies -n)</listitem>
+ <listitem><code>--dump</code> — just dump a summary of the film's settings; don't encode</listitem>
+ </itemizedlist>
+ </para>
+
+ <para>
+ For example, to encode a film called <code>my_film</code> you might do:
+ </para>
+
+ <para>
+ <code>dcpomatic2_cli my_film</code>
+ </para>
+ </section>
+</chapter>
+
+
+
+<!-- ============================================================== -->
<chapter>
<title>Loose ends</title>
</chapter>
+<!-- ============================================================== -->
+<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+<title>Common tasks</title>
+
+<para>
+This chapter describes how to carry out some commonly-required tasks
+with DCP-o-matic. The full details are elsewhere in the manual: here
+we just discuss different approaches to these tasks and how to carry
+them out.
+</para>
+
+<section>
+<title>Adding subtitles to an existing DCP</title>
+
+<para>
+You have three options:
+</para>
+
+<itemizedlist>
+<listitem>Make a “Version File” (VF) DCP.</listitem>
+<listitem>Make a complete DCP with projector-added subtitles.</listitem>
+<listitem>Make a complete DCP with burnt-in subtitles.</listitem>
+</itemizedlist>
+
+<para>
+Making a VF DCP is usually the best option. This will be a very small
+DCP which contains only the subtitles: it refers to your existing DCP
+for the picture and sound. The projectionist will ingest both the
+existing and VF DCPs and play back the VF. The advantages of this
+approach are that the VF is very quick to generate, and small in size,
+making it easy to distribute. This is especially useful if you have
+to make VF DCPs in many different languages.
+</para>
+
+<para>
+Making a complete DCP with projector-added subtitles gives you a new,
+single DCP which the projectionist can ingest and play. It will be
+the same size as your existing DCP, and fairly quick to create. This
+approach relies on the projector (or server) to create the subtitles
+and overlay them on the image, which mostly works well but is not
+100% reliable.
+</para>
+
+<para>
+Making a complete DCP with burnt-in subtitles gives you a new, single DCP
+but with the subtitles rendered by DCP-o-matic and copied into your
+image. This is slower to create than a DCP with projector-added
+subtitles as every video frame with a subtitle must be re-encoded.
+The advantage of this approach is that it is less likely to go wrong,
+especially if you are using unusual subtitle positioning or character
+sets.
+</para>
+
+<section>
+<title>Making a VF DCP</title>
+
+<itemizedlist>
+<listitem>Start a new DCP-o-matic film.</listitem>
+<listitem>Click <guilabel>Add folder...</guilabel> and specify your existing DCP's folder.</listitem>
+<listitem>Go to the <guilabel>DCP</guilabel> tab and choose <guilabel>Split by video content</guilabel> for <guilabel>Reel type</guilabel>.</listitem>
+<listitem>Go to the <guilabel>Video</guilabel> and
+<guilabel>Audio</guilabel> tabs in turn and tick the <guilabel>Refer to existing DCP</guilabel> checkboxes.</listitem>
+<listitem>Add your subtitles to the film in whatever format you have.</listitem>
+<listitem>Check the subtitle appearance in the preview; it will be
+slow to respond as it is having to decompress images from the existing
+DCP.</listitem>
+<listitem>Choose <guilabel>Make DCP</guilabel> from the menu.</listitem>
+</itemizedlist>
+
+</section>
+
+<section>
+<title>Making a complete DCP with projector-added subtitles</title>
+
+<itemizedlist>
+<listitem>Start a new DCP-o-matic film.</listitem>
+<listitem>Click <guilabel>Add folder...</guilabel> and specify your existing DCP's folder.</listitem>
+<listitem>Add your subtitles to the film in whatever format you have.</listitem>
+<listitem>Check the subtitle appearance in the preview; it will be
+slow to respond as it is having to decompress images from the existing
+DCP. Adjust the appearance using controls in the
+<guilabel>Subtitle</guilabel> tab if required.</listitem>
+<listitem>Choose <guilabel>Make DCP</guilabel> from the menu.</listitem>
+</itemizedlist>
+
+</section>
+
+<section>
+<title>Making a complete DCP with burnt-in subtitles</title>
+
+<itemizedlist>
+<listitem>Start a new DCP-o-matic film.</listitem>
+<listitem>Click <guilabel>Add folder...</guilabel> and specify your existing DCP's folder.</listitem>
+<listitem>Add your subtitles to the film in whatever format you have.</listitem>
+<listitem>Go to the <guilabel>Subtitle</guilabel> tab and tick the <guilabel>Burn subtitles into image</guilabel> checkbox.</listitem>
+<listitem>Check the subtitle appearance in the preview; it will be
+slow to respond as it is having to decompress images from the existing
+DCP. Adjust the appearance using controls in the
+<guilabel>Subtitle</guilabel> tab if required.</listitem>
+<listitem>Choose <guilabel>Make DCP</guilabel> from the menu.</listitem>
+</itemizedlist>
+
+</section>
+</section>
+
+<section>
+<title>Adding soundtracks or subtitles in different languages</title>
+
+<para>
+If you have a film that is to be dubbed or subtitled in several
+languages, the best approach with DCP-o-matic is as follows:
+</para>
+
+<itemizedlist>
+<listitem>Make a DCP with the common elements (perhaps just the video, or maybe the video and sound); this is known as the Original Version (OV).</listitem>
+<listitem>For each language, make a new Version File (VF) DCP which refers to the OV.</listitem>
+</itemizedlist>
+
+<para>
+Once you have done this, you send the OV DCP to every cinema and then
+the appropriate VF to each cinema depending on what language they want
+to play the film in. The projectionist ingests both DCPs and then plays the VF.
+</para>
+
+<para>
+The advantage of this approach is that the VF DCPs are much smaller
+than the OV since they only have the language-specific parts. If you
+are just changing the subtitles you can often ship the OV by normal
+transport means (e.g. a hard drive or high-speed download) and send
+the VF by email.
+</para>
+
+<para>
+The full details of OV and VF files are discussed in <xref linkend="sec-overlay"/>. The steps can be summarised as follows:
+</para>
+
+<itemizedlist>
+<listitem>Create a new DCP-o-matic project for the OV, as normal, adding video and perhaps sound. Make the DCP.</listitem>
+<listitem>Create a new DCP-o-matic project for the VF.</listitem>
+<listitem>Use <guilabel>Add folder...</guilabel> to add your OV DCP to the project.</listitem>
+<listitem>Select the video tab and tick <guilabel>Refer to existing DCP</guilabel> (you may need to select <guilabel>By video content</guilabel> for <guilabel>Reel type</guilabel> in the <guilabel>DCP</guilabel> tab).</listitem>
+<listitem>Do the same in the <guilabel>Audio</guilabel> tab if your OV has audio.</listitem>
+<listitem>Add your language-specific audio and/or subtitles and Make DCP.</listitem>
+</itemizedlist>
+
+</section>
+
+</chapter>
+
+<!-- ============================================================== -->
+<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+<title>Configuration files</title>
+
+<para>Most of DCP-o-matic's configuration is stored in an XML file called <code>config.xml</code>. This is stored in different places depending on your operating system:</para>
+
+<itemizedlist>
+ <listitem>Windows: <code>c:\Users\your_user_name\AppData\Local\dcpomatic</code></listitem>
+ <listitem>OS X: <code>/Users/your_user_Name/Library/Preferences/com.dcpomatic/2</code></listitem>
+ <listitem>Linux: <code>~/.config/dcpomatic2</code></listitem>
+</itemizedlist>
+
+<para>Possible XML tags are as follows:</para>
+
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="config.xml"/>
+
+</chapter>
+
</book>