Brevet FR2894740A1 — publié le 20070615

L'invention concerne un dispositif et un procédé de codage de données vidéo, un procédé et un système de décodage. La présente invention s'adresse plus particulièrement aux normes de codage dans lesquelles les images codées sont transmises avec un certain nombre d'informations permettant leur décodage de manière aisée. Les standards de compression tels MPEG-2 et plus récemment H264 transmettent les images codées sous forme de groupe d'images (GOP), ce dernier comprenant également des informations décrivant la structure du groupe d'images. Ces informations servant ensuite au décodeur pour le décodage des images. Le standard H264 transmet les groupes d'images dans des structures de type tranche. Une tranche peut contenir soit la totalité d'une image, soit une partie d'image. L'encodeur est responsable de la découpe en tranches des images (la plupart du temps à partir d'une configuration figée), mais le décodeur ne connaît jamais à priori la structure en tranche des images et la découvre donc au fil du décodage. Les tranches sont encapsulées dans des unités de type NAL (acronyme anglais de network adaptation layer ). La découpe en tranches permet avantageusement d'introduire des points de synchronisation supplémentaires dans l'image. Ainsi, si la couche transport introduit des erreurs durant le transfert de la NAL contenant la tranche 0 , le décodage peut reprendre à partir de la tranche 1 . Si l'image n'est pas découpée en tranche, alors le décodeur ignore l'image dans sa globalité. La plupart des décodeurs utilisent la même découpe en tranches pour toutes les images d'une séquence vidéo complète mais ceci n'est qu'une généralité et la découpe est vraiment dépendante du dispositif de codage. Les inventeurs ont constaté que, les tranches étant encodées de manière indépendante au décodeur, leur décodage peut donc être aisément parallélisé. Ainsi, un processeur 0 peut traiter la tranche 0 , un processeur 1 peut traiter la tranche 1 et ainsi de suite, tant que l'on a des processeurs aptes à travailler en parallèle au niveau du décodage. Cependant, la découpe en tranches n'est pas connue côté décodeur. Donc cette parallélisation est impossible au décodage puisque le décodeur ne peut pas prédire la découpe. Une solution simple consiste à utiliser toujours la même structure de découpage en tranches au niveau de l'encodeur. Cependant ceci implique plusieurs contraintes. Il faudrait alors que cette découpe soit standardisée pour tous les décodeurs répondant à la norme si l'on veut que tous les flux codés puissent être décodés par tout décodeur du marché. L'invention se propose de résoudre au moins un des inconvénients 10 mentionnés ci-dessus en proposant une solution permettant à tout flux encodé d'être décodé par tout décodeur. A cet effet, l'invention concerne un dispositif de codage de données vidéo comprenant des moyens de coder chaque image en tranches d'images, 15 chaque tranche étant codée de manière indépendante des autres tranches. Selon l'invention, le dispositif de codage comprend des moyens d'insérer dans le flux de données au moins un message indiquant la structure relative au découpage en tranches des images. 20 De cette manière, le flux comporte les informations relatives à sa structure. Ceci permet avantageusement d'avoir des données vidéo codées d'une manière choisie par le dispositif de codage et non connues des dispositifs de décodage. 25 Selon un mode de réalisation préféré de l'invention, les moyens d'insérer ledit message insèrent ledit message pour un groupe d'images à coder. Selon un autre mode de réalisation de l'invention les moyens d'insérer ledit message insèrent ledit message pour chaque image à coder. Selon un autre aspect, l'invention concerne un procédé de codage de données vidéo comprenant une étape de codage de chaque image en tranches d'images, chaque tranche étant codée de manière indépendante des autres tranches. Selon l'invention, le procédé de codage comprend une étape 30 d'insertion dans le flux de données d'au moins un message indiquant la structure relative au découpage en tranches des images. Selon un autre aspect, l'invention concerne également un système de 5 décodage de données vidéo, lesdites données vidéo ayant été codées en tranches, chacune des tranches étant codée de manière indépendante des autres tranches. Selon l'invention le système comprend : - des moyens d'analyser les données vidéo de manière à connaître la décomposition en tranches des données, 10 - des moyens de décodage des données vidéo tranche par tranche, - des moyens de reconstruire les différentes données vidéo après leur décodage afin de reconstruire les données vidéo décodées Selon un mode de réalisation préféré de l'invention, le système de 15 décodage de données vidéo comprend : - une pluralité de moyens de décodage des données vidéo tranche par tranche, - des moyens d'orienter les différentes tranches vers la pluralité de dispositifs de décodage en fonction de leur disponibilité, de manière à ce 20 qu'une pluralité de tranches soient décodées simultanément. De manière avantageuse, les différentes tranches peuvent donc être décodées en parallèle, l'image globale étant reconstituée lorsque toutes les tranches correspondant à une même image ont été décodées. De manière préférée, les moyens d'analyser les données vidéo sont aptes à reconnaître et à extraire au moins un message comprenant les informations relatives à la décomposition en tranches. 30 Selon un autre aspect, l'invention concerne également un procédé de décodage de données vidéo, lesdites données vidéo ayant été codées en tranches, chacune des tranches étant codée de manière indépendante des autres tranches. Selon l'invention, il comprend les étapes 25 - d'analyse des données vidéo de manière à connaître la décomposition en tranches des données, - d'orientation des différentes tranches vers des procédés de décodage vidéo, en fonction de la disponibilité des différents 5 procédés, - de décodage en parallèle des tranches de données vidéo, de reconstruction des différentes données vidéo après leur décodage afin de reconstruire les données vidéo décodées. 10 L'invention sera mieux comprise et illustrée au moyen d'exemples de modes de réalisation et de mise en oeuvre avantageux, nullement limitatifs, en référence aux figures annexées sur lesquelles : 15 - la figure 1 représente la structure du flux codé selon l'invention, -la figure 2 représente un dispositif de codage selon l'invention, - la figure 3 représente un dispositif de décodage selon l'invention, - la figure 4 représente un organigramme d'analyse du flux lors du décodage d'un GOP. 20 Les modules représentés sur les différentes figures sont des unités fonctionnelles, qui peuvent ou non correspondre à des unités physiquement distinguables. Par exemple, ces modules ou certains d'entre eux peuvent être regroupés dans un unique composant, ou constituer des fonctionnalités d'un 25 même logiciel. A contrario, certains modules peuvent éventuellement être composés d'entités physiques séparées. La description ci-dessous est basée sur un codage de données conforme à la norme H264. Cet exemple d'implémentation n'est pas limitatif à un codage de ce type. L'invention concerne effectivement tout type de codage 30 dans lequel des informations sont insérées dans le flux afin de faciliter son utilisation ultérieure. La figure 1 représente la structure du flux codé selon un mode de réalisation préféré de l'invention. Les images sont codées de manière découpée. Chaque image est découpée en tranches, mieux connues sous l'acronyme anglais de slice . Le découpage en tranches est décidé lors du codage. Ce découpage en tranches est fait par les utilisateurs du dispositif de codage et notamment par les diffuseurs de programmes. Chaque dispositif de décodage décide seul du type de décomposition qu'il utilise. Ainsi les informations concernant la découpe utilisée par le décodeur ne sont pas connues en dehors de ce décodeur. D'autres dispositifs ne peuvent donc pas utiliser ces informations pour les utiliser à différentes fins. Ainsi, 'selon ce mode de réalisation, un message SEI est inséré avant un groupe de plusieurs images. Ce message SEI indique la découpe en tranches des images du groupe auquel il se rapporte. Dès que la découpe en tranche d'une nouvelle image est différente de la découpe en tranches des images précédentes un nouveau message SEI est inséré. Ainsi un seul message SEI est inséré pour l'image 0, l'image 1 et l'image 2. Ces trois images sont découpées chacune en trois tranches. Un second message SEI est inséré pour les images 3 et 4. Ces deux images sont découpées chacune en deux tranches. Si les images 5 et suivantes sont découpées différemment de l'image 4, alors un nouveau message SEI est inséré avant les tranches de l'image 5. La figure 2 représente un dispositif de codage selon le mode de 25 réalisation préféré de l'invention. Une trame Fn courante est présentée en entrée du codeur pour y être codée. Cette trame est codée en groupe de pixels appelés macroblocs, correspondant à des groupes de 16*16 pixels. Chaque macrobloc est codé en mode intra ou inter. Que ce soit en mode intra ou en mode inter, un 30 macrobloc est codé en se basant sur une trame reconstruite. Un module 109 décide du mode de codage en mode intra de l'image courante, en fonction du contenu de l'image. En mode Infra, P (représentée sur la figure 2) est composée d'échantillons de la trame courante Fn qui ont été précédemment encodés, décodés et reconstruits (uF'n sur la figure 2, u signifiant non filtré). En mode inter, P est constitué à partir d'une estimation de mouvement basée sur une ou plusieurs trames F'n-1. Un module d'estimation de mouvement 101 établit une estimation de mouvement entre la trame courante Fn et au moins une trame précédente F'n-l. A partir de cette estimation de mouvement, un module 102 de compensation de mouvement produit une trame P lorsque l'image courante Fn doit être codée en mode inter. Un soustracteur 103 produit un signal Dn, différence entre l'image Fn à coder et l'image P. Ensuite cette image est transformée par une transformation DCT dans un module 104. L'image transformée est ensuite quantifiée par un module 105 de quantification. Ensuite, les images sont réorganisées par un module 111. Un module de codage entropique 112 de type CABAC (acronyme anglais de Context-based Adaptive Binary Arithmetic Coding ) encode ensuite chaque image. Des modules 106 et 107 respectivement de quantification et de transformation inverses permettent de reconstituer une différence D'n après transformation et quantification puis quantification inverse et transformation inverse. Lorsque l'image est codée en mode intra, selon le module 109, un module 108 de prédiction intra code l'image. Une image uF'n est obtenue en sortie d'un additionneur 114, comme la somme du signal D'n et du signal P Ce module 108 reçoit également en entrée l'image F'n reconstruite non filtrée. Un module 110 de filtrage permet d'obtenir l'image F'n reconstruite filtrée à partir de l'image uF'n. Le module 112 de décodage entropique transmet les tranches codées encapsulées dans des unités de type NAL. Les NAL contiennent, outre les tranches, des informations relatives aux en-têtes par exemple. Les unités de type NAL sont transmises à un module 113. Le module 113 insère un message SEI avant l'envoi des différentes images codées vers un réseau de transmission. Un message SEI est inséré afin d'obtenir un flux comme indiqué en figure 1. La figure 3 représente un système de décodage selon l'invention. Un module 209 analyse les messages SEI reçus dans le flux de données. Les messages SEI peuvent être de différentes natures. Effectivement, les messages SEI peuvent être utilisés à d'autres fins, pour transporter d'autres données pouvant être utiles lors du décodage. Après l'analyse du message SEI, les données sont transmises à différents dispositifs de décodage Dl, D2, D3, Di,..., Dn en fonction de l'analyse. Effectivement, suivant la configuration matérielle ou logicielle disponible, un ou plusieurs dispositifs de décodage Dl, D2, D3, Di,..., Dn sont disponibles. Il est avantageux que le nombre de dispositifs de décodage Dl, D2, D3, Di,..., Dn soit égal au nombre de tranches maximales d'une image codée. Par exemple, si les images sont codées en utilisant une décomposition en 4 tranches, alors il est particulièrement avantageux, en terme de rapidité de décodage, que les tranches soient décodées en parallèle pour reconstruire rapidement l'image. Lorsque le nombre de dispositifs de codage Dl, D2, D3, Di,..., Dn est inférieur à la découpe en tranches des images, alors les tranches sont toutefois décodées en parallèle dans les différents modules de décodage. Les tranches restantes seront décodées par la suite, dès qu'un dispositif de décodage Dl, D2, D3, Di,..., Dn est disponible. Il est ainsi possible qu'à un instant t, les différents modules de décodage décodent chacun des tranches appartenant à des images différentes. L'orientation des tranches vers les différents modules de décodage est décidée par le module 209. Cette orientation prend en compte la disponibilité des différents modules de décodage, leur nombre et la valeur indiquée par le message SEI arrivant. Effectivement, si le message SEI indique la valeur 3 , cela signifie que l'image ou les images qui vont suivre sont décomposées en 3 tranches chacune. Si l'on dispose alors de 3 modules de décodage, cas le plus favorable pour ce groupe d'images, chaque tranche sera alors transmise à un module de décodage Dl, D2, D3. Les NALs de type image sont transmises à un module 201 de décodage entropique. Le module 201 de décodage entropique effectue l'opération inverse du module 112 de la figure 2. Ensuite, les données sont transmises à un module 202 de ré ordonnancement de manière à obtenir un ensemble de coefficients. Ces coefficients subissent alors une quantification inverse dans le module 203 et une transformation DCT inverse dans le module 204 en sortie duquel on obtient les macro blocs D'n, D'n étant une version déformée de Dn. Un bloc prédictif P est ajouté à D'n, par un additionneur 205, pour reconstruire un macrobloc uF'n. Le bloc P est obtenu après compensation de mouvement, effectuée par un module 208, de la trame décodée précédente, lors d'un codage en mode inter ou après prédiction intra du macrobloc uF'n, par un module 207, dans le cas d'un codage en mode intra. Un filtre 206 est appliqué sur le signal uF'n pour réduire les effets de la distorsion et la tranche F'n reconstruite est crée à partir d'une série de macroblocs. Une fois décodées par les différents modules de décodage Dl, D2, D3, Di,..., Dn, les tranches sont mises l'une après l'autre pour reconstruire l'image complète, par exemple en les enregistrant dans une mémoire tampon de reconstruction 210, avant d'être transmises à l'application. La figure 4 représente un mode de réalisation d'un procédé selon l'invention, lorsque les opérations de décodage sont réalisées de manière logicielle. Lors d'une étape El, on reçoit le flux de données codées avec un dispositif de codage comme représenté en figure 2. Le flux codé a la structure représentée en figure 1. Lors d'une étape E2, on analyse le message SEI. L'analyse du message SEI consiste à regarder si le message SEI contient des informations sur la décomposition des images en tranches. Lorsque cette information est présente, alors l'analyse du message SEI est suivie d'une décision d'orientation, lors d'une étape E3, des tranches dans les différents modules de codage Dl, D2, D3, Di,...,Dn. Les modules de codage sont également réalisés de manière logicielle Dl, D2, D3, Di,...,Dn. Lors d'une étape E4, les différentes tranches sont décodées par les différents modules de décodage en parallèle. Lors d'une étape E5, les images sont reconstituées, par exemple en utilisant la mémoire tampon 210 de reconstruction de la figure 3. Le tableau ci-dessous illustre la partie données utiles d'un message SEI, utilisant un type de données utiles de type 6, correspondant dans la norme H264 à des données utiles de type user data_unregistered , représenté dans le tableau ci-dessous. user data unregistered( payloadSize) { Descriptor uuid iso_iec 11578 u(128) for( i = 16; i Revendications 1. Dispositif de codage de données vidéo comprenant des moyens de coder chaque image en tranches d'images, chaque tranche étant codée de manière indépendante des autres tranches, caractérisé en ce qu'il comprend des moyens d'insérer dans le flux de données au moins un message (SEI) indiquant la structure relative au découpage en tranches des images. 2. Dispositif selon la revendication 1 caractérisé en ce que les moyens d'insérer ledit message insèrent ledit message pour un groupe d'images à coder. 3. Dispositif selon la revendication 2 caractérisé en ce que les moyens d'insérer ledit message insèrent ledit message pour chaque image à coder. 4. Procédé de codage de données vidéo comprenant une étape de codage de chaque image en tranches d'images, chaque tranche étant codée de manière indépendante des autres tranches, caractérisé en ce qu'il comprend une étape d'insertion dans le flux de données d'au moins un message (SEI) indiquant la structure relative au découpage en tranches des images. 5. Système de décodage de données vidéo, lesdites données vidéo ayant été codées en tranches, chacune des tranches étant codée de manière indépendante des autres tranches, caractérisé en ce qu'il comprend - des moyens d'analyser les données vidéo de manière à connaître la décomposition en tranches des données, - des moyens de décodage des données vidéo tranche par tranche, - des moyens de reconstruire les différentes données vidéo après leur décodage afin de reconstruire les données vidéo décodées 6. Système de décodage de données vidéo selon la revendication 5 caractérisé en ce qu'il comprend - une pluralité de moyens de décodage des données vidéo tranche par tranche, - des moyens d'orienter les différentes tranches vers la pluralité de dispositifs de décodage en fonction de leur disponibilité, de manière à ce qu'une pluralité de tranches soient décodées simultanément. 7. Système de décodage selon l'une des revendications 5 ou 6 caractérisé en ce que les moyens d'analyser les données vidéo sont aptes à reconnaître et à extraire au moins un message comprenant les informations relatives à la décomposition en tranches. 8. Procédé de décodage de données vidéo, lesdites données vidéo ayant été codées en tranches, chacune des tranches étant codée de manière indépendante des autres tranches, caractérisé en ce qu'il comprend les étapes - d'analyse des données vidéo de manière à connaître la décomposition en tranches des données, - d'orientation des différentes tranches vers des procédés de décodage vidéo, en fonction de la disponibilité des différents procédés, - de décodage en parallèle des tranches de données vidéo, - de reconstruction des différentes données vidéo après leur décodage afin de reconstruire les données vidéo décodées.