Blu-ray + UHD/4K + Streaming

A community for authoring Blu-ray, 4K/UHD and more!

How to maintain the button selection on an HDMV menu when the menu loops

When authoring a looping HDMV 'Always On' menu (using DoStudio EX) we recommended to make sure that the button selection will be maintained when a loop happens. Otherwise the button focus will move to the default selected button as soon as the menu reaches the end and restarts potentially causing confusion for the users.

This task can be accomplished is several ways. Here is one method that is relatively easy to implement.

This authoring technique can be seen in the sample project Resume23, which can be downloaded here.

BD players have status registers that track the selected buttons and pages. It is possible to read the values of these registers called PSR (Player Status Register) and store the values in user-accessible registers (called GPR – General Purpose Registers), which will allow setting the correct button as soon as the loop happens.

By using the following script before loading any new playlist it is possible to store the last selected button as well as the last selected page:

Move [10] {10} //store the value of PSR10 (button ID)

And [10] 0xFFFF // convert the value of PSR10 so that only the ID is returned

Move [11] {11} // store the value of PSR11 (page ID)

And [11] 0xFF // convert the value of PSR11 so that only the ID is returned

Once these two values have been store it is possible to use another script in the first button of the menu that will redirect the button focus on the button that was selected prior to the loop:

 

SetButtonPage Button:[10] Page(effect:off):[11]

 

We also recommend making sure GPR 10 and 11 have been set before executing the above script. For example the very first time the main menu is entered these 2 GPR may contain no value. In the sample project Resume23 I used another GPR as a flag to keep track if the main menu is being played for the first time or not (the GPR number can be from any valid GPR):

 

In the first Movie Object’s code:

 

Move [101] 0 // this GPR is set to 0 if the menu plays for the first time or 1 if the //menu has been played already

 

In the first auto-action button of the main menu we use the following code and evaluate GPR[101] :

 

If [101] == 0 // select default page/button

SetButtonPage Button:0 Page(effect:off):1

If [101] != 0 // select last selected page/button

SetButtonPage Button:[10] Page(effect:off):[11]

 

Views: 239

Comments are closed for this blog post

Latest Activity

Tobias replied to Justin Sevakis's discussion DoStudio to Scenarist transition experience
"Hi Justin, thanks for the quick instruction. It works fine. With the SD BDs is good news. We also…"
1 hour ago
Ari Zagnit posted discussions
16 hours ago
Justin Sevakis replied to Justin Sevakis's discussion DoStudio to Scenarist transition experience
"One other piece of great news. One of my main clients has recently started producing…"
19 hours ago
Justin Sevakis replied to Justin Sevakis's discussion DoStudio to Scenarist transition experience
"Sure thing, Tobias. It's... well, ludicrously complicated but not that hard. Save your…"
19 hours ago

© 2017   Created by Denny and Rob.   Powered by

Badges  |  Report an Issue  |  Terms of Service