FR2931280A1 - Procede et dispositif de codage ou decodage d'image avec parallelisatioon du traitement sur plusieurs processeurs et coprocesseurs, programme d'ordinateur et moyen de stockage correspondants. - Google Patents

Procede et dispositif de codage ou decodage d'image avec parallelisatioon du traitement sur plusieurs processeurs et coprocesseurs, programme d'ordinateur et moyen de stockage correspondants. Download PDF

Info

Publication number
FR2931280A1
FR2931280A1 FR0853225A FR0853225A FR2931280A1 FR 2931280 A1 FR2931280 A1 FR 2931280A1 FR 0853225 A FR0853225 A FR 0853225A FR 0853225 A FR0853225 A FR 0853225A FR 2931280 A1 FR2931280 A1 FR 2931280A1
Authority
FR
France
Prior art keywords
line
bcps
column
processor
coprocessor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0853225A
Other languages
English (en)
Other versions
FR2931280B1 (fr
Inventor
Mathieu Muller
Thomas Guionnet
Sylvain Buriau
Guerroue Mickael Le
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MK Systems USA Inc
Original Assignee
Envivio France SARL
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Envivio France SARL filed Critical Envivio France SARL
Priority to FR0853225A priority Critical patent/FR2931280B1/fr
Priority to US12/468,374 priority patent/US8111749B2/en
Publication of FR2931280A1 publication Critical patent/FR2931280A1/fr
Application granted granted Critical
Publication of FR2931280B1 publication Critical patent/FR2931280B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Dans un premier mode de réalisation, il est proposé un procédé de codage ou décodage d'une image comprenant des blocs rectangulaires de pixels, l'image ayant une hauteur de H blocs et une largeur de W blocs, l'image étant découpée en bandes de blocs verticale. Ce procédé comprend les étapes suivantes : obtention de N processeurs et M coprocesseurs, les M coprocesseurs étant répartis sur S niveaux, avec N > 0, M > 0, N+M > 2 et S > 0 ; affectation desdits N processeurs Pi à N bandes contiguës BPi de tailles Ki blocs, avec pour tout niveau de coprocesseurs s, avec 0 <= s <= S-1, affectation de Ms coprocesseurs CPs,j à Ms bandes contiguës BCPs,j de tailles Qs,j blocs, avec : gestion d'envoi de premiers, deuxièmes et troisièmes messages de départ, et de premiers et seconds messages de vérification, vers les processeurs et les coprocesseurs selon un ensemble de règles prédéterminé.Il est également proposé un second mode de réalisation, dans lequel le traitement des blocs est effectué séquentiellement colonne par colonne, et l'image est découpée en bandes horizontales.

Description

Procédé et dispositif de codage ou décodage d'image avec parallélisation du traitement sur plusieurs processeurs et coprocesseurs, programme d'ordinateur et moyen de stockage correspondants. 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui du codage/décodage d'images numériques. Elle s'applique notamment, mais non exclusivement, dans le domaine des encodeur/décodeurs (codecs) vidéo dits temps réel. Typiquement, une image numérique comprend des blocs rectangulaires de pixels (aussi appelés macro-blocs), ces blocs étant répartis en lignes et en colonnes. Chaque bloc rectangulaire possède une largeur de w pixels et une hauteur de h pixels. Dans le standard H.264/AVC (ITU-T H.264, ISO/IEC 14496-10), par exemple, les images sont découpées soit en blocs de 16x16 pixels, soit en blocs de 16x32 (mode MBAFF). Traditionnellement, le codage ou décodage d'une image consiste à traiter l'ensemble de ses blocs, séquentiellement ligne par ligne, de gauche à droite sur une même ligne, et de haut en bas d'une ligne à l'autre. L'invention s'applique notamment, mais non exclusivement, au codage ou décodage d'une séquence vidéo formée d'images successives. Dans ce cas, la technique de codage ou décodage est mise en oeuvre dans un algorithme de compression ou décompression vidéo. Elle est alors conforme à une norme de compression/décompression telle que (cette liste n'est pas exhaustive) : - la norme H.263, définie dans le document de normalisation ITU-T H.263 ; - la norme H.263+, définie dans le document de normalisation ITU-T H.263+ ; - la norme H.264 (aussi appelé H.26L ou MPEG-4 AVC) : définie dans le document de normalisation ISO MPEG-4 Part 10 ; - la norme MPEG-4 Video : définie dans le document de normalisation ISO MPEG-4 Part 2 . Il est clair cependant que l'invention s'applique également au codage ou décodage d'une image fixe.
D'une façon générale, la présente invention peut s'appliquer dans tous les cas où il existe un contexte de dépendance spatiale pour le traitement des blocs d'une image. En d'autres termes, on suppose que pour traiter chaque bloc de l'image, on doit connaître le résultat du traitement préalable d'autres blocs de la même image.
Un tel contexte de dépendance spatiale existe notamment, mais non exclusivement, dans les procédés de codage ou décodage conformes aux normes de compression/décompression précités et basés sur une estimation de mouvement. A titre d'exemple, la figure 1 décrit les dépendances spatiales qui existent entre les blocs d'une image dans le cadre du standard H.264/AVC. Pour traiter un bloc B donné, le résultat du traitement des blocs du voisinage spatial causal BA (bloc de gauche), BB (bloc du dessus), Bc (bloc du dessus à droite) et BD (bloc du dessus à gauche) doit être connu. 2. ARRIÈRE-PLAN TECHNOLOGIQUE On décrit ci-dessous la problématique existant dans le cas d'un codage/décodage d'une séquence vidéo formée d'images successives, à laquelle ont été confrontés les inventeurs de la présente demande de brevet. L'invention ne se limite bien sûr pas à ce cas particulier d'application, mais présente un intérêt pour toute technique de codage/décodage d'image devant faire face à une problématique proche ou similaire. Concevoir un encodeur vidéo à la fois temps réel et de haute qualité est un véritable défi technologique, en particulier dans le cas de vidéos hautes résolutions (par exemple SD ( Standard Definition ), HD ( High Definition . En effet, l'encodage vidéo est une application particulièrement complexe. Il apparaît que le traitement de l'ensemble des blocs d'une image par un unique processeur n'est pas optimale en temps de calcul. Afin de réunir la puissance de calcul nécessaire, il est donc souvent fait appel à la parallélisation : plusieurs unités de traitement fonctionnent simultanément sur différentes portions de la vidéo. Le temps de calcul peut théoriquement être divisé par le nombre d'unités de traitement mises en oeuvre. Une première technique connue de parallélisation d'un encodeur vidéo consiste à limiter les dépendances spatiales ou temporelles. Ainsi, le standard H.264/AVC (ITU-T H.264, ISO/IEC 14496-10) permet le découpage des images en tranches indépendantes (appelées suces en anglais). Les tranches d'une même image peuvent être encodées en parallèle, chaque tranche étant traitée par une unité de traitement (processeur) distincte. Il suffit ensuite de concaténer les trains binaires résultant du traitement des différentes tranches.
Cette première technique connue a pour inconvénient majeur de limiter les performances de l'encodeur en termes de compression/qualité (perte d'efficacité en compression). En effet, outre l'alourdissement des éléments de syntaxe relatifs aux tranches, la découpe en tranches interdit l'utilisation de la corrélation spatiale inter-tranche. Or les dépendances spatiales et temporelles ont pour fonction d'exploiter au mieux les corrélations présentes dans la source vidéo. C'est ce qui permet de maximiser l'efficacité de compression de l'encodeur vidéo. En effet, les formats de compression vidéo récents (H.264/AVC, MPEG4 ASP, H.263) introduisent de fortes dépendances spatiales et temporelles dans le traitement des vidéos. Les images sont généralement découpées en blocs de taille 16x16 pixels (macroblocs). Le traitement successif de ces blocs est séquentiel par nature, dans la mesure où le traitement de chaque bloc nécessite la connaissance du résultat du traitement des blocs voisins. De même, temporellement, les images peuvent classiquement être encodées selon 3 modes différents, I, P ou B. L'encodage d'une image B nécessite la connaissance d'au moins deux images P précédemment encodées. L'encodage d'une image P nécessite la connaissance d'au moins une image P précédemment encodée. Une deuxième technique connue de parallélisation d'un encodeur vidéo est décrite dans la demande de brevet publiée sous le numéro WO 2004/100557, et déposée par Envivio. Il s'agit d'une méthode de parallélisation spatiale du traitement des blocs sur N processeurs, permettant de conserver les dépendances imposées par les standards de compression vidéo. Le principe général consiste à découper l'image en bandes perpendiculaires à la direction de traitement séquentiel des blocs. Ceci permet d'obtenir une répartition optimale des charges entre processeurs. Par exemple, si le traitement des macro-blocs est effectué séquentiellement ligne par ligne, on sépare l'image en bandes verticales. Par ailleurs, la synchronisation des traitements effectués par les N processeurs permet d'éviter qu'un processeur tente de traiter un bloc donné alors que d'autres blocs dont dépend ce bloc donné n'ont pas encore été traités.
Cette deuxième technique connue est efficace, mais peut se révéler insuffisante pour plusieurs raisons : ^ le nombre N de processeurs est limité. En effet, on ne peut pas utiliser plus de W processeurs, avec W le nombre de blocs par ligne de l'image (c'est-à-dire la largeur de l'image en blocs) dans le cas d'un traitement ligne par ligne, avec découpage de l'image en bandes verticales. De plus, plus le nombre de processeurs utilisés est important, moins le parallélisme est efficace, du fait des phases d'initialisation et de terminaison durant lesquelles les processeurs ne sont pas tous utilisés ; ^ concevoir une machine avec beaucoup de processeurs est compliqué et coûteux ; ^ même avec des plateformes multiprocesseurs comprenant beaucoup de processeurs, la puissance de calcul totale est limitée et peut se révéler insuffisante. Il est nécessaire de disposer de davantage de puissance afin d'améliorer les performances en compression des encodeurs vidéo temps réel.
Il est classique de recourir à des coprocesseurs afin d'augmenter la capacité de traitement des processeurs. En général, chaque processeur se voit adjoindre un coprocesseur. De manière générale, on différencie processeur et coprocesseur non pas par leur nature technique (CPU, FPGA, ASIC, DSP, ...) mais par leur rôle dans le système. Le processeur a un rôle d'unité de traitement maître, il est chargé du contrôle global de l'application, ainsi que d'un certain nombre de tâches de décision et de calcul. Le coprocesseur a un rôle d'unité de traitement esclave, il est utilisé par le processeur pour les calculs les plus complexes. A noter que dans un tel schéma processeur/coprocesseur, la communication de données entre processeur et coprocesseur peut prendre un temps non négligeable, ce qui nuit à la performance globale du dispositif. Souvent en pratique, les processeurs dits génériques permettent de faire toutes sortes de calculs, ont des accès mémoires rapides et sont efficaces en cas de branchements (instructions si ( if en anglais), boucles). En revanche, ce ne sont pas forcément les plus puissants. Les coprocesseurs, par exemple les DSP ou les FPGA, sont mieux adaptés au calcul intensif. Cependant, ils sont davantage pénalisés par les branchements et n'ont pas les mêmes capacités mémoire.
Cependant, dans le contexte de la deuxième technique connue précitée, de parallélisation d'un encodeur vidéo, l'utilisation combinée de processeurs et de coprocesseurs n'est pas aisée ni sans poser de problème. En effet, la solution basique consistant à adjoindre un coprocesseur à chaque processeur (et donc utiliser un nombre N de processeurs égal au nombre M de coprocesseurs) n'est pas optimale. En effet, pour qu'une telle solution soit efficace, il faudrait s'assurer que les coprocesseurs soient correctement dimensionnés par rapport aux traitements demandés, ce qui est malheureusement difficile, voire impossible, en pratique. Si les coprocesseurs ont une puissance insuffisante, le système ne pourra évidemment pas fonctionner. Si au contraire les coprocesseurs sont trop puissants, ils seront sous-exploités et le surcoût lié à la mise en oeuvre de ces coprocesseurs plus puissant sera inutile. Il conviendrait donc d'adopter une solution plus complexe, dans laquelle le nombre N de processeurs serait différent du nombre M de coprocesseurs (c'est-à-dire : N ~ M, avec N > 0 et M > 0). Par exemple, en cherchant à développer des produits à base de processeurs génériques et de coprocesseurs de type FPGA, les inventeurs de la présente demande se sont trouvés confrontés à un décalage important entre les capacités de traitement des processeurs et des coprocesseurs. De plus, mettre en oeuvre un coprocesseur par processeur est complexe et coûteux. Dans ce cadre, il serait plus intéressant d'utiliser un seul coprocesseur très puissant pour plusieurs processeurs. Par exemple, un seul coprocesseur FPGA pour quatre processeurs. Cependant, rien dans l'état de l'art n'indique comment gérer la parallélisation et la synchronisation des traitements dans un tel contexte. 3. OBJECTIFS DE L'INVENTION L'invention, dans au moins un mode de réalisation, a notamment pour objectif de pallier ces différents inconvénients de l'état de la technique. Plus précisément, dans au moins un mode de réalisation de l'invention, un objectif est de fournir une technique permettant, afin d'augmenter la puissance de calcul totale, de paralléliser et synchroniser les traitements entre un ensemble de processeurs et un ou plusieurs ensembles de coprocesseurs de cardinalités différentes, tout en respectant des dépendances spatiales qui existent entre les blocs d'une image (contraintes de causalité, telles que présentées par exemple sur la figure 1).
Au moins un mode de réalisation de l'invention a également pour objectif de fournir une telle technique qui soit simple à mettre en oeuvre et peu coûteuse.
Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique adaptée à toutes les situations où le nombre N de processeurs est différent du nombre M de coprocesseurs (N ~ M, avec N > 0 et M > 0).
Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique permettant d'optimiser les temps de calcul et les messages de synchronisation échangés entre les processeurs et les coprocesseurs.
4. EXPOSÉ DE L'INVENTION Dans la présente description, on entend par processeur tout type d'unité de traitement maître, et par coprocesseur tout type d'unité de traitement esclave.
Dans un premier mode de réalisation de l'invention, il est proposé un procédé de codage ou décodage d'une image comprenant des blocs rectangulaires de pixels, l'image ayant une hauteur de H blocs et une largeur de W blocs, l'image étant découpée en bandes de blocs verticales, ledit procédé comprenant les étapes suivantes : - obtention de N processeurs et M coprocesseurs, lesdits M coprocesseurs étant répartis sur S niveaux, avec N > 0, M > 0, N+M > 2 et S > 0 ; - affectation desdits N processeurs P; à N bandes contiguës BP1 de tailles K; blocs, N-1 avec 0 i s N-1 et Ki = W; - pour tout niveau de coprocesseurs s, avec 0 s s s S-1, affectation de Ms coprocesseurs CPs, à ms bandes contiguës BCPs, de tailles Qsd blocs, avec : M,-1 - gestion d'envoi de messages vers les processeurs et les coprocesseurs selon les règles suivantes, en notant BP,, r une ligne de rang r de la bande BP1, et BCPs, i, r une ligne de rang r de la bande BCPs,, avec 0 s r s H-1 : * lorsqu'un processeur P1, avec i 0 et i < N-1, a terminé le traitement d'une ligne BP,,r, envoi d'un premier message de départ autorisant le processeur P1+1 à traiter la ligne BP1+i, r ; 30 * lorsqu'un coprocesseur CPs, j, avec j 0 et j < Ms-1, a terminé le traitement d'une ligne BCPs, j, r, envoi d'un deuxième message de départ autorisant le coprocesseur CPs,+1 à traiter la ligne BCPs,+l,r ; * lorsqu'un processeur P;, avec i 0 et i < N-1, doit traiter le dernier bloc de la ligne BP,, r, avec r > 0, envoi d'un premier message de vérification au processeur P;+1 afin de vérifier si le premier bloc de la ligne BP;+1, r_1 a déjà été traité ; * lorsqu'un coprocesseur CPs,, avec j 0 et j < Ms-1, doit traiter le dernier bloc de la ligne BCPs, j,,, avec r > 0, envoi d'un deuxième message de vérification au coprocesseur CPs,;+1 afin de vérifier si le premier bloc de la ligne BCPs,,+i, r_ 1 a déjà été traité ; * lorsque le premier bloc de la ligne BCPs, j, r appartient à la ligne BP,, r et le dernier bloc de la ligne BCPs, j, r appartient à la ligne BPi+k, r : - si k est supérieur à 0, ou - si k est égal à 0 et le dernier bloc de la ligne BCPs ,, r est le dernier bloc de la ligne BP,, r, - alors lorsque le coprocesseur CPs, j a terminé le traitement de la ligne BCPs, j, r, envoi d'un troisième message de départ autorisant le processeur pi à traiter la ligne BP,, r. 20 Dans ce premier mode de réalisation, le traitement des blocs est effectué séquentiellement ligne par ligne (cas classique d'une direction de traitement séquentiel qui est horizontale, selon une ligne). L'image est découpée en bandes verticales. Le principe général de ce premier mode de réalisation consiste donc à paralléliser un encodeur (par exemple un encodeur vidéo) sur un ensemble de 25 processeurs et de coprocesseurs simultanément, avec un nombre de processeurs différent du nombre de coprocesseurs. Les dépendances spatiales et temporelles induites par la méthode de compression sont respectées grâce à des mécanismes de synchronisation spécifiques. Les communications entre processeurs et coprocesseurs sont limitées (utilisation de seulement trois types de messages de départ et deux types de messages de 30 vérification), de manière à éviter toute perte de temps due à des latences de communication. 10 15 En d'autres termes, la technique proposée permet une exploitation optimale d'une architecture multi-(processeurs/coprocesseurs) dans le cadre de la compression d'image (par exemple compression vidéo). Elle permet notamment de paralléliser un encodeur vidéo sur plusieurs processeurs et coprocesseurs qui ont des capacités de
traitement différentes. Ainsi, on peut avoir moins de coprocesseurs que de processeurs, ou inversement. La parallélisation proposée conserve les dépendances entre blocs introduites par la méthode de compression vidéo, les performances en compression restent donc optimales.
Dans un second mode de réalisation de l'invention, il est proposé un procédé de
codage ou décodage d'une image comprenant des blocs rectangulaires de pixels, l'image ayant une hauteur de H blocs et une largeur de W blocs, l'image étant découpée en bandes de blocs horizontales, ledit procédé comprenant les étapes suivantes :
- obtention de N processeurs et M coprocesseurs, lesdits M coprocesseurs étant
répartis sur S niveaux, avec N > 0, M > 0, N+M > 2 et S > 0 ; - affectation desdits N processeurs P; à N bandes contiguës BP; de tailles K, blocs, N-1 avec0 ~i~ N-1 et =H ; =o - pour tout niveau de coprocesseurs s, avec 0 s s s S-1, affectation de Ms coprocesseurs CPs, j à ms bandes contiguës BCPs, j de tailles Qsd blocs, avec : M -1
QS,; = H ' i=o
- gestion d'envoi de messages vers les processeurs et les coprocesseurs selon les règles suivantes, en notant BP,, r une colonne de rang r de la bande BP;, et BCPs,, r une colonne de rang r de la bande BCPs,, avec 0 s r s W-1 :
* lorsqu'un processeur P;, avec i 0 et i < N-1, a terminé le traitement d'une colonne BP,,r, envoi d'un premier message de départ autorisant le processeur P;+1 à traiter la colonne BP;+1, r ;
* lorsqu'un coprocesseur CPs, j, avec j 0 et j < Ms-1, a terminé le traitement d'une colonne BCPs, j, r, envoi d'un deuxième message de départ autorisant le coprocesseur CPs,,+1 à traiter la colonne BCPs,,+i, r ;
* lorsqu'un processeur P;, avec i 0 et i < N-1, doit traiter le dernier bloc de la colonne BP,, r, avec r > 0, envoi d'un premier message de vérification au 30 processeur P;+, afin de vérifier si le premier bloc de la colonne BP;+l, r_1 a déjà été traité ; * lorsqu'un coprocesseur CPs ~, avec j 0 et j < Ms-1, doit traiter le dernier bloc de la colonne BCPs, r, avec r > 0, envoi d'un deuxième message de vérification au coprocesseur CPs, i+1 afin de vérifier si le premier bloc de la colonne BCPs,+i,r_i a déjà été traité ; * lorsque le premier bloc de la colonne BCPs, j, r appartient à la colonne BP,, r et le dernier bloc de la colonne BCPs, i, r appartient à la colonne BP;+k, r : - si k est supérieur à 0, ou - si k est égal à 0 et le dernier bloc de la colonne BCPs, j, r est le dernier bloc de la colonne BP,, r, alors lorsque le coprocesseur CPs, a terminé le traitement de la colonne BCPs, j, r, envoi d'un troisième message de départ autorisant le processeur pi à traiter la colonne BP,, r.
Dans ce second mode de réalisation, le traitement des blocs est effectué séquentiellement colonne par colonne (cas non classique aujourd'hui mais possible dans le futur d'une direction de traitement séquentiel qui est verticale, selon une colonne). L'image est découpée en bandes horizontales. Le principe général et les avantages de ce premier mode de réalisation sont les mêmes que ceux du premier mode de réalisation ci-dessus. Avantageusement, le codage ou décodage est conforme à une norme appartenant au groupe comprenant : H.263, H.263+, H264 et MPEG-4 Video. Cette liste n'est pas exhaustive. Dans un autre mode de réalisation, l'invention concerne un produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur. Ce produit programme d'ordinateur comprend des instructions de code de programme pour la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation), lorsque ledit programme est exécuté sur un ordinateur.
Dans un autre mode de réalisation, l'invention concerne un moyen de stockage lisible par ordinateur, éventuellement totalement ou partiellement amovible, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur pour mettre en oeuvre le procédé précité (dans l'un quelconque de ses différents modes de réalisation).
Dans un autre mode de réalisation de l'invention, il est proposé un dispositif de codage ou décodage d'une image comprenant des blocs rectangulaires de pixels, l'image
ayant une hauteur de H blocs et une largeur de W blocs, l'image étant découpée en
bandes de blocs verticales, ledit dispositif comprenant :
- N processeurs et M coprocesseurs, lesdits M coprocesseurs étant répartis sur S
niveaux, avec N > 0, M > 0, N+M > 2 et S > 0 ; - des moyens d'affectation desdits N processeurs P; à N bandes contiguës BP1 de N-1 tailles K; blocs, avec 0 s i s N-1 et Ki = W ; - pour tout niveau de coprocesseurs s, avec 0 s s s S-1, des moyens d'affectation de Ms coprocesseurs CPs, j à ms bandes contiguës BCPs, j de tailles Qsd blocs, M,-1 avec : Qs = W ;
- des moyens de gestion d'envoi de messages vers les processeurs et les coprocesseurs selon les règles suivantes, en notant BP,, r une ligne de rang r de la bande BP1, et BCPs,j,r une ligne de rang r de la bande BCPs,, avec 0 s r s H-1 :
* lorsqu'un processeur P1, avec i 0 et i < N-1, a terminé le traitement d'une
ligne BP,,r, envoi d'un premier message de départ autorisant le processeur
P1+1 à traiter la ligne BP1+i, r ;
* lorsqu'un coprocesseur CPs, j, avec j 0 et j < Ms-1, a terminé le traitement d'une ligne BCPs, j, r, envoi d'un deuxième message de départ autorisant le coprocesseur CPs,,+1 à traiter la ligne BCPs,,+i, r ;
* lorsqu'un processeur P1, avec i 0 et i < N-1, doit traiter le dernier bloc de la ligne BP,, r, avec r > 0, envoi d'un premier message de vérification au processeur Pi+1 afin de vérifier si le premier bloc de la ligne BP1+1, r_1 a déjà été traité ;
* lorsqu'un coprocesseur CPs,, avec j 0 et j < Ms-1, doit traiter le dernier bloc de la ligne BCPs, Ir, avec r > 0, envoi d'un deuxième message de vérification au coprocesseur CPs,,+1 afin de vérifier si le premier bloc de la ligne BCPs,,+i, r_ 1 a déjà été traité ; 20 25 30 * lorsque le premier bloc de la ligne BCPs, j, r appartient à la ligne BP,, r et le dernier bloc de la ligne BCPs, j, r appartient à la ligne BP;+k, r :
- si k est supérieur à 0, ou
- si k est égal à 0 et le dernier bloc de la ligne BCPs 3, r est le dernier bloc de la ligne BP,, r,
- alors lorsque le coprocesseur CPs, j a terminé le traitement de la ligne BCPs, Ir, envoi d'un troisième message de départ autorisant le processeur pi à traiter la ligne BP,, r.
Dans un autre mode de réalisation de l'invention il est proposé un dispositif de codage ou décodage d'une image comprenant des blocs rectangulaires de pixels, l'image
ayant une hauteur de H blocs et une largeur de W blocs, l'image étant découpée en
bandes de blocs horizontales, ledit dispositif comprenant :
- N processeurs et M coprocesseurs, lesdits M coprocesseurs étant répartis sur S niveaux, avec N > 0, M > 0, N+M > 2 et S > 0 ; - des moyens d'affectation desdits N processeurs P; à N bandes contiguës BPi de N-1 tailles K; blocs, avec 0 s i s N-1 et l Ki = H; =o - pour tout niveau de coprocesseurs s, avec 0 s s s S-1, des moyens d'affectation de Ms coprocesseurs CPs, j à ms bandes contiguës BCPs, j de tailles Qsd blocs, M -1 avec : QS = H ; i=o - des moyens de gestion d'envoi de messages entre les processeurs et les coprocesseurs selon les règles suivantes, en notant BP,, r une colonne de rang r de la bande BP;, et BCPs, j, r une colonne de rang r de la bande BCPs, j, avec 0 s r s W-1 :
* lorsqu'un processeur P;, avec i 0 et i < N-1, a terminé le traitement d'une colonne BP,,r, envoi d'un premier message de départ autorisant le processeur P;+1 à traiter la colonne BP;+1, r ;
* lorsqu'un coprocesseur CPs, j, avec j 0 et j < Ms-1, a terminé le traitement d'une colonne BCPs, j, r, envoi d'un deuxième message de départ autorisant le coprocesseur CPs, j+1 à traiter la colonne BCPs,,+i, r ;
* lorsqu'un processeur P;, avec i 0 et i < N-1, doit traiter le dernier bloc de la colonne BP,, r, avec r > 0, envoi d'un premier message de vérification au 30 processeur P;+, afin de vérifier si le premier bloc de la colonne BP;+l, r_1 a déjà été traité ; * lorsqu'un coprocesseur CPs ~, avec j 0 et j < Ms-1, doit traiter le dernier bloc de la colonne BCPs, r, avec r > 0, envoi d'un deuxième message de vérification au coprocesseur CPs, i+1 afin de vérifier si le premier bloc de la colonne BCPs,+i,r_i a déjà été traité ; * lorsque le premier bloc de la colonne BCPs, j, r appartient à la colonne BP,, r et le dernier bloc de la colonne BCPs, i, r appartient à la colonne BP;+k, r : - si k est supérieur à 0, ou - si k est égal à 0 et le dernier bloc de la colonne BCPs, j, r est le dernier bloc de la colonne BP,, r, - alors lorsque le coprocesseur CPs, a terminé le traitement de la colonne BCPs, j, r, envoi d'un troisième message de départ autorisant le processeur pi à traiter la colonne BP,, r. 5. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels : - la figure 1, déjà décrite en relation avec l'art antérieur, illustre un exemple de dépendance spatiale pour le traitement d'un bloc d'une image ; - la figure 2 illustre le traitement d'une image selon la technique connue décrite dans la demande de brevet WO 2004/100557 ; - la figure 3 illustre le traitement d'une image selon un mode de réalisation de l'invention ; - la figure 4 résume les communications (messages de départ et messages de vérification) nécessaires dans l'exemple de la figure 3 ; - la figure 5 détaille les messages de départ échangés dans l'exemple de la figure 3; - la figure 6 présente la structure d'un encodeur selon un premier mode de réalisation de l'invention ; et - la figure 7 présente la structure d'un encodeur selon un second mode de réalisation de l'invention. 6. DESCRIPTION DÉTAILLÉE Sur toutes les figures du présent document, les éléments et étapes identiques sont désignés par une même référence numérique. On décrit ci-dessous un premier mode de réalisation d'un procédé de codage ou décodage, dans lequel l'image est découpée en bandes verticales et le traitement est effectué ligne par ligne. L'homme du métier pourra aisément transposer cet enseignement pour mettre en oeuvre un second mode de réalisation dans lequel l'image est découpée en bandes horizontales et le traitement est effectué colonne par colonne. Le but de la technique proposée est de répartir le traitement entre N processeurs et M coprocesseurs répartis sur S niveaux. Plus précisément, on a : N > 0, M > 0, N+M >2etS>0. Dans une réalisation particulière, l'invention est appliquée à l'encodage H.264/AVC. Un ensemble de quatre processeurs et de trois coprocesseurs sur deux couches est utilisé. Une couche de deux coprocesseurs permet d'effectuer l'estimation de mouvement. Une couche comportant un seul coprocesseur permet d'effectuer l'estimation des meilleurs modes de prédiction intra. Les quatre processeurs sont en charge du reste du traitement.
La figure 2 illustre le traitement d'une image selon la technique connue décrite dans la demande de brevet WO 2004/100557. On a N=4 processeurs. L'image est découpée en N=4 bandes verticales. Chaque processeur P; est affecté à la bande verticale B;, avec 0 s i s 3. Les flèches référencées 201, 202, 203 et 204 symbolisent le traitement ligne par ligne effectué par les processeurs. Un décalage temporel est appliqué entre chaque bande verticale, afin d'assurer le respect des dépendances entre blocs. Ainsi, sur l'exemple de la figure 2, les blocs gris (14, 26, 38 et 50) indiquent l'avancement de chaque processeur à un instant t. Par exemple, à cet instant t, le bloc 36 n'a pu déjà être traité que si le bloc 35 avait déjà été traité par le processeur PI. Selon la demande de brevet WO 2004/100557, la parallélisation est possible à condition de maintenir le décalage adéquat entre les processeurs tout au long du traitement. Le fonctionnement de cette technique connue est détaillé ci-après.
La figure 3 illustre le traitement d'une image selon un mode de réalisation de l'invention dans lequel il y a : ^ N=2 processeurs,
^ S=2 niveaux de coprocesseurs,
^ M0=3 coprocesseurs sur le niveau s=0,
^ Ms =l coprocesseur sur le niveau s=1.
Tout comme dans la demande de brevet WO 2004/100557, l'image est découpée en bandes de blocs perpendiculairement au sens de traitement des blocs. Ainsi, dans tous nos exemples, les images sont découpées en bandes verticales.
Les notations suivantes, illustrées sur la figure 3, sont utilisées :
^ l'image traitée à une hauteur de H blocs et une largeur de W blocs ;
^ les N processeurs P; sont affectés à N bandes contiguës BP1 de tailles K; blocs, avec 0sisN-1; N-1 ^ ona: Ki =W ; ^ pour tout niveau de coprocesseur s, avec 0 s s s S-1, les Ms coprocesseurs CPs,i sont affectés à ms bandes contiguës BCPs,i de tailles Qs,i blocs ; M,,-1 ^ pour tout s, ona ) s j =W.
On précise sur quelle ligne travaille un processeur ou un coprocesseur avec l'indice de rang r. La ligne BP,, r correspond à la ligne r de la bande BP1 qui sera traitée par le processeur P1. De même, la ligne BCPs,i, r correspond à la ligne r de la bande BCPs,
qui sera traitée par le coprocesseur de niveau s CPs,i. Ainsi, par exemple, toujours dans le cas de la figure 3 :
^ la ligne BP02 2 contient les blocs 24 à 29 ;
^ la ligne BCP0111 1 contient les blocs 16 à 19 ;
^ la ligne BCP1003 3 contient les blocs 36 à 47.
On peut ainsi résumer le fonctionnement de la technique de la demande de brevet WO 2004/100557 (illustrée sur la figure 2) en s'appuyant sur ces notations : 25 - le processeur Po : * traite les Ko - 1 premiers blocs de la ligne BPo, r * vérifie que le premier bloc de la ligne BPI, r_1 a été traité par P1 (si r > 0) ; * traite le dernier bloc de la ligne BPo, r * donne le signal de départ au processeur P1 sur la ligne BPI, r * passe à la ligne suivante BPo, r+1 - le processeur P; (i > 0 ; i < N-1) : * au signal de départ donné par Pi_1 : • traite les K; - 1 premiers blocs de la ligne BP, r • vérifie que le premier bloc de la ligne BP;+1, r_1 a été traité par Pi+1 (si r > 0) • traite le dernier bloc de la ligne BP, r • donne le signal de départ au processeur P;+1 sur la ligne BPi+i, r • attend le signal de Pi_1 pour passer à la ligne suivante BP,, r+1 15 - le processeur P; avec i = N-1 : * au signal de départ donné par Pi_1 : • traite les K; blocs de la ligne BP, r • attend le signal de Pi_1 pour passer à la ligne suivante BP,, r+1 Avec l'exemple d'image de la figure 3, et en prenant N=2 processeurs, le 20 fonctionnement de la technique connue de la demande brevet WO 2004/100557 est résumé dans le tableau suivant : Po P1 BP0,0 Traitement blocs 0-5 Départ BP1,o sur P1 BP0,1 BP1,o Traitement blocs 12-16 Traitement blocs 6-11 Vérification bloc 6 sur P1 Traitement bloc 17 Départ BP1,1 sur P1 BP0,2 BP1,1 Traitement blocs 24-28 Traitement blocs 18-23 Vérification bloc 18 sur P1 Traitement bloc 29 Départ BP1,2 sur P1 15 10 La technique proposée repose sur la gestion d'envoi de messages vers les processeurs et les coprocesseurs selon les règles suivantes : Règle 1 : Message de départ envoyé par un processeur vers un processeur ou par un coprocesseur d'une couche s vers un coprocesseur de la même couche.
Lorsqu'un processeur P;, avec i 0 et i < N-1, a terminé le traitement d'une ligne BP,, r, il envoie un premier message de départ sur la ligne BP;+I, r au processeur P;+l. Ce premier message de départ est connu de la demande de brevet WO 2004/100557. Lorsqu'un coprocesseur CPs, (j 0 ; j < Ms-1) a terminé le traitement d'une ligne BCPs, i, r, il envoie un deuxième message de départ sur la ligne BCPs, i+l, r au coprocesseur CPs,i+I. Ce deuxième message de départ n'est pas connu de la demande de brevet WO 2004/100557. Règle 2 : Message de vérification envoyé par un processeur vers un processeur ou par un coprocesseur d'une couche s vers un coprocesseur de la même couche. Lorsqu'un processeur P; (i 0 ; i < N-1) doit traiter le dernier bloc de la ligne BP,, r (r > 0), il envoie un premier message de vérification au processeur P;+, afin de vérifier si le premier bloc de la ligne BP;+l, r_1 a déjà été traité. Ce premier message de vérification est connu de la demande de brevet WO 2004/100557. Lorsqu'un coprocesseur CPs,3 (j 0 ; j < Ms-1) doit traiter le dernier bloc de la ligne BCPs, j, r (r > 0), il envoie un deuxième message de vérification au coprocesseur CPs, i+1 afin de vérifier si le premier bloc de la ligne BCPs, j+1, r_1 a déjà été traité. Ce deuxième message de vérification n'est pas connu de la demande de brevet WO 2004/100557. Règle 3 : Message de départ envoyé par un coprocesseur vers un processeur. Lorsque le premier bloc de la ligne BCPs, j, r appartient à la ligne BP,, r et le dernier bloc de la ligne BCPs, j, r appartient à la ligne BPi+k, r : - si k est supérieur à 0, ou - si k est égal à 0 et le dernier bloc de la ligne BCPs, j, r est le dernier bloc de la ligne BP,, r, alors lorsque le coprocesseur CPs, a terminé le traitement de la ligne BCPs, j, r' il envoie un troisième message de départ autorisant le processeur pi à traiter la ligne BP,, r. Ce troisième message de départ n'est pas connu de la demande de brevet WO 2004/100557. Règle 4 : Messages de départ attendus par un processeur. Lorsqu'il a terminé la ligne BP,, r, un processeur P; (i > 0 ; i < N) attend un message de P;_1 avant de démarrer la ligne BP,,r+I. Pour tout s : - s'il existe une ligne BCPs, j, r dont le premier bloc est dans la ligne BP,, r, alors il existe k supérieur ou égal à 0 tel que : * la ligne BCPs,;+k, r a au moins un bloc dans la ligne BP,, r * le dernier bloc de la ligne BCPs, j+k, r est le dernier bloc de la ligne BP,, r ou appartient à une autre ligne BP;+,r (v > 0) - le processeur P; doit recevoir un message du coprocesseur CPs, j+k avant de commencer à traiter la ligne BP,,r. Règle 5 : Messages de départ attendus par un coprocesseur. Lorsqu'il a terminé la ligne BCPs,, r, un coprocesseur CPs,3 (j > 0 ; j < Ms) attend un message de CPs,i_i avant de démarrer la ligne BCPs,,, r+i• En appliquant ces règles sur tous les processeurs et coprocesseurs utilisés, on établit la liste des communications (messages de départ et messages de vérification notamment) nécessaires au bon fonctionnement de l'invention. Ainsi, la figure 4 résume les communications (messages de départ et messages de vérification) nécessaires dans l'exemple de la figure 3 (N=2, S=2, M0=3 et M1=1). Les flèches pleines correspondent aux messages de départ (voir la figure 5 pour plus de détails) : la flèche référencée 401 représente les premiers messages de départ, les flèches référencées 402 représentent les deuxièmes messages de départ et les flèches référencées 403 représentent les troisièmes messages de départ. 20 25 Les flèches pointillées correspondent aux messages de vérification : la flèche référencée 404 représente les premiers messages de vérification et les flèches référencées 405 représentent les deuxièmes messages de vérification. On peut ainsi résumer le fonctionnement de la technique proposée : - le processeur Po : * au signal de départ donné par les coprocesseurs (S messages de départ nécessaires) : • traite les Ko - 1 premiers blocs de la ligne BPo, r • vérifie que le premier bloc de la ligne BPI, r_1 a été traité par PI (si r > 0) • traite le dernier bloc de la ligne BPo, r • donne le signal de départ au processeur PI sur la ligne BPI, r • attend les messages de départ des coprocesseurs avant de passer à la ligne suivante BPo, r+1 - le processeur P; (i > 0 ; i < N-1) : * au signal de départ donné par P;_1 et par des coprocesseurs si nécessaire (règle 4) : • traite les K; - 1 premiers blocs de la ligne BP,, r • vérifie que le premier bloc de la ligne BP;+l, r_1 a été traité par P;+~ (si r > 0) • traite le dernier bloc de la ligne BP,, r • donne le signal de départ au processeur P;+, sur la ligne BPi+i, r • attend le signal de P;_1 et des coprocesseurs (si nécessaire) pour passer à la ligne suivante BP,, r+1 - le processeur P; avec i = N-1 : * au signal de départ donné par P;_1 et par des coprocesseurs si nécessaire (règle 4) : • traite les K; blocs de la ligne BP,, r • attend le signal de P;_1 et des coprocesseurs (si nécessaire) pour passer à la ligne suivante BP,, r+1 5 10 15 20 25 pour toute couche de coprocesseur s : * le coprocesseur CPs, o : • traite les Qs, o - 1 premiers blocs de la ligne BCPs, o, r • vérifie que le premier bloc de la ligne BCPs, 1, r_1 a été traité par CPs, I (si r>0) • traite le dernier bloc de la ligne BCPs, o, r • donne le signal de départ au coprocesseur CPs, I sur la ligne BCPs, I, r • donne le signal de départ à un processeur si nécessaire (règle 3) • passe à la ligne suivante BCPs, o, r+i * le coprocesseur CPs,i (j > 0 ; j < Ms - 1) : • au signal de départ donné par CPs,i_I : • traite les Qs, i - 1 premiers blocs de la ligne BCPs,,, r • vérifie que le premier bloc de la ligne BCPs, ;+I, r-I a été traité par CPs,i+I (si r > 0) • traite le dernier bloc de la ligne BCPs,,, r • donne le signal de départ au coprocesseur CPs, i+I sur la ligne BCPs, j+I,r • donne le signal de départ à un processeur si nécessaire (règle 3) • attend le signal de CPs,i_I pour passer à la ligne suivante BCPs,;,r+i * le coprocesseur CPs,i avec j = Ms ù 1 : • au signal de départ donné par CPs,i_I : • traite les Qs,i blocs de la ligne BCPs,, • donne le signal de départ à un processeur (règle 3) • attend le signal de CPs,i_I pour passer à la ligne suivante BCPs,;,r+i Avec l'exemple d'image de la figure 3, et en prenant N=2, S=2, M0=3 et M1=1, le fonctionnement de la technique proposée est résumé dans le tableau suivant : Po Pl CPo,o CPo,1 CPo,z CP1,o BCPo,o,o BCP1,o,o Traitement Traitement blocs 0-3 blocs 0-11 Départ BCPo,I,o Départ BPo,o sur CPo1 I sur Po BCPo,o4 1 BCPo,1,o BCP1,o,1 Traitement Traitement Traitement blocs 12-14 blocs 4-7 blocs 12-23 Vérification Départ BCP0,2,0 Départ BPo,I bloc 4 sur CPo,I sur CPo,2 sur Po Traitement Départ BPo,o bloc 15 sur Po Départ BCPo,1,1 sur CPo1 1 BPo,o BCPo,o,z BCP0,1,1 BCP0,2,0 BCP1,o,2 Traitement Traitement Traitement Traitement Traitement blocs 0-5 blocs 24-26 blocs 16-18 blocs 8-11 blocs 24-35 Départ BPI,o Vérification Vérification Départ BPI,o Départ BP0,2 sur P1 bloc 16 sur CPo,I bloc 8 sur CPo,2 sur P1 sur Po Traitement Traitement bloc 27 bloc 19 Départ BCPo,1,2 Départ BCPo,2,1 sur CPo,I sur CPo,2 Départ BPo,1 sur Po BP0,1 BP1,o BCPo,o,3 BCPo,1,2 BCPo,2,1 BCP1,o,3 Traitement Traitement Traitement Traitement Traitement Traitement blocs 12-16 blocs 6-11 blocs 36-38 blocs 28-30 blocs 20-23 blocs 36-47 Vérification Vérification Vérification Départ BPI,I Départ BPo,3 bloc 6 sur PI bloc 28 sur CPo,I bloc 20 sur sur PI sur Po Traitement Traitement CP0,2 bloc 17 bloc 39 Traitement Départ BPI,1 Départ BCP0,1,3 bloc 31 sur PI sur CPo,I Départ BCP0,2,2 sur CPo,2 Départ BPo,2 sur Po BP0,2 BP1,l BCPo,o,4 BCPo,1,3 BCP0,2,2 BCP1,o,4 Traitement Traitement Traitement Traitement Traitement Traitement blocs 24-28 blocs 18-23 blocs 48-50 blocs 40-42 blocs 32-35 blocs 48-59 Vérification Vérification Vérification Départ BP1,2 Départ BPo,4 bloc 18 sur PI bloc 40 sur CPo,I bloc 32 sur sur PI sur Po Traitement Traitement CP0,2 bloc 29 bloc 51 Traitement Départ BP1,2 Départ BCP0,1,4 bloc 43 sur PI sur CPo,I Départ BCP0,2,3 sur CPo,2 Départ BPo,3 sur Po ... ... ... ... ... ... La figure 5 détaille les messages de départ de ce tableau (c'est-à-dire les premiers 401, deuxièmes 402 et troisièmes 403 messages départ déjà mentionnés dans la description de la figure 4 401, 402 et 403), qui sont échangés dans l'exemple de la figure 3. La figure 6 présente la structure simplifiée d'un dispositif de codage/décodage 600 selon un premier mode de réalisation de l'invention. Ce dispositif comprend un bus de communication 604 auquel sont reliés : ^ une mémoire morte (ROM) 602 ; ^ une mémoire vive (RAM) 603 ; et ^ un ensemble 601 de N processeurs (références Po à PN_1) et M coprocesseurs (références CP0 à CPM_I) répartis sur S niveaux (avec N > 0, M > 0, N+M > 2 et S > 0). La mémoire morte 602 stocke le code exécutable des programmes qui, quand ils sont exécutés par les processeurs et coprocesseurs, permettent la mise en oeuvre de la technique de l'invention, par exemple selon le mode de réalisation dont les règles et le fonctionnement sont décrits ci-dessus en relation avec les figures 3 à 5.
A l'initialisation, les instructions de code des programmes précités sont transférées dans la mémoire vive 603 afin d'être exécutées par les processeurs et coprocesseurs de l'ensemble référencé 601. La mémoire vive 603 comprend également des registres pour mémoriser les variables et paramètres nécessaires à cette exécution. L'ensemble 601 de processeurs et coprocesseurs reçoit en entrée une séquence vidéo à coder 605 et la code sous la forme d'une séquence codée 606, selon les instructions des programmes précités. Le dispositif 600 délivre en sortie la séquence codée 606. Dans ce premier mode de réalisation, les messages de départ et les messages de vérification sont générés par les processeurs et coprocesseurs qui se les envoient directement entre eux.
La figure 7 présente la structure simplifiée d'un dispositif de codage/décodage 700 selon un second mode de réalisation de l'invention. Ce dispositif comprend un bus de communication 704 auquel sont reliés : ^ une mémoire morte (ROM) 702 ; ^ une mémoire vive (RAM) 703 ; ^ un ensemble 701 de N processeurs (références Po à PN_1) et M coprocesseurs (références CP0 à CPM_I) répartis sur S niveaux (avec N > 0, M > 0, N+M > 2 et S>0);et ^ un processeur superviseur 707, qui supervise le fonctionnement de l'ensemble 701 de processeurs et coprocesseurs, et notamment génère et envoie les messages de départ et les messages de vérification, en fonction des informations fournies par les processeurs et coprocesseurs de l'ensemble 701. La mémoire morte 702 stocke le code exécutable des programmes qui, quand ils sont exécutés par le processeur superviseur 707 et l'ensemble 701 de processeurs et coprocesseurs, permettent la mise en oeuvre de la technique de l'invention, par exemple selon une variante du mode de réalisation dont les règles et le fonctionnement sont décrits ci-dessus en relation avec les figures 3 à 5. Le fonctionnement de cette variante est détaillé ci-dessous. A l'initialisation, les instructions de code des programmes précités sont transférées dans la mémoire vive 703 afin d'être exécutées par le processeur superviseur 707 et l'ensemble 701 de processeurs et coprocesseurs. La mémoire vive 703 comprend également des registres pour mémoriser les variables et paramètres nécessaires à cette exécution. Le processeur superviseur 707 et l'ensemble 701 de processeurs et coprocesseurs reçoivent en entrée une séquence vidéo à coder 705 et la codent sous la forme d'une séquence codée 706, selon les instructions des programmes précités. Le dispositif 700 délivre en sortie la séquence codée 706. Dans ce second mode de réalisation, les messages de départ et les messages de vérification sont générés et envoyés par le processeur superviseur 707, à partir d'informations fournies par les processeurs et coprocesseurs de l'ensemble référencé 701. On peut ainsi résumer le fonctionnement de la variante proposée dans ce second mode de réalisation : - le processeur Po : * au signal de départ donné par le processeur superviseur 707 (S messages de départ nécessaires, un par coprocesseur) : • traite les Ko - 1 premiers blocs de la ligne BPo, r • en informe le processeur superviseur 707 afin que ce dernier vérifie que le premier bloc de la ligne BPI, r_1 a été traité par PI (si r > 0) • traite le dernier bloc de la ligne BPo, r • en informe le processeur superviseur 707 afin que ce dernier donne le signal de départ au processeur PI sur la ligne BPI, r • attend les messages de départ du processeur superviseur 707 avant de passer à la ligne suivante BPo, r+1 - le processeur P; (i > 0 ; i < N-1) : * au signal de départ (message(s) de départ) donné par le processeur superviseur 707 à partir d'informations fournies par P;_1 et par des coprocesseurs si nécessaire (équivalent de la règle 4) : • traite les K; - 1 premiers blocs de la ligne BP,, r • en informe le processeur superviseur 707 afin que ce dernier vérifie que le premier bloc de la ligne BP;+l, r_1 a été traité par P;+, (si r > 0) • traite le dernier bloc de la ligne BP,, r • en informe le processeur superviseur 707 afin que ce dernier donne le signal de départ au processeur P;+, sur la ligne BPi+i, r • attend le(s) message(s) de départ) envoyé(s) par le processeur superviseur 707 à partir d'informations fournies par P;_1 et par des coprocesseurs si nécessaire, pour passer à la ligne suivante BP,, r+1 - le processeur P; avec i = N-1 : * au signal de départ (message(s) de départ) donné par le processeur superviseur 707 à partir d'informations fournies par P;_1 et par des coprocesseurs si nécessaire (équivalent de la règle 4) : • traite les K; blocs de la ligne BP,, r • attend le(s) message(s) de départ) envoyé(s) par le processeur superviseur 707 à partir d'informations fournies par P;_1 et par des coprocesseurs si nécessaire, pour passer à la ligne suivante BP,, r+1 - pour toute couche de coprocesseur s : * le coprocesseur CPs, o : 20 25 30 5 10 15 25 • traite les Qs, o - 1 premiers blocs de la ligne BCPs, o, r • en informe le processeur superviseur 707 afin que ce dernier vérifie que le premier bloc de la ligne BCPs, 1, r_1 a été traité par CPs, (si r > 0) • traite le dernier bloc de la ligne BCPs, o, r • en informe le processeur superviseur 707 afin que ce dernier donne le signal de départ au coprocesseur CPs, ~ sur la ligne BCPs, l, r, etdonne le signal de départ à un processeur si nécessaire (équivalent de la règle 3) ; • passe à la ligne suivante BCPs, o, r+i * le coprocesseur CPs,i (j > 0 ; j < Ms - 1) : • au signal de départ donné par le processeur superviseur 707 à partir d'informations fournies par le coprocesseur CPs,i_i • traite les Qs,i - 1 premiers blocs de la ligne BCPs,i,r • en informe le processeur superviseur 707 afin que ce dernier vérifie que le premier bloc de la ligne BCPs,+I, r_1 a été traité par CPs,i+l (si r > 0) • traite le dernier bloc de la ligne BCPs,i,r • en informe le processeur superviseur 707 afin que ce dernier donne le signal de départ au coprocesseur CPs, i+1 sur la ligne BCPs, j+1, r, et donne le signal de départ à un processeur si nécessaire (équivalent de la règle 3) • attend le signal de départ donné par le processeur superviseur 707 à partir d'informations fournies par le coprocesseur CPs, pour passer à la ligne suivante BCPs,,, r+i * le coprocesseur CPs,i avec j = Ms û 1 : • au signal de départ donné par le processeur superviseur 707 à partir d'informations fournies par le coprocesseur CPs,i_i • traite les Qs,i blocs de la ligne BCPs,i,r • en informe le processeur superviseur 707 afin que ce dernier donne le signal de départ à un processeur (équivalent de la règle 3) attend le signal de départ donné par le processeur superviseur 707 à partir d'informations fournies par le coprocesseur CPs, pour passer à la ligne suivante BCPs,i, r+1 Il est clair que de nombreux autres modes de réalisation du dispositif de codage/décodage peuvent être envisagés, sans sortir du cadre de la présente invention. On notera que l'invention ne se limite pas à une implantation purement logicielle, sous la forme d'instructions de programmes informatiques, mais qu'elle peut aussi être mise en oeuvre sous forme matérielle ou toute forme mixant une partie matérielle et une partie logicielle.10

