\section{Burning software compatibility}
\label{burning-compatibility}

dvdisaster must be used in conjunction with a CD/DVD/BD writing suite (``burning program'')
in order to generate ISO images and to write augmented ISO image files. Unfortunately,
not all burning programs provide the required features to work with dvdisaster.
Some burning programs may even produce media and/or ISO images which can not be
used with dvdisaster.

\smallskip

For your convenience, the dvdisaster project has tested some free burning programs
available for GNU/Linux. Please note that this list will always be incomplete and
only be a snapshot of a certain program version. It is likely to be outdated when
you are reading this page. It is therefore recommended that you test your specific
burning program version by following the \tlnk{howto-compat-overview}{instructions} given
in the howto section.

\paragraph{Recommended software}\quad

\medskip

The dvdisaster project recommends either using the command line tools
listed below or using the K3B burning application (which is actually
a graphical wrapper around the command line tools).

\paragraph{Burning program compatibility table}\quad

\medskip

\newcommand{\tgrey}[1]{\cellcolor{dkgrey}#1}
\newcommand{\tturquoise}[1]{\cellcolor{turquoise}#1}
\newcommand{\tpink}[1]{\cellcolor{pink}#1}
\newcommand{\tblue}[1]{\cellcolor{dkblue}#1}

\newcommand{\tred}[1]{&\begin{minipage}{10mm}{\cellcolor{ltred}#1}\end{minipage}}
\newcommand{\tyellow}[1]{&\begin{minipage}{10mm}\cellcolor{ltyellow}{#1}\end{minipage}}
\newcommand{\ok}{&\cellcolor{ltgreen}OK}
\newcommand{\na}{&\cellcolor{ltgrey}n.a.}
\newcommand{\nt}{&\begin{minipage}{10mm}{not tested}\end{minipage}}

\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|}
\hline
\tgrey{} & \tgrey{} & \tgrey{} & \tturquoise{Create} &
  \multicolumn{3}{c|}{\tpink{Burning images}} & \multicolumn{3}{c|}{\tblue{Burning images}} \\
  
  \tgrey{Program} & \tgrey{Version} & \tgrey{Testing} & \tturquoise{ISO/} &
  \multicolumn{3}{c|}{\tpink{for error}} &
  \multicolumn{3}{c|}{\tblue{with embedded}} \\

\tgrey{} & \tgrey{} & \tgrey{Date} & \tturquoise{UDF} & 
  \multicolumn{3}{c|}{\tpink{correction files}} &
  \multicolumn{3}{c|}{\tblue{error correction}} \\
  
  \cline{5-10}
\tgrey{} & \tgrey{} & \tgrey{} &\tturquoise{Image} &\tpink{CD} &\tpink{DVD} &\tpink{BD} &\tblue{CD} &\tblue{DVD} &\tblue{BD} \\

  \hline
  \multicolumn{10}{|c|}{\cellcolor{ltgrey}Command line tools} \\
  
  \hline
  genisoimage & 1.1.11 & Jul'14        \ok \na \na \na \na \na \na \\

  \hline
  wodim       & 1.1.11 & Jul'14        \na \ok \ok \na \ok \ok \na \\

  \hline
  growisofs   & 7.1    & Jul'14        \na \na \ok \ok \na \ok \ok \\

  \hline
  \multicolumn{10}{|c|}{\cellcolor{ltgrey}Tools with a graphical user interface} \\

  \hline
  brasero     & 3.4.1 & Jul'14         \tred{no UDF$^{1)}$} \tyellow{avoid$^{2)}$} \ok \na \tyellow{avoid$^{2)}$} \ok \na \\ 

  \hline
  K3B         & 2.0.2 & Jul'14         \ok \ok \ok \na \ok \ok \na \\

  \hline
  xfburn      & 0.4.3 & Jul'14         \ok \tyellow{re-read only$^{3)}$} \tyellow{re-read only$^{3)}$} \na \tred{do not use$^{3)}$} \tred{do not use$^{3)}$} \na \\
  \hline
\end{tabular}

\bigskip

\paragraph{Testing conditions and objectives}\quad
\medskip

Testing was done using Debian 7.5 (wheezy) on an amd64 machine.
Versions of the tested writing software are indicated in the table above.

\medskip

Evaluation of the burning software is done for the two major cases where
interoperability with dvdisaster is required: 

\bigskip

a) Creating error correction files

\medskip

The burning program is used to assemble an ISO image from a selected set of files,
and to write a CD, DVD or BD disc from it. An \tlnk{howto-eccfile}{error correction file} will
be created to protect this medium.

\smallskip

There are two ways of obtaining the ISO image for creating the error correction file:

\begin{enumerate}
\item The burning program is used to create an ISO image which is stored on hard disk.
  This image is used for burning the medium and for creating the error correction file.
  If the writing software creates a medium which does not exactly match the image,
  the resulting error correction file may be useless.
  A respective \tlnk{howto-compat-file}{testing method} is described
  in the ``Howtos'' section. An ``OK'' in the table above indicates that
  this test has been passed. But you are strongly advised to
  \tlnk{howto-compat-file}{do your own test} at least
  once to make sure that you are working on the same versions and premises.

  \smallskip
  
  If it is not possible to use a pre-made ISO image for both writing the medium
  and for creating the error correction file, the writing software is
  rated ``Re-read only'' in the table. In that case, use the alternative
  approach described below (topic 2).

\item The burning program is used to write a medium, either by using a
  pre-made ISO image or by creating the image on-the-fly while writing
  the medium. Afterwards, the pre-made ISO image is discarded. dvdisaster
  is used to read back a new ISO image from the newly written medium. From
  this newly created ISO image the error correction file is created. This
  process should always work; if not, the respective burning software is
  marked as being unusable in the table.
\end{enumerate}
  
\bigskip

b) Augmenting a medium with error correction data

\medskip

\tlnk{howto-augment-write-iso}{Creating a medium}
\tlnk{howto-augment}{with embedded error correction data} is comprised of
several sub tasks: First, the burning application converts a selection of files
into an ISO image stored on hard disk. dvdisaster augments the image residing
on the hard disk with error correction data. Then, the burning application
writes the augmented image to the CD, DVD or BD. The ISO image content or format
must not be altered during the writing process. Especially, the added error correction
sectors must not be removed and no padding sectors must be added to the image during
the writing process. The ``Howto'' section describes
\tlnk{howto-compat-augment}{a test for compatibility between
a writing software and dvdisaster}. An ``OK'' in the table above indicates that this
test has been passed; otherwise you can not use the respective software for writing
augmented images. You are strongly advised to \tlnk{howto-compat-augment}{do your own test} at
least once to make sure that you are working on the same versions
and premises even with software marked as compatible in the table above.

\bigskip

c) Creating ISO images

\medskip

In addition, the table indicates whether the burning application can convert
a selection of files into an ISO image and store that ISO image on hard disk
for further processing with dvdisaster. 

\paragraph{Notes (why a certain software failed a test)}\quad
\medskip

$^{1)}${\bf brasero} can only create ISO images, not ISO/UDF. This is not
recommended for DVD-Video authoring and has the disadvantage that files
with sizes greater than 2GiB can not be used in a portable way (the tested
version can not use files larger than 2GiB at all even if it says otherwise).

\bigskip

$^{2)}${\bf brasero} does not support the ``disc at once'' writing strategy. This
creates two spurious unreadable sectors at the end of CD media. dvdisaster
can handle such media, but will issue a warning and requires a preferences
setting each time such media is processed.

\bigskip

$^{3)}${\bf xfburn} can not be used to write RS02/RS03 augmented images due to a
wrong implementation of padding sector handling. In a correct implementation,
a burning program would add 150 zero padding sectors to an image it has created
itself. However padding sectors must never be added to an image which was created
or manipulated by a foreign application, such as an image being augmented by dvdisaster.
This results in the image being read back with wrong checksums, and dvdisaster will
rightfully complain that the ``Image file is 150 sectors longer than expected.''.
Error correction files can - for the same reason - not be used when created from
the original image, but it is possible to re-read the image from the written
medium and create error correction files from that image. 
