Un caso complesso

Un esempio riassuntivo degli argomenti trattati.


A conclusione del nostro percorso alla scoperta di come si può realizzare un DVD video interattivo esamineremo un esempio abbastanza complesso di un disco con:

  • un logo iniziale
  • un menu per la scelta della lingua dei menu
  • sequenza di anteprime di altri DVD
  • messaggio di copyright
  • selezione scene
  • sottotitoli in due lingue
  • contenuti speciali (anteprima, anteprime altri DVD, un paio di documentari scaricati da internet)

Osservando il Listato 1 (Nuova pagina) e il Listato 2 (Nuova pagina) si vede che il disco è organizzato in sette titleset, oltre al VMGM che comprende il logo, i messaggi di copyright, il menu di selezione lingua, il menu principale, la logica della sequenza di avvio e alcune funzioni di servizio.

Il primo titleset comprende il film principale, i menu per la selezione scene, il menu dei sottotitoli e quello da mostrare durante la riproduzione.

Nel secondo titleset trovano posto il menu dei contenuti speciali e il trailer, mentre nel terzo c'è un contributo speciale, scaricato dal sito dell'associazione turistica dell'alta pusteria, che ha caratteristiche video diverse e quindi va tenuto separato.

Nel quarto titleset ci sono i menu per la scelta delle anteprime e tutte le anteprime in formato 4:3; nei due successivi stanno le anteprime 16:9 rispettivamente progressive scan e interlaced.

Nell'ultimo titleset infine altri due filmati scaricati da internet (sito della centrale di teleriscaldamento di Dobbiaco) e aventi caratteristiche loro particolari.

Tutto questo materiale è coordinato dal file di configurazione per DvdAuthor contenuto nel Listato 15 (Nuova pagina).

Questo file di configurazione, dopo le opportune dichiarazioni iniziali ci porta nel primo menu del VMGM che nel pre ha una lunga sequenza di test come questo:


if (g2 == 1) {g2 =2; jump menu 3;}

Si tratta del codice di gestione della sequenza di avvio in cui il registro g2 ci indica come sta avanzando la parte introduttiva.

Ricordiamo che appena inserito un disco tutti i registri gxx sono azzerati e quindi la sequenza verrà eseguita in questo modo:

Il menu di scelta lingua.
Figura 14-1
Il menu di scelta lingua.
  • 0. abbiamo appena inserito il disco viene mostrato il logo
  • 1. menu di scelta lingua
  • 2. mostriamo il trailer del disco corrente
  • 3. breve filmato che annuncia la pubblicità
  • 4. sigla delle anteprime
  • 5. anteprima di "Una domenica con le fate"
  • 6. intermezzo delle anteprime
  • 7. anteprima di "Club Terribilissimi"
  • 8. mostriamo il cartello di copyright
  • 9. abbiamo finito l'introduzione e siamo nella riproduzione normale

Quindi appena viene inserito il disco appare per qualche secondo il logo e poi il menu di scelta lingua riprodotto in Figura 14-1 . Come si può vedere ha due scelte che settano due registri in questo modo:


<button>g9 = 0; g8 = 0x40; jump menu 1;</button>

Il registro g9 vale 0 nel caso dell'italiano oppure 1 per il tedesco; ci servirà per scegliere in quale lingua mostrare i prossimi menu con un test come questo (estratto dal pre del menu principale)

 

if (g9 == 1) jump menu 10;

Con questo sistema ci basterà chiamare sempre lo stesso menu in quanto ci pensa il codice appena visto a ridirigerci, se necessario, al menu nella lingua prescelta.

Inoltre il menu di scelta lingua preimposta nel registro g8 il codice dei sottotitoli nella medesima lingua.

Effettuata la scelta della lingua il disco procede mostrando altri filmati contenuti nei menu del VMGM o nei vari titleset. Alcuni di questi filmati non servono solo alla sequenza di avvio, ma hanno anche una loro collocazione all'interno della struttura dei menu, ad esempio le anteprime.

Dobbiamo basarci sul contenuto del registro g2 per sapere se stiamo eseguendo la sequenza iniziale ed inserire nel post dei filmati a doppio uso un test come questo


<post>if (g2 lt 100) call vmgm menu; call menu;</post>

che restituisca il controllo al giusto chiamante.

Il menu principale in italiano.
Figura 14-2
Il menu principale in italiano.

Alla fine della sequenza iniziale apparirà il menu principale che può avere l'aspetto di Figura 14-2 o di Figura 14-3 a seconda della lingua scelta. Il menu principale nel suo pre setta g2 a 100 per segnalare il termine della parte introduttiva.

L'unica altra particolarità del VMGM è la presenza di alcuni menu senza filmato e con solo il tag pre: sono dei contenitori per il codice che permette di implementare le chiamate fra titleset diversi; più avanti vedremo come funzionano.

Il menu principale in tedesco.
Figura 14-3
Il menu principale in tedesco.

Il primo titleset ha esattamente la stessa struttura di quello già visto nel precedente esempio di DvdAuthor (Listato 6 (Nuova pagina)) con in più il fatto che il menu play è gestito in coppia italiano/tedesco con il registro g9.