Claims (8)

  1. REVENDICATIONS1. Procédé de codage ou décodage d'une image comprenant des blocs rectangulaires de pixels, l'image ayant une hauteur de H blocs et une largeur de W blocs, l'image étant découpée en bandes de blocs verticales, ledit procédé étant caractérisé en ce qu'il comprend les étapes suivantes : - obtention de N processeurs et M coprocesseurs, lesdits M coprocesseurs étant répartis sur S niveaux, avec N > 0, M > 0, N+M > 2 et S > 0 ; - affectation desdits N processeurs P; à N bandes contiguës BPl de tailles K; blocs, Nù1 avec 0 i s N-1 et Ki = W; - pour tout niveau de coprocesseurs s, avec 0 s s s S-1, affectation de Ms coprocesseurs CPs, j à ms bandes contiguës BCPs, j de tailles Qsd blocs, avec : M -1 s,' - gestion d'envoi de messages vers les processeurs et les coprocesseurs selon les règles suivantes, en notant BP,, r une ligne de rang r de la bande BP1, et BCPs, j, r une ligne de rang r de la bande BCPs,, avec 0 s r s H-1 : * lorsqu'un processeur P1, avec i 0 et i < N-1, a terminé le traitement d'une ligne BP,,r, envoi d'un premier message de départ (401) autorisant le processeur P1+1 à traiter la ligne BPI+i, r ; * lorsqu'un coprocesseur CPs, j, avec j 0 et j < Ms-1, a terminé le traitement d'une ligne BCPs, j, r, envoi d'un deuxième message de départ (402) autorisant le coprocesseur CPs,,+l à traiter la ligne BCPs,,+i, r ; * lorsqu'un processeur Pl, avec i 0 et i < N-1, doit traiter le dernier bloc de la ligne BP,, r, avec r > 0, envoi d'un premier message de vérification (404) au processeur Pi+1 afin de vérifier si le premier bloc de la ligne BPl+1, r_1 a déjà été traité ; * lorsqu'un coprocesseur CPs,, avec j 0 et j < Ms-1, doit traiter le dernier bloc de la ligne BCPs, Ir, avec r > 0, envoi d'un deuxième message de vérification (405) au coprocesseur CPs, ;+1 afin de vérifier si le premier bloc de la ligne BCPs,,+i,r_1 a déjà été traité ; * lorsque le premier bloc de la ligne BCPs, j, r appartient à la ligne BP,, r et le dernier bloc de la ligne BCPs, j, r appartient à la ligne BPI+k, r : 20 25 30- si k est supérieur à 0, ou si k est égal à 0 et le dernier bloc de la ligne BCPs, j, r est le dernier bloc de la ligne BP,, r, alors lorsque le coprocesseur CPs, j a terminé le traitement de la ligne BCPs, j, r, envoi d'un troisième message de départ (403) autorisant le processeur P; à traiter la ligne BP,, r.
  2. 2. Procédé de codage ou décodage d'une image comprenant des blocs rectangulaires de pixels, l'image ayant une hauteur de H blocs et une largeur de W blocs, l'image étant découpée en bandes de blocs horizontales, ledit procédé étant caractérisé en ce qu'il comprend les étapes suivantes : - obtention de N processeurs et M coprocesseurs, lesdits M coprocesseurs étant répartis sur S niveaux, avec N > 0, M > 0, N+M > 2 et S > 0 ; - affectation desdits N processeurs P; à N bandes contiguës BP; de tailles K; blocs, N-1 avec0 ~i~ N-1 et =H ; =o - pour tout niveau de coprocesseurs s, avec 0 s s s S-1, affectation de Ms coprocesseurs CPs, j à ms bandes contiguës BCPs, j de tailles Qsd blocs, avec : M -1 QS,; = H ' i=o - gestion d'envoi de messages vers les processeurs et les coprocesseurs selon les règles suivantes, en notant BP,, r une colonne de rang r de la bande BP;, et BCPs,,,, une colonne de rang r de la bande BCPs,, avec 0 s r s W-1 : * lorsqu'un processeur P;, avec i 0 et i < N-1, a terminé le traitement d'une colonne BP,,r, envoi d'un premier message de départ autorisant le processeur P;+1 à traiter la colonne BP;+1, r ; * lorsqu'un coprocesseur CPs, j, avec j 0 et j < Ms-1, a terminé le traitement d'une colonne BCPs, j,,, envoi d'un deuxième message de départ autorisant le coprocesseur CPs,,+1 à traiter la colonne BCPs,,+i, r ; * lorsqu'un processeur P;, avec i 0 et i < N-1, doit traiter le dernier bloc de la colonne BP,, r, avec r > 0, envoi d'un premier message de vérification au processeur Pi+1 afin de vérifier si le premier bloc de la colonne BP;+1, r_1 a déjà été traité ; 30* lorsqu'un coprocesseur CPs,, avec j 0 et j < Ms-1, doit traiter le dernier bloc de la colonne BCPs, r, avec r > 0, envoi d'un deuxième message de vérification au coprocesseur CPs, i+1 afin de vérifier si le premier bloc de la colonne BCPs,+i,r_i a déjà été traité ; * lorsque le premier bloc de la colonne BCPs, j, r appartient à la colonne BP,, r et le dernier bloc de la colonne BCPs, i, r appartient à la colonne BP;+k, r : - si k est supérieur à 0, ou - si k est égal à 0 et le dernier bloc de la colonne BCPs, j, r est le dernier bloc de la colonne BP,, r, - alors lorsque le coprocesseur CPs, a terminé le traitement de la colonne BCPs, j, r, envoi d'un troisième message de départ autorisant le processeur pi à traiter la colonne BP,, r.
  3. 3. Procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce que le codage ou décodage est conforme à une norme appartenant au groupe comprenant : 15 H.263, H.263+, H264 et MPEG-4 Video.
  4. 4. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre du procédé selon au moins une des revendications 1 à 3, lorsque 20 ledit programme est exécuté sur un ordinateur.
  5. 5. Moyen de stockage lisible par ordinateur, éventuellement totalement ou partiellement amovible, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur pour mettre en oeuvre le procédé selon au moins une des revendications 1 à 3. 25
  6. 6. Dispositif de codage ou décodage d'une image comprenant des blocs rectangulaires de pixels, l'image ayant une hauteur de H blocs et une largeur de W blocs, l'image étant découpée en bandes de blocs verticales, ledit dispositif étant caractérisé en ce qu'il comprend : - N processeurs et M coprocesseurs, lesdits M coprocesseurs étant répartis sur S 10 30 niveaux, avec N > 0, M > 0, N+M > 2 et S > 0 ;- des moyens d'affectation desdits N processeurs P; à N bandes contiguës BP1 de N-1 tailles K; blocs, avec 0 s i s N-1 et Ki = W ; - pour tout niveau de coprocesseurs s, avec 0 s s s S-1, des moyens d'affectation de Ms coprocesseurs CPs, j à ms bandes contiguës BCPs, j de tailles Qsd blocs, M,-1 avec : Qs = W ; - des moyens de gestion d'envoi de messages vers les processeurs et les coprocesseurs selon les règles suivantes, en notant BP,, r une ligne de rang r de la bande BP1, et BCPs, j, r une ligne de rang r de la bande BCPs,, avec 0 s r s H-1 : * lorsqu'un processeur P1, avec i 0 et i < N-1, a terminé le traitement d'une ligne BP,,r, envoi d'un premier message de départ (401) autorisant le processeur P1+1 à traiter la ligne BP1+i, r ; * lorsqu'un coprocesseur CPs, j, avec j 0 et j < Ms-1, a terminé le traitement d'une ligne BCPs, j, r, envoi d'un deuxième message de départ (402) autorisant le coprocesseur CPs,,+1 à traiter la ligne BCPs,,+i, r ; * lorsqu'un processeur P1, avec i 0 et i < N-1, doit traiter le dernier bloc de la ligne BP,, r, avec r > 0, envoi d'un premier message de vérification (404) au processeur Pi+1 afin de vérifier si le premier bloc de la ligne BP1+1, r_1 a déjà été traité ; * lorsqu'un coprocesseur CPs,, avec j 0 et j < Ms-1, doit traiter le dernier bloc de la ligne BCPs, j,,, avec r > 0, envoi d'un deuxième message de vérification (405) au coprocesseur CPs, ;+1 afin de vérifier si le premier bloc de la ligne BCPs,,+i,r_1 a déjà été traité ; * lorsque le premier bloc de la ligne BCPs, j, r appartient à la ligne BP,, r et le dernier bloc de la ligne BCPs, j, r appartient à la ligne BP1+k, r : - si k est supérieur à 0, ou - si k est égal à 0 et le dernier bloc de la ligne BCPs, j, r est le dernier bloc de la ligne BP,, r, - alors lorsque le coprocesseur CPs, j a terminé le traitement de la ligne BCPs, j, r, envoi d'un troisième message de départ (403) autorisant le 30 processeur P; à traiter la ligne BP,, r. 10 15 20 25
  7. 7. Dispositif de codage ou décodage d'une image comprenant des blocs rectangulaires de pixels, l'image ayant une hauteur de H blocs et une largeur de W blocs, l'image étant découpée en bandes de blocs horizontales, ledit dispositif étant caractérisé en ce qu'il comprend : - N processeurs et M coprocesseurs, lesdits M coprocesseurs étant répartis sur S niveaux, avec N > 0, M > 0, N+M > 2 et S > 0 ; - des moyens d'affectation desdits N processeurs P; à N bandes contiguës BP; de N-1 tailles K; blocs, avec 0 s i s N-1 et 1 Ki = H; =o - pour tout niveau de coprocesseurs s, avec 0 s s s S-1, des moyens d'affectation de Ms coprocesseurs CPs, j à ms bandes contiguës BCPs, j de tailles Qsd blocs, M -1 avec :Q,i=H; i=o des moyens de gestion d'envoi de messages entre les processeurs et les coprocesseurs selon les règles suivantes, en notant BP,, r une colonne de rang r de la bande BP;, et BCPs, j,, une colonne de rang r de la bande BCPs, j, avec 0 s r s W-1 : * lorsqu'un processeur P;, avec i 0 et i < N-1, a terminé le traitement d'une colonne BP,,r, envoi d'un premier message de départ autorisant le processeur P;+1 à traiter la colonne BP;+1, r ; * lorsqu'un coprocesseur CPs, j, avec j 0 et j < Ms-1, a terminé le traitement d'une colonne BCPs, j,,, envoi d'un deuxième message de départ autorisant le coprocesseur CPs,,+1 à traiter la colonne BCPs,,+1, r ; * lorsqu'un processeur P;, avec i 0 et i < N-1, doit traiter le dernier bloc de la colonne BP,, r, avec r > 0, envoi d'un premier message de vérification au processeur Pi+1 afin de vérifier si le premier bloc de la colonne BP;+1, r_1 a déjà été traité ; * lorsqu'un coprocesseur CPs,, avec j 0 et j < Ms-1, doit traiter le dernier bloc de la colonne BCPs, j, r, avec r > 0, envoi d'un deuxième message de vérification au coprocesseur CPs, ;+1 afin de vérifier si le premier bloc de la colonne BCPs,,+i,r-i a déjà été traité ; * lorsque le premier bloc de la colonne BCPs, j, r appartient à la colonne BP,, r et le dernier bloc de la colonne BCPs, j, r appartient à la colonne BP;+k, r : 20 25 30 5- si k est supérieur à 0, ou - si k est égal à 0 et le dernier bloc de la colonne BCPs, i, r est le dernier bloc de la colonne BP,, r, - alors lorsque le coprocesseur CPs, a terminé le traitement de la colonne BCPs, j, r, envoi d'un troisième message de départ autorisant le processeur pi à traiter la colonne BP,, r.
  8. 8. Dispositif selon l'une quelconque des revendications 6 et 7, caractérisé en ce que le codage ou décodage est conforme à une norme appartenant au groupe comprenant : H.263, H.263+, H264 et MPEG-4 Video. 10
