Provided by: dvdauthor_0.7.2-1build1_amd64 bug

NAME

       dvdauthor - assembles multiple mpeg program streams into a suitable DVD filesystem

SYNOPSIS

       dvdauthor [ -o output-dir ] -x xml-control-file

       dvdauthor [ -o output-dir ] [ -j | --jumppad | -g | --allgprm ] [ -T | --toc ] [ menu or title options ]

DVD BACKGROUND

       At  a high level, a DVD is a collection of menus and titles.  Conceptually, a menu contains buttons which
       can be assigned actions and provides a list of choices to the end user, while a title contains  the  main
       content  of  the  DVD.   However,  in reality many of the features available in menus (including buttons,
       pausing, and looping) are also available in titles.

       The menus and titles are divided into titlesets and the VMGM menu set.  A titleset can contain  a  number
       of  menus  and  titles  which  are  meant  to act together.  The "menu", "audio", "subtitle", and "angle"
       buttons on the DVD player's remote control will all access menus in the same titleset as the title  which
       is  being  played.  All the titles and menus of a given titleset have the same video, audio, and subtitle
       settings (the definitions for the menus are independent from the definitions for the titles), so  if  you
       want  to  have  different  settings  (for  example  widescreen  vs standard aspect ratios), then you need
       separate titlesets.  Titlesets are not meant to jump to one another, so the VMGM menu domain is used.  It
       is a collection of menus (no titles) that can access the menus and titles of all the titlesets.

       One of the most frustrating things when deciding how to author a DVD is that there are often many ways to
       accomplish the same task.  For example, you must decide whether to locate menus at the VMGM level or  the
       titleset  level.   A typical setup is to locate the high level menus at the VMGM level, and the low level
       configuration menus (scene / audio / subtitle selection) at the  titleset.   If  there  are  DVD  extras,
       perhaps  with  a  lower  quality  audio  track  and  a 4:3 aspect ratio, then they would be in a separate
       titleset with a menu to select among the extras located at the titleset level.

DVDAUTHOR DESCRIPTION

       dvdauthor works in discrete operations.  It authors each titleset one at a time, and then finally authors
       the  VMGM  to  complete  the  disc.   At that point the contents can be written out to a DVD.  If you are
       controlling dvdauthor with command line arguments, then each step will occur  independently;  however  if
       you are using the XML control file, then you have the option of combining some or all the steps into one.

       The  VOBs  passed  to dvdauthor must have DVD NAV (VOBU) packets multiplexed in at the correct locations.
       Many tools can do this, including mplex from mjpegtools 1.6.0 or later.  dvdauthor will then  fill  these
       packets  in  with  the  correct data.  Special care has been taken to ensure dvdauthor is fifo compliant;
       that is every source VOB can be the output of another program (such as mplex).  This can  make  execution
       faster on many systems by avoiding extra filesystem accesses.

