Remove manual stuff about the hidden upmixers.
[dcpomatic.git] / doc / manual / dcpomatic.xml
index 5c819e0a790d9c682838ae3fec3b19767c7d5d0e..19551d0086442483c35ad36d15bd4f8081190556 100644 (file)
@@ -96,12 +96,8 @@ DCP-o-matic will be installed onto your machine.
 </para>
 
 <para>
-If you are using a 32-bit version of Windows, you will need the 32-bit
-installer.  For 64-bit Windows, either installer will work, but I
-suggest you use the 64-bit version as it will allow DCP-o-matic to
-use more memory.  You may find that DCP-o-matic crashes if you run
-many parallel encoding threads (more than 4) on the 32-bit
-version.
+Use the 64-bit installer unless you are using a 32-bit version of Windows.
+You may find that DCP-o-matic crashes if run the 32-bit version on a CPU with more than 4 cores.
 </para>
 
 </section>
@@ -112,43 +108,30 @@ version.
 <title>macOS</title>
 
 <para>
-DCP-o-matic will run on macOS version 10.6 (Snow Leopard) and
-higher.  DCP-o-matic is split into seven separate applications, each of
+DCP-o-matic versions 2.16.0 and higher will run on macOS version 10.10 (Yosemite) and
+higher.  DCP-o-matic is split into eight 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>
 
 <para>
-Make sure you choose the correct download, depending on whether you are running macOS 10.9 (Mavericks) (or higher) or something older.
+If you don't know which parts of DCP-o-matic to install, start
+with the first (main) part.
 </para>
 
 <para>
-If you don't know which parts of DCP-o-matic to install, start
-with the first (main) part.
+If you are using macOS 10.9 (Mavericks) or older you will need to install the latest 2.14.x version of DCP-o-matic.
 </para>
 
 </section>
 
 <!-- ============================================================== -->
 <section>
-<title>Debian, Ubuntu or Mint Linux</title>
-
-<para>
-  You can install DCP-o-matic on:
-</para>
-
-<itemizedlist>
-  <listitem>Debian 9 (&lsquo;squeeze&rsquo;), 10 (&lsquo;buster&rsquo;) and unstable (&lsquo;sid&rsquo;)</listitem>
-  <listitem>Ubuntu 16.04 (&lsquo;Xenial Xerus&rsquo;), 18.04 (&lsquo;Bionic Beaver&rsquo;), 19.10 (&lsquo;Eoan Ermine&rsquo;) and 20.04 (&lsquo;Focal Fossa&rsquo;)</listitem>
-  <listitem>Mint 18 and 19</listitem>
-</itemizedlist>
+<title>Debian, Ubuntu and Mint Linux</title>
 
-<para>
-using <code>.deb</code> packages: download the appropriate package
-from <ulink url="https://dcpomatic.com/">https://dcpomatic.com/</ulink>
-and double-click it.  Debian, Ubuntu or Mint will install the necessary bits and
-pieces and set DCP-o-matic up for you.
+<para>There are <code>.deb</code> packages for Debian, Ubuntu and Mint on 
+  <ulink url="https://dcpomatic.com/">https://dcpomatic.com/</ulink>
 </para>
 </section>
 <!-- ============================================================== -->
@@ -158,7 +141,7 @@ pieces and set DCP-o-matic up for you.
 <section>
   <title>Fedora, Centos and Mageia Linux</title>
 
-  <para>There are <code>.rpm</code> packages for Fedora 30, 31 and 32, Centos 7 and 8 and Mageia 7 on
+  <para>There are <code>.rpm</code> packages for Fedora, Centos and Mageia on
   <ulink url="https://dcpomatic.com/">https://dcpomatic.com/</ulink>
   </para>
 </section>
@@ -174,72 +157,14 @@ thanks to Stefan Karner.
 </para>
 </section>
 
-
-<!-- ============================================================== -->
 <section>
-<title>Other Linux distributions</title>
-
-<para>
-Installation on other Linux systems (for which no packages are
-available) is quite hard as it must be compiled from source.  If you
-can't download packages for your distribution, do let me know by
-<ulink url="mailto:carl@dcpomatic.com">email</ulink> and I will look
-into providing packages on the website.
-</para>
-
+<title>Building from source</title>
 <para>