FR0853225A 2008-05-19 2008-05-19 Procede et dispositif de codage ou decodage d'image avec parallelisatioon du traitement sur plusieurs processeurs et coprocesseurs, programme d'ordinateur et moyen de stockage correspondants. Active FR2931280B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR0853225A FR2931280B1 (fr) 2008-05-19 2008-05-19 Procede et dispositif de codage ou decodage d'image avec parallelisatioon du traitement sur plusieurs processeurs et coprocesseurs, programme d'ordinateur et moyen de stockage correspondants.
US12/468,374 US8111749B2 (en) 2008-05-19 2009-05-19 Image encoding or decoding method and device, with parallelization of processing over several processors and coprocessors, corresponding computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0853225A FR2931280B1 (fr) 2008-05-19 2008-05-19 Procede et dispositif de codage ou decodage d'image avec parallelisatioon du traitement sur plusieurs processeurs et coprocesseurs, programme d'ordinateur et moyen de stockage correspondants.

Publications (2)

Publication Number Publication Date
FR2931280A1 true FR2931280A1 (fr) 2009-11-20
FR2931280B1 FR2931280B1 (fr) 2011-01-07

Family

ID=40429806

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0853225A Active FR2931280B1 (fr) 2008-05-19 2008-05-19 Procede et dispositif de codage ou decodage d'image avec parallelisatioon du traitement sur plusieurs processeurs et coprocesseurs, programme d'ordinateur et moyen de stockage correspondants.

