Add some stuff about video processing.
[dcpomatic.git] / doc / manual / dcpomatic.xml
index e91863a4858a5235b5b656419d789416c02108b4..39bc0987c7bba9cb6142a888ae2057ef9ff55974 100644 (file)
@@ -8,7 +8,7 @@
 <!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
@@ -72,7 +72,7 @@ This manual uses icons from the <ulink url="http://tango.freedesktop.org/">Tango
 <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.
@@ -108,9 +108,9 @@ like to install it.
 
 <para>
 You can install DCP-o-matic on Ubuntu 12.04 (&lsquo;Precise
-Pangolin&rsquo;), 12.10 (&lsquo;Quantal Quetzal&rsquo;) or 13.04
-(&lsquo;Raring Ringtail&rsquo;) using <code>.deb</code> packages:
-download the appropriate package from <ulink
+Pangolin&rsquo;), 12.10 (&lsquo;Quantal Quetzal&rsquo;), 13.10 (&lsquo;Saucy
+Salamander&rsquo;) or 14.04 (&lsquo;Trusty Tahr&rsquo;) 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.
@@ -118,6 +118,31 @@ 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>
 
@@ -139,9 +164,15 @@ The following dependencies are required:
 <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>
 
@@ -344,7 +375,7 @@ linkend="ch-files"/> for details about the files that DCP-o-matic creates.
 <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>
@@ -516,8 +547,8 @@ The <guilabel>Video</guilabel> tab controls properties of the image, as shown in
 The first option on this tab is the &lsquo;type&rsquo; 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>
 
@@ -531,10 +562,20 @@ left-right pair, as shown in <xref linkend="fig-3d-left-right"/>.
 </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>
 
 
@@ -779,9 +820,9 @@ your sound-rack fader.
 </para>
 
 <para>
-Current versions of DCP-o-matic only know about the Dolby CP750.  If
-you use a different sound processor, and know the gain curve of its
-volume control, <ulink url="mailto:cth@carlh.net">get in
+Current versions of DCP-o-matic only know about the Dolby CP650 and
+CP750.  If you use a different sound processor, and know the gain
+curve of its volume control, <ulink url="mailto:carl@dcpomatic.com">get in
 touch</ulink>.
 </para>
 
@@ -824,7 +865,7 @@ they can be &lsquo;burnt into&rsquo; the DCP (that is, they are
 included in the image and not overlaid by the projector).  Note that
 DVD and Blu-Ray subtitles are stored as bitmaps, so it is not possible
 (automatically) to use non-burnt-in subtitles with these sources.
-Select the <guilabel>With Subtitles</guilabel> checkbox to enable
+Select the <guilabel>With Subtitles</guilabel> check-box to enable
 subtitles.  The <guilabel>offset</guilabel> control moves the
 subtitles up and down the image, and the <guilabel>scale</guilabel>
 control changes their size.
@@ -838,7 +879,168 @@ DCPs).
 
 </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>
 
@@ -862,19 +1064,19 @@ the main window, as shown in <xref linkend="fig-dcp-tab"/>.
 
 <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> checkbox.  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>
 
@@ -904,8 +1106,20 @@ The <guilabel>Frame Rate</guilabel> control sets the frame rate of
 your DCP.  This can be a little tricky to get right.  Ideally, you
 want it to be the same as the video content that you are using.  If it
 is not the same, DCP-o-matic must resort to some tricks to alter your
-content to fit the specified frame rate.  Frame rates are discussed in more detail later.
-<!--- XXX: link -->
+content to fit the specified frame rate.  Frame rates are discussed in
+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
+KDM to play back.  Encryption is discussed in <xref
+linkend="ch-encryption"/>.
 </para>
 
 <para>
@@ -938,11 +1152,17 @@ high enough resolution to be worth presenting in 4K.
 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>
-Finally, the <guilabel>scaler</guilabel> is the method that will be used to scale up
+The <guilabel>Standard</guilabel> option specifies which of the two
+DCP standards DCP-o-matic should use.  If in doubt, use SMPTE (the
+more modern of the two).
+</para>
+
+<para>
+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>
@@ -954,11 +1174,184 @@ most situations.
 
 <para>
 It is not required that DCPs be encrypted, but they can be.  This