-The following dependencies are required:
-<itemizedlist>
-<listitem><ulink url="http://ffmpeg.org/">FFmpeg</ulink></listitem>
-<listitem><ulink url="http://www.mega-nerd.com/libsndfile/">libsndfile</ulink></listitem>
-<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.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.wxwidgets.org/">wxWidgets</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/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>
-
-<para>
-Once you have installed the development packages for the dependencies,
-download the source code from <ulink
-url="https://dcpomatic.com/">https://dcpomatic.com/</ulink>,
-unpack it and run the following commands from inside the source
-directory:
-</para>
-
-<programlisting>
-./waf configure --disable-tests
-./waf build
-sudo ./waf install
-</programlisting>
-
-<para>
-With any luck, this will build and install DCP-o-matic on your system.  To run it, enter:
-</para>
-
-<programlisting>
-dcpomatic2
-</programlisting>
-
-<para>
-in a shell.
+Since DCP-o-matic is open-source you can also build it yourself,
+though this can be quite a difficult process (especially on Windows and macOS).
+There are instructions for how to do it on <ulink url="https://dcpomatic.com/development">https://dcpomatic.com/</ulink>
 </para>
 </section>
-
 </chapter>
 
 
@@ -264,15 +189,19 @@ movie <ulink url="http://sintel.org/">Sintel</ulink> from <ulink
 url="https://download.blender.org/durian/trailer/Sintel_Trailer.480p.DivX_Plus_HD.mkv">their
 website</ulink>.  Generally one would want to use the
 highest-resolution material available, but for this test we will use
-the low-resolution version to save everyone's bandwidth bills.
+the low-resolution version to save on download time.
 </para>
 
 <para>
 Now, start DCP-o-matic and its window will open.  First, we will
 create a new &lsquo;film&rsquo;.  A &lsquo;film&rsquo; is how DCP-o-matic refers to
 some pieces of content, along with some settings, which we will make into
-a DCP.  DCP-o-matic stores its data in a folder on your disk while it
-creates the DCP.  You can create a new film by selecting
+a DCP.  DCP-o-matic stores its &lsquo;film&rsquo; data in a folder on your disk while it
+creates the DCP.
+</para>
+
+<para>
+You can create a new film by selecting
 <guilabel>New</guilabel> from the <guilabel>File</guilabel> menu, as
 shown in <xref linkend="fig-file-new"/>.
 </para>
@@ -303,7 +232,7 @@ linkend="fig-video-new-film"/>.
 <para>
 In this dialogue box you can choose a name for the film.  This will be
 used to name the folder to store its data in, and also as the initial
-name for the DCP itself.  You can also choose whereabouts you want to create
+name for the DCP itself.  You can also choose where you want to create
 the film.  In the example from the figure, DCP-o-matic will create a
 folder called &lsquo;DCP Test&rsquo; inside my existing folder <code>DCP</code> into which it
 will write its working files.
@@ -403,17 +332,15 @@ linkend="fig-making-dcp"/>.
 </figure>
 
 <para>
-When it has finished, the DCP will end up on your disk inside the
-film's folder.  You can then copy this to a projector via a USB
-stick, hard-drive or network connection.  See <xref
+When it has finished, the DCP will be written into its own folder inside the film's folder.
+You can copy this to a projector via a USB stick, hard-drive or network connection.  See <xref
 linkend="ch-files"/> for details about the files that DCP-o-matic creates.
 </para>
 
 <para>
 Alternatively, DCP-o-matic can upload your DCP directly to a projector
 or Theatre Management System (TMS) that is accessible via SCP or FTP
-across your network.  See the <xref linkend="sec-prefs-tms"
-endterm="sec-prefs-tms-short"/> in <xref linkend="sec-prefs-tms"/>.
+across your network.  See <xref linkend="sec-prefs-tms"/>.
 </para>
 
 </section>
@@ -495,6 +422,21 @@ to encode a single frame which it can then repeat.
 </chapter>
 
 
+<!-- ============================================================== -->
+<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en" id="ch-disk-writer">
+<title>Writing DCP drives</title>
+
+<para>
+Once a DCP has been created it must often be transferred to a cinema for playback.  The most reliable way to do this is to write a specially-formatted drive (in the ext2 format) containing your DCP.
+</para>
+
+<para>
+Writing ext2-formatted drives is difficult from macOS and Windows without custom software.  DCP-o-matic includes a tool called the &lsquo;DCP-o-matic Disk Writer&rsquo; which makes it easy.
+</para>
+
+</chapter>
+
+
 <!-- ============================================================== -->
 <chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en" id="ch-manipulating-existing-dcps">
 <title>Manipulating existing DCPs</title>
