Brevet FR2831016A1 — publié le 20030418

canal recherché. L'invention concerne un procédé et un dispositif de décodage exploitant la norme MPEG. Les ressources nécessaires au traitement de la vidéo, en particulier dans le cadre d'un codage de type MPEG 4 génèrent de nombreux traitements consommateurs de temps et, si le décodage ne s'effectue pas à une vitesse suffisante pour permettre un traitement global correct, il peut arriver que l'on soit confronté à des problèmes de temps réel. L'utilisation de langages objet de haut niveau (par exemple C++) plutôt que du langage assembleur, pour la programmation des algorithmes de traitement, ne va pas dans le sens d'une optimisation de ce temps de 1 5 traitement. D'autre part, I'implémentation de modes de plus en plus complexes de décodage MPEG 4, I'ajout de nouveaux outils vidéo consommateurs en temps de calcul nécessite une optimisation des temps de traitement si l'on veut s'affranchir de processeurs puissants, ceci afin de limiter la taille et ie coût des circuits pour le décodage MPEG 4, par exemple des circuits customisés de type ASIC. L'invention a pour but de pallier les inconvénients précités. Elle a pour objet un procédé de décodage de données numériques vidéo codéss selon la norme MPEG à partir d'opérations successives de codage de blocs de coefficients, caractérisé en ce qu'il effectue les opérations inverses des opérations successives de codoge, dans un ordre inverse, non pas bloc par bloc mais coefficient par coefficient. Selon une mise en _uvre particulière, une opération de codage consiste en la quantification des coefficients, la prédiction des coefficients DC/AC ou bien le balayage zig-zag. Selon une mise en _uvre particulière, les opérations inverses effectuéss dans l'ordre inverse sur un coefficient sont successivement l'inversion de balayage (26), la construction, le cas échéant, du coefficient DC/AC (27) à partir du coefficient DC/AC prédit, la quantification inverse (28) du coefficient. 2 2831016 Selon une mise en _uvre particulière, I'inversion de balayage (26) est calculée à partir d'une table de balayage zig-zag inverse, une table de balayage horizontal alterné inverse ou une table de balayage vertical alterné inverse donnant la position réelle s du coefficient dans le bloc à partir du rang n de balayage au codeur. L' invention concerne également u n circu it de décod age vidéo pou r le décodage de données vidéo codées selon la norme MPEG à partir d'opérations successives de codage de blocs de coefficients, caractérisé en ce qu'il comprend un circuit de traitement pour la mise en _uvre d'un algorithme de décodage qui effectue les opérations inverses (26, 27, 28) des opérations successives de codage, dans un ordre inverse, non pas bloc par bloc mais coefficient par coefficient. L'invention concerne également un appareil numérique comprenant un tel circuit de décodage vidéo. Grâce à l'invention, les accès mémoires sont réduits, le temps de traitement est optimisé, le coût et la taille des circuits de décodage sont réduits. La qualité des images est maintenue, c'est à dire non dégradée pour compenser un temps de traitement trop long. D'autres particularités et avantages de l'invention appara'^tront clairement dans la description suivante donnée à titre d'exemple non limitatif, et faite en regard des figures annexées qui représentent: - la figure 1, un schéma classique d'un décodage vidéo, - la figure 2, un circuit de décodage vidéo, - la figure 3, un algorithme de décodage selon l'invention, - la figure 4, un exemple de décodage de coefficients, - la figure 5, des tableaux de balayage inverse. La figure 1 schématise un décodage classique vidéo. Les informations relatives au codage vidéo et provenant de la lecture du train binaire de données codées subissent un premier traitement 1 qui est un décodage à longueur variable. Les donnses traitées sont écrites dans une mémoire 2. Ces données sont stockées de manière à représenter un tableau intermédiaire des données. Puis les données stockées sont lues par un deuxième circuit de traitement 3 qui effectue une inversion de 3 2831016 balayage. Les donnces obtenues sont à nouveau stockées dans une mémoire 4, puis sont lues par un circuit d'inversion 5, sont stockées par une mémoire 6, sont traitées par un circuit 7 de quantification inverse, sont à nouveau stockée par une mémoire 8 puis sont lues par un circuit de transformation inverse 9. Ces actions sont réalisées de manière séquentielle et par bloc de codoge de l'image ou du plan objet vidéo vop (acronyme de l'anglais video object plane) décrit dans la norme. L'invention permet d'éviter ces nombreux accès à une mémoire et à ces tableaux de données intermédiaires, ces écritures/lectures très consommatrices de temps. D'autre part, un traitement au niveau de chaque coefficient plutôt qu'au niveau du bloc d'image, permet de détecter les coefficients à zéros, en généra l nomb reux da ns d es b locs co rrespondant à des zones peu texturées ou uniformes. Dans un schéma classique, tous les coefficients sont pris en compte, les zéros sont stockés dans un tableau. Dans le procédé selon l'invention, les coefficients à zéro ne sont pas traités et ne sont pas mémorisés lors des calcuis intermédiaires. La figure 2 représente, de manière connue, des circuits d'un décodeur de type MPEG. Les notations suivantes sont employées par la suite pour définir les coefficients des blocs aux différentes étapes: - n est le rang du coefficient correspondant au balayage choisi par le codeur, (u, v) ou s la position spatiale récile du coefficient dans le bloc, u et v étant le numéro de la ligne et colonne dans le bloc, s étant la position spatiale définie de manière classique à partir d'une numérotation croissante partant de O en haut et gauche du bloc jusqu'à 63 en bas à droite, I'incrémentation se faisant, pour ce bloc de 8 x 8 coefficients, de gauche à droite et ligne par ligne. - QFS(n) correspond au coefficient quantifié de rang n, après décodage VLC. - PQF(u,v) ou PQF(s) correspond au coefficient quantifié à la position réelle (u,v) ou s dans le bloc, après balayage inverse. - QF(u,v) ou QF(s) correspond au coefficient après prédiction inverse le cas échéant, c'est à dire au coefficient reconstruit quantifié. - F(u,v) ou F(s) correspond au coefficient QF déquantifié. Le train binaire résultant du codage des images selon la norme MPEG 4 est reçu en entrée d'un circuit 10. Il s'agit des coefficients DCT codés selon un code à longueur variable ou VLC (acronyme de l'anglais Variable Length Coding). Le circuit 10 est un circuit de décodage à longueur variable qui effectue l'opération inverse du codage à longueur variable réalisé par le codeur. Les données décodées, qui sont les coefficients quantifiés, sont transmises à l'entrée d'un circuit de balayage inverse 11 qui réalise un balayage inverse du balayage opéré par le codeur. Au codage, un rang n avait été affecté à chaque coefficient du bloc et le balayage avait été effectué séquentiellement selon l'ordre correspondant au rang. L'opération inverse consiste donc à repositionner les coefficients dans le bloc à partir de leur numéro ou rang n correspondant au balayage. Ainsi, les données unidimensionnelles représentant les coefficients quantifiés de rang n, QFS(n), sont transformées en donnces bidimensionnelles, PQF(u,v), qui constituent un tableau de coefficients de colonne u et de rangée v. Pour des blocs d'image de 8x8 pixels, n correspond à une valeur entre 0 et 63, 0 étant le rang du coefficient DC, u et v sont compris entre 0 et 7. Le circuit 12 effectue une prédiction inverse des coefficients DC et AC pour les macroblocs codés en intra, lorsqu'une telle prédiction a été exploitée au codage. Il s'agit alors de calculer les coefficients DC du bloc courant à partir de valeurs prédites qui sont les coefficients DC du bloc correspondant du macrobloc supérieur ou précédant (c'est à dire à gauche) le macrobloc à décoder. On parle respectivement de direction de prédiction DC verticale ou horizontale. Cette direction de prédiction est calculée, pour chaque bloc du macrobloc courant, en fonction des gradients DC du bloc correspondant supérieur (gradient horizontal par rapport au bloc à gauche) et du bloc correspondant à gauche (gradient vertical par rapport au bloc supérieur) du macrobloc courant. Il s'agit aussi de calculer les coefficients AC de la première ligne ou première colonne à partir de valeurs prédites qui sont respectivement les coefficients AC de la première ligne du bloc correspond ant d u macrobloc supérieu r ou les coefficients AC de la première colonne du bloc correspondant du macrobloc précédant le macrobloc à décoder. La direction de prédiction AC d'un bloc est celle de prédiction DC pour ce même bloc. Ainsi, pour ce mode de codage, seule la première ligne ou première colonne du bloc est codée, les autres coefficients sont nuis. Le circuit 13 reçoit les coefficients ainsi calculés QF(u,v) pour effectuer une quantification inverse et fournir des coefficients déquantifiés >, 2831016 F(u,v). Le circuit en aval 14 réalise ensuite une transformation cosinus discrète inverse (DCT) de ces coefficients déquantifiés F(u,v), les coefficients obtenus étant f(y,x), x et y correspondant à des coordonnées spatiales dans l'image et non plus à des rangs fréquentiels comme u et v. Une mémoire vop 16 qui mémorise l'image (ou l'objet) précédente reconstruite est exploitée par le circuit de compensation de mouvement 15 qui extrait de cette mémoire le macrobloc prédit désigné par le vecteur mouvement associé au macrobloc courant. En mode inter, ce circuit 15 ajoute le macrobloc décodé f(x,y) qu'il reçoit du circuit de transformation inverse au macrobloc prédit pour fournir le macrobloc décodé. Les différents traitements décrits ci-dessus sont effectués bloc par bloc, les données traitées par les différents circuits et transmises d'un circuit à l'autre étant des blocs de coefficients ou blocs d'images. Les différents types de balayage, le balayage zig-zag, le balayage alterné horizontal et le balayage alterné vertical sont définis dans la norme MPEG 4, dans le document ISO/IEC 14496-2:1999(E) paragraphe 7.4.2 (inverse scan). Le procédé de décodage selon le mode prédictif AC/DC est défini dans ce méme document paragraphe 7.4.3 (intra dc and ac prediction for intra macroblocks). La figure 3 représente un algorithme de traitement des blocs de coefficient selon l'invention, o le traitement est effectué coefficient par coefficient et non plus bloc par bloc. Le flux de données binaire comprenant les coefficients DCT est traité lors d'une première étape 17. Comme indiqué précédemment, à chaque coefficient correspond un numéro de coefficient n qui est le rang provenant du balayage au niveau du codeur. L'étape 17 extrait les coefficients de ce flux binaire, c'est à dire leur valeur et leur numéro. Un premier coefficient est ainsi transmis à l'étape 18 qui réalise une opération inverse du balayage. Le rang s calculé et la valeur de coefficient sont transmis à l'étape suivante 19 qui effectue le traitement correspondant à la prédiction DC/AC. CeKe étape est en liaison avec la mémoire 20 qui fournit les coefficients DC/AC de l'image courante nécessaires au calcul du coefficient courant traité, c'est à dire à partir desquels a été effectuée la prédiction au niveau du codeur. La valeur calculée est mémorisée dans cette mémoire 20 et est également transmise à l'étape 21 qui effectue une quantification inverse. Le coefficient déquantifié est mémorisé dans la mémoire 22. L'étape suivante 23 vérifie si le coefficient traité est le dernier coefficient du bloc de coefficients. Dans la négative, l'étape 23 est rebouclée sur l'étape 17 qui fournit alors le coefficient suivant à l'étape 18. Dans I'affirmative, tous les coefficients du bloc ayant été traités, I'étape suivante est l'étape 24 qui récupère de la mémoire 22 ces coefficients DCT déquantifiés et effectue une transformation DCT inverse sur le bloc complet de coefficients DCT pour fournir le bloc d'image décodé. La figure 4 donne un exemple de décodage des coefficients selon l'invention. Le bloc traité est un bloc 8 x 8 constitué de trois coefficients de valeur 19, 31 et-1 pour un rang respectif de 0, 5 et 6, les autres coefficients du bloc ayant une valeur nulle. Le cas traité est celui o, au codage, les coefficients sont calculés à partir d'une prédiction DC/AC horizontale et le balayage est effectué en mode vertical alterné. Sur la figure est représenté l'ensemble des opérations effectuées sur les coefficients du bloc. Ces opérations sont réalisées de manière séquentielle pour chaque coefficient. L'ensemble des calcuis ou chaque calcul, inversion de balayage, inversion DC/AC, quantification inverse, est effectué d'abord sur le premier coefficient lu puis sur le deuxième coefficient, le troisième... Avant traitement des coefficients d'un nouveau bloc, le contenu des tableaux de données DctQuantCoeff[] référencé 29 et DctCoeff[] référencé 30 est mis à zéro. Les données codées provenant du flux de données après décodage VLC sont reçues par le circuit 25 qui extrait les valeurs codées des coefficients du bloc et les transmets successivement en sa sortie. Un premier coefficient de valeur 19 et de rang 0 est ainsi lu et transmis à un circuit d'inversion de balayage 26. PQF (u,v) = PQF (s) = QFS (n) L'inversion de balayage a pour but d'attribuer la position spatiale réelle s au coefficient de rang n traité, c'est à dire de calculer PQF(s) à partir de QFS(n). Le tableau de balayage donné dans la norme pour chaque type de balayage indique la valeur du rang n pour chaque emplacement du 7 2831016 coefficient dans ie bloc correspondant à s. Les tableaux de balayage inverse des figures 5, débuits des tableaux de balayage définis dans la norme, permettent d'obtenir directement la valeur de s pour chaque emplacement du coefficient dans le bloc correspondant à n. Par exemple pour le balayage vertical alterné, figure 5 c, I'emplacement correspondant à n=5, c'est à dire la 6ème colonne, 1ère ligne, a pour valeur s=9, I'emplacement correspondant à n=6 a pour valeur 2. QFS(0) = 19 = PQF(0) QFS(5) =31 = PQF(9) La position spatiale réelle du coefficient dans le bloc est donc obtenue directement de ces tableaux de balayage inverse des figures 5. Après cette inversion de balayage, le coefficient est transmis à un circuit d'inversion AC/DC référencé 27. La valeur du coefficient est calculée en fonction du type de prédiction, horizontale ou verticale. Seuls sont intéressés les coefficients de la première ligne ou première colonne, c'est à dire les coefficients de rang s compris entre O et 7 et les coefficients 8, 16, 24, 32, 40, 48 et 56. Le circuit d'inversion AC/DC est relié à une mémoire DctQuantCoeff[] référencée 29 qui mémorise les coefficients des première ligne et première colonne des blocs précédents de l'image. lci, le coefficient de rang O est concerné et le circuit d'inversion recherche, dans cette mémoire, le coefficient dqO qui est le coefficient de rang zéro du bloc immédiatement à gauche du bloc courant traité et qui est la valeur à partir de laquelle à été effectuée la prédiction au codeur. Un circuit de quantification inverse 28 réalise ensuite la quantification inverse du coefficient dqO pour fournir le coefficient déquantifié dctO. Ce circuit est relié à une mémoire DctCoeff[] référencée 30 qui mémorise ce coefficient. Après traitement et mémorisation de ce premier coefficient de rang zéro, le coefficient suivant est exploité. Le signal de transmission de ce nouveau coefficient par le circuit 25 au circuit 26 est par exemple synchronisé sur le signal d'écriture de ce premier coefficient dans la mémoire 30. Il peut tout aussi bien provenir du circuit d'inversion de balayage 26. En effet, les traitements des coefficients par les différents circuits peuvent être réalisés en quasi-simultané, c'est à dire sans attendre la mémorisation du coefficient courant dans la mémoire 30 pour le traitement du coefficient 8 2831016 suivant. Dès après la libération d'un circuit par le coefficient courant, le coefficient suivant peut être traité par ce circuit. Alors, le signal de transmission du coefficient d'un circuit à l'autre est fourni par le circuit en aval traitant le coefficient précédent. Le deuxième coefficient non nul du bloc courant est le coefficient de rang 5, de valeur 31.11 est transmis au circuit d'inversion de balayage 26. Sur la figure, les circuits 26 à 28 sont représentés au moins autant de fois qu'il y a de coefficients à traiter afin d'expliciter les valeurs des coefficients obtenues lors des étapes intermédiaires, pour chacun des coefficients traités. 11 peut s'agir bien sar des mêmes circuits de traitement. Le circuit de balayage inverse 26 calcule le rang réel du coefficient, qui est maintenant s= 9. QFS(5) = PQF(9) Le circuit d'inversion DC/AC 27 n'a pas d'influence sur la valeur 31 de ce coefficient qui ne se trouve pas à la première ligne ou première colonne du bloc. La valeur 31 est mémorisée dans la mémoire 29. Ensuite une quantification inverse est effectuée pour fournir une valeur dct9 pour ce coefficient de rang 9, valeur mémorisée dans la mémoire 30. Ensuite, le circuit d'inversion de balayage 26 prend en compte le rang du dernier coefficient traité et calcule le "run", c'est à dire la longueur de la plage de zéros. Pour un coefficient courant, le "run" est égal au nombre de coefficients à la valeur zéro qui se trouvent entre le coefficient courant et le coefficient précédant non nul. Le deuxième coefficient non nul ayant pour rang n =5, la plage de zaros précédent ce deuxième coefficient non nul a une longueur de 4 (run = 4). Les valeurs des coefficients de rang 1 à 4 sont nulles. Ces quatre coefficients nuls sont traités par le circuit d'inversion de balayage 26. Après l'inversion de balayage, les rangs s des coefficients correspondant aux rangs n = 1 à 4, d'après le tableau 5c, sont respectivement 8, 16, 24 et 1. L'opération d'inversion DC/AC réalisée par le circuit 27, attribue aux coefficients de numéro 8, 16, 24, coefficients correspondant à la première colonne du bloc, puisqu'il s'agit d'une prédiction horizontale, les valeurs dq8, dq16 et dq24. Ce sont les valeurs des coefficients correspondant du bloc à gauche du bloc courant et mémorisées dans la mémoire 29. La valeur du coefficient de rang 1 reste à zéro car il s'agit d'un coefficient de la deuxième colonne non concerné par les opérations de prédiction. Enfin, le circuit de quantification inverse 28 calcule les valeurs déquantifiées des valeurs dq8, dq16, dq24 et 0, à savoir respectivement dct8, dct16, dct24, dct1 qui sont les valeurs des coefficients de rang s=8, 16, 24 et 1. La valeur dct1 est zéro. Ces valeurs sont mémorisoes dans la mémoire 30. Le circuit 25 transmet maintenant au circuit 26 le dernier coefficient non nul, à savoir le coefficient de rang n=6 qui a pour valeur -1. Le circuit d'inversion de balayage 26 fournit le rang correspondant s= 2. Ce rang n'est pas concerné par les opérations de prédiction et c'est cette même valeur-1, pour un rang s=2, qui est mémorisée dans la mémoire 29, en sortie du circuit d'inversion DC/AC 27. Le circuit de quantification inverse 28 fournit une nouvelle valeur déquantifiée dct2 qui est mémorisée dans la mémoire 30. Il est possible que des coefficients de la première coionne, pour le type de prédiction qui nous concerne, bien que transmis par le codeur avec la valeur zéro, aient une valeur réelle, c'est à dire après ajout de la valeur prédite, différente de zéro. Si la valeur du "run" est non nulle, il est donc nocessaire de traiter aussi les coefficients sautés de la méme manière qu'un coefficient extrait de valeur non nulle. ll faut vérifier si leur position spatiale réelle (valeur s) correspond à la première ligne ou première colonne du bloc 8x8, selon que la prédiction est une prédiction verticale ou horizontale. Dans l'affirmative, le coefficient est calculé en fonction des valeurs prédites et est mémorisé dans la mémoire 29 car le calcul d'inversion DC/AC utilise les valeurs des premières lignes et premières colonnes des blocs précédents de l'image. Un compteur cptNbDcAc est utilisé pour compter le nombre de coefficients de la première colonne ou première ligne traités selon que la prédiction est une prédiction horizontale ou verticale. Une fois le traitement du dernier coefficient différent de zéro effectué, la valeur du compteur est exploitée et le traitement des coefficients à zéro se poursuit jusqu'à ce que le compteur atteigne la valeur 8. Une valeur du compteur inférieure à 8 signifie en effet qu'entre le dernier coefficient transmis et le nombre maximal de coefficients à extraire, il reste des coefficients de valeur nulle qui n'ont pas été traités par l'inversion DC/AC. Il faut donc refaire l'opération d'inversion DC/AC suivie de l'opération de quantification inverse pour ces coefficients manquants. Dans notre exemple, le compteur cptNbDcAc compte le nombre de coefficients de la première ligne traités. ll est par exemple déclenché par le circuit d'inversion de balayage en fonction des rangs s des coefficients. Pour le premier coefficient de rang n=s=O, le compteur est incrémenté. Le deuxième coefficient est de rang s=9. Les coefficients correspondant à la plage de zéro (run =4) sont de rang s=8, s=16, s=24, s=1 et le compteur est donc incrémenté de 3 et a pour valeur 4. Le coefficient suivant est de rang s=2 et l'on va donc traiter les coefficients suivants à zéro jusqu'à obtenir une valeur de compteur égale à 8. Les coefficients de rang n= 7 et suivants, de valeur zéro, sont transmis au circuit d'inversion de balayage 26. Ce circuit fournit les rangs s de ces coefficients et le compteur est incrémenté pour les valeurs de s correspondant à la première colonne, à savoir les valeurs s = 32, 40, 48, 56. Ensuite ces coefficients sont transmis au circuit d'inversion DC/AC 27 qui calcule la valeur récile de chacun d'entre eux, en fonction de la première colonne du bloc d'image précédent. Les valeurs trouvées, dq32, dq40, dq48, dq56 sont mémorisées dans ia mémoire 29. Elles sont également transmises au circuit 28 qui effectue une déquantification pour obtenir respectivement les valeurs déquantifiées dct32, dct40, dct48, dct56 mémoriséss dans la mémoire 30. Le tableau de données dctCoeff[] correspondant au bloc de coefficients ainsi mémorisé est lu et transmis au circuit DCT inverse 31. Le bloc transmis subit une transformation cosinus discrète inverse pour fournir un bloc d'image. Une variante de l'invention consiste à supprimer l'inversion de balayage en entrée de la boucle de décodage, en travaillant alors directement sur les coefficients dct désordonnés spatialement. L'inversion DC/AC fait alors appel à un tableau de données qui indique si le coefficient doit être pris en compte ou pas. Par exemple à partir du tableau de balayage vertical alterné, en considérant les coefficients de la première colonne qui ont pour rang n= 0, 1, 2, 3, 10,11, 12,13, le tableau de données affecte la valeur 1 pour ces valeurs de n, la valeur 0 pour les autres valeurs de n. La quantification inverse est faite de la même manière que celle décrite précédemment. A l'issue du calcul, les résultats sont repositionnés spatialement dans la mémoire 30 pour effectuer le calcul de dct inverse nécessitant de prendre les résultats dans l'ordre. Les accès mémoire sont optimisés lors des accès en ligne, ce qui est adapté à l'algorithme de calcul de la dct inverse, qui effectue un calcul en ligne puis en colonne. La description a été faite pour un codage exploitant la prédiction DC/AC. Il serait tout aussi envisageable d'exploiter l'invention sans ces opérations de prédiction, par exemple pour les traitements conformes à la norme MPEG2. L'invention concerne tout type de décodeur comportant un logiciel mettant en _uvre l'algorithme précédemment décrit ou tout type de matériel tel que téléviseur, lecteur DVD, récepteur satellite comportant des circuits de d écod age mettant en _uvre cet a lg orith me. " 2831016 REVENDICATIONS 1 Procédé de décodage de données numériques vidéo codées selon la norme MPEG à partir d'opérations successives de codage de blocs de coefficients, caractérisé en ce qu'il effectue les opérations inverses (26, 27, 28) des opérations successives de codage, dans un ordre inverse, non pas bloc par bloc mais coefficient par coefficient. 2 Procédé selon la revendication 1, caractérisé en ce qu'une opération de codage consiste en la quantification des coefficients, la prédiction des coefficients DC/AC ou bien le balayage zig-zag. 3 Procédé selon la revendication 1, caractérisé en ce que les opérations inverses effectuces dans l'ordre inverse sur un coefficient sont successivement l'inversion de balayage (26), la construction, le cas échéant, du coefficient DC/AC (27) à partir du coefficient DC/AC prédit, la quantification inverse (28) du coefficient. 4 Procédé selon la revendication 3, caractérisé en ce que l'inversion de balayage (26) est calculée à partir d'une table de balayage zig zag inverse, une table de balayage horizontal alterné inverse ou une table de balayage vertical alterné inverse donnant la position réelle s du coefficient dans le bloc à partir du rang n de balayage au codeur. Procédé selon la revendication 1, caractérisé en ce que, pour une image donnée, les coefficients des premières lignes et colonnes d'un bloc, reconstruits après construction du coefficient AC/DC (27), sont mémorisés dans une mémoire (29) pour étre exploités lors de la construction des coefficients DC/AC de blocs suivants de l'image. 6 Procédé selon la revendication 1, caractérisé en ce que les coefficients sont mémorisés (30) après les opérations de quantification inverse pour fournir un bloc de coefficients mémorisé et en ce que la transformation de Fourier (31) est effectuée sur le bloc mémorisé. 7 Circuit de décodage vidéo pour le décodage de données vidéo codées selon la norme MPEG à partir d'opérations successives de codage de blocs de coefficients, caractérisé en ce qu'il comprend un circuit de traitement pour la mise en _uvre d'un algorithme de décodage qui effectue les opérations inverses (26, 27, 28) des opérations successives de codage, dans un ordre inverse, non pas bloc par bloc mais coefficient par coefficient. 8 Appareil numérique comprenant un circuit de décodage vidéo selon la revendication 7.