*.exe
alignment
sync
+doc/manual/html
+doc/manual/pdf
+doc/manual/extensions.ent
\ No newline at end of file
--- /dev/null
+# DVD-o-matic manual makefile
+
+all: html pdf
+
+DIAGRAMS :=
+
+SCREENSHOTS := file-new.png new-film.png click-content-selector.png select-content-file.png examine-thumbs.png setup.png
+
+XML := dvdomatic.xml
+
+GRAPHICS :=
+
+#
+# For the HTML, default to copying the screenshots direct
+#
+html/screenshots/%.png: screenshots/%.png
+ mkdir -p html/screenshots
+ cp $< $@
+
+#
+# Some need resizing...
+#
+html/screenshots/editor.png: screenshots/editor.png
+ mkdir -p html/screenshots
+ convert -resize 50% $< $@
+html/screenshots/mixer.png: screenshots/mixer.png
+ mkdir -p html/screenshots
+ convert -resize 50% $< $@
+html/screenshots/default-folder-for-new-sessions.png: screenshots/default-folder-for-new-sessions.png
+ mkdir -p html/screenshots
+ convert -resize 75% $< $@
+html/screenshots/welcome-to-ardour.png: screenshots/welcome-to-ardour.png
+ mkdir -p html/screenshots
+ convert -resize 75% $< $@
+html/screenshots/monitoring-choices.png: screenshots/monitoring-choices.png
+ mkdir -p html/screenshots
+ convert -resize 75% $< $@
+html/screenshots/monitor-section.png: screenshots/monitor-section.png
+ mkdir -p html/screenshots
+ convert -resize 75% $< $@
+html/screenshots/audio-midi-setup-device.png: screenshots/audio-midi-setup-device.png
+ mkdir -p html/screenshots
+ convert -resize 75% $< $@
+html/screenshots/new-session.png: screenshots/new-session.png
+ mkdir -p html/screenshots
+ convert -resize 75% $< $@
+html/screenshots/export-dialogue.png: screenshots/export-dialogue.png
+ mkdir -p html/screenshots
+ convert -resize 75% $< $@
+
+# For HTML: convert graphics from SVG to PNG
+graphics/%.png: graphics/%.svg
+ inkscape -z -f $< --export-png $@ --export-area-drawing
+
+# For LaTeX/PDF: convert graphics from SVG to PDF
+graphics/%.pdf: graphics/%.svg
+ inkscape -z -f $< --export-pdf $@ --export-area-drawing
+
+# For HTML: convert diagrams from SVG to PNG
+diagrams/%.png: diagrams/%.svg
+ inkscape -z -f $< --export-png $@ --export-area-drawing
+
+# For LaTeX/PDF: convert diagrams from SVG to PDF
+diagrams/%.pdf: diagrams/%.svg
+ inkscape -z -f $< --export-pdf $@ --export-area-drawing
+
+#
+# HTML
+#
+
+html: $(XML) dvdomatic-html.xsl extensions-html.ent dvdomatic.css \
+ $(addprefix html/screenshots/,$(SCREENSHOTS)) \
+ $(subst .svg,.png,$(addprefix diagrams/,$(DIAGRAMS))) \
+ $(subst .svg,.png,$(addprefix graphics/,$(GRAPHICS))) \
+
+# The DocBook needs to know what file extensions to look for
+# for screenshots and diagrams; use the correct file to tell it.
+ cp extensions-html.ent extensions.ent
+
+# DocBoox -> html
+ xmlto html -m dvdomatic-html.xsl dvdomatic.xml --skip-validation -o html
+
+# Copy graphics and CSS in
+# mkdir -p html/diagrams html/graphics
+# cp diagrams/*.png html/diagrams
+# cp graphics/*.png html/graphics
+ cp dvdomatic.css html
+
+#
+# PDF
+#
+
+pdf: $(XML) dvdomatic-pdf.xsl extensions-pdf.ent screenshots/*.png $(subst .svg,.pdf,$(addprefix diagrams/,$(DIAGRAMS)))
+
+# The DocBook needs to know what file extensions to look for
+# for screenshots and diagrams; use the correct file to tell it.
+ cp extensions-pdf.ent extensions.ent
+
+ mkdir -p pdf
+
+ dblatex -p dvdomatic-pdf.xsl -s dvdomatic.sty -r pptex.py -T native dvdomatic.xml -t pdf -o pdf/dvdomatic.pdf
+
+
+#
+# LaTeX (handy for debugging)
+#
+
+tex: $(XML) dvdomatic-pdf.xsl extensions-pdf.ent
+
+# The DocBook needs to know what file extensions to look for
+# for screenshots and diagrams; use the correct file to tell it.
+ cp extensions-pdf.ent extensions.ent
+
+ mkdir -p tex
+
+# -P <foo> removes the revhistory table
+ dblatex -P doc.collab.show=0 -P latex.output.revhistory=0 -p dvdomatic-pdf.xsl -s dvdomatic.sty -r pptex.py -T native dvdomatic.xml -t tex -o tex/dvdomatic.tex
+
+
+clean:; rm -rf html pdf diagrams/*.pdf diagrams/*.png graphics/*.png *.aux dvdomatic.cb dvdomatic.cb2 dvdomatic.glo dvdomatic.idx dvdomatic.ilg
+ rm -rf dvdomatic.ind dvdomatic.lof dvdomatic.log dvdomatic.tex dvdomatic.toc extensions.ent dvdomatic.out
--- /dev/null
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+<!-- Our CSS -->
+<xsl:param name="html.stylesheet" select="'ardour.css'"/>
+
+<!-- I can't fathom xmlto's logic with image scaling, so I've turned it off -->
+<xsl:param name="ignore.image.scaling" select="1"/>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version='1.0' encoding="iso-8859-1"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
+
+<!-- colour links in black -->
+<xsl:param name="latex.hyperparam">colorlinks,linkcolor=black,urlcolor=black</xsl:param>
+
+<!-- no revhistory table -->
+<xsl:param name="doc.collab.show">0</xsl:param>
+<xsl:param name="latex.output.revhistory">0</xsl:param>
+
+<!-- hack images to vaguely the right size -->
+<xsl:param name="imagedata.default.scale">scale=0.6</xsl:param>
+
+<!-- don't make too-ridiculous section numbers -->
+<xsl:param name="doc.section.depth">3</xsl:param>
+
+</xsl:stylesheet>
--- /dev/null
+body {
+ font-family: luxi sans, sans-serif;
+ margin-left: 4em;
+ margin-right: 4em;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+div.sidebar {
+ margin-left: 1em;
+ margin-right: 1em;
+ padding-left: 1em;
+ padding-right: 1em;
+ border-color: #000000;
+ border-width: 2px;
+ border-style: solid;
+ background-color: #0E9E75;
+}
--- /dev/null
+%%
+%% This style is derivated from the docbook one
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ardour}[2007/04/04 My DocBook Style]
+
+%% Just use the original package and pass the options
+\RequirePackageWithOptions{docbook}
+
+% Use a nice font
+\usepackage{lmodern}
+
+% Define \dbend as the dangerous bend sign
+\font\manual=manfnt
+\def\dbend{{\manual\char127}}
+
+% Redefine sidebar environment to use the dangerous bend style
+% Danger, Will Robinson!
+\def\sidebar{\begin{trivlist}\item[]\noindent%
+\begingroup\hangindent=2pc\hangafter=-2%\clubpenalty=10000%
+\def\par{\endgraf\endgroup}%
+\hbox to0pt{\hskip-\hangindent\dbend\hfill}\ignorespaces}
+\def\endsidebar{\par\end{trivlist}}
+
+
+% Futz with the title page; basically a copy of
+% /usr/share/texmf/tex/latex/dblatex/style/dbk_title.sty
+% with authors added.
+
+\def\DBKcover{
+\ifthenelse{\equal{\DBKedition}{}}{\def\edhead{}}{\def\edhead{Ed. \DBKedition}}
+
+\pagestyle{empty}
+
+% interligne double
+\setlength{\oldbaselineskip}{\baselineskip}
+\setlength{\baselineskip}{2\oldbaselineskip}
+\textsf{
+\vfill
+\vspace{2.5cm}
+\begin{center}
+ \huge{\textbf{\DBKtitle}}\\ %
+ \ \\ %
+ \ \\ %
+ \Large{\DBKauthor}\\ %
+ \ifx\DBKsubtitle\relax\else%
+ \underline{\ \ \ \ \ \ \ \ \ \ \ }\\ %
+ \ \\ %
+ \huge{\textbf{\DBKsubtitle}}\\ %
+ \fi
+\end{center}
+\vfill
+\setlength{\baselineskip}{\oldbaselineskip}
+\hspace{1cm}
+\vspace{1cm}
+\begin{center}
+\begin{tabular}{p{7cm} p{7cm}}
+\Large{\DBKreference{} \edhead} & \\
+\end{tabular}
+\end{center}
+}
+
+% Format for the other pages
+\newpage
+\setlength{\baselineskip}{\oldbaselineskip}
+\chead[]{\DBKcheadfront}
+\lfoot[]{}
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book [
+<!ENTITY % sgml.features "IGNORE">
+<!ENTITY % xml.features "INCLUDE">
+<!ENTITY % dbcent PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.5//EN"
+ "/usr/share/xml/docbook/schema/dtd/4.5/dbcentx.mod">
+%dbcent;
+<!ENTITY % extensions SYSTEM "extensions.ent">
+%extensions;
+]>
+<book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+
+<bookinfo>
+<title>DVD-o-matic</title>
+<author><firstname>Carl</firstname><surname>Hetherington</surname></author>
+</bookinfo>
+
+<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+<title>Introduction</title>
+
+<para>
+Hello, and welcome to DVD-o-matic!
+</para>
+
+<section>
+<title>What is DVD-o-matic?</title>
+
+<para>
+DVD-o-matic is a program to generate <ulink
+url="http://en.wikipedia.org/wiki/Digital_Cinema_Package">Digital
+Cinema Packages</ulink> (DCPs) from DVDs, Blu-Rays, video files such as MP4
+and AVI, or still images. The resulting DCPs will play on modern digital
+cinema projectors.
+</para>
+
+<para>
+You might find it useful to make DVDs easier to present, to encode
+independently-shot feature films, or to generate local advertising for
+your cinema.
+</para>
+
+</section>
+</chapter>
+
+<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+<title>Installation</title>
+
+<section>
+<title>Windows</title>
+
+<para>
+To install DVD-o-matic on Windows, simply download the installer from
+<ulink url="http://carlh.net/software/dvdomatic">http://carlh.net</ulink>
+and double-click it. Click through the installer wizard, and
+DVD-o-matic will be installed to your machine.
+</para>
+
+</section>
+
+<section>
+<title>Linux</title>
+
+<para>
+Installation on Linux is currently a little involved, as there are no
+packages available (yet); you will have to compile it from source.
+</para>
+
+<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.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</ulink></listitem>
+<listitem><ulink url="http://www.wxwidgets.org/">wxWidgets</ulink></listitem>
+<listitem><ulink url="http://carlh.net/software/libdcp/">libdcp</ulink></listitem>
+</itemizedlist>
+</para>
+
+<para>
+Once you have installed the development packages for the dependencies,
+download the source code from <ulink
+url="http://carlh.net/software/dvdomatic">http://carlh.net</ulink>,
+unpack it and run the following commands from inside the source
+directory:
+</para>
+
+<programlisting>
+./waf configure
+./waf build
+sudo ./waf install
+</programlisting>
+
+<para>
+With any luck, this will build and install DVD-o-matic on your system. To run it, enter:
+</para>
+
+<programlisting>
+dvdomatic
+</programlisting>
+
+<para>
+in a shell.
+</para>
+
+</section>
+</chapter>
+
+<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+<title>Creating a video DCP with DVD-o-matic</title>
+
+<para>
+In this chapter we will see how to create a video DCP using DVD-o-matic.
+</para>
+
+<section>
+<title>Creating a new film</title>
+
+<para>
+Let's make a very simple DCP to see how DVD-o-matic works. First, we
+need some content. Download the low-resolution trailer for the open
+movie <ulink url="http://sintel.org/">Sintel</ulink> from <ulink
+url="http://ftp.nluug.nl/ftp/graphics/blender/apricot/trailer/Sintel_Trailer1.480p.DivX_Plus_HD.mkv">their
+website</ulink>. Generally, of course, 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.
+</para>
+
+<para>
+Now, start DVD-o-matic and its window will open. First, we will
+create a new film. A ‘film’ is how DVD-o-matic refers to
+a piece of content, along with some settings, which we will make into
+a DCP. DVD-o-matic stores its data in a folder on your disk while it
+creates the DCP. will use to store its working files while it creates
+your DCP. 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>
+
+<figure id="fig-file-new">
+ <title>Creating a new film</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/file-new&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+This will open a dialogue box for the new film, as shown in <xref
+linkend="fig-new-film"/>.
+</para>
+
+<figure id="fig-new-film">
+ <title>Dialogue box for creating a new film</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/new-film&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+In this dialogue box you can choose a name for the DCP. 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 set where you want to create
+the film. In the example from the figure, DVD-o-matic will create a
+folder called ‘DCP Test’ inside my home folder (carl) into which it
+will write its working files.
+</para>
+
+</section>
+
+<section>
+<title>Selecting content</title>
+
+<para>
+The next step is to set the content that you want to use. Click the
+content selector, as shown in <xref
+linkend="fig-click-content-selector"/> and the a file chooser will
+open for you to select the content file to use, as shown in <xref
+linkend="fig-select-content-file"/>.
+</para>
+
+<figure id="fig-click-content-selector">
+ <title>Opening the content selector</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/click-content-selector&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<figure id="fig-select-content-file">
+ <title>Selecting the content file</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/select-content-file&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+Select your content file and click <guilabel>Open</guilabel>. In this
+case, we are using the Sintel trailer that we downloaded earlier.
+</para>
+
+<para>
+When you do this, DVD-o-maticw will take a look at your file. After a
+short while (when the progress bars at the bottom right of the window
+have finished), you can look through your content using the slider to
+the right of the window, as shown in <xref linkend="fig-examine-thumbs"/>.
+</para>
+
+<figure id="fig-examine-thumbs">
+ <title>Examining the content</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/examine-thumbs&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+Dragging the slider will move through your video.
+</para>
+
+</section>
+
+<section>
+<title>Setting up</title>
+
+<para>
+Now there are a few things to set up to describe how the DCP should be
+created, as shown in <xref linkend="fig-setup"/>.
+</para>
+
+<figure id="fig-setup">
+ <title>Setting up</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshots/setup&scs;"/>
+ </imageobject>
+ </mediaobject>
+</figure>
+
+<para>
+The first thing is the content type. This can be
+‘feature’, ‘trailer’ or whatever; select the
+required type from the drop-down list.
+</para>
+
+<para>
+Next is the format. This will govern the shape that DVD-o-matic will
+make your image into. Select the aspect ratio that your content
+should be presented in. The ‘4:3 within Flat’ and
+‘16:9 within Flat’ settings will put the image at the
+specified ratio within a Flat (1.85:1) frame, so that you can project
+the DCP using your projector's Flat preset.
+</para>
+
+<para>
+The remaining options can often be left alone, but may sometimes be
+useful. The ‘crop’ settings can be used to crop your
+content, which can be useful to remove black borders from round the
+edges of DVD images, for example. The <guilabel>L</guilabel>,
+<guilabel>R</guilabel>, <guilabel>T</guilabel> and
+<guilabel>B</guilabel> settings correspond to the left, right, top and
+bottom of the image respectively. The specified number of pixels will
+be trimmed from each edge, and your content image in the right of the
+window will be updated to show the cropping in action.
+</para>
+
+<para>
+The ‘filters’ settings allow you to apply various video
+filters to the image. These may be useful to try to improve
+poor-quality sources like DVDs. We will discuss filtering later in the manual.
+<!-- XXX: link -->
+</para>
+
+<para>
+The ‘scaler’ is the method that will be used to scale up
+your content to the required size for the DCP, if required. We will
+discuss the options in more detail later; Bicubic is a fine choice in
+most situations.
+<!-- XXX: link -->
+</para>
+
+<para>
+‘Audio Gain’ is used to alter the volume of the
+soundtrack. The specified gain (in dB) will be applied to each sound
+channel before it is written to the DCP.
+</para>
+
+<para>
+‘Audio Delay’ is used to adjust the synchronisation
+between audio and video. A positive delay will move the audio later
+with respect to the video, and a negative delay will move it earlier.
+</para>
+
+<!-- XXX: I don't think FPS should be editable -->
+
+<!-- XXX: Range -->
+
+</section>
+
+</chapter>
+
+</book>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!ENTITY scs ".png">
+<!ENTITY dia ".png">
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!ENTITY scs ".png">
+<!ENTITY dia ".pdf">
--- /dev/null
+#!/usr/bin/python
+
+# Farcical script to remove newlines after
+# \begin{sidebar} in dblatex' .tex output;
+#
+# farcical because I'm sure this can be done
+# in 1 line of sed, and also because I'm sure
+# the whole need for this script could be fixed
+# in the ardour.sty (but I don't know how).
+
+import sys
+import os
+import tempfile
+import shutil
+
+f = open(sys.argv[1])
+t = tempfile.NamedTemporaryFile(delete = False)
+remove_next = False
+while 1:
+ l = f.readline()
+ if l == '':
+ break
+
+ if not remove_next:
+ print>>t,l,
+
+ remove_next = False
+
+ if l.strip() == '\\begin{sidebar}':
+ remove_next = True
+
+f.close()
+t.close()
+shutil.move(t.name, sys.argv[1])
+
vector<DCPContentType const *> DCPContentType::_dcp_content_types;
-DCPContentType::DCPContentType (string p, libdcp::DCP::ContentType c)
+DCPContentType::DCPContentType (string p, libdcp::ContentKind k)
: _pretty_name (p)
- , _libdcp_type (c)
+ , _libdcp_kind (k)
{
}
void
DCPContentType::setup_dcp_content_types ()
{
- _dcp_content_types.push_back (new DCPContentType ("Feature", libdcp::DCP::FEATURE));
- _dcp_content_types.push_back (new DCPContentType ("Short", libdcp::DCP::SHORT));
- _dcp_content_types.push_back (new DCPContentType ("Trailer", libdcp::DCP::TRAILER));
- _dcp_content_types.push_back (new DCPContentType ("Test", libdcp::DCP::TEST));
- _dcp_content_types.push_back (new DCPContentType ("Transitional", libdcp::DCP::TRANSITIONAL));
- _dcp_content_types.push_back (new DCPContentType ("Rating", libdcp::DCP::RATING));
- _dcp_content_types.push_back (new DCPContentType ("Teaser", libdcp::DCP::TEASER));
- _dcp_content_types.push_back (new DCPContentType ("Policy", libdcp::DCP::POLICY));
- _dcp_content_types.push_back (new DCPContentType ("Public Service Announcement", libdcp::DCP::PUBLIC_SERVICE_ANNOUNCEMENT));
- _dcp_content_types.push_back (new DCPContentType ("Advertisement", libdcp::DCP::ADVERTISEMENT));
+ _dcp_content_types.push_back (new DCPContentType ("Feature", libdcp::FEATURE));
+ _dcp_content_types.push_back (new DCPContentType ("Short", libdcp::SHORT));
+ _dcp_content_types.push_back (new DCPContentType ("Trailer", libdcp::TRAILER));
+ _dcp_content_types.push_back (new DCPContentType ("Test", libdcp::TEST));
+ _dcp_content_types.push_back (new DCPContentType ("Transitional", libdcp::TRANSITIONAL));
+ _dcp_content_types.push_back (new DCPContentType ("Rating", libdcp::RATING));
+ _dcp_content_types.push_back (new DCPContentType ("Teaser", libdcp::TEASER));
+ _dcp_content_types.push_back (new DCPContentType ("Policy", libdcp::POLICY));
+ _dcp_content_types.push_back (new DCPContentType ("Public Service Announcement", libdcp::PUBLIC_SERVICE_ANNOUNCEMENT));
+ _dcp_content_types.push_back (new DCPContentType ("Advertisement", libdcp::ADVERTISEMENT));
}
DCPContentType const *
class DCPContentType
{
public:
- DCPContentType (std::string, libdcp::DCP::ContentType);
+ DCPContentType (std::string, libdcp::ContentKind);
/** @return user-visible `pretty' name */
std::string pretty_name () const {
return _pretty_name;
}
- libdcp::DCP::ContentType libdcp_type () const {
- return _libdcp_type;
+ libdcp::ContentKind libdcp_kind () const {
+ return _libdcp_kind;
}
static DCPContentType const * from_pretty_name (std::string);
private:
std::string _pretty_name;
- libdcp::DCP::ContentType _libdcp_type;
+ libdcp::ContentKind _libdcp_kind;
/** All available DCP content types */
static std::vector<DCPContentType const *> _dcp_content_types;
break;
}
- libdcp::DCP dcp (_fs->dir (_fs->name), _fs->name, _fs->dcp_content_type->libdcp_type (), rint (_fs->frames_per_second), frames);
+ libdcp::DCP dcp (_fs->dir (_fs->name), _fs->name, _fs->dcp_content_type->libdcp_kind (), rint (_fs->frames_per_second), frames);
dcp.Progress.connect (sigc::mem_fun (*this, &MakeDCPJob::dcp_progress));
descend (0.9);