FR 2691272 A1 19931119 FR 9205923 A 19920515 Procédé de codage d'images très bas débit et dispositif de codage mettant en oeuvre ce procédé. La présente invention concerne un procédé de codage d'images à très bas débit et un dispositif de codage mettant en oeuvre ce procédé. Le très bas débit s'adresse, entre autres, à des applications du type visiophone pour lesquelles un débit de 64 Kbit/s est envisagé. D'autres applications requièrent des débits différents, ainsi des valeurs de 32 Kbit/s, 16 Kbit/s,... etc sont tout à fait possibles avec les techniques actuelles qui font notamment appel aux procédés de compression d'images numériques. Transmettre des images animées à de si faibles débits demande, outre la réduction de la résolution spatio-temporelle des images, I'utilisation de modes de codage mettant à profit la redondance spatiale et temporelle du signal à transmettre. Cela se traduit par le développement de modes de codage intra-image, inter-image et interimage compensé en mouvement. L'information codée et donc transmise à l'aide de ces deux derniers modes provient du résidu entre l'information courante (prise par exemple sur un bloc de 8 x 8 pixels) et sa prédiction dans l'image précédente reconstruite. II s'avère que de tels débits ne sont possibles que si on utilise fortement les modes de codage inter-image et inter-image compensé en mouvement. Cet état de fait est entièrement confirmé par les statistiques de fonctionnement des codeurs sur des séquences d'images. Ces statistiques montrent que le codage inter-image au sens large est utilisé à plus de 90 % voire 100 % quelle que soit la séquence traitée. Cependant, I'inconvénient d'utiliser en permanence les modes inter-image réside dans la propagation temporelle des erreurs résiduelles de transmission au niveau du décodeur. Cette propagation survient lorsque, à l'issue d'une erreur de transmission, un bloc n'est pas restitué de façon correcte (erreurs de transmission) ; par la suite tout nouveau bloc dont la prédiction correspond au moins à une partie de ce bloc est reconstruit de façon erronée. Le seul moyen, au niveau du codeur, pour réduire la propagation des erreurs consiste à transmettre périodiquement des blocs codés en intra-image. Dans l'Art Connu, il a été proposé des procédés permettant de forcer le codage de blocs en mode intra-image. Dans ce cadre de solutions connues, on peut citer de façon non exhaustive la norme destinée à la transmission d'images à très bas débit relatif au domaine de la visiophonie "CCITT specialist Group on Coding for vis uval Telephony Recommandation H.261", Version 11/1989. Pour cette application le débit peut varier de 64 Kbit/s à n x 64 Kbit/s. On peut également citer un mode de forçage intra-image résidant dans le codage en intra-image d'un ou plusieurs blocs de positions prédéfinies dans chacune des images à transmettre. Un tel procédé est décrit dans le livre de R. Plompen: "Motion Video Coding for Visual Telephony", p 251-253, 1989, "PTT Research Neher. lab.". Le problème inhérent au forçage intra-image réside dans le fait qu'un bloc codé en intra-image est très généralement d'un coût nettement plus élevé que ce même bloc codé à l'aide des modes interimage ou inter-image compensé en mouvement. On peut définir le coût comme étant le nombre de bits nécessaires pour coder une image ou un bloc d'image. En outre, pour ce mode, on est obligé de faire appel à une régulation de débit. De fait, forcer le mode intra-image de façon arbitraire ou systématique perturbe fortement la procédure de régulation de débit en raison du surcoût de codage engendré par cette procédure. La perturbation se situe principalement au niveau de la régulation et cette perturbation est d'autant plus importante que l'on régule avec une mémoire tampon de taille réduite en raison, d'une part, du débit alloué et, d'autre part, du délai de transmission, lequel doit être également de faible valeur. L'invention se fixe pour but de pallier les inconvénients de l'Art Connu tels qu'ils viennent d'être rappelés. Pour ce faire, I'invention propose un procédé qui consiste à ne provoquer le codage intra-image périodiquement qu'en dernière nécessité et par contre à favoriser le choix de ce mode de codage en tenant compte - d'un coefficient externe qui permet de réduire virtuellement le coût en mode intra-image, - de l'état de remplissage de la mémoire tampon, - du nombre d'images durant lesquelles un bloc n'a pas été codé en intra-image depuis son dernier traitement en mode intra-image, compte tenu de la période de rafraîchissement. Le principal intérêt est de procéder au codage intra-image en mode forcé de telle façon que les effets chaotiques au niveau de la régulation de débit en soient réduits. L'invention a donc pour objet un procédé de codage de blocs d'images selon un mode de codage choisi parmi les suivants : un premier mode de codage inter-image simple, un deuxième mode de codage interimage avec compensation de mouvement ou un troisième mode de codage intra-image; caractérisé en ce qu'il comprend une étape préliminaire consistant en la détermination du coût initial de codage associé à chacun desdits modes et au moins l'une des étapes suivantes - détermination d'un nouveau coût pour ledit troisième mode de codage tenant compte d'au moins un paramètre externe prédéterminé - détermination d'un nouveau coût pour ledit troisième mode de codage tenant compte de paramètres de transmission desdits blocs codés et en ce qu'il comprend les étapes supplémentaires suivantes - comparaison dudit nouveau coût aux coûts de codage respectifs des premier et deuxième modes de codage - et forçage du codage desdites images en mode de codage intra image si le nouveau coût est inférieur, simultanément, aux premier et second coûts de codage. L'invention a encore pour objet un dispositif de codage pour la mise en oeuvre de ce procédé. L'invention sera mieux comprise et d'autres caractéristiques et avantages apparaîtront à la lecture de la description qui suit et des figures annexées, et parmi lesquelles - la figure 1 illustre schématiquement un mode de réalisation d'un codeur selon l'invention, - la figure 2 illustre schématiquement un mode de réalisation d'un décodeur correspondant au codeur de la figure 1, - la figure 3 illustre un aspect particulier du procédé selon l'invention, - la figure 4 est un diagramme synoptique illustrant le procédé de codage selon l'invention. Un exemple de réalisation d'un codeur selon l'invention est illustré schématiquement par la figure 1 . Pour fixer les idées, on supposera qu'il fonctionne sur une base de codage par transformée cosinus discrète appliquée à des blocs de pixels de taille 8 x 8. Cette transformée est plus connue sous le sigle anglo-saxon "DCT" ("Discrete Cosine Transform"). Ce codeur possède trois modes de codage possibles - le mode intra-image - le mode inter-image dans lequel la différence entre le bloc courant et son homologue dans l'image précédente est codée, - le mode inter-image compensé dans lequel la différence entre le bloc courant et le bloc déplacé dans l'image précédente représentatif de la meilleure prédiction est codée. Toutes ces techniques sont bien connues en soi. On peut se reporter, à titre d'exemple non limitatif, à l'ouvrage suivant: "Les Techniques de l'lngénieur" partie E 5500; pages 1-11 ; "Compression du signal vidéo" par C.J. RICHARD. Le codeur selon l'invention, qui est représenté à la figure 1, comporte, un dispositif de codage proprement dit sous la référence 1, représenté à l'intérieur d'une ligne fermée en pointillés couplé, entre un dispositif classique d'acquisition de signaux vidéo 2 provenant, par exemple, d'une caméra de télévision 3 et un canal de transmission 4. De façon connue, le dispositif d'acquisition de signaux vidéo 2 effectue notamment la transformation des lignes de balayage en blocs de pixels qui sont présentés au dispositif de codage. Le dispositif de codage 1 comprend de façon connue un prédicteur (P) 14, un quantificateur (Q) 7, un dispositif de reconstruction d'images transmises 11 ainsi qu'un allocateur de code formé par un dispositif de codage à longueur variable (CLV) 8. Des codes de type Huffmann peuvent être utilisés. L'image vidéo à transmettre est appliquée par le dispositif d'acquisition d'images 2 à une première entrée d'un circuit soustracteur 5 dont l'autre entrée est reliée à la sortie du prédicteur d'images 14, à un circuit de commande de mode de codage 19, et à un circuit de compensation et d'estimation de mouvement 15. La sortie du circuit soustracteur 5 est reliée à l'entrée du quantificateur 7 par l'intermédiaire d'un dispositif de calcul de transformée cosinus (T) 6. Le prédicteur 14 délivre une valeur de prédiction p sur la première entrée du circuit soustracteur 5. Chaque valeur d'image à coder, que l'on peut référencer X, est diminuée de sa valeur de prédiction p appliquée sous la forme de la différence d = X-p à l'entrée du quantificateur 7 après avoir été transformée par le dispositif de calcul de transformée cosinus 6. A chaque niveau de quantification l'alîocateur de code 8 associe un code Ci qui est mémorisé dans une mémoire tampon 18 avant d'être transmise sur le canal de transmission 4. Un circuit de multiplexage 17 assure la transmission des codes Ci dans une mémoire tampon 18. Le signal quantifié obtenu à la sortie du circuit de quantification 7 est appliqué sur une première entrée du circuit de reconstruction 1 1 par l'intermédiaire d'un circuit de déquantification (Q-1) 9 et d'un dispositif de calcul de transformée cosinus inverse (T-1) 10. La deuxième entrée du circuit de reconstruction 1 1 est reliée à la sortie du circuit de prédiction 14 via un aiguilleur K1. Celui-ci est commandé par le circuit de commande de mode 19. Le circuit de reconstruction d'image 11 reçoit donc sélectivement la sortie du prédicteur 14 selon le mode de codage choisi : intra ou inter-image. Les échantillons d'image reconstruits par le circuit de reconstruction d'images 1 1 sont mémorisés à l'intérieur d'une mémoire d'image 13. Ces échantillons sont ensuite appliqués, d'une part, au circuit de prédiction 14 au travers d'un dispositif de compensation de mouvement 15 et, d'autre part, enregistrés dans la mémoire d'image 13 pour mettre en mémoire chaque image reconstruite qui précède l'image courante reconstruite. Ce dispositif de commande 19 permet d'effectuer la commutation des modes de codage inter-image ou intra-image. II agit sur le commutateur K1 précité et sur un second commutateur K2 reliant de façon sélective l'entrée du dispositif de calcul de transformée 6 au dispositif d'acquisition vidéo ou au circuit soustracteur 5. Selon l'état de remplissage de la mémoire tampon 18 les coefficients sont quantifiés par le quantificateur 7 et déquantifiés par le déquantificateur 9 avec un pas de quantification calculé par l'organe de régulation. Une liaison Iq transmet au quantifieur 7 et au circuit de codage à longueur variable 8 des paramètres de régulation. Le codage à longueur variable qui est assuré par l'allocateur de code 8 adapte les mots de code aux propriétés statistiques des informations à transmettre. Le rôle de régulation attribué à la boucle formée par les éléments 5 à 19 est de faire évoluer les différents paramètres de codage du contenu de l'image à transmettre en vue d'assurer le débit requis. Le multiplexage vidéo qui est effectué par le multiplexeur 17 a pour fonction d'engendrer le train binaire contenant entre autres les coefficients codés, les modes de codage intra, inter-image ou inter-image compensé, et les mots de synchronisation des différentes structures des images. Selon l'état de remplissage de la mémoire tampon, la quantification des coefficients est faite plus ou moins grossièrement de façon à avoir un débit régulé. Le mode de codage par compensation nécessite l'emploi d'un estimateur de mouvement. Celui-ci est disposé dans le bloc des circuits de compensation de mouvement 15. L'estimateur utilise le bloc courant ainsi que la mémoire d'image 13 contenant également l'image précédente reconstruite. Cette mémoire reçoit les pixels reconstruits après quantification et transformation inverses des coefficients. Une fois le déplacement estimé, I'organe de compensation 15 transmet le vecteur V codé au multiplexeur ainsi que le déplacement au prédicteur 14 qui extrait le bloc déplacé dans l'image précédente, pour que la différence entre le bloc courant et sa prédiction soit calculée puis codée. Le codeur représenté sur la figure 1 est de type a posteriori, cela signifie que la décision du mode de codage est prise après avoir codé le bloc courant dans chacun des trois modes de codage possibles. A la suite de cette opération les coûts associés aux trois modes de codage sont calculés. II doit être cependant entendu que la transmission proprement dite s'effectue dans la très grande majorité des cas selon les modes inter-image ou inter-image compensé. Un décodeur correspondant au codeur de la figure 1 est représenté à la figure 2. 11 comporte une mémoire tampon 21 de démultiplexage, un décodeur de mots de code à longueur variable (CLV-1) 22 couplé à un circuit de déquantification (Q-1) 23 et un circuit de calcul de transformée cosinus inverse (T-1) 24, I'ensemble des éléments 21, 22, 23 et 24 étant reliés dans cet ordre en cascade. II comporte également une mémoire d'image 25. Un circuit de reconstruction de l'image 27 reçoit, sur une première entrée, le signal décodé par les éléments 21, 22, 23 et 24 et, sur une seconde entrée, les signaux lus dans la mémoire 25 au travers d'un dispositif de compensation de mouvement et prédicteur 26. Un dispositif de commande 27 assure la commande du compensateur de mouvement 26 et de la mémoire d'image 25 en fonction des mots de code reçus par le décodeur pour placer le circuit de reconstruction d'image 27, soit en mode de codage inter-image, soit en mode de codage inter-image avec compensation de mouvement, soit en mode de codage intra-image. Le procédé de codage selon l'invention va maintenant être décrit de façon détaillée. Le procédé selon l'invention concerne plus particulièrement le processus permettant le forçage en mode intra-image, étant admis que le codage le plus courant s'effectue en mode inter-image ou en mode inter-image compensé. L'introduction des blocs forcés en mode intra-image doit être faite judicieusement pour ne pas perturber le codeur de façon excessive. Cette opération dans un codeur a posteriori est faite selon quatre possibilités qui vont être détaillées ci-après. On va définir les différents coûts associés aux modes de codage intra-image, inter-image et inter-image compensé. Comme il a été rappelé, le coût de codage dépend essentiellement du nombre de bits nécessaires au codage d'une image ou d'un bloc de cette image. En effet, c'est ce nombre de bits qui va être transmis avec quelques bits d'attributs indiquant notamment le mode de codage. On appelle dans ce qui suit - Cl : le coût d'un bloc codé en mode inter-image, - C2 : le coût d'un bloc codé en mode inter-image compensé, - C3 : le coût d'un bloc codé en intra-image. Selon l'invention, on définit quatre types de forçage permettant de passer du mode inter-image ou inter-image compensé au mode intraimage: 1. - passage favorisé en mode intra 2. - forçage par rapport à l'état de remplissage de la mémoire tampon 3. - forçage progressif 4. - forçage inconditionnel On va indiquer dans ce qui suit les critères de validation de ces types de forçage. Le passage favorisé en mode intra a lieu à chaque fois que la relation suivante est satisfaite C3 Sc Sc Si ces deux conditions sont remplies simultanément, alors le mode intra est retenu. Cela revient à abaisser virtuellement le coût du codage intra-image. II s'agit d'un mode de fonctionnement pour lequel le coût de codage intra-image est favorisé dans le rapport S~c ou seuil. Ce seuil peut être choisi par l'utilisateur, par exemple en fonction de paramètres propres à une application donnée. Pour fixer les idées, on peut choisir S~c = 1.1. Le forçage par rapport à l'état de remplissage de la mémoire tampon 18 a lieu à chaque fois que la relation suivante est satisfaite C3x buffer Sb S cri b Si ces deux conditions sont remplies simultanément, alors le mode intra-image est retenu. Avec - C3 le coût initial en mode intra-image, - "buffer" état de remplissage de la mémoire tampon, - S 6 un seuil à partir duquel on favorise le mode intra-image. Ici, le mode intra-image est forcé relativement à l'état de remplissage de la mémoire tampon 18. Si cette mémoire est faiblement remplie, on favorisera d'autant plus le mode intra. Pour fixer les idées, on peut choisir S~b = 100 avec une mémoire tampon d'une taille de 2600 bits. Le forçage progressif a lieu de la façon suivante On force les blocs en intra-image au moins une fois toutes les N images codées correspondant à la période de rafraîchissement. Pour cela un compteur (non représenté sur la figure 1) attribué à chaque bloc indique le nombre de fois où le bloc n'a pas été codé en intra-image. Ces compteurs seront de façon préférentielle inclus dans les circuits de choix de mode 12. Un exemple d'image découpée en blocs avec les compteurs associés, est illustré par la figure 3. Sur cette figure 3, on a représenté de façon schématique la répartition des états de comptages associés aux blocs d'une image. Les blocs pour lesquels l'état de comptage est zéro, sont des blocs codés en intra-image à un instant t. Les blocs associés à un comptage N, seront forcés en intra-image à l'instant T + 1, c'est-à-dire lors du codage de l'image suivante. Les autres blocs sont associés à des comptages intermédiaires. Le codage s'effectue de façon normale en inter-image ou en inter-image compensé en mouvement. Ce mode de forçage réduit virtuellement le coût du mode intraimage au fur et à mesure que le contenu du compteur du bloc se rapproche de la valeur N tel que si x > N/2 Alors C3' = C3/(l + (x- N/2)/Sr) Si C3' Avec - C3 le coût initial, - C3' le coût réduit du mode intra-image ou coût virtuel - x le contenu du compteur du bloc - N la période de rafraîchissement exprimée en nombre d'images - Sr le coefficient de réduction du coût; par exemple = 10. A l'aide de ce critère, au delà de N/2, le coût C3 décroît dans le but de favoriser le mode intra-image. Le forçage inconditionnel a lieu de la façon suivante Si malgré tout, après N images, un bloc n'a pas encore été codé en intra-image ce dernier est forcé en mode de codage intra image quelqu'en soit le coût. Une fois le bloc codé en intra-image son compteur est initialisé à 0 quelque soit la cause qui a amené à choisir ce mode de codage. En outre, pour éviter de forcer simultanément plusieurs blocs sur la même image en début de séquence (durant les N premières images), lors du traitement de la première image de la séquence à traiter, les compteurs des blocs sont initialisés aléatoirement entre 0 et N/2. En définitive, selon le procédé de l'invention, le taux de forçage des blocs en intra-image est fonction des différents paramètres suivants - N l'intervalle de rafraîchissement durant lequel un bloc doit être codé au moins une fois en mode intra-image, - S c le seuil de forçage externe sur le coût intra-image, - S~b le seuil qui permet de profiter de l'opportunité d'une mémoire tampon très faiblement remplie pour transmettre un bloc codé en intra-image, - Sr le coefficient de réduction du coût. La figure 4 illustre le processus qui permet, à partir des coûts de codage d'un bloc dans chacun des trois modes, d'orienter le choix du mode intra-image ou de l'imposer lorsque l'intervalle de rafraîchissement (N) a été atteint. En résumé, il est procédé aux étapes suivantes - étape 0 : détermination des coûts de codage respectifs initiaux C1, C2, C3 pour les modes inter-image, inter-image compensé en mouvement et intra-image, - étape l: détermination si le forçage en mode intra-image doit être favorisé en tenant compte d'un premier seuil prédéterminé Sc - étape Il : détermination si le forçage en mode intra-image doit être réalisé en tenant compte du taux de remplissage de la mémoire tampon et d'un second seuil prédéterminé S~b, - étape lil: détermination si le forçage en mode intra-image doit être réalisé en fonction, essentiellement, d'un paramètre lié à un intervalle de rafraîchissement, - étape IV : détermination si le forçage en mode intra-image doit être réalisé de façon inconditionnelle. La décision est également basée sur un intervalle de rafraîchissement dépassé. Dans tous ces cas, le mode de codage bascule vers le mode intraimage (étape V). Si aucune des conditions précitées n'est satisfaite, ce qui constitue normalement la majorité des cas, le codage s'effectue en mode inter-image ou en mode inter-image compensé en mouvement. Pour ce faire, on exécute une nouvelle étape (étape VII) visant à déterminer si le coût C1 est inférieur ou supérieur à C2. Dans le premier cas, on code l'image en mode inter-image (etape Vll) et dans le second cas en mode inter-image compensé (étape VIII). Si l'on se reporte à nouveau à la figure 1, le choix du mode de codage est réalisé par des circuits référencés 12. 11 peut s'agir de circuits de calcul et de logique spécifiques, seuls ou couplés à un processeur, tel un microprocesseur. Ces choix sont à la portée de l'Homme de Métier. Ces circuits 12 reçoivent notamment le paramètre "buffer" indiquant l'état de remplissage de la mémoire tampon 18 via les circuits de régulation 16. Les seuils S~c et S b peuvent être appliqués manuellement, à titre d'exemple. Dans une variante de réalisation préférée, ces circuits 12 comprennent également divers moyens de comptage, aptent à élaborer les comptages (x) associés aux blocs de l'image (figure 3), et des moyens pour effectuer la comparaison des nouveaux coûts du mode de codage intra-image avec Cl et C2. Les coefficients de codage ainsi que divers attributs associés (mode de codage, vecteur de déplacement en mode compensé, etc...) sont élaborés par les circuits 12 et transmis aux circuits de multiplexage vidéo 17 et à la mémoire d'images reconstruite 13. L'invention n'est pas limitée aux seuls exemples de réalisation précisément décrits, notamment en relation avec le dispositif de codage illustré par la figure 1. En outre, sans sortir du cadre de l'invention, I'intégralité des critères permettant un forçage optimisé en mode intra-image peut ne pas être mis en oeuvre pour une application déterminée. REVENDICATIONS 1. Procédé de codage de blocs d'images selon un mode de codage choisi parmi les suivants : un premier mode de codage inter-image simple, un deuxième mode de codage inter-image avec compensation de mouvement ou un troisième mode de codage intra-image; caractérisé en ce qu'il comprend une étape préliminaire consistant en la détermination du coût initial de codage associé à chacun desdits modes (Cl,C2,C3) et au moins l'une des étapes suivantes - détermination (I, III) d'un nouveau coût pour ledit troisième mode de codage tenant compte d'au moins un paramètre externe prédéterminé - détermination (II) d'un nouveau coût pour ledit troisième mode de codage tenant compte de paramètres de transmission desdits blocs codés et en ce qu'il comprend les étapes supplémentaires suivantes - comparaison dudit nouveau coût aux coûts de codage respectifs des premier (C1) et deuxième (C2) modes de codage - et forçage (V) du codage desdites images en mode de codage intra-image si le nouveau coût est inférieur, simultanément, aux premier et second coûts de codage. 2. Procédé selon la revendication 1 ; caractérisé en ce qu'il comprend l'étape supplémentaire suivante - forçage (V) du codage desdites images en mode de codage intra-image si le nombre d'image successives codées selon le premier ou le deuxième desdits modes de codage est supérieur à un nombre (N) prédéterminé (il). 3. Procédé de codage selon la revendication 1 ; caractérisé en ce que ledit paramètre externe prédéterminé est un coefficient (S~c) supérieur à l'unité et en ce que le nouveau coût de codage est déterminé en divisant le coût de codage initial dudit troisième mode de codage par ce coefficient. 4. Procédé selon la revendication 1; caractérisé en ce qu'il comprend les étapes supplémentaires suivantes - incrémentation d'un comptage (x) associé à chacun desdits blocs d'images pour chaque codage successif réalisé selon ledit premier mode ou ledit deuxième mode - détermination d'un coefficient pour chaque bloc vérifiant une relation déterminée fonction du comptage ; ledit paramètre externe étant égal à ce coefficient, et en ce que le nouveau coût de codage est déterminé en divisant le coût de codage initial dudit troisième mode de codage par ce coefficient. 5. Procédé selon la revendication 4; caractérisé en ce que ledit coefficient vérifie la relation suivante [1 + (x - N 1 2)1 Sr] dans laquelle x est le comptage associé à un bloc déterminé d'une image, N ledit nombre de codages successifs selon le premier mode ou le deuxième mode et Sr le coefficient de réduction du coût le nouveau coût de codage n'étant déterminé que lorsque x est supérieur à N/2. 6. Procédé selon l'une quelconque des revendications 4 ou 5, caractérisé en ce que le comptage associé à chacun desdits blocs est réinitialisé à zéro lorsque le bloc est codé selon ledit troisième mode de codage. 7. Procédé selon la revendication 6 ; caractérisé en ce que l'initialisation du comptage associé auxdits blocs est effectué de façon aléatoire pour la première image à coder. 8. Procédé selon la revendication 1, dans lequel lesdits blocs codés sont transmis via une mémoire tampon (12); caractérisé en ce que lesdits paramètres de transmission sont égaux au rapport du taux de remplissage (buffer) de ladite mémoire tampon (18) sur un coefficient déterminé (S~b) et en ce que le nouveau coût de codage dudit troisième mode est déterminé (II) en multipliant le coût de codage (3) initial par ledit rapport. 9. Dispositif de codage (1) pour la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 8 ; caractérisé en ce qu'il comprend un circuit (12) de choix d'un desdits modes de codage comportant au moins des moyens de comptage associés auxdits blocs et des moyens de comparaison desdits coûts de codage.