Log in

View Full Version : How to freeze a motion menu?


Dimmer
25th March 2004, 07:47
On many DVDs, there are motion menus that keep looping infinitely. I'm wondering how to freeze such a menu at the last frame after it played once, so it would become a still menu. It would've been easy for a regular video clip where you can put 255 as a cell still time, but a menu becomes inactive in this case.

I found out that NAV packs within VTS_xx_0.VOB files contain button highlight information that can be viewed in VobEdit. There are two parameters that control when button becomes unavailable. Highlight end time indicates when to turn off subpicture colors as if no button is selected, but you still can press them. Button selection end time contains the time after which you can't press the buttons anymore. For the looping menus, these two values usually set to the length of the menu. I created a motion menu without looping in Scenarist and noticed that these two parameters are set to -1 (infinite?). However, when I went through all the NAV packs of a VOB containing single cell with a looping menu and changed all those values to -1 and then set 255 as the cell still time, buttons became selectable after menu ended, but highlights have disappeared.

Since changing every NAV pack isn't a practical solution anyway, I'm wondering if there is a way or some software that could achieve this effect. Maybe it's possible do this by changing only the last NAV pack or playing with Highlight status parameter. Any advice is appreciated.

violao
25th March 2004, 10:54
dimmer, on commercial DVDs I saw this is being done using 2 cells, 1st is an animation, 2nd is still made from the last frame of the 1st cell. Perhaps there is a reason why they do it that way.

Dimmer
25th March 2004, 12:47
Originally posted by violao
dimmer, on commercial DVDs I saw this is being done using 2 cells, 1st is an animation, 2nd is still made from the last frame of the 1st cell. Perhaps there is a reason why they do it that way.Thanks, I noticed that, too. However, they don't always do that, so I thought in this case maybe there is a way to do freeze the motion menu without adding a new cell. I'm sure it's possible since I've done it in Scenarist when authoring from scratch.

violao
25th March 2004, 14:08
It appears that button color scheme isn't as simple as we believed. According to http://dvd.sourceforge.net/nav_notes there are 4 different color choices per each of 3 color schemes, located under 0xa3 offset of NAV pack and that these choices are used at different times of VOBU presentation:

SL_COLI table:
bit31 bit0
0xc1 c2 c3 c4 b1 b2 b3 b4
| | | |__|__|__|__|__ when high. is disabled
| | |_____|__|__|_____ between high. start and sel. end
| |________|__|________ between sel. end and high. end
|___________|___________ after high. end time

So it seems your timers were correct, but colors were wrong. If the documentation is right then you need to set c1=c2=c3 and b1=b2=b3.

EDIT: Before you go too deep into this I need to say that I just tried your original procedure with one of my own discs, that is remove loop command from post section of motion menu PGC and set last cell stil to 255 and it works. Button highlights are there. I can see that both button highlights and selection end times in last NAV pack are set to -1. I still cannot find the colors that NAV pack document mentiones.

EDIT #2: The owner of dvd.sourceforge.net explained to me that nav_notes info was mirrored from an old site and probably incorrect. Therefore it seems that Vobedit interpretation of NAV pack color table is the correct one:

0xc1 - spu selection color 3 (emphasis 2) index
0xc2 - spu selection color 2 (emphasis 1) index
0xc3 - spu selection color 1 (pattern) index
0xc4 - spu selection color 0 (background) index
0xb1 - spu selection contrast of color 3 (emphasis 2)
0xb2 - spu selection contrast of color 2 (emphasis 1)
0xb3 - spu selection contrast of color 1 (pattern)
0xb4 - spu selection contrast of color 0 (background)

Sorry if I misguided you.

Dimmer
26th March 2004, 14:59
Thanks for your help violao. That subtitle color mapping scheme didn't seem right to me too, since it allows only for one subpicture color instead of four. However, other information on the same site led me to finding a solution. Here's what I found in case someone else wants to freeze a motion menu at the last frame or learn about animating a subpicture.

Cell still time of course has to be set to 255 in IfoEdit. If the motion menu becomes disabled after playing, this can be fixed in VobEdit.

1. Find the last NAV pack of the cell and check Highlight end time. Here's what its value means:
- start time of the Display Control Sequence table (DCSQ) within the current Subpicture Unit (SPU) where a Stop Display (STP_DSP) command exists (that's what disables the menu);
- PTS (timestamp) of the next SPU, if there is no STP_DSP command in this SPU (unlikely for a menu);
- 0xFFFFFFFF (-1) in case of a still frame (desired value).

Structure of subpictiure pack along with DCSQ commands detailed here: http://dvd.sourceforge.net/dvdinfo/spu.html . Those commands allow starting and stopping display of the subpicture, as well as changing its color, contrast and position. As a result, you can make a still subpicture dynamic without any additional graphic content. Apparently, "white rabbit" is the most famous example of this technique. It was discussed in this thread (http://forum.doom9.org/showthread.php?s=&threadid=37074) some time ago. Scenarist uses this when you apply advanced effects to a subpicture (scroll, wipe, fade, stop). Apparently, the original problem was a result of the stop effect applied to the subpicture at the very end of the motion menu, although I don't see any good reason to do this.

2. Once you figured out how DCSQ commands work (there are only eight of them), set Highlight status in the last NAV pack to 1, Highlight end time and Selection end time to -1. Then close to the beginning of the cell find the subpicture pack(s). Even a motion menu is most likely to have only one subpicture, but it can span across more than one pack and exist in two copies (widescreen/letterbox) for anamorphic movies. These are usually flagged as streams 0x20 and 0x21.

Go to the last subpicture pack for each stream, double click on the Subpicture Frame and scroll to the bottom where DCSQ table is located. The Stop (STP_DSP) command (0x02) is usually located at the very end followed by the table end marker 0xFF. Change 02 to 00 (Forced Start), and you're done.

Even though at first this all might seem complicated, it was a quite interesting for me to learn about advanced subpicture capabilities as well as the structure of NAV and subpicture packs. Hope this will help somebody else.

Dimad
26th March 2004, 19:22
Very nice post dimmer. Thanks.