<!ENTITY % extensions SYSTEM "extensions.ent">
%extensions;
]>
-<book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+<book xmlns="http://docbook.org/ns/docbook" xmlns:mml="http://www.w3.org/1998/Math/MathML" version="5.0" xml:lang="en">
<!-- By good luck or good management, the scale parameter to imagedata
appears only to affect PDF output. HTML scaling is done in the
<title>Windows</title>
<para>
-To install DCP-o-matic on Windows, simply download the installer from
+To install DCP-o-matic on Windows, download the installer from
<ulink url="http://dcpomatic.com/">http://dcpomatic.com/</ulink>
and double-click it. Click through the installer wizard, and
DCP-o-matic will be installed onto your machine.
<para>
You can install DCP-o-matic on Ubuntu 12.04 (‘Precise
-Pangolin’), 12.10 (‘Quantal Quetzal’) or 13.04
-(‘Raring Ringtail’) using <code>.deb</code> packages:
-download the appropriate package from <ulink
+Pangolin’), 12.10 (‘Quantal Quetzal’), 13.10 (‘Saucy
+Salamander’) or 14.04 (‘Trusty Tahr’) using <code>.deb</code> packages: download the
+appropriate package from <ulink
url="http://dcpomatic.com/">http://dcpomatic.com/</ulink> and
double-click it. Ubuntu will install the necessary bits and pieces
and set DCP-o-matic up for you.
</section>
+<section>
+<title>Debian Linux</title>
+<para>
+Packages are available for Debian 7 (squeeze) from <ulink
+url="http://dcpomatic.com/">http://dcpomatic.com/</ulink>.
+</para>
+</section>
+
+<section>
+<title>Centos Linux</title>
+<para>
+Packages are available for Centos 6.5 from <ulink
+url="http://dcpomatic.com/">http://dcpomatic.com/</ulink>.
+</para>
+</section>
+
+<section>
+<title>Arch Linux</title>
+<para>
+Packages for Arch Linux are available from <ulink
+url="https://aur.archlinux.org/packages/dcpomatic/">https://aur.archlinux.org/packages/dcpomatic/</ulink>,
+thanks to Stefan Karner.
+</para>
+</section>
+
<section>
<title>Other Linux distributions</title>
<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</ulink></listitem>
+<listitem><ulink url="http://www.gtk.org/">GTK (on Linux)</ulink></listitem>
<listitem><ulink url="http://www.wxwidgets.org/">wxWidgets</ulink></listitem>
+<listitem><ulink url="http://freecode.com/projects/libquickmail">libquickmail</ulink></listitem>
+<listitem><ulink url="http://libxmlplusplus.sourceforge.net/">libxml++</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/software/libdcp/">libdcp</ulink></listitem>
<listitem><ulink url="http://carlh.net/software/libcxml/">libcxml</ulink></listitem>
</itemizedlist>
<para>
Alternatively, if you have a projector or TMS that is accessible via
SCP across your network, you can upload the content directly from
-DCP-o-matic. See the preferences in <xref linkend="sec-prefs-tms"/>.
+DCP-o-matic. See the <xref linkend="sec-prefs-tms" endterm="sec-prefs-tms-short"/>.
</para>
</section>
The first 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 other option <guilabel>3D
-left/right</guilabel> tells DCP-o-matic to interpret the frame as a
+image as a standard 2D frame. The <guilabel>3D
+left/right</guilabel> option tells DCP-o-matic to interpret the frame as a
left-right pair, as shown in <xref linkend="fig-3d-left-right"/>.
</para>
</figure>
<para>
-This option can be used to generate a 3D DCP. Other means of creating
-3D will be added in the future.
+Alternatively the <guilabel>3D top/bottom</guilabel> option tells
+DCP-o-matic to see the frame as a top-bottom pair, as shown in <xref
+linkend="fig-3d-top-bottom"/>.
</para>
+<figure id="fig-3d-top-bottom">
+ <title>3D top/bottom image type</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata scale="100" fileref="diagrams/3d-top-bottom&dia;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
</section>
</section>
-<!-- XXX: timing tab -->
+<section>
+<title>Timing</title>
+
+<para>
+The timing tab contains settings related to the timing of your
+content, as shown in <xref linkend="fig-timing-tab-detail"/>.
+</para>
+
+<figure id="fig-timing-tab-detail">
+ <title>Timing settings tab</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/timing-tab&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+Most of the timing tab's entries are <emphasis>time-codes</emphasis>.
+These are expressed as four numbers, as shown in <xref
+linkend="fig-timecode"/>.
+</para>
+
+<figure id="fig-timecode">
+ <title>Timecode</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="diagrams/timecode&dia;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+<guilabel>Position</guilabel> is the time at which this piece of
+content should start within the DCP. In most cases, this will be
+<code>0:0:0:0</code> to make the content start at the beginning of the
+DCP.
+</para>
+
+<para>
+<guilabel>Full length</guilabel> is the length of the piece of
+content. This can only be set for still-image content: for video or
+sound content, it is fixed by the nature of the content file. If
+still-image content is being used you can set the length for which it
+should be displayed using this control.
+</para>
+
+<para>
+<guilabel>Trim from start</guilabel> specifies the amount that should be trimmed from the start of the content.
+</para>
+
+<para>
+<guilabel>Trim from end</guilabel> specifies the amount that should be trimmed from the end of the content.
+</para>
+
+<para>
+<guilabel>Play length</guilabel> indicates how long this piece of
+content will be once the trims have been applied. This will be equal
+to the full length minus <guilabel>trim-from-start</guilabel> and minus <guilabel>trim-from-end</guilabel>.
+</para>
+
+<para>
+<guilabel>Video frame rate</guilabel> specifies the frame rate for still-image content.
+</para>
+
+<para>
+Each timecode control has a <guilabel>Set</guilabel> which you should
+click when you have entered a new value for a timecode. The
+<guilabel>Set</guilabel> button will make DCP-o-matic take account of
+any changes to the corresponding timecode.
+</para>
+
+</section>
+
+<section>
+<title>Video processing pipeline</title>
+
+<para>
+This section gives a little more detail about how DCP-o-matic process
+video as it takes it from a source and puts it into a DCP.
+</para>
+
+<para>
+Consider, as a somewhat over-the-top example, that we have a 720 x 576
+image which is letterboxed with 36 black pixels each at the top and
+bottom, and the video content within the letterbox should be presented
+in the DCP at ratio of 2.39:1. Such an image is shown in <xref linkend="fig-pipeline1"/>.
+</para>
+
+<figure id="fig-pipeline1">
+ <title>Example image to demonstrate video processing</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata scale="100" fileref="diagrams/pipeline1&dia;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+DCP-o-matic runs through the following steps when preparing an image for a DCP:
+</para>
+
+<itemizedlist>
+<listitem>Crop</listitem>
+<listitem>Scale</listitem>
+<listitem>Place in container</listitem>
+</itemizedlist>
+
+<para>
+First, some amount of the image can be cropped. This is almost always
+used to remove black borders (letterboxing and/or pillarboxing) around
+images.
+</para>
+
+<para>
+In our example image, we would use 36 pixels of crop from the top and
+bottom. This would give the new image shown in <xref
+linkend="fig-pipeline2"/>.
+</para>
+
+<figure id="fig-pipeline2">
+ <title>Example image after cropping</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata scale="100" fileref="diagrams/pipeline2&dia;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+The next step is to scale the image. Since this content should be
+presented in a 2.39:1 aspect ratio, we would select
+<guilabel>Scope</guilabel> from the <guilabel>Scale to</guilabel>
+option in the <guilabel>Video</guilabel> tab. This option should
+always be set to the aspect ratio at which the content should be
+presented. DCP-o-matic will work out how big the image should be to
+fit into the configured DCP's container; in the case of 2K, a 'scope
+container should be 2048x858 pixels, and so DCP-o-matic scales to that
+size. This gives us a new version of the image as shown in <xref
+linkend="fig-pipeline3"/>.
+</para>
+
+<figure id="fig-pipeline3">
+ <title>Example image after cropping and scaling</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata scale="100" fileref="diagrams/pipeline3&dia;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+The final step is to place the image into the DCP. In this case,
+since we have a 2.39:1 image that should be presented as a 2.39:1 DCP,
+we set the <guilabel>container</guilabel> in the
+<guilabel>DCP</guilabel> tab to be 'scope. Since the content has been
+scaled to 2.39:1, and the DCP is in 2.39:1, there is nothing
+complicated to do here: DCP-o-matic can just place the image directly
+into the DCP.
+</para>
+
+</section>
</chapter>
<para>
The first thing here is the name. This is generally set to the title
-of the film that is being encoded. If <guilabel>Use DCI
+of the film that is being encoded. If <guilabel>Use ISDCF
name</guilabel> is not ticked, the name that you specify will be used
-as-is for the name of the DCP. If <guilabel>Use DCI name</guilabel>
+as-is for the name of the DCP. If <guilabel>Use ISDCF name</guilabel>
is ticked, the name that you enter will be used as part of a
-DCI-compliant name.
+ISDCF-compliant name.
</para>
<para>
Underneath the name field is a preview of the name that the DCP will
-get. To use a DCI-compliant name, tick the <guilabel>Use DCI
-name</guilabel> check-box. The DCI name will be composed using details
+get. To use a ISDCF-compliant name, tick the <guilabel>Use ISDCF
+name</guilabel> check-box. The ISDCF name will be composed using details
of your content's soundtrack, the current date and other things that
-can be specified in the DCI name details dialogue box, which you can
+can be specified in the ISDCF name details dialogue box, which you can
open by clicking on the <guilabel>Details</guilabel> button.
</para>
more detail in <xref linkend="ch-frame-rates"/>.
</para>
+<para>
+The <guilabel>Signed</guilabel> check-box sets whether or not the DCP
+is signed. This is rarely important; if in doubt, tick it.
+</para>
+
<para>
The <guilabel>Encrypted</guilabel> check-box will set whether the DCP
should be encrypted or not. If this is ticked, the DCP will require a
The <guilabel>JPEG2000 bandwidth</guilabel>; setting changes how big 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 (MBps).
+between 50 and 250 megabits per second (Mbit/s).
</para>
<para>
</para>
<para>
-Finally, the <guilabel>scaler</guilabel> is the method that will be used to scale up
+Finally, the <guilabel>Scaler</guilabel> is the method that will be used to scale up
your content to the required size for the DCP, if required. Bicubic is a fine choice in
most situations.
</para>
DCP's creators can read them. In particular, this means copies of the
DCP can be distributed by insecure means: if an ne'er-do-well called
Mallory obtains a hard drive containing an encrypted DCP, there is no
-way that he can play it. Only those cinemas who receive a key
+way that he can play it. Only those cinemas who receive a correct key
delivery message (KDM) can play the DCP.
</para>
The first part is simple: ticking the <guilabel>Encrypted</guilabel>
box in the <guilabel>DCP</guilabel> tab of DCP-o-matic will encrypt
the DCP using a random key that DCP-o-matic generates. The key will
-be written to the film's metadata file, so that should be kept
+be written to the film's metadata file, which should be kept
secure.
</para>
<para>
The preferences dialogue is opened by choosing
<guilabel>Preferences...</guilabel> from the <guilabel>Edit</guilabel>
-menu. The dialogue is split into four tabs.
+menu. The dialogue is split into five tabs.
</para>
<section>
<para>
When DCP-o-matic is encoding DCPs it can use multiple parallel threads
to speed things up. Set this value to the number of threads
-DCP-o-matic should use. This would typically be set to the number of
-processors (or processor cores) in your machine.
+DCP-o-matic should use. This should normally be the number of
+processors (or processor cores) in your machine. DCP-o-matic will try
+to set this up correctly when you run it for the first time.
+</para>
+
+</section>
+
+<section>
+<title>KDM emails</title>
+
+<para>
+DCP-o-matic can send KDMs (see <xref linkend="ch-encryption"/>) to
+cinemas (or anywhere else) via email. To make this work, enter a
+suitable outgoing mail (SMTP) server and ‘from’ address
+for these emails.
</para>
</section>
</section>
</section>
-<section xml:id="sec-prefs-servers">
-<title>Encoding servers</title>
+<section>
+<title>Colour conversions</title>
<para>
-The encoding servers tab is shown in <xref linkend="fig-prefs-servers"/>.
+The colour conversions tab is shown in <xref linkend="fig-prefs-colour-conversions"/>.
</para>
-<figure id="fig-prefs-servers">
- <title>Encoding servers preferences</title>
+<figure id="fig-prefs-colour-conversions">
+ <title>Colour conversions preferences</title>
<mediaobject>
<imageobject>
- <imagedata fileref="screenshots/prefs-servers&scs;"/>
+ <imagedata fileref="screenshots/prefs-colour-conversions&scs;"/>
</imageobject>
</mediaobject>
</figure>
<para>
-If you have spare machines sitting around on your network not doing
-much, they can be pressed into service to speed up DCP encodes. This
-is done by running a small server program on the machine, which will
-encode video sent to it by the ‘master’ DCP-o-matic. This
-option is described in more detail in <xref linkend="ch-servers"/>.
-Use these preferences to specify the encoding servers that should be
-used.
+As part of the encoding process, DCP-o-matic has to convert the colour
+space of the source files that you use into XYZ, the colour space used
+by the DCI standard.
+</para>
+
+<para>
+Colour conversion is discussed in more detail in a separate document
+<ulink url="http://dcpomatic.com/manual/colour.pdf">colour.pdf</ulink>.
+</para>
+
+<para>
+These preferences control a list of presets which are suitable for
+converting from common input colour spaces to XYZ.
</para>
</section>
<section xml:id="sec-prefs-tms">
<title>TMS</title>
+<titleabbrev xml:id="sec-prefs-tms-short">TMS preferences</titleabbrev>
<para>
The TMS tab (shown in <xref linkend="fig-prefs-tms"/>) gives some
</para>
</section>
+<section>
+<title>KDM email</title>
+
+<para>
+The KDM email is shown in <xref linkend="fig-prefs-kdm-email"/>.
+</para>
+
+<figure id="fig-prefs-kdm-email">
+ <title>KDM email preferences</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/prefs-kdm-email&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+This is a template for the email that is used to send KDMs out to
+cinemas. You can change it to say whatever you like. The
+‘magic’ string <code>$CPL_NAME</code> will be replaced by
+DCP's title.
+</para>
+
+</section>
+
+<section xml:id="sec-prefs-advanced">
+<title>Advanced</title>
+<titleabbrev xml:id="sec-prefs-advanced-short">Advanced preferences</titleabbrev>
+
+<para>
+The advanced preferences are shown in <xref linkend="fig-prefs-advanced"/>.
+</para>
+
+<figure id="fig-prefs-advanced">
+ <title>Advanced preferences</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/prefs-advanced&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+<guilabel>Maximum JPEG2000 bandwidth</guilabel> specifies the maximum
+bit-rate of JPEG2000 that DCP-o-matic will allow you to create. You
+are advised to leave this at 250Mbit/s in normal use for maximum DCP
+compatibility.
+</para>
+
+<para>
+<guilabel>Allow any DCP frame rate</guilabel> removes the limits on
+the DCP video frame rates that DCP-o-matic will create. This may be
+useful for experimentation. Again, you are strongly advised to leave
+this unticked for normal use.
+</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
+DCP. It is useful to leave <guilabel>General</guilabel>,
+<guilabel>Warnings</guilabel> and <guilabel>Errors</guilabel> ticked
+as this makes the log files useful for tracking down bugs.
+</para>
+
+<para>
+The <guilabel>Timing</guilabel> checkbox will enable extra log entries
+to allow developers to investigate and optimize 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>
+</section>
</section>
</chapter>
</para>
<section>
-<title>DCP rate limitations</title>
+<title>DCP frame rate limitations</title>
<para>
-There are some limitations to video and audio rates in DCPs. This is
+There are some limitations to video and audio frame rates in DCPs. This is
complicated by the fact that not all projectors will play DCPs at the
-same rates. It is possible to create a DCP which one projector will
+same frame rates. It is possible to create a DCP which one projector will
play fine, but another (of a different type) will refuse to play, or
even refuse to ingest.
</para>
audio would be running at the original speed with the video running
slowly. Hence the audio would drift slowly out of sync. To avoid
this, DCP-o-matic also resamples the audio such that the projector
-will play it too fast by the same amount. Hence it will sound
+will play it too slow by the same amount. Hence it will sound
slightly different but will remain in sync with the video.
</para>
content.
</para>
+<para>
+If you want to experiment with other non-standard frame rates, you can
+do so by ticking the <guilabel>Allow any DCP frame rate</guilabel> in
+the <guilabel>Advanced</guilabel> tab of the preferences dialogue (see the
+<xref linkend="sec-prefs-advanced" endterm="sec-prefs-advanced-short"/>). You are strongly advised to
+use this only on your own equipment, and only for experimentation
+purposes.
+</para>
+
</section>
</chapter>
offload some of the time-consuming JPEG2000 encoding to any number of
other machines on a network. To do this, one ‘master’
machine runs DCP-o-matic, and the ‘server’ machines run
-a small program called ‘dcpomatic_server’.
+a small program called <code>dcpomatic_server</code>.
+</para>
+
+<para>
+The master and server machines do not need to be the same type, so you
+can mix Windows PCs, Macs and Linux machines as you wish.
</para>
<section>
server or open a window to show its status.
</para>
+<para>If you would rather not bother installing DCP-o-matic on your
+server computers, the other option is to use the live-CD
+image that you can download from the <ulink
+url="http://dcpomatic.com/">DCP-o-matic web site.</ulink></para>
+
+<para>Either burn the image to CD, or write it to a USB stick (using
+something like <ulink
+url="http://unetbootin.sourceforge.net/">unetbootin</ulink>). Boot a
+PC from the CD or USB stick and it becomes a DCP-o-matic server
+without touching your standard operating system install.
+</para>
+
</section>
<section>
<title>Setting up DCP-o-matic</title>
<para>
-Once your servers are running, you need to tell your master
-DCP-o-matic instance about them. Start DCP-o-matic and open the
-<guilabel>Preferences</guilabel> dialog from the
-<guilabel>Edit</guilabel> menu. At the bottom of this dialog is a
-section where you can add, edit and remove encoding servers. For each
-encoding server you need only specify its IP address and the number of
-threads that it is running, so that DCP-o-matic knows how many
-parallel encode jobs to send to the server.
-</para>
-
-<para>
-Once this is done, any encodes that you start will split the workload
-up between the master machine and the servers.
+DCP-o-matic periodically looks on the local network for servers. Any
+that it finds are given work to do during encodes. Selecting
+<guilabel>Encoding Servers</guilabel> from the
+<guilabel>Tools</guilabel> menu brings up a window which shows that
+servers that DCP-o-matic has found.
</para>
</section>
provide a significant speed-up compared to a 100Mb/s network.
</para>
-<para>
-Making changes to the server configuration in the master DCP-o-matic
-will have no effect while an encode is running; the changes will only
-be noticed when a new encode is started.
-</para>
-
</section>
</chapter>