<section>
<title>What is DCP-o-matic?</title>
-<para>
-DCP-o-matic is a set of programs to make <ulink
-url="http://en.wikipedia.org/wiki/Digital_Cinema_Package">Digital
-Cinema Packages</ulink> (DCPs) from almost any video, audio and/or
-subtitle files. The resulting DCPs will play on modern digital
-cinema projectors.
-</para>
+<para>DCP-o-matic is a set of programs to perform the following tasks:</para>
+
+<itemizedlist>
+ <listitem>Creation of <ulink
+ url="http://en.wikipedia.org/wiki/Digital_Cinema_Package">Digital
+ Cinema Packages</ulink> (DCPs) from video, audio and/or
+ subtitle and closed caption files.</listitem>
+ <listitem>Playback and verification of DCPs on a PC/Mac.</listitem>
+ <listitem>Creation of KDMs for DCPs.</listitem>
+</itemizedlist>
</section>
<para>
DCP-o-matic will run on Mac OS X version 10.6 (Snow Leopard) and
-higher. DCP-o-matic is split into four separate applications, each of
+higher. DCP-o-matic is split into five separate applications, each of
which can be installed by downloading the <code>.dmg</code>,
double-clicking to open and then dragging the icon to your
<guilabel>Applications</guilabel> folder.
</para>
<itemizedlist>
- <listitem>Debian 7 (‘wheezy’)</listitem>
- <listitem>Debian 8 (‘jessie’)</listitem>
- <listitem>Debian unstable (‘sid’)</listitem>
- <listitem>Ubuntu 14.04 (‘Trusty Tahr’)</listitem>
- <listitem>Ubuntu 16.04 (‘Xenial Xerus’)</listitem>
- <listitem>Ubuntu 17.10 (‘Artful Aardvark’)</listitem>
- <listitem>Mint 17</listitem>
- <listitem>Mint 18</listitem>
+ <listitem>Debian 7 (‘wheezy’), 8 (‘jessie’), 9 (‘squeeze’) and unstable (‘sid’)</listitem>
+ <listitem>Ubuntu 14.04 (‘Trusty Tahr’), 16.04 (‘Xenial Xerus’), 18.04 (‘Bionic Beaver’) and 18.10 (‘Cosmic Cuttlefish’)</listitem>
+ <listitem>Mint 17, 18 and 19</listitem>
</itemizedlist>
<para>
using <code>.deb</code> packages: download the appropriate package
from <ulink url="http://dcpomatic.com/">http://dcpomatic.com/</ulink>
-and double-click it. Debian or Ubuntu will install the necessary bits and
+and double-click it. Debian, Ubuntu or Mint will install the necessary bits and
pieces and set DCP-o-matic up for you.
</para>
</section>
<section>
<title>Fedora, Centos and Mageia Linux</title>
- <para>There are <code>.rpm</code> packages for Fedora 25, 26 and 27, Centos 6 and 7 and Mageia 6 on
+ <para>There are <code>.rpm</code> packages for Fedora 27, 28 and 29, Centos 6 and 7 and Mageia 6 on
<ulink url="http://dcpomatic.com/">http://dcpomatic.com/</ulink>
</para>
</section>
<listitem><ulink url="http://www.mega-nerd.com/SRC/">libsamplerate</ulink></listitem>
<listitem><ulink url="http://www.openssl.org/">OpenSSL</ulink></listitem>
<listitem><ulink url="http://www.openjpeg.org/">libopenjpeg</ulink></listitem>
-<listitem><ulink url="http://www.imagemagick.org/script/index.php">ImageMagick</ulink></listitem>
<listitem><ulink url="http://www.boost.org/">Boost</ulink></listitem>
<listitem><ulink url="http://www.libssh.org/">libssh</ulink></listitem>
<listitem><ulink url="http://www.gtk.org/">GTK (on Linux)</ulink></listitem>
<listitem><ulink url="http://www.aleksey.com/xmlsec/">xmlsec</ulink></listitem>
<listitem><ulink url="http://curl.haxx.se/">curl</ulink></listitem>
<listitem><ulink url="http://www.nih.at/libzip/">libzip</ulink></listitem>
-<listitem><ulink url="http://carlh.net/libdcp/">libdcp</ulink></listitem>
-<listitem><ulink url="http://carlh.net/libsub/">libsub</ulink></listitem>
-<listitem><ulink url="http://carlh.net/libcxml/">libcxml</ulink></listitem>
+<listitem><ulink url="http://carlh.net/asdcplib">asdcplib with some patches</ulink></listitem>
+<listitem><ulink url="http://carlh.net/libdcp">libdcp</ulink></listitem>
+<listitem><ulink url="http://carlh.net/libsub">libsub</ulink></listitem>
+<listitem><ulink url="http://carlh.net/libcxml">libcxml</ulink></listitem>
+<listitem><ulink url="https://carlh.net/locked_sstream">locked_sstream</ulink></listitem>
+<listitem><ulink url="https://www.music.mcgill.ca/~gary/rtaudio/">rtaudio</ulink></listitem>
<listitem><ulink url="http://site.icu-project.org">libicu</ulink></listitem>
</itemizedlist>
</para>
<title>Creating a new film</title>
<mediaobject>
<imageobject>
- <imagedata fileref="screenshots/file-new&scs;"/>
+ <imagedata scale="250" fileref="screenshots/file-new&scs;"/>
</imageobject>
</mediaobject>
</figure>
<title>Making the DCP</title>
<mediaobject>
<imageobject>
- <imagedata scale="50" fileref="screenshots/making-dcp&scs;"/>
+ <imagedata scale="250" fileref="screenshots/making-dcp&scs;"/>
</imageobject>
</mediaobject>
</figure>
</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:
+If your DCP is a Version File (VF) (i.e. it refers to
+another DCP's assets) you should import it as follows:
</para>
<itemizedlist>
</section>
-<section>
+<section xml:id="sec-decrypting">
<title>Decrypting encrypted DCPs</title>
<para>
<guilabel>Add file(s)...</guilabel> and choose them from the selector.
</para>
+<para>
+DCP-o-matic will automatically map a set of audio files to the correct channels if you include appropriate ‘tags’ in your filenames, as shown in <xref linkend="tab-audio-file-naming"/>.
+</para>
+
+<table id="tab-audio-file-naming">
+ <title>Audio file naming</title>
+ <tgroup cols='3' align='left' colsep='1' rowsep='1'>
+ <thead>
+ <row>
+ <entry>Tag</entry>
+ <entry>Examples</entry>
+ <entry>Channel</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><code>L</code> surrounded by <code>.</code> <code>_</code> or <code>-</code></entry>
+ <entry>film-L.wav my_movie_L_final.wav</entry>
+ <entry>Left</entry>
+ </row>
+ <row>
+ <entry><code>R</code> surrounded by <code>.</code> <code>_</code> or <code>-</code></entry>
+ <entry>film-R.wav my_movie_R_final.wav</entry>
+ <entry>Right</entry>
+ </row>
+ <row>
+ <entry><code>C</code> surrounded by <code>.</code> <code>_</code> or <code>-</code></entry>
+ <entry>film-C.wav my_movie_C_final.wav</entry>
+ <entry>Centre</entry>
+ </row>
+ <row>
+ <entry><code>Lfe</code> surrounded by <code>.</code> <code>_</code> or <code>-</code></entry>
+ <entry>film-Lfe.wav my_movie_Lfe_final.wav</entry>
+ <entry>LFE (sub)</entry>
+ </row>
+ <row>
+ <entry><code>Ls</code> surrounded by <code>.</code> <code>_</code> or <code>-</code></entry>
+ <entry>film-Ls.wav my_movie_Ls_final.wav</entry>
+ <entry>Left surround</entry>
+ </row>
+ <row>
+ <entry><code>Rs</code> surrounded by <code>.</code> <code>_</code> or <code>-</code></entry>
+ <entry>film-Rs.wav my_movie_Rs_final.wav</entry>
+ <entry>Right surround</entry>
+ </row>
+ </tbody>
+ </tgroup>
+</table>
+
<para>
To add a directory (folder) of images, choose <guilabel>Add
folder...</guilabel> and choose the directory from the selector.
<title>Other settings</title>
<para>
-The <guilabel>crop</guilabel> settings can be used to crop your content,
-which can be used to remove black borders from round the edges of DVD
-images, for example. The specified number of pixels will be trimmed
-from each edge, and the content image in the right of the window will
-be updated to show the effect of the crop.
+The <guilabel>crop</guilabel> settings can be used to crop your
+content, which is often used to remove black borders from the edges of
+the image. The specified number of pixels will be trimmed from each
+edge, and the content image in the right of the window will be updated
+to show the effect of the crop.
</para>
<para>
the final image files used within the DCP will be. Larger numbers
will give better quality, but correspondingly larger DCPs. The
bandwidth can be between 50 and 250 megabits per second (Mbit/s).
-Most commercial DCPs use bit rates between 75 and 125 MBit/s.
+Most commercial DCPs use bit rates between 75 and 125 Mbit/s.
</para>
<para>
<!-- ============================================================== -->
<section>
-<title>How it works (in a nutshell)</title>
+<title>How it works</title>
<para>
This section attempts to summarise how DCP encryption works. You can
<para>
Public-key encryption allows us to distribute the DCP's key to Alice
securely. The manufacturer of Alice's projector generates a public
-and private key. They hide the private key deep inside the bowels of
-the projector (inside an integrated circuit) where no-one can read it.
-They then make the public key available to anyone who is interested.
+and private key. They hide the private key inside the projector where
+no-one can read it. They then make the public key available to anyone
+who is interested.
+</para>
+
+<para>
+DCP-o-matic has a similar arrangement except that it stores its
+private keys in the user's configuration file. See <xref
+linkend="sec-decrypting"/> for details of how to share DCP-o-matic's
+certificate so that others can make encrypted DCPs for DCP-o-matic.
</para>
<para>
save space, or create KDMs on a different machine. In such situations
it is easier to use a DKDM. This is a normal KDM, but instead of
being targeted at a projection system (to allow it to decrypt the
-content) it is targeted at a particular users's certificate. This
+content) it is targeted at a particular user's certificate. This
means that the certificate owner can create new KDMs for other users.
The DKDM holds everything that is required to create further KDMs.
</para>
<title>Preferences</title>
<para>
-DCP-o-matic provides a few preferences which can be used to modify its
-behaviour. This chapter explains those options.
+DCP-o-matic provides preferences which can be used to modify its
+behaviour. They are described in this chapter.
</para>
<para>
<!-- ============================================================== -->
<section>
-<title>Threads</title>
+<title>Number of threads DCP-o-matic should use</title>
<para>
When DCP-o-matic is encoding DCPs it can use multiple parallel threads
</section>
+
+<!-- ============================================================== -->
+<section>
+<title>Number of threads DCP-o-matic encode server should use</title>
+
+<para>
+This is the number of threads that the encode server should use when
+it is running and helping another copy of DCP-o-matic to speed up its
+encode.
+</para>
+
+</section>
+
+
+<!-- ============================================================== -->
+<section>
+<title>Configuration file</title>
+
+<para>
+This is the location of DCP-o-matic's configuration file on disk. You
+can use this to share configuration between several copies of
+DCP-o-matic, across a network share, for instance.
+</para>
+</section>
+
<!-- ============================================================== -->
<section>
<title>Cinema and screen database file</title>
This option allows you to change the file that DCP-o-matic uses to
store details of the cinemas and screens used to make KDMs.
</para>
+</section>
+
+<!-- ============================================================== -->
+<section>
+<title>Play sound via</title>
+
+<para>
+The checkbox to the left of <guilabel>Play sound</guilabel> enables or
+disables DCP-o-matic use of sound. On some machines there will be
+multiple options in the drop-down menu to decide how the sound should
+be played.
+</para>
</section>
+<!-- ============================================================== -->
<section>
<title>Integrated loudness</title>
</section>
+<!-- ============================================================== -->
+<section>
+<title>Automatically analyse content audio</title>
+
+<para>
+If this checkbox is ticked an audio analysis will be run whenever content is added that contains sound.
+</para>
+</section>
+
<!-- ============================================================== -->
<section>
<title>Updates</title>
<title>Keys</title>
<para>
-The Keys tab (shown in <xref linkend="fig-prefs-keys"/>) holds options
+The Keys tab (shown in <xref linkend="fig-prefs-keys"/>) has controls
related to the keys and certificates used in some parts of DCP
creation.
</para>
</figure>
<para>
-At the top of the tab is the chain of certificates that will be used
-to sign DCPs and KDMs. DCP-o-matic creates a random chain when you
-first run it and if you are happy to use this chain you can ignore the
+<guilabel>Export KDM decryption certificate...</guilabel> allows you
+to save the certificate that DCP-o-matic uses when decrypting KDMs
+that you give it. Use this option if somebody wants to make a KDM for
+you and asks for your certificate.
+</para>
+
+<para>
+<guilabel>Export KDM decryption chain...</guilabel> exports the whole
+KDM decryption chain rather than just its certificate. This may also
+be requested by KDM creators.
+</para>
+
+<para>
+<guilabel>Export all KDM decryption settings...</guilabel> exports a
+file which contains all the DCP-o-matic settings related to the use of
+KDMs supplied by other people. Use this button and <guilabel>Import
+all KDM decryption settings...</guilabel> to transfer settings between
+different copies of DCP-o-matic so that they can both use the same
+KDMs.
+</para>
+
+<para>
+The two <guilabel>Advanced...</guilabel> buttons open advanced
+dialogue boxes for detailed manipulation of DCP-o-matic's certificate
+chains.
+</para>
+
+</section>
+
+<section>
+<title>Advanced keys settings</title>
+
+<para>
+At the top of the <guilabel>Advanced</guilabel> dialogue for signing
+DCPs and KDMs is the chain of certificates that will be used to sign
+DCPs and KDMs. DCP-o-matic creates a random chain when you first run
+it and if you are happy to use this chain you can ignore the
preferences. Otherwise, you can add or remove certificates from the
chain using the <guilabel>Add...</guilabel> and
<guilabel>Remove</guilabel> buttons.
</para>
<para>
-Underneath the details of the certificate chain and private key for
-signing of DCPs and KDMs is a second chain and key which is used by
+At the top of the <guilabel>Advanced</guilabel> dialogue for decrypting DCPs is the chain and key which is used by
DCP-o-matic when you import an encrypted DCP as a piece of content.
The leaf certificate of this chain contains the public key that should
be used when targeting a KDM at DCP-o-matic.
</para>
+
<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
</section>
+<!-- ============================================================== -->
+<section>
+<title>Cover sheet</title>
+
+<para>
+The DCP cover sheet configuration is shown in <xref linkend="fig-prefs-cover-sheet"/>.
+</para>
+
+<figure id="fig-prefs-cover-sheet">
+ <title>DCP cover sheet preferences</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/prefs-cover-sheet&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+This is a template for the cover sheet that is written next to every DCP that DCP-o-matic creates. You can change it to say whatever you like. A few
+‘magic’ strings will be replaced by information from the
+DCP that has been made:
+</para>
+
+<table>
+<title>‘Magic’ Cover sheet strings</title>
+<tgroup cols='2' align='left' colsep='1' rowsep='1'>
+<tbody>
+<row>
+<entry><code>$CPL_NAME</code></entry><entry>DCP title</entry>
+</row>
+<row>
+<entry><code>$TYPE</code></entry><entry>DCP content type (e.g. feature, trailer...)</entry>
+</row>
+<row>
+<entry><code>$CONTAINER</code></entry><entry>The container ratio (e.g. flat, scope...)</entry>
+</row>
+<row>
+<entry><code>$AUDIO</code></entry><entry>Details of the audio channels</entry>
+</row>
+<row>
+<entry><code>$AUDIO_LANGUAGE</code></entry><entry>Audio language</entry>
+</row>
+<row>
+<entry><code>$SUBTITLE_LANGUAGE</code></entry><entry>Subtitle language</entry>
+</row>
+<row>
+<entry><code>$LENGTH</code></entry><entry>DCP length in hours, minutes and seconds</entry>
+</row>
+<row>
+<entry><code>$SIZE</code></entry><entry>DCP size in gigabytes</entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+<para>
+The <guilabel>Reset to default text</guilabel> will replace the current cover sheet with DCP-o-matic's default.
+</para>
+
+</section>
+
+
<!-- ============================================================== -->
<section xml:id="sec-prefs-advanced">
<title>Advanced</title>
<para>
<guilabel>Only servers encode</guilabel> makes DCP-o-matic encode
JPEG2000 data only on encoding servers and not on the host. We
-suggest you leave this un-ticked unless you have a good reason to do otherwise.
+suggest you leave this unticked unless you have a good reason to do otherwise.
</para>
<para>
<para>
The <guilabel>Timing</guilabel> checkbox will enable extra log entries
-to allow developers to investigate and optimize the speed of
+to allow developers to investigate and optimise the speed of
DCP-o-matic. It will significantly increase the size of the log files
that are generated, so in normal use it is best to leave this
unticked.
<para>
The only rates that are (pretty much) guaranteed to work on all DCI
-projectors are 24 frames per second (fps) for video and 48kHz or 96kHz
-for audio. If you are sending your DCPs to unknown places it wise to
+projectors are 24 frames per second (fps) for video and 48kHz for
+audio. If you are sending DCPs to unknown places it is wise to
consider using these rates if at all possible.
</para>
<title>Other often-supported rates</title>
<para>
Many projectors now in the wild support additional video frame rates:
-25, 30 and 48 fps.
+25, 30, 48, 50 and 60 fps.
</para>
</section>
</chapter>
+<chapter xml:id="ch-player" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+ <title>Playing DCPs</title>
+
+ <para>DCP-o-matic includes a DCP player, and although it requires a
+ very high-speed CPU to play DCPs in full resolution, it can also
+ play DCPs at reduced resolutions with slower CPUs.</para>
+
+ <para>To use the player, start <guilabel>DCP-o-matic
+ Player</guilabel>, and load a DCP using the
+ <guilabel>Open</guilabel> option on the <guilabel>File</guilabel>
+ menu.</para>
+
+ <para>If you load a VF and/or encrypted DCP you can add your OV
+ and/or KDM using the appropriate options on the
+ <guilabel>File</guilabel> menu.</para>
+
+ <para>During playback the <guilabel>Performance</guilabel> area at
+ the bottom right of the window will give details of how many frames
+ are being dropped; these are frames that were not decoded from the
+ DCP quickly enough. If this number is high you can increase
+ performance at the cost of rendering quality by choosing an option
+ from the <guilabel>View</guilabel> menu. If you set the player to
+ decode at less than full resolution the DCP's data will be decoded
+ at this lower resolution, which is quicker than decoding at full
+ resolution.
+ </para>
+
+</chapter>
+
<!-- ============================================================== -->
<chapter xml:id="ch-config" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
<title>Configuration files</title>