Country Status (2)

Country Link
US (1) US8111749B2 (fr)
FR (1) FR2931280B1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011042645A1 (fr) * 2009-10-05 2011-04-14 France Telecom Procedes de codage et de décodage d'images, dispositifs de codage et de decodage et programmes d'ordinateur correspondants
US9596469B2 (en) 2011-07-15 2017-03-14 Ge Video Compression, Llc Sample array coding for low-delay

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5259625B2 (ja) 2008-05-23 2013-08-07 パナソニック株式会社 画像復号化装置、画像復号化方法、画像符号化装置、及び画像符号化方法
US8559733B2 (en) * 2009-03-31 2013-10-15 Citrix Systems, Inc. Methods and systems for approximating progressive image encoding using image partitioning

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1355499A2 (fr) * 2002-04-08 2003-10-22 Broadcom Corporation Système et méthode de décodage vidéo multi-ligne avec dépendance entre les lignes
FR2854754A1 (fr) * 2003-05-06 2004-11-12 Envivio France Procede et dispositif de codage ou decodage d'image avec parallelisation du traitement sur une pluralite de processeurs, programme d'ordinateur et signal de synchronisation correspondants
EP1624704A2 (fr) * 2004-07-29 2006-02-08 STMicroelectronics Pvt. Ltd Décodeur vidéo avec processeurs parallèles pour le décodage de macroblocs
WO2008010979A2 (fr) * 2006-07-17 2008-01-24 Sony Corporation Appareil à traitement en parallèle pour une compression vidéo

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1355499A2 (fr) * 2002-04-08 2003-10-22 Broadcom Corporation Système et méthode de décodage vidéo multi-ligne avec dépendance entre les lignes
FR2854754A1 (fr) * 2003-05-06 2004-11-12 Envivio France Procede et dispositif de codage ou decodage d'image avec parallelisation du traitement sur une pluralite de processeurs, programme d'ordinateur et signal de synchronisation correspondants
EP1624704A2 (fr) * 2004-07-29 2006-02-08 STMicroelectronics Pvt. Ltd Décodeur vidéo avec processeurs parallèles pour le décodage de macroblocs
WO2008010979A2 (fr) * 2006-07-17 2008-01-24 Sony Corporation Appareil à traitement en parallèle pour une compression vidéo

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011042645A1 (fr) * 2009-10-05 2011-04-14 France Telecom Procedes de codage et de décodage d'images, dispositifs de codage et de decodage et programmes d'ordinateur correspondants
US9287894B2 (en) 2009-10-05 2016-03-15 Orange Methods for encoding and decoding images, corresponding encoding and decoding devices and computer programs
US9596469B2 (en) 2011-07-15 2017-03-14 Ge Video Compression, Llc Sample array coding for low-delay
US9860544B2 (en) 2011-07-15 2018-01-02 Ge Video Compression, Llc Sample array coding for low-delay
US9860547B2 (en) 2011-07-15 2018-01-02 Ge Video Compression, Llc Sample array coding for low-delay
US9866857B2 (en) 2011-07-15 2018-01-09 Ge Video Compression, Llc Sample array coding for low-delay
US10085035B2 (en) 2011-07-15 2018-09-25 Ge Video Compression, Llc Sample array coding for low-delay
US10652564B2 (en) 2011-07-15 2020-05-12 Ge Video Compression, Llc Sample array coding for low-delay
US10659798B2 (en) 2011-07-15 2020-05-19 Ge Video Compression, Llc Sample array coding for low-delay
US10771800B2 (en) 2011-07-15 2020-09-08 Ge Video Compression, Llc Sample array coding for low-delay
US10924754B2 (en) 2011-07-15 2021-02-16 Ge Video Compression, Llc Sample array coding for low-delay based on position information
US11019352B2 (en) 2011-07-15 2021-05-25 Ge Video Compression, Llc Sample array coding for low-delay
US11595675B2 (en) 2011-07-15 2023-02-28 Ge Video Compression, Llc Sample array coding for low-delay
US11949897B2 (en) 2011-07-15 2024-04-02 Ge Video Compression, Llc Sample array coding for low-delay