-chapter describes how DCPs are signed and encrypted, and how KDMs
-work.  It also discusses how DCP-o-matic can create encrypted DCPs and
-KDMs for them.
+chapter discusses the basic principles of DCP encryption, and how
+DCP-o-matic can create encrypted DCPs and KDMs for them.
+</para>
+
+<section>
+<title>Basics</title>
+
+<para>
+DCPs can be encrypted.  This means that the picture and sound data are
+encoded in such a way that only cinemas &lsquo;approved&rsquo; by the
+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 correct key
+delivery message (KDM) can play the DCP.
+</para>
+
+<section>
+<title>How it works (in a nutshell)</title>
+
+<para>
+This section attempts to summarise how DCP encryption works.  You can
+skip it if you like.  You may need some knowledge of encryption
+methods to understand it.
+</para>
+
+<para>
+We suppose that we are trying to distribute a DCP to
+Alice's cinema, without a troublemaker called Mallory being able to
+watch it himself.
+</para>
+
+<para>
+There are two main families of encryption techniques.  The first,
+symmetric-key encryption, allows us to encode some data using some
+numeric key.  After encoding, no-one can decode the data unless they
+know the key.
+</para>
+
+<para>
+The first step in a DCP encryption is to encode its data with some key
+using symmetric-key encryption.  The encrypted DCP can then be sent
+anywhere, safe in the knowledge that even if Mallory got hold of a
+copy, he could not decrypt it.
+</para>
+
+<para>
+Alice, however, needs to know the key so she can play the DCP in her
+cinema.  A simple approach might be for us to send Alice the key.
+However, if Mallory can intercept the DCP, he might also be able to
+intercept our communication of the key to Alice.  Furthermore, if Alice
+happened to know Mallory, she could just send him a copy of the key.
 </para>
 
+<para>
+The clever bit in DCP encryption requires the use of public-key
+encryption.  With this technique we can encrypt a block of data using
+some &lsquo;public&rsquo; key.  That data can then only be decrypted
+using a <emphasis>different</emphasis> &lsquo;private&rsquo; key.  The
+private and public keys are related mathematically, but it is
+extremely hard (or rather, virtually impossible) to derive the private
+key from the public key.
+</para>
+
+<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.
+</para>
+
+<para>
+We take our DCP's symmetric key and encrypt it using the public key of
+Alice's projector.  We send the result to Alice over email (using a
+format called a Key Delivery Message, or KDM).  Her projector then
+decrypts our message using its private key, yielding the magic
+symmetric key which can decrypt the DCP.
+</para>
+
+<para>
+If is fine if Mallory intercepts our email to Alice, since the only
+key which can decrypt the message is the private key buried inside
+Alice's projector.  The projector manufacturer is very careful that
+no-one ever finds out what this key is.  Our DCP is secure: only Alice
+can play it back, since only her projector knows the key (even Alice
+does not).
+</para>
+
+</section>
+</section>
+
+<section>
+<title>Encryption using DCP-o-matic</title>
+
+<para>
+There are two steps to distributing an encrypted DCP.  First, the
+DCP's data must be encrypted, and secondly KDMs must be generated for
+those cinemas that are allowed to play the DCP.
+</para>
+
+<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, which should be kept
+secure.
+</para>
+
+<para>
+A DCP that is generated with the <guilabel>Encrypted</guilabel> box
+ticked will not play on any projector as-is (it will be marked as
+&lsquo;locked&rsquo;, or whatever the projector manufacturer's term
+is).
+</para>
+
+<para>
+The second part is to generate KDMs for the cinemas that you wish to
+allow to play your DCP.  This is done using the <guilabel>Make
+KDMs</guilabel> option on the <guilabel>Jobs</guilabel> menu.  This
+will open the KDM dialogue box, as shown in <xref linkend="fig-kdm"/>.
+</para>
+
+<figure id="fig-kdm">
+  <title>KDM dialog</title> 
+  <mediaobject>
+    <imageobject> 
+      <imagedata fileref="screenshots/kdm&scs;"/>
+    </imageobject> 
+  </mediaobject>
+</figure>
+
+<para>
+In order to generate KDMs for a particular projector, you need to know
+its <emphasis>certificate</emphasis>.  These are usually made
+available by the projector manufacturers as text files with a
+<code>.pem</code> extension.
+</para>
+
+<para>
+DCP-o-matic can store these certificates to make life easier.  It
+stores details of cinemas and screens within those cinemas.  Each
+screen has a certificate for its projector.  DCP-o-matic can generate
+KDMs for any screens that it knows about.
+</para>
+
+<para>
+To add a cinema, click <guilabel>Add Cinema...</guilabel>.  This opens
+a dialogue box into which you can enter the cinema's name, and
+optionally an email address.  This email address can be used to
+get DCP-o-matic to deliver KDMs via email, but it is optional.
+</para>
+
+<para>
+Once you have added a cinema, select it by clicking on its name, then
+click <guilabel>Add Screen...</guilabel>.  The resulting dialogue
+allows you to enter a name for the screen and load in its certificate
+from a file.  The certificate should be in SHA256 PEM format.
+</para>
+
+<para>
+Once you have set up all the screens that you need KDMs for,
+DCP-o-matic can generate KDMs for the last DCP that you generated for
+the currently-loaded film.  Select the cinemas and/or screens that you
+want KDMs for and fill in the start and end dates and times.  
+</para>
+
+<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.
+</para>
+
+</section>
+
 </chapter>
 
 
