a question about programming in DVD lab Pro's LABtalk...

DVD-lab, DVD-lab Studio and DLP2

a question about programming in DVD lab Pro's LABtalk...

Postby rlowe » Mon Nov 05, 2012 6:06 pm

I have a question about DVD lab Pro's LABtalk.

I'm a somewhat newbie to authoring. I've used Encore before but never a program as rich as DVD lab Pro.

I'm using the 30 day trial because I need to do some custom scripting. Now in looking through the "Help guide" I saw that the it can use a variance of the BASIC language through the LABtalk feature. I'd like to know several things:

1- Is it stable?
2- How complex can my programming be?
3- Will programs written with LABtalk work on a set top DVD player?
4- If Yes to 1 & 3, are there any in depth step-by-step tutorials to work with?

Let me give you an idea of what I'm trying to do.

Imagine you work for a grocery chain and they give you a DVD with training videos.
You pop in the dvd and are presented with a the following menu which allows you to
create a playlist of only the videos that you want to see:

1- Meats
_ Beef _Pork _Chicken _None

2- Fruits
_Apples _Oranges _Pears _None

3- Vegetables
_ Tomatoes _Lettuce _ Onions _ None

-- Generate & Play videos --

In each of the section you select one subject or none
and they at the end of your selection the system will
generate a playlist that will play only the subjects you

1- Meats
X Beef _Pork _Chicken _None

2- Fruits
_Apples _Oranges _Pears

3- Vegetables
_ Tomatoes
XLettuce _ Onions _ None

-- Generate & Play videos --

Playlist = {Beef movie + Lettuce movie}


Can something like this function in a regular DVD player?

If so, can someone help me out with the programming or at least point me in the right direction?
Posts: 27
Joined: Mon Nov 05, 2012 5:58 pm

Re: a question about programming in DVD lab Pro's LABtalk...

Postby Vapymid » Tue Nov 06, 2012 8:28 am

Firstly, this is possible on DVD, but only for a limited number of categories and elements.

Secondly, the Basic-like language you mention is actually an internal script language DVDLab uses to automate some authoring functions (such as when you need to create many menues at once). It controls only the DVDLab's own functions and can not be executed run-time by DVD players (although it can be used to populate various objects with DVD-playable code during authoring).

The code which can be run by DVD players is a low level language, known as "VM commands", and you will need to use that in order to build your project.

To understand the kind of limitations DVD structure will impose on your projects you need to take into consideration the following:

All graphics on DVD menues are pre-rendered at compile time and cannot be changed dynamically during playback.

Only 4-bit graphic overlay (called subpicture) can be controlled during playback by highlighting parts of it (that is how DVD buttons work). Even there your programmatic control of it is limited to highlighting 1 button at a time each time you enter a menu or a menu cell.

These 2 limitations mean that if you want to show the user the final playlist he created for your 3 categories you will need 27 menues if you don't show "None" as separate selections or 64 menues if you do + many more if you want to show any interim selection progress...

The next issue to bear in mind is that at run time you only have access to 32 bytes of writable memory, split into 16 16-bit general purpose registers (GPRM0 - 15) and of those, GPRM11 - 15 are reserved for use by DVDLab's auto-generated abstraction layer and so should not normally be interfered with. That leaves you with 11 GPRMs where to store your user selections, track progress and do all relevant calculations.

Structurally (and very simplistically), DVD consist of 3 domains - VMG, VTS Menues and VTS Titles (the latter 2 are separate for each VTS). Inside each domain there may be several "objects" known as PGCs. Each menu or command object in VMG or VTS Menu domains will be inside a PGC and each title in VTS Title domain will also be inside one PGC (except where the title is multi-PGC one and it will consist of several PGCs). All VMG PGCs + the root PGC of each VTS Menu domain are combined into "System Space".

Using VM commands you can jump(call) from any object in any other domain to VMG. You can jump from VMG to any title in any VTS or to a VTS menu in System Space (i.e. to the Root), you can call from a VTS title to a System Space VTS menu in the same VTS, you can jump from a VTS Menu to any title in the same VTS, you can also link from one PGC to another within the same domain. You CANNOT jump directly between 2 different VTSs (menues or titles) or from VMG or VTS Title to any non-System Space VTS Menu.

VM commands are placed in each PGC as either PRE, POST and/or CELL commands. In total, a PGC can contain up to 128 VM commands. A PGC can contain AV content or be empty or "dummy" PGC with VM commands only. PRE commands are executed when you enter the PGC and before displaying any audio-video content it has, if any. POST commands are executed on exit (either when a button is pressed or the playback is finished or timed out) and CELL commands run at the end of each cell.

