Brevet FR2907574A1 — publié le 20080425

Procédé de description de scène multimédia comprenant au moins une zone de rognage rectangulaire alignée sur des frontières de pixels 1. Domaine de l'invention Le domaine de l'invention concerne la présentation de contenus multimédia sur un terminal de radiocommunication, par exemple un terminal de radiocommunication mobile, un PDA (en anglais Personal Digital Assistant , en français assistant numérique personnel ), ordinateur portable, etc. Plus précisément, l'invention concerne la restitution sur un tel terminal de contenus se présentant sous la forme de scènes multimédias composées d'une pluralité d'objets multimédia, par exemple des objets graphiques, sonores, etc. et bénéficiant ou pas de fonctionnalités d'interaction. L'invention s'applique notamment, mais non exclusivement à des descriptions de scènes au format SVG (pour Scalable Vector Graphics en anglais ou graphiques vectoriels adaptables en français), ou de format basé sur SVG comme MPEG LASeR. On rappelle ici qu'on entend par contenu multimédia un ensemble composé d'au moins une scène graphique animée, encore appelée scène multimédia, et d'une série de commandes permettant de faire évoluer cette scène d'un état à un autre. Une scène multimédia correspond notamment à l'agencement d'un ensemble d'objets graphiques dans le temps et dans l'espace, avec lesquels l'utilisateur du terminal de radiocommunication peut interagir. L'invention trouve des applications dans tous les domaines nécessitant une représentation des signaux sous forme d'un agencement spatio-temporel d'objets graphiques, avec interactivité. 2. Art antérieur Le format SVG 1.1 Full définit une fonctionnalité de rognage (en anglais, clipping ) du rendu d'un sous-arbre de la scène selon une forme quelconque au moyen d'un élément clipPath qui définit la forme du rognage et d'un attribut clip-path placé sur la tête du sous-arbre à rogner et qui référence l'élément qui 2907574 2 définit la forme du rognage. Le contenu de l'élément clipPath est une liste de formes graphiques comme des éléments rect , circle , etc. La syntaxe de l'attribut clip-path est une URL ( uniform resource locator , en français localisateur uniforme de ressource ) qui pointe vers l'élément clipPath . 5 Cette fonctionnalité est très chère à implémenter car elle est très générale. Une implémentation est forcée d'utiliser beaucoup de mémoire et de faire le rendu en plusieurs étapes. Pourtant, la quasi-totalité des bibliothèques de rendu graphique possèdent une fonction de rognage rectangulaire sur frontière entre pixels, dont l'utilisation est très économe en ressources, mais cette dite fonction n'est pas 10 utilisable pour implémenter le rognage à la SVG 1.1 Full de manière conforme à la norme. Il n'existe pas non plus de profil, c'est-à-dire de sous ensemble ou de restriction, de la fonction de rognage de la norme SVG 1.1 Full, qui puisse être implémentée avec les dites fonctions de rognage rectangulaire sur frontière entre 15 pixels : - Il est possible de restreindre l'élément clipPath à ne contenir qu'un seul rectangle. - Il est possible de restreindre les transformations sur le contenu de l'élément clipPath à translation et mise à l'échelle seulement. 20 - Par contre, il n'est pas possible de signaler que la zone de rognage doit être alignée sur des frontières de pixels, ce qui cause un défaut d'interopérabilité entre implémentations ayant fait des choix différents. Des tentatives de simplifications de la norme SVG ont été faites, par exemple en ne permettant qu'un seul rectangle dans clipPath et en ignorant 25 certaines transformations sur ce rectangle de rognage. Dans un mode de simplification connu, le rognage est fait sur un rectangle obtenu par calcul du rectangle englobant du rectangle de rognage après application des transformations. Cette méthode est très problématique, car la description ne contient aucun signal particulier, et donc selon les terminaux, le rendu sera 30 différent : dans un terminal qui implémente la simplification, le rendu sera fait 2907574 3 avec une zone de rognage plus grande et parallèle aux axes, alors que sur un terminal plus puissant implémentant la fonction standard, le rectangle de rognage sera plus petit et transformé. Il n'y a donc pas d'interopérabilité possible entre différents terminaux implémentant entre différents profils du standard. 5 Le standard LASeR, et avant lui le standard BIFS, propose une fonction de rognage très simple et efficace, qui peut être implémentée naturellement avec la quasi-totalité des bibliothèques de rendu graphique, mais qui n'est pas compatible avec le mécanisme de rognage défini par SVG 1.1 Full, à savoir la fonctionnalité de rognage (en anglais, clipping ) du rendu d'un sous-arbre de la scène selon 10 une forme quelconque au moyen d'un élément qui définit la forme du rognage et d'un attribut placé en tête du sous-arbre à rogner et qui référence l'élément qui définit la forme du rognage. Au contraire, LASeR définit un élément lsr:rectClip qui est un élément groupant et applique un rognage rectangulaire aligné sur frontière entre pixels et non sensible aux rotations et déformations non 15 isométriques. Malgré son efficacité, la méthode LASeR ne répond pas aux critères d'application de l'invention. Le format SVG Tiny 1.2 définit, pour l'élément video seulement, un attribut transformBehavior , qui permet l'alignement des pixels de la vidéo sur les pixels de l'écran. Toutefois, cet attribut transformBehavior signale des 20 modes non géométriques qui changent aussi l'origine du système de coordonnées locales pour que la vidéo soit centrée alors que tous les autres objets graphiques, ainsi que la vidéo telle que rendue dans le mode géométrique, sont dessinés à partir de leur coin en haut et à gauche. De même, cet attribut transformBehavior signale des modes de rotation par quart de tour qui ne sont 25 pas pertinents dans le contexte du rognage. Il n'est donc pas approprié de transposer cet attribut transformBehavior tel qu'il est défini, pour compléter la fonction de rognage de SVG 1.1 Full. 3. Objectifs de l'invention L'invention a notamment pour objectif de pallier ces inconvénients de l'art 30 antérieur. 2907574 4 Plus précisément, un des objectifs de l'invention est de disposer un mécanisme permettant d'introduire une fonction de rognage rectangulaire sur frontière entre pixels dans un contexte de description de scène multimédia comprenant déjà une fonctionnalité de rognage du rendu d'un sous-arbre de la 5 scène selon une forme quelconque au moyen d'un élément qui définit la forme du rognage et d'un attribut placé en tête du sous-arbre à rogner et qui référence l'élément qui définit la forme du rognage. Un autre objectif de l'invention est de permettre l'utilisation de la quasi-totalité des bibliothèques de rendu graphique qui possèdent une fonction de 10 rognage rectangulaire sur frontière entre pixels, dont l'utilisation est très économe en ressources, plutôt qu'une technique générique de rognage par une forme quelconque, éventuellement avec anti-aliasing, qui couterait beaucoup plus cher en ressources et ne serait pas adaptée aux terminaux disposant de peu de ressources, mais dont l'utilisation est rendue nécessaire par la définition actuelle 15 de la fonction de rognage de SVG 1.1 Full. Un autre objectif de l'invention est de rester le plus proche possible de la syntaxe actuelle de SVG 1.1 Full pour réduire autant que possible le coût d'utilisation de l'invention par des concepteurs connaissant l'ancien format. Un autre objectif de l'invention est de définir un mécanisme permettant 20 une pleine interopérabilité des implémentations en définissant précisément le comportement de rendu d'une manière compatible avec tous les profils existants. 4. Exposé de l'invention Ces objectifs, ainsi que d'autres qui apparaîtront par la suite, sont atteints selon l'invention à l'aide d'un procédé de description d'une scène multimedia 25 comportant une fonctionnalité de rognage du rendu d'un sous-arbre de la scène selon une forme quelconque au moyen d'un élément qui définit la forme du rognage et d'un attribut placé en tête du sous-arbre à rogner et qui référence l'élément qui définit la forme du rognage, caractérisé en ce que le rognage peut être limité à un rectangle dont les bords sont parallèles aux axes de coordonnées et 30 sont alignés sur une frontière entre pixels. 2907574 5 Préférentiellement, le fait que le rognage soit limité à un rectangle dont les bords sont parallèles aux axes de coordonnées et sont alignés sur une frontière entre pixels est signalé au moyen d'un indicateur d'alignement. Avantageusement, ledit indicateur d'alignement peut prendre la forme 5 d'un attribut d'alignement dont deux valeurs possibles signifient pas d'alignement et alignement sur pixels . De manière optionnelle, ledit attribut d'alignement peut être d'un type générique, c'est-à-dire réutilisable sur d'autres éléments susceptibles d'être alignés sur des frontières de pixels. 10 Selon divers modes d'application de l'invention, ledit attribut d'alignement est placé : - sur l'élément qui définit la forme du rognage ; - sur la forme de rognage qui est incluse dans l'élément qui définit la forme du rognage ; 15 - sur le sous-arbre à rogner ; - ou même peut être fusionné avec celui qui référence l'élément qui définit la forme du rognage. Dans un autre mode d'application de l'invention, l'élément qui définit la forme du rognage est d'un type différent selon que le rognage est générique ou 20 limité à un rectangle dont les bords sont parallèles aux axes de coordonnées et sont alignés sur une frontière entre pixels. Dans encore un autre mode d'application de l'invention, la forme qui est incluse dans l'élément qui définit la forme du rognage est d'un type différent selon que le rognage est générique ou limité à un rectangle dont les bords sont 25 parallèles aux axes de coordonnées et sont alignés sur une frontière entre pixels. Dans encore un autre mode d'application de l'invention, l'attribut placé en tête du sous-arbre à rogner et qui référence l'élément qui définit la forme du rognage est d'une syntaxe différente selon que le rognage est générique ou limité à un rectangle dont les bords sont parallèles aux axes de coordonnées et sont 30 alignés sur une frontière entre pixels. 2907574 6 L'invention concerne également un serveur destiné à transmettre une scène multimédia, apte à mettre en oeuvre le procédé de description d'une scène multimédia décrit précédemment. Enfin, l'invention concerne un produit programme d'ordinateur 5 téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, comprenant des instructions de code de programme pour la mise en oeuvre du procédé de description d'une scène multimédia tel que décrit précédemment. 5. Description détaillé de modes de réalisation de l'invention 10 Plusieurs exemples de mode de réalisation de l'invention sont donnés ici. Tous ces modes sont décrits par rapport à la syntaxe SVG 1.1 Full pour ce qui concerne la fonction de rognage selon une forme quelconque. Tous les modes présentés, les noms d'éléments, d'attributs et de valeurs possibles ne sont pas limitatifs. 15 Pour clarifier les descriptions qui suivent, voici l'analyse d'un exemple de syntaxe de fragment de scène SVG mettant en jeu un rognage : 20 Dans cet exemple, l'élément clipPath définit la forme à rogner. Cet élément clipPath possède un identificateur (id) de, valeur `clipl'. La forme à 25 rogner est définie par le premier élément rect qui se trouve contenu dans l'élément clipPath . Le rectangle de rognage est donc une zone située entre x='30' et x='30' et entre y='-50' et y='50'. Le second fragment constitue le sous-arbre à rogner, et est constitué d'un second rectangle. Ce rectangle rouge est placé entre x='20' et x='460', et entre y='20' et y='80'. L'attribut clip-path 30 placé sur ce second rectangle applique la zone de rognage d'identificateur `clip l'. L'élément clipPath et son contenu rect ne sont pas rendus. Le second 2907574 7 rectangle va être rendu avec rognage, et la zone dessinée en rouge est située entre x='20' et x='30', et entre y=`20' et y='50'. Dans un premier mode d'implémentation, l'indicateur d'alignement peut être placé sur l'élément clipPath . L'attribut est nommé align et peut 5 prendre les valeurs `none' et `devicePixels'. Dans ce mode, seul l'élément clipPath peut être aligné. L'intérêt d'un attribut spécifique comme cette définition de align est qu'il est parfaitement adapté à la situation, par opposition à une réutilisation de transformBehavior, décrite plus bas. Un exemple de syntaxe suit, sous la forme de fragments de scène : 10 4clipPath> Dans une variante du premier mode d'implémentation, l'indicateur d'alignement réutilise l'attribut transformBehavior introduit dans le format SVGT1.2. L'indicateur d'alignement est placé sur l'élément clipPath . Dans ce mode, seul l'élément clipPath peut être aligné. Ce mode nécessite une 20 modification de l'attribut transformBehavior pour l'adapter à la situation précise de rognage : suppression des valeurs pinned90, pinnedl80, et pinned270 non pertinents et suppression du centrage de l'objet hôte de l'attribut. Un exemple de syntaxe suit, sous la forme de fragments de scène : 25 30 Dans un second mode d'implémentation, l'indicateur d'alignement peut être placé sur l'élément rect placé dans l'élément clipPath . L'attribut est nommé align et peut prendre les valeurs `none' et `devicePixels'. Dans ce mode, 2907574 8 l'élément rect peut être signalé comme aligné, ce qui peut avoir d'autres usages en dehors de la définition du rognage. L'intérêt d'un attribut spécifique comme cette définition de align est qu'il est parfaitement adapté à la situation, par opposition à une réutilisation de transformBehavior, décrite plus bas. 5 Un exemple de syntaxe suit, sous la forme de fragments de scène : 10 Dans une variante du second mode d'implémentation, l'indicateur d'alignement réutilise l'attribut transformBehavior introduit dans le format SVGT1.2. L'indicateur d'alignement est placé sur un élément rect contenu 15 dans l'élément clipPath . Ce mode nécessite une modification de l'attribut transformBehavior pour l'adapter à la situation précise de rognage : suppression des valeurs pinned90, pinned180, et pinned270 non pertinents et suppression du centrage de l'objet hôte de l'attribut. Un exemple de syntaxe suit, sous la forme de fragments de scène : 20 25 Dans un troisième mode d'implémentation, l'indicateur d'alignement peut être placé sur l'élément rect qui est dessiné et qui constitue ici le sous-arbre dont le rendu est rogné. L'attribut est nommé align et peut prendre les valeurs 30 `none' et `devicePixels'. Dans ce mode, seule la combinaison de l'attribut clippath et de l'attribut align sur le sous-arbre à rogner déclenche l'alignement du rognage sur frontière entre pixels. L'intérêt d'un attribut spécifique comme 2907574 9 cette définition de align est qu'il est parfaitement adapté à la situation, par opposition à une réutilisation de transformBehavior, décrite plus bas. Un exemple de syntaxe suit, sous la forme de fragments de scène : 5 4clipPath> 10 Dans une première variante du troisième mode d'implémentation, l'indicateur d'alignement réutilise l'attribut transformBehavior introduit dans le format SVGT1.2. L'indicateur d'alignement est placé sur le sous-arbre à rogner conjointement avec l'attribut clip-path . Ce mode nécessite une modification de l'attribut transformBehavior pour l'adapter à la situation précise de rognage : 15 suppression des valeurs pinned90, pinned180, et pinned270 non pertinents et suppression du centrage de l'objet hôte de l'attribut. Un exemple de syntaxe suit, sous la forme de fragments de scène : 20 4clipPath> Dans une autre variante du troisième mode d'implémentation, les attributs 25 clip-path et align du mode précédent sont fusionnés en un attribut pixelaligned-clip-path . L'intérêt d'un attribut spécifique pixel-aligned-clip-path est la grande facilité à implémenter la variante de rognage avec alignement sur frontière entre pixels. Par contre, on peut y voir une moindre compatibilité avec la syntaxe SVG 1.1 Full d'origine. 30 Un exemple de syntaxe suit, sous la forme de fragments de scène : 2907574 5 Dans un quatrième mode d'implémentation, l'indication d'alignement peut être mise en oeuvre sous la forme de l'utilisation d'un nouveau type d'élément alignedClipPath , comme élément définissant la forme de rognage, pour dénoter un rognage aligné sur frontière entre pixels. Ce mode a l'avantage de ne pas définir de nouvel attribut, d'avoir une conception très lisible et évidente pour 10 l'auteur, et d'être très facile à implémenter pour ce qui est de la discrimination entre rognage aligné ou non. Par contre, on peut y voir une moindre compatibilité avec la syntaxe SVG 1.1 Full d'origine. Un exemple de syntaxe suit, sous la forme de fragments de scène : 15 20 Dans un cinquième mode d'implémentation, l'indication d'alignement peut être mise en oeuvre sous la forme de l'utilisation d'un nouveau type d'élément alignedRect , comme élément contenu dans l'élément définissant la forme de rognage, pour dénoter un rognage aligné sur frontière entre pixels. Ce mode a l'avantage de ne pas définir de nouvel attribut, d'avoir une conception très 25 lisible et évidente pour l'auteur, et d'être très facile à implémenter pour ce qui est de la discrimination entre rognage aligné ou non. Comme dans le second mode d'implémentation, l'élément alignedRect pourrait être utilisé dans d'autres situations non liées au rognage. Par contre, on peut y voir une moindre compatibilité avec la syntaxe SVG 1.1 Full d'origine. 30 Un exemple de syntaxe suit, sous la forme de fragments de scène : 10 2907574 5 Dans un sixième mode d'implémentation, l'indication d'alignement peut être mise en oeuvre sous la forme de l'utilisation d'une nouvelle syntaxe pour l'attribut clip-path pour dénoter un rognage aligné sur frontière entre pixels. Ce mode a l'avantage de ne pas définir de nouvel attribut ou de nouvel élément, et d'être très facile à implémenter pour ce qui est de la discrimination entre rognage 10 aligné ou non. Par contre, on peut y voir une moindre compatibilité avec la syntaxe SVG 1.1 Full d'origine. Un exemple de syntaxe suit, sous la forme de fragments de scène : 15 11 REVENDICATIONS 1. Procédé de description d'une scène multimédia comportant une fonctionnalité de rognage du rendu d'un sous-arbre de la scène selon une forme quelconque au moyen d'un élément qui définit la forme du rognage et d'un attribut du sous-arbre à rogner qui référence l'élément qui définit la forme du rognage, caractérisé en ce que ledit rognage peut être limité à un rectangle dont les bords sont parallèles aux axes de coordonnées de l'espace dudit rendu et sont alignés sur une frontière entre pixels. 2. Procédé selon la revendication 1 caractérisé en ce que ledit rognage limité à un rectangle dont les bords sont parallèles aux axes de coordonnées et sont alignés sur une frontière entre pixels est signalé au moyen d'un indicateur d'alignement. 3. Procédé selon la revendication 2 caractérisé en ce que ledit indicateur d'alignement prend la forme d'un attribut d'alignement dont deux valeurs possibles signifient pas d'alignement et alignement sur pixels . 4. Procédé selon la revendication 3 caractérisé en ce que ledit attribut d'alignement est d'un type générique, réutilisable sur d'autres éléments susceptibles d'être alignés sur des frontières de pixels. 5. Procédé selon l'une quelconque des revendications 3 et 4, caractérisé en ce que ledit attribut d'alignement est placé sur l'élément qui définit la forme du rognage. 6. Procédé selon l'une quelconque des revendications 3 et 4, caractérisé en ce que ledit attribut d'alignement est placé sur la forme de rognage qui est incluse dans l'élément qui définit la forme du rognage. 7. Procédé selon l'une quelconque des revendications 3 et 4, caractérisé en ce que ledit attribut d'alignement est placé sur le sous-arbre à rogner. 8. Procédé selon la revendication 7, caractérisé en ce que ledit attribut d'alignement est fusionné avec celui qui référence l'élément qui définit la forme du rognage. 9. Procédé selon la revendication 1, caractérisé en ce que l'élément qui définit 2907574 13 la forme du rognage est d'un type différent selon que le rognage est générique ou limité à un rectangle dont les bords sont parallèles aux axes de coordonnées et sont alignés sur une frontière entre pixels. 10. Procédé selon la revendication 1, caractérisé en ce que la forme du rognage 5 qui définit la forme du rognage qui est incluse dans l'élément qui définit la forme du rognage est d'un type différent selon que le rognage est générique ou limité à un rectangle dont les bords sont parallèles aux axes de coordonnées et sont alignés sur une frontière entre pixels. 11. Procédé selon la revendication 1, caractérisé en ce que l'attribut du sous- 10 arbre à rogner qui référence l'élément qui définit la forme du rognage est d'un syntaxe différente selon que le rognage est générique ou limité à un rectangle dont les bords sont parallèles aux axes de coordonnées et sont alignés sur une frontière entre pixels. 12. Serveur destiné à transmettre une scène multimédia, caractérisé en ce qu'il 15 met en oeuvre le procédé de description selon l'une quelconque des revendications là11. 13. Terminal de radiocommunications mobile destiné à recevoir et à restituer une scène multimédia, caractérisé en ce qu'il met en oeuvre des moyens de traitement d'une scène multimédia fournie par le procédé de description selon 20 l'une quelconque des revendications 1 à 11. 14. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre du procédé de description d'une scène 25 multimédia selon l'une quelconque des revendications 1 à 11.