Brevet FR2882614A1 — publié le 20060901

La présente invention concerne un procédé et un dispositif de codage d'un signal numérique d'entité multimédia ainsi qu'un procédé et un dispositif de décodage d'un signal numérique d'entité multimédia codé. La présente invention concerne de manière générale le codage et le décodage de signaux numériques d'entités multimédia, c'est-à-dire de signaux numériques de texte, de voix et/ou d'image utilisant une mémoire tampon de taille réduite, en évitant toutefois un débordement de la mémoire tampon. Une application privilégiée particulièrement intéressante, mais non exclusive, de la présente invention est le codage / décodage d'images numériques utilisant une mémoire tampon de taille réduite, par exemple dans le domaine des appareils photo numériques. Une image numérique provenant, par exemple, d'un appareil photo numérique, est constituée d'un ensemble de N x M pixels, où N est la hauteur de l'image en pixels et M la largeur de l'image. L'image ainsi obtenue est codée avant d'être stockée en mémoire. Les données initiales, c'est-àdire l'information représentative des pixels de l'image, sont organisées en un tableau bidimensionnel accessible, par exemple, ligne à ligne. Il est connu que, lorsqu'une technique de codage de signal (par exemple, codage des images) est mise en oeuvre matériellement, le problème de la différence entre le débit d'entrée des données du signal dans le dispositif de codage et le débit de sortie du dispositif de codage doit être géré. En effet, lors du codage du signal, le débit d'entrée est constant alors que le débit de sortie du dispositif de codage est variable et, en général, inférieur au débit d'entrée. Le débit variable de sortie du dispositif de codage peut provoquer la génération d'une quantité de données trop grande par rapport aux capacités de traitement du système qui suit le dispositif de codage. Pour éviter d'avoir trop de données codées à transporter et à traiter par le dispositif de traitement, une mémoire tampon de type FIFO ( First ln First Out ) est couramment utilisée en sortie du dispositif de codage. En effet, la mémoire tampon a pour rôle de mémoriser les données de longueur variable issues du dispositif de codage en vue de leur transport vers le dispositif de traitement par l'intermédiaire d'un bus de communication, ce dernier ayant une capacité de transport fixe et limitée, par cycle d'horloge. Par ailleurs, la taille des données issues du dispositif de codage peut être relativement élevée, ce qui a un impact direct sur la capacité de la mémoire tampon nécessaire au stockage de ces données. Or, le coût des mémoires tampons est généralement d'autant plus élevé que la capacité de stockage est grande. Ainsi, il est préconisé d'avoir une mémoire tampon de taille aussi petite que possible. Toutefois, plus la taille de la mémoire tampon est petite, plus le risque est grand qu'au cours du codage d'images, la mémoire tampon soit pleine, ce qui provoque alors un arrêt du processus. Compte tenu de ce qui précède, il est donc nécessaire d'implanter une mémoire tampon dont la taille est suffisante pour que les chances qu'elle soit pleine sur la durée de vie de l'appareil intégrant le dispositif de codage soient quasi-nulles. Par exemple, s'il s'agit d'un dispositif de codage implanté dans un appareil numérique, il faut s'assurer que la taille de la mémoire tampon soit telle que ce problème ne soit jamais rencontré au cours de la durée d'utilisation de cet appareil. Pour cette raison, il est connu d'utiliser une mémoire tampon de taille relativement grande et dont une grande partie n'est jamais utilisée. De nombreuses études ont été menées depuis plusieurs années dans le but de minimiser l'impact du codage sur la taille des données codées et donc sur le remplissage des mémoires tampons. On connaît, notamment, d'après le brevet US 5,717,394, une méthode pour produire des données de longueur proche d'une valeur prédéterminée, réduisant ainsi la variation du débit de sortie du dispositif de codage. Pour ce faire, une pluralité de données codées de longueurs variables sont combinées en vue de créer des données de longueurs prédéterminées. Toutefois, de telles données doivent malgré tout être maintenues en mémoire afin d'être combinées, nécessitant ainsi des mémoires de tailles relativement importantes. D'autre part, le document intitulé "An Algorithm for Lossless Smoothing of MPEG Video" de Simon S. Lam, Simon Chow, and David K. Y. Yau Applications, Technologies, Architectures, and Protocols for Computer Communication Proceedings de la conférence intitulée Communications architectures, protocols and applications London, United Kingdom - Pages: 281 - 293, 1994, décrit une méthode exploitant le modèle spécifique de variation du flux de données MPEG pour définir un débit évitant une croissance d'utilisation de la mémoire tampon. Cette méthode s'appuie sur une connaissance a priori du moment où l'occupation de la mémoire tampon devient croissante. Cependant, ces méthodes présentent l'inconvénient, d'une part, d'utiliser des mémoires tampons dont la taille reste relativement importante sans toutefois s'assurer qu'un dépassement de la taille de la mémoire tampon sera évité et, d'autre part, d'être peu flexibles face à une forte croissance inattendue de l'utilisation de la mémoire tampon. De plus, selon ces méthodes, la très grande majorité de la capacité de la mémoire tampon n'est jamais utilisée. Il serait par conséquent intéressant de pouvoir réguler le taux 30 d'occupation d'une mémoire tampon servant au stockage de données codées, notamment, en réalisant un codage approprié. La présente invention vise en premier lieu à fournir un procédé de codage d'un signal numérique d'entité multimédia comprenant une pluralité d'échantillons. Le procédé comprend les étapes de codage suivantes appliquées à des échantillons pris dans un ordre prédéterminé en vue de leur stockage dans une mémoire tampon: codage des échantillons selon un mode de codage à longueur variable prédéterminé tant que le taux d'occupation de la mémoire tampon est inférieur à un seuil prédéterminé, codage des échantillons suivants selon un mode de codage à longueur 10 fixe prédéterminé. Ainsi, on détecte si la mémoire tampon recevant les données codées atteint un certain seuil d'occupation. Tant que le taux d'occupation est inférieur à un seuil prédéterminé, l'invention prévoit d'utiliser un mode de codage à longueur variable prédéterminé permettant en moyenne de réduire la taille des données codées. Si ce taux d'occupation dépasse le seuil prédéterminé, alors l'invention prévoit de rendre équivalents le débit d'entrée et le débit de sortie du dispositif de codage. Pour cela, le codage des échantillons suivants est réalisé selon un mode de codage à longueur fixe prédéterminé. Ainsi, le taux d'occupation de la mémoire tampon reste constant. Selon ce procédé, la taille de la mémoire tampon nécessaire est réduite, par exemple, de plus de la moitié, voire d'un facteur 5 à 10, réduisant donc le coût de mise en oeuvre matérielle. De plus, ce procédé permet d'éviter tout débordement de la mémoire tampon. En outre, cette solution est compatible avec un système à flot continu qui est capable de traiter le signal sans interrompre l'envoi de données. Selon une caractéristique, le seuil prédéterminé est inférieur ou égal à la taille de la mémoire tampon diminuée de la longueur maximale d'un code obtenu selon le mode de codage à longueur variable prédéterminé. Selon un mode de réalisation particulier, le mode de codage à longueur variable prédéterminé correspond à un codage Rice-Golomb. 2882614 5 Selon un mode de réalisation particulier, le mode de codage à longueur fixe prédéterminé correspond à un codage binaire. La présente invention a également pour but de fournir un procédé de décodage d'un signal numérique d'entité multimédia codé comprenant une pluralité d'échantillons codés. Le procédé comprend les étapes de décodage suivantes appliquées à des échantillons codés ordonnancés selon un ordre de codage en vue de leur stockage dans une mémoire tampon: décodage des échantillons codés selon un mode de décodage à longueur variable prédéterminé tant que le taux d'occupation simulé de la mémoire tampon à l'issue de l'étape de codage de l'échantillon précédant l'échantillon courant est inférieur à un seuil prédéterminé, décodage des échantillons codés suivants selon un mode de décodage à longueur fixe prédéterminé. Le procédé de décodage selon l'invention s'appuie sur la simulation du taux d'occupation de la mémoire tampon lorsque l'échantillon précédant l'échantillon courant a été codé. Tant que le taux d'occupation simulé est inférieur à un seuil prédéterminé, alors le procédé prévoit d'utiliser un mode de décodage à longueur variable prédéterminé pour décoder cet échantillon courant, ce mode de décodage correspondant au mode de codage utilisé pour coder cet échantillon. Si le taux d'occupation simulé dépasse le seuil prédéterminé, alors le décodage de l'échantillon courant est effectué selon le mode de décodage à longueur fixe prédéterminé. Le mode de codage de l'échantillon courant étant déterminé en fonction du taux d'occupation de la mémoire tampon, le décodage de cet échantillon codé est donc également fonction de ce taux d'occupation. Ainsi, pour déterminer le mode de codage adapté et par conséquent le mode de décodage adapté, il est nécessaire de simuler le taux d'occupation de la mémoire tampon lors du codage. Selon un mode de réalisation particulier, le mode de décodage à longueur variable prédéterminé correspond à un décodage Rice-Golomb. 2882614 6 Selon un autre mode de réalisation particulier, le mode de décodage à longueur fixe prédéterminé correspond à un décodage binaire. Corrélativement, l'invention fournit également un dispositif de codage d'un signal numérique d'entité multimédia comprenant une pluralité d'échantillons. Le dispositif comprend les moyens de codage suivants appliqués à des échantillons pris dans un ordre prédéterminé en vue de leur stockage dans une mémoire tampon: des moyens de codage qui sont adaptés à coder des échantillons selon un mode de codage à longueur variable prédéterminé tant que le taux d'occupation de la mémoire tampon est inférieur à un seuil prédéterminé, des moyens de codage qui sont adaptés à coder les échantillons suivants selon un mode de codage à longueur fixe prédéterminé. Ce dispositif présente les mêmes avantages que le procédé de codage brièvement décrit ci-dessus. La présente invention a également pour but de fournir un dispositif de décodage d'un signal numérique d'entité multimédia codé comprenant une pluralité d'échantillons codés. Le dispositif comprend les moyens de décodage suivants appliqués à des échantillons codés ordonnancés selon un ordre de codage en vue de leur stockage dans une mémoire tampon: des moyens de décodage qui sont adaptés à décoder des échantillons codés selon un mode de décodage à longueur variable prédéterminé tant que le taux d'occupation simulé de la mémoire tampon à l'issue du codage de l'échantillon précédant l'échantillon courant est inférieur à un seuil prédéterminé, - des moyens de décodage qui sont adaptés à décoder les échantillons codés suivants selon un mode de décodage à longueur fixe prédéterminé. Ce dispositif présente les mêmes avantages que le procédé de décodage brièvement décrit ci-dessus. Selon d'autres aspects, l'invention concerne aussi un système de télécommunications, un dispositif de stockage d'entités multimédia, des supports d'information lisibles par un système informatique ainsi que des programmes d'ordinateur pour une mise en oeuvre des procédés de l'invention décrits brièvement ci-dessus. D'autres aspects et avantages de la présente invention apparaîtront plus clairement à la lecture de la description des modes de réalisation qui va suivre, cette description étant donnée uniquement à titre d'exemple non limitatif et faite en référence aux dessins annexés, dans lesquels: - la figure 1 montre de manière simplifiée un système de traitement d'images numériques dans lequel sont mis en oeuvre les procédés de codage / décodage selon l'invention; - la figure 2 représente une grille dite de Bayer selon laquelle sont organisées les données initiales d'image; - la figure 3 représente de manière schématique un appareil de codage selon l'invention; - la figure 4 est un algorithme d'un mode de réalisation du procédé de codage selon l'invention; - la figure 5 est un algorithme d'un mode de réalisation du procédé de décodage selon l'invention; - la figure 6 représente de manière schématique d'un dispositif de codage dans lequel est mis en oeuvre l'invention; - la figure 7 représente de manière schématique d'un dispositif de décodage dans lequel est mis en oeuvre l'invention; - la figure 8 représente de manière schématique un appareil dans lequel est mis en oeuvre l'invention. Les procédés et dispositifs de codage / décodage selon l'invention sont maintenant décrits dans le contexte de leur application à un traitement d'entités multimédia sous la forme d'images numériques. En référence à la figure 1 et désigné par la référence générale notée 1, un système de traitement d'images numériques incorporant un traitement de codage / décodage sans perte selon l'invention fait intervenir un dispositif de codage 10, une unité 11 et un dispositif de décodage 12. On notera ici que les procédés de codage / décodage selon l'invention trouvent une application particulièrement intéressante dans un système de télécommunications comprenant une pluralité de dispositifs terminaux reliés à travers un réseau de télécommunications. Les procédés de codage / décodage selon l'invention sont alors mis en oeuvre dans les dispositifs terminaux du système de façon à autoriser une transmission de fichiers à travers le réseau de télécommunications et réduire ainsi le trafic et les temps de transmission. Selon une autre application particulièrement intéressante, les procédés de codage / décodage selon l'invention sont mis en oeuvre dans un dispositif de stockage d'entités multimédia de façon à pouvoir stocker une grande quantité de données dans une unité de stockage. Comme représenté à la figure 1, le dispositif de codage 10 selon l'invention reçoit en entrée une image originale 10. L'image IO est traitée par le dispositif de codage 10 qui délivre en sortie un fichier codé FC. Le fichier codé FC est fourni à l'unité 11, par exemple, pour être transmis à travers un réseau de transmission ou pour être stocké dans une unité de stockage. Le dispositif de décodage 12 reçoit en entrée le fichier codé FC en provenance de l'unité 11 et fournit en sortie une image décodée ID sensiblement identique à l'image originale 10. Généralement, les données initiales correspondant à l'image originale IO sont organisées en un tableau bidimensionnel qui est accessible uniquement ligne à ligne. Dans ce mode de réalisation, les données initiales sont, par exemple, représentées sur dix éléments binaires et sont organisées selon une grille dite de Bayer, c'est-à-dire selon une alternance de deux canaux sur une même ligne. Un canal comprend l'ensemble des échantillons issus de l'image numérique et correspondant à une couleur. Les couleurs auxquelles il est fait appel sont généralement le rouge (R), le vert (G) et le bleu (B). Un exemple de grille de Bayer est illustré à la figure 2. L'ordonnancement de la grille de Bayer implique une alternance régulière de lignes de type [RGRG...RG] et de lignes [GBGB...GB]. D'autres types d'entrelacement des canaux sont toutefois possibles dans des variantes de réalisation de l'invention. Selon un schéma de fonctionnement du codage d'une image numérique, le dispositif de codage 10 est relié à un bus de communication 32 tel qu'illustré à la figure 3. Le bus de communication 32 permet de faire communiquer le dispositif de codage 10 avec différents éléments du dispositif auquel est associé le dispositif de codage, éléments qui seront détaillés en référence à la figure 8. Etant donné la capacité de traitement du bus de communication 32 lors d'un cycle d'horloge, une mémoire tampon 30 est insérée à la sortie du dispositif de codage et en amont du bus de communication. En effet, le bus de communication 32 n'est capable, lors d'un cycle d'horloge, de transporter qu'un nombre déterminé d'éléments binaires issus du dispositif de codage 10. La mémoire tampon 30 insérée entre le dispositif de codage 10 et le bus de communication 32 mémorise ainsi temporairement les éléments binaires ne pouvant pas être transportés lors d'un cycle d'horloge par le bus de communication. Ces éléments binaires seront transportés par le bus de communication lors des cycles d'horloge suivants. Selon un exemple, le bus de communication 32 est apte à traiter 12 éléments binaires. Comme représenté à la figure 3 (étape i), lorsque le dispositif de codage 10 fournit en sortie 13 éléments binaires, seuls 12 éléments binaires peuvent être véhiculés lors d'un cycle d'horloge par le bus de communication 32. Afin de ne pas perdre l'élément binaire en sus des 12 premiers, celui-ci est mémorisé dans la mémoire tampon 30, tel qu'illustré à l'étape i+1 de la figure 3 par l'indication Occupation = 1 . Ainsi, la présence de la mémoire tampon est due à la nécessaire adaptation du flot de données de longueur variable issu du dispositif de codage à la capacité de traitement du bus de communication 32, ce dernier étant apte à lire un nombre fixe de données à une vitesse fixe. Selon une variante de réalisation, le dispositif de codage comprend la mémoire tampon 30. Comme représenté à la figure 3, lors du cycle d'horloge suivant, à l'étape i + 1, le dispositif de codage 10 fournit en sortie 20 éléments binaires. Lors de ce cycle d'horloge, le bus de communication 32 va véhiculer l'élément binaire déjà présent au sein de la mémoire tampon 30 ainsi que les 11 éléments binaires issus du dispositif de codage 10. Les éléments binaires au-delà des 11 premiers éléments binaires, c'est-à-dire les 9 éléments binaires suivants, sont mémorisés dans la mémoire tampon, tel qu'illustré à l'étape i+2 de la figure 3. Le taux d'occupation de la mémoire tampon est donc de 9 éléments binaires ("Occupation = 9"). Lors de l'étape suivante i + 3, le bus de communication 32 véhicule les 9 éléments binaires contenus dans la mémoire tampon 30 ainsi que 3 éléments binaires produits par le dispositif de codage 10. Le dispositif de codage ayant généré 6 éléments binaires, les éléments binaires au-delà des 3 premiers éléments binaires sont mémorisés dans la mémoire tampon, tel qu'illustré à l'étape i+3. Le taux d'occupation de la mémoire tampon est donc de 3 éléments binaires ("Occupation = 3"). Ensuite, lors de l'étape suivante i+4, le bus de communication 32 va véhiculer les 3 éléments binaires contenus dans la mémoire tampon 30 ainsi que les éléments binaires produits par le dispositif de codage 10. En effet, le dispositif 10 générant 8 éléments binaires, ces derniers sont directement émis sur le bus de communication en complément des 3 éléments binaires déjà présents dans la mémoire tampon. De cette manière, tous les éléments binaires générés par le dispositif de codage sont émis, et la mémoire tampon est vide ("Occupation = 0") tel qu'illustré à l'étape i+4. Ainsi, le taux d'occupation de la mémoire tampon est augmenté du nombre d'éléments binaires issus du dispositif de codage duquel est retranché la taille du bus de communication. Les circuits de type mémoire, en particulier ceux complexes tels que les mémoires tampons, sont particulièrement coûteux. L'invention permet justement de réduire la taille de ces mémoires tampons. En référence à la figure 4, on décrit maintenant le procédé de codage d'image numérique selon l'invention et qui est mis en oeuvre dans le 30 dispositif de codage 10. Le procédé de codage code, notamment, une image numérique capturée au moyen du capteur CCD ( Coupled Charge Device en terminologie anglosaxonne signifiant dispositif à transfert de charge ) d'un appareil photo numérique, le capteur CCD transformant l'énergie lumineuse qui traverse l'objectif en énergie électrique. Dans ce mode de réalisation, l'image numérique est divisée en plusieurs lignes d'échantillons, dans l'ordre de balayage naturel. Chaque ligne est ensuite divisée en une pluralité d'échantillons numériques. Les données issues du capteur CCD sont généralement des données d'amplitude lumineuse codées sur 12 éléments binaires. Ainsi, à chaque cycle d'horloge, ce sont donc les 12 éléments binaires de l'échantillon courant qui sont à traiter par le dispositif de codage. Le procédé de codage selon l'invention prévoit de basculer d'un mode de codage à longueur variable vers un mode de codage à longueur fixe, lorsque la mémoire tampon de sortie du dispositif de codage 10 a atteint un seuil prédéterminé. Le seuil prédéterminé est là pour indiquer que la mémoire tampon est en grande partie remplie. Après que le mode de codage courant ait basculé vers un mode de codage à longueur fixe, le taux d'occupation de la mémoire tampon reste constant, garantissant ainsi qu'aucun dépassement de la mémoire tampon n'aura lieu. Ce basculement est définitif, de telle sorte que le reste des échantillons de l'image à coder et qui suivent, sont codés au moyen d'un mode de codage à longueur fixe. Selon ce procédé, le codage des échantillons permet une optimisation de l'espace mémoire tampon pour les échantillons codés avant le 25 basculement vers le nouveau mode de codage. Ainsi, le choix de la taille de la mémoire tampon doit être fait de telle manière que la taille de la mémoire tampon soit suffisamment grande pour que le nouveau mode de codage n'intervienne que pour une proportion très faible d'échantillons. Selon ce procédé, on évite toutefois d'utiliser une mémoire tampon de trop grande taille qui servirait à éviter un débordement de cette mémoire tampon uniquement sur cette proportion très faible de signaux. Comme représenté à la figure 4, le traitement du processus de codage selon l'invention commence par l'initialisation d'un certain nombre de variables à l'étape E400. Tout d'abord, la variable MODE, représentant le mode de codage courant, est initialisée à 0. Cette variable indique le mode de codage à appliquer sur l'échantillon courant, le mode étant soit un mode de codage à longueur variable, soit un mode de codage à longueur fixe. De plus, la variable MODE identifie un mode de codage particulier parmi une pluralité de modes de codage possibles. Notamment, cette variable prend la valeur 0 pour indiquer un mode de codage à longueur variable, par exemple le codage Rice-Golomb, et la valeur 1 pour identifier un mode de codage à longueur fixe, par exemple le codage binaire. Ensuite, la variable B, ayant pour but de mesurer le taux d'occupation de la mémoire tampon de sortie du dispositif de codage, est initialisée à 0. L'étape E400 est suivie de l'étape E401 consistant à sélectionner le premier échantillon du signal de l'image numérique en vue de son codage. Cette étape est suivie d'un test de vérification du mode de codage devant être utilisé pour coder l'échantillon courant (étape E402). Si la variable MODE a la valeur 0, alors le mode de codage est un mode de codage à longueur variable prédéterminé. Selon l'exemple considéré, le mode de codage à longueur variable est le codage de Rice-Golomb réalisé lors de l'étape E403. L'échantillon courant va ainsi être codé selon un codage entropique de Rice-Golomb décrit ci-après. Au contraire, si la variable MODE a la valeur 1, alors l'algorithme se poursuit par l'étape E410 et le mode de codage est un mode de codage à longueur fixe prédéterminé. A titre d'exemple, ce mode de codage à longueur fixe est le codage binaire (étape E410). De retour à l'étape E403, celle-ci prévoit de coder l'échantillon courant selon un codage de Rice-Golomb. 2882614 13 Cependant d'autres modes de codage peuvent être utilisés, notamment le codage de Huffman ou le codage arithmétique. Cette étape est suivie d'une étape consistant en un calcul de prédiction d'ordre pour les codes de Rice-Golomb. Comme cela est connu dans le domaine du codage, les codes de Rice-Golomb forment une famille de codes à préfixe qui sont dépendants d'un paramètre entier positif k, appelé aussi ordre . Ainsi, le codage de Rice-Golomb d'une valeur x est fonction d'un paramètre k. Le codage de Rice-Golomb est efficace si la valeur du paramètre k est optimale pour chaque échantillon à coder. II est connu que la valeur optimale de k est le nombre d'éléments binaires significatifs de x. Or, la valeur x est inconnue puisqu'elle doit être décodée. Une approche classique consiste à estimer la valeur de l'échantillon numérique à coder à partir de valeurs disponibles d'échantillons précédents du signal numérique à coder. Ainsi, l'ordre k à utiliser dans le codage de Rice-Golomb est déterminé en calculant le nombre d'éléments binaires significatif de x précédemment obtenu. Ensuite, il est prévu de calculer le code de Rice-Golomb associé à la valeur x et de le mettre en mémoire. II est connu de l'état de la technique qu'étant donné l'entier positif k visé ci-dessus, un code de Rice-Golomb est une succession d'éléments binaires composée des deux parties suivantes: - un préfixe qui est un code unaire représentant U = L x / 2k], avec L z J représentant la troncature à la partie entière de z; ainsi, le préfixe est composé de U éléments binaires à 1 et d'un élément binaire à 0, représenté sous la forme (1)u0; et - un suffixe qui est une représentation binaire de la valeur (x 2kU) codée sur k éléments binaires; il s'agit du reste de la division entière de x par 2k Le code de Rice-Golomb de la valeur x est donc calculé comme indiqué ci-dessus à partir du paramètre k déterminé précédemment. Le code de Rice-Golomb de x avec le paramètre k déterminé précédemment est inscrit dans le flot de données. Par exemple, le code binaire de la valeur 134 sur 12 éléments binaires étant 000010000110 , le codage de cette valeur selon le mode de codage de Rice-Golomb dont l'ordre est 7, génère un préfixe de valeur binaire 10 et un suffixe de valeur binaire 0000110 . En effet, le calcul du préfixe est 134 / 2' = 1 et la forme unaire de la valeur 1 est 10 . Le suffixe prend la valeur du reste de la division de 134 par 27, soit la valeur 6 qui, écrite sur 7 éléments binaires, est 0000110 . Ainsi, le code de Rice-Golomb de la valeur 134 est donc 100000110 . Selon ce codage, on passe d'un code dont la taille est de 12 éléments binaires à un code dont la taille est de 9 éléments binaires. A l'issue du codage, l'échantillon codé est envoyé vers la mémoire tampon de sortie du dispositif de codage. La longueur L de l'échantillon codé est déterminée pour être utilisée lorsde l'étape suivante E404 de mise à jour du taux d'occupation de la mémoire 20 tampon. Pour ce faire, la variable B représentant le nombre d'éléments binaires actuellement stockés dans la mémoire tampon du dispositif de codage de sortie, est mise à jour. A l'issue de l'étape précédente (E403), L éléments binaires ont été stockés dans la mémoire tampon de sortie du dispositif de codage au cours d'un cycle d'horloge. Simultanément, on extrait 12 éléments binaires de la mémoire tampon en vue de leur traitement par l'unité de traitement placée en aval. Il convient de noter que si la mémoire tampon contient moins de 12 éléments binaires, alors seuls les éléments binaires présents sont envoyés à l'unité de traitement. En conséquence, à l'issue de ce cycle d'horloge, la nouvelle valeur de la variable B mémorisant le taux d'occupation de la mémoire tampon prend la valeur fournie par l'opération Max (0, B - 12 + L), où B représente le taux d'occupation de la mémoire tampon à l'issue du codage de l'échantillon précédent. L'étape E404 est suivie de l'étape de test sur la variable B (étape E405). Lors de cette étape, on teste si la valeur de la variable B est supérieure ou égale à une valeur prédéfinie BMAX. La valeur BMAX est, par exemple, calculée en retranchant de la taille totale de la mémoire tampon, la longueur maximale possible d'un code de Rice-Golomb. En pratique, on détermine, en général, une forme de limitation de la longueur maximale que le code de Rice-Golomb peut atteindre. Un tel exemple de limitation de taille de code est donné dans le document de M. Weinberger, G. Seroussi, G. Sapiro, intitulé "The LOCO-1 Lossless Image Compression Algorithm: Principles and Standardization into JPEG-LS", Hewlett-Packard Laboratories Technical Report No. HPL-98-193R1, November 1998, revised October 1999. IEEE Trans. Image Processing, Vol. 9, August 2000, pp.1309-1324., en particulier dans le paragraphe 3.3.3 intitulé Limited-Length Golomb codes . Selon un exemple particulier, si la taille maximale possible d'un code de Rice-Golomb est de 30 éléments binaires et si la taille de la mémoire tampon est de 256 éléments binaires, alors la variable BMAX vaut (256 30) soit 226. Ainsi, si le taux d'occupation de la mémoire tampon, mémorisé dans la variable B, est supérieur ou égale à BMAX, alors la mémoire tampon est considérée comme quasiment pleine. En effet, il ne reste dans la mémoire tampon que la place nécessaire à l'écriture d'un code de Rice-Golomb avant de changer de mode de codage et d'utiliser un mode de codage à longueur fixe, notamment le codage binaire selon l'exemple considéré. Dans ce cas, l'étape E405 est suivie de l'étape E406 de remise à jour de la variable MODE. Sinon (B Lors de l'étape E406, la variable MODE est positionnée à la valeur 1 afin de coder le reste des échantillons de l'image selon un mode de codage à longueur fixe, par exemple, un codage binaire, sans toutefois, nécessiter un test du taux d'occupation de la mémoire tampon. Cette étape est suivie de l'étape E407 prévoyant un test afin de déterminer si tous les échantillons ont été traités. Si la vérification est positive, alors l'algorithme de codage se termine à l'étape E408. Dans le cas contraire, l'étape E407 est suivie de l'étape de sélection de l'échantillon suivant (E409). Pour cela, l'échantillon suivant dans l'image est sélectionné, notamment dans l'ordre lexicographique, et devient le nouvel échantillon courant. L'étape E409 est ensuite suivie de l'étape E402 précédemment décrite. De retour à l'étape E402, lorsque la variable MODE a la valeur 1, cette étape est suivie de l'étape E410 consistant à réaliser le codage de l'échantillon courant selon un codage à longueur fixe, par exemple un codage binaire direct basé sur l'écriture de la valeur de l'échantillon courant en base 2. D'autres modes de codage à longueur fixe peuvent être utilisés, par exemple, le codage de Gray ou le codage Décimal Codé Binaire (DCB). Par exemple, si la valeur de l'échantillon courant est 3487, alors son code binaire direct sur 12 éléments binaires est 110110011111 . A l'issue de cette étape de codage, le code binaire est envoyé dans la mémoire tampon de sortie du dispositif de codage. Cette étape E410 est alors suivie de l'étape E407 de test précédemment décrite. En référence à la figure 5, on décrit maintenant le procédé de décodage de l'image numérique codée selon l'invention et qui est mis en oeuvre dans le dispositif de décodage 12 de la figure 1. Comme représenté à la figure 5, le traitement du processus de décodage selon l'invention commence par une étape d'initialisation d'un certain nombre de variables (étape E500). Ainsi, l'étape E500 consiste à initialiser à 0 les variables MODE et B. Comme décrit précédemment, la variable MODE représentant le mode de décodage courant prend, par exemple, la valeur 0 lorsque le mode de décodage à utiliser est un mode de décodage à longueur variable, et la valeur 1 lorsque le mode de décodage à utiliser est un mode de décodage à longueur fixe. Selon l'exemple considéré, le mode de décodage à longueur variable est le décodage de Rice-Golomb et le mode de décodage à longueur fixe est le décodage binaire. Ensuite, la variable B, ayant pour but de simuler le taux d'occupation de la mémoire tampon lors du codage de l'échantillon courant, est initialisée à 0. L'étape E500 est suivie de l'étape E501 au cours de laquelle le dispositif de décodage reçoit, du dispositif précédent, 12 éléments binaires de données à décoder. Ces 12 éléments binaires sont mémorisés dans une mémoire tampon d'entrée afin d'être lus et traités. Selon une variante, si le dispositif précédent possède sa propre mémoire tampon de sortie, alors cette étape n'est pas nécessaire et il suffit de lire les données dans la mémoire tampon de sortie du dispositif précédent. Cette étape E501 est suivie de l'étape E502 consistant à tester le mode de décodage devant être utilisé pour décoder l'échantillon courant codé. Si la variable MODE a la valeur 0, alors le mode de décodage est le mode de décodage à longueur variable prédéterminé. Selon l'exemple considéré, ce mode de décodage à longueur variable est le mode de décodage Rice-Golomb. Cependant, préalablement au décodage, l'étape E502 est suivie de l'étape E503 qui prévoit de tester si le nombre d'éléments binaires présents dans la mémoire tampon d'entrée et correspondant à l'échantillon courant codé est suffisant pour effectuer un décodage de Rice-Golomb. Pour ce faire, la longueur du code Rice-Golomb à décoder est donnée par l'ordre de Rice-Golomb et par la partie unaire du code. Ainsi, on lit dans la mémoire tampon le code unaire stocké, puis un premier test est réalisé sur le code unaire lu dans la mémoire tampon. Ce test consiste à tester la présence du code unaire dans son intégralité, c'est-à-dire la suite d'éléments binaires à 1 terminée par un élément binaire à 0. Si ce test est positif, alors un second test est appliqué afin de déterminer si k éléments binaires supplémentaires sont disponibles dans la mémoire tampon, ces k éléments binaires correspondant à la partie binaire du code. Si le second test est positif, alors on dispose d'un nombre suffisant d'éléments binaires nécessaires au décodage de Rice-Golomb de l'échantillon courant à décoder. L'étape E503 est ensuite suivie de l'étape E504 de lecture et de décodage de l'échantillon courant à décoder. Dans le cas contraire, c'est-à-dire, si le premier test ou le second test est négatif, alors on ne dispose pas de suffisamment d'éléments binaires dans la mémoire tampon pour faire un décodage de Rice-Golomb. Dans ce cas, l'étape E503 est suivie de l'étape E501 déjà décrite. Lors de l'étape E504, on lit dans la mémoire tampon les éléments binaires nécessaires au décodage de Rice-Golomb de l'échantillon courant codé, à savoir les éléments binaires des codes unaires et les K éléments binaires du code binaire de l'échantillon courant codé en vue de leur décodage. Cette étape est suivie de l'étape E505 de décodage des éléments binaires lus à l'étape précédente. Le décodage entropique de l'échantillon courant codé est réalisé lors de l'étape E505. L'étape de prédiction réalisée lors du codage est reproductible durant le décodage. Ceci étant effectué, on définit l'ordre k qui sera utilisé lors du décodage de Rice-Golomb comme étant le nombre d'éléments binaires significatifs de x. Ensuite, l'échantillon courant codé est décodé selon le décodage de RiceGolomb à partir de l'ordre k obtenu. La valeur de l'ordre k étant définie, il est possible de procéder au calcul de x suivant: x = U x 2k, où U est le préfixe lu. Ensuite, le procédé prévoit d'extraire du flux de données les k éléments binaires, ces k éléments binaires formant une représentation binaire Rep_bin. La valeur correspondant à cette représentation binaire Rep_bin est alors ajoutée à x. On obtient donc x de la manière suivante: x = U x 2k + Rep_bin. Ensuite, la longueur L du code Rice-Golomb est déterminée pour être utilisée lors de l'étape suivante E506. Cette étape a pour fonction de remettre à jour la variable B représentant le nombre d'éléments binaires stockés dans la mémoire tampon de sortie du dispositif de codage au moment où ce dispositif code l'échantillon courant. Lors de l'étape précédente (E505), L éléments binaires ont été décodé au cours d'un cycle d'horloge. Simultanément, la mémoire tampon de sortie du dispositif de codage se vide de 12 éléments binaires qui vont être traités par l'unité de traitement située en aval. Si la mémoire tampon comporte moins de 12 éléments binaires alors seuls les éléments binaires présents sont traités. En conséquence, à l'issue de ce cycle d'horloge, la nouvelle valeur du taux d'occupation de la mémoire tampon de sortie du dispositif de codage est de Max (0, B-12 + L), où la variable B représente le taux d'occupation de la mémoire tampon à l'issue du codage de l'échantillon précédent. Cette étape est suivie de l'étape E507 de test de la valeur de la variable B. Lors de cette étape, on teste si la valeur de la variable B, simulant le taux d'occupation de la mémoire tampon de sortie du dispositif de codage, est supérieure ou égale à une valeur prédéfinie BMAX. La valeur BMAX est la valeur calculée lors du procédé de codage. Ainsi, elle est, par exemple, calculée en retranchant de la taille totale de la mémoire tampon de sortie du dispositif de codage, le nombre d'éléments binaires lus lors d'un cycle d'horloge dans la mémoire tampon par l'unité de traitement située en aval. En pratique, si la taille de la mémoire tampon est de 256 éléments binaires et que 12 éléments binaires sont lus lors d'un cycle d'horloge, alors BMAX vaut 244. Ainsi, si le taux d'occupation simulé de la mémoire tampon de sortie du dispositif de codage, mémorisé dans la variable B, est supérieur ou égale à BMAX, alors la mémoire tampon de sortie du dispositif de codage est devenue quasiment pleine à cet instant. En effet, il ne reste dans la mémoire tampon de sortie du dispositif de codage que la place nécessaire à l'écriture et la lecture d'un code à longueur fixe, notamment le codage binaire selon l'exemple considéré. Dans ce cas, l'étape E507 est suivie de l'étape E508 de remise à jour de la variable MODE: la variable MODE est positionnée à la valeur 1, afin de décoder le reste des échantillons de l'image selon un mode de décodage fixe, notamment selon l'exemple considéré, un décodage binaire direct. Cette étape est suivie de l'étape E509 de test déterminant si tout le flux de données a été traité. II en est de même lorsque B se révèle inférieure à BMAX à l'issue de l'étape E507. Lors de l'étape E509, on vérifie si des éléments binaires sont encore à traiter. Si tel est le cas, alors l'étape suivante est l'étape E501 d'écriture de 12 éléments binaires dans la mémoire tampon d'entrée du dispositif de décodage, décrite précédemment. Dans la négative, le décodage est terminé (E510), mettant ainsi fin à l'algorithme de décodage. De retour à l'étape E502, lorsque la variable MODE a la valeur 1, cette étape est suivie de l'étape E511, prévoyant de lire 12 éléments binaires 5 dans la mémoire tampon d'entrée du dispositif de décodage. Cette étape est suivie de l'étape E512 qui prévoit de décoder l'échantillon courant codé selon un décodage à longueur fixe, notamment un décodage binaire. Pour cela, les 12 éléments binaires lus précédemment sont convertis en une valeur qui est la valeur de décodage de l'échantillon courant codé. Cette étape est ensuite suivie de l'étape E509 déjà décrite. La figure 6 représente un dispositif de codage apte à la mise en oeuvre de l'invention. Un dispositif de codage de signal numérique d'entité multimédia 15 selon l'invention est maintenant décrit de façon générale, dans sa configuration matérielle, en référence à la figure 6. Selon un exemple de réalisation, ce dispositif comporte une unité d'acquisition 601 fournissant les données des échantillons de l'image à coder aux unités de codage à longueur variable 602 et de codage à longueur fixe 603. Les flux de données produits par ces deux unités de codage sont fournis à un multiplexeur 604 qui est commandé en fonction du taux d'occupation de la mémoire tampon de sortie 605 du dispositif de codage. La sortie du multiplexeur 604 fournit les données de l'échantillon codé à une unité de traitement 606, par exemple une unité de stockage. La figure 7 représente un dispositif de décodage apte à la mise en oeuvre de l'invention. Un dispositif de décodage de signal numérique d'entité multimédia codé selon l'invention est maintenant décrit de façon générale, dans sa configuration matérielle, en référence à la figure 7. Selon un exemple de réalisation, ce dispositif comporte une unité de lecture 701 des données d'échantillons d'image à décoder fournissant aux unités de décodage à longueur variable 702 et de décodage à longueur fixe 703 les données d'échantillons d'image à décoder. Les flux de données produits par ces deux unités de décodage sont fournis à un multiplexeur 704 qui est commandé par une unité 705. L'unité 705 est apte à simuler le taux d'occupation de la mémoire tampon en sortie du dispositif de codage lors du codage de l'échantillon courant à décoder. La sortie du multiplexeur 704 fournit les données des échantillons décodés à une unité de traitement 706, par exemple une unité de d'affichage d'image. En référence à la figure 8, un dispositif apte à fonctionner en tant que dispositif de codage de signal numérique d'entité multimédia et/ou dispositif de décodage de signal numérique d'entité multimédia selon l'invention est maintenant décrit dans sa configuration matérielle. Le dispositif de traitement d'information de la figure 8 possède l'ensemble des moyens nécessaires à la mise en oeuvre du procédé de codage de signal numérique d'entité multimédia et/ou du procédé de décodage de signal numérique d'entité multimédia selon l'invention. Selon le mode de réalisation choisi, ce dispositif peut être par exemple un micro-ordinateur 800 connecté à différentes périphériques, par exemple, une caméra numérique 801 (ou un scanner, ou tout autre moyen d'acquisition ou de stockage d'image) reliée à une carte graphique et fournissant ainsi les informations à traiter selon l'invention. Le micro-ordinateur 800 comporte de préférence une interface de communication 802 reliée à un réseau 803 apte à transmettre des informations numériques. Le micro-ordinateur 800 comporte également un moyen de stockage 804, tel que par exemple un disque dur, ainsi qu'un lecteur de disquette 805. La disquette 806 comme le disque 804 peuvent contenir des données d'implantation logicielle de l'invention ainsi que le code de l'invention qui, une fois lu par le micro-ordinateur 800, sera stocké dans le disque dur 804. Selon une variante, le ou les programmes permettant au dispositif 800 de mettre en oeuvre l'invention sont stockés dans une mémoire morte ROM 807. Selon une autre variante, le ou les programmes sont reçus totalement ou partiellement à travers le réseau de communication 803 pour être stockés comme indiqué. Le micro-ordinateur 800 peut également être relié à un microphone 808 par l'intermédiaire d'une carte d'entrée/sortie (non représentée). Le microordinateur 800 comprend également un écran 809 pour visualiser les informations à traiter et/ou servir d'interface avec l'utilisateur, afin que l'utilisateur puisse par exemple paramétrer certains modes de traitement à l'aide du clavier 810 ou de tout autre moyen approprié tel qu'une souris. L'unité centrale CPU 811 exécute les instructions relatives à la mise en oeuvre de l'invention, ces instructions étant stockées dans la mémoire morte ROM 807 ou dans les autres éléments de stockage décrits. Lors de la mise sous tension, les programmes et procédés de traitement stockés dans une des mémoires non-volatiles, par exemple la ROM 807, sont transférés dans la mémoire vive RAM 812 qui contiendra alors le code exécutable de l'invention ainsi que les variables nécessaires à la mise en oeuvre de l'invention. En variante, les procédés de traitement peuvent être stockés dans différents emplacements de stockage du dispositif 800. De manière générale, un moyen de stockage d'information lisible par un ordinateur ou par un microprocesseur, intégré ou non au dispositif, éventuellement amovible, mémorise un programme dont l'exécution met en oeuvre les procédés de codage et respectivement de décodage. II est aussi possible de faire évoluer le mode de réalisation de l'invention, par exemple, en ajoutant des méthodes de traitement actualisées ou améliorées qui sont transmises par le réseau de communication 803 ou chargées par l'intermédiaire d'une ou de plusieurs disquettes 806. Bien entendu, les disquettes 806 peuvent être remplacées par tout support d'information tel que CD-ROM ou carte mémoire. Un bus de communication 813 permet la communication entre les différents éléments du micro-ordinateur 800 et les éléments reliés à celui-ci. On notera que la représentation du bus 813 n'est pas limitative. En effet, l'unité centrale CPU 811 est, par exemple, susceptible de communiquer des instructions à tout élément du micro-ordinateur 800, directement ou par l'intermédiaire d'un autre élément du micro-ordinateur 800. Bien entendu, la présente invention n'est nullement limitée aux modes de réalisation décrits et représentés, mais englobe, bien au contraire, toute variante à la portée de l'homme du métier. Revendications 1. Procédé de codage d'un signal numérique d'entité multimédia comprenant une pluralité d'échantillons, caractérisé en ce que le procédé comprend les étapes de codage suivantes appliquées à des échantillons pris dans un ordre prédéterminé en vue de leur stockage dans une mémoire tampon: codage des échantillons selon un mode de codage à longueur variable prédéterminé tant que le taux d'occupation de la mémoire tampon est inférieur à un seuil prédéterminé, - codage des échantillons suivants selon un mode de codage à longueur fixe prédéterminé. 2. Procédé selon la revendication 1, caractérisé en ce que le seuil prédéterminé est inférieur ou égal à la taille de la mémoire tampon diminuée de la longueur maximale d'un code obtenu selon le mode de codage à longueur variable prédéterminé. 3. Procédé selon la revendication 1 ou la revendication 2, 20 caractérisé en ce que le mode de codage à longueur variable prédéterminé correspond à un codage Rice-Golomb. 4. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que le mode de codage à longueur fixe prédéterminé correspond à un codage binaire. 5. Procédé de décodage d'un signal numérique d'entité multimédia codé comprenant une pluralité d'échantillons codés, caractérisé en ce que le procédé comprend les étapes de décodage suivantes appliquées à des échantillons codés ordonnancés selon un ordre de codage en vue de leur stockage dans une mémoire tampon: - décodage des échantillons codés selon un mode de décodage à longueur variable prédéterminé tant que le taux d'occupation simulé de la mémoire tampon à l'issue de l'étape de codage de l'échantillon précédant l'échantillon courant est inférieur à un seuil prédéterminé, - décodage des échantillons codés suivants selon un mode de décodage à longueur fixe prédéterminé. 6. Procédé selon la revendication 5, caractérisé en ce que le mode de décodage à longueur variable prédéterminé correspond à un décodage RiceGolomb. 7. Procédé selon la revendication 5 ou la revendication 6, caractérisé en ce que le mode de décodage à longueur fixe prédéterminé correspond à un décodage binaire. 8. Dispositif de codage d'un signal numérique d'entité multimédia comprenant une pluralité d'échantillons, caractérisé en ce que le dispositif comprend les moyens de codage suivants appliqués à des échantillons pris dans un ordre prédéterminé en vue de leur stockage dans une mémoire tampon: des moyens de codage qui sont adaptés à coder des échantillons selon un mode de codage à longueur variable prédéterminé tant que le taux d'occupation de la mémoire tampon est inférieur à un seuil prédéterminé, - des moyens de codage qui sont adaptés à coder les échantillons suivants selon un mode de codage à longueur fixe prédéterminé. 9. Dispositif selon la revendication 8, caractérisé en ce que le seuil prédéterminé est inférieur ou égal à la taille de la mémoire tampon diminuée de la longueur maximale d'un code obtenu selon le mode de codage à longueur variable prédéterminé. 10. Dispositif selon la revendication 8 ou la revendication 9, caractérisé en ce que le mode de codage à longueur variable prédéterminé correspond à un codage Rice-Golomb. 11. Dispositif selon l'une quelconque des revendications 8 à 10, caractérisé en ce que le mode de codage à longueur fixe prédéterminé correspond à un codage binaire. 12. Dispositif de décodage d'un signal numérique d'entité multimédia comprenant une pluralité d'échantillons codés, caractérisé en ce que le dispositif comprend les moyens de décodage suivants appliqués à des échantillons codés ordonnancés selon un ordre de codage en vue de leur stockage dans une mémoire tampon: - des moyens de décodage qui sont adaptés à décoder des échantillons codés selon un mode de décodage à longueur variable prédéterminé tant que le taux d'occupation simulé de la mémoire tampon à l'issue du codage de l'échantillon précédant l'échantillon courant est inférieur à un seuil prédéterminé, des moyens de décodage qui sont adaptés à décoder les 20 échantillons codés suivants selon un mode de décodage à longueur fixe prédéterminé. 13. Dispositif selon la revendication 12, caractérisé en ce que le mode de décodage à longueur variable prédéterminé correspond à un 25 décodage Rice-Golomb. 14. Dispositif selon la revendication 12 ou la revendication 13, caractérisé en ce que le mode de décodage à longueur fixe prédéterminé correspond à un décodage binaire. 15. Système de télécommunications comprenant une pluralité de dispositifs terminaux reliés à travers un réseau de télécommunications, 2882614 28 caractérisé en ce qu'il comprend au moins un dispositif terminal équipé d'un dispositif de codage d'un signal numérique d'entité multimédia comprenant une pluralité d'échantillons selon l'une quelconque des revendications 8 à 11 et/ou au moins un dispositif terminal équipé d'un dispositif de décodage d'un signal numérique d'entité multimédia codé comprenant une pluralité d'échantillons codés selon l'une quelconque des revendications 12 à 14. 16. Dispositif de stockage d'entités multimédia, caractérisé en ce qu'il comprend au moins un dispositif de codage d'un signal numérique d'entité multimédia comprenant une pluralité d'échantillons selon l'une quelconque des revendications 8 à 11 et/ou au moins d'un dispositif de décodage d'un signal numérique d'entité multimédia codé comprenant une pluralité d'échantillons codés selon l'une quelconque des revendications 12 à 14. 17. Support d'informations lisible par un système informatique, éventuellement totalement ou partiellement amovible, comprenant des instructions d'un programme d'ordinateur permettant la mise en oeuvre du procédé de codage d'un signal numérique d'entité multimédia comprenant une pluralité d'échantillons selon l'une quelconque des revendications 1 à 4, lorsque ce programme est chargé et exécuté par un système informatique. 18. Support d'informations lisible par un système informatique, éventuellement totalement ou partiellement amovible, comprenant des instructions d'un programme d'ordinateur permettant la mise en oeuvre du procédé de décodage d'un signal numérique d'entité multimédia codé comprenant une pluralité d'échantillons codés selon l'une quelconque des revendications 5 à 7, lorsque ce programme est chargé et exécuté par un système informatique. 19. Programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de codage d'un signal numérique d'entité multimédia comprenant une pluralité d'échantillons selon l'une quelconque des revendications 1 à 4, lorsque ce programme est chargé et exécuté par un système informatique. 20. Programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de décodage d'un signal numérique d'entité multimédia codé comprenant une pluralité d'échantillons codés selon l'une quelconque des revendications 5 à 7, lorsque ce programme est chargé et exécuté par un système informatique.