COMMAND LINE DESCRIPTION

       -o output-dir

       -O output-dir
              The  destination directory to store the DVD-Video file structure in.  If -O is specified, then any
              existing directory is (safely) deleted (only items that look like part of  a  DVD-Video  structure
              are removed).

       -x xml-control-file
              Specifies the control file describing the output structure to create.

       Note that the remaining command-line options are deprecated. Use the XML control file instead.

       -j

       --jumppad
              Enables  the  creation  of  jumppads,  which  allow  greater  flexibility  in  choosing  jump/call
              destinations.

       -g

       --allgprm
              Enable the use of all 16 general purpose registers.  Prohibits the use of jumppad and some complex
              expressions that require temporary registers.

       -T     Creates  the  table  of  contents file instead of a titleset. If this option is used, it should be
              listed first, and you may not specify any titles.

       -m     Creates a menu.

       -t     Creates a title.

       -v video-opts

       --video=video-opts
              A plus (+) separated list of video options.  Dvdauthor will try to infer any unspecified  options.
              pal,  ntsc,  4:3, 16:9, 720xfull, 720x576, 720x480, 704xfull, 704x576, 704x480, 352xfull, 352x576,
              352x480, 352xhalf, 352x288, 352x240, nopanscan, noletterbox, crop.  Default is 4:3, 720xfull

       -a audio-opts

       --audio=audio-opts
              A plus (+) separated list of options for an audio track, with each track separated by a comma (,).
              For  example -a ac3+en,mp2+de specifies two audio tracks: the first is an English track encoded in
              AC3, the second is a German track encoded using MPEG-1 layer 2 compression.  ac3, mp2,  pcm,  dts,
              16bps,  20bps,  24bps,  drc, surround, nolang, 1ch, 2ch, 3ch, 4ch, 5ch, 6ch, 7ch, 8ch, and any two
              letter ISO 639 language abbreviation.  Default is 1 track, mp2, 20bps, nolang, 2ch.  'ac3' implies
              drc, 6ch.

       -s subpicture-opts

       --subpictures=subpicture-opts
              A  plus (+) separated list of options for a subpicture track, with each track separated by a comma
              (,). nolang and any two letter language abbreviation (see -a) Default is no subpicture tracks.

       -e entry(s)

       --entry=entry(s)
              Makes the current menu the default for certain circumstances. It is a comma separated list of  any
              of:

              for TOC menus: title

              for VTS menus: root, ptt, audio, subtitle, angle

       -p palette-file

       --palette=palette-file
              Specifies  where  to  get the subpicture palette. Settable per title and per menu. If the filename
              ends in .rgb (case insensitive) then it is assumed to be RGB, otherwise it is YUV. Entries  should
              be 6 hexadecimal digits. FILE defaults to xste-palette.dat

       -c chapterpts

       --chapters=chapterpts
              Specifies   a  comma  (,)  separated  list  of  chapter  markers.  Each  marker  is  of  the  form
              [[h:]mm:]ss[.frac] and is relative to the  SCR  of  the  next  file  listed  (independent  of  any
              timestamp  transposing  that  occurs within dvdauthor). The chapter markers ONLY apply to the next
              file listed. Defaults to 0.

       -f mpeg-file

       --file=mpeg-file

       mpeg-file
              Specifies either a file, a pipe, or a shell command ending in | which supplies  an  MPEG-2  system
              stream with VOB sectors inserted in the appropriate places (using mplex -f 8 to generate)

       -b buttondef

       --button=X1xY1-X2xY2,commandlist
              creates a button of the specified size. See LANGUAGE DESCRIPTION for a description of commandlist.

       -i [pre|post]=commandlist

       --instructions=[pre|post]=commandlist
              Executes the commandlist instructions either before or at the end of the menu/title.  See LANGUAGE
              DESCRIPTION for the format of commandlist.

