Introduzione

Lo scopo di questo documento è quello di dare informazioni utili per l'utilizzo di SMIL (Synchronized Multimedia Integration Language), non vuole in nessun modo essere una guida di riferimento, ma solamente un introduzione alla potenzialità di un nuovo l'inguaggio.

Per fare ciò il documento è stato suddiviso in due parti:

  1. Nella prima parte verranno presentati gli aspetti base di SMIL quindi come si costruisce un programma SMIL, quali sono i tag e come è possibile interpretare un documento SMIL.
  2. Nella seconda parte analizzeremo in modo approfondito gli aspetti che rendono SMIL un utile strumento per la costruzione di presentazioni, ovvero le problematiche di sincronizzazione, di timing e di testing.

Questo documento è stato redatto dallo Studio Dotnet per un suo uso interno, attenendosi alle specifiche indicata dalla W3 Consortium e dalla Real Nertwork, per questo ci scusiamo per eventuali imperfezioni ed errori.

 

1. Smil

1.1 Regole generali di SMIL

2. Head Section <head> … </head>

2.1 Meta Element <meta … />

2.2 Switch Element <switch> … </swithc>

2.3 Layout Element <layout> … </layout>

2.4 SMIL Basic Layout Language

2.4.1 Root-layout Element <root-layout … />

2.4.2 Region Element <region … />

2.5 Esempio di SMIL layout

3. Body elementi <body> </body>

3.1 Hyperlinking Elements

3.1.1 a Element <a> … <a/>

3.1.2 Anchor Elements <anchor … />

3.2 Elementi di sincronizzazione

3.2.1 Par Element <par> … </par>

3.2.2 Seq Element <seq> … </seq>

3.2.3 Elementi Media Objects

3.2.4 Smil Time Model

3.4 Attributi di Test

3.5 Switch Element <switch> … </switch>

Conclusioni

Appendice A

Attributo Skip-Content

Appendice B

CSS2 (Cascading Style Shetts level 2)




1.Smil

Synchronized multimedia Integration Language

Lo standard SMIL definisce un XML-base language che permette l'integrazione e la sincronizzazione di un insieme di oggetti multimediali indipendenti all'interno di una presentazione, utilizzando un semplice mark-up language simile a HTML.

Usando SMIL è possibile

  • Descrivere temporalmente lo svolgimento della presentazione
  • Descrivere i layout di presentazione
  • Associare hyperlink agli oggetti della presentazione

Una presentazione SMIL può essere assemblata on-the-fly attraverso un java servlets (ad esempio Soja) oppure utilizzando un plug-in (ad ex. RealPlayer).

Attualmente lo strada scelta è quella di utilizzare RealPlayer, poiché i javascript risultano troppo lenti e quelli attualmente sviluppati non supportano tutti i media type (wav, jpeg …), mentre l'ultima versione di RealPlayer è stata sviluppata appositamente per riconoscere i file SMIL.

Per creare un SMIL file è sufficiente utilizzare un editor di testo è salvare il file con estensione .smi .smil; per i più esigenti comunque sono disponibili diversi editor appositamente creati per costruire file Smile tra cui Allaire Homesite Realslideshow.

 

1.1 Regole generali di SMIL

Mark-up start e Mark-up end

Un file SMIL inizia sempre col tag <smil> e termina col tag </smil>, tutti gli alti elementi compariranno tra questi due tags.

Header Section Body Section

Il documento SMIL si suddivide in due parti, una denominata heder section definita dai tags <head> </head>, che può essere omessa; e una body section obbligatoria definita dai tags <body> </body>.

Forward Slash

Alcuni tags non hanno il corrispondente tag di chiusura come </smil> ma necessitano del forward slash alla fine dell'istruzione:

<audio src="first.rm"/>

Lowercase

I tags di SMIL a differenza di HTML vanno scritti in minuscolo .

I valori degli attributi vanno racchiusi tra apici " "

<video id="next" src="rtsp://foo.com/v1.rm" region="win1"/>

Commenti

I commenti nei file SMIL utilizzano i tag <! - - - ->

<! - - questo è un commento - ->

Coded characters nell'header

L'utilizzo di alcuni caratteri speciali come " e > nell'header no è permesso, per questo motivo sono stati codificati secondo tag particolari che iniziano con & e terminano con ;



Code

Character

Example

&quot;

quotation mark

"

&amp;

ampersand

&

&apos;

apostrophe

'

&lt;

left angle bracket

<

&gt;

right angle bracket

>

SMIL Coded Characters


Struttura dei tags

Ogni tag può avere degli attributi che caratterizzano il suo funzionamento e degli Element Content (tag figli) che regolano il loro funzionamento in base al loro tag padre.




2. Head Section <head> … </head>

La sezione head contiene tutte quelle informazioni che non sono in relazione con lo svolgimento temporale della presentazione, ma che specificano come deve apparire la presentazione all'osservatore finale.

Il tag head ha un solo attributo

Id: identifica univocamente un elemento/tag all'interno di una presentazione (opzionale)

All'interno della sezione head possiamo trovare un numero qualsiasi dei seguenti tags

  1. Layout
  2. Meta
  3. Switch

Ex-1 Contenuto della sezione header

<head>
<!--presentation with 2 text clips and 1 video clip-->
<meta name="title" content="Music of the Week"/>
<layout>
<root-layout width="430" height="165"/>
<region id="newsregion" top="0" left="0" width="250" height="144"/>
<region id="videoregion" top="0" left="250"width="180" height="144"/>
<region id="stockregion" top="145" left="0"width="430" height="20"/>
</layout>
</head>

 

2.1 Meta Element <meta … />

Questo tag è utilizzato per definire le proprietà del documento (autore, titolo, copyright …).

Ogni tag <meta/> e utilizzato per definire una sola proprietà

Ex-1 Meta tag

<head>
<meta name="title" content="Bob and Susan Discuss Streaming Media"/>
<meta name="author" content="RealNetworks Media Productions"/>
<meta name="copyright" content="(c)1998 RealNetworks"/>
<meta name="abstract" content="Bob and Susan, two Internet technology experts, discuss the future of streaming media."/>
</head>

L'informazione specificate in questo tag, utilizzando RealPlayer vengono visualizzate quando si utilizza il menu "Help about this presentations"

Il tag <meta/> ha i seguenti attributi:

  • content: specifica il valore della proprietà definita nel tag, obbligatorio.
  • Id: identificatore univoco del tag nel documento.
  • Name: identifica la proprietà definita nel meta element, obbligatorio.
  • Base: determina l'indirizzo URL base e l'indirizzo locale, per l'intero documento.
  • Pics-label: specifica un valido gamma di scelta per la definizione delle immagini.
  • Title: contiene il titolo della presentazione.

In fine prevede l'attributo Skip-content.

 

2.2 Switch Element <switch> … </swithc>

Il tag <switch> permette di effettuare delle scelte fra una lista di tag.

