FR 2932050 A1 20091204 FR 0853670 A 20080603 La présente invention se rapporte à un procédé et à un dispositif de transmission de données vidéo. Elle appartient au domaine général de la transmission vidéo par paquets sur un réseau entre un serveur et un client. Le protocole de transport utilisé dans un tel réseau peut par exemple être le protocole de transport en temps réel RTP (en anglais "Real-cime Transport Protocof'), bien connu de l'homme du métier. On considère un réseau non fiable, c'est-à-dire qui ne garantit ni la stabilité des conditions de transmission, ni la transmission fiable des paquets. 10 Autrement dit, des pertes de paquets peuvent se produire. La présente invention cherche à protéger les données contre les erreurs, y compris les pertes de paquets. Elle se place dans le cadre non limitatif où les données sont des données vidéo conformes à la norme H.264/AVC ou à la norme SVC (codage vidéo hiérarchique, en anglais 15 "Scalable Vidéo Coding"). Néanmoins, l'adaptation de l'invention à d'autres normes de codage vidéo telles que MPEG-4 part 2, H.263 ainsi qu'à d'autres normes de codage vidéo hiérarchique ne présente pas de difficultés. On rappelle ci-dessous quelques notions de base concernant les normes H.264 et SVC. 20 La norme SVC constitue une extension de la norme H.264 au sens où elle introduit des propriétés de codage hiérarchique ou scalabilité (en anglais "scalability"). La norme H.264 constitue l'état de l'art en termes de compression vidéo. Elle permet d'augmenter considérablement l'efficacité de la compression 25 par comparaison avec MPEG-2, MPEG-4 part 2 et H.263. En termes de technologie, la norme H.264 est fondée sur un schéma classique de codage prédictif hybride utilisant une combinaison de transformation spatiale et de compensation/estimation de mouvement, ce schéma général étant optimisé pour obtenir une meilleure efficacité de compression. 30 Plusieurs modes de codage sont disponibles pour le codage d'un macrobloc de pixels (désigné dans toute la suite par MB), dont : - INTRA ou I : le codage INTRA est un codage spatial. Le MB est indépendant de toute autre information provenant d'autres images. - INTER ou P : les MBs INTER sont le résultat d'une prédiction temporelle à partir d'une image codée précédemment. Ce type de MBs est codé sous la forme d'un vecteur de mouvement et de données résiduelles. - Bidirectionnel ou Bidir ou B : les MBs B utilisent le même principe que les MBs P dans la mesure où ils résultent également d'une prédiction temporelle. Cependant, pour les MBs B, deux régions de référence sont extraites respectivement d'une image précédente et d'une image suivante, qui sont utilisées pour la prédiction. Ce type de MBs est donc codé sous la forme de deux vecteurs de mouvement et de données résiduelles. - P_SKIP : pour les MBs P_SKIP, aucune autre donnée n'est codée dans le flux binaire que le type de MBs. Le vecteur de mouvement final d'un MB P SKIP est déduit des MBs codés environnants. - B_SKIP, B_direct_16x16 et B_direct_8x8 : aucune information de mouvement n'est transmise avec de tels MBs. Les informations sont déduites des MBs déjà codés environnants ou du vecteur de mouvement du MB situé à la même position dans l'image de référence suivante. En outre, aucune donnée résiduelle n'est codée avec les MBs B SKIP. Pendant le processus de codage, un mécanisme de sélection de mode de MB est mis en oeuvre. Lorsque le mode INTRA est sélectionné pour un MB, la prédiction INTRA consiste à prédire ce MB dans le domaine des pixels en utilisant les pixels situés à la frontière extérieure de ce MB. Une DCT est ensuite appliquée à la différence entre la prédiction et l'original et cette différence est codée. Un tel codage prédictif est également appliqué sur le vecteur de mouvement. En effet, un vecteur de mouvement dans un MB prédit temporellement est codé de façon prédictive en utilisant des vecteurs de mouvement de MBs dans le voisinage. En conséquence, la valeur absolue d'un vecteur de mouvement n'est pas codée mais remplacée par MvdlO et Mvdll qui représentent la différence entre une composante de vecteur à utiliser et sa prédiction. Chaque MB est associé à un paramètre appelé Coded block pattern spécifiant lesquels des 6 blocs 8x8 (luminance et chrominance) peuvent contenir des niveaux de coefficients de transformation non nuls. La norme SVC a ajouté à H.264 des possibilités d'adaptation sous la forme de propriétés de codage hiérarchique ou scalabilité. Trois axes de scalabilité ont été définis dans SVC : spatiale, temporelle et en qualité. La scalabilité temporelle permet de modifier la résolution temporelle d'une séquence en supprimant certaines images, la suppression tenant compte des dépendances entre images. La scalabilité spatiale consiste à insérer plusieurs résolutions dans un flux vidéo, la résolution la plus basse étant utilisée pour la prédiction des résolutions plus élevées. Une particularité de SVC est d'autoriser n'importe quel rapport de résolutions entre deux résolutions spatiales successives alors que seul un rapport de 2 était autorisé par les codecs hiérarchiques antérieurs. La scalabilité en qualité, également connue sous le nom de scalabilité SNR, prend la forme d'une scalabilité grossière ou CGS (en anglais "Coarse Grain Scalability"), d'une scalabilité moyenne ou MGS (en anglais "Medium Grain Scalability") et d'une scalabilité fine ou FGS (en anglais "Fine Grain Scalability'). Le codage SNR CGS est obtenu en utilisant les mêmes concepts que ceux de la scalabilité spatiale. La seule différence est que pour la scalabilité CGS, les opérations de suréchantillonnage de la prédiction inter-couches sont omises. La scalabilité FGS aboutit à un flux binaire qui peut être tronqué en n'importe quel point, sans empêcher le processus de décodage. Cette caractéristique est particulièrement intéressante pour adapter le débit binaire de la vidéo de façon précise. La scalabilité MGS a été définie comme intermédiaire entre CGS et FGS. Elle offre des points de décodage plus fins dans le flux binaire que CGS, mais ne permet pas une troncature en n'importe quel point comme FGS. De nombreux experts du codage et des réseaux estiment que MGS offre une granularité suffisante pour des conditions réseau réalistes. La scalabilité est fondée sur une prédiction inter-couches (en anglais "Inter-Layer Prediction" ou ILP). Plusieurs modes de codage ont été spécialement conçus pour la prédiction inter-couches dans SVC : - IntraBL ou I_BL : ce mode permet de prédire un MB dans une couche d'amélioration en fonction du MB situé à la même position dans la couche inférieure. Le MB de la couche inférieure est interpolé afin de l'ajuster (en anglais "re-scale") à la résolution de la couche d'amélioration. La différence entre le MB à coder et le MB interpolé situé à la même position est ensuite codée. - Prédiction des vecteurs de mouvement : dans ce mode, on considère que le MB de la couche d'amélioration a un mouvement proche de celui du MB de la couche inférieure. Dans ce cas, tout au plus une faible variation du vecteur de mouvement du MB de la couche inférieure est-elle codée dans la couche d'amélioration. - Prédiction résiduelle : dans ce mode, on considère qu'un MB dans une couche d'amélioration qui a un mouvement proche du MB situé à la même position dans la couche inférieure a également des données résiduelles similaires. En conséquence, on code la différence entre données résiduelles. Les MBs d'une couche d'amélioration utilisant des données d'une couche inférieure pour leur codage sont identifiés par un identifiant appelé base mode flag. S'il a la valeur 1, cet identifiant indique que le mode de prédiction de MB ainsi que les données de mouvement correspondantes sont déduites de la couche de base. Un second identifiant appelé residuai prediction flag indique que les données résiduelles du MB considéré sont prédites en utilisant les données de la couche inférieure. II est à noter qu'avec H.264 et SVC, la transmission d'une vidéo sur un réseau est facilitée, avec la notion de NAL (en anglais "Network Abstraction Layer"). Une NAL est une sorte de conteneur qui fournit dans son en-tête une brève description des données transportées sur le réseau. De nombreuses recherches ont été menées sur le contrôle d'erreurs dans le domaine de la transmission vidéo sur des réseaux non fiables. Une solution, appelée rafraîchissement INTRA (en anglais "INTRA refresh"), consiste à coder les MBs importants en mode INTRA. Etant donné que les MBs INTRA ne sont pas sujets à la propagation d'erreurs, cela permet d'améliorer la qualité de la vidéo dans des conditions difficiles. Cependant, l'inconvénient principal de cette solution est lié au coût de codage du MB INTRA. En effet, le gain en robustesse implique une augmentation du débit vidéo. En outre, cette solution n'est pas vraiment adaptée aux vidéos précodées. Une autre solution consiste à limiter le nombre d'images de référence. Par exemple, dans un groupe d'images ou GOP (en anglais "Group Of Pictures"), seule une image est utilisée comme référence pour la prédiction temporelle pour toutes les autres images dans le GOP. On prévoit alors une meilleure protection pour cette image que pour les autres. Néanmoins, sachant qu'une seule image est utilisée comme référence dans un GOP pour la prédiction temporelle, les performances de compression du codeur diminuent, car il bénéficie moins des corrélations temporelles. Le partitionnement des données est une autre notion permettant une meilleure protection des données importantes. Un exemple d'utilisation du partitionnement de données est proposé dans le document de brevet US-A-7 010 037. Dans ce document, un codeur hiérarchique ou un transcodeur utilise un partitionnement des données pour engendrer deux couches hiérarchiques à partir d'une vidéo d'origine brute ou précodée. II utilise la fonctionnalité classique de partitionnement des données telle que définie dans MPEG-4 part 2, qui consiste à séparer en deux flux binaires les vecteurs de mouvement, les coefficients DCT basse fréquence (DC) et les coefficients AC les plus importants parmi d'autres coefficients AC. L'idée est d'optimiser le partitionnement des coefficients pour chaque bloc sans augmenter le surcoût dû au codage du point de partitionnement. Le procédé décrit dans le document US-A-7 010 037 présente divers inconvénients. En particulier, il nécessite l'utilisation d'un décodeur non standard, car des informations additionnelles sont nécessaires au décodeur pour identifier la façon dont les coefficients ont été partitionnés. En outre, comme le partitionnement est fonction de la bande passante disponible, un nouveau partitionnernent doit être défini si les conditions réseau changent. La présente invention a pour but de remédier aux inconvénients de l'art antérieur, en proposant une protection inégale contre les erreurs ou UEP (en anglais "Unequal Error Protection"), selon l'importance des données, et ne nécessitant pas de modifier le décodeur. Dans ce but, la présente invention propose un procédé de transmission d'une séquence d'images vidéo sur un réseau entre un serveur et un client, la séquence étant codée suivant un mode de codage prédictif hybride et comportant une pluralité d'images, chaque image étant décomposée en une pluralité de macroblocs de pixels, le procédé étant remarquable en ce que : - on classe la pluralité de macroblocs dans au moins deux groupes de macroblocs suivant un critère prédéterminé ; - on complète ces groupes de macroblocs par des macroblocs additionnels ; - on crée au moins deux niveaux de codage hiérarchique à partir de ces groupes de macroblocs ; - on applique une protection inégale contre les erreurs de transmission aux groupes de macroblocs suivant le critère prédéterminé ; et - on transmet sur le réseau les niveaux de codage hiérarchique. Ainsi, l'invention permet d'appliquer une protection inégale contre les erreurs aux macroblocs en fonction par exemple de leur importance. En séparant les données considérées comme importantes des données considérées comme peu importantes dans deux trains binaires, on peut plus facilement cibler la protection. En outre, le transcodage est très simple lorsque les deux niveaux de scalabilité sont des couches CGS. Par ailleurs, le procédé est adaptatif, car la classification d'un MB comme "important" ou "moins important" peut être ajustée en fonction de la qualité que le serveur souhaite proposer au client ou en fonction de contraintes de débit. En outre, le flux vidéo reste décodable par n'importe quel décodeur standard conforme à la norme utilisée pour le codage, par exemple SVC. Au surplus, il n'est pas nécessaire de modifier les données vidéo si les conditions réseau changent : en effet, le flux vidéo peut être modifié "offline" et le niveau de correction des erreurs peut être ajusté en fonction des conditions réseau rencontrées au moment de la transmission. Dans un mode particulier de réalisation, le critère prédéterminé définit l'importance d'un macrobloc en fonction d'une estimation de la qualité obtenue par le client dans le cas où ce macrobloc est perdu en cours de transmission. Cela permet de mieux prendre en compte la qualité perçue par le client. Selon une caractéristique particulière, l'estimation de la qualité utilise une simulation de masquage d'erreur du macrobloc perdu. On prend ainsi en compte les capacités de masquage d'erreur des clients. De cette façon, un MB perdu, mais pouvant être efficacement récupéré par masquage sera considéré comme peu important. Selon une caractéristique particulière, l'estimation de la qualité comporte la détermination de la somme des valeurs absolues des différences entre la version d'origine et la version masquée du macrobloc perdu et l'étape de classement comporte la comparaison de cette somme à une valeur limite prédéterminée, au-delà de laquelle le macrobloc est considéré comme important. Selon une caractéristique particulière, les macroblocs additionnels sont des macroblocs situés à la même position que des macroblocs considérés comme importants, dans un autre des au moins deux niveaux de codage hiérarchique créés à partir des groupes de macroblocs précités. Les MBs additionnels permettent de conserver un flux vidéo compatible avec la norme SVC. Selon une caractéristique particulière, l'étape d'application d'une protection contre les erreurs consiste à appliquer un codage de Reed-Solomon au moins aux macroblocs considérés comme importants. Selon une caractéristique particulière, le procédé comporte en outre des étapes suivant lesquelles on code les macroblocs additionnels différemment selon le type de codage des macroblocs des groupes de macroblocs précités. Selon une caractéristique particulière, le procédé comporte en outre des étapes suivant lesquelles, si le type de codage d'un macrobloc des groupes de macroblocs précités est INTRA : - on vérifie si la dérivation du vecteur de mouvement du macrobloc INTRA à partir des macroblocs codés environnants produit un vecteur nul ; - si c'est le cas, on code un macrobloc additionnel avec un codage de type P_SKIP ; - sinon, on code un macrobloc additionnel avec un codage de type INTRA et on ajoute un paramètre indiquant l'absence de coefficient non nul. Selon une caractéristique particulière, si le type de codage d'un macrobloc des groupes de macroblocs précités n'est pas INTRA : - on vérifie si la dérivation du vecteur de mouvement du macrobloc 20 non INTRA à partir des macroblocs codés environnants produit une différence de vecteurs de mouvement nulle ; - si c'est le cas, on code un macrobloc additionnel avec un codage de type P_SKIP ou B_SKIP ; - sinon, on code un macrobloc additionnel avec un codage de type P 25 ou B et on ajoute un paramètre indiquant l'absence de coefficient non nul. Selon une caractéristique particulière, le codage hiérarchique est conforme à la norme SVC ("Scalable Video Coding"). Cela permet d'obtenir un train binaire normalisé, ce qui garantit l'interopérabilité entre différents équipements provenant de différents fabricants. 30 Dans le même but que celui indiqué plus haut, la présente invention propose également un dispositif de transmission d'une séquence d'images vidéo sur un réseau entre un serveur et un client, la séquence étant codée suivant un mode de codage prédictif hybride et comportant une pluralité d'images, chaque image étant décomposée en une pluralité de macroblocs de pixels, le dispositif étant remarquable en ce qu'il comporte : - un module pour classer la pluralité de macroblocs dans au moins deux groupes de macroblocs suivant un critère prédéterminé ; - un module pour compléter ces groupes de macroblocs par des macroblocs additionnels ; - un module pour créer au moins deux niveaux de codage hiérarchique à partir de ces groupes de macroblocs ; - un module pour appliquer une protection inégale contre les erreurs de transmission aux groupes de macroblocs suivant le critère prédéterminé ; et - un module pour transmettre sur le réseau les niveaux de codage hiérarchique. Toujours dans le même but, la présente invention vise aussi un système de télécommunications comprenant une pluralité de dispositifs terminaux reliés à travers un réseau de télécommunications, remarquable en ce qu'il comprend au moins un dispositif terminal équipé d'un dispositif de transmission tel que succinctement décrit ci-dessus. Toujours dans le même but, la présente invention vise aussi un moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, remarquable en ce qu'il permet la mise en oeuvre d'un procédé de transmission tel que succinctement décrit ci-dessus. Toujours dans le même but, la présente invention vise aussi un produit programme d'ordinateur pouvant être chargé dans un appareil programmable, remarquable en ce qu'il comporte des séquences d'instructions pour mettre en oeuvre un procédé de transmission tel que succinctement décrit ci-dessus, lorsque ce programme est chargé et exécuté par l'appareil programmable. Les caractéristiques particulières et les avantages du dispositif de transmission, du système de télécommunications, du moyen de stockage d'informations et du produit programme d'ordinateur étant similaires à ceux du procédé de transmission, ils ne sont pas répétés ici. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit de modes particuliers de réalisation, donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels : - la figure 1 représente de façon schématique un système de transmission vidéo susceptible de mettre en oeuvre la présente invention, dans un mode particulier de réalisation ; - la figure 2 est un organigramme illustrant les principales étapes d'un procédé de transmission conforme à la présente invention du côté du serveur, dans un mode particulier de réalisation ; - la figure 3 est un organigramme illustrant le processus de codage mis en oeuvre du côté du serveur dans le cadre d'un procédé de transmission conforme à la présente invention, dans un mode particulier de réalisation ; - la figure 4 est un organigramme illustrant les principales étapes d'un procédé de transmission conforme à la présente invention du côté du client, dans un mode particulier de réalisation ; - la figure 5 illustre un exemple de GOP contenant des MBs importants, dispersés au sein dudit GOP ; - la figure 6 illustre, pour le GOP de la figure 5, la génération de deux couches CGS, dont une reçoit les MBs importants et l'autre, les MBs moins importants ; et - la figure 7 illustre, pour le GOP de la figure 5, l'application de la correction d'erreurs uniquement à l'une des deux couches CGS engendrées. La solution proposée par la présente invention est fondée sur une classification des macroblocs (MBs) en fonction d'un critère d'importance des données qu'ils contiennent. Une fois cette classification effectuée, le flux binaire correspondant à un MB important est utilisé pour construire une première couche CGS SVC. Les MBs moins importants sont utilisés pour créer une seconde couche CGS. La correction d'erreurs est alors appliquée uniquement à la première couche CGS, ce qui produit l'effet UEP, c'est-à-dire de protection inégale contre les erreurs. De façon générale, une protection contre les erreurs plus forte est appliquée à la première couche, qui contient les macroblocs les plus importants selon le critère d'importance. Il est à noter que les deux couches CGS pourraient en fait être décodées mais le décodage de la couche de base ne fournira pas une vidéo avec une qualité acceptable, car elle contient seulement une partie des MBs. Le critère d'importance est défini ici comme la capacité d'un MB à être récupéré avec une qualité acceptable par masquage d'erreur du côté du client s'il a été perdu pendant la transmission du serveur au client. Le concept général de l'invention est illustré par les figures 5, 6 et 7. La figure 5 illustre un groupe d'images ou GOP extrait d'un flux binaire H.264 ou d'un flux correspondant à une couche spatiale SVC. Dans ce GOP, les MBs correspondant à des MBs importants sont représentés avec une texture. Sur la figure 6, on voit que deux couches CGS sont engendrées. Une première couche CGS (ici une couche CGS d'amélioration) reçoit les MBs les plus importants. Une seconde couche CGS (ici une couche CGS de base) reçoit les MBs moins importants. Les MBs manquants dans chaque couche sont remplacés par des MBs dits "sautés" (en anglais "skipped"), un tel MB sauté ne correspondant pas exactement à la définition d'un MB sauté dans la norme. Même s'ils sont standard, une majorité des informations qu'ils contiennent est déduite d'autres MBs. Comme le montre la figure 7, un codeur FEC (correction d'erreur dans les images, en anglais "Frame Error Correction") est appliqué au flux binaire correspondant à la première couche CGS uniquement. Comme représenté sur la figure 1, un système de transmission apte à mettre en oeuvre la présente invention est constitué d'un serveur 10 et d'un client 12 qui communiquent à travers un réseau de communication. Le système illustré sur la figure 1 peut comporter tout ou partie des moyens de mise en oeuvre d'un procédé de transmission conforme à la présente invention. Le serveur 10 comporte une unité de stockage 102 mémorisant une vidéo codée ainsi que les programmes nécessaires à la mise en oeuvre de l'invention. Le serveur peut également comporter un lecteur de moyens de stockage temporaire tel qu'un lecteur de disquettes pour coopérer avec une disquette. Le serveur 10 comporte en outre une unité de calcul 100 capable d'exécuter des programmes et une unité réseau 104 capable de transmettre les données vidéo sur le réseau. En variante, les méthodes de traitement du signal numérique peuvent être stockées dans différents emplacements de stockage. De façon générale, un moyen de stockage d'information lisible par un ordinateur ou par un microprocesseur, intégré ou non au serveur 10, éventuellement amovible, peut mémoriser un ou plusieurs programme(s) dont l'exécution met en oeuvre le procédé de transmission conforme à la présente invention. Une unité d'acquisition d'images telle qu'une caméra numérique ou un scanner peut être ajoutée pour saisir des vidéos en direct, l'unité de calcul 100 prenant en charge la compression de la vidéo. On peut faire évoluer le mode particulier de réalisation choisi pour l'invention, par exemple en ajoutant des méthodes de traitement actualisées ou améliorées ; dans un tel cas, ces nouvelles méthodes peuvent être transmises au serveur 10 par le réseau de communication, ou chargées dans le serveur 10 par l'intermédiaire d'une ou de plusieurs disquettes. Bien entendu, les disquettes peuvent être remplacées par tout support d'information jugé approprié (CD-ROM, carte mémoire, etc.). Le client 12 comporte une unité de stockage 122, mémorisant les programmes du client et en particulier un programme de décompression de vidéo. De même que le serveur 10, le client 12 peut également comporter un lecteur de moyens de stockage temporaire tel qu'un lecteur de disquettes pour coopérer avec une disquette. Le client 12 comporte en outre une unité de calcul 120 qui exécute les programmes, une unité réseau 124 qui prend en charge la réception des paquets et une unité d'affichage 126. De même que pour le serveur, en variante, les méthodes de traitement du signal numérique du côté du client peuvent être stockées dans différents emplacements de stockage. De façon générale, un moyen de stockage d'information lisible par un ordinateur ou par un microprocesseur, intégré ou non au client 12, éventuellement amovible, peut mémoriser un ou plusieurs programme(s) dont l'exécution met en oeuvre le procédé de transmission conforme à la présente invention. De même que pour le serveur, on peut faire évoluer le mode particulier de réalisation choisi pour l'invention en ajoutant des méthodes de traitement actualisées ou améliorées ; dans un tel cas, ces nouvelles méthodes peuvent être transmises au client 12 par le réseau de communication, ou chargées dans le client 12 par l'intermédiaire d'une ou de plusieurs disquettes. Bien entendu, les disquettes peuvent être remplacées par tout support d'information jugé approprié (CD-ROM, carte mémoire, etc.). On décrit ci-dessous plus précisément les processus effectués par le serveur en liaison avec les figures 2 et 3 et ceux effectués par le client en liaison avec la figure 4. On suppose que le serveur mémorise des vidéos H.264 ou SVC. Chaque séquence vidéo est codée en utilisant une organisation en images B-hiérarchiques. En conséquence, les GOP sont définis comme un ensemble d'images entre une image I et une image P ou entre deux images P. Néanmoins, d'autres structures de GOP sont possibles dans le cadre de l'invention. Comme le montre l'organigramme de la figure 2, à l'étape E200, le serveur commence par recevoir une requête demandant une séquence vidéo. Cette requête a été émise par le client. Le serveur récupère la séquence correspondante dans son unité de stockage et commence sa transformation. Cette transformation débute par la création de deux couches CGS. Avant d'émettre la séquence, le serveur engendre un message SEI (en anglais "Supplemental Enhancement Information") codé de façon hiérarchique (en anglais "scalable") pour décrire la séquence après transformation en deux couches CGS. Le message SEI est décrit dans la section G.13 du document "Joint draft ITU-T Rec. H.264 ISO/IEC 14496-10/Amd. 3 Scalable Video Coding" de T. WIEGAND, G. SULLIVAN, J. REICHEL, H. SCHWARZ et M. WIEN, 24ème JVT meeting, Genève, Suisse, juillet 2007. En outre, l'élément de syntaxe No inter layer pred flag est mis à zéro dans l'en-tête de NAL de la couche d'amélioration pour indiquer qu'il y a prédiction inter-couches. Ensuite, le premier GOP de la séquence est traité. Le serveur vérifie tout d'abord si tous les MBs dans le GOP ont été traités (étape E202). Si ce n'est pas le cas, le serveur vérifie le type du MB suivant restant (étape E204). Si le MB n'est pas un MB INTRA, une perte est simulée au niveau du MB suivant restant (étape E206). Ensuite, afin de simuler les traitements effectués par le client en cas de perte, le serveur simule le masquage d'erreur du MB perdu (étape E208). Une façon simple de simuler la perte et le masquage d'erreur consiste à décoder l'image contenant le MB, mais sans décoder le MB concerné, et à remplacer ce MB par le MB situé à la même position dans l'image décodée la plus proche. En variante, pour être encore plus proche des traitements réellement effectués par le client, il est également possible de laisser le client décrire son algorithme de masquage au serveur. Le serveur simule ensuite exactement ce qu'effectue le client et a donc une bonne évaluation de la qualité obtenue du côté du client. Quelle que soit la méthode de masquage simulée par le serveur, il est ensuite capable de mesurer la différence entre le MB masqué et le MB d'origine et donc, d'estimer la qualité du masquage (étape E210). Pour ce faire, le serveur mesure la somme des valeurs absolues des différences (SAD, en anglais "Sum of Absolute Differences") entre la version d'origine et la version masquée du MB : 16,16 SADMB = ~X=o,v=o MB°(x,y)ûMB°(x,y où MB°(x,y) est le pixel de la version originale du MB situé à la position (x,y) et MB°(x,y) est le pixel du MB masqué situé à la position (x,y). Afin de classer le MB, la valeur de SADMB obtenue est comparée à une valeur limite SADMAx au-delà de laquelle le MB est considéré comme important. Ainsi, si SADMB > SADMAx alors le MB est considéré comme important à l'étape E212. Un traitement spécifique est appliqué aux MBs INTRA. En effet, lorsque des MBs INTRA sont identifiés à l'étape E204 dans le train binaire d'origine, ces MBs sont directement considérés comme importants et les étapes E206 à E212 ne sont pas effectuées pour ces MBs. Lorsqu'un MB est considéré comme important, l'étape E212 est suivie d'une étape E224 au cours de laquelle le train binaire correspondant au MB important est inséré dans le flux binaire de la couche d'amélioration CGS et on modifie le train binaire du MB en insérant un indicateur base mode flag ayant la valeur zéro ainsi qu'un indicateur residual prediction flag ayant également la valeur zéro. Puis à l'étape E226, un MB correspondant à la même position est inséré dans la couche CGS de base. Le but de ce traitement est de garantir que la couche de base CGS est conforme à la norme et que le codage prédictif des vecteurs de mouvement est maintenu dans la couche de base. Une simple séparation du flux binaire en deux couches CGS ne fournira pas un flux binaire SVC standard. Le codage de ce MB dépend du type du MB d'origine. Le processus de codage est illustré sur la figure 3. On identifie tout d'abord le type du MB d'origine. Si, à l'étape E300, le MB est identifié comme étant un MB INTRA, on vérifie si la dérivation du vecteur de mouvement du MB courant à partir des MBs codés environnants a conduit à un vecteur nul (étape E302). Le processus de dérivation permettant de prédire le vecteur de mouvement courant à partir des vecteurs de mouvement des MBs environnants est décrit dans la section 8.4.1.1 du document "Joint draft ITU-T Rec. H.264 ISO/IEC 14496-10/Amd. 3 Scalable Video Coding" cité plus haut. Si tel est le cas, le MB est codé comme un MB de type P_SKIP (étape E306) et aucune donnée supplémentaire n'est codée pour ce MB. Si ce n'est pas le cas, le MB est codé comme un MB INTRA avec un paramètre coded block pattern (noté CBP sur le dessin) indiquant qu'aucun des six blocs 8x8 ne contient de coefficients non nuls (étape E304). Si, à l'issue de l'étape E300, on a déterminé que le MB n'est pas de type INTRA, l'étape E300 est suivie par l'étape E308 au cours de laquelle on vérifie si la dérivation du vecteur de mouvement à partir des MBs codés environnants a conduit à une différence de vecteurs de mouvement (notée MVd sur le dessin) nulle, ce qui signifie que le vecteur de mouvement courant pourrait être complètement prédit par les MBs environnants. Si tel est le cas, on code un MB P_SKIP ou B_SKIP (étape E310). Sinon, le MB est codé comme un MB P ou B avec un paramètre coded block pattern indiquant qu'aucun des six blocs 8x8 ne contient de coefficients non nuls (étape E312). La différence des vecteurs de mouvement est codée afin de récupérer le même vecteur de mouvement que dans le MB d'origine. Le choix du type de MB entre B (respectivement B_SKIP) ou P (respectivement P_SKIP) dépend du type du bloc d'origine. Si, à l'étape E212, le MB est classé comme n'étant pas important, son train binaire est inséré dans une couche CGS de base à l'étape E214. Cette étape est suivie par l'insertion d'un MB dans la couche d'amélioration (étape E216). Le MB inséré est codé avec un paramètre base mode flag ayant la valeur 1 et un paramètre residual prediction flag ayant également la valeur 1. Le paramètre coded block pattern indique qu'aucun des six blocs 8x8 ne contient de coefficients non nuls. En conséquence, toutes les informations concernant ce MB dans la couche d'amélioration CGS sont déduites du MB situé à la même position dans la couche de base CGS. Les étapes E226 et E216 sont suivies par l'étape E202. Lorsque tous les MBs dans un GOP ont été traités, l'étape E202 est suivie par l'étape E218 qui consiste à appliquer un codage avec correction d'erreur, ou FEC, à la couche d'amélioration CGS. Le codage FEC est appliqué au moins aux MBs considérés comme importants, mais peut également être appliqué à d'autres MBs. Un codeur FEC peut par exemple être un codeur de Reed-Solomon. Le niveau de redondance peut être adapté aux conditions réseau et en particulier au taux de pertes. Si on note p le taux de pertes sur le réseau exprimé en pourcentage et S la taille en octets des données d'amélioration dans ce GOP, le codeur de Reed-Solomon peut ajouter pxS octets redondants. Le taux de pertes réseau peut être calculé par le client et transmis au serveur en utilisant des paquets RTCP. Ensuite, à l'étape E220, les données sont transmises sur le réseau et le serveur commence à traiter le GOP suivant (étape E222) s'il existe. Le processus s'arrête lorsque tous les GOP ont été traités. On décrit maintenant en liaison avec la figure 4 le processus effectué par le client. Après avoir émis une requête à destination du serveur pour recevoir une séquence vidéo, le client reçoit la séquence sous forme de paquets réseau. Dans le mode particulier de réalisation décrit ici, la vidéo est reçue sous forme de paquets RTP. Quand le client reçoit un paquet (étape E400), il teste si des pertes se sont produites pendant la transmission (étape E402). Cette détection de pertes peut consister à vérifier le numéro de série des paquets RTP. Comme ces numéros sont généralement consécutifs, si la différence entre deux numéros successifs est supérieure à 1, une erreur est détectée. On suppose ici que le client décode la séquence en considérant les GOP de la séquence d'images codée SVC un par un. En conséquence, à l'étape E402, le client teste si au moins une erreur s'est produite pendant la transmission d'un GOP. Si aucune erreur ne s'est produite, l'étape E402 est suivie par les étapes E404 et E406 qui consistent respectivement à décoder la couche de base CGS et la couche d'amélioration CGS. Ici, le décodage des couches de base et d'amélioration apparaît comme séquentiel. En fait, toutes les données correspondant à un instant donné sont décodées avant de décoder une nouvelle image. Lorsque toutes les images d'un GOP sont décodées (étape E408), on retourne à l'étape E402 et on traite le GOP suivant (étape E410). Si à l'étape E402, on détecte qu'une erreur s'est produite pendant la transmission du GOP, on teste à l'étape E412 si cette erreur s'est produite dans la couche d'amélioration CGS. Le message SEI codé de façon hiérarchique transmis par le serveur au début de la séquence et l'information contenue dans les en-têtes de NAL fournissent suffisamment d'informations au client pour qu'il soit en mesure d'identifier dans quelle couche l'erreur s'est produite. Si à l'étape E412, le client détermine qu'aucune erreur ne s'est produite dans la couche d'amélioration, le décodeur identifie les images de la couche de base concernées par l'erreur (étape E422), effectue un masquage d'erreur sur ces images ou sur la partie erronée de ces images (étape E424) puis décode l'information de la couche d'amélioration (étape 426). Lorsque le client détermine à l'étape suivante E428 que toutes les images du GOP ont été traitées, il commence à traiter le GOP suivant (étape E420). Si le client détermine à l'étape E412 qu'une erreur s'est produite dans la couche d'amélioration, à l'étape suivante E414, il effectue un décodage avec correction d'erreur (FEC). Dans le mode particulier de réalisation décrit ici, il effectue un décodage de Reed-Solomon. Si le client détermine à l'étape suivante E416 que le décodeur de Reed-Solomon a réussi à régénérer les données manquantes, il retourne à l'étape E422. Sinon, si, à l'étape E416, le train binaire de la couche d'amélioration n'est pas régénéré après décodage de Reed-Solomon, seules les première et dernière images du GOP sont décodées (étape E418), si elles sont disponibles. Si elles ne sont pas disponibles, ces images sont masquées. Il est en effet nécessaire de régénérer ces deux images, parce que le client en a besoin pour décoder le GOP suivant à l'étape E420. En ce qui concerne les images restantes du GOP, on considère que comme une partie des MBs les plus importants est perdue, il n'est plus nécessaire d'afficher ce GOP. Le traitement de ce GOP est alors arrêté à l'étape E420 et le client commence à traiter le GOP suivant. Le mode particulier de réalisation décrit considère un processus se déroulant en temps réel, dans lequel un utilisateur demande une séquence vidéo et un serveur effectue directement les traitements conformes à l'invention. Néanmoins, ces traitements pourraient tout aussi bien ne pas être effectués en temps réel, c'est-à-dire "off-line", auquel cas le résultat serait mémorisé par le serveur. En conséquence, la séquence transformée serait prête à être transmise lorsqu'elle serait demandée par un client. Par ailleurs, dans le mode particulier de réalisation décrit, on considère que la couche d'amélioration transporte les MBs les plus importants et que la couche de base transporte les MBs les moins importants. Toutefois, en variante, la couche d'amélioration pourrait transporter les MBs les moins importants et la couche de base les MBs les plus importants. En outre, l'invention est ici appliquée à un flux H.264. Cependant, elle peut tout aussi bien être appliquée à une couche spatiale d'un flux SVC. De plus, il est à noter que, si la transformation du flux H.264 en deux couches d'amélioration CGS SVC n'augmente pas beaucoup le débit binaire de la séquence vidéo, l'insertion d'une correction d'erreur FEC pour obtenir une protection inégale contre les erreurs (UEP) risque en revanche d'augmenter le débit binaire de façon significative. Comme cette hausse du débit binaire aurait pour effet d'augmenter la congestion dans le réseau, provoquant ainsi une hausse du taux de pertes, on peut prévoir un moyen pour compenser l'augmentation du débit binaire due à la correction d'erreur FEC. Par exemple, on peut transcoder la couche qui transporte les MBs les plus importants en plusieurs couches MGS ou FGS. En conséquence, le débit binaire des données vidéo peut être réduit pour compenser l'introduction des données FEC, par suppression de certaines données MGS ou FGS de façon adaptative. Du reste, l'utilisation d'une scalabilité CGS n'est pas indispensable. En effet, les couches CGS peuvent être remplacées par des couches spatiales. Dans ce cas, la couche spatiale de base ayant une résolution inférieure à celle de la séquence vidéo d'origine peut transporter les MBs les moins importants et une couche spatiale d'amélioration peut transporter les MBs les plus importants. Afin de conserver le même processus pour engendrer la couche transportant les MBs les moins importants, la première couche peut être engendrée en transcodant en deux couches spatiales la couche CGS obtenue avec les MBs les moins importants. La seconde couche CGS devient alors une couche CGS d'amélioration de la seconde couche spatiale. Cette solution offre l'avantage de fournir davantage de débit binaire de codage aux données les plus importantes, le débit binaire de la résolution la plus basse étant réduit en raison du changement de résolution. Une technique simple de transcodage peut consister à décoder une couche spatiale ou CGS et à la re-coder en plusieurs couches MGS ou FGS, ou en deux couches spatiales. Afin d'éviter l'affichage de la couche de base seule, sans la couche d'amélioration, l'élément de syntaxe layer out flag situé dans le message SEI et correspondant à la couche de base peut être mis à zéro. On peut se reporter à ce sujet à la section G.13.2.1 du document "Joint draft 1TU-T Rec. H.264 ISO/IEC 14496-10/Amd. 3 Scalable Video Coding" cité plus haut. Enfin, dans le mode particulier de réalisation décrit, on a classé les macroblocs en deux groupes ("plus important" et "moins important") et on a créé deux niveaux de codage hiérarchique à partir de ces deux groupes. Néanmoins, on peut tout aussi bien choisir de classer les macroblocs en un plus grand nombre de groupes, cela entraînant la création d'autant de niveaux de codage hiérarchique supplémentaires. REVENDICATIONS1. Procédé de transmission d'une séquence d'images vidéo sur un réseau entre un serveur et un client, ladite séquence étant codée suivant un mode de codage prédictif hybride et comportant une pluralité d'images, chaque image étant décomposée en une pluralité de macroblocs de pixels, ledit procédé étant caractérisé en ce que : - on classe (E212) ladite pluralité de macroblocs dans au moins deux groupes de macroblocs suivant un critère prédéterminé ; - on complète (E216, E226) lesdits groupes de macroblocs par des macroblocs additionnels ; - on crée (E214, E224) au moins deux niveaux de codage hiérarchique à partir desdits groupes de macroblocs ; - on applique (E218) une protection inégale contre les erreurs de transmission auxdits groupes de macroblocs suivant ledit critère prédéterminé ; et - on transmet (E220) sur le réseau lesdits niveaux de codage hiérarchique. 2. Procédé selon la revendication 1, caractérisé en ce que ledit critère prédéterminé définit l'importance d'un macrobloc en fonction d'une estimation (E210) de la qualité obtenue par le client dans le cas où ce macrobloc est perdu en cours de transmission. 3. Procédé selon la revendication 2, caractérisé en ce que ladite estimation (E210) de la qualité utilise une simulation (E208) de masquage d'erreur du macrobloc perdu. 4. Procédé selon la revendication 3, caractérisé en ce que ladite estimation (E210) de la qualité comporte la détermination de la somme des valeurs absolues des différences entre la version d'origine et la version masquée du macrobloc perdu et en ce que l'étape (E212) de classement comporte la comparaison de ladite somme à une valeur limite prédéterminée, au-delà de laquelle le macrobloc est considéré comme important. 5. Procédé selon la revendication 4, caractérisé en ce que lesdits macroblocs additionnels sont des macroblocs situés à la même position que des macroblocs considérés comme importants, dans un autre desdits au moins deux niveaux de codage hiérarchique créés à partir desdits groupes de macroblocs. 6. Procédé selon la revendication 4 ou 5, caractérisé en ce que ladite étape (E218) d'application d'une protection contre les erreurs consiste à appliquer un codage de Reed-Solomon au moins aux macroblocs considérés comme importants. 7. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comporte en outre des étapes (E304, E306, E310, E312) suivant lesquelles on code lesdits macroblocs additionnels différemment selon le type de codage des macroblocs desdits groupes de macroblocs. 8. Procédé selon la revendication 7, caractérisé en ce qu'il comporte en outre des étapes suivant lesquelles, si le type de codage d'un macrobloc desdits groupes de macroblocs est INTRA : - on vérifie (E302) si la dérivation du vecteur de mouvement dudit macrobloc INTRA à partir des macroblocs codés environnants produit un vecteur nul ; - si c'est le cas, on code (E306) un macrobloc additionnel avec un codage de type P_SKIP ; - sinon, on code (E304) un macrobloc additionnel avec un codage de type INTRA et on ajoute un paramètre (coded block pattern) indiquant l'absence de coefficient non nul. 9. Procédé selon la revendication 7, caractérisé en ce qu'il comporte en outre des étapes suivant lesquelles, si le type de codage d'un macrobloc desdits groupes de macroblocs n'est pas INTRA : - on vérifie (E308) si la dérivation du vecteur de mouvement dudit macrobloc non INTRA à partir des macroblocs codés environnants produit une 30 différence de vecteurs de mouvement nulle ; - si c'est le cas, on code (E310) un macrobloc additionnel avec un codage de type P_SKIP ou B_SKIP ;- sinon, on code (E312) un macrobloc additionnel avec un codage de type P ou B et on ajoute un paramètre (coded block pattern) indiquant l'absence de coefficient non nul. 10. Procédé selon l'une quelconque des revendications précédentes, 5 caractérisé en ce que ledit codage hiérarchique est conforme à la norme SVC ("Scalable Video Coding"). 11. Dispositif (10) de transmission d'une séquence d'images vidéo sur un réseau entre un serveur et un client, ladite séquence étant codée suivant un mode de codage prédictif hybride et comportant une pluralité d'images, 10 chaque image étant décomposée en une pluralité de macroblocs de pixels, ledit dispositif étant caractérisé en ce qu'il comporte : - des moyens pour classer ladite pluralité de macroblocs dans au moins deux groupes de macroblocs suivant un critère prédéterminé ; - des moyens pour compléter lesdits groupes de macroblocs par des 15 macroblocs additionnels ; - des moyens pour créer au moins deux niveaux de codage hiérarchique à partir desdits groupes de macroblocs ; - des moyens pour appliquer une protection inégale contre les erreurs de transmission auxdits groupes de macroblocs suivant ledit critère 20 prédéterminé ; et - des moyens pour transmettre sur le réseau lesdits niveaux de codage hiérarchique. 16. Dispositif selon la revendication 11, caractérisé en ce que ledit critère prédéterminé définit l'importance d'un macrobloc en fonction d'une 25 estimation de la qualité obtenue par le client dans le cas où ce macrobloc est perdu en cours de transmission. 17. Dispositif selon la revendication 12, caractérisé en ce qu'il comporte, pour ladite estimation de la qualité, des moyens de simulation de masquage d'erreur du macrobloc perdu. 30 14. Dispositif selon la revendication 13, caractérisé en ce qu'il comporte en outre, pour ladite estimation de la qualité, des moyens de détermination de la somme des valeurs absolues des différences entre la version d'origine et la version masquée du macrobloc perdu et en ce que les moyens classement sont adaptés à comparer ladite somme à une valeur limite prédéterminée, au-delà de laquelle le macrobloc est considéré comme important. 15. Dispositif selon la revendication 14, caractérisé en ce que lesdits macroblocs additionnels sont des macroblocs situés à la même position que des macroblocs considérés comme importants, dans un autre desdits au moins deux niveaux de codage hiérarchique créés à partir desdits groupes de macroblocs. 16. Dispositif selon la revendication 14 ou 15, caractérisé en ce que lesdits moyens d'application d'une protection contre les erreurs sont adaptés à appliquer un codage de Reed-Solomon au moins aux macroblocs considérés comme importants. 17. Dispositif selon l'une quelconque des revendications 11 à 16, caractérisé en ce qu'il comporte en outre des moyens adaptés à coder lesdits macroblocs additionnels différemment selon le type de codage des macroblocs desdits groupes de macroblocs. 18. Dispositif selon la revendication 17, caractérisé en ce qu'il comporte en outre des moyens adaptés, si le type de codage d'un macrobloc 20 desdits groupes de macroblocs est INTRA, à : - vérifier si la dérivation du vecteur de mouvement dudit macrobloc INTRA à partir des macroblocs codés environnants produit un vecteur nul ; - si c'est le cas, coder un macrobloc additionnel avec un codage de type P_SKIP ; 25 - sinon, coder un macrobloc additionnel avec un codage de type INTRA et ajouter un paramètre (coded block pattern) indiquant l'absence de coefficient non nul. 19. Dispositif selon la revendication 17, caractérisé en ce qu'il comporte en outre des moyens adaptés, si le type de codage d'un macrobloc 30 desdits groupes de macroblocs n'est pas INTRA, à :- vérifier si la dérivation du vecteur de mouvement dudit macrobloc non INTRA à partir des macroblocs codés environnants produit une différence de vecteurs de mouvement nulle ; - si c'est le cas, coder un macrobloc additionnel avec un codage de 5 type P_SKIP ou B_SKIP ; - sinon, coder un macrobloc additionnel avec un codage de type P ou B et ajouter un paramètre (coded block pattern) indiquant l'absence de coefficient non nul. 20. Dispositif selon l'une quelconque des revendications 11 à 19, 10 caractérisé en ce que ledit codage hiérarchique est conforme à la norme SVC ("Scalable Video Coding"). 21. Système de télécommunications comprenant une pluralité de dispositifs terminaux reliés à travers un réseau de télécommunications, caractérisé en ce qu'il comprend au moins un dispositif terminal équipé d'un 15 dispositif de transmission selon l'une quelconque des revendications 11 à 20. 22. Moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre d'un procédé de transmission selon l'une quelconque des revendications 1 à 10. 20 23. Produit programme d'ordinateur pouvant être chargé dans un appareil programmable, caractérisé en ce qu'il comporte des séquences d'instructions pour mettre en oeuvre un procédé de transmission selon l'une quelconque des revendications 1 à 10, lorsque ce programme est chargé et exécuté par l'appareil programmable.