Advertisement Advanced thin client solution for Linux, based on Open Source. Mix Windows and Linux applications on the same desktop. V
|
A dvdauthor input file
<dvdauthor dest="/music/tmp/dvdimage" >
<vmgm>
<menus>
<video format="ntsc" aspect="4:3" resolution="720x480" />
<pgc entry="title" >
<pre> { if ( g4 gt 0 ) button=g4;
if ( g2 gt 0 ) {
if ( g2 eq 1 ) jump titleset 1 menu entry root;
if ( g2 eq 2 ) jump titleset 2 menu entry root;
if ( g2 eq 3 ) jump titleset 3 menu entry root;
if ( g2 eq 4 ) jump titleset 4 menu entry root;
jump title 1; }
} </pre>
<vob file="/music/tmp/tape1/Main Menu VMGM_menu.mpg" pause="inf" />
<button name="01_Button_5" > { g4=1024; g3=1; jump titleset 1 menu entry root; } </button>
<button name="02_Button_6" > { g4=2048; g3=2; jump titleset 1 menu entry root; } </button>
<button name="03_Button_7" > { g4=3072; g3=3; jump titleset 1 menu entry root; } </button>
<button name="04_Button_1_kapok" > { g4=4096; g3=4; jump titleset 1 menu entry root; }
</button>
<button name="05_Button_2_more" > { g4=0; g2=4; g3=1; jump vmgm menu entry title; } </button>
<button name="06_Button_3_-_soccer" > { g4=6144; g3=5; jump titleset 1 menu entry root; }
</button>
<post> { g4=button; g2=0; jump vmgm menu 1; } </post>
</pgc>
</menus>
</vmgm>
<titleset>
<menus>
<pgc entry="root" >
<pre> { if ( g3 gt 0 ) {
if ( g3 eq 1 ) { g3=0; jump title 1 chapter 1; }
if ( g3 eq 2 ) { g3=0; jump title 2 chapter 1; }
if ( g3 eq 3 ) { g3=0; jump title 3 chapter 1; }
if ( g3 eq 4 ) { g3=0; jump title 4 chapter 1; }
if ( g3 eq 5 ) { g3=0; jump title 5 chapter 1; }
if ( g3 eq 6 ) { g3=0; jump title 6 chapter 1; }
if ( g3 eq 7 ) { g3=0; jump title 7 chapter 1; }
if ( g3 eq 8 ) { g3=0; jump title 8 chapter 1; }
if ( g3 eq 9 ) { g3=0; jump title 9 chapter 1; }
if ( g3 eq 10 ) { g3=0; jump title 10 chapter 1; }
if ( g3 eq 11 ) { g3=0; jump title 11 chapter 1; }
if ( g3 eq 12 ) { g3=0; jump title 12 chapter 1; }
if ( g3 eq 13 ) { g3=0; jump title 13 chapter 1; }
if ( g3 eq 14 ) { g3=0; jump title 14 chapter 1; }
if ( g3 eq 15 ) { g3=0; jump title 15 chapter 1; }
jump vmgm menu entry title;
}
} </pre>
<post> { g2 = 0; jump vmgm menu entry title; } </post>
</pgc>
</menus>
<titles>
<video format="ntsc" aspect="4:3" resolution="720x480" />
<audio lang="en" />
<pgc pause="0" >
<vob file="/music/video/raw/t1.01.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2 = 0; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.02.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2 = 0; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.03.dvd.1.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2 = 0; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.03.dvd.2.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2 = 0; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.04.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2 = 0; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.05.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=1; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.06.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=1; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.07.dvd.2.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=1; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.07.dvd.1.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=1; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.08.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=1; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.09.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=2; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.10.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=2; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.11.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=2; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.12.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=2; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.13.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=2; call vmgm menu entry title; } </post>
</pgc>
</titles>
</titleset>
<titleset>
<menus>
<pgc entry="root" >
<pre> { if ( g3 gt 0 ) {
if ( g3 eq 1 ) { g3=0; jump title 1 chapter 1; }
jump vmgm menu entry title;
}
} </pre>
<post> { g2 = 0; jump vmgm menu entry title; } </post>
</pgc>
</menus>
<titles>
<video format="ntsc" aspect="4:3" resolution="720x480" />
<audio lang="en" />
<pgc pause="0" >
<vob file="/music/video/raw/t1.14.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=2; call vmgm menu entry title; } </post>
</pgc>
</titles>
</titleset>
<titleset>
<menus>
<pgc entry="root" >
<pre> { if ( g3 gt 0 ) {
if ( g3 eq 1 ) { g3=0; jump title 1 chapter 1; }
if ( g3 eq 2 ) { g3=0; jump title 2 chapter 1; }
jump vmgm menu entry title;
}
} </pre>
<post> { g2 = 0; jump vmgm menu entry title; } </post>
</pgc>
</menus>
<titles>
<audio lang="en" />
<pgc pause="0" >
<vob file="/music/video/raw/t1.15.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=2; call vmgm menu entry title; } </post>
</pgc>
<pgc pause="0" >
<vob file="/music/video/raw/t1.16.dvd.mpeg" pause="0" chapters="00:00:00.000" />
<post> { g2=4; g3=2; call vmgm menu entry title; } </post>
</pgc>
</titles>
</titleset>
<titleset>
<menus>
<video format="ntsc" aspect="4:3" resolution="720x480" />
<pgc entry="root" >
<pre> { if ( g3 gt 0 ) {
if ( g3 eq 1 ) jump menu 2;
if ( g3 eq 2 ) jump menu 3;
jump vmgm menu entry title;
}
} </pre>
<post> { g2 = 0; jump vmgm menu entry title; } </post>
</pgc>
<pgc>
<vob file="/music/tmp/tape1/SubMenu 1_menu.mpg" pause="inf" />
<button name="01_Button_2" > { g4=1024; g2=1; g3=6; jump vmgm menu entry title; } </button>
<button name="02_Button_5" > { g4=2048; g2=1; g3=7; jump vmgm menu entry title; } </button>
<button name="03_Button_7" > { g4=0; jump menu 3; } </button>
<button name="04_Button_1" > { g4=0; g2=0; g3=1; jump vmgm menu entry title; } </button>
<button name="05_Button_6" > { g4=5120; g2=1; g3=8; jump vmgm menu entry title; } </button>
<button name="06_Button_3" > { g4=6144; g2=1; g3=9; jump vmgm menu entry title; } </button>
<button name="07_Button_4" > { g4=7168; g2=1; g3=10; jump vmgm menu entry title; } </button>
</pgc>
<pgc>
<vob file="/music/tmp/tape1/SubMenu 2_menu.mpg" pause="inf" />
<button name="01_Button_1_twinkles" > { g4=1024; g2=1; g3=11; jump vmgm menu entry title; }
</button>
<button name="02_Vandall" > { g4=2048; g2=1; g3=12; jump vmgm menu entry title; } </button>
<button name="03_3_dawson" > { g4=3072; g2=1; g3=13; jump vmgm menu entry title; } </button>
<button name="04_4_panther" > { g4=4096; g2=1; g3=14; jump vmgm menu entry title; } </button>
<button name="05_5_halloween" > { g4=5120; g2=1; g3=15; jump vmgm menu entry title; }
</button>
<button name="06_6_row" > { g4=6144; g2=2; g3=1; jump vmgm menu entry title; } </button>
<button name="07_7_diabelli" > { g4=7168; g2=3; g3=1; jump vmgm menu entry title; } </button>
<button name="08_8_pachelbel" > { g4=8192; g2=3; g3=2; jump vmgm menu entry title; }
</button>
<button name="09_back" > { g4=0; jump menu 2; } </button>
<button name="10_menu" > { g4=0; g2=0; g3=1; jump vmgm menu entry title; } </button>
</pgc>
</menus>
<titles>
<pgc/>
</titles>
</titleset>
</dvdauthor>
(Log in to post comments)
Commentary Posted Jan 4, 2008 8:14 UTC (Fri) by ldo (subscriber, #40946) [Link] From the user viewpoint, there are two menus: the initial one in the VMGM linking to 5 titles and a "more" button, and the one in titleset 4 that is linked from that "more" button, that in turn links to the rest of the titles. Note that the "menus" sections in titlesets 2 and 3 don't contain any "video" or "vob" tags--thus, they do not define any user-visible menus, they are just places to put code sequences to be executed on entry to those titlesets. The actual titles are spread across three titlesets (the first three)--I'm not sure why. Note all the setting of variables g2 and g3 in the jumping back and forth--titlesets cannot jump to each other, only to menus and titles within the same titleset, and to the VMGM. In particular, see how the menus in titleset 3 have to link to their titles indirectly, via the VMGM. The variable g4 is used to remember which button was last selected. Note the assignments between this and the variable "button", which is a synonym for the system parameter register that tells the DVD player which button is currently selected. Yes, its value has to be a multiple of 1024--that's what the DVD spec says.
Re: Commentary Posted Jan 4, 2008 23:02 UTC (Fri) by ldo (subscriber, #40946) [Link] Of course, where I said "menus in titleset 3", I really meant "menus in titleset 4". :)
More Commentary Posted Jan 4, 2008 23:00 UTC (Fri) by ldo (subscriber, #40946) [Link] Which makes one wonder: why not put both menus in the VMGM section, and all the titles in one titleset? As far as the user was concerned, the behaviour would be identical, but internally, things would be much simpler. This kind of roundabout structure is probably typical of automatically-generated authoring structures.
|
Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds
Powered by Rackspace Managed Hosting.