@@ -512,7 +454,7 @@ modify them in various ways.
 The first step in manipulating an existing DCP is to import it.  Click
 <guilabel>Add DCP...</guilabel> and select your DCP's folder.  It will
 be added to the DCP-o-matic project.  If the DCP is unencrypted you
-can preview it in the normal way, though playback will be slow as
+can preview it in the normal way, though playback may be slow as
 decoding of DCPs is almost as computationally intensive as encoding
 them.
 </para>
@@ -714,12 +656,14 @@ example, a JPEG, PNG or TIFF file.
 images which should be treated as the frames of a video.
 </listitem>
 
-<listitem>Subtitle &mdash; a file containing subtitle which will be
+<listitem>Subtitle &mdash; a file containing subtitles which will be
 superimposed on the image of the DCP.  These can be
 <guilabel>.srt</guilabel>, <guilabel>.ssa</guilabel>, <guilabel>.ass</guilabel> or <guilabel>.xml</guilabel>
-files.</listitem>
+files.  Subtitle files can also be used to make closed captions.</listitem> 
 
 <listitem>DCP &mdash; an existing DCP.</listitem>
+
+<listitem>ATMOS MXFs &mdash; if you have Dolby ATMOS content in MXF format (created using Dolby's tools) you can add it to a DCP just like any other content.</listitem>
 </itemizedlist>
 
 <para>
@@ -822,7 +766,7 @@ linkend="sec-prefs-keys"/>).
 
 <!-- ============================================================== -->
 <section>
-<title>Content Properties</title>
+<title>Content properties</title>
 
 <para>
 Below the content list are the controls to set content properties.  To
@@ -932,38 +876,6 @@ and DCP-o-matic will pick up the appropriate frames from each.
 </section>
 
 
-<!-- ============================================================== -->
-<section>
-<title>Filtering</title>
-
-<para>
-The &lsquo;filters&rsquo; settings allow you to apply various video
-filters to the image.  These may be useful to try to improve
-poor-quality sources like DVDs.  You can set up the filters by clicking the
-<guilabel>Edit</guilabel> button next to the filters entry in the
-setup area of the DCP-o-matic window; this opens the filters selector
-as shown in <xref linkend="fig-filters"/>.
-</para>
-
-<figure id="fig-filters">
-  <title>Filters selector</title>
-  <mediaobject>
-    <imageobject>
-      <imagedata fileref="screenshots/filters&scs;"/>
-    </imageobject>
-  </mediaobject>
-</figure>
-
-<para>
-After changing the filters setup, you will need to regenerate the DCP
-to see the effect on the cinema screen.  The preview in DCP-o-matic
-will update itself whenever filters are changed, though of course this
-image may be smaller and of lower resolution than a projected image!
-</para>
-</section>
-
-
-
 <!-- ============================================================== -->
 <section>
 <title>Colour conversion</title>
@@ -1693,6 +1605,107 @@ open to allow you to choose which settings you want to copy.  Clicking
 </section>
 
 