Also Published As

Publication number Publication date
FR2931280B1 (fr) 2011-01-07
US8111749B2 (en) 2012-02-07
US20100067582A1 (en) 2010-03-18

Similar Documents

Publication Publication Date Title
EP2446628B1 (fr) Procédé de décodage d&#39;images, dispositifs de décodage et programme d&#39;ordinateur correspondants
FR2931280A1 (fr) Procede et dispositif de codage ou decodage d&#39;image avec parallelisatioon du traitement sur plusieurs processeurs et coprocesseurs, programme d&#39;ordinateur et moyen de stockage correspondants.
FR2906433A1 (fr) Procedes et dispositifs de codage et de decodage d&#39;images, programme d&#39;ordinateur les mettant en oeuvre et support d&#39;informaton permettant de les mettre en oeuvre
EP2277318B1 (fr) Codage et decodage d&#39;une image ou d&#39;une sequence d&#39;images decoupees selon des partitions de pixels de forme lineaire
US9237351B2 (en) Encoding/decoding apparatus and method for parallel correction of in-loop pixels based on measured complexity, using video parameter
WO2010149914A1 (fr) Procedes de codage et de decodage d&#39;images, dispositifs de codage et de decodage, et programme d&#39;ordinateur correspondants
FR2951345A1 (fr) Procede et dispositif de traitement d&#39;une sequence video
US20130101029A1 (en) Multimedia data encoding
EP2486659B1 (fr) Procedes de codage et de décodage d&#39;images, dispositifs de codage et de decodage et programmes d&#39;ordinateur correspondants
WO2010043809A1 (fr) Prediction d&#39;une image par compensation en mouvement en avant
EP2377323A2 (fr) Prédiction d&#39;images par repartionnement d&#39;une portion de zone causale de référence, codage et decodage utilisant une telle prédiction
EP3075155A1 (fr) Procédé de codage et de décodage d&#39;images, dispositif de codage et de décodage d&#39;images et programmes d&#39;ordinateur correspondants
EP1333680A2 (fr) Procédé de traitement d&#39;une image numérique
EP3238454B1 (fr) Génération d&#39;une mosaïque de vidéos
FR2955995A1 (fr) Procede et dispositif de traitement d&#39;une sequence video
EP1714498B1 (fr) Procede de recherche de la directon de prediction en codage video intra-image
FR2848373A1 (fr) Procede de mesure d&#39;artefacts de bloc
FR3139260A1 (fr) Lissage hors boucle de codage d’une frontière entre deux zones d’image
WO2010086562A1 (fr) Procede et dispositif de codage d&#39;images mettant en oeuvre des modes de codage distincts, procede et dispositif de decodage, et programmes d&#39;ordinateur correspondants
EP1359547A2 (fr) Procédé de traitement d&#39;images numériques pour applications bas débit
FR2959376A1 (fr) Procede de traitement d&#39;une information de mouvement, procedes de codage et de decodage, dispositifs, signal et programme d&#39;ordinateur correspondants
WO2020094703A1 (fr) Procédé et displositif de codage et de décodage d&#39;une image par découpage de bloc en zones
FR2957744A1 (fr) Procede de traitement d&#39;une sequence video et dispositif associe
EP2364552A1 (fr) Dispositif d&#39;encodage d&#39;un flux d&#39;images numeriques et dispositif de decodage correspondant avec approximation du voisinage d&#39;un bloc par le voisinage elargi du bloc
FR2956552A1 (fr) Procede de codage ou de decodage d&#39;une sequence video, dispositifs associes

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11

PLFP Fee payment

Year of fee payment: 12

PLFP Fee payment

Year of fee payment: 13

TP Transmission of property

Owner name: MK SYSTEMS USA INC., US

Effective date: 20201210

TP Transmission of property

Owner name: MK SYSTEMS USA INC., US

Effective date: 20201216

PLFP Fee payment

Year of fee payment: 14

PLFP Fee payment

Year of fee payment: 15

PLFP Fee payment

Year of fee payment: 16