• Aucun résultat trouvé

Représentation de mises à jour de la liste d’affichage dans le format MPEG-4 XMT-A

Pour finir, l'agrégation de la scène initiale décrite dans le Code 6.1, des mises à jour de manipulation du dictionnaire décrites dans le Code 6.2 et de celles de la liste d'affichage décrites dans le Code 6.3, aboutit à un document XMT-A décrivant un flux BIFS représentant un dessin animé vectoriel.

6.3.1.2 Résultats et problèmes

Grâce à ces techniques de représentation, et après avoir standardisé dans la norme BIFS de nouveaux outils, notamment de nouvelles primitives permettant les transformations matricielles de couleur (nœud ColorTransform) et de déformations (nœud TransformMatrix2D), nous avons pu, avec succès, réaliser un convertisseur de dessins animés Flash au format MPEG-4 BIFS.

Nous avons pu exploiter les capacités intrinsèques de streaming des flux BIFS et pour la première fois, diffuser des dessins animés au format vectoriel, tout en maintenant une synchronisation avec un flux audio, en utilisant les outils traditionnels de streaming : le format de fichier MP4, les protocoles RTSP/RTP et le serveur de streaming Darwin Streaming Server.

A la suite de cette expérience, nous nous sommes rendu compte que cette représentation ne satisfaisait pas à nos critères, notamment en compression, en consommation mémoire et en complexité surtout

Chapitre 6 – Méthodes pour la représentation efficace de scènes multimédia animées

pour les terminaux à faibles capacités. Une des optimisations que nous avons donc introduites dans cette représentation par rapport au format Flash a été l’introduction de commandes BIFS pour détruire les objets devenus inutiles (Delete). En effet, le format Flash n'est pas un format prévu pour le streaming. De ce fait, il ne permet pas une gestion fine de la mémoire utilisée par la scène. Il est bien sûr possible en analysant le fichier complet, de déterminer la durée de vie d'un objet dans le dictionnaire et de libérer la mémoire nécessaire à cet objet au moment opportun. Cependant, dans un contexte de streaming, il est nécessaire d'indiquer explicitement l'instant où un objet n'est plus nécessaire, car on ne sait pas a priori si l'objet sera utilisé dans le restant du flux et il n'est pas possible de réaliser d'analyse complète a priori. Nous verrons également dans la suite de ce chapitre que cela a un impact important sur la consommation mémoire, ce qui peut être crucial notamment sur les terminaux à faible capacité.

6.3.2 SVG

Nous nous sommes également intéressés au format SVG pour représenter les scènes animées car nous souhaitions expérimenter l'utilisation des animations SMIL et évaluer le comportement des lecteurs de contenus SVG jouant des contenus fortement animés.

6.3.2.1 Représentation SVG de dessins animés vectoriels

Nous nous sommes tout d’abord intéressés à la manière dont nous pouvions représenter les dessins animés en utilisant le modèle de document XML sans nous soucier des problématiques de streaming. Nous avons pris comme hypothèse de travail que le lecteur chargerait tout le document XML avant de lire le contenu (avec tous les inconvénients que cela comporte). Ces travaux ont été présentés à la conférence SMIL Europe 2003 [07].

Nous avons utilisé la même représentation arborescente à deux branches que précédemment. La notion de dictionnaire est une notion reconnue dans la norme SVG et est matérialisée par l’élément defs. Il permet de stocker des objets graphiques sans qu’ils soient visibles. Dans cette représentation SVG, nous avons donc défini tous les objets du dessin animé dans une branche dont la racine est un élément

defs. Pour l'autre branche, nous avons utilisé un élément groupant g dont les enfants, similairement à la solution BIFS, sont des primitives use. Un exemple de scène initiale est décrit dans le Code 6.4. <svg width="384" height="288" viewBox="0 0 384 288"

xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <defs> <g id="Forme1">…</g> … <g id="FormeN">…</g> </defs> <g> <use id="Couche1"/> <use id="Couche2"/>

Descriptions de scènes multimédia : représentations et optimisations - 118 - <use id="Couche3"/> <use id="Couche4"/> <use id="Couche5"/> </g>

Code 6.4 – Représentation d’une scène initiale de dessin animé en SVG

Nous nous intéressons ici à la problématique de représentation de l'animation sans notion de mise à jour. Nous étudierons dans la section 6.3.3 l'utilisation de mise à jour LASeR pour représenter les animations. Sans notion de mise à jour, comme nous l'avons indiqué dans le chapitre 2, la seule possibilité déclarative et standard pour effectuer ces animations est l'utilisation de primitives set de la norme SMIL.

Nous avons donc défini une représentation SVG des mises à jour de scène à l'aide des primitives set, comme le Code 6.5 le décrit8. Ces mises à jour sont ensuite concaténées dans le fichier XML à la suite de la scène initiale avec les informations temporelles indiquant leur instant d’exécution. Nous les avons regroupées dans un élément g pour faciliter la compréhension, comme le montre l’exemple. <g id="trame_1">

<set begin="0.08" xlink:href="#Couche1" attributeName="transform" to="matrix(1.5,0.0,0.0,1.5,-302.0,960.0)"/>

<set begin="0.08" xlink:href="#Couche1" attributeName="xlink:href" to="#Forme1"/>

<set begin="0.08" xlink:href="#Couche2" attributeName="transform" to="matrix(1.1249847,0.0,0.0,1.1249847,-224.0,864.0)"/>

<set begin="0.08" xlink:href="#Couche2" attributeName="xlink:href" to="#Forme2"/>

<set begin="0.08" xlink:href="#Couche3" attributeName="transform" to="matrix(1.1249847,0.0,0.0,1.1249847,74.0,102.0)"/>

<set begin="0.08" xlink:href="#Couche3" attributeName="xlink:href" to="#Forme3"/>

</g> …

<g id="trame_M">…</g> </svg>