+<section>
+<title>Advanced content settings</title>
+
+<para>
+There are a few more content settings that you can change by right-clicking a piece of content in the list and choosing <guilabel>Advanced settings...</guilabel>
+This opens the dialogue box shown in <xref linkend="fig-advanced-content"/>.
+</para>
+
+<figure id="fig-advanced-content">
+  <title>Advanced content dialogue</title>
+  <mediaobject>
+    <imageobject>
+       <imagedata fileref="screenshots/advanced-content&scs;"/>
+    </imageobject>
+  </mediaobject>
+</figure>
+
+
+<!-- ============================================================== -->
+<section>
+<title>Video filters</title>
+
+<para>
+The <guilabel>Video filters</guilabel> setting allows you to apply various
+filters to the image.  These may be useful to try to improve
+poor-quality sources like DVDs.  You can set up the filters by clicking the
+<guilabel>Edit</guilabel> button next to the filters entry; this opens the filters selector
+as shown in <xref linkend="fig-filters"/>.
+</para>
+
+<figure id="fig-filters">
+  <title>Filters selector</title>
+  <mediaobject>
+    <imageobject>
+      <imagedata fileref="screenshots/filters&scs;"/>
+    </imageobject>
+  </mediaobject>
+</figure>
+
+</section>
+
+
+<section>
+<title>Override frame rate</title>
+
+<para>
+The <guilabel>Override detected video frame rate</guilabel> setting has some different effects depending on the type of content
+you use it on.
+</para>
+
+<para>
+For video content, it sets the frame rate that DCP-o-matic will run the video at.  This is useful if DCP-o-matic has mis-detected
+the video frame rate.  For example, if DCP-o-matic says your content is 24fps when you know for a fact it's 25fps, you can set the
+override value to 25 to force DCP-o-matic to do the right thing.
+</para>
+
+<para>
+On audio, subtitle and caption content this setting behaves slightly differently.  It sets the video frame rate that the content
+in question was intended to work with.  As an example, consider a project with a 23.976fps video source and some separate audio files.
+Perhaps those audio files have been mastered alongside a 24fps version of your video.  By default, DCP-o-matic will see the 23.976fps
+video file and decide to run it slightly fast at 24fps to fit the DCP standard.  It will then also run the audio slightly fast so that
+it stays in sync with the video.
+</para>
+
+<para>
+In this case, though, that is not what you want, since the audio is already &lsquo;fixed&rsquo; to work alongside 24fps video.  If you
+override the video frame rate of the <emphasis>audio</emphasis> content to 24fps this will stop DCP-o-matic altering it.
+</para>
+
+<para>
+A similar situation can occur if you have video at one rate and a subtitle file that was prepared with its timing at a different rate.
+In that case, you should override the video frame rate of the <emphasis>subtitle</emphasis> content to the one that it was prepared for.
+This will mean that DCP-o-matic can get the relative timing right.
+</para>
+
+<para>
+Do <emphasis>not</emphasis> use this setting to change the DCP frame rate.  Doing so will result in strange effects and sync problems.
+</para>
+</section>
+
+
+<section>
+<title>Video has burnt-in subtitles</title>
+<para>
+Details about subtitle language are stored in various places within the DCP metadata.  If a piece of video content already has subtitles
+burnt into the image you can tell DCP-o-matic the language that they are in by clicking the <guilabel>Edit...</guilabel> button.
+</para>
+</section>
+
+
+<section>
+<title>Ignore this content's video</title>
+<para>
+Tick this if you have some content which includes video along with other things (such as audio or subtitles) and you do
+<emphasis>not</emphasis> want the video to appear in the DCP.
+</para>
+</section>
+
+
+</section>
+
 </chapter>
 
 
@@ -1861,7 +1874,7 @@ unused channel will be filled with silence.
 
 <para>
 The <guilabel>Processor</guilabel> control allows you to select a
-process to apply to the audio before it goes into the DCP.  Three processes are currently provided:
+process to apply to the audio before it goes into the DCP.  One process is currently provided:
 </para>
 
 <itemizedlist>