Inoltre c'è la coppia di menu dei sottotitoli ( Figura 13-1 ) che però non assegna direttamente il valore al registro s2; lo pone in g8. Sarà compito di questa riga


<pre>subtitle = g8;</pre>

sistemarlo nel posto giusto prima del lancio del film principale.

Il menu dei sottotitoli.
Figura 13-1
Il menu dei sottotitoli.

La stessa istruzione di assegnazione è presente prima del comando resume, nel menu play, per permettere il cambio durante la riproduzione.

Il menu play.
Figura 14-4
Il menu play.

Non è possibile assegnare s2 direttamente nel menu perchè quest'ultimo non ha gli stessi stream aggiuntivi del filmato o, ancora peggio, potremmo passare prima da un altro filmato che non li ha per niente con il risultato di avere s2 resettato.

Il menu dei sottotitoli viene richiamato sia dal menu principale ( Figura 14-2 ) che dal menu play ( Figura 14-4 ) e quindi dobbiamo anche gestire il corretto ritorno al menu chiamante. Lo facciamo invocandolo con


<button>g1 = 2; jump titleset 1 menu;</button>

dal menu principale, mentre il valore di g1 sarà diverso se chiamato da play. Il codice nel bottone del menu dei sottotitoli dovrà includere questo test


<button>g8 = 0x40;
        if (g1 == 2) jump vmgm menu 6;
	 jump menu 1;</button>

per restituire il controllo al giusto menu chiamante.

Il titleset dei contenuti speciali, nonostante il suo menu ( Figura 14-5 ) abbia quattro voci (oltre al ritorno al menu principale), possiede al suo interno solo un filmato.

Analizziamo la struttura che segue per capire come si può fare a richiamare i filmati negli altri titleset.


<pgc entry="root">
  <pre>if(g2 lt 100) jump vmgm menu 1; 
       if(g9 == 1) jump menu 2;</pre>
  <button>jump vmgm menu 7;</button>
  <button>g4 = 1; jump vmgm menu 12;</button>
  <button>jump title 1;</button>
  <button>jump vmgm menu 5;</button>
  <button>jump vmgm menu 6;</button>
  <vob file="titoli\specialmenu_it.mpg" pause="inf" />
</pgc>

Il menu dei contenuti speciali.
Figura 14-5
Il menu dei contenuti speciali.

Prima di proseguire la nostra analisi dei salti tra titleset diversi diamo uno sguardo al codice contenuto nel tag pre; riconosciamo il solito test sulla lingua, ma c'è anche un altro test sul registro g2, quello che pilota la sequenza iniziale.

Il senso di questo test discende dal fatto che il menu è stato dichiarato root, e quindi appare a schermo se si preme il tasto menu durante la riproduzione di un qualsiasi titolo di questo titleset; non vogliamo però che ciò accada durante la sequenza iniziale. Quindi se g2 è inferiore a 100 ripassiamo il controllo al menu che gestisce la sequenza.

Riprendendo la nostra analisi delle chiamate tra titleset diversi osserviamo il secondo pulsante il cui scopo è mostrare un filmato sulla val Pusteria contenuto nel terzo titleset. Non potendo chiamarlo direttamente viene passato il controllo al settimo menu del VMGM il cui contenuto è riportato qui


<pgc>
  <pre>jump title 3;</pre>
</pgc>

Si tratta di uno di quei menu fittizi con il solo tag pre che avevamo notato nel VMGM, ora dovrebbe essere chiaro a cosa servono.

Viene quindi chiamato il terzo filmato del disco (è un puro caso si trovi nel terzo titleset) che è dichiarato in questo modo:


<pgc>
  <vob file="montati\Tourismus-Landschaft-Kultur-high.mpg" />
  <post>call vmgm menu 4;</post>
</pgc>

Il meccanismo si ripete nel tag post dove si richiama il quarto menu del VMGM.


<pgc>
  <pre>jump titleset 2 menu;</pre>
</pgc>

Ancora una volta uno di quei menu fittizi con il solo tag pre che ci rimanda al menu del secondo titleset: abbiamo completato il nostro giro.

Nel terzo titleset è presente, oltre al filmato che abbiamo appena visto come è gestito, anche un menu siffatto:


<menus>
  <video format="pal" aspect="16:9" />
  <audio format="ac3" lang="it"/>
  <pgc>
    <pre>jump vmgm menu 4;</pre>
    <vob file="c:\trailers\trapoco169.mpg" pause="0"/>
  </pgc>		
</menus>

Questo menu non serve assolutamente a nulla se non a fare in modo che la struttura dei file sul DVD sia completa e qualche player non ci crei dei problemi. Nessuno chiamerà mai questo menu e anche se lo facesse non verrebbe mostrato: nonostante tutto il file richiamato nel vob deve contenere un filmato valido.

Gli altri titleset non contengono strutture che non ricalchino qualcosa che abbiamo già visto per cui non mi dilungherò oltre.

Inizio pagina
 
Precedente
Sommario
Successivo