Un elemento e accettato se è un tag di SMIL 1.0, se il media-type può essere decodificato e se tutti i test sugli attributi del tag risultano veri.

La selezione avviene valutando in ordine sequenziale le possibili scelte (secondo l'ordine in cui sono inserite nello switch), il primo tag accettato viene selezionato e esclude tutti gli altri.

Gli attributi di switch sono

  • Id: identificatore univoco del tag nel documento.
  • Title: offre una serie di informazioni per l'elemento su cui è settato questo valore, può essere visualizzato in diversi modi (come tool tip). Questo attributo e fortemente raccomandato per ogni sezione switch.

Il tag <switch> utilizzato all'interno della sezione head può contenere come tag figlio il solo <layout> (cosi da definire una diversa presentazione a seconda delle risorse dell'utente).

Nel caso <switch> sia incluso nella sezione body può avere come figli tutti quei tag che gestiscono la sincronizzazione e la riproduzione di video, audio e testo.

 

2.3 Layout Element <layout> … </layout>

La sezione layout determina come gli elementi del sezione body sono visualizzati/posizionati nella presentazione.

Se il documento SMIL non contiene i layout element, la posizione della sezione body dipende dallo SMIL player utilizzato.

Un documento SMIL può, attraverso una seziono switch, contenere diverse alternative di layout; cosi da diversificare la presentazione in base alle caratteristiche dell'utente o alla scelte fatte o in base allo linguaggio di style sheep utilizzato.

Ex-1 Dichiarazione di layout basata sullo style sheep scelto

<smil>
<head>

<switch>
<layout type="text/css">
[region="r"] { top: 20px; left: 20px }
</layout>
<layout>
<region id="r" top="20" left="20" />
</layout>
</switch>
</head>
……..

Questo tag ha i seguenti attributi:

  • Id: identificatore univoco del tag nel documento.
  • Type: specifica quale linguaggio è utilizzato all'interno della sezione layout. Se lo SMIL player non capisce questo linguaggio la sezione layout viene saltata. Di defoult il valore di type è "Test/smile_base_layout". (vedi esempio sopra").

I possibili tag figli di <layout> dipendono dal linguaggio di layout scelto in quanto vengono definiti al suo interno.

 

2.4 SMIL Basic Layout Language

SMIL basic layout language è consistente con il visual rendering model definito in CSS2, questo usa le proprietà di formattazione definite da CSS2 e in più introduce l'attributo "fit"

Assegna dei valori a tutti gli attributi riguardanti il layout. Questi sono coerenti con i valori iniziali delle corrispondenti proprietà in CSS".

SMIL basic language controlla solo i layout dei media object elements (definiti più avanti), è illegale utilizzare SMIL basic language per altri tag di SMIL.

Per identificare SMIL basic layout si usa "Text/smil-basic-layout". Se si vuole utilizzare i valori di defoult il documento SMIL conterrà la riga

<layout type="test/smil-base-layoout"></layout>

I tag figli definiti in SMIL basic layout sono

  • region
  • root-layout

 

2.4.1 Root-layout Element <root-layout … />

Questo tag determina le proprietà (larghezza, altezza, colore …) della finestra di base in cui si svolgerà la presentazione SMIL.

Un documento SMIL che contiene più di una definizione di <root-layout> non viene visualizzato. Se questo tag non viene indicato nel documento SMIL il comportamento dipende dal player (ad ex. RealPlayer calcola la dimensione della root-layout region in base alle dimensione dei media-object e alle regioni che li devono contenere).

Non si può assegnare alla root-layout region un media-object, ma bisogna dichiarare una nuova regione all'interno della root-layout region dove visualizzare il media-object.

Gli attributi di questo tag sono:

  • Id: identificatore univoco dell'elemento/tag nel documento.
  • Title: offre una serie di informazioni per l'elemento su cui è settato questo valore, può essere visualizzato in diversi modi (come tool tip).
  • Height: indica l'altezza della finestra che sto definendo.
  • Width: indica la larghezza della finestra che sto definendo.
  • Background-color: indica il colore di fondo della finestra, di defoult la finestra è nera. I colori supportati sono quelli definiti in RGB hexadecimal.

