Cette section définit les modules d'objet média de SMIL. Ceux-ci sont composés d'un module de base BasicMedia et de cinq modules lui fournissant des fonctionnalités additionnelles : les modules MediaClipping, MediaClipMarkers, MediaParam, MediaAccessibility et MediaDescription. Ces modules contiennent les éléments et attributs nécessaires à la description des objets médias. De plus, un élément BrushMedia est fourni et peut être utilisé comme un objet média. Grâce à la définition de ces éléments et attributs, les concepteurs d'autres langages de balisage peuvent réutiliser le module de média SMIL lorsqu'ils ont besoin d'inclure des objets médias dans leur langage.
Les changements, tout en respectant les caractéristiques des objets de SMIL 1.0, apportent les améliorations recommendées par le groupe de travail. Les différences sont détaillées dans les sections « Annexe A » et « Annexe B ».
Ce module définit les fonctionnalités de base d'un lecteur SMIL. Les fonctionnalités restent très proches de celles définies dans les spécifications de l'objet média de SMIL 1.0.
Les éléments de l'objet média permettent l'insertion d'objets médias dans une présentation SMIL. Les objets médias sont insérés par référence (via un URI). Les éléments suivants de l'objet média sont définis dans cette section :
Tous ces éléments d'objet média sont sémantiquement identiques. Lorsqu'un objet média est joué, le lecteur ne doit pas déduire son type exact du nom de l'élément de cet objet média. Il doit s'appuyer sur d'autres sources pour le type, comme par exemple l'information de typage contenue dans l'attribut type, ou l'information de typage provenant d'un serveur ou d'un système d'exploitation.
Quoiqu'il en soit les auteurs doivent s'assurer que le nom de l'élément rappelle le groupe dans lequel un objet média est placé (animation, audio, img, video, text ou textstream). Ceci permet d'augmenter la lisibilité des documents SMIL. En cas de doute sur le groupe d'appartenance d'un objet média, les auteurs doivent utiliser l'élément générique ref.
L'élément animation défini ici ne doit pas être confondu avec les éléments définis dans « Les modules d'animation de SMIL 2.0 ». L'élément animation défini dans ce module est utilisé pour insérer une animation ( tel qu'un graphique vectoriel animé) par référence. Ceci est différent des éléments définis dans les modules d'animation qui fournissent une syntaxe en-ligne permettant l'animation des attributs et propriétés d'autres éléments.
Les ancres et les liens peuvent être rattachés à des objets média visuels.
Les langages implémentant le module BasicMedia de SMIL doivent définir les attributs pouvant être attachés aux éléments d'objet média. Dans tous les langages implémentant le module BasicMedia de SMIL, les éléments d'objet média peuvent avoir les attributs suivants :
Lorsque l'objet référencé par l'URL est disponible dans plusieurs formats de données, les implémentations DOIVENT s'appuyer sur la valeur de l'attribut type pour déterminer le format à utiliser. Par exemple sur un serveur implémentant la négociation de contenu HTTP, le client doit s'appuyer sur la valeur de l'attribut type pour déterminer l'ordre des préférences dans la négociation.
Pour les protocoles non-énumérés dans cette spécification, les implémentations doivent suivre les règles suivantes : lorsqu'un objet média est inclus dans un fichier média et que celui-ci est fourni tel quel au client SMIL via un protocole conçu pour fournir des fichiers entiers, la valeur de l'attribut type doit être prioritaire sur les autres sources de typage du média. Pour les protocoles délivrant le média dans un mode dépendant du média, comme ceux délivrant les médias en utilisant ou en s'appuyant sur un type de média spécifique, l'utilisation de l'attribut type n'est pas décrite dans cette spécification.
Contenu de l'élément
Les langages utilisant le module BasicMedia de SMIL doivent définir le jeu complet des éléments qui sont suceptibles d'être les enfants d'éléments d'objet média. Pour l'instant, il n'y a pas d'enfant d'objet média qui soit requis dans le module BasicMedia, mais au-delà de cette recommendation, les langages utilisant le module BasicMedia peuvent imposer des spécifications.
Si l'implémentation gère les fonctionnalités de XMLBase [XMLBase] , les valeurs des attributs src et longdesc des éléments d'objet média doivent être interprétés dans le contexte du préfixe d'URI XMLBase concerné.
Cette section définit les éléments et attributs du module MediaParam de SMIL. Les langages implémentant les éléments et attributs de ce module doivent définir tous les éléments et attributs définis ci-dessous, ainsi que tous ceux du module BasicMedia.
Les éléments param spécifient un ensemble de valeurs qui peuvent être nécessaires à un objet média lors de sa lecture. Un nombre quelconque d'éléments param peuvent se trouver dans le contenu d'un élément d'objet média. Ceux-ci peuvent se trouver dans n'importe quel ordre, mais doivent être placés en tête du contenu de l'élément d'objet média qui les contient.
La syntaxe des noms et valeurs est sensée être comprise par l'implémentation de l'objet. Ce document ne spécifie pas comment les agents utilisateurs doivent comprendre les couples nom/valeur, pas plus que la façon dont doivent être interprétés les paramètres apparaissant deux fois.
Exemple
<ref src="http://www.example.com/herbert.face"> <param name="mood" value="surly" valuetype="data"/> <param name="accessories" value="baseball-cap,nose-ring" valuetype="data"/> </ref>
En plus des attributs des éléments définis dans le module BasicMedia, les éléments d'objet média peuvent avoir les attributs et extensions d'attributs définis ci-dessous. La prise en charge de ceux-ci est facultative dans le profil de langage.
erase="whenDone" est la valeur par défaut. Lorsque celle-ci est spécifiée (ou induite), le média est retiré à la fin de la temporisation qui lui a été appliquée.
erase="never" sert à conserver le média dans son dernier état d'affichage jusqu'à ce que l'aire d'affichage soit réutilisée (ou si l'aire d'affichage est déjà utilisée par un autre média). Un profil qui intègre cet élément doit définir précisément ce qui est signifié par « aire d'affichage » et, en plus, définir les interactions. Les liens hypertextes intrinsèques (par exemple, Flash, HTML, etc.) et les liens hypertextes explicites (par exemple, area, a) restent actifs aussi longtemps que les hyperliens sont affichés. Si une temporisation est ré-affectée à un élément, l'effet de erase=never est effacé. Par exemple, lorsqu'un élément est redémarré conformément au module de temporisation et de synchronisation de SMIL, l'élément est effacé juste avant d'être relancé.
Exemple :
<par> <seq> <par> <img src="image1.jpg" region="foo1" fill="freeze" erase="never" .../> <audio src="audio1.au"/> </par> <par> <img src="image2.jpg" region="foo2" fill="freeze" erase="never" .../> <audio src="audio2.au"/> </par> ... <par> <img src="imageN.jpg" region="fooN" fill="freeze" erase="never" .../> <audio src="audioN.au"/> </par> </seq> </par>
Dans cet exemple, les images sont successivement affichées et gardées à l'écran jusqu'à la fin de la présentation.
Valeurs :
Prenons comme exemple l'utilisation d'un GIF animé dont la valeur intrinsèque de répétition est infinie. L'application de mediaRepeat="strip" permet à l'auteur de supprimer la valeur de répétition intrinsèque d'un GIF animé, pour chaque appel du GIF, ce qui permet de ne jouer le GIF qu'une seule fois, sans considération pour la valeur de répétition définie dans le GIF.
Lorsque l'attribut mediaRepeat est utilisé en association avec les attributs du module de temporisation et de synchronisation de SMIL 2.0, cet attribut est pris en compte en premier, ce qui permet ainsi de contrôler le nombre de répétitions avec les attributs du module de temporisation et de synchronisation de SMIL, tels que repeatCount et repeatDur.
Valeurs :
Toute implémentation intégrant l'attribut erase doit définir ce que signifie « aire d'affichage » et préciser la définition des interactions. Voir la définition de erase pour plus de détails.
Les utilisations qui sont gérées par les attributs type et valuetype avec l'élément param doivent être spécifiées par le profil d'intégration. Si le profil ne les spécifie pas, les attributs type et valuetype seront ignorés dans ce profil.
Cette section décrit les attributs constituant le module MediaClipping de SMIL. Les implémentations utilisant le module MediaClipping doivent implémenter les attributs définis ci-dessous ainsi que le module BasicMedia.
Clip-value-MediaClipping ::= [ Metric "=" ] ( Clock-val | Smpte-val ) Metric ::= Smpte-type | "npt" Smpte-type ::= "smpte" | "smpte-30-drop" | "smpte-25" Smpte-val ::= Hours ":" Minutes ":" Seconds [ ":" Frames [ "." Subframes ]] Hours ::= Digit+ /* voir XML 1.0 pour la définition de 'Digit' */ Minutes ::= Digit Digit; dans un intervalle de 00 à 59 Seconds ::= Digit Digit; dans un intervalle de 00 à 59 Frames ::= Digit Digit; smpte intervalle = 00-29, smpte-30-drop intervalle = 00-29, smpte-25 intervalle = 00-24 Subframes ::= Digit Digit; smpte intervalle = 00-01, smpte-30-drop intervalle = 00-01, smpte-25 intervalle = 00-01
La valeur de cet attribut est constituée d'un spécifiant métrique, suivi d'une valeur de temps dont la syntaxe et la sémantique dépendent du spécifiant métrique. Les formats suivants sont autorisés :
La valeur de temps a le format suivant :heures:minutes:secondes:images:sous-images.
Si la valeur de la sous-image est de 0, elle peut être omise.
Les sous-images sont mesurées en
centièmes d'image.
Exemple :
clipBegin="smpte=10:12:33:20"
clipBegin="npt=123.45s"
clipBegin="npt=12:05:35.3"
Si aucun spécifiant métrique n'est donné, alors la valeur "npt=" est prise par défaut.
Lors d'une utilisation en association avec les attributs du module de temporisation de SMIL, cet attribut est pris en compte avant tous les attributs de ce module.
Afin de permettre la compatibilité avec SMIL 1.0, l'attribut clipBegin peut également s'écrire clip-begin. Les logiciels gérant les profils de langage SMIL 2.0 doivent être capables de gérer les deux terminologies, alors que ceux ne gérant que le module MediaClipping n'ont besoin de prendre en charge que clipBegin. Si un élément comporte à la fois l'attribut clipBegin et l'attribut clip-begin, alors clipBegin est prioritaire sur clip-begin.
Exemple :
<audio src="radio.wav" clip-begin="5s" clipBegin="10s" />
La séquence débute à la seconde 10 du morceau et non pas à la seconde 5 car l'attribut clip-begin est ignoré. Une implémentation ne gérant que SMIL 1.0 ferait démarrer la séquence à la seconde 5, car clipBegin ne serait pas reconnu. Voir « Les changements survenus sur les attributs de l'objet média de SMIL 1.0 » pour plus de détails sur le sujet.
Voir « Les changements survenus sur les attributs de l'objet média de SMIL 1.0 » pour plus de détails sur le sujet.
Cette section définit les extensions d'attributs constituant le module MediaClipMarkers de SMIL. Les langages implémentant ce module doivent implémenter tous ses éléments et attributs ainsi que les modules BasicMedia et MediaClipping.
Clip-value-MediaClipMarkers ::= Clip-value-MediaClipping |
"marker" "=" URI-reference
/* "URI-reference" est définie dans [URI] */
Exemple : Supposons qu'une émission de radio enregistrée soit composée d'une alternance de chansons et d'annonces du diskjockey. Le format audio gère les points de montage marqués et le début de chaque chanson ou annonce de numéro X sont marqués respectivement songX et djX. Pour extraire la première chanson en utilisant la métrique de "marker", l'élément de média audio suivant peut être utilisé :
<audio clipBegin="marker=#song1" clipEnd="marker=#dj1" />
Cette section définit les éléments et attributs constituant le module BrushMedia de SMIL. Les langages implémentant ce module doivent implémenter tous les éléments et attributs décrits ci-dessous.
L'élément brush est un élément d'objet média mineur permettant à l'auteur d'afficher une couleur pleine ou un autre motif à la place d'un objet média. Ainsi tous les attributs associés aux objets médias peuvent aussi être appliqués à brush. Comme toutes les informations sur l'objet média sont présententes dans les attributs de l'élément lui-même, l'attribut src est ignoré et donc peut être omis.
Les profils incluant le module BrushMedia doivent fournir une sémantique pour l'utilisation de valeur inherit de l'attribut color dans l'élément brush. La valeur inherit étant dénuée de sens dans certains contextes, un profil peut donc interdire l'utilisation de cette valeur.
Cette section définit les éléments et attributs constituant le module MediaAccessibility de SMIL. Les langages implémentant ce module doivent implémenter tous les éléments et atributs décrits ci-dessous ainsi que le module MediaDescription.
Il est fortement recommendé de toujours avoir un attribut "alt" pour les objets médias, celui-ci contenant une très courte description de l'objet média. Les éditeurs SMIL devraient toujours vérifier que tout élément possède cet attribut.
La valeur de cet attribut est une chaîne de caractères CDATA.
Les éléments contenant les attributs alt, title ou longdesc sont lus par les technologies d'assistance selon les règles suivantes :
Exemple
<par> <video id="carvideo" src="car.rm" region="videoregion" title="Car video" alt="Illustration of relativistic time dilation and length contraction." longdesc="carvideodesc.html" readIndex="3"/> <audio id="caraudio" src="caraudio.rm" region="videoregion" title="Car presentation voiceover" begin="bar.begin"/> <animation id="cardiagram" src="car.svg" region="animregion" title="Diagram of the car" readIndex="2"/> <img id="scvad" src="scv.png" region="videoregion" title="Advertisement for Sugar Coated Vegetables" readIndex="1"/> </par>
Dans cet exemple, un périphérique d'assistance affichant les titres devrait présenter le titre de l'élément "scvad" en premier (valeur readIndex de "1" la plus basse), suivi du titre de "cardiagram", suivi du titre de "carvideo", et enfin du titre de "caraudio" (valeur readIndex implicite de "0").
Cette section définit les éléments et attributs du module MediaDescription de SMIL. Les langages implémentant ce module doivent implémenter tous les éléments et attributs décrits ci-dessous.
Cet attribut est déprécié en faveur de l'utilisation des balises de métadonnées en RDF. Par exemple, cet attribut correspond bien à l'attribut "description", défini par le Dublin Core Metadata Initiative [DC] .
La valeur de cet attribut est une chaîne de caractères CDATA.
La valeur de cet attribut est une chaîne de caractères CDATA.
L'attribut xml:lang diffère de system-language sur un point très important. L'attribut xml:lang fournit une information sur le contenu de l'élément indépendemment de ce que va en faire l'implémentation, alors que system-language est un attribut de test qui associe un comportement spécifique à la valeur de l'attribut (voir la définition de system-language dans « Les modules de contrôle de contenu de SMIL 2.0 » pour plus de détails).
Concernant les éléments clipBegin/clip-begin et clipEnd/clip-end, SMIL 2.0 apporte les changements suivants par rapport à la syntaxe définie dans SMIL 1.0 :
L'utilisation de noms d'attribut avec des tirets tels que clip-begin et clip-end pose problème lorsque l'on utilise un langage de script ou le DOM pour manipuler ces attributs. C'est pourquoi cette recommendation introduit les noms d'attribut clipBegin et clipEnd comme alternatives équivalentes aux attributs clip-begin et clip-end de SMIL 1.0. Les noms d'attribut avec tiret sont dépréciés.
Les auteurs peuvent avoir deux approches différentes pour écrire des présentations SMIL 2.0 pouvant être comprises par un programme SMIL 1.0, tout en utilisant les nouvelles syntaxes et fonctionnalités ("marker", spécifiant métrique par défaut) définies dans cette recommandation. Tout d'abord les auteurs peuvent utiliser les versions sans tiret des nouveaux attributs utilisant les nouvelles fonctionnalités , puis ajouter les attributs de rognage SMIL 1.0 correspondants plus loin dans le texte.
Exemple :
<audio src="radio.wav" clipBegin="marker=song1" clipEnd="marker=moderator1"
clip-begin="npt=0s" clip-end="npt=3:50" />
Les lecteurs SMIL 1.0 implémentant les règles d'extensibilité recommandées de SMIL 1.0 [SMIL10] ignoreront les attributs utilisant la nouvelle fonctionnalité car elle ne fait pas partie de SMIL 1.0. De leur côté, les lecteurs SMIL 2.0 ignoreront les attributs de rognage avec une syntaxe SMIL 1.0, car ils surviendront plus tard dans le texte du document. errata-E05
La seconde approche consiste à suivre les étapes suivantes :
Exemple :
<smil xmlns:smil2="http://www.w3.org/2001/SMIL20/Language"> ... <switch> <audio src="radio.wav" clipBegin="marker=song1" clipEnd="marker=moderator1" system-required="smil2" /> <audio src="radio.wav" clip-begin="npt=0s" clip-end="npt=3:50" /> </switch>
SMIL 1.0 n'offrait que anchor comme élément enfant d'un élément média. En plus de anchor (maintenant défini dans le module de gestion des liens), l'élément param est maintenant permis comme élément enfant d'un objet média SMIL. De plus, le langage hôte peut définir d'autres nouveaux enfants.
Un nouvel élément param fournit un mécanisme général pour ajouter des attributs spécifiques aux objets médias.
Un nouvel élément brush permet la spécification d'un objet média de couleur pleine sans média associé.