@@ -976,7 +1369,7 @@ behaviour.  This chapter explains those options.
 <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>
@@ -1018,8 +1411,21 @@ read about how to contribute a translation.
 <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 &lsquo;from&rsquo; address
+for these emails.
 </para>
 
 </section>
@@ -1036,29 +1442,35 @@ properties of new films that you create.
 </section>
 
 <section>
-<title>Encoding servers</title>
+<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 &lsquo;master&rsquo; DCP-o-matic.  This
-option is described in more detail in <xref linkend="sec-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>
@@ -1086,8 +1498,9 @@ into the DCP.  The default values should cause no problems.
 
 </section>
 
-<section xml:id="prefs-tms">
+<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
@@ -1116,11 +1529,83 @@ credentials required to log into the TMS via SSH.
 </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
+&lsquo;magic&rsquo; 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>
 
-<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en" xml:id="ch-frame-rates">
 <title>Frame rates</title>
 
 <para>
@@ -1130,12 +1615,12 @@ however, always possible.
 </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>
@@ -1191,7 +1676,7 @@ If DCP-o-matic did nothing else, the result of this would be that the
 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>
 
@@ -1220,12 +1705,21 @@ content will give a summary of what DCP-o-matic is doing with that
 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>
 
 
-<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en" xml:id="ch-servers">
 <title>Encoding servers</title>
 
 <para>
@@ -1234,7 +1728,12 @@ than one machine at the same time.  An instance of DCP-o-matic can
 offload some of the time-consuming JPEG2000 encoding to any number of
 other machines on a network.  To do this, one &lsquo;master&rsquo;
 machine runs DCP-o-matic, and the &lsquo;server&rsquo; machines run
-a small program called &lsquo;dcpomatic_server&rsquo;.
+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>
@@ -1278,24 +1777,28 @@ tray; right-click it to open a menu from whence you can quit the
 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>
@@ -1313,12 +1816,6 @@ You will probably find that using a 1Gb/s or faster network will
 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>
@@ -1380,5 +1877,36 @@ to the cinema which is showing your DCP.
 
 </chapter>
 
+<chapter>
+<title>Loose ends</title>
+
+<para>
+This chapter collects a few notes on bits of DCP-o-matic that do not fit elsewhere in the manual.
+</para>
+
+<section>
+<title>Resuming encodes</title>
+
+<para>
+If you cancel a DCP encoding run half-way through, or your computer
+crashes... fear not.  DCP-o-matic takes care to ensure that, in most
+cases, it can resume encoding from where it left off.  When you
+re-start a DCP creation, using the same settings are a previous run,
+DCP-o-matic will first check that the existing picture frames are
+correct, and then resume from where it left off.  The checking of
+existing frames does take some time, but it is much faster than
+running a full re-encode.
+</para>
+
+<para>
+This resumption is achieved by writing a digest (hash) to disk for
+every image frame that is written.  On resumption, the existing MXF
+file for image data is read and its contents checked against the
+hashes.
+</para>
+
+</section>
+
+</chapter>
 
 </book>