@@ -1871,31 +1884,7 @@ stereo input and extract the common part (corresponding to the
 The remaining L/R parts will be kept in the L/R channels of the DCP.
 This may be useful to make near-field L/R mixes more compatible with
 cinema audio systems.</listitem>
-<listitem>Stereo to 5.1 up-mixer A &mdash; this will take a stereo input and up-mix it to &lsquo;fake&rsquo; 5.1.  The input L/R are treated as follows:
-<itemizedlist>
-<listitem>DCP L is input L bandpass-filtered between 1.9kHz and 4.8kHz.</listitem>
-<listitem>DCP R is input R bandpass-filtered between 1.9kHz and 4.8kHz.</listitem>
-<listitem>DCP C is input L mixed with input R, taken down by 3dB and then bandpass-filtered between 150Hz and 1.9kHz.</listitem>
-<listitem>DCP Lfe is input L mixed with input R, taken down by 3dB and then bandpass-filtered between 20Hz and 150Hz.</listitem>
-<listitem>DCP Ls is input L bandpass-filtered between 4.8kHz and 20kHz.</listitem>
-<listitem>DCP Rs is input R bandpass-filtered between 4.8kHz and 20kHz.</listitem>
-</itemizedlist>
-<para>
-This upmixing algorithm is due to GĂ©rald Maruccia.
-</para>
-</listitem>
-<listitem>Stereo to 5.1 up-mixer B &mdash; this uses a different approach:
-<itemizedlist>
-  <listitem>DCP L is input L.</listitem>
-  <listitem>DCP R is input R.</listitem>
-  <listitem>DCP C is input L + input R taken down by 3dB.</listitem>
-  <listitem>DCP Lfe is DCP C bandpass filtered between 20Hz and 150Hz.</listitem>
-  <listitem>DCP Ls and Rs are input L - input R with a 20ms delay.</listitem>
 </itemizedlist>
-</listitem>
-</itemizedlist>
-
-The up-mixers are not particularly advanced and should be used with care.  You are strongly advised to check how the DCPs sound in a cinema if you have used one of DCP-o-matic's upmixers.
 
 <!-- ============================================================== -->
 <section xml:id="sec-reels">
@@ -2126,7 +2115,15 @@ from the timeline is also preserved.
   <para>
     From this dialogue you can select the required output format,
     output file and, in the case of MP4, the quality of the output
-    file.  Higher quality files will, of course, be larger.
+    file (by setting the <ulink url="https://trac.ffmpeg.org/wiki/Encode/H.264#crf">CRF value</ulink>).
+  </para>
+
+  <para>
+    The useful range of CRF values is from 17 (high quality but large file size) to 28 (smaller file size and still reasonable quality).
+  </para>
+
+  <para>
+    The time needed to export, and the resulting size, depend partly on the DCP resolution set in the project.  To change that, see chapter <xref linkend="ch-dcp"/>.
   </para>
 
   <para>
@@ -2172,7 +2169,7 @@ methods to understand it.
 
 <para>
 We suppose that we are trying to send a DCP to
-Alice's cinema without a troublemaker called Mallory being able to
+Alice's cinema without a third party called Mallory being able to
 watch it himself.
 </para>
 
@@ -2228,7 +2225,7 @@ certificate so that others can make encrypted DCPs for DCP-o-matic.
 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
+decrypts our message using its private key, giving the
 symmetric key which can decrypt the DCP.
 </para>
 
@@ -2714,7 +2711,9 @@ like to live on the bleeding edge!
 
 <para>
 With these controls you can set the issuer and creator strings that
-will be put into the DCPs which you create.
+will be put into the DCPs which you create.  The issuer is typically your name
+(or your organisation's name) and the creator is typically the name of the tool
+used to make the DCP (e.g. DCP-o-matic).
 </para>
 </section>
 
@@ -3738,7 +3737,7 @@ The full details of OV and VF files are discussed in <xref linkend="sec-overlay"
 </chapter>
 
 <chapter xml:id="ch-player" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
-  <title>Playing and verifying DCPs</title>
+  <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
@@ -3764,14 +3763,57 @@ The full details of OV and VF files are discussed in <xref linkend="sec-overlay"
   resolution.
   </para>
 
+</chapter>
+
+
+<chapter xml:id="ch-verifier" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+  <title>Verifying DCPs</title>
+
   <para>
-    The player also offers a simple DCP validator.  To check a DCP,
+    The player also offers a DCP verifier.  To check a DCP,
     open it and then select <guilabel>Verify DCP</guilabel> from the
-    <guilabel>Tools</guilabel> menu.  This will run some basic checks to see if the DCP meets the required standards.
+    <guilabel>Tools</guilabel> menu.
+  </para>
+
+  <para>
+    The verifier will report three kinds of problems:
+  </para>
+
+  <itemizedlist>
+  <listitem><emphasis>Errors</emphasis> &mdash; serious problems with the DCP that are likely to cause problems on playback.</listitem>
+  <listitem><emphasis>Bv2.1 errors</emphasis> &mdash; errors described by the <ulink url="https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9161348">SMPTE Bv2.1 standard</ulink>.</listitem>
+  <listitem><emphasis>Warnings</emphasis> &mdash; small problems that may not matter.</listitem>
+  </itemizedlist>
+
+  <para>
+    The following sections list what the verifier checks for in each category.
   </para>
 
+  <section>
+  <title>Errors</title>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="verify_errors.xml"/>
+  </section>
+
+  <section>
+  <title>Bv2.1 errors</title>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="verify_bv21_errors.xml"/>
+  </section>
+
+  <section>
+  <title>Warnings</title>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="verify_warnings.xml"/>
+  </section>
+
 </chapter>
 
+
+<!-- ============================================================== -->
+<chapter>
+<title>Keyboard shortcuts</title>
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="shortcuts.xml"/>
+</chapter>
+
+
 <!-- ============================================================== -->
 <chapter xml:id="ch-config" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
 <title>Configuration files</title>