Brevet FR2905540A1 — publié le 20080307

La présente invention concerne le domaine des codes correcteurs d'erreurs utilisés lors de la transmission de données à travers un réseau et plus particulièrement une méthode et des dispositifs pour optimiser la mise en oeuvre des méthodes de décodage itératif avec perte. Le principal paradigme des réseaux basés sur le Protocole Internet (Internet Protocol, IP) est de garantir l'intégrité des données transportées. Cette intégrité est généralement obtenue par un double mécanisme de détection des paquets erronés à l'aide d'un code détecteur d'erreur et de retransmission de ces paquets détectés en erreur. Après plusieurs essais, le paquet peut être considéré comme perdu si des erreurs persistent durant les tentatives de transmission. Tous les paquets étant numérotés, la couche de transport, selon le modèle de l'ISO (International Organization for Standardization), peut détecter la perte d'un paquet et déterminer s'il est nécessaire d'obtenir de nouveau le paquet manquant. Dans ce cas, la disponibilité de l'information pour l'application est reportée. La figure 1 illustre ce mécanisme pour une application de transmission vidéo sur un réseau sans fil. La vidéo à transmettre est un groupe d'images. Pour transmettre ce groupe d'images, une méthode de codage est mise en place. Une image est divisée en blocs. Pour une image de référence, un bloc est codé dans l'espace avec une méthode prenant seulement en compte les caractéristiques du bloc. Pour les images suivantes, les blocs peuvent être codés en tenant compte des différences avec les blocs des images qui précédent ou qui suivent. Si les différences sont trop importantes, elles peuvent être de nouveau codées en ne tenant compte que de leurs propres caractéristiques. II en résulte des fragments (slice) qui sont classés par groupe de 188 octets. Ces derniers sont ensuite regroupés en éléments (video frame) de 1316 octets. 2905540 2 Un protocole de gestion en temps réel des en-têtes est associé à la couche de transport pour insérer l'information temporelle lié au moment auquel l'image doit être présentée ainsi que sa position au sein de la vidéo. Un en-tête UDP (User Datagram Protocol) et un en-tête IP sont également ajoutés aux 5 données précédentes. Ces en-têtes contiennent les données qui aideront au cheminement des paquets de leur source vers leur destination. En atteignant une portion sans fil du réseau, un en-tête MAC (Media Access Control) est ajouté aux paquets pour fournir l'information nécessaire à la gestion des paquets dans le sous-réseau sans fil. L'en-tête MAC ajoute 10 également des informations de contrôle des données (checksum). A la fin, un en-tête 'physique' est ajouté aux paquets pour permettre la synchronisation de la transmission et pour ajouter des données de redondance permettant de retrouver les données initiales pour certaines erreurs. Ce mécanisme fonctionne efficacement pour la transmission des 15 fichiers et pour les applications qui ne sont pas en temps réel et de façon plus générale, pour toutes les applications qui échangent des données avec une priorité donnée à l'intégrité des données, au détriment des retards (latence). Il est connu que la vidéo en temps réel n'accepte ni une grande latence, ni beaucoup de gigue (la gigue, ou jitter, est la variation de latence 20 entre les paquets). Le mécanisme de retransmission décrit précédemment à l'inconvénient que pour une erreur sur les 12000 bits qu'un paquet contient, le paquet sera rejeté avec 11999 bits d'information valide. La vidéo en temps réel accepte un certain degré d'imperfection car 25 les images disparaissent après avoir été visualisées et certains défauts peuvent à peine être remarqués par l'ceil. Le paradigme est donc inversé de la transmission de données intègres au coût d'une latence élevée, vers une latence courte et une gigue limitée aux dépens de l'intégrité des données. L'invention permet de résoudre au moins un des problèmes exposés 30 précédemment. L'invention a ainsi pour objet un procédé de décodage itératif d'au moins un paquet de données codées selon un premier code, les données du 2905540 3 paquet comprenant un bloc de données d'information et un en-tête codé selon un second code, let premier code étant un code correcteur d'erreur et le second code étant un code détecteur d'erreur, ce procédé comprenant une étape d'estimation des données du paquet, exécutée de façon itérative, le procédé 5 comprenant en outre les étapes suivantes, - détermination de la validité de l'en-tête par l'utilisation du second code ; et, arrêt du décodage itératif du paquet si l'en-tête est déterminé valide dans l'étape de détermination de la validité de l'en-tête. 10 Le procédé selon l'invention vise donc à améliorer le transfert de données lorsque des erreurs sur ces données sont admises, tel que le transfert d'image ou de son. Ainsi, un paquet dont l'en-tête est valide peut être traité même si les données d'information contiennent des erreurs. Dans un mode de réalisation particulier, le procédé comprend en 15 outre une étape de transfert des données d'information estimées, pouvant contenir des erreurs, pour être utilisées par une application. Toujours selon un mode de réalisation particulier, l'étape de détermination de la validité de l'en-tête est répétée à chaque itération de l'étape d'estimation des données du paquet pour s'assurer de la validité de l'en-tête 20 avant de transmettre les données d'information. L'invention permet ainsi de gérer correctement les données reçues même si celles-ci contiennent des erreurs. Selon un mode particulier de réalisation, l'étape d'arrêt du décodage itératif du paquet est effectuée si, en outre, le nombre de fonctions de parité du 25 premier code qui ne sont pas satisfaites lors de l'estimation des données du paquet est inférieur à un premier seuil prédéterminé de telle sorte que si les données d'information comprennent trop d'erreurs, elles ne sont pas transmises. Toujours selon un mode de réalisation particulier, l'étape d'arrêt du 30 décodage itératif du paquet est effectuée si, en outre, le nombre d'itérations de l'étape d'estimation des données du paquet atteint une valeur prédéterminée 2905540 4 permettant ainsi de contrôler le temps de décodage maximum de chaque paquet. Toujours selon un mode de réalisation particulier, l'étape d'arrêt du décodage itératif du paquet est effectuée si, en outre, la variation de l'estimation 5 des données du paquet entre deux itérations n'atteint pas un second seuil prédéterminé afin d'optimiser le ratio entre le temps de décodage et le nombre d'erreurs contenues dans les données d'information. Selon un mode de réalisation particulier, le second code est un code correcteur d'erreur permettant de corriger l'en-tête si une erreur est détectée. 10 L'invention a également pour objet un dispositif de décodage itératif d'au moins un paquet de données codées selon un premier code, les données du paquet comprenant un bloc de données d'information et un en-tête codé selon un second code, le premier code étant un code correcteur d'erreur et le second code étant un code détecteur d'erreur, ce dispositif comprenant des 15 moyens pour estimer de façon itérative les données du paquet, le dispositif comprenant en outre les moyens suivants, - moyens pour déterminer la validité de l'en-tête par l'utilisation du second code ; et, - moyens pour arrêter le décodage itératif du paquet si l'en-tête est 20 déterminé valide par les moyens pour déterminer la validité de l'en-tête. Le dispositif selon l'invention vise donc à améliorer le transfert de données lorsque des erreurs sur ces données sont admises, tel que le transfert d'image ou de son. Ainsi, un paquet dont l'en-tête est valide peut être traité même si les données d'information contiennent des erreurs. 25 Selon un mode de réalisation particulier, le dispositif comprend en outre des moyens pour transférer au moins une partie des données d'information estimées, pouvant contenir des erreurs, pour être utilisées par une application. Dans un mode de réalisation particulier, le dispositif comprend en 30 outre des moyens pour déterminer la validité de l'en-tête à chaque itération de l'estimation des données du paquet pour s'assurer de la validité de l'en-tête avant de transmettre les données d'information. 2905540 5 Toujours selon un mode de réalisation particulier, les moyens pour arrêter le décodage itératif comprennent des moyens pour estimer le nombre de fonctions de parité du premier code qui ne sont pas satisfaites lors de l'estimation des données du paquet, les moyens pour arrêter le décodage 5 itératif étant adaptés à arrêter le décodage itératif si, en outre, le nombre de fonctions de parité du premier code qui ne sont pas satisfaites est inférieur à un premier seuil prédéterminé. Selon ce mode de réalisation, l'invention permet de contrôler le nombre d'erreurs admises dans les données d'information transmises. 10 Dans un mode de réalisation particulier, les moyens pour arrêter le décodage itératif comprennent des moyens pour estimer le nombre d'itérations de l'estimation des données du paquet, les moyens pour arrêter le décodage itératif étant adaptés à arrêter le décodage itératif si, en outre, le nombre d'itérations atteint une valeur prédéterminée permettant ainsi de contrôler le 15 temps maximum de décodage d'un paquet. Toujours selon un mode de réalisation particulier, les moyens pour arrêter le décodage itératif comprennent des moyens pour estimer la variation de l'estimation des données du paquet entre deux itérations, les moyens pour arrêter le décodage itératif étant adaptés à arrêter le décodage itératif si, en 20 outre, cette variation n'atteint pas un second seuil prédéterminé afin d'optimiser le ratio entre le temps de décodage et le nombre d'erreurs contenues dans les données d'information à transmettre. Toujours selon un mode de réalisation particulier, le second code est un code correcteur d'erreur adapté à corriger certaines erreurs de l'en-tête. 25 L'invention a également pour objet un programme d'ordinateur comprenant des instructions adaptées à la mise en oeuvre de chacune des étapes du procédé décrit précédemment. D'autres avantages, buts et caractéristiques de la présente invention ressortent de la description détaillée qui suit, faite à titre d'exemple non limitatif, 30 au regard des dessins annexés dans lesquels : - la figure 1 illustre un mécanisme standard d'encodage de données pour une application de type transmission vidéo sur un réseau sans fil ; 2905540 6 - la figure 2 représente un graphe de Tanner associé à un code binaire (6,3) ; - la figure 3 représente un modèle de chaîne de transmission classique où une séquence de données est encodée puis modulée par 5 l'émetteur pour être transmise à travers un canal de communication et enfin décodée par le récepteur ; - la figure 4 illustre schématiquement un dispositif pour émettre des paquets de données encodées ; - la figure 5 présente la modification des paquets par l'émetteur, 10 selon l'invention, par rapport au schéma classique de transmission présenté à la figure 1 ; -la figure 6 illustre schématiquement un dispositif de réception de données, selon l'invention ; - la figure 7 illustre le procédé mis en place dans un décodeur selon 15 l'invention, lors de la réception d'un paquet contenant des erreurs ; - la figure 8 illustre le code de type répétition-accumulation utilisé dans un exemple d'implémentation de l'invention ; et - la figure 9 représente le graphe de Tanner associé au type de code de la figure 8, limité à 6 variables. 20 L'invention concerne en particulier les critères d'arrêt pour un décodage itératif de certaines classes des codes de redondance, assurant qu'une certaine partie des données est correcte tandis que d'autres parties des données peuvent encore contenir des erreurs. L'invention est applicable aux systèmes de communication qui tolèrent une certaine marge d'erreur tels que, 25 par exemple, la transmission vidéo ou audio numérique. Les erreurs restantes peuvent être difficiles à détecter, par exemple un pixel d'erreur dans une image, ou peuvent être corrigées par un code externe. L'invention se combine avec plusieurs techniques : protection d'en-tête de paquet, codes redondants qui peuvent être itérativement décodés en 30 utilisant l'algorithme de propagation de croyance (belief propagation algorithm), et des critères d'arrêt pour le décodage itératif. 2905540 7 II est connu que la transmission de données nécessite l'ajout d'information pour assurer une transmission correcte. Par exemple, une lettre ne sera pas délivrée si l'adresse est manquante ou incorrecte. Cependant, la lettre en elle-même peut contenir des fautes d'orthographe ou des erreurs 5 grammaticales. Le même paradigme peut s'appliquer aux paquets d'information numérique. Les en-têtes contenant les informations de gestion sont ajoutés à chaque étape de la construction d'un paquet à transmettre, afin d'assurer le traitement correct tel que le routage. Les en-têtes doivent donc être corrects même si les données transmises contiennent des erreurs. 10 II est également connu qu'un code de correction d'erreurs peut permettre aux données transportées d'être vérifiées et éventuellement corrigées. II existe par exemple des systèmes avec un double mécanisme de code correcteur d'erreurs adapté à transmettre de la vidéo à travers un réseau sans fil utilisant le Protocole Internet. Selon ces systèmes, dans un premier 15 temps, un code correcteur d'erreurs de type BCH est utilisé pour protéger les paquets de la corruption. Dans un second temps, un code correcteur d'erreurs de type Reed-Solomon (RS) est utilisé pour créer des paquets permettant de reconstruire des paquets perdus à cause d'une congestion du réseau. Le graphe de Tanner est un outil d'analyse des codes redondants 20 comprenant deux types de noeuds. Certains noeuds représentent des variables (représentés par des cercles) et correspondent à des données ou à des information de parité. D'autres noeuds sont des noeuds de contrôle (représentés par des carrés). Un graphe de Tanner détermine la relation entre les données et les informations de parité. En associant un code linéaire binaire à un graphe 25 de Tanner, un bit de parité prend la valeur donnée par la somme modulo 2 des bits d'information selon les noeuds de contrôle. Un noeud de parité est connecté à un noeud de contrôle lui-même connecté à plusieurs noeuds de données. La figure 2 illustre un graphe de Tanner associé à un code binaire (6,3), c'est-à-dire un code de longueur 6 comprenant 3 bits de parités. Les trois bits de 30 parités sont représentés sur la droite de la figure. Ce code peut être défini selon les relations suivantes (XI à X6 appartenant à {0,1}), X4 =X,+XX 2905540 8 X5 =X,+X2 X6 =X2+X3 Les codes de parité à faible densité (Low Density Parity Check, LDPC) ainsi que les codes itératifs peuvent se représenter sous forme de 5 graphe de Tanner. La figure 3 représente schématiquement un modèle de chaîne de transmission classique où une séquence de données est encodée puis modulée par l'émetteur pour être transmise à travers un canal de communication et enfin décodée par le récepteur. En supposant que v est la 10 séquence encodée la plus probable pour une séquence de données u, le rapport des probabilités a posteriori que l'élément u; de la séquence u décodée prenne l'une ou l'autre des valeurs binaires possibles, aussi appelé LLR (Log Likelihood Ratio), est déterminé selon l'équation suivante, Pr(u; A(u;) = log[ = 1Ir) Pr(u; = OIr) 15 En notant p(räx,) la probabilité jointe Pr(rr = r,,xi = x,), le rapport de probabilités peut s'écrire sous la forme suivante, E np(ri,e x{c,(1) 1=1 A(u;) = log E ~p(r,xr) xeC,(0) 1=1 où C;(0) (respectivement C;(1)) est l'ensemble des séquences du code ayant 0 (respectivement 1) à la position i. x et r représentent 20 respectivement les séquences de sortie du modulateur et du canal de transmission. ( E 11p(r,,xi)\ P(r; lx; = -1)Pr(x; = -1) :ec,(1) p(r;Ix; =1)Pr(x; =1) E flp(ri,x,) xec,(0) i=1 Le rapport de probabilités est constitué de trois termes tels que, 25 A(u;)=Ac;+Aa(ui)+Afe(C) A(u;) = log 2905540 9 où Aa est le rapport de probabilités du canal de transmission, (ù1)'', log 1ù P P(rilx, =ù1~ P A ~; = 1og ù P(rilxi =1~ 4 r. No ' selon que le canal de transmission soit modélisé avec un bruit binaire symétrique ou Gaussien. 5 Le rapport de probabilités a priori est déterminé par la relation suivante, A. (u1) =1og Pr(xi = -1) Pr(x1 =1) et le rapport de probabilités extrinsèque, c'est-à-dire le rapport de probabilités dérivants de l'ensemble des contraintes imposées sur la séquence 10 par les autres valeurs, est déterminé selon la relation suivante, E rIP(rr,xrr xeC,,(1) r=1 rsi E( 11P(rr,x,) XECl0) r=1 rxi j A7e(C) ne contient pas d'information directement relative à u;. Ainsi, en utilisant cette propriété, il est possible d'utiliser les informations extrinsèques obtenues d'une première passe de décodage dans une seconde passe. 15 Pour le décodage selon l'algorithme de propagation de croyance, un rapport de probabilités est calculé pour chaque noeud. Si le noeud correspond à une variable, le rapport de probabilités représente la possibilité que la donnée initiale est 1 ou O. Si le noeud est un noeud de contrôle, le rapport de probabilités représente la probabilité que le contrôle est vérifié ou qu'il ne l'est 20 pas. Comme il l'a été décrit précédemment, les informations extrinsèques sont indépendantes du rapport de probabilités des données initiales et représentent l'ensemble des contraintes imposées sur la séquence. II peut être montré qu'en ce qui concerne les codes représentés par des graphes de Tanner, le calcul des informations extrinsèques de chaque noeud et la transmission de cette 25 valeur d'un noeud à l'autre sont équivalents au calcul des informations Aie (C)= log 2905540 10 extrinsèques de tous les noeuds. Le calcul du rapport de probabilités de chaque noeud dépend de la connexion des noeuds. Chaque noeud passe un message à ses voisins. Le message transmis d'un noeud a à un noeud b dépend de tous les noeuds c voisins du noeud a à l'exception du noeud b. 5 Si le noeud a est associé à une variable, le message est le suivant, m(a -* b) =1 m(c -* a) + mp (a) cab où mo(a) est le rapport de probabilités associé au noeud a. Cette valeur peut être le rapport de probabilités du canal de transmission associé à ri ou zéro si le noeud ne représente pas une donnée ou une parité transmise par 10 l'encodeur. Si le noeud a est un noeud (de contrôle, le message est le suivant, m(a -~ b) = 2 tank-' I [T tanhl m(c -> a ) l col; ` 2 )J Le critère d'arrêt le plus simple consiste à compter un nombre d'itérations prédéterminé. II a été également suggéré que le critère d'arrêt 15 pouvait être choisi de sorte à satisfaire tous les contrôles. Si tous les contrôles ne sont pas satisfaits, cela signifie qu'au moins une erreur persiste cependant, la satisfaction de tous les critères ne signifie pas que le décodage est terminé pour le mot de code recherché mais pour un mot de code particulier. En ce qui concerne les turbo-codes, il peut être mis fin aux itérations 20 lorsque les rapports de probabilités de toutes les variables ne varient plus de façon significative. La figure 4 illustre schématiquement le dispositif de l'émetteur selon l'invention. L'émetteur comprend un premier encodeur 410 adapté à encoder les en-têtes des paquets à transmettre selon un code de correction d'erreurs 25 binaire et un second encodeur 430 pour encoder les données et les en-têtes des paquets à transmettre selon un code permettant un décodage utilisant un algorithme de propagation de croyance tel que LDPC ou du type code à répétition-accumulation. Un entrelaceur 420 peut être utilisé pour disperser les erreurs résiduelles, il est optionnel. Le premier encodeur 410 encode les en- 30 têtes des paquets devant être transmis pour ajouter des informations de parité. 2905540 11 L'entrelaceur 420, relié au premier encodeur 410, entrelace les en-têtes des paquets, encodées par le premier encodeur 410, et les données devant être transmises (payload). Le second encodeur 430, relié à l'entrelaceur 420, encode les en-têtes des paquets, encodées par le premier encodeur 410, et les 5 données devant être transmises pour ajouter des informations de parité. La figure 5 illustre la modification des paquets par l'émetteur, par rapport au schéma classique de transmission présenté à la figure 1. Selon l'encodage utilisé pour mettre en oeuvre l'invention, un premier bloc d'informations de parité est déterminé par le premier encodeur selon les en- 10 têtes des paquets et ajouté aux paquets. Un second bloc d'informations de parité déterminées selon les paquets, dans leur ensemble, est déterminé par le second encodeur et ajouté aux paquets. La figure 6 présente schématiquement le dispositif du récepteur selon l'invention qui comprend de préférence, 15 - une mémoire (610) ; un compteur de contrôle de parité (620) ; - un décodeur itératif (630) utilisant le mécanisme de propagation de croyance, ce décodeur comprenant : o des fonctions de contrôle de parité (640) ; 20 o un moteur itératif (650) pour mettre en oeuvre l'algorithme de propagation de croyance ; et o un registre pour mémoriser les données (660) ; un désentrelaceur optionnel (670) ; un détecteur d'erreur (680) basé sur un code de correction 25 d'erreurs binaire ; et -une unité de contrôle des itérations (690). Le décodeur utilise les blocs d'informations de parité ajoutés par l'encodeur pour arrêter le décodage itératif selon le paradigme consistant à accepter un certain nombre d'erreurs dans les données transmises mais de 30 n'accepter aucune erreur dans les en-têtes de ces paquets. Les données encodées sont reçues par le décodeur itératif 630 et mémorisées dans le registre 660 puis désentrelacées, si besoin, par le 2905540 12 désentrelaceur optionnel 670. A chaque itération, le détecteur d'erreur 680 vérifie que l'en-tête est correct à partir des en-têtes issus du désentrelaceur 670. Dès que l'en-tête est correct, l'unité de contrôle des itérations 690 arrête le décodage itératif et les données désentrelacées sont mémorisées dans la 5 mémoire 610. Après un nombre prédéterminé d'itérations, si l'en-tête n'est toujours pas correct, le paquet est considéré comme perdu. Lorsque l'en-tête est correct, le compteur de contrôle de parité 620 compte le nombre de fonctions de parité qui ne sont pas satisfaites à partir des fonctions de contrôle de parité 640. Si le nombre de fonctions de parité qui ne 10 sont pas satisfaites est faible ou nul, le paquet reçu et transmis pour être traité par l'application correspondante e.g., affichage de la vidéo. Si le nombre de fonctions de parité qui ne sont pas satisfaites est grand, le processus itératif est relancé pour un nombre d'itérations prédéterminé. A la fin de ces itérations, si l'en-tête n'est plus valide, les données peuvent être retrouvées dans la mémoire 15 620 pour être transmises à l'application correspondante. Ces données, bien que comportant des erreurs, correspondent à un en-tête correct. Si le nombre d'erreurs i.e., le nombre de fonctions de parité qui ne sont pas satisfaites, a diminué et que l'en-tête est toujours correct, la nouvelle donnée décodée remplace la précédente dans la mémoire 610. 20 Plusieurs stratégies de décodage sont possibles selon le nombre d'erreurs résiduelles tolérées dans les données à transmettre. Le décodeur utilise l'information selon laquelle les fonctions de parités indiquent la présence d'erreurs mais accepte ces erreurs si elles ne sont pas trop nombreuses, c'est-à-dire si le nombre d'erreurs est inférieur à un seuil prédéterminé. Ainsi, le 25 temps de décodage peut être réduit. De plus, les paquets comprenant un faible nombre d'erreurs peuvent être transmis pour être traité par l'application correspondante e.g., affichage de la vidéo, sans que ces paquets soient considérés comme perdu. Pour illustrer l'invention, considérons une application de transmission 30 vidéo dans laquelle les en-têtes des paquets comprennent 40 octets protégés par un code correcteur d'erreur orienté bit, tel que le code BCH ou le code RS. Après que les informations de parité aient été ajoutées aux paquets, les 2905540 13 paquets sont entrelacés et transmis. La figure 7 illustre le mécanisme du décodeur, placé dans le récepteur, lors de la réception d'un paquet contenant des erreurs. Tout d'abord, le compteur d'itération est initialisé à zéro (étape 700) 5 puis le paquet reçu est mémorisé dans le registre 660 (étape 705). Une première itération est faite dans le décodeur itératif i.e., des messages sont transmis de noeuds en noeuds (étape 710). II en résulte une modification des rapports de probabilités des données contenues dans le registre 660. Après avoir été désentrelacées, les données et les informations de parité appartenant 10 à l'en-tête ainsi que les données de détection d'erreur associées sont transmises au détecteur d'erreur 680. II doit être compris que les rapports de probabilités peuvent être transmis au détecteur d'erreur 680 pour un décodage de type 'soft' ou que les valeurs binaires peuvent être transmis au détecteur d'erreur 680 pour un décodage de type 'haro', l'invention étant indépendante du 15 décodage 'sort ou 'haro' de l'en-tête. A l'étape 715, l'en-tête est analysé pour détecter les erreurs. Cette analyse peut être, par exemple, le calcul du syndrome si un code du type Reed-Solomon est utilisé. Si tous les syndromes sont nuls, l'en-tête ne contient aucune erreur, jusqu'à la probabilité donnée par les paramètres du code utilisé. 20 Un test est ensuite effectué pour déterminer si des erreurs sont été détectées dans l'en-tête (étape 720). Si des erreurs sont détectées dans l'en-tête, le processus de décodage doit continuer. Un second test est effectué pour déterminer si le nombre maximum d'itérations autorisé, égal à maxi, a été atteint (étape 750). Si le nombre d'itérations est supérieur au seuil 25 prédéterminé, le décodage est arrêté et le paquet est déclaré perdu (étape 755). Si le nombre d'itérations n'a pas atteint le seuil prédéterminé, le nombre d'itérations est incrémenté de un (étape 745) et une nouvelle itération est effectuée (étapes 710 à 720). Si à l'étape 720 aucune erreur n'a été détectée dans l'en-tête, la 30 donnée reçue est désentrelacée et mémorisée dans la mémoire 620 (étape 725). A nouveau, il doit être compris que les rapports de probabilités peuvent être transmis au détecteur d'erreur 680 pour un décodage de type 'soif ou que 2905540 14 les valeurs binaires peuvent être transmis au détecteur d'erreur 680 pour un décodage de type 'hard'. Les fonctions de contrôle de parité sont analysées et le nombre de fonctions de contrôle de parité qui ne sont pas satisfaites est déterminé (étape 5 730). Il est possible d'utiliser un troisième système de correction d'erreur. La position des données qui ne remplissent pas les critères des fonctions de contrôle de parité est alors transmise à ce troisième système de correction d'erreur. Le nombre de fonctions de contrôle de parité non satisfaites, NB_fns, 10 est comparé à un seuil prédéterminé (étape 735). La valeur de ce seuil est déterminée selon l'application visée et selon sa capacité à supporter les erreurs. Si le nombre de fonctions de contrôle de parité non satisfaites est inférieur à ce seuil, la décision, c'est-àdire les données décodées, stockée dans la mémoire 610, est transmise (étape 740) pour être traité par l'application 15 correspondante e.g.,affichage de la vidéo. Si le nombre de fonctions de contrôle de parité non satisfaites est supérieur ou égal à ce seuil, de nouvelles itérations sont faites (étape 760). Le nombre d'itérations qui doivent être effectuées est déterminé, ici, par la variable max2. D'autres stratégies peuvent être utilisées comme, par exemple, contrôler la réduction du nombre de 20 fonctions de contrôle de parité non satisfaites. Le nombre d'itérations est incrémenté de un (étape 765) et le nombre d'itérations est comparé au seuil prédéterminé (étape 770). Si le nombre d'itérations est inférieur au seuil prédéterminé, les trois dernières étapes (étapes 760 à 770) sont répétées. 25 Après ces itérations, les fonctions de parité non satisfaites sont marquées pour améliorer la correction d'erreur si un troisième système de correction d'erreur est utilisé (étape 775). Un second contrôle de l'en-tête est nécessaire (étape 785) pour le cas où l'algorithme de transmission de messages de noeuds à noeuds a modifié 30 les valeurs de probabilités de l'en-tête. L'étape 785 est identique à l'étape 715. Si des erreurs sont détectées dans l'en-tête, il est possible de transmettre la décision précédente (étape 790), mémorisée dans la mémoire 610, pour être 2905540 15 traitée par l'application correspondante e.g., affichage de la vidéo. Si aucune erreur n'est détectée, la décision obtenue après ces itérations remplace celle qui est mémorisée, elle est transmise pour être traité par l'application correspondante e.g., affichage de la vidéo (étape795). 5 Le procédé et les dispositifs de l'invention ont été mis en oeuvre avec le code Reed-Solomon comme premier code correcteur d'erreur et un code de type répétition-accumulation comme second code. Un calcul de syndrome est utilisé pour déterminer si l'en-tête contient ou non des erreurs. La figure 8 illustre le code de type répétition-accumulation utilisé. Un répéteur 810 est suivi 10 d'un entrelaceur 820. Les données entrelacées sont divisées par 1+D, réalisé à partir d'un additionneur 830 et d'un registre 840. La figure 9 représente le graphe de Tanner associé à ce type de code, limité ici à 6 variables. Les deux encodeurs sont facilement implémentés de façon logicielle, avec un programme exécuté par un microprocesseur. Le décodeur selon l'invention peut également 15 être implémenté de façon logicielle si l'application ne requière pas une large bande passante. Si l'application nécessite une large bande passante, par exemple si de la vidéo haute définition est utilisée, l'implémentation doit être réalisée, au moins partiellement, de façon matérielle, en particulier en ce qui concerne le module lié à l'algorithme de propagation de croyance. Le processus 20 de contrôle des itérations n'est pas critique, en terme de temps, et peut être réalisé de façon logicielle. Naturellement, pour satisfaire des besoins spécifiques, une personne compétente dans le domaine des codes correcteur d'erreurs pourra appliquer des modifications dans la description précédente. REVENDICATIONS 1. Procédé de décodage itératif d'au moins un paquet de données codées selon un premier code, lesdites données dudit au moins un paquet comprenant un bloc de données d'information et un en-tête codé selon un second code, ledit premier code étant un code correcteur d'erreur et ledit second code étant un code détecteur d'erreur, ce procédé comprenant une étape d'estimation desdites données dudit au moins un paquet, exécutée de façon itérative, le procédé étant caractérisé en ce qu'il comprend en outre les étapes suivantes, o détermination de la validité dudit en-tête par l'utilisation dudit second code (715) ; et, o arrêt du décodage itératif dudit au moins un paquet si, au moins, ledit en-tête est déterminé valide dans ladite étape de détermination de la validité dudit en-tête (720). 2. Procédé selon la revendication 1 caractérisé en qu'il comprend 20 en outre une étape de transfert d'au moins une partie dudit bloc de données d'information estimé (740, 790, 795). 3. Procédé selon la revendication 1 ou la revendication 2 caractérisé en ce que ladite étape de détermination de la validité dudit en-tête 25 (785) est répétée à chaque itération de ladite étape d'estimation desdites données dudit au moins un paquet. 4. Procédé selon l'une quelconque des revendications précédentes caractérisé en ce que ladite étape d'arrêt du décodage itératif dudit au moins un 30 paquet est effectuée si, en outre, le nombre de fonctions de parité dudit premier code qui ne sont pas satisfaites lors de l'estimation desdites données dudit au moins un paquet est inférieur à un premier seuil prédéterminé (730, 735). 2905540 17 5. Procédé selon l'une quelconque des revendications précédentes caractérisé en ce que ladite étape d'arrêt du décodage itératif dudit au moins un paquet est effectuée si, en outre, le nombre d'itérations de ladite étape 5 d'estimation desdites données dudit au moins un paquet atteint une valeur prédéterminée (770). 6. Procédé selon l'une quelconque des revendications précédentes caractérisé en ce que ladite étape d'arrêt du décodage itératif dudit au moins un 10 paquet est effectuée si, en outre, la variation de l'estimation desdites données dudit au moins un paquet entre deux itérations n'atteint pas un second seuil prédéterminé. 7. Procédé selon l'une quelconque des revendications précédentes 15 caractérisé en ce que ledit second code est également un code correcteur d'erreur. 8. Dispositif de décodage itératif d'au moins un paquet de données codées selon un premier code, lesdites données dudit au moins un paquet comprenant un bloc de données d'information et un en-tête codé selon un second code, ledit premier code étant un code correcteur d'erreur et ledit second code étant un code détecteur d'erreur, ce dispositif comprenant des moyens pour estimer de façon itérative lesdites données dudit au moins un paquet (630), le dispositif étant caractérisé en ce qu'il comprend en outre les moyens suivants, o moyens pour déterminer la validité dudit en-tête par l'utilisation dudit second code (680) ; et, o moyens pour arrêter le décodage itératif dudit au moins un paquet si, au moins, ledit en-tête est déterminé valide par lesdits moyens pour 30 déterminer la validité dudit en-tête. 2905540 18 9. Dispositif selon la revendication 8 caractérisé en qu'il comprend en outre des moyens pour transférer au moins une partie dudit bloc de données d'information estimé (610). 5 10. Dispositif selon la revendication 8 ou la revendication 9 caractérisé en ce qu'il comprend en outre des moyens pour déterminer la validité dudit en-tête à chaque itération de l'estimation desdites données dudit au moins un paquet. 10 11. Dispositif selon l'une quelconque des revendications 8 à 10 caractérisé en ce que lesdits moyens pour arrêter le décodage itératif comprennent des moyens pour estimer le nombre de fonctions de parité dudit premier code qui ne sont pas satisfaites lors de l'estimation desdites données dudit au moins un paquet (620), lesdits moyens pour arrêter le décodage itératif 15 étant adaptés à arrêter le décodage itératif si, en outre, ledit nombre de fonctions de parité dudit premier code qui ne sont pas satisfaites est inférieur à un premier seuil prédéterminé. 12. Dispositif selon l'une quelconque des revendications 8 à 11 20 caractérisé en ce que lesdits moyens pour arrêter le décodage itératif comprennent des moyens pour estimer le nombre d'itérations de l'estimation desdites données dudit au moins un paquet (690), lesdits moyens pour arrêter le décodage itératif étant adaptés à arrêter le décodage itératif si, en outre, ledit nombre d'itérations atteint une valeur prédéterminée. 25 13. Dispositif selon l'une quelconque des revendications 8 à 12 caractérisé en ce que lesdits moyens pour arrêter le décodage itératif comprennent des moyens pour estimer la variation de l'estimation desdites données dudit au moins un paquet entre deux itérations, lesdits moyens pour arrêter le décodage itératif étant adaptés à arrêter le décodage itératif si, en outre, ladite variation n'atteint pas un second seuil prédéterminé. 2905540 19 14. Dispositif selon l'une quelconque des revendications 8 à 13 caractérisé en ce que ledit second code est un code correcteur d'erreur. 15. Programme d'ordinateur comprenant des instructions adaptées à 5 la mise en oeuvre de chacune des étapes du procédé selon les revendications 1 à 7.