XML DESCRIPTION

       Here is the basic structure of the control file:

       <dvdauthor [dest="output-dir"] [jumppad="1|on|yes" | allgprm="1|on|yes"] [format="ntsc|pal"] [provider="provider"]>
          <vmgm>
             [<fpc>commands;</fpc>]
             <menus [lang="language-code"]>
                <video [format="ntsc|pal"] [aspect="4:3|16:9"]
                       [resolution="XxY"] [caption="field1|field2"]
                       [widescreen="nopanscan|noletterbox|crop"] />
                <audio [format="mp2|ac3|dts|pcm"] [channels="numchannels"]
                       [quant="16bps|20bps|24bps|drc"] [dolby="surround"]
                       [samplerate="48khz|96khz"] [lang="language"]
                       [content="normal|impaired|comments1|comments2"] />
                [<audio ... />]
                <subpicture [lang="language-code"]>
                   <stream mode="normal|widescreen|letterbox|panscan"
                       [content="normal|large|children|normal_cc|large_cc|children_cc|forced|director|large_director|children_director"]
                       id="streamid" />
                   [<stream ... />]
                </subpicture>
                [<subpicture ... />]
                <pgc [entry="title"] [palette="yuvfile|rgbfile"]
                     [pause="seconds|inf"]>
                   <subpicture>
                      [<stream ... />]
                   </subpicture>
                   <pre> commands; </pre>
                   <vob file="file.mpg" [chapters="chapter-list"]
                        [pause="seconds|inf"]>
                        <cell [start="timestamp"] [end="timestamp"]
                           [chapter="1|on|yes" | program="1|on|yes"] [pause="seconds|inf"]>
                           commands;
                        </cell>
                   </vob>
                   [<vob ... />]
                   <button [name="buttonname"]> commands; </button>
                   [<button ... />]
                   <post> commands; </post>
                </pgc>
                [<pgc ... />]
             </menus>
             [<menus ... />]
          </vmgm>
          <titleset>
             <menus [lang="language-code"]>
                [<video ... />]
                [<audio ... />]
                <pgc [entry="entries"]
                     [palette="yuvfile|rgbfile"] [pause="seconds|inf"]>
                   [...]
                </pgc>
                [<pgc ... />]
             </menus>
             [<menus ... />]
             <titles>
                [<video ... />]
                [<audio ... />]
                <pgc [entry="notitle"] [palette="yuvfile|rgbfile"] [pause="seconds|inf"]>
                   [...]
                </pgc>
                [<pgc ... />]
             </titles>
          </titleset>
          [<titleset ... />]
       </dvdauthor>

       A breakdown of the control file:

       <dvdauthor   [dest="output-dir"]   [jumppad="1|on|yes"    |    allgprm="1|on|yes"]    [format="ntsc|pal"]
       [provider="provider"]>
              Initiates  dvdauthor.   dest  denotes  the directory where dvdauthor will write the files. This is
              overridden by the -o option. Contains up to one <vmgm> tag and any number of <titleset>'s.

       <vmgm>

       <titleset>
              Constructs of a VMGM level menu set or a title set.  Contains zero or more <menus> tags and  if  a
              titleset, up to one <titles> tag.

       <menus [lang="language-code"]>
              Marks  a  list  of  menus  with  a  common  language for this VMGM menu set or titleset, called in
              dvdauthor terminology a "pgcgroup."  Contains up to one <video> tag, up to one <audio> tag, up  to
              one <subpicture> tag, and any number of <pgc> tags.

       <titles>
              Marks  the  list  of  titles  for  this   titleset,  called in dvdauthor terminology a "pgcgroup."
              Contains up to one <video> tag, up to eight <audio> tags, up to  32  <subpicture>  tags,  and  any
              number of <pgc> tags.

       <video     [format="ntsc|pal"]     [aspect="4:3|16:9"]    [resolution="XxY"]    [caption="field1|field2"]
       [widescreen="nopanscan|noletterbox|crop"] />
              Manually configures the video parameters for this pgcgroup.  If any of these  are  not  set,  then
              they will be inferred from the source stream.  Note that the DVD format only specifically supports
              720x480, 704x480, 352x480, and 352x240 resolutions for NTSC, and 720x576,  704x576,  352x576,  and
              352x288  resolutions  for  PAL, but DVD author will accept a wider range of inputs and round up to
              the nearest size.

       <audio          [format="mp2|ac3|dts|pcm"]          [channels="numchannels"]           [dolby="surround"]
       [quant="16bps|20bps|24bps|drc"]                [samplerate="48khz|96khz"]               [lang="language"]
       [content="normal|impaired|comments1|comments2"] />
              Manually configures an audio  stream  for  this  pgcgroup.   List  once  for  each  stream.   Most
              parameters  are  inferred  automatically from the source VOBs except for PCM parameters.  However,
              language and content must be manually specified.  Note that  it  is  possible  to  just  list  the
              language and content attributes and let dvdauthor fill in the rest.

       <subpicture                                                                             [lang="language"]
       [content="normal|large|children|normal_cc|large_cc|children_cc|forced|director|large_director|children_director"]
       />
              Manually  configures  a subpicture/subtitle for this pgcgroup or PGC.  At the pgcgroup level, list
              once for each language. Occurrences at the PGC level don't have lang or content  attributes;  they
              inherit those from the corresponding <subpicture> tag at the pgcgroup level.

       <stream mode="normal|widescreen|letterbox|panscan" id="streamid" />
              Specifies the ID of a stream that is the representation of this subpicture in a particular display
              mode. This can be specified per-PGC, or pgcgroup-wide.

       <pgc [entry="entries"] [palette="yuvfile|rgbfile"] [pause="seconds|inf"]>
              A PGC is just a fancy term for either a menu or a title.  It has a special meaning in the DVD spec
              so  I  have  retained  its  use here.  PGC's can have commands that get executed before they start
              playing or after they finish; see <pre> and <post> tags below.

              If the PGC is a menu, you can specify one or more entries for it.  This means that  if  you  press
              the corresponding button on your DVD remote, then it will go to this menu.  For a VMGM level menu,
              the only choice is title, which on my remote corresponds to the top menu button.  For  a  titleset
              level  menu,  you  can  use  root,  subtitle,  audio,  angle, and ptt.  If you want more than one,
              separate them by a space or a comma.  Note that root entry is meant for commands that jump from  a
              VMGM level menu to a titleset menu.

              If the PGC is in a titleset, then it is assumed to be a title unless entry="notitle" is specified.

              All button and menu masks and all subtitles within a PGC must share the same 16 color palette.  If
              you use spumux to generate the subtitle/subpicture packets, then the  color  information  will  be
              automatically  passed  to  dvdauthor;  however,  if you use another subtitler or want to have more
              control over the palette, you can manually specify it with the palette attribute.   The  first  16
              entries  of the file should be the 16 colors of the palette, listed as 6 digit hexadecimal numbers
              representing either the RGB breakdown (if the filename ends in .rgb or the YUV breakdown  (if  the
              filename does not end in .rgb.  After that, the button group information can be listed as pairs of
              8 digit hexadecimal numbers; up to three button groups may be specified.

              If you have a short video sequence or just want the video to pause at the end,  you  can  use  the
              pause attribute to set the number of seconds (as an integer) from 1 to 254.  If you want the video
              to pause indefinitely, use inf.

       <pre> commands; </pre>

       <post> commands; </post>
              Sets the commands to execute before or after a PGC plays.  It can be  used  to  loop  the  current
              video (by having a <post> jump ... </post> sequence), or to conditionally skip certain chapters if
              a flag has been set.

       <fpc> commands; </fpc>
              Sets the commands to execute when the disk is first put in the player (FPC = First Program Chain).
              It can be used to jump to a particular menu or initialize registers on startup.  If not specified,
              an implicit one will be created that jumps to the first menu found, or if there is no menu it will
              jump to the first title..

       <vob file="file.mpg" [chapters="chapter-list"] [pause="seconds|inf"] />
              Specifies  an  input video file for a menu or title, with optional chapter points and pause at the
              end.

       <cell     [start="timestamp"]     [end="timestamp"]     [chapter="1|on|yes"     |     program="1|on|yes"]
       [pause="seconds|inf"]> commands; </cell>
              A  more detailed way of specifying marker points in a title. If present, then the containing <vob>
              must not have a chapters attribute.  A cell can have a VM command attached to it, to  be  executed
              when  it  plays. If the program attribute is set, then this cell will be a point that the user can
              skip to using the prev/next buttons on their DVD player remote. If the chapter  attribute  is  set
              (implies program is set as well), then this cell is also a chapter point.

       <button [name="buttonname"]> commands; </button>
              Specifies  the  commands  to be executed when the user selects the button with the specified name.
              You define button names and placements with spumux.

LANGUAGE DESCRIPTION

       The language is quite simple and roughly looks like C.

       • Statements are terminated with a semicolon.

       • Statements can span multiple lines.

       • Multiple statements can appear on one line.

       • Whitespace (space, tab, newlines) are not important, except to separate keywords and identifiers.

       • C-style /* ... */ comments are allowed. Or you can use XML comments <!-- like this -->

   VARIABLES
       The DVD virtual machine processes 16 bit values.  It supports up to 16 general purpose registers; however
       dvdauthor  reserves  3 for internal use.  Thus register 0-12 are available for use and are referred to as
       g0 through g12.

       There are also 24 system registers, which can be referred to as s0 through s23.  Not all of these can  be
       set.  Many of these have mnemonic synonyms.

       audio (s1, rw)
              Denotes the audio stream, ranging from 0-7.

       subtitle (s2, rw)
              The  subtitle track, ranging from 0-31.  If you want the subtitle to always be displayed, then you
              should add 64 (i.e. choose 64-95).  Simply selecting the track (0-31) means that only  the  forced
              subtitles  will be displayed, whereas enabling the track (64-95) means that all the subtitles will
              be displayed.  This allows you to have forced subtitles only for the parts of the movie where  the
              actors  are  speaking  a foreign (to the viewer) language, but still have normal subtitles for the
              hearing impaired.  The hearing impaired viewers would enable the track  (64-95)  while  the  other
              viewers would just select the track (0-31) they would be able to share the track.

       angle (s3, rw)
              Selects the angle (currently untested).

       button (s8, rw)
              Denotes the currently highlighted button.  Note that the value is multiplied by 1024, so the first
              button is 1024, the second is 2048, etc.

   EXPRESSIONS
       Expressions follow typical C syntax except that booleans are not convertible to integers and vice  versa.
       Operators and comparisons are:

       ==, !=, >=, >, <=, <, &&, ||, !, eq, ne, ge, gt, le, lt, and, or, xor, not, +, -, *, /, %, &, |, ^

       Since the code is encapsulated in XML, the parser will catch any unescaped < characters (i.e. not written
       as "&lt;"), thus alphabetic mnemonics have been provided for all comparison operators for consistency. Or
       you can put the code in a <![CDATA[ ... ]]> section.

       There is also a numerical function:

       random(EXPRESSION)
              Computes a pseudo-random number, between 1 and the supplied number, inclusively.

   BLOCKS
       Blocks  are  either  a  single statement (terminated by a semicolon), or a group of statements wrapped in
       curly braces.  For example:

       •
         g3 = s7;

       •
         {
           audio = 1;
           subtitle = 65;
           jump vmgm menu 3;
         }

   STATEMENTS
       The statements supported are fairly simple at the moment.

       VARIABLE = EXPRESSION;
              Sets a variable equal to the result of an equation.

       if (EXPRESSION) BLOCK;

       if (EXPRESSION) BLOCK; else BLOCK;
              Calculates the expression; if true, then it executes the block of code.

       jump TARGET;

       call TARGET [resume CELL];

       resume;
              Jumps to a particular title or menu, or calls a particular menu, or returns to the calling  title.
              You  can  only execute a call from a title to a menu; all other forms are illegal.  The purpose of
              using call instead of jump (besides the fact that  they  support  a  mutually  exclusive  list  of
              targets)  is to allow the menu to return to the point in the title where the call originated using
              resume.  You can manually specify the return cell by using the resume keyword, however if  you  do
              not specify one and you use the command in a post instruction block, then it will presume cell 1.

   TARGETS
       The following are possible targets (note that menus do not have chapters):

       [vmgm | titleset X] menu

       [vmgm | titleset X] menu Y

       [vmgm | titleset X] menu entry Z
              Targets  either  the  default  menu, a menu number Y, or the menu denoted as the entry for Z.  The
              menu is in either the VMGM or titleset domain.  If you wish to target a menu in the current domain
              then you can omit the domain moniker.

       [titleset X] title Y [chapter Z]
              Targets  a  title, or a chapter in a title.  Numbering starts at 1.  All of the titles on the disc
              are accessible in the VMGM domain, or you can access them by titleset instead.

       pgc Z  Targets a PGC in the current VMGM or titleset.

       chapter Z
              Targets a chapter in the current title.

       program Z

       cell Z Targets a program or cell in the current PGC.  You can use this to create looping menus: jump cell
              1;

       cell top

       next cell

       prev cell

       program top

       next program

       prev program

       pgc top

       next pgc

       prev pgc

       up pgc

       pgc tail
              (Jump   only)   performs   relative   transfers   of   control   within  the  current  menu/title.
              "cell/program/pgc top" goes  back  to  the  start  of  the  current  cell/program/PGC;  "next/prev
              cell/program/pgc"  goes  to  the  next or previous cell/program/PGC; "up pgc" goes to the "up" PGC
              (not currently settable in dvdauthor); and "pgc tail" goes to the <post> sequence in  the  current
              PGC.

       Chapters  are  numbered  from  1 in each title, while programs are numbered from 1 in each PGC. Thus, the
       latter can reset independently of the former when there is more than one PGC in a title.

LIMITATIONS

       The following limits are imposed by the DVD-Video spec.

       There can be no more than 99 titlesets, no more than 99 menus in the VMG or a titleset, and no more  than
       99 titles in a titleset.

       Each  title  may be made up of up to 999 PGCs. Each PGC may consist of up to 255 programs.  The <pre> and
       <post> sections of a PGC put together can contain no more than 128 VM instructions.

       Since there is only one VOB file (VIDEO_TS.VOB) in the VMG, the total amount of video in  the  VMG  menus
       must  fit  into 1073709056 bytes (524272 sectors of 2kiB each). In each titleset, all the menu video must
       fit in the first  VOB  (VTS_nn_0.VOB),  so  is  limited  to  the  same  amount.   <marc.leeman@gmail.com>
       MarcLeeman2003Marc Leeman

                                                28 November 2019                                    DVDAUTHOR(1)