In addition, each button has 1 VM command (it is not counted towards the PGC 128-command limit).

There can be up to 36 (for 4:3) or 18 (for 16:9) buttons per cell (menu or BOV).

For any Jump, Call or Link VM command the target location must be hard-coded during authoring. It cannot be changed dynamically.

Please RTFM section called "VM Commands" - it explains the operators, list of VM commands available and how DVDLab's command editor works.

COMING back to your project - for your 3 categories with 3 items each and the fixed playlist of 3 elements the project would actually be quite simple.

For example, you can use GPRM1, 2 and 3 to store selection number for each respective category (0 = none).

Add 3 VTS menues:

Meats menu
Pre-command: GPRM1 = 0
Buttons use "Set GPRM1 = x, Link to Fruits menu" commands and set GPRM1 to 1, 2 or 3

Fruits menu
Pre-command: GPRM2 = 0
Buttons use "Set GPRM2 = x, Link to Vegetables menu" commands and set GPRM2 to 1, 2 or 3

Vegetables menu
Pre-command: GPRM3 = 0
Buttons use "Set GPRM3 = x, Link to Case list Meats" commands and set GPRM3 to 1, 2 or 3

Then add 3 Case lists in Connections window:

Case list Meats
When GPRM1 = 1 link to movie_Beef
When GPRM1 = 2 link to movie_Pork
When GPRM1 = 3 link to movie_Chicken
End-link - connect it to Case list Fruits

Repeat in the same way for the 2 remaining Case lists. End-link "Case list Vegetables" back to the main menu.

End-link all "meats" movies to "Case list Fruits" and all "fruits" movies to "Case list Vegetables"

Finally, put Pre-commands
GPRM1 = 0
GPRM2 = 0
GPRM3 = 0
in your main menu so that the selection is reset automatically at the end of each play or wherever the user returns to main menu.


P.S. On the old forums I had a post with attached example of a 10-item arbitrary selection, arbitrary length playlist but the old forums are gone :-( I'll see if I can find it somewhere...
Posts: 342
Joined: Wed Oct 27, 2010 4:38 am
Location: London, UK

Re: a question about programming in DVD lab Pro's LABtalk...

Postby rlowe » Tue Nov 06, 2012 3:22 pm


Thank you for the reply. It was very informative and it answered some burning questions.

Thank you.

If you can find that old post then that would be very helpful.

I foresee myself picking your brain. :D
Posts: 27
Joined: Mon Nov 05, 2012 5:58 pm

Re: a question about programming in DVD lab Pro's LABtalk...

Postby Rocio Aranda » Wed Feb 27, 2013 6:57 am

Hello there,

I have seen this topic and I have a similar problem.

I have never worked with Encore DVD before and I am learning the DVDLabPro software on my own. At this time, I need to make an advance navigation and I feel lost.

Let me explain how my project is:

My project in DVDLab Pro is a Mega-Project with 11 movies about 20min running time.
2 VTS Menues:

VTS Tittle 1 with 5 movies (20min each) and 5 keypads (each keypad has 11 VTS menues)
VTS Title 2 with 6 movies (20min each) and 6 Keypads

(*)I need to lock each movie by a different keypad per each movie and then make the end movie link back to the menu to avoid by pressing the forward button in your remote control, this movie jumps to the next movie without enter the password between.

To solve that (*) I used the PgcEdit/Editor DVD to set a previous and post command. My problem now is the PgcEdit doesn't work anymore and I don't know why? So I think that I need to make Pre and Post Commands by DVDLabPro but I have no idea.

I am reading a lots information but I can't understand the structure and how to make the commands. Maybe I need to re-structure the navigation.


Thank you in advance!!!

Rocio Aranda
Posts: 15
Joined: Mon Sep 03, 2012 11:39 am

Re: a question about programming in DVD lab Pro's LABtalk...

Postby Vapymid » Fri Mar 01, 2013 12:21 pm

That PGCEdit stopped to work suggests to me that you have some kind of system problem on your computer. I think you need to sort it out as you really need to have a tool like that properly working.

Also, if I understand your situation correctly, you *need* PGCEdit for solving your problem.

Alternative will be to use PUOPs to disable Next/Prev selection completely in your movies but it may affect other things (e.g. if your movies have chapters) and PUOPs normally infuriate users (but in your case you already are doing it by using all these keypads, so maybe it's OK then ;-) ).

Posts: 342
Joined: Wed Oct 27, 2010 4:38 am
Location: London, UK

Return to DVD-lab Authoring

Who is online

Users browsing this forum: No registered users and 1 guest