Brevet FR2888424A1 — publié le 20070112

L'invention concerne un dispositif et un procédé de codage et de décodage de données vidéo ainsi qu'un train de données. L'invention s'adresse plus particulièrement aux normes de codage 5 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. Dans la norme H264, le flux vidéo codé comprend une suite d'unités de type entêtes décrivant chaque groupe d'images (GOP) et chaque image du GOP. Ces entêtes sont nommés des NAL (acronyme anglais de Network Adaptation Layer ). Ces entêtes peuvent être notamment des NALs de type SPS (acronyme anglais de Sequence Parameter Set ) ou des NALs de type PPS (acronyme anglais de Picture Parameter Set ). Ces NALs sont transmises au début du GOP auquel elles se rapportent. Chaque GOP commence par une NAL de type SPS, puis une NAL de type PPS, puis une NAL de type IDR (acronyme anglais de instantaneous decoding refresh ) et ensuite une série d'images de type I, B ou P. Les NAL de type PPS peuvent également être insérées au milieu d'un GOP pour être utilisées par des images suivantes, il est possible notamment d'avoir une NAL de type PPS avant chaque NAL de type image. Une NAL de type SPS indique pour une série d'images d'un GOP, leur profil et leur niveau (connu dans la norme H264 sous le nom anglais de level ). Une NAL de type PPS indique le type d'encodage entropique utilisé (CABAC ou CAVLC) mais aussi le pas de quantification de base. Les NAL de type SPS et PPS sont émises au début de chaque GOP pour assurer la qualité de service mais généralement, ces mêmes SPS et PPS sont émis de nombreuses fois, c'est-à-dire qu'un même SPS et un même PPS peuvent servir pour le décodage d'images sur plusieurs GOPs. La norme H264 prévoit que leur décodage est effectué à chaque fois mais ce décodage est relativement coûteux en temps et inutile, ces éléments de syntaxe ayant été lus et décodés potentiellement lors de GOP émis et décodés précédemment. L'invention propose donc un codage des données qui permet un décodage plus efficace. L'invention n'est pas limitée à un codage de type H264 mais peut également s'appliquer à des flux de données dans lesquelles des données redondantes sont transmises et ne nécessitent pas un décodage pour permettre le décodage des données utiles. Ces données redondantes peuvent notamment être dues au type de codage utilisé et notamment lorsque la structure des données est reproduite plusieurs fois dans le flux, il est possible que les entêtes soient liées à la structure de codage et ne soient pas différentes pour chaque groupe de données associées si la structure est conservée tout au long du flux. A cet effet, l'invention concerne un dispositif de codage de données vidéo comprenant des moyens de coder un flux vidéo en groupes d'images, chaque groupe d'images comprenant au moins une unité de description relative au codage dudit groupe d'images. Selon l'invention, le dispositif comprend des moyens d'insérer dans le flux de données au moins un message indiquant si l'unité de description du groupe d'images courant est identique à l'unité de description relative au groupe d'images précédent. L'insertion de messages peut avantageusement rendre possible de ne pas décoder toutes les données reçues lors du décodage de ces données par un dispositif de décodage. L'insertion de messages lors du codage de données doit cependant être compatible avec un décodage ultérieur des données codées. De manière préférée, le message inséré doit donc être compris pas le décodeur ou ignoré par celui-ci sans que cela gène le décodage des données. Le train de données ainsi encodé par un dispositif de codage conforme à l'invention est de préférence compatible avec le dispositif de décodage. Selon un mode de réalisation avantageux, les moyens d'insérer ledit message insèrent ledit message au début de chaque groupe d'images. De cette manière, cela peut rendre plus rapide le décodage des données lors de leur réception. Préférentiellement, chaque groupe d'images comprend deux unités de description pour chaque groupe d'images, la première desdites unités de description étant relative au mode de codage utilisé pour chaque image du groupe et la seconde unité de description étant relative à des paramètres de codage utilisés par le dispositif de codage. De manière préférée, le dispositif comprend des moyens d'enregistrement d'au moins une desdites unités de description, destiné à enregistrer au moins une unité de description lorsqu'elle est nouvelle par rapport à l'unit é de description du groupe d'images précédent. Avantageusement, le dispositif de codage est conforme à la norme de codage H264. Avantageusement, ledit message est un message de type SEI. Les messages SEI sont reconnus par la norme H264. L'utilisation d'un message SEI peut donc permettre de garder la compatibilité avec des codeurs et décodeurs conformes à la norme H264 et implémentant l'invention. Ainsi, lorsqu'un décodeur reçoit le message, soit il parvient à l'interpréter, soit il l'ignore et dans ce dernier cas ne met pas en oeuvre l'invention. Selon un mode de réalisation préféré, ledit message indique pour chaque unité de description laquelle des unités de description est identique à l'unité de description correspondante relative au groupe précédent. Selon un second aspect, l'invention concerne également un procédé de codage de données vidéo codant un flux d'images en groupes d'images, chaque groupe d'images comprenant au moins une unité de description relative au codage dudit groupe d'images. Selon l'invention, le procédé de codage comprend une étape d'insertion dans le flux de données d'au moins un message indiquant si l'unité de description du groupe d'images courant est identique à l'unité de description relative au groupe d'images précédent. Selon un troisième aspect, l'invention concerne également un dispositif de décodage de données vidéo comprenant des moyens de décoder un flux de données codées avec un dispositif selon l'une des revendications précédentes. Selon l'invention le dispositif de décodage comprend - des moyens d'analyser lesdits messages, - des moyens de décoder la au moins une prochaine unité de description si ledit message indique que cette unité est différente de l'unité de description précédente, sinon, si elle est identique, de ne pas la décoder. De manière préférée, le dispositif de décodage comprend des moyens 15 d'enregistrement d'au moins une desdites unités de description, destiné à enregistrer au moins une unité de description reçue lorsqu'elle est nouvelle. Selon un quatrième aspect, l'invention concerne également un procédé de décodage de données vidéo codées avec un dispositif selon l'une des revendications précédentes. Selon l'invention, le procédé de décodage comprend les étapes - d'analyse desdits messages, - de décodage de la au moins une unité de description si ledit message indique que cette unité est différente de l'unité de description précédente, sinon, si elle est identique, de non décodage de cette unité. Selon un cinquième aspect, l'invention concerne également un train de données numériques comprenant des groupes de données numériques, chaque groupe comprenant un champ d'un premier type, au moins un champ d'un second type et une pluralité de champs d'un quatrième type. Selon l'invention, le champ de premier type indique si le champ de second type est identique ou différent du champ de second type du groupe précédent temporellement. 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: - la figure 1 représente la structure du GOP 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 GOP lors du décodage du GOP. 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 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 dans lequel des informations sont insérées dans le flux afin de faciliter son utilisation ultérieure. Dans l'art antérieur, la structure d'un GOP comprend des NALs de type SPS et PPS puis une série de NALs codant les images du GOP codées selon le type IDR, I, B ou P. Les NALs codant les images faisant référence aux NALs de type SPS et PPS lors du décodage des NALs images. Selon le mode de réalisation décrit en figure 1, le codeur de type H264 insère au début de chaque GOP un message de type SEI. Ce message est relatif aux NALs de type SPS et PPS qui le suivent immédiatement. La portée d'un message SEI est limité au couple de NALs SPS et PPS qui suivent ce message SEI, un message SEI est donc transmis avant chaque transmission d'entêtes SPS et PPS. Le tableau ci-dessous illustre la partie données utiles (en anglais payload ) d'un message SEI, utilisant un type de données utiles (en anglais payload ) de type 6, correspondant dans la norme H264 à des données utiles (en anglais payload ) 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 - le mot user datajayload_byte est un mot de 8 bits composant une partie du message SEI. Ce mot est utilisé pour coder les données relatives à des applications propriétaires et notamment ici pour coder les données relatives à l'invention comme codé ci-dessous. PayloadSize est égal à 17 octets, dont 16 pour UUID et 1 pour user data_payload_byte. Le mot user data_payload_byte est codé ainsi: 0x00: les 2 NAL units SPS et PPS sont toutes les deux différentes de celles utilisées lors du décodage du GOP précédent. 0x01: la NAL unit SPS est nouvelle mais la NAL unit PPS est identique à celle utilisée lors du décodage du GOP précédent, 0x02: La NAL unit PPS est nouvelle mais la NAL unit SPS est 25 identique à celle utilisée lors du décodage du GOP précédent, 0x03: les 2 NAL units SPS et PPS sont toutes les deux identiques à celles utilisées lors du décodage du GOP précédent. La figure 2 représente un dispositif de codage selon le mode de 30 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 macroblocks, correspondant à des groupes de 1616 pixels. Chaque macrobloc est codé en mode intra ou inter. Que ce soit en mode intra ou en mode inter, un 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 Intra, 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'nl. 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. En sortie du module 112 de codage entropique, les images ainsi codées sous forme de NAL sont transmises à un module 113, avec les NALs de type SPS et/ou PPS associées. Le module 113 comprend deux registres 115 et 114 destiné à enregistrer les NAL de type SPS et PPS. Ces deux registres sont aptes à enregistrer plusieurs NALs de type SPS et PPS. La norme H264 prévoit notamment l'enregistrement de 32 NALs SPS et de 256 NALs PPS permettant d'enregistrer les NALs SPS et PPS sur plusieurs GOPs. Lorsqu'un nouveau GOP est reçu dans le module 113, les NALs SPS et PPS reçues sont alors comparées respectivement aux NALs enregistrées dans les registres 115 et 114. Si les nouvelles NALs SPS et PPS sont différentes des dernières NALs enregistrées, alors les nouvelles NALs SPS et PPS sont écrites respectivement dans les registres 115 et 114. Le module 113 prépare ensuite un message SEI qu'il insère en début de GOP avant de transmettre le GOP en sortie. Ce message SEI est conforme au message SEI décrit en figure 1, selon que les NALs SPS et PPS soient nouvelles ou non. La figure 3 représente un dispositif de décodage selon l'invention. Un module 211 reçoit en entrée le GOP à décoder. Ce module 211 dispose d'un registre 210 pour enregistrer au moins une NAL de type SPS et un registre 209 pour enregistrer au moins une NAL de type PPS. Lorsque le module 211 reçoit un GOP, il décode le message SEI situé en début de GOP. Un organigramme détaillé du décodage fait dans le module 25 211 est donné en figure 4. En fonction de l'analyse du message SEI, les NALS de type PPS et SPS sont décodées ou ignorées comme indiqué en figure 4. Si elles sont définies comme nouvelles dans le message SEI, elles sont décodées, sinon elles ne sont pas décodées. Les NALs SPS et PPS sont enregistrées respectivement dans les registres 210 et 209 si elles sont détectées comme nouvelles. Elles sont en effet alors décodées et peuvent donc être enregistrées dans les registres appropriés. En effet, lors de la réception du GOP suivant, si le message SEI afférant à ce GOP indique que les NAL SPS et PPS ou l'une d'entre elles n'est pas nouvelle par rapport aux NALs SPS et PPS du GOP précédent ou d'un GOP encore plus antérieur, il est important de pouvoir les comparer aux valeurs des SPS et PPS d'au moins un GOP précédent. Lorsque ce message SEI est décodé et que les valeurs des NALs SPS et PPS sont disponibles, soit par consultation du registre dans le cas où elles ne sont pas nouvelles, soit par décodage des valeurs courantes si elles sont nouvelles, 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 coefficient 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 trame F'n reconstruite est crée à partir d'une série de macroblocs. La figure 4 représente un organigramme de fonctionnement d'un procédé de décodage des GOPs selon l'invention. Lors d'une étape S1, le message SEI est lu. Ce message constitue la première NAL du GOP courant. Lors d'une étape S2, ce message SEI est décodé. Plus particulièrement et relativement à l'invention, le champ user data_payload_byte est décodé afin d'étudier si les NALs SPS et PPS sont nouvelles. On teste alors lors d'une étape S3 le contenu de ce champ afin de voir si la NAL SPS est identique ou non à celle du GOP précédent. Si le message SEI est égal à la valeur 0x00 ou 0x01 alors la NAL SPS est nouvelle est on passe à une étape S4. Lors de cette étape S4, on décode la NAL SPS et on passe à une étape S5. Sinon, si lors du test de l'étape S3, la NAL SPS n'est pas nouvelle, on passe alors à l'étape S5 sans passer par l'étape S4. Lors de l'étape S5, on teste le message SEI pour déterminer si la NAL PPS du GOP courant est identique ou non à celle du GOP précédent. Si le message SEI est égal à la valeur 0x00 ou 0x02 alors la NAL PPS est nouvelle est on passe à une étape S6. Lors de cette étape S6, on décode la NAL PPS et on passe à une étape S7. Sinon, si lors du test de l'étape S5, la NAL SPS n'est pas nouvelle, on passe alors à l'étape S7 sans passer par l'étape S4. Lors de l'étape S7, on décode les images du GOP en se basant sur les valeurs des PPS et SPS décodées ou récupérées du GOP précédent. De cette manière, lorsque les NALs SPS et PPS ne sont pas nouvelles par rapport aux NALs SPS et PPS du au moins le GOP immédiatement précédent, les étapes S4 et S6 ne sont pas effectuées, ce qui apporte un gain de temps et une simplicité de décodage au niveau du décodage entropique. Revendications 1. Dispositif de codage de données vidéo comprenant des moyens de coder un flux vidéo en groupes d'images (GOP), chaque groupe d'images comprenant au moins une unité de description (SPS, PPS) relative au codage dudit groupe d'images, caractérisé en ce qu'il comprend des moyens (113) d'insérer dans le flux de données au moins un message (SEI) indiquant si l'unité de description (SPS, PPS) du groupe d'images courant est identique à l'unité de description relative au groupe d'images précédent. 2. Dispositif de codage selon la revendication 1 caractérisé en ce que les moyens (113) d'insérer ledit message insèrent ledit message au début 15 de chaque groupe (GOP) d'images. 3. Dispositif de codage selon l'une des revendications précédentes caractérisé en ce que chaque groupe d'images comprend deux unités de description (SPS, PPS) pour chaque groupe d'images (GOP), la première desdites unités de description (PPS) étant relative au mode de codage utilisé pour chaque image du groupe et la seconde unité de description (SPS) étant relative à des paramètres de codage utilisés par le dispositif de codage. 4. Dispositif de codage selon l'une des revendications précédentes caractérisé en ce qu'il comprend des moyens d'enregistrement (115, 114) d'au moins une desdites unités de description (SPS, PPS), destiné à enregistrer au moins une unité de description (SPS, PPS) lorsqu'elle est nouvelle par rapport à l'unité de description (SPS, PPS) du groupe d'images (GOP) précédent. 5. Dispositif de codage selon l'une des revendications précédentes caractérisé en ce qu'il est conforme à la norme de codage H264. 6. Dispositif de codage selon la revendication 5 caractérisé en ce que ledit message est un message de type SEI. 7. Dispositif selon les revendications 3 à 5 caractérisé en ce que ledit message (SEI) indique pour chaque unité de description (SPS, PPS) laquelle des unités de description (SPS, PPS) est identique à l'unité de description correspondante relative au groupe d'images précédent (GOP). 8. Procédé de codage de données vidéo codant un flux d'images en groupes d'images (GOP), chaque groupe d'images comprenant au moins une unité de description (PPS, SPS) relative au codage dudit groupe d'images (GOP), caractérisé en ce qu'il comprend une étape d'insertion dans le flux de données d'au moins un message (SEI) indiquant si l'unité de description (SPS, PPS) du groupe d'images courant est identique à l'unité de description (SPS, PPS) relative au groupe d'images précédent. 9. Dispositif de décodage de données vidéo comprenant des moyens de décoder un flux de données codées avec un dispositif selon l'une des revendications précédentes, caractérisé en ce qu'il comprend - des moyens (211) d'analyser lesdits messages, - des moyens (211) de décoder la au moins une prochaine unité de description (SPS, PPS) si ledit message (SEI) indique que cette unité est différente de l'unité de description précédente (SPS, PPS), sinon, si elle est identique, de ne pas la décoder. 10. Dispositif de décodage selon la revendication 9 caractérisé en ce qu'il comprend des moyens d'enregistrement (210, 209) d'au moins une desdites unités de description (SPS, PPS), destiné à enregistrer au moins une unité de description reçue (SPS, PPS) lorsqu'elle est nouvelle. 11. Procédé de décodage de données vidéo codées avec un dispositif selon l'une des revendications précédentes, caractérisé en ce qu'il comprend les étapes - d'analyse desdits messages, - de décodage de la au moins une unité de description si ledit message indique que cette unité est différente de l'unité de description précédente, sinon, si elle est identique, de non décodage de cette unité.