white (#FFFFFF)

silver (#C0C0C0)

gray (#808080)

Black (#000000)

yellow (#FFFF00)

fuchsia (#FF00FF)

red (#FF0000)

Maroon (#800000)

lime (#00FF00)

olive (#808000)

green (#008000)

purple (#800080)

Aqua (#00FFFF)

teal (#008080)

blue (#0000FF)

navy (#000080)

 

 

Ex-1 Root-layout con regione video e testo

<head>
<layout>
<root-layout background-color="maroon" width="250" height="230"/>
<region id="videoregion" top="5" left="5" width="240" height="180"/>
<region id="textregion" top="200" left="5" width="240" height="20"/>
</layout>
</head>

 

In fine supporta l'attributo Skip-content.

 

2.4.2 Region Element <region … />

Questo elemento controlla la posizione, la grandezza e la scala del media-object all'interno della presentazione.

Utilizzando questo attributo si definisce una regione all'interno della root-layout area dove verrà collocato un media-object. Questa regione rimane trasparente fino al momento in cui il media-object non inizia.

Le coordinate utilizzate all'interno di questo tag sono espresse in pixel o in percentuale (sulla dimensione dell'area root-layout), o con combinazioni delle due possibilità. Il Punto 0,0 coincide con l'angolo in altro a sinistra della finestra di presentazione.

Questo elemento ha i seguenti attributi.

  • Id: identificatore univoco dell'elemento/tag nel documento; attraverso tale attributo si richiama una regione nella sezione body.
  • Title: offre una serie di informazioni per l'elemento su cui è settato questo valore, può essere visualizzato in diversi modi (come tool tip). Questo attributo e fortemente raccomandato per ogni sezione region.
  • Background-color: indica il colore di fondo della finestra, di defoult la finestra è nera. I colori supportati sono quelli definiti in RGB hexadecimal.

white (#FFFFFF)

silver (#C0C0C0)

gray (#808080)

Black (#000000)

yellow (#FFFF00)

fuchsia (#FF00FF)

red (#FF0000)

Maroon (#800000)

lime (#00FF00)

olive (#808000)

green (#008000)

Purple (#800080)

aqua (#00FFFF)

teal (#008080)

blue (#0000FF)

navy (#000080)

 

  • top: indica la distanza del margine superiore, della regione, dalla finestra di root-layout (vedi ex-1).
  • Left: indica la distanza del margine sinistro, della regione, dalla finestra di root-layout (vedi ex-1).
  • Height: indica l'altezza della regione che sto definendo (vedi ex-1).
  • Width: indica la larghezza della regione che sto definendo (vedi ex-1).

Ex-1Definizioni di posizione di una regione

<head>
<layout>
<root-layout background-color="nay" width="480" height="300"/>
<region id="videoregion" top="60" left="120" width="240" height="180"/>
</layout>
</head>

Se definisco una regione che esce dalla finestra di root-layout la parte in eccesso viene troncata.

  • Fit: specifica come collocare/adattare il media-object all'interno di una regione, quando questa ha dimensione diversa dal media-object.

I'attributo assume i seguenti valori:

FILL: il media-object viene adatta alla dimensione della regione, perciò avremo delle distorsione.

HIDDEN: il media-object viene posizionato (con la usa dimensione originale) nell'angolo in alto a sinistra della regione e l'eventuale parte che esce dalla regione viene eliminata. Se il media-object e più piccolo della regione la parte vuota viene riempita col colore di background.

MEET: il media-object viene posizionato nell'angolo in alto a sinistra della regione e quindi vengono adattate le sue dimensioni con quelle della regione preservando però i rapporti fra l'altezza e la larghezza, così da evitare le distorsioni. Lo spazio vuoto viene riempito col colore di background.

SLICE: il media-object viene posizionato nell'angolo in alto a sinistra della regione e quindi vengono adattate le sue dimensioni con quelle della regione in modo che l'intera regione sia riempita mantenendo però costante il rapporto altezza larghezza. La parte eccedente la regione viene scartata.

SROLL: un meccanismo di scroll viene attivato quando il media-object eccede la dimensione della regione.

Ex-2 Utilizzo dell'attributo "fit"

Per default "fit" assume il valore hidden.

  • Z-index: se si utilizzano più regioni sovrapposte l'attributo determina l'ordine con le quali queste si sovrappongono, decidendo così quale apparirà in primo piano.

"Z-index" può assumere sia valori positivi che negativi, in primo piano verrà posizionata la regione con valore più alto. Se due regione hanno lo stesso valore, viene invertito l'ordine di partenza delle presentazioni, l'ultima iniziata sarà quella in primo piano.

Ex-3 Attributo "z-index"

<layout>
<root-layout background-color="gray" width="280" height="220"/>
<region id="image" top="10" left="10" width="260" height="200" z-index="0"/>
<region id="video" top="20" left="20" width="240" height="180" z-index="1"/>
</layout>

Inoltre supporta l'attributo Skip-contet.

 

2.5 Esempio di SMIL layout

Il seguente esempio mostra il risultato di una presentazione con video, testo e stock tiker window utilizzando i comandi di layout.


<smil>
<head>
<!--presentation with 2 text clips and 1 video clip-->
<meta name="title" content="Music of the Week"/>
<layout>
<root-layout width="430" height="165"/>
<region id="newsregion" top="0" left="0" width="250" height="144"/>
<region id="videoregion" top="0" left="250"width="180" height="144"/>
<region id="stockregion" top="145" left="0"width="430" height="20"/>
</layout>
</head>
<body>
<par>
<!--play these 3 clips simultaneously-->
<textstream src="news.rt" region="newsregion"/>
<video src="newsvid.rm" region="videoregion"/>
<textstream src="stocks.rt" region="stockregion"/>
</par>
</body>
</smil>

 

 

 

3. Body elementi <body> … </body>

La sezione body contiene le informazioni relative al funzionamento temporale della presentazione, e ai link fra i documenti.

Un documento SMIL deve sempre contenere una sezione body che inizia col tag <body> e termina con </body>.

L'unico attributo della sezione body è

  • Id: identificatore univo dell'elemento/tag nel documento (opzionale).

Ex-3 Esempio di sezione body

<smil>
<body>
<audio src="rtsp://realserver.company.com/one.rm"/>
<audio src="rtsp://realserver.company.com/two.rm"/>
<audio src="rtsp://realserver.company.com/three.rm"/>
</body>
</smil>

I tag figli di body si possono suddividere in quattro classi:

  1. tag di sincronizzazione <par></par>, <seq></seq>
  2. utilizzati per sincronizzare i vari oggetti (video, audio …) all'interno della presentazione.

  3. tag Media-object <ref/>, <animation/>, <audio/>, <img/>,<video/>, <text/>, <textstream/>
  4. Utilizzati in concomitanza coi tag di sincronizzazione per eseguire oggetti comunicativi all'interno della presentazione

  5. tag di scelta <switch></switch>
  6. utilizzati per effettuare scelte in un elenco.

  7. tag di link <a></a> <anchor/>

utilizzati per collegare parti della presentazione con altri documenti o con parti di essi.

 

3.1 Hyperlinking Elements

La sezione link permette di descrivere i collegamenti di navigazione tra oggetti della presentazione.

I collegamenti sono unidirezionali ed hanno un solo punto di partenza. I link in SMIL sono attivati dall'utente.

SMIL supporta link a parti della stessa presentazione o di presentazioni diverse attraverso i connettore # seguito dal nome dell'identificatore

Ex-1 Link interni del file newmedia.smil

<par id="text_and_video">
<video src="video2.rm" region="newsregion"/>
<textstream src="text.rt" region="textregion"/>
</par>

<a href="rtsp://realserver.company.com/newmedia.smil#text_and_video">
<video src="video.rm" region="videoregion"/>
</a>

Lincando una parte della presentazione si permette all'utente di avanzare velocemente nella presentazione fino alla parte lincata.

Utilizzando i link in concomitanza con l'attributo "repeat" posso verificarsi i seguenti casi.

  1. L'elemento indicato dal link contiene l'attributo "repeat".

  • se il valore di "repeat" è N (numero di ripetizioni) tutte le N ripetizioni dell'elemento sono eseguite.
  • Se il valore di "repeat" è indefinito, la terminazione avviene in accordo con le regole adottate da player per il valore "indefinito".

  1. l'elemento indirizzato attraverso il link è continuato un altro elemento che contiene l'attributo "repeat".

  • l'esecuzione parte dall'elemento lincato per poi proseguire per N-1 ripetizioni partendo dall'elemento che contiene il repeat.
  • L'esecuzione parte dall'elemento lincato e prosegue con le regole di ripetizione definite per il valore "indefinito" dal player.

I collegamenti vengono sempre attivati dall'utente.

Per effettuare un collegamento corretto ci sono alcune regole da rispettare

  • Si possono lincare sezioni <par> o sezioni <seq> utilizzando il loro attributo id.
  • Non si possono lincare elementi contenuti nella sezione <head>
  • Non si possono lincare media-object contenuti in sezioni <switch> <par> <seq> ma bisogna lincare l'intera sezione.

Per via della natura integrata di SMIL una presentazione può evolversi in altri applicazioni o plug-in e viceversa (ex. Un browser SMIL usa un plug-in HTML per visualizzare una pagina HTML contenuta in una presentazioni SMIL).

Nei documenti SMIL cosi integrai (che contengono collegamenti con altre applicazioni) si raccomanda che i link a documenti SMIL abbiano la priorità sugli altri collegamenti, (una volta attivata un'altra applicazione B, i due documenti hanno un evoluzione separata. Dall'applicazione B non è possibile rientrare nella presentazione SMIL).

 

3.1.1 a Element <a> … <a/>

Il tag a serve per creare link con altri documenti avvero una connessione fra due risorse web.

La sezione <a> è trasparente cioè non influenza la sincronizzazione dei figli. Questi tag no devono essere nidificati, e necessita dell'attributo "href".

Gli attributi di tag <a> sono:

  • Id: identificatore univo dell'elemento/tag nel documento (opzionale).
  • Title: offre una serie di informazioni per l'elemento su cui è settato questo valore, può essere visualizzato in diversi modi (come tool tip). Questo attributo e fortemente raccomandato per ogni sezione <a>.
  • Href: questo attributo contiene l'indirizzo URL del destinatario del link, è obbligatoria che questo attributo venga specificato.
  • Show: controlla il funzionamento del documento contenente il link, e può assumere i seguenti valori:

Replace: la presentazione corrente viene fermata e viene rimpiazzata dalla risorsa lincata. Se il SMIL player (RealPlayer) offre un history mechanism la presentazione sorgente viene ripresa dal punto in cui era stata fermata al termine della nuova presentazione.

New: la presentazione della risorsa lincata inizia in un nuovo contesto e non ha effetti sulla presentazione attuale.

Pause: la presentazione viene messa in pausa e la risorsa lincata inizia in un nuovo contesto quando, quando questa termina la presentazione iniziale riparte dal punto in cui era stata messa in pausa.

Di defoult assume il valore "Replace".

Ex-1 La presentazione lincata inizia rimpiazzando la presentazione che sta funzionando.

<a href="http://www.cwi.nl/somewhereelse.smi">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

Ex-2 La presentazione lincata inizia sommandosi alla presentazione che sta funzionando.

<a href="http://www.cwi.nl/somewhereelse.smi" show="new">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

 

Ex-3 La presentazione lincata inizia mettendo in pausa la presentazione che sta funzionando.

<a href="http://www.cwi.nl/somewhereelse.smi" show="pause">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

 

I tag figli di body sono i tag di:

  • tag di sincronizzazione <par></par>, <seq></seq>

utilizzati per sincronizzare i vari oggetti (video, audio …) all'interno della presentazione.

  • tag Media-object <ref/>, <animation/>, <audio/>, <img/>,<video/>, <text/>, <textstream/>

Utilizzati in concomitanza coi tag di sincronizzazione per eseguire oggetti comunicativi all'interno della presentazione

  • tag di scelta <switch></switch>

utilizzati per effettuare scelte in un elenco.

 

3.1.2 Anchor Elements <anchor … />

Il tag <a> ha la restrizione di poter lincare solamente oggetti comunicativo completi, invece il tag <anchor/> permette di collegare parti di oggetti comunicativi ovvero:

  • permette di associare un link a una sotto parte spaziale o temporale di un oggetto comunicativo usando l'attributo "href"
  • permette di fare di una sotto parte di un oggetto comunicativo il destinatario di un link usando l'attributo "id".
  • permette di dividere un oggetto in parti spaziali, usando l'attributo "coodrs".
  • Permette di dividere un oggetto in parti temporali usando glia attributi "begin" "end".

L'elemento ha i seguenti attributi:

  • Begin: specifica il tempo dell'esplicito inizio di un elemento. L'attributo può contenere i seguenti due tipi di valori:

1) delay-value: questo valore di ritardo è un clock-value che misura il tempo di avanzamento della presentazione e può essere incrementato, decrementato o fermato dell'utente o dal player stesso

2) event-value: l'elemento inizia quando un certo evento occorre

  • End: specifica l'esplicita fine di un elemento; l'attributo può contenere gli stessi tipi di valori dell'attributo begin.
  • Id: identificatore univo dell'elemento/tag nel documento (opzionale).

  • Title: offre una serie di informazioni per l'elemento su cui è settato questo valore, può essere visualizzato in diversi modi (come tool tip). Questo attributo e fortemente raccomandato per ogni sezione <anchor>.
  • Href: questo attributo contiene l'indirizzo URL del destinatario del link.
  • Coords: il valore di questo attributo specifica un rettangolo all'interno dell'area di display del media-object. Il rettangolo è specificato attraverso quattro valori. I primi due specificano le coordinate dell'angolo in alto a sinistra e le altre due specificano le coordinate dell'angolo in basso a destra del rettangolo. Le coordinate (0,0) coincidono con l'angolo in alto a sinistra dell'area utilizzata come display dal media-object. I valori della coordinate possono essere espressi anche in percentuale.

  • Un attributo con valore errato e ignorato.
  • Se le coordinate eccedono lo spazio di display, la parte in eccesso viene troncata.

L'attributo "coords" a la seguenti struttura.


coords-value ::= left-x "," top-y "," right-x "," bottom-y

Inoltre prevede l'attributo skip-content.

Ex-1. Link associato una sotto parte spaziale.

<video src="http://www.w3.org/CoolStuff">
  <anchor href="http://www.w3.org/AudioVideo" coords="0%,0%,50%,50%"/>
  <anchor href="http://www.w3.org/Style"      coords="50%,50%,100%,100%"/>
</video>

Ex-2. Link associato una sotto parte temporale.

<video src="http://www.w3.org/CoolStuff">
  <anchor href="http://www.w3.org/AudioVideo" begin="0s" end="5s"/>
  <anchor href="http://www.w3.org/Style"      begin="5s" end="10s"/>
</video>

Ex-3. Link associato una sotto parte di un oggetto video.

Presentation A:

<a href="http://www.cwi.nl/mm/presentationB#tim">
   <video id="graph" src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

Presentation B:

<video src="http://www.w3.org/CoolStuff">
  <anchor id="joe" begin="0s" end="5s"/>
  <anchor id="tim" begin="5s" end="10s"/>
</video>

Ex-4. Combinazione di link.

Presentation A:

<a href="http://www.cwi.nl/mm/presentationB#tim">
  <video id="graph" src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>


Presentation B:

<video src="http://www.w3.org/CoolStuff">
  <anchor id="joe" begin="0s" end="5s" coords="0%,0%,50%,50%"
          href="http://www.w3.org/"/>
  <anchor id="tim" begin="5s" end="10s" coords="0%,0%,50%,50%"
          href="http://www.w3.org/Tim"/>
</video>

 

3.2 Elementi di sincronizzazione

 

3.2.1 Par Element <par> … </par>

I figli di un elemento "par" possono sovrapporsi nel tempo.

L'ordine testuale di apparizione dei figli in un elemento par non ha significato per la temporizzazione della loro apparizione.

Attributi dell'elemento

  • abstract: breve descrizione dei contenuti dell'elemento;
  • author: nome dell'autore dei contenuti dell'elemento;
  • begin: specifica il tempo dell'esplicito inizio di un elemento. L'attributo può contenere i seguenti due tipi di valori:

1) delay-value: questo valore di ritardo è un clock-value che misura il tempo di avanzamento della presentazione e può essere incrementato, decrementato o fermato dalle azioni dell'utente o dal player stesso. La semantica del delay-value dipende dal primo elemento antenato che è elemento di sincronizzazione ("a" o "switch" sono ignorati).

- Se l'antenato è par, il valore definisce un ritardo dall'effettivo inizio di par;

- Se l'antenato è seq, il valore definisce un ritardo dall'effettiva fine del primo predecessore lessicale che è elemento di sincronizzazione.

2) event-value: l'elemento inizia quando un certo evento occorre. Il suo valore è un element-event. L'elemento generatore dell'evento deve essere "in scope". L'insieme S degli elementi "in scope" è determinato come segue:

- Prendi tutti i figli dal primo elemento antenato che è di sincronizzazione e aggiungili a S;

- Rimuovi tutti gli elementi "a" e "switch" da S.

Aggiungi i figli di tutti gli elementi "a" ad S a meno che essi non siano elementi "switch".

L'insieme S risultante è l'insieme degli elementi "in scope";

  • copyright: notizie di copyright per i contenuti dell'elemento;
  • dur: specifica l'esplicita durata di un elemento;
  • end: specifica l'esplicita fine di un elemento; attributo può contenere gli stessi tipi di valori dell'attributo begin;
  • endsync: l'attributo può assumere i seguenti valori:

1) "first"

2) "id-ref" : : = "id(" id-value ")"

3) "last"

  • id: questo attributo identifica univocamente un elemento all'interno di un documento;
  • region: questo attributo specifica una superficie astratta di rendering (visiva o acustica) definita all'interno della sezione layout del documento. Il suo valore deve essere un identificatore "id" .Se nessuna superficie di rendering con questo identificatore è stata definita nel layout i valori delle proprietà di formattazione di questo elemento sono determinati attraverso un layout di default. L'attributo "region" per l'elemento "par" non può essere usato attraverso basic-layout-language per SMIL. E' stato aggiunto per completezza poiché esso può essere richiesto da un altro linguaggio di layout;
  • repeat: può assumere come valori o un intero o la stringa "indefinite". Il suo valore di default 1;
  • system-bitrate
  • system-captions
  • system-language
  • system-overdub-or-caption
  • system-required
  • system-screen-size
  • system-screen-depht
  • title: contiene il titolo dei contenuti dell'elemento par.

Sincronizzazione fra figli in parallelo

La sincronizzazione fra figli in parallelo dello stesso gruppo è dipendente dall'implementazione del player.

Un player può avere i seguenti funzionamenti per la sincronizzazione:

  • hard: il player sincronizza i figli dell'elemento par con un clock comune;
  • soft: ogni figlio dell'elemento par ha il suo proprio che avanza indipendentemente dal clock degli altri figli.

Valori degli attributi clock-value e element-event

clock-value può assumere i seguenti valori:

  • ore:minuti:secondi(.frazioni); es. 20:10:12.51236
  • minuti:secondi(.frazioni); es. 13:24.4628
  • cifre+(.frazioni)("h" | "min" | "s" | "ms"); es. 345.467s

ore, minuti, secondi = 2 cifre;

frazioni = cifre+;

cifre = 0..9;

le frazioni si calcolano come segue:

x*1/10**n con n=numero di cifre e x=valore cifre

ex 00.005s = 5*1/10**3 secondi = 5 millisecondi.

element-event-value

ha la seguente sintassi:

element-event : : = " id( event-source ) ( event ) "

event-source : : = id-value

event : : = begin | clock-value | end

  • begin: l'evento è generato all'effettivo inizio dell'elemento;
  • clock-val: l'evento è generato quando il clock associato con un elemento raggiunge un particolare valore. Il clock è inizzializzato a zero all'inizio dell'elemento.Per "par" e "seq" il clock da il tempo di presentazione trascorso fino al effettivo inizio dell'elemento. Per gli oggetti media la semantica è dipendente dall'implentazione. E' un errore usare un valore di clock che eccede il valore della durata effettiva dell'elemento generatore dell'evento;
  • end: l'evento è generato alla terminazione effettiva dell'elemento.

Ex-1
begin="id(a)(begin)"

begin="id(b)(45s)"

begin="id(c)(end)"

Elementi contenuti in PAR

  • animation
  • audio
  • img
  • ref
  • text
  • textstream
  • video
  • a
  • ref
  • par
  • seq

Questi elementi possono apparire multiple volte come figli dell'elemento par.

 

3.2.2 Seq Element <seq> … </seq>

I figli dell'elemento seq formano una sequenza temporale.

Attributi dell'elemento

  • abstract: breve descrizione dei contenuti dell'elemento;
  • author: nome dell'autore dei contenuti dell'elemento;
  • begin: specifica il tempo dell'esplicito inizio di un elemento. L'attributo può contenere i seguenti due tipi di valori:

1) delay-value: questo valore di ritardo è un clock-value che misura il tempo di avanzamento della presentazione e può essere incrementato, decrementato o fermato dalle azioni dell'utente o dal player stesso. La semantica del delay-value dipende dal primo elemento antenato che è elemento di sincronizzazione ("a" o "switch" sono ignorati).

- Se l'antenato è par, il valore definisce un ritardo dall'effettivo inizio di par;

- Se l'antenato è seq, il valore definisce un ritardo dall'effettiva fine del primo predecessore lessicale che è elemento di sincronizzazione.

2) event-value: l'elemento inizia quando un certo evento occorre. Il suo valore è un element-event. L'elemento generatore dell'evento deve essere "in scope". L'insieme S degli elementi "in scope" è determinato come segue:

- Prendi tutti i figli dal primo elemento antenato che è di sincronizzazione e aggiungili a S;

- Rimuovi tutti gli elementi "a" e "switch" da S.

Aggiungi i figli di tutti gli elementi "a" ad S a meno che essi non siano elementi "switch".

L'insieme S risultante è l'insieme degli elementi "in scope";

  • copyright: notizie di copyright per i contenuti dell'elemento;
  • dur: specifica l'esplicita durata di un elemento;
  • end: specifica l'esplicita fine di un elemento; attributo può contenere gli stessi tipi di valori dell'attributo begin;

  • id: questo attributo identifica univocamente un elemento all'interno di un documento;
  • region: questo attributo specifica una superficie astratta di rendering (visiva o acustica) definita all'interno della sezione layout del documento. Il suo valore deve essere un identificatore "id". Se nessuna superficie di rendering con questo identificatore è stata definita nel layout i valori delle proprietà di formattazione di questo elemento sono determinati attraverso un layout di default. L'attributo "region" per l'elemento "par" non può essere usato attraverso basic-layout-language per SMIL. E' stato aggiunto per completezza poiché esso può essere richiesto da un altro linguaggio di layout;
  • repeat: può assumere come valori o un intero o la stringa "indefinite". Il suo valore di default 1;
  • system-bitrate
  • system-captions
  • system-language
  • system-overdub-or-caption
  • system-required
  • system-screen-size
  • system-screen-depht
  • title: contiene il titolo dei contenuti dell'elemento par.

 

Elementi contenuti in seq

Sono uguali a quelli contenuti in par.

  • animation
  • audio
  • img
  • ref
  • text
  • textstream
  • video
  • a
  • ref
  • par
  • seq

 

3.2.3 Elementi Media Objects

Gli elementi per gli oggetti medi sono:

ref, animation, audio, img, video, text e textstream.

Questi elementi permettono di includere oggetti media all'interno di un documento SMIL. Gli oggetti sono inclusi attraverso riferimenti utilizzando URI.

Ci sono due tipi di oggetti media:

  • oggetti con una durata intrinseca (es. video, audio) chiamati "continuous media"
  • oggetti senza un'intrinseca durata (es. testo, immagini) chiamati "discrete media"

Ancore e link possono essere attaccati agli oggetti media che vengono mostrati sulla superficie di rendering.

Quando eseguiamo un oggetto media il player non deriva l'esatto tipo dell'oggetto dal nome dell'elemento che lo identifica; invece esso lo deriva o dall'attributo "type" se presente nell'elemento o dall'informazione comunicate dal server che lo fornisce oppure dal sistema operativo.

L'autore comunque dovrebbe assicurarsi che il gruppo entro il quale l'oggetto cade sia riflesso nel nome dell'elemento che lo rappresenta. Questo è importante per la leggibilità del documento SMIL. Quando l'autore è indubbio sul gruppo di appartenenza dell'oggetto dovrebbe usare l'elemento "ref".

Attributi degli elementi media objects

  • abstract: ...
  • alt: per gli utenti che non possono visualizzare un particolare oggetto questo permette di specificare testo alternativo; è fortemente raccomandato che tutti i media object abbiano questo attributo con una significativa descrizione;
  • author: ...
  • begin: ...
  • clip-begin: specifica l'inizio di una sotto clip di un "continuous object" come offset dall'inizio dell'oggetto. Il valore dell'attributo è composto da una metrica seguita da un tempo la cui sintassi dipende dalla metrica stessa. Le metriche possibili sono:

1) SMPTE: usata per accedere in modo accurato, ha i seguenti valori:

- smpte

- smpte-30-drop

- smpte-25-drop

2) NPT: "Normal Play Time" usata per accedere in modo normale, ha il seguente valore:

- npt

es. clip-begin = "smpte=10:12:33:20"

clip-begin = "npt=12:33:45:.5675"

  • clip-end: specifica la fine di una sotto clip, ha la stessa sintassi e semantica di clip-begin, con in più il fatto che se il tempo eccede il normale tempo di durata dell'oggetto il valore dell'attributo è ignorato e la fine della clip è uguale alla fine effettiva dell'oggetto;
  • copyright: ...
  • dur: ...
  • end: ...
  • fill: può assumere i valori:

- "freeze"

- "remove"

  • id: ...
  • longdesc: specifica un link ad una descrizione dell'oggetto. Questa descrizione dovrebbe complementare la breve descrizione fornita usando l'attributo "alt";
  • region: ...
  • repeat: ...
  • src: il suo valore è l'URI dell'oggetto media;
  • system-bitrate
  • system-captions
  • system-language
  • system-overdub-or-caption
  • system-required
  • system-screen-size
  • system-screen-depht
  • title: ...
  • type: MIME type dell'oggetto riferito dall'attributo "src"

Elementi contenuti in media objects

anchor

 

3.2.4 Smil Time Model

Per ogni elemento di sincronizzazione noi definiamo un implicito, esplicito, desiderato e effettivo inizio, durata e fine.

L'effettivo inizio durata e fine specifica cosa il lettore del documento percepirà. I valori di implicito esplicito e desiderato, sono valori ausiliari usati per definire i valori effettivi.

  1. Ogni elemento in SMIL ha un implicito inizio;
  2. Ad ogni elemento può essere assegnato un esplicito inizio aggiungendo l'attributo "begin" all'elemento. E' un errore se l'esplicito inizio è prima dell'implicito inizio dell'oggetto;
  3. Ogni elemento in SMIL ha un'implicita fine;
  4. Ad ogni elemento può essere assegnato un'esplicita fine aggiungendo l'attributo "end" all'elemento;
  5. L'implicita durata di un elemento è la differenza fra l'implicita fine e l'implicito inizio dell'elemento stesso;
  6. Ad ogni elemento può essere assegnata un'esplicita durata aggiungendo l'attributo "dur" all'elemento;
  7. Il desiderato inizio di un elemento è dato dall'esplicita inizio se dato altrimenti è fornito dall'implicito inizio;
  8. Ogni elemento ha una desiderata fine che è data dall'esplicita fine se prevista altrimenti è data dall'implicita fine;
  9. La durata desiderata di un elemento è data dalla differenza la desiderata fine e il desiderato inizio;
  10. Ogni elemento ha un effettivo inizio;
  11. Ogni elemento ha un'effettiva fine (la fine di un elemento figlio non può essere dopo la terminazione del suo elemento padre);
  12. L'effettiva durata di un elemento è la differenza fra l'effettiva fine e l'effettivo inizio dell'elemento stesso.

Determinazione del Implicito Inizio di un elemento

  • L'implicito inizio del primo figlio dell'elemento "body" avviene quando il documento inizia l'esecuzione;
  • L'implicito inizio di un figlio di "par" è uguale all'effettivo inizio dell'elemento "par";
  • L'implicito inizio del primo figlio di "seq" è uguale all'effettivo inizio dell'elemento "seq";
  • L'implicito inizio di ogni altro figlio di "seq" è uguale alla desiderata fine del precedente elemento anch'esso figlio di "seq";

Determinazione dell'implicita Fine di un elemento

  • Un elemento con attributo "repeat" e valore "indefinite" ha un'implicita fine immediatamente dopo il suo effettivo inizio;
  • Un elemento con attributo "repeat" e valore diverso da "indefinite" ha un'implicita fine uguale all'implicita fine di un elemento "seq" che ha un numero di figli senza l'attributo "repeat" pari al numero di copie dell'elemento;
  • Un elemento che si riferisce a un oggetto continuous media ha un'implicita fine uguale alla somma fra l'effettivo inizio e l'intrinseca durata dell'oggetto;
  • Un elemento che si riferisce a un oggetto discrete media ha un'implicita fine immediatamente dopo il suo effettivo inizio;
  • Un elemento "seq" ha un'implicita fine uguale alla desiderata fine del suo ultimo figlio;
  • Un elemento "par" ha un'implicita fine che dipende dal valore dell'attributo "endsync". L'implicita fine è derivata come segue:

- se il valore di "endsync" è "first", l'implicita fine di "par" è il minimo delle desiderate fini dei suoi figli;

- se il valore di "endsync" è "last", o se "endsync" è omesso, l'implicita fine di "par" è il massimo delle desiderate fini dei suoi figli;

- se il valore di "endsync" è "id-ref" l'implicita fine di "par" è uguale alla desiderata fine del figlio riferito da "id-ref".

Determinazione della Desiderata Fine di un elemento

  • Se l'elemento ha un'esplicita durata e un'esplicita fine, la desiderata fine è il minimi fra:

- la somma fra il desiderato inizio e l'esplicita durata;

- l'esplicita fine;

  • Se l'elemento ha un'esplicita durata ma non un'esplicita fine, la desiderata fine è la somma fra il desiderato inizio e l'esplicita durata;
  • Se l'elemento ha un'esplicita fine ma non un'esplicita durata, la desiderata fine è uguale all'esplicita fine;
  • Altrimenti la desiderata fine è uguale all'implicita fine.

 

Determinazione del Desiderato Inizio di un elemento

Il desiderato inizio di un elemento è determinato attraverso l'uso della regola 7).

Determinazione dell'Effettivo Inizio di un elemento

L'effettivo inizio di un elemento è uguale al desiderato inizio di un elemento, a meno che l'effettiva fine dell'elemento padre è precedente a questo tempo, nel qual caso l'elemento non viene mostrato.

Determinazione dell'effettiva fine di un elemento

  • L'effettiva fine dell'ultimo figlio dell'elemento "body" è dipendente dal player. L'effettiva fine è almeno pari alla desiderata fine, ma può essere anche posteriore dipende dall'implementazione;
  • L'effettiva fine di un figlio di "par" può essere derivata come segue:

- se il ha l'attributo "fill" con valore "freeze" l'effettiva fine del figlio è uguale all'effettiva fine del padre. L'ultimo stato dell'elemento è mantenuto sullo schermo fino all'effettiva fine dell'elemento;

- se il figlio ha l'attributo "fill" con valore "remove", l'effettiva fine del figlio è il minimo fra l'effettiva fine del padre e la desiderata fine del figlio;

- se il figlio non ha l'attributo "fill" l'effettiva fine dipende se il figlio ha o no un'esplicita durata o fine:

1) se il ha un'esplicita durata o fine l'effettiva fine è determinata come se l'elemento ha un attributo "fill" con valore "remove";

2) se il figlio non ha un'esplicita durata e non ha un'esplicita fine, l'effettiva fine è determinata come se l'elemento avesse l'attributo "fill" con valore "freeze";

  • L'effettiva fine dell'ultimo elemento di "seq" è derivata allo stesso modo come l'effettiva fine di un figlio di "par";
  • L'effettiva fine di ogni altro figlio di "seq" può essere derivata come segue:

- se il figlio ha l'attributo "fill" con valore "freeze", l'effettiva fine del figlio è uguale all'effettivo inizio del successivo elemento;

- se il figlio ha l'attributo "fill" con valore "remove", l'effettiva fine del figlio è il minimo fra l'effettivo inizio del successivo elemento e la desiderata fine di quest'ultimo;

- se il figlio non ha l'attributo "fill" l'effettiva fine dipende se il figlio ha o no un'esplicita durata o fine:

1) se il figlio ha un'esplicita durata o fine, l'effettiva fine è determinata come se l'elemento ha l'attributo "fill" con valore "remove";

2) se il figlio non un'esplicita fine e non ha un'esplicita durata, l'effettiva fine è determinata come se l'elemento avesse l'attributo "fill" con valore "freeze";

 

3.4 Attributi di Test

Questa specifica definisce una lista di attributi di test che possono essere aggiunti ad ogni elemento di sincronizzazione e che testano le capacità del sistema e i suoi settaggi. Concettualmente, questi attributi rappresentano test booleani. Quando uno degli attributi di test, specificato per un elemento, è valutato "false" l'elemento che porta l'attributo è ignorato.

Attributi di test definiti in SMIL1.0:

  • system-bitrate: questo attributo specifica approssimativamente il bandwith, in bits\sec disponibili nel sistema. La misura del bandwith è specifica dell'applicazione, significa che l'applicazione può usare sofisticate misure per la connessione end-to-end o semplici settaggi statici controllati dall'utente. Nell'ultimo caso, questo potrebbe ad esempio essere usato per fare una scelta basata sulla connessione alla rete dell'utente. Tipici valori per i modem degli utenti sono: 14400, 28800, 33600, 56000, ecc. Valutato "true" se il bitrate disponibile per il sistema è uguale o maggiore del valore dato. Valutato "false" se il bitrate disponibile per il sistema è minore del valore dato. L'attributo può assumere ogni intero maggiore di 0. Se il valore definito eccede il massimo bandwith definito dall'implementazione l'attributo sarà sempre valutato "false";
  • system-captions: questo attributo permette all'autore di distinguere fra testo superfluo equivalente alla porzione audio della presentazione (destinato ad un pubblico ad esempio come quello dei sordi che ha bisogno di tali informazioni) e testo destinato ad un largo pubblico. L'attributo ha un valore "on" se l'utente ha indicato il desiderio di vedere informazioni closed-captioning, e ha un valore "off" se l'utente ha indicato che non desidera vederle. Valutato "true" se il valore è "on", valutato "false" se il valore è "off";
  • system-language: il valore dell'attributo è una lista di linguaggi separati da virgola. Valutati "true" se uno dei linguaggi indicati dalle preferenze dell'utente è esattamente uguale ha uno dei linguaggi dati nel valore di questo attributo. Valutato "false" altrimenti; (Note: l'autore dovrebbe realizzare che se diversi oggetti con lingue alternative sono chiusi in un elemento "switch" e nessuno di questi fa match, questo potrebbe portare alla situazione nella quale un video inizia senza traccia audio. Si raccomanda quindi di includere una scelta finale con valore "catch-all" la quale è accettato in ogni caso;
  • system-required: questo attributo specifica il nome di un'estensione. Valutato "true" se l'estensione è supportata dall'implementazione, altrimenti è valutata "false";
  • system-screen-size: il valore dell'attributo ha la seguente sintassi: "screen-heightXscree-width" es. 300X600. Sono espressi in pixel, e ognuno deve essere un valore maggiore di 0. Valutato "true" se il player è capace di mostrare la presentazione con la grandezza richiesta. Valutato "false" se il player è capace di mostrare solo una presentazione di grandezza inferiore;
  • system-screen-depth: questo attributo specifica lo spetro della paletta dei colori dello schermo in bits richiesti per mostrare l'elemento. Tipici valori sono: 1, 8, 16, 24, 32, ecc. Valutato "true" se il player è capace di mostrare immagini o video con lo spettro richiesto. Valutato "false" se il player è solamente capace di mostrare immagini o video con spettro minore di colori.
  • system-overdub-or-caption: ...

 

3.5 Switch Element <switch> … </switch>

Questo elemento permette all'autore di specificare un'insieme di elementi alternativi dai quali solamente uno, l'elemento accettabile, dovrebbe esser scelto. Un elemento è accettabile se: è un elemento SMIL1.0, il tipo del media può essere decodificato e se tutti gli attributi di test associatigli sono valutati "true". Un elemento è selezionato come segue:

il player valuta gli elementi nell'ordine nei quali essi appaiono all'interno dell'elemento "switch".

Quindi l'autore dovrebbe ordinare le alternative dalla più desiderabile alla meno desiderabile. Successivamente dovrebbe prevedere una alternativa fail-safe come ultima scelta del elemento "switch" in modo che almeno una scelta all'interno di "switch" sia comunque fatta.

L'implementazione non dovrebbe arbitrariamente prendere un oggetto all'interno di "switch" quando tutti i test falliscono.

Attributi del elemento Switch

Gli attributi di switch sono

  • Id: identificatore univoco del tag nel documento.
  • Title: offre una serie di informazioni per l'elemento su cui è settato questo valore, può essere visualizzato in diversi modi (come tool tip). Questo attributo e fortemente raccomandato per ogni sezione switch.

Elementi contenuti in Switch

  • animation
  • audio
  • img
  • ref
  • text
  • textstream
  • video
  • a
  • ref
  • par
  • seq

Tutti questi elementi possono apparire multiple volte come figli di un elemento "switch".

Se l'elemento "switch" è usato all'interno di un elemento "head" esso può contenere il seguente figlio: "layout". Multipli "layout" possono comparire all'interno di un elemento "switch".

 

Ex-1 Scelta fra risorse audio basata su diverso bitrate

...
<switch>
   <audio src="joe-audio-better-quality" system-bitrate="16000" />
   <audio src="joe-audio" system-bitrate="8000" />
</switch>
...

Ex-2 Scelta fra risorse audio basata sulla lingua preferita

...
<switch>
   <audio src="joe-audio-french" system-language="fr"/>
   <audio src="joe-audio-english" system-language="en"/>
</switch>
...

 

 

Conclusioni

SMIL offre un nuovo modo di assemblare e sviluppare presentazioni multimediali.

Piuttosto che il tradizionale modo di creare presentazioni attraverso la compilazione di un insieme di media-object in un singolo file, SMIL permette di costruire una presentazione utilizzando oggetti separati in modo facile e veloce.

Comunque la migliore caratteristica di SMIL è quella di generare codice on_the_fly e con ciò offrire sequenze multimediali personalizzate.

Utilizzando G2 RealPlayer si ha a disposizione una interfaccia web-base per editare e assemblare nuove presentazioni multimediali, inoltre si ha la possibilità di offrire presentazioni in realtime.

 

Appendice A

Attributo Skip-Content

Questo attributo è stato introdotto per supportare le future estensioni di SMIL.

Viene interpretato nei due seguenti modi:

  1. se un nuovo elemento è introdotto in una futura versione di SMIL e questo elemento ha dei tag figli appartenenti a SMIL 1.0, skip-content controlla se il tag figlio può essere processato con SMIL 1.0 player.
  2. Se il tag non aveva figli in SMIL 1,0 e in una versione futura invece può avere dei figlie, lo skip-content controlla se il contenuto può essere ignorato da SMIL 1.0 player oppure da una errore sintattico.

Il test effettuato è quello di saltare l'istruzione in base alle due modalità sopra.

Se il valore di skip-content e

  • vero: uno dei casi si è verificato e il contenuto dell'elemento viene ignorato
  • falso: il contenuto dell'elemento viene processato.

Per defoult e settato a vero.

 

 

Regole di estensione di SMIL 1.0

  • Tutti i nuovi elementi devono avere l'attributo "skip-content"
  • Le estensioni ad uso privato devono usale la sintassi di "XML namespace specification".

 

 

Appendice B

CSS2 (Cascading Style Shetts level 2)

E' un linguaggio che permette di costruire stili per documenti strutturati (documenti HTML).

Attraverso la separazione del modello di stile dal contenuto dei documenti il CSS2 semplifica la creazione e il mantenimento di siti.

Il CSS2 è costruito sul CSS1.

CSS2 supporta stili per i media cosi che gli utenti possono costruire su misura le presentazioni dei loro documenti per browser, stampanti ecc. Supporta anche metodi per font scaricabili, layout di tabelle, contatori automatici e tutto quelle proprietà relative all'interfaccia dell'utente.

Di seguito sono elencati i valori definiti dal CC2 per le proprietà "display" e "position" validi in SMIL basic layout.

a {display:block}

anchor {display:block}

animation {display: block; position: absolute}

body {display: block}

head {display: none}

img {display: block; position: absolute}

layout {display: none}

meta {display: none}

par {display: block}

region {display: none}

ref {display: block; position: absolute}

root-layout {display: none}

seq {display: block}

smil {display: block}

switch {display:block}

text {display: block; position: absolute}

textstream {display: block; position: absolute}

video {display: block; position: absolute}

 

 

Esempio: What I did last summer

<!-- webtech.smi source code listing. ©1998 Larry Bouthillier -->
<smil>
<head>
<layout>
<root-layout height="425" width="625" background-color="black"/>
<region id="title" left="5" top="150" width="400" height="200" z-index="1"/>
<region id="full" left="0" top="0" height="425" width="450" background-color="#602030"/>
<region id="video" left="260" top="240" height="120" width="160" z-index="2"/>
<region id="toc" left="450" top="0" height="425" width="175"/>
</layout>
</head>

<body>
<par>
<text src="
<A HREF="toc_rt_source.html">toc.rt</A>" region="toc"/>
<seq>
<!-- This img tag displays the title screen -->
<text src="
<A HREF="title_rt_source.html">title.rt</A>" type="text/html" region="title" dur="20s"/>
<!-- This section displays the interactive map with an audio soundtrack -->
<par>
<audio src="map_narration.rm"/>
<img src="
<A HREF="map_rp_source.html">map.rp</A>" region="full" fill="freeze"/>
</par>
<!-- This section contains the video-annotated slideshow -->
<par>
<switch>
<img src="
<A HREF="slideshow_rp_source.html">slideshow.rp</A>" region="full" fill="freeze" system-bitrate="45000"/>
<img src="
<A HREF="slideshow_low_rp_source.html">slideshow_low.rp</A>" region="full" fill="freeze" system-bitrate="20000"/>
</switch>
<seq>
<video src="video_narration_20.rm" region="video" dur="27s"/>
<audio src="video_narration_audio_only.rm" clip-begin="27s" dur="53s"/>
<video src="video_narration_20.rm" clip-begin="80s" region="video"/>
</seq>
</par>
</seq>
</par>

</body>

</smil>