Brevet FR2740583A1 — publié le 19970430

DÉCODEUR MPEG UTILISÉ DANS UN MICRO La présente invention concerne un décodeur d'images, notamment MPEG, et plus particulièrement un tel décodeur utilisé dans un micro-ordinateur pour afficher sur son écran des images animées stockées sur disque optique (CD-ROM), disque dur, ou provenant d'une autre source quelconque. La figure 1 représente schématiquement un décodeur MPEG classique inséré dans une architecture de micro-ordinateur. Un micro-ordinateur classique comporte généralement un bus de périphériques 10, servant à connecter plusieurs éléments nécessaires ou optionnels, tels qu'un disque dur, un écran, etc. Ces périphériques sont reliés au bus 10 par l'intermédiaire d'interfaces (un contrôleur d'affichage 12 pour l'écran) qui sont prévues directement sur la carte mère du micro-ordinateur ou sur des cartes amovibles. Une unité centrale 14 communique avec le bus 10 par un circuit d'interface 16 qui permet à une mémoire principale 18 du micro-ordinateur d'être partagée entre l'unité centrale 14 et des périphériques du bus 10 qui en auraient besoin. Un décodeur MPEG 20 est connecté en tant que périphérique maître sur le bus 10, c'est-à-dire qu'il gère des transferts de données sur ce bus sans l'intermédiaire de l'unité centrale 14. Le décodeur reçoit des données codées CD provenant d'un périphérique source 22, tel qu'un disque dur ou un CD-ROM, et fournit des images décodées au contrôleur d'affichage 12. Les contrôleurs d'affichage récents permettent de traiter directement des données d'image "YUV" (luminance et chrominance) fournies normalement par un décodeur MPEG, alors qu'un contrôleur d'affichage est normalement prévu pour traiter des informations d'image "RGB" (rouge, vert, bleu) fournies par l'unité centrale 14. Le contrôleur d'affichage 12 est muni d'une mémoire 12-1 pour stocker l'image en cours d'affichage, qui provient de l'unité centrale 14 ou du décodeur MPEG 20. Un décodeur MPEG classique est également muni d'une mémoire 20-1 subdivisée en trois zones ou "tampons" d'image M1 à M3 et en un tampon CDB dans lequel sont stockées des données comprimées en attente de traitement. Les trois tampons d'image contiennent respectivement une image en cours de décodage et deux images précédemment décodées. La figure 2 illustre l'utilisation des tampons M1 à M3 au cours du décodage d'une séquence d'images I0, P1, B2, B3, P4, BS, B6, P7. On désigne par I une image dite "intra", dont les données comprimées correspondent directement à 1' image. On désigne par P une image dite "prédite", dont la reconstruction utilise des blocs de pixels (ou macroblocs) d'une image précédemment décodée. Finalement, on désigne par B une image dite "bidirectionnelle", dont la reconstruction utilise des macroblocs de deux images précédemment décodés. Les images intra et prédites peuvent être utilisées pour la reconstruction d'images prédites et bidirectionnelles ultérieures, tandis que les images bidirectionnelles ne sont pas réutilisées. Les images 10 et P1 sont stockées respectivement dans les tampons M1 et M2 au cours de leur décodage. Le remplissage et le vidage d'un tampon sont illustrés par des traits obliques. Le décodage de l'image P1 utilise des macroblocs de l'image 10. L'image I0, stockée dans le tampon M1, est affichée pendant le décodage de 1' image B2, cette image B2 étant stockée dans le tampon M3. Le décodage de l'image B2 utilise des macroblocs des images 10 et P1. L'image B2 est affichée immédiatement après l'image 10. Tandis que les emplacements du tampon M3 se libèrent, ils sont aussitôt remplis par des informations décodées de l'image B3. Le décodage de l'image B3 utilise aussi des macroblocs des images I1 et P1. Une fois que l'image B3 est décodée, elle est aussitôt affichée, tandis que l'image P4 est décodée en utilisant des macroblocs de l'image P1.L'image P4 écrase l'image IO dans le tampon M1 car 1' image 10 ne servira plus au décodage d'images ultérieures. Après l'image B3, on affiche l'image P1 tandis que le tampon M3 reçoit 1' image B5 en cours de décodage. Le décodage de l'image B5 utilise des macroblocs des images P1 et P4. L'image P1 est conservée dans le tampon M2 jusqu'au décodage de l'image B6, qui utilise aussi des macroblocs des images P1 et P4, et ainsi de suite. Un inconvénient d'un micro-ordinateur équipé d'un décodeur MPEG classique est qu'il dispose d'une quantité nonnégligeable de mémoire qui est inutilisée la plupart du temps. En effet, la mémoire 20-1 du décodeur MPEG n'est utilisée que lorsque l'on visionne des images animées sur l'écran de l'ordinateur, ce qui ne représente qu'une fraction du temps d'utilisation d'un micro-ordinateur. Cette mémoire, inaccessible aux autres périphériques ou à l'unité centrale, a une taille de 512 ko dans un décodeur MPEG 1, et une taille de 2 Mo dans un décodeur MPEG 2. De plus, cette mémoire est surdimensionnée, car elle est obtenue en utilisant des composants mémoire couramment disponibles. Un objet de la présente invention est de prévoir un décodeur MPEG qui permette à d'autres périphériques du microordinateur d'utiliser la mémoire du décodeur. Pour cela, la mémoire du décodeur est incorporée dans la mémoire principale du micro-ordinateur. Le micro-ordinateur doit disposer d'un bus de périphériques rapide (tel que les bus appelés PCI -"Peripheral Circuit Interconnect"- et VLB -"VESA Local Bus"-) qui acceptera des débits importants d'images entre le décodeur MPEG, la mémoire principale, et le contrôleur d'affichage. Selon un mode de réalisation de la présente invention, le décodeur fournit directement à un contrôleur d'affichage dudit écran une image en cours de décodage qui n'est pas utilisée pour décoder une image ultérieure. Selon un mode de réalisation de l'invention, la mémoire principale stocke des images intra qui ne sont pas obtenues à partir d'une image précédente et des images prédites qui sont obtenues à partir d'une seule image précédente, lesdites images fournies directement au contrôleur d'affichage étant des images bidirectionnelles obtenues à partir de deux images intra ou prédites précédentes. Selon un mode de réalisation de l'invention, le décodeur est disposé sur la carte mère du micro-ordinateur. Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles la figure 1, précédemment décrite, représente schématiquement une architecture de micro-ordinateur muni d'un décodeur MPEG classique la figure 2, précédemment décrite, illustre une utilisation de tampons d' image au cours du traitement d ' une séquence d'images par un décodeur MPEG classique la figure 3 représente schématiquement une architecture de micro-ordinateur classique muni d'un décodeur MPEG selon la présente invention la figure 4 illustre une utilisation de tampons d'image au cours du traitement d ' une séquence d' images par un décodeur MPEG selon la présente invention ; et la figure 5 représente schématiquement un mode de réalisation d'architecture de décodeur MPEG selon la présente invention. A la figure 3, un décodeur MPEG 20' selon la présente invention est connecté en tant que périphérique à un micro ordinateur classique équipé d'un bus de périphérique rapide, par exemple le bus PCI. Comme cela est représenté, le décodeur MPEG 20' est dépourvu de mémoire, celle-ci étant une zone 18-1 de la mémoire principale 18 du micro-ordinateur. La zone 18-1 comporte un tampon de données ccînprimées CDB dans laquelle la source d'images 22 écrit les données d'image comprimées, et deux tampons d'image M1 et M2 associés à des images intra ou prédites. Comme on le verra ci-après, un tampon associé aux images bidirectionnelles n'est pas nécessaire, ces images bidirectionnelles B étant directement fournies au contrôleur d'affichage 12 tandis qu'elles sont décodées. Ainsi, dans le système de la figure 3, des données comprimées CD sont transférées de la source d'images 22 au tampon CDB de la mémoire 18. Ces mêmes données comprimées sont ensuite transférées au décodeur MPEG 20' qui, si elles correspondent à des images intra ou prédites, les retransmet sous forme décodée aux tampons M1 et M2 de la mémoire 18. Dans le cas où les données comprimées correspondent à des images bidirectionnelles, le décodeur 20' décode ces données et fournit les données décodées directement au contrôleur d'affichage 12. Les images intra ou prédites stockées dans les tampons M1 et M2 sont transférées au contrôleur d'affichage 12 au moment opportun et sont utilisées pendant le décodage d'images prédites ou bidirectionnelles ultérieures. Avec un décodeur MPEG selon l'invention, les débits sur le bus de périphérique 10 sont particulièrement importants, d'où la nécessité d'utiliser un bus rapide. Toutefois, le débit nécessaire est sensiblement diminué grâce au fait que les images bidirectionnelles ne sont pas stockées dans la mémoire principale 18, mais sont directement envoyées au contrôleur d'affichage 12. Selon l'invention, le taux d'occupation d'un bus PCI s'avère être d'environ 20 % avec un décodeur MPEG 1 et d'environ 80 W avec un décodeur MPEG 2. Ces taux d'occupation correspondent à des situations pire cas et ne sont en fait pas gênants car, en général, le micro-ordinateur n'est pas utilisé pour d'autres tâches pendant que l'on visionne des images animées. Bien entendu, la mémoire principale 18 est diminuée de la taille de la zone 18-1. La zone 18-1 est toutefois réduite d'un tampon d'image par rapport à une mémoire 20-1 de décodeur classique (figure 1). En outre, cette zone mémoire 18-1 est seulement occupée pendant que l'on visionne une séquence animée au cours de laquelle le micro-ordinateur n'est normalement pas utilisé pour d'autres tâches. Quand le décodeur n'est plus utilisé, la zone 18-1 peut être libérée aussitôt pour les autres tâches. Les diverses modifications à apporter au microordinateur pour utiliser un décodeur selon l'invention ne sont que logicielles et sont à la portée de l'homme du métier qui trouvera les renseignements nécessaires dans les diverses normes concernant le micro-ordinateur. Pour qu'un micro-ordinateur puisse utiliser ses périphériques, on exécute classiquement en arrière-plan des progranrnes appelés gestionnaires de périphériques qui traduisent des adresses spécifiques émises par l'unité centrale ou un périphérique maître (tel que le décodeur MPEG) en des adresses adaptées à la configuration variable du microordinateur. Par exemple, un gestionnaire de périphérique associé à un décodeur MPEG selon l'invention traduit les adresses fixes émises par le décodeur pour accéder à sa mémoire d'image en des adresses correspondant à l'emplacement physique de la zone 18-1, cette zone pouvant être allouée de manière variable par le système d'exploitation en fonction de l'occupation de la mémoire 18. De même, ce gestionnaire de périphérique répond à des requêtes émises par la source d'images 22 pour fournir des données comprimées en transférant ces données dans le tampon CDB de la zone 18-1. Un décodeur MPEG classique doit pouvoir être utilisé dans plusieurs applications, notamment pour fournir des images de télévision. Dans le cas de la télévision, les images doivent être fournies sous forme entrelacée, c'est-à-dire que l'on doit d'abord fournir les lignes impaires d'une image et ensuite les lignes paires. Or, un décodeur MPEG reconstitue généralement les images sous forme progressive, c'est-à-dire qu'il fournit les lignes des images de manière consécutive. Le troisième tampon d'image M3 (figure 1) est alors nécessaire pour stocker les images bidirectionnelles dans l'ordre d'arrivée des lignes (sous forme progressive) et ensuite relire cette image sous forme entrelacée. Par contre, dans un micro-ordinateur, les images sont généralement affichées sous forme progressive. Un troisième tampon d'image, qui n'est autre qu'un tampon de réorganisation, est inutile. La figure 4 illustre l'utilisation de la zone 18-1 au cours du décodage selon l'invention de la séquence I0, P1, B2, B3, P4, B5, B6, P7. L'image 10 est stockée dans le tampon M1 au cours de son décodage. Lorsqu'on commence à décoder l'image P1 et à stocker celle-ci dans le tampon M2, on affiche l'image 10. Les macroblocs utilisés pour décoder l'image P1 sont cherchés dans le tampon M1. Les images B2 et B3 sont affichées tandis qu'elles sont décodées, les macroblocs utilisés pour leur décodage étant cherchés dans les tampons M1 et M2.L'image P1 est affichée tandis que 1' image P4 est décodée et stockée dans le tampon M1 à la place de l'image 10. L'image P1 est gardée dans le tampon M2 jusqu'au moment où l'image B6 est décodée et affichée, et ainsi de suite. La figure 5 représente schématiquement une architecture de décodeur MPEG selon la présente invention. Comme tout décodeur MPEG classique, ce décodeur comprend un circuit de décodage à longueur variable (VLD) recevant des données comprimées par une mémoire tampon (FIFO) 30. Le décodeur à longueur variable VLD est suivi d'un décodeur de chaînes de zéros (RLD), d'un circuit de quantification inverse Q-i, et d'un circuit de transformée cosinus inverse DCTi . La sortie du circuit DCT-1 est fournie à une première entrée d'un additionneur 32 dont une deuxième entrée reçoit des macroblocs d'une image précédemment décodée par l'intermédiaire d'un filtre 34 et d'une mémoire tampon 35. Les données d'image décodées sont fournies par la sortie de l'additionneur 32 et l'intermédiaire d'une mémoire tampon 37.La mémoire tampon 30 est alimentée en données comprimées provenant du bus 10 par l'intermédiaire d'un circuit d'interface 39. Un décodeur selon l'invention diffère d'un décodeur classique par le fait que le circuit d'interface 39 relie également les mémoires tampon 35 et 37 au bus 10. Un contrôleur mémoire 41 calcule et fournit par le bus 10 les adresses correspondant aux divers échanges nécessaires. La gestion des adresses des tampons M1 et M2 est similaire à celle effectuée par le contrôleur mémoire d'un décodeur classique, puisque ces adresses sont, selon l'invention, traduites en fonction de l'emplacement physique de ces tampons dans la mémoire 18 par un gestionnaire de périphérique. De plus, le contrôleur mémoire selon l'invention est notablement simplifié du fait de l'absence du troisième tampon d'image M3. En effet, le contrôleur mémoire d'un décodeur classique devait gérer ce tampon d'une manière particulière pour éviter qu'une image bidirectionnelle en cours de décodage n'écrase une image bidirectionnelle en cours d'affichage. Par ailleurs, le nombre de broches d'un décodeur MPEG selon l'invention est notablement plus faible que celui d'un décodeur MPEG classique. En effet, un décodeur MPEG selon 1' invention ne requiert que les signaux du bus de périphérique 10 (49 signaux pour le bus PCI), tandis qu'un décodeur MPEG classique comporte en outre une interface avec sa mémoire d'image 201, qui est généralement externe. Ainsi, un décodage MPEG dans un micro-ordinateur peut être réalisé selon l'invention grâce à un seul circuit intégré de faible coût (dû au faible nombre de broches), sans qu'il soit nécessaire d'associer au décodeur une coûteuse mémoire d'image supplémentaire (20-1). Cet unique circuit intégré peut être directement disposé sur la carte mère du micro-ordinateur avec un faible surcoût. Bien entendu, un décodeur MPEG selon l'invention peut aussi être monté, comme cela est classique, sur une carte d'extension à connecter au bus 10. REVENDICATIONS 1. Décodeur d'images relié à un bus rapide (10) d'un micro-ordinateur pour recevoir des images comprimées et afficher les images décodées sur un écran (12) du micro-ordinateur, ledit décodeur étant associé à une mémoire d'image (18-1) stockant au moins une image précédemment décodée utilisée pour décoder une image courante, caractérisé en ce que la mémoire d'image est une zone allouée dans une mémoire principale (18) du microordinateur, accessible par le bus rapide. 2. Décodeur selon la revendication 1, caractérisé en ce qu'il fournit directement à un contrôleur d'affichage (12) dudit écran une image (B) en cours de décodage qui n'est pas utilisée pour décoder une image ultérieure. 3. Décodeur selon la revendication 2, caractérisé en ce que la mémoire principale (18) stocke des images intra (I) qui ne sont pas obtenues à partir d'une image précédente et des images prédites (P) qui sont obtenues à partir d'une seule image précédente, lesdites images fournies directement au contrôleur d'affichage (12) étant des images bidirectionnelles (B) obtenues à partir de deux images intra ou prédites précédentes. 4. Décodeur selon la revendication 1, caractérisé en ce qu'il est disposé sur la carte mère du micro-ordinateur.