FR2930059A1 - Digital video sequence processing method for e.g. computer, involves selecting location for writing pixel values of given memory block among set of locations of cache memory using labels of memory blocks stored at locations - Google Patents

Digital video sequence processing method for e.g. computer, involves selecting location for writing pixel values of given memory block among set of locations of cache memory using labels of memory blocks stored at locations Download PDF

Info

Publication number
FR2930059A1
FR2930059A1 FR0852374A FR0852374A FR2930059A1 FR 2930059 A1 FR2930059 A1 FR 2930059A1 FR 0852374 A FR0852374 A FR 0852374A FR 0852374 A FR0852374 A FR 0852374A FR 2930059 A1 FR2930059 A1 FR 2930059A1
Authority
FR
France
Prior art keywords
memory
memory block
macroblock
pixel values
block
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
FR0852374A
Other languages
French (fr)
Other versions
FR2930059B1 (en
Inventor
Marc Baillavoine
Pierre Larbier
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.)
Ateme SA
Original Assignee
Ateme SA
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 Ateme SA filed Critical Ateme SA
Priority to FR0852374A priority Critical patent/FR2930059B1/en
Publication of FR2930059A1 publication Critical patent/FR2930059A1/en
Application granted granted Critical
Publication of FR2930059B1 publication Critical patent/FR2930059B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/43Hardware specially adapted for motion estimation or compensation
    • 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/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access

Landscapes

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

Abstract

The method involves receiving a field of movement vectors, where each vector associates a pixel macroblock of one image to a memory block assembly of another image. Pixel values of memory blocks of the assembly are read using a cache memory. A count of number of macroblocks is stored in a label corresponding to the memory block. A location for writing pixel values of the given memory block is selected among a set of locations (38-1p-38-4p) of the cache memory using the labels of the memory blocks stored at the locations, during reading of the pixel values of the given memory block. Independent claims are also included for the following: (1) a computer program comprising instructions for implementing a video sequence processing method (2) a device for processing a video sequence of images sub-divided into pixel macroblocks (3) a memory comprising a set of memory zones.

Description

TRAITEMENT D'UNE SEQUENCE VIDEO DANS UNE MEMOIRE CACHE PROCESSING OF A VIDEO SEQUENCE IN A CACHE MEMORY

L'invention se rapporte au traitement d'une séquence vidéo numérique à l'aide d'une mémoire cache, par exemple à des fins d'encodage. Les procédés de traitement d'image peuvent utiliser une segmentation des images en macroblocs de par exemple 16x16 pixels. Typiquement, il est connu de rechercher des vecteurs de mouvement associant un macrobloc d'une première image à un ensemble de pixels d'une deuxième image. Les valeurs de ces pixels peuvent être lues, et ce à des fins variées. Par exemple, dans le cadre d'un procédé d'encodage, on peut chercher à déterminer des vecteurs de mouvement obtenus à partir d'images sous- échantillonnées, dites images de niveau inférieur, afin d'orienter le choix des vecteurs de mouvement pour les macroblocs d'images de niveau supérieur, comme l'illustre la figure 1. Pour un macrobloc B1 de niveau inférieur N donné, on peut choisir comme vecteur candidat pour le macrobloc B11 de niveau supérieur N-1 le vecteur de mouvement V1,N_1 partant du centre du macrobloc B11 et de longueur déterminée en multipliant les coefficients du vecteur de mouvement V1,N correspondant au macrobloc B1 par des constantes respectives. Ces constantes correspondent au sous-échantillonnage effectué. Dans l'exemple représenté sur la figure 1, l'image de niveau N est obtenue en filtrant par un filtrage passe-bas le signal vidéo dans les directions horizontales et verticales, puis en supprimant un pixel sur deux dans la direction horizontale, et un pixel sur deux dans la direction verticale, de sorte que les constantes sont de 2 en horizontal et de 2 en vertical. Le vecteur candidat V1,N_1 définit un ensemble de pixels, dont les valeurs sont lues à des fins de comparaisons aux pixels du macrobloc B11 de niveau supérieur. Un vecteur de mouvement définitif est estimé à partir des résultats de ces comparaisons. De façon similaire, le vecteur V1,N permet de déterminer les vecteurs candidats et les ensembles de pixels pour les blocs B12, B13 et B14. The invention relates to the processing of a digital video sequence using a cache memory, for example for encoding purposes. The image processing methods can use a segmentation of the images into macroblocks of, for example, 16x16 pixels. Typically, it is known to search for motion vectors associating a macroblock of a first image with a set of pixels of a second image. The values of these pixels can be read for a variety of purposes. For example, within the framework of an encoding method, it is possible to seek to determine motion vectors obtained from sub-sampled images, called lower level images, in order to orient the choice of motion vectors for the higher-level image macroblocks, as illustrated in figure 1. For a given lower-level macroblock B1 N, we can choose as candidate vector for the higher-level macroblock B11 N-1 the motion vector V1, N_1 starting from the center of macroblock B11 and of length determined by multiplying the coefficients of motion vector V1, N corresponding to macroblock B1 by respective constants. These constants correspond to the sub-sampling carried out. In the example shown in Figure 1, the level N image is obtained by low-pass filtering the video signal in the horizontal and vertical directions, then removing every other pixel in the horizontal direction, and one pixel in the horizontal direction. every second pixel in the vertical direction, so the constants are 2 horizontally and 2 vertically. The candidate vector V1, N_1 defines a set of pixels, the values of which are read for comparison purposes with the pixels of the higher level macroblock B11. A definitive motion vector is estimated from the results of these comparisons. Similarly, the vector V1, N makes it possible to determine the candidate vectors and the sets of pixels for the blocks B12, B13 and B14.

Selon un autre exemple, on peut chercher à déterminer des vecteurs de mouvement à des fins de prises de décisions quant aux types des macroblocs, par exemple type I (comme Intra en anglais) ou type P (comme Predicted en anglais). According to another example, one can seek to determine motion vectors for decision-making purposes as to the types of the macroblocks, for example type I (like Intra in English) or type P (like Predicted in English).

Les valeurs de pixels à lire sont mémorisées dans une mémoire de blocs, structurée en zones mémoire. Chaque zone mémoire est apte à stocker les valeurs de pixels d'un bloc mémoire de la deuxième image. Pour lire une valeur d'un pixel donné, il peut être nécessaire de lire toutes les valeurs de pixels des pixels du bloc mémoire auquel appartient le pixel donné. Aussi, pour un macrobloc donné, l'ensemble de pixels associé à ce macrobloc par le vecteur de mouvement correspondant, correspond en fait à un ensemble de blocs mémoire. Lors de la lecture des valeurs de pixels associées à un macrobloc donné, il est donc nécessaire de lire toutes les valeurs de pixels de l'ensemble de blocs mémoire correspondant à ces valeurs de pixels. La lecture des valeurs de pixels des blocs mémoire dans la mémoire de blocs peut être relativement longue. II est connu d'utiliser une mémoire cache afin d'accélérer les requêtes de lecture. Lorsque les valeurs de pixels d'un bloc mémoire donné sont lues pour la première fois dans la mémoire de bloc, ces valeurs peuvent être recopiées dans la mémoire cache, afin de permettre une lecture ultérieure de ces valeurs plus rapide. Toutefois, les mémoires caches étant relativement onéreuses, la taille de ces mémoires est en général limitée. II est en conséquence souhaitable d'optimiser le choix des blocs 25 mémoire à conserver dans la mémoire cache, afin de permettre un traitement globalement plus rapide. Selon un premier aspect, l'invention a pour objet un procédé de traitement d'une séquence vidéo d'images subdivisées en macroblocs de pixels, dans lequel : 30 - un champ de vecteurs de mouvement est reçu, chaque vecteur de mouvement associant par adressage un macrobloc de pixels d'une première image à un ensemble de blocs mémoire d'une deuxième image, cet ensemble comprenant au moins un bloc mémoire, 3 - pour au moins un macrobloc, les valeurs de pixels des blocs mémoire de l'ensemble de blocs mémoire associé sont lues en utilisant une mémoire cache. Le procédé comporte les étapes consistant à : - pour au moins un bloc mémoire de la deuxième image, mémoriser dans une étiquette correspondant à ce bloc mémoire un comptage du nombre de macroblocs dont les ensembles de blocs mémoire associés comportent ce bloc mémoire, et - lors d'une lecture des valeurs de pixels d'un bloc mémoire donné dans une mémoire de blocs distincte de la mémoire cache, décider de l'emplacement d'écriture de ces valeurs de pixels de ce bloc mémoire donné, parmi un jeu d'emplacements de la mémoire cache correspondant à ce bloc mémoire donné, à partir des étiquettes des blocs mémoire stockés à ces emplacements. The pixel values to be read are stored in a block memory, structured in memory areas. Each memory area is able to store the pixel values of a memory block of the second image. To read a value of a given pixel, it may be necessary to read all the pixel values of the pixels of the memory block to which the given pixel belongs. Also, for a given macroblock, the set of pixels associated with this macroblock by the corresponding motion vector corresponds in fact to a set of memory blocks. When reading the pixel values associated with a given macroblock, it is therefore necessary to read all the pixel values of the set of memory blocks corresponding to these pixel values. Reading the pixel values of memory blocks from block memory can take a relatively long time. It is known to use a cache memory in order to speed up read requests. When the pixel values of a given memory block are read for the first time from the block memory, these values can be copied back to the cache memory, in order to allow a later reading of these values more quickly. However, since cache memories are relatively expensive, the size of these memories is generally limited. It is therefore desirable to optimize the choice of memory blocks to be kept in the cache memory, in order to allow overall faster processing. According to a first aspect, the subject of the invention is a method of processing a video sequence of images subdivided into macroblocks of pixels, in which: a field of motion vectors is received, each motion vector associating by addressing a macroblock of pixels from a first image to a set of memory blocks of a second image, this set comprising at least one memory block, 3 - for at least one macroblock, the pixel values of the memory blocks of the set of Associated memory blocks are read using a cache memory. The method comprises the steps of: - for at least one memory block of the second image, storing in a tag corresponding to this memory block a count of the number of macroblocks whose sets of associated memory blocks include this memory block, and - when reading the pixel values of a given memory block in a block memory separate from the cache memory, deciding on the writing location of these pixel values of this given memory block, from among a set of locations of the cache memory corresponding to this given memory block, from the labels of the memory blocks stored at these locations.

Ainsi, l'information fournie par le champ de vecteurs est utilisée afin de mieux gérer les écritures de la mémoire cache, et ce de façon relativement simple à mettre en oeuvre. La prise en compte du nombre de macroblocs pour lesquels un bloc mémoire est sollicité permet une optimisation relative de la gestion de la mémoire cache. Le procédé est relativement rapide à mettre en oeuvre. Les macroblocs et les blocs mémoire peuvent être de taille 16x16 pixels, 8x8 pixels, 16x32 pixels, 32x32 pixels, ou autre. Les macroblocs peuvent avoir, ou ne pas avoir, les mêmes dimensions que les blocs mémoire. Thus, the information provided by the vector field is used in order to better manage the writings of the cache memory, and this in a manner that is relatively simple to implement. Taking into account the number of macroblocks for which a memory block is requested allows a relative optimization of the management of the cache memory. The process is relatively quick to implement. Macroblocks and memory blocks can be 16x16 pixels, 8x8 pixels, 16x32 pixels, 32x32 pixels, or the like. Macroblocks may or may not have the same dimensions as memory blocks.

La lecture des valeurs de pixels des blocs associés à un macrobloc peut être effectuée pour chaque macrobloc, ou alternativement pour une partie seulement des macroblocs. La mémorisation du comptage du nombre de macroblocs correspondant à un bloc mémoire peut être effectuée pour chaque bloc mémoire, ou alternativement pour une partie seulement des blocs mémoire, par exemple ceux pour lesquels cette valeur dépasse ou est en dessous d'un certain seuil. The reading of the pixel values of the blocks associated with a macroblock can be performed for each macroblock, or alternatively for only part of the macroblocks. The storage of the counting of the number of macroblocks corresponding to a memory block can be carried out for each memory block, or alternatively for only part of the memory blocks, for example those for which this value exceeds or is below a certain threshold.

La mémoire cache peut par exemple comprendre une MRAM (de l'anglais Magnetic Random Access Memory ), ou autre. La mémoire de blocs peut comprendre une SDRAM (de l'anglais Synchronous Dynamic Random Access Memory ), ou autre. The cache memory can for example comprise an MRAM (standing for Magnetic Random Access Memory), or the like. The block memory can include SDRAM (Synchronous Dynamic Random Access Memory), or the like.

Les valeurs de pixels peuvent par exemple comprendre des valeurs de composantes RGB (de l'anglais Red Green Blue ), des valeurs de composantes YUV, ou autre. Chaque vecteur de mouvement peut associer directement un macrobloc à un ensemble de blocs mémoire. The pixel values can for example include RGB component values (Red Green Blue), YUV component values, or the like. Each motion vector can directly associate a macroblock with a set of memory blocks.

Alternativement, chaque vecteur de mouvement peut associer à un macrobloc un ensemble de pixels, les vecteurs de mouvement étant ainsi relativement précis. Chaque ensemble de pixels peut correspondre à un ensemble de blocs mémoire, la mémoire stockant les valeurs de pixels étant structurée en blocs mémoire. Alternatively, each motion vector can associate a set of pixels with a macroblock, the motion vectors thus being relatively precise. Each set of pixels can correspond to a set of memory blocks, the memory storing the pixel values being structured in memory blocks.

L'ensemble de blocs mémoire peut comprendre un ou plusieurs bloc(s) mémoire. Avantageusement, pour au moins un bloc mémoire, on décrémente la valeur de comptage à chaque requête en lecture des valeurs de pixels de ce bloc mémoire. Ainsi, il est tenu compte, pour le choix de l'emplacement de la mémoire cache, du nombre de macroblocs à traiter, pour lesquels une lecture des valeurs de pixels du bloc mémoire sera nécessaire, et non des macroblocs pour lesquels cette lecture a déjà été effectuée. Cette décrémentation peut être effectuée pour tous les blocs mémoire, ou pour une partie seulement d'entre eux. The set of memory blocks may include one or more memory block (s). Advantageously, for at least one memory block, the count value is decremented on each read request for the pixel values of this memory block. Thus, when choosing the location of the cache memory, account is taken of the number of macroblocks to be processed, for which a reading of the pixel values of the memory block will be necessary, and not of the macroblocks for which this reading has already been carried out. This decrementation can be carried out for all the memory blocks, or for only a part of them.

Alternativement, il n'est pas effectué de décrémentation de la valeur de comptage, de sorte que cette valeur reste constante lors du traitement d'une image. Avantageusement, pour chaque bloc mémoire, on mémorise dans l'étiquette correspondante un identifiant d'un macrobloc dont l'ensemble de blocs mémoire associé comporte ce bloc mémoire. Ainsi, on prend en compte la localisation du macrobloc dans la première image pour gérer la mémoire cache. Par exemple, lors du traitement de macroblocs en haut à gauche de la première image, on pourra choisir d'écraser dans la mémoire cache les valeurs de pixels de blocs mémoire associés à un macrobloc en bas à droite de la première image. Ainsi, le macrobloc le plus pertinent parmi les macroblocs associés à un bloc mémoire donné serait le prochain macrobloc, selon un ordre de 5 traitement des macroblocs, à solliciter le bloc mémoire donné. Lors du traitement d'un macrobloc en haut à gauche de la première image, on pourra choisir de conserver dans la mémoire cache les valeurs de pixels de blocs mémoire dont on sait qu'ils seront prochainement sollicités par des macroblocs également en haut à gauche de la première image. Alternatively, the count value is not decremented, so that this value remains constant during the processing of an image. Advantageously, for each memory block, an identifier of a macroblock of which the associated set of memory blocks comprises this memory block is stored in the corresponding label. Thus, the location of the macroblock in the first image is taken into account in order to manage the cache memory. For example, during the processing of macroblocks at the top left of the first image, it is possible to choose to overwrite in the cache memory the pixel values of memory blocks associated with a macroblock at the bottom right of the first image. Thus, the most relevant macroblock among the macroblocks associated with a given memory block would be the next macroblock, according to a macroblock processing order, to request the given memory block. When processing a macroblock at the top left of the first image, we can choose to keep in the cache memory the pixel values of memory blocks which we know will soon be requested by macroblocks also at the top left of The first picture.

Avantageusement, pour chaque bloc mémoire, le macrobloc dont l'identifiant est mémorisé est le dernier macrobloc, selon un ordre de traitement des macroblocs, dont l'ensemble de blocs mémoire associé comporte ce bloc mémoire. Le choix du dernier macrobloc offre un compromis entre simplicité de mise en oeuvre du procédé et pertinence du macrobloc dont l'identifiant est mémorisé. L'invention n'est en rien limitée par ces améliorations. On peut prévoir de se contenter du comptage, pour chaque bloc mémoire, du nombre de macroblocs sollicitant ce bloc mémoire. Avantageusement, le procédé comprend en outre les étapes consistant à estimer un paramètre de cohérence de mouvement à partir du champ de vecteurs de mouvement reçu, choisir un degré d'associativité de la mémoire cache à partir de la valeur estimée du paramètre de cohérence de mouvement, et attribuer à chaque bloc mémoire un nombre d'emplacements de la mémoire cache égal au degré d'associativité choisi. Advantageously, for each memory block, the macroblock whose identifier is stored is the last macroblock, according to a processing order of the macroblocks, of which the associated set of memory blocks comprises this memory block. The choice of the last macroblock offers a compromise between simplicity of implementation of the method and relevance of the macroblock whose identifier is stored. The invention is in no way limited by these improvements. Provision can be made to be satisfied with counting, for each memory block, the number of macroblocks requesting this memory block. Advantageously, the method further comprises the steps of estimating a motion coherence parameter from the received motion vector field, choosing a degree of associativity of the cache memory from the estimated value of the motion coherence parameter , and assigning to each memory block a number of locations of the cache memory equal to the chosen degree of associativity.

Ainsi, le degré d'associativité de la mémoire cache est choisi en fonction de la cohérence du champ de vecteurs. Par exemple, si les déplacements entre deux images sont relativement peu cohérents, on peut choisir un degré d'associativité égal à 1 ou 2. Lors de l'écriture de valeurs de pixels d'un bloc mémoire donné, le nombre d'emplacements du jeu d'emplacements correspondant audit bloc mémoire donné est relativement faible. En effet, les déplacements étant relativement peu corrélés entre eux, il ets plus efficace d'avoir une associativité relativement faible. Si les 6 mouvements ne sont pas du tout corrélés entre eux, un degré d'associativité de 1 peut être le plus efficace. Le paramètre de cohérence peut être une variance du champ de vecteurs par exemple, ou bien un autre paramètre. La variance peut être obtenue à partir des orientations des vecteurs et/ou des modules des vecteurs. Le procédé selon un aspect de l'invention trouve des applications variées. Par exemple, l'étape de lecture des valeurs de pixels d'un ou plusieurs bloc(s) mémoire associé(s) à un macrobloc donné peut être suivie d'une étape de recherche d'un vecteur de mouvement définitif pour ce macrobloc donné. Dans ce cas, le vecteur de mouvement reçu pour le macrobloc donné peut être un vecteur candidat indiquant un ensemble de pixels à partir 15 desquels déterminer le vecteur de mouvement définitif. En particulier, on peut prévoir de déterminer, préalablement à l'étape de réception du champ de vecteurs, un champ de vecteurs préliminaires associant chacun un macrobloc de pixels d'une image obtenue par sous-échantillonnage de la première image à des pixels d'une image obtenue par 20 sous-échantillonnage de la deuxième image. La première et la deuxième images peuvent être elles-mêmes obtenues par sous-échantillonnages(s) de deux images de la séquence vidéo, ou bien être deux images de la séquence vidéo. Le champ de vecteurs est estimé à partir du champ de vecteurs préliminaires, par exemple en multipliant les coefficients des vecteurs 25 préliminaires par des constantes respectives, les valeurs de ces constantes dépendant du sous-échantillonnage effectué. Le champ de vecteurs est ainsi obtenu de manière hiérarchique. Les valeurs de pixels des blocs mémoire lues peuvent en particulier être utilisées pour rechercher un vecteur de mouvement définitif, les vecteurs du champ de vecteurs étant considérés 30 comme des vecteurs candidats. Le procédé selon un aspect de l'invention peut ainsi être utilisé dans un procédé de recherche hiérarchique de vecteurs de mouvement. Thus, the degree of associativity of the cache memory is chosen as a function of the consistency of the vector field. For example, if the displacements between two images are relatively inconsistent, one can choose a degree of associativity equal to 1 or 2. When writing pixel values of a given memory block, the number of locations of the set of locations corresponding to said given memory block is relatively small. Indeed, the displacements being relatively little correlated with each other, it is more efficient to have a relatively low associativity. If the 6 movements are not correlated at all with each other, a degree of associativity of 1 may be the most effective. The coherence parameter can be a variance of the vector field for example, or else another parameter. The variance can be obtained from the orientations of the vectors and / or the moduli of the vectors. The method according to one aspect of the invention finds various applications. For example, the step of reading the pixel values of one or more memory block (s) associated with a given macroblock can be followed by a step of finding a definitive motion vector for this given macroblock . In this case, the motion vector received for the given macroblock may be a candidate vector indicating a set of pixels from which to determine the final motion vector. In particular, provision can be made to determine, prior to the step of receiving the field of vectors, a field of preliminary vectors each associating a macroblock of pixels of an image obtained by sub-sampling of the first image to pixels of an image obtained by sub-sampling the second image. The first and second images may themselves be obtained by sub-sampling (s) of two images of the video sequence, or else they may be two images of the video sequence. The field of vectors is estimated from the field of preliminary vectors, for example by multiplying the coefficients of the preliminary vectors by respective constants, the values of these constants depending on the subsampling carried out. The vector field is thus obtained in a hierarchical manner. The pixel values of the memory blocks read can in particular be used to search for a definitive motion vector, the vectors of the vector field being considered as candidate vectors. The method according to one aspect of the invention can thus be used in a method of hierarchical search for motion vectors.

Selon un autre exemple, la première et la deuxième image étant deux images de la séquence vidéo, on peut prévoir que pour chaque macrobloc, suite à l'étape de lecture, les valeurs de pixels du macrobloc soient comparées à au moins une partie des valeurs de pixels lues. A partir du résultat de la comparaison, une décision peut être prise quant au type d'encodage pour ce macrobloc, par exemple un type de codage I comme Intra ou P comme Predicted en anglais. L'invention n'est bien entendu pas limitée par ces applications. Selon un autre aspect, l'invention a pour objet un programme d'ordinateur destiné à être stocké dans une mémoire d'un dispositif de traitement de séquence vidéo, et/ou stocké sur un support mémoire destiné à coopérer avec un lecteur dudit dispositif et/ou téléchargé via un réseau de télécommunication. Ce programme comporte des instructions pour la mise en oeuvre du procédé selon un aspect de l'invention, lorsque ces instructions sont exécutées par un processeur du dispositif de traitement de séquence vidéo. Selon encore un autre aspect, l'invention a pour objet un dispositif de traitement de séquence vidéo d'images subdivisées en macroblocs de pixels, comprenant des moyens d'estimation d'un champ de vecteurs de mouvement, chaque vecteur de mouvement associant par adressage un macrobloc de pixels d'une première image à un ensemble de blocs mémoire d'une deuxième image, cet ensemble comprenant au moins un bloc mémoire. Des moyens d'accès permettent, pour au moins un macrobloc, de lire les valeurs de pixels des blocs mémoire de l'ensemble de blocs mémoire associé à ce macrobloc, ces moyens d'accès comprenant une mémoire cache. Pour au moins un bloc mémoire de la deuxième image, une étiquette correspondant à ce bloc mémoire est prévue. Cette étiquette est destinée à mémoriser un comptage du nombre de macroblocs dont les ensembles de blocs mémoire associés comportent ce bloc mémoire. Des moyens de calcul permettent de, lors d'une lecture des valeurs de pixels d'un bloc mémoire donné dans une mémoire de blocs distincte de la mémoire cache, décider de l'emplacement parmi un jeu d'emplacements de la mémoire cache correspondant à ce bloc mémoire donné, d'écriture de ces valeurs de pixels de ce bloc mémoire donné, ces moyens de calcul utilisant les contenus des étiquettes des blocs mémoire stockés à ces emplacements. Ce dispositif peut être par exemple un ordinateur, un serveur, un terminal, un dispositif d'encodage vidéo, ou autre. According to another example, the first and the second image being two images of the video sequence, provision can be made for each macroblock, following the reading step, the pixel values of the macroblock to be compared with at least part of the values. of pixels read. From the result of the comparison, a decision can be made as to the encoding type for this macroblock, for example an I encoding type such as Intra or P such as Predicted in English. The invention is of course not limited by these applications. According to another aspect, the subject of the invention is a computer program intended to be stored in a memory of a video sequence processing device, and / or stored on a memory medium intended to cooperate with a reader of said device and / or downloaded via a telecommunications network. This program includes instructions for implementing the method according to one aspect of the invention, when these instructions are executed by a processor of the video sequence processing device. According to yet another aspect, the subject of the invention is a device for processing a video sequence of images subdivided into macroblocks of pixels, comprising means for estimating a field of motion vectors, each motion vector associating by addressing a macroblock of pixels from a first image to a set of memory blocks of a second image, this set comprising at least one memory block. Access means make it possible, for at least one macroblock, to read the pixel values of the memory blocks of the set of memory blocks associated with this macroblock, these access means comprising a cache memory. For at least one memory block of the second image, a label corresponding to this memory block is provided. This tag is intended to store a count of the number of macroblocks whose sets of associated memory blocks include this memory block. Calculation means make it possible, during a reading of the pixel values of a given memory block in a block memory distinct from the cache memory, to decide on the location among a set of locations in the cache memory corresponding to this given memory block, for writing these pixel values of this given memory block, these calculation means using the contents of the labels of the memory blocks stored at these locations. This device can be, for example, a computer, a server, a terminal, a video encoding device, or the like.

Selon encore un autre aspect, l'invention a pour objet une mémoire comprenant une pluralité de zones mémoire, chaque zone mémoire comportant un champ de données, apte à mémoriser les valeurs de pixels d'un bloc mémoire d'une image, et une étiquette. Cette étiquette permet de mémoriser un nombre de macroblocs d'une autre image associés par des vecteurs de mouvement respectifs au bloc mémoire dont les valeurs de pixels sont mémorisées dans le champ de données. Cette mémoire peut être une mémoire de blocs ou bien une mémoire cache. Dans ce dernier cas, les zones mémoire peuvent être dites lignes de cache. According to yet another aspect, the invention relates to a memory comprising a plurality of memory areas, each memory area comprising a data field, able to store the pixel values of a memory block of an image, and a label . This label makes it possible to store a number of macroblocks of another image associated by respective motion vectors with the memory block whose pixel values are stored in the data field. This memory can be a block memory or else a cache memory. In the latter case, the memory areas can be called cache lines.

D'autres particularités et avantages de la présente invention apparaîtront dans la description ci-après. La figure 1, déjà commentée, illustre un exemple de procédé d'estimation de vecteurs de mouvement hiérarchique. La figure 2 illustre un exemple de vecteur de mouvement associant un 20 macrobloc à un ensemble de blocs mémoire. La figure 3 montre un exemple de dispositif de traitement de séquence vidéo selon un mode de réalisation de l'invention. Les figures 4A et 4B montrent un exemple d'organigramme selon un mode de réalisation de l'invention. 25 La figure 5 montre un exemple d'organigramme selon un autre mode de réalisation de l'invention. Des références identiques sont utilisées pour désigner des objets identiques ou similaires. Est représentée sur la figure 2 une portion d'image 22. 30 Les valeurs des pixels de l'image 22 sont stockées dans une mémoire de blocs (non représentée sur la figure 2), structurée en zones. Sont représentés sous la référence B;,i des blocs mémoire de l'image, les valeurs 9 des pixels d'un même bloc mémoire étant stockées dans une même zone de la mémoire de blocs. Un vecteur de mouvement V permet d'associer un macrobloc d'une autre image MB,,,, représenté ici en pointillés, à un ensemble de pixels 20. Other features and advantages of the present invention will appear in the description below. FIG. 1, already commented on, illustrates an example of a method for estimating hierarchical motion vectors. FIG. 2 illustrates an example of a motion vector associating a macroblock with a set of memory blocks. FIG. 3 shows an example of a video sequence processing device according to one embodiment of the invention. FIGS. 4A and 4B show an example of a flowchart according to an embodiment of the invention. Fig. 5 shows an example of a flowchart according to another embodiment of the invention. Identical references are used to designate identical or similar objects. Represented in FIG. 2 is an image portion 22. The values of the pixels of image 22 are stored in a block memory (not shown in FIG. 2), structured in zones. Memory blocks of the image are represented under the reference B i, the values 9 of the pixels of the same memory block being stored in the same zone of the block memory. A motion vector V makes it possible to associate a macroblock of another image MB ,,,, shown here in dotted lines, with a set of pixels 20.

Pour lire les valeurs de pixels de cet ensemble de pixels, il est nécessaire de lire les valeurs de pixels de l'ensemble 21, du fait de l'accès par blocs à la mémoire de blocs. Par exemple, tous les pixels du bloc B;o,io doivent être lus, même si une partie seulement de ces pixels est utilisée par la suite. Le vecteur de mouvement V associe donc un ensemble de blocs 21 d'une image à un macrobloc MB,,, d'une autre image. La figure 3 montre un exemple de dispositif 34 selon un mode de réalisation de l'invention. Ce dispositif peut par exemple comprendre ou faire partie d'un serveur d'encodage vidéo. Ce dispositif de traitement de séquence vidéo 34 comporte une mémoire de blocs 32 structurée en zones mémoire 351, 352,..., 35p,... Cette mémoire 32 peut par exemple être une mémoire RAM (de l'anglais Random Access Memory ), une SDRAM, ou autre. Chaque zone 351, 352,..., 35p,... est apte à mémoriser les valeurs de pixels d'un bloc mémoire, et comporte à cet effet comprend un champ de données 371, 372,..., 37p,,... Chaque champ de données 371, 372,..., 37p,,... permet de mémoriser les valeurs des pixels data_1_1, data_1_2,..., data_io_jo,... correspondant respectivement à des blocs mémoire. Par exemple, le champ de données 37p est destiné à mémoriser les valeurs pixels data_io_jo du bloc mémoire B;o,io sur la figure 2. To read the pixel values of this set of pixels, it is necessary to read the pixel values of the set 21, due to the block access to the block memory. For example, all the pixels of the block B; o, io must be read, even if only a part of these pixels are used subsequently. The motion vector V therefore associates a set of blocks 21 of one image with a macroblock MB ,,, of another image. FIG. 3 shows an example of device 34 according to one embodiment of the invention. This device can for example comprise or form part of a video encoding server. This video sequence processing device 34 comprises a block memory 32 structured in memory areas 351, 352, ..., 35p, ... This memory 32 may for example be a RAM memory (standing for Random Access Memory). , SDRAM, or other. Each zone 351, 352, ..., 35p, ... is able to store the pixel values of a memory block, and for this purpose comprises a data field 371, 372, ..., 37p ,, ... Each data field 371, 372, ..., 37p ,, ... makes it possible to store the values of the pixels data_1_1, data_1_2, ..., data_io_jo, ... corresponding respectively to memory blocks. For example, the data field 37p is intended to store the pixel values data_io_jo of the memory block B; o, io in FIG. 2.

Chaque zone mémoire 351, 352,..., 35p,... comprend en outre une étiquette 361, 362,..., 36p,... pour mémoriser une adresse &1,1, &1,2,..., du bloc correspondant, une valeur de comptage C1,1, C122,..., et un identifiant MBdm(1'1), MBdrr,(12)MBdm(io,io)L'adresse &1,1, &1,2,..., peut par exemple comprendre les valeurs de deux indices i, j permettant d'identifier les pixels du bloc correspondant à la zone mémoire respective, ou n'importe qu'elle autre adresse permettant d'identifier les pixels du bloc. 10 Pour une zone mémoire donnée 35p, la valeur de comptage Cio,io est un nombre de macroblocs associés à des ensembles de blocs mémoire comprenant le bloc mémoire B;o,io correspondant à cette zone 35p. Ces valeurs de comptage peuvent être déterminées en parcourant les macroblocs, par exemple de gauche à droite et de bas en haut : pour chaque macrobloc, on incrémente de 1 les valeurs de comptage des blocs mémoire associés à ce macrobloc par le vecteur de mouvement correspondant. En cours de traitement, lorsque des lectures des valeurs de pixels des blocs mémoire sont effectuées, la valeur de comptage correspondant à un bloc mémoire donné est décrémentée à chaque accès aux valeurs de pixels de ce bloc mémoire donné, que la lecture soit effectuée sur la mémoire cache ou sur la mémoire de blocs. La valeur de comptage Cio,io donne donc une indication du nombre de lectures de la zone mémoire 35p à prévoir. Ainsi, lorsque tous les accès nécessaires à un bloc mémoire donné sont effectués, la valeur de comptage de ce macrobloc est nulle. Pour une zone mémoire donnée 35p, l'identifiant MBdmr''°) comprend un identifiant, par exemple une adresse, du dernier macrobloc, selon l'ordre de traitement des macroblocs, associé au bloc mémoire B;o,io correspondant à cette zone 35p. L'ordre de traitement des macroblocs peut par exemple être de bas en haut, et de gauche à droite. L'adresse de macrobloc peut comprendre deux indices de macroblocs par exemple. Le dispositif 34 comprend en outre une mémoire cache 31. Dans cet exemple la mémoire cache 31 est K fois associative, K étant dans cet exemple égal à 4. La mémoire cache 31 comporte donc K=4 sous-caches 301, 302, 303, 304, et à chaque zone mémoire 35p de la mémoire de bloc 32 correspondent K=4 zones ou emplacements 381,p, 382,p, 383,p, 384,p de la mémoire cache 31. Chacun de ces emplacements 381,p, 382,p, 383,p, 384,p, dits également lignes de cache, appartient à un sous-cache respectif 301, 302, 303, 304. Each memory area 351, 352, ..., 35p, ... also includes a label 361, 362, ..., 36p, ... for storing an address & 1,1, & 1,2, ..., of the corresponding block, a count value C1,1, C122, ..., and an identifier MBdm (1'1), MBdrr, (12) MBdm (io, io) The address & 1,1, & 1,2, ..., can for example comprise the values of two indices i, j making it possible to identify the pixels of the block corresponding to the respective memory zone, or any other address making it possible to identify the pixels of the block. For a given memory area 35p, the count value Cio, io is a number of macroblocks associated with sets of memory blocks comprising the memory block B; o, io corresponding to this area 35p. These count values can be determined by going through the macroblocks, for example from left to right and from bottom to top: for each macroblock, the count values of the memory blocks associated with this macroblock are incremented by 1 by the corresponding motion vector. During processing, when readings of the pixel values of the memory blocks are taken, the count value corresponding to a given memory block is decremented on each access to the pixel values of that given memory block, regardless of whether the reading is carried out on the cache memory or block memory. The count value Cio, io therefore gives an indication of the number of readings of the memory area 35p to be expected. Thus, when all the necessary accesses to a given memory block are performed, the count value of this macroblock is zero. For a given memory zone 35p, the identifier MBdmr '' °) comprises an identifier, for example an address, of the last macroblock, according to the order of processing of the macroblocks, associated with the memory block B; o, io corresponding to this zone 35p. The order of processing of the macroblocks can for example be from bottom to top, and from left to right. The macroblock address can comprise two indices of macroblocks for example. The device 34 further comprises a cache memory 31. In this example, the cache memory 31 is K times associative, K being in this example equal to 4. The cache memory 31 therefore comprises K = 4 sub-caches 301, 302, 303, 304, and to each memory area 35p of the block memory 32 correspond K = 4 areas or locations 381, p, 382, p, 383, p, 384, p of the cache memory 31. Each of these locations 381, p, 382, p, 383, p, 384, p, also called cache lines, belongs to a respective sub-cache 301, 302, 303, 304.

Le contenu d'une zone mémoire donnée 35p peut être écrit dans 4 lignes de caches correspondantes 381,p, 382,p, 383,p, 384,p. Par ailleurs, chaque ligne de cache correspond à plus d'une zone mémoire. Typiquement, chaque ligne de cache 381,p, 382,p, 383,p, 384,p correspond aux zones mémoire 35p_4, 35p, 35p+4, 35p+8, etc. c'est-à-dire aux zones mémoire 35p mod(K). Chaque ligne de cache 381,p, 382,p, 383,p, 384,p comporte un champ de données 391,p, 392,p, 393,p, 394,p et une étiquette 401,p, 402,p, 403,p, 404,p. The content of a given memory area 35p can be written in 4 corresponding cache lines 381, p, 382, p, 383, p, 384, p. Furthermore, each cache line corresponds to more than one memory area. Typically, each cache line 381, p, 382, p, 383, p, 384, p corresponds to memory areas 35p_4, 35p, 35p + 4, 35p + 8, etc. that is to say to the 35p mod (K) memory areas. Each cache line 381, p, 382, p, 383, p, 384, p has a data field 391, p, 392, p, 393, p, 394, p and a tag 401, p, 402, p, 403, p, 404, p.

Chaque champ de données 391,p, 392,p, 393,p, 394,p est destiné à stocker des valeurs de pixels data_ii ji, data_i2j2, data_i3j3, data_i4j4 d'un bloc mémoire également stocké dans la mémoire de blocs 32. Chaque étiquette 401,p, 402,p, 403,p, 404,p est destinée à stocker : - un identifiant ou une adresse &il,n, &j2p, &j3,]3, &j4j4 du bloc mémoire dont les valeurs de pixels sont stockées dans le champ de données 391,p, 392,p, 393,p, 394,p correspondant, - un nombre de macroblocs C;l,il, C;2,i2, C;3p, Ci4,i4 associés à ce bloc mémoire, et - un identifiant du dernier macrobloc MBdm('''''), MBdm02' 2>, MBdm(13''3), MBdm('4''4) selon l'ordre de traitement des macroblocs, associé à ce bloc mémoire. En cours de traitement, lorsqu'une lecture des valeurs de pixels d'un bloc mémoire est effectuée sur la mémoire cache, le nombre de macroblocs stocké en mémoire cache et associé à ce bloc mémoire donné est décrémenté. Si la lecture est effectuée sur la mémoire de blocs, la valeur du nombre de macrobloc recopiée en mémoire cache est également décrémentée de façon à prendre en compte cette lecture. Le dispositif comporte en outre des moyens de traitement 33, par exemple un processeur, un DSP (de l'anglais Digital Signal Processor ) ou autre. Le processeur 33 comporte des moyens d'estimation de champs de vecteur permettant d'estimer un champ de vecteurs de mouvement. Chaque vecteur associe un macrobloc d'une première image à un ensemble de blocs mémoire d'une deuxième image, comme illustré par la figure 2. Each data field 391, p, 392, p, 393, p, 394, p is intended to store pixel values data_ii ji, data_i2j2, data_i3j3, data_i4j4 of a memory block also stored in block memory 32. Each tag 401, p, 402, p, 403, p, 404, p is intended to store: - an identifier or an address & il, n, & j2p, & j3,] 3, & j4j4 of the memory block whose pixel values are stored in the data field 391, p, 392, p, 393, p, 394, p corresponding, - a number of macroblocks C; l, il, C; 2, i2, C; 3p, Ci4, i4 associated with this memory block , and - an identifier of the last macroblock MBdm ('' '' '), MBdm02' 2>, MBdm (13''3), MBdm ('4''4) according to the macroblock processing order, associated with this memory block. During processing, when a reading of the pixel values of a memory block is performed on the cache memory, the number of macroblocks stored in the cache memory and associated with this given memory block is decremented. If the reading is performed on the block memory, the value of the number of macroblocks copied into the cache memory is also decremented so as to take this reading into account. The device further comprises processing means 33, for example a processor, a DSP (standing for Digital Signal Processor) or the like. The processor 33 comprises means for estimating vector fields making it possible to estimate a field of motion vectors. Each vector associates a macroblock of a first image with a set of memory blocks of a second image, as illustrated by FIG. 2.

Pour un macrobloc donné MBm, le processeur 33 effectue une lecture des valeurs de pixel des blocs mémoire B;o,io, Bi0+4,i0+3 dans la mémoire de blocs 32, en utilisant des moyens d'accès, ici deux bus 41, 42 et la mémoire cache 31. For a given macroblock MBm, the processor 33 reads the pixel values of the memory blocks B; o, io, Bi0 + 4, i0 + 3 in the block memory 32, using access means, here two buses 41, 42 and cache 31.

Lorsque la mémoire cache 31 reçoit par le bus 41 une requête en lecture des pixels d'une zone mémoire 35p, la mémoire cache vérifie si ces valeurs de pixels sont mémorisées dans la mémoire cache. La cas échéant, les valeurs de pixels sont fournies au processeur 33 (succès de cache ou cache hit en anglais). Si au contraire la mémoire cache 31 ne dispose pas de ces valeurs de pixels (défaut de cache ou cache miss en anglais), la mémoire cache 31 effectue une lecture de la zone 35p de la mémoire de blocs 32, via le bus 42. Le contenu de la zone 35p est alors recopié dans la mémoire cache 31, et également transmis au processeur 33. When the cache memory 31 receives via the bus 41 a request to read the pixels of a memory area 35p, the cache memory checks whether these pixel values are stored in the cache memory. Where appropriate, the pixel values are supplied to the processor 33 (cache hit or cache hit in English). If, on the contrary, the cache memory 31 does not have these pixel values (cache default or cache miss in English), the cache memory 31 reads the area 35p of the block memory 32, via the bus 42. The content of zone 35p is then copied into cache memory 31, and also transmitted to processor 33.

Or, le cache étant K=4 fois associatif, le contenu d'une zone mémoire donnée 35p peut être écrit dans K=4 lignes de caches correspondantes 381,p, 382,p, 383,p, 384,p. Des moyens de calculs, ici intégrés dans le processeur 33, décident de la ligne de cache à choisir parmi ces K=4 lignes de cache. Le processeur utilise à cet effet les contenus des étiquettes des lignes de caches 381,p, 382,p, 383,p, 384,p. Pour chaque ligne de cache 38k,p, k courant de 1 à K, est calculé une densité d'utilisation locale : Clk Jk A+diSt(MBm,MBd /' ) Où A est une constante strictement positive, par exemple A=1. Now, the cache being K = 4 times associative, the content of a given memory area 35p can be written in K = 4 corresponding cache lines 381, p, 382, p, 383, p, 384, p. Computing means, here integrated into the processor 33, decide which cache line to choose from among these K = 4 cache lines. The processor uses for this purpose the contents of the labels of the cache lines 381, p, 382, p, 383, p, 384, p. For each cache line 38k, p, k running from 1 to K, a local usage density is calculated: Clk Jk A + diSt (MBm, MBd / ') Where A is a strictly positive constant, for example A = 1 .

La distance estimée dist(MB,MBdm'k) entre le macrobloc courant MB,,, et le macrobloc dont l'identifiant MBdm'k est stocké dans l'étiquette 40k,p peut être n'importe quelle distance, par exemple une distance euclidienne. On choisira de préférence une distance relativement rapide à estimer, comme une distance de Manhattan. The estimated distance dist (MB, MBdm'k) between the current macroblock MB ,,, and the macroblock whose identifier MBdm'k is stored in the label 40k, p can be any distance, for example a distance Euclidean. We will preferably choose a relatively quick distance to estimate, such as a distance from Manhattan.

La distance peut être estimée à partir de coordonnées de blocs, ou de coordonnées de pixels par exemple. Ainsi, la densité d'utilisation locale Dk pour une ligne de cache 40k,p croît avec le nombre Clk,%k de macroblocs sollicitant le bloc mémoire correspondant, et décroît avec la distance entre le macrobloc courant MB,,, et 30 le macrobloc dont l'identifiant MBdm'k est stocké dans l'étiquette 40k,p. Dk = 13 Pour une ligne de cache 40k,p, la densité d'utilisation locale donne donc une indication de la probabilité pour que le contenu de cette ligne de cache soit prochainement lu par le processeur 33. Le processeur 33 choisit d'écrire le contenu de la zone mémoire donnée 35p dans la ligne de cache 40k,p pour laquelle la densité d'utilisation Dk est la plus faible. Ce procédé permet de préserver dans la mémoire cache les données utiles dans un futur proche, et ainsi de diminuer significativement le nombre de défauts de cache par rapport à une gestion de cache LRU (de l'anglais Last Recently Used ), pour une même séquence vidéo. Les figures 4A et 4B illustrent un exemple de procédé de traitement de séquence vidéo selon un mode de réalisation de l'invention. L'algorithme représenté est adapté à une paire d'images, mais il est bien entendu adaptable à une séquence vidéo comportant un nombre quelconque d'images. Deux images Im_1, Im_2 d'une séquence vidéo sont reçues lors d'une étape 400. Ces deux images peuvent se succéder immédiatement, ou bien être séparées l'une de l'autre par une ou plusieurs images dans la séquence vidéo. The distance can be estimated from block coordinates, or pixel coordinates for example. Thus, the local usage density Dk for a cache line 40k, p increases with the number Clk,% k of macroblocks requesting the corresponding memory block, and decreases with the distance between the current macroblock MB ,,, and the macroblock whose MBdm'k identifier is stored in the 40k tag, p. Dk = 13 For a 40k cache line, p, the local usage density therefore gives an indication of the probability that the content of this cache line will soon be read by the processor 33. The processor 33 chooses to write the content of the given memory area 35p in the cache line 40k, p for which the use density Dk is the lowest. This process makes it possible to preserve the useful data in the cache memory in the near future, and thus to significantly reduce the number of cache defects compared to an LRU (standing for Last Recently Used) cache management, for the same sequence. video. FIGS. 4A and 4B illustrate an example of a video sequence processing method according to one embodiment of the invention. The algorithm represented is suitable for a pair of images, but it is of course adaptable to a video sequence comprising any number of images. Two images Im_1, Im_2 of a video sequence are received during a step 400. These two images can follow one another immediately, or else be separated from each other by one or more images in the video sequence.

Ces deux images sont mémorisées comme images de niveau zéro Im_1 (°), Im_2(°), lors d'une étape 401. Puis ces images subissent des sous-échantillonnages successifs. Une boucle indicée par la variable I est exécutée, avec les étapes classiques d'initialisation, de test et d'incrémentation. Lors de chaque boucle, deux images de niveau I Im_1 (1), Im_2WWW sont obtenues par sous-échantillonnage de deux images respectives Im_1 (1-1), Im_20-1) elles-mêmes obtenues à la boucle précédente. Après avoir obtenu un nombre prédéterminé L de paires d'images sous-échantillonnées, il est procédé à une recherche de champs de vecteurs de mouvements {Vm,Lfinall entre les deux images les plus sous-échantillonnées Im_1 (L), Im_2(L), lors d'une étape 403. La variable m indice les macroblocs d'une image Im_1 (1). These two images are stored as zero level images Im_1 (°), Im_2 (°), during a step 401. Then these images are subjected to successive sub-samplings. A loop indexed by the variable I is executed, with the classic steps of initialization, test and incrementation. During each loop, two level I images Im_1 (1), Im_2WWW are obtained by sub-sampling of two respective images Im_1 (1-1), Im_20-1) themselves obtained in the previous loop. After obtaining a predetermined number L of pairs of sub-sampled images, a search is carried out for fields of motion vectors {Vm, Lfinall between the two most sub-sampled images Im_1 (L), Im_2 (L) , during a step 403. The variable m indexes the macroblocks of an image Im_1 (1).

Cette recherche peut être effectuée en ayant recours à un procédé classique de recherche de vecteurs de mouvement. Par exemple, pour chaque macrobloc MB,,, de l'image Im_1 (L), on compare les pixels de ce macrobloc aux pixels d'une zone de recherche de l'image Im_2(L). La zone de recherche peut par exemple être choisie autour de l'emplacement correspondant au macrobloc dans l'image Im_2(L). Ces comparaisons conduisent à sélectionner un groupe de pixels de l'image Im_2(L) comme ayant des valeurs relativement proches des valeurs des pixels du MB,,, de l'image Im_1 (L) On choisit comme vecteur de mouvement Vm,Lfinal le vecteur associant le macrobloc MBm à ce groupe de pixels. Ce jeu de vecteurs de mouvement entre les deux images les plus sous-échantillonnées Im_1 (L), Im_2(L) est ensuite utilisé pour estimer des jeux de vecteurs de mouvements entre deux images Im_10), Im_20), l'indice I variant entre L-1 et O. Aussi une boucle sur cet indice I est mise en place, avec des étapes classiques d'initialisation, de test et de décrémentation. Pour deux images Im_10), Im_20) de niveau I données, on estime lors d'une étape 404 un champ de vecteurs de mouvements {Vm,i} à partir du jeu de vecteurs de mouvements définitifs pour les images de niveau 1+1 Im_10+1) et Im_20+1). Ces vecteurs de mouvements définitifs Vm,1+1fina' pour les images de niveau 1+1 sont dits préliminaires lors du traitement des images de niveau 1. Comme l'illustre la figure 1, un vecteur Vm,i peut être obtenu en multipliant par une constante un vecteur obtenu pour les images Im_1 0+'), Im_20+1). Si par exemple, chaque sous-échantillonnage de l'étape 402 est un sous-échantillonnage d'un facteur 2, cette constante est de 2. On notera que la notation fO, utilisée à plusieurs reprises sur les figures 4A, 4B et 5, ne correspond pas à une fonction particulière, mais sert seulement à indiquer que certaines données sont obtenues à partir d'autres données. This search can be carried out using a conventional method of searching for motion vectors. For example, for each macroblock MB ,,, of the image Im_1 (L), the pixels of this macroblock are compared with the pixels of a search zone of the image Im_2 (L). The search zone can for example be chosen around the location corresponding to the macroblock in the image Im_2 (L). These comparisons lead to selecting a group of pixels of the image Im_2 (L) as having values relatively close to the values of the pixels of the MB ,,, of the image Im_1 (L) We choose as the motion vector Vm, Lfinal the vector associating the MBm macroblock with this group of pixels. This set of motion vectors between the two most under-sampled images Im_1 (L), Im_2 (L) is then used to estimate sets of motion vectors between two images Im_10), Im_20), the index I varying between L-1 and O. Also a loop on this index I is set up, with classical steps of initialization, test and decrementation. For two images Im_10), Im_20) of level I given, one estimates during a step 404 a field of motion vectors {Vm, i} from the set of definitive motion vectors for the images of level 1 + 1 Im_10 +1) and Im_20 + 1). These final motion vectors Vm, 1 + 1fina 'for level 1 + 1 images are said to be preliminary during the processing of level 1 images. As illustrated in Figure 1, a vector Vm, i can be obtained by multiplying by a constant a vector obtained for the images Im_1 0+ '), Im_20 + 1). If, for example, each sub-sampling of step 402 is a sub-sampling by a factor of 2, this constant is 2. It will be noted that the notation f0, used several times in FIGS. 4A, 4B and 5, does not correspond to a particular function, but serves only to indicate that certain data is obtained from other data.

Lors d'une étape 450, on détermine un jeu de vecteurs de mouvements définitifs {Vm,i final} à partir du jeu de vecteurs de mouvements {Vm,i}. Cette étape est détaillée sur la figure 4B. During a step 450, a set of definitive motion vectors {Vm, i final} is determined from the set of motion vectors {Vm, i}. This step is detailed in Figure 4B.

La recherche de vecteurs de mouvement est ainsi menée de façon hiérarchique, par des boucles indicées par I. Lors de l'exécution de la dernière boucle, I = 0, et les images pour lesquelles le champ de vecteurs définitifs est estimé sont les images de la séquence vidéo Im_1, Im_2. The search for motion vectors is thus carried out in a hierarchical manner, by loops indexed by I. During the execution of the last loop, I = 0, and the images for which the field of final vectors is estimated are the images of the video sequence Im_1, Im_2.

Ce champ de vecteurs peut être transmis vers un module d'encodage vidéo par exemple, et/ou à un module de décision de type de bloc, lors d'une étape 411. La figure 4B montre de façon plus détaillée le procédé permettant de déterminer jeu de vecteurs de mouvements définitifs {Vm,I final} de l'étape 450. This vector field can be transmitted to a video encoding module for example, and / or to a block type decision module, during a step 411. FIG. 4B shows in more detail the method making it possible to determine set of final motion vectors {Vm, I final} of step 450.

A partir du jeu de vecteurs de mouvements {Vm,,}, on détermine un jeu de valeurs de comptage {C;,i} lors d'une étape 452. Chaque valeur de comptage Cz ,jcorrespond à un bloc mémoire Bq et indique un nombre de gg From the set of motion vectors {Vm ,,}, a set of count values {C;, i} is determined during a step 452. Each count value Cz, j corresponds to a memory block Bq and indicates a number of gg

macroblocs dont les ensembles de blocs mémoire associés comportent ce bloc mémoire Bq. Les valeurs de comptage C;,i sont mémorisées dans la 15 mémoire de blocs. Egalement, pour chaque bloc mémoire Bq, on mémorise lors d'une étape 453 un identifiant du dernier macrobloc MBdm'j'), selon un ordre de traitement des macroblocs, dont l'ensemble de blocs mémoire associé comporte ce bloc mémoire. 20 Suit une boucle parcourant les différents macroblocs de l'image Im_1 (1). Cette boucle est indicée par m variant entre 1 et M(I), le nombre M(') de macroblocs d'une image étant variable selon le niveau de cette image. Cette boucle comporte les étapes classiques d'initialisation, de test et d'incrémentation. 25 On peut prévoir que la variable m permette de parcourir tous les macroblocs de l'image Im_10), par exemple de bas en haut et de gauche à droite. Pour un macrobloc MBm donné, lors d'une étape 412, on détermine à partir du vecteur de mouvement correspondant Vm,' un ensemble de blocs 30 mémoire {Bq} associés à ce macrobloc donné MBm. La variable q indice les blocs mémoire de cet ensemble. Cet indice varie entre 1 et une valeur el) cette valeur Q(m'I) étant susceptible de varier selon l'ensemble associé. macroblocks whose sets of associated memory blocks include this memory block Bq. The count values C i, i are stored in the block memory. Also, for each memory block Bq, an identifier of the last macroblock MBdm'j ') is stored during a step 453, according to a processing order of the macroblocks, of which the associated set of memory blocks includes this memory block. 20 There follows a loop going through the different macroblocks of the image Im_1 (1). This loop is indexed by m varying between 1 and M (I), the number M (') of macroblocks of an image being variable according to the level of this image. This loop comprises the classic steps of initialization, testing and incrementation. Provision can be made for the variable m to make it possible to browse all the macroblocks of the image Im_10), for example from bottom to top and from left to right. For a given macroblock MBm, during a step 412, a set of memory blocks {Bq} associated with this given macroblock MBm is determined from the corresponding motion vector Vm. The variable q indexes the memory blocks of this set. This index varies between 1 and a value e1) this value Q (mI) being liable to vary according to the associated set.

Pour chaque bloc mémoire Bq, une lecture des valeurs des pixels de ce bloc mémoire Bq est effectuée. Est donc exécutée une boucle 405 parcourant les différents blocs mémoire de l'ensemble {Bq}, avec les étapes classiques d'initialisation, de test, et d'incrémentation. For each memory block Bq, a reading of the values of the pixels of this memory block Bq is performed. A loop 405 is therefore executed going through the various memory blocks of the set {Bq}, with the conventional steps of initialization, test, and incrementation.

Il est d'abord procédé à un test 406 quant au stockage des valeurs des pixels du bloc mémoire Bq dans une mémoire cache. Si ces valeurs sont déjà stockées en mémoire cache, la lecture est rapide. Dans le cas contraire, il est procédé à une lecture de ces valeurs dans une zone correspondante d'une mémoire RAM. Puis les valeurs lues sont copiées dans la mémoire cache, en prévision d'une prochaine lecture de ces valeurs. Dans le cas d'une mémoire cache K fois associative, ces valeurs sont susceptibles d'être copiées dans K emplacements de caches. Pour déterminer quel emplacement de cache choisir, on calcule une valeur de densité d'utilisation locale Dk pour chaque emplacement de cache, lors d'une étape 407. Une boucle est effectuée pour parcourir les K emplacements de cache correspondant au bloc mémoire Bq. Cette boucle est indicée par k variant entre 1 et K et comporte les étapes classiques d'initialisation, d'incrémentation et de test. A test 406 is first carried out as regards the storage of the values of the pixels of the memory block Bq in a cache memory. If these values are already cached, the read is fast. Otherwise, these values are read in a corresponding area of a RAM memory. Then the read values are copied into the cache memory, in anticipation of a next reading of these values. In the case of a K times associative cache memory, these values are likely to be copied into K cache locations. To determine which cache location to choose, a local use density value Dk is calculated for each cache location, during a step 407. A loop is performed to browse the K cache locations corresponding to the memory block Bq. This loop is indexed by k varying between 1 and K and comprises the conventional steps of initialization, incrementation and test.

Puis lors d'une étape 408 est sélectionné l'emplacement, indicé ko, dont la valeur de densité d'utilisation locale Dk est la plus faible. Les valeurs de pixels du bloc mémoire Bq sont recopiées dans cet emplacement de cache, depuis la mémoire de blocs, lors d'une étape 409. Sont également recopié sur la mémoire cache une adresse de ce bloc mémoire Bq, l'identifiant de macrobloc MBdm'j') et la valeur de comptage Cz correspondant à ce bloc mémoire Bq. gg Then, during a step 408, the location, indexed ko, whose local use density value Dk is the lowest is selected. The pixel values of the memory block Bq are copied into this cache location, from the block memory, during a step 409. An address of this memory block Bq, the macroblock identifier MBdm, is also copied onto the cache memory. 'j') and the count value Cz corresponding to this memory block Bq. gg

Quels que soient les résultats du test 406, c'est-à-dire que la lecture des valeurs de pixels du bloc mémoire Bq aie été effectuée sur la mémoire cache ou sur la mémoire de blocs, la valeur de comptage CZ 1 correspondant gg Whatever the results of test 406, that is to say that the reading of the pixel values of the memory block Bq has been carried out on the cache memory or on the block memory, the count value CZ 1 corresponding to gg

au bloc mémoire Bq est décrémentée lors d'une étape 451. Cette décrémentation affecte aussi bien la valeur de comptage mémorisée dans la mémoire de blocs que la valeur de comptage mémorisée dans la mémoire cache. Après avoir lu toutes les valeurs des pixels de l'ensemble de blocs {Bq}, des comparaisons sont effectuées entre les valeurs de pixels du macrobloc MB,,, et des valeurs de pixels correspondant à des parties de l'ensemble de blocs {Bq}. Ces comparaisons permettent de déterminer un vecteur de mouvement définitif Vm'lfinal pour ce macrobloc MBm de l'image Im_1 WWW, lors d'une étape 410. Sont déterminés de la même façon les vecteurs de mouvement définitifs des autres macroblocs de l'image Im_1 (1). Comme expliqué plus haut en référence à la figure 4A, ce jeu de vecteurs de mouvement définitifs {Vm,lfinal} pour les images Im_1 0W, Im_2~1~ permet de déterminer lors de l'étape 404 un jeu de vecteurs de mouvement {N/m,,_1} pour les images de niveau I-1 Im_1 0-') Lors de l'exécution de la dernière boucle, I = 0, et les images pour lesquelles le champ de vecteurs définitifs est estimé sont les images de la séquence vidéo Im_1, Im_2. Ce champ de vecteurs définitif {Vm,ofinal} peut être transmis vers un module d'encodage vidéo par exemple, et/ou à un module de décision de type de bloc, lors de l'étape 411. Le module de décision de type de bloc peut également implémenter un procédé selon un mode de réalisation de l'invention. La figure 5 montre un exemple d'organigramme susceptible d'être exécuté par un tel module de décision de type de bloc. to the memory block Bq is decremented during a step 451. This decrementation affects both the count value stored in the block memory and the count value stored in the cache memory. After reading all the pixel values of the set of blocks {Bq}, comparisons are made between the pixel values of the macroblock MB ,,, and pixel values corresponding to parts of the set of blocks {Bq }. These comparisons make it possible to determine a definitive motion vector Vm'lfinal for this macroblock MBm of the image Im_1 WWW, during a step 410. The final motion vectors of the other macroblocks of the image Im_1 are determined in the same way. (1). As explained above with reference to FIG. 4A, this set of definitive motion vectors {Vm, lfinal} for the images Im_1 0W, Im_2 ~ 1 ~ makes it possible to determine during step 404 a set of motion vectors {N / m ,, _ 1} for the images of level I-1 Im_1 0- ') During the execution of the last loop, I = 0, and the images for which the final vector field is estimated are the images of the video footage Im_1, Im_2. This definitive vector field {Vm, ofinal} can be transmitted to a video encoding module for example, and / or to a block type decision module, during step 411. The type decision module block can also implement a method according to an embodiment of the invention. FIG. 5 shows an example of a flowchart capable of being executed by such a block type decision module.

Ce module, les moyens de calcul, les moyens d'estimation de champ de vecteur, etc. peuvent être intégrés dans un même processeur ou bien dans des processeurs distincts. Une étape 500 de réception d'un champ de vecteurs de mouvement {Vm,ofinal} est mise en oeuvre. This module, the calculation means, the vector field estimation means, etc. can be integrated in the same processor or else in separate processors. A step 500 of receiving a field of motion vectors {Vm, ofinal} is implemented.

Dans cet exemple, ce champ de vecteurs est reçu des moyens d'estimation de vecteurs mettant en oeuvre un procédé selon un mode de réalisation de l'invention, mais il peut bien entendu en être autrement. Par exemple, le champ de vecteurs de mouvement peut avoir été déterminé de 18 façon connue de l'homme du métier, par exemple en testant pour chaque macrobloc les vecteurs selon toutes les directions, ou bien les vecteurs autour d'un vecteur déterminé pour un macrobloc précédent de l'image. Est également reçu et mémorisé un jeu de valeurs de comptage {Ci,} lors d'une étape 501 et un jeu d'identifiants de dernier macrobloc {MBdm')} lors d'une étape 502. Chaque valeur de comptage C1 correspond à un bloc mémoire Bq et gg indique un nombre de macroblocs dont les ensembles de blocs mémoire associés comportent ce bloc mémoire Bq. In this example, this vector field is received from the means for estimating vectors implementing a method according to one embodiment of the invention, but it can of course be otherwise. For example, the field of motion vectors may have been determined in a manner known to those skilled in the art, for example by testing for each macroblock the vectors in all directions, or else the vectors around a vector determined for one. previous macroblock of the image. Also received and stored is a set of count values {Ci,} during a step 501 and a set of last macroblock identifiers {MBdm ')} during a step 502. Each count value C1 corresponds to a memory block Bq and gg indicates a number of macroblocks whose sets of associated memory blocks include this memory block Bq.

Pour chaque bloc mémoire Bq, l'identifiant de macrobloc MBdm'j') correspondant indique le dernier macrobloc, selon un ordre de traitement des macroblocs, dont l'ensemble de blocs mémoire associé comporte ce bloc mémoire. Le jeu de valeurs de comptage initiales et/ou le jeu d'identifiants de 15 dernier macrobloc {MBdm')} peuvent avoir été déterminés antérieurement, par exemple lors d'une étape similaire à l'étape 452 et/ou 453 de la figure 4B, et ce(s) même(s) jeu(x) est ou sont utilisé(s) par le module de décision de type de bloc. Dans ce cas, on peut prévoir que ce sont des copies de ces valeurs de comptage qui sont décrémentées à chaque lecture du bloc 20 correspondant, lors d'une étape similaire à l'étape 451 de la figure 4B. Alternativement, le jeu de valeurs de comptage {Ci,i} et/ou le jeu d'identifiants de dernier macrobloc {MBdm')} sont déterminés par le module de décision de type de bloc, à partir du champ de vecteurs de mouvement {Vm,final o }.For each memory block Bq, the corresponding macroblock identifier MBdm'j ') indicates the last macroblock, according to a macroblock processing order, of which the associated set of memory blocks includes this memory block. The set of initial count values and / or the set of identifiers of the last macroblock {MBdm ')} may have been determined previously, for example in a step similar to step 452 and / or 453 of FIG. 4B, and this (these) same set (s) is or are used by the block type decision module. In this case, provision can be made for copies of these count values to be decremented on each reading of the corresponding block 20, during a step similar to step 451 of FIG. 4B. Alternatively, the set of count values {Ci, i} and / or the set of last macroblock identifiers {MBdm ')} are determined by the block type decision module, from the motion vector field { Vm, final o}.

25 Suit une étape 509 de détermination d'un degré d'associativité K' d'une mémoire cache éventuellement distincte de la mémoire cache décrite en référence aux figures 4A et 4B. Est tout d'abord estimée lors d'une étape 503 une variance a du champ de vecteurs de mouvement {vm,Ofinal} 30 Cette variance a est comparée à des seuils S1, S2, lors d'étapes de tests 504, 507, et la valeur attribuée à la variable K' dépend du résultat de ces tests (voir les étapes 505, 506, 508).There follows a step 509 of determining a degree of associativity K ′ of a cache memory possibly distinct from the cache memory described with reference to FIGS. 4A and 4B. A variance a of the field of motion vectors {vm, Ofinal} is first estimated during a step 503. This variance a is compared with thresholds S1, S2, during test steps 504, 507, and the value assigned to the variable K 'depends on the result of these tests (see steps 505, 506, 508).

19 Ainsi, si la variance a est faible, ce qui serait le cas si les vecteurs du champ {Vm,ofinal} sont relativement semblables les uns au autres, le degré d'associativité du cache K' est relativement élevé. Lors de la lecture de valeurs de pixels d'un bloc mémoire dans la mémoire de blocs, les calculs pour déterminer la ligne de cache dans laquelle écrire ces nouvelles valeurs de pixels sont relativement longs, du fait de la valeur élevée du nombre K' de lignes de cache susceptibles d'accueillir ces nouvelles valeurs. Néanmoins, la variance étant faible, on peut espérer lire dans la mémoire cache bon nombre de valeurs de pixels de blocs mémoire, de sorte que ces calculs resteraient relativement rares. Suit une boucle portant sur les macroblocs, et indicée par la variable m, avec les étapes classiques d'initialisation, de test et d'incrémentation. Pour un macrobloc MBm donné, lors d'une étape 512, on détermine à partir du vecteur de mouvement correspondant Vm,o final un ensemble de blocs mémoire {Bq,} associés à ce macrobloc donné MBm. La variable q' indice les blocs mémoire de cet ensemble. Cet ensemble peut être différent de l'ensemble {Bq} de la figure 4B. L'indice q' varie entre 1 et une valeur maximale susceptible de varier selon l'ensemble associé. Puis les valeurs de pixels de l'ensemble {Bq,} sont lues lors d'une étape 513. Cette lecture met en oeuvre la mémoire cache pour laquelle le degré d'associativité K' a été déterminé lors de l'étape 509. L'étape 513 peut être effectuée de façon relativement similaire à l'étape 405 de la figure 4B. Cette lecture des valeurs de pixels permet d'effectuer divers calculs, par exemple des interpolations subpixelliques, des comparaisons d'au moins une partie des valeurs de pixels lues avec les valeurs de pixels du macrobloc MBm, ou autre. Ces calculs, représentés par l'étape 514, permettent de déterminer le type de codage à utiliser pour ce macrobloc.30 19 Thus, if the variance a is small, which would be the case if the vectors of the field {Vm, ofinal} are relatively similar to each other, the degree of associativity of the cache K 'is relatively high. When reading pixel values from a memory block into block memory, the calculations to determine which cache line to write these new pixel values to are relatively long, due to the high value of the number K 'of. cache lines likely to accommodate these new values. Nevertheless, the variance being low, one can hope to read in the cache memory a good number of pixel values of memory blocks, so that these calculations would remain relatively rare. There follows a loop relating to macroblocks, and indexed by the variable m, with the classic steps of initialization, test and incrementation. For a given macroblock MBm, during a step 512, a set of memory blocks {Bq,} associated with this given macroblock MBm is determined from the corresponding motion vector Vm, o final. The variable q 'indexes the memory blocks of this set. This set may be different from the set {Bq} of FIG. 4B. The index q 'varies between 1 and a maximum value liable to vary according to the associated set. Then the pixel values of the set {Bq,} are read during a step 513. This reading uses the cache memory for which the degree of associativity K 'was determined during step 509. L step 513 can be performed relatively similarly to step 405 of Figure 4B. This reading of the pixel values makes it possible to perform various calculations, for example subpixellic interpolations, comparisons of at least part of the pixel values read with the pixel values of the macroblock MBm, or the like. These calculations, represented by step 514, make it possible to determine the type of coding to be used for this macroblock.

Claims (12)

REVENDICATIONS1. Procédé de traitement d'une séquence vidéo d'images subdivisées en macroblocs de pixels, comprenant les étapes consistant à : recevoir (404) un champ de vecteurs de mouvement ({Vm,,}), chaque vecteur de mouvement associant par adressage un macrobloc de pixels (MBm) d'une première image (Im_1 W) à un ensemble ({Bq}) de blocs mémoire d'une deuxième image (Im_2W), ledit ensemble comprenant au moins un bloc mémoire, et pour au moins un macrobloc, lire (405) les valeurs de pixels des blocs mémoire de l'ensemble de blocs mémoire associé, en utilisant une mémoire 10 cache, caractérisé en ce que le procédé comporte en outre les étapes consistant à pour au moins un bloc mémoire de la deuxième image, mémoriser (452) dans une étiquette correspondant audit bloc mémoire un comptage 15 (C;,i) du nombre de macroblocs dont les ensembles de blocs mémoire associés comportent ledit bloc mémoire, et lors d'une lecture des valeurs de pixels d'un bloc mémoire donné dans une mémoire de blocs distincte de la mémoire cache, décider (408) de l'emplacement d'écriture des dites valeurs de pixels dudit bloc mémoire 20 donné, parmi un jeu d'emplacements de la mémoire cache, ledit jeu d'emplacements correspondant audit bloc mémoire donné, à partir des étiquettes des blocs mémoire stockés aux dits emplacements. CLAIMS 1. A method of processing a video sequence of images subdivided into macroblocks of pixels, comprising the steps of: receiving (404) a field of motion vectors ({Vm ,,}), each motion vector associating by addressing a macroblock of pixels (MBm) of a first image (Im_1 W) to a set ({Bq}) of memory blocks of a second image (Im_2W), said set comprising at least one memory block, and for at least one macroblock, reading (405) the pixel values of the memory blocks of the associated set of memory blocks, using a cache memory, characterized in that the method further comprises the steps of for at least one memory block of the second image , storing (452) in a tag corresponding to said memory block a count 15 (C;, i) of the number of macroblocks whose sets of associated memory blocks include said memory block, and when reading the pixel values of a memory block given in a block memory separate from the cache memory, deciding (408) the location for writing said pixel values of said given memory block, from among a set of cache memory locations, said set of locations corresponding to said given memory block, from the labels of memory blocks stored at said locations. 2. Procédé de traitement d'une séquence vidéo selon la revendication 1, 25 le procédé comprenant, pour au moins un bloc mémoire (Bq), une étape de décrémentation (451) du comptage (CZg,1) du nombre de macroblocs dont les ensembles de blocs mémoire associés comportent ledit bloc mémoire,ladite étape étant effectuée à chaque requête en lecture (405) des valeurs de pixels dudit bloc mémoire. 2. A method of processing a video sequence according to claim 1, the method comprising, for at least one memory block (Bq), a step of decrementing (451) the count (CZg, 1) of the number of macroblocks of which the. sets of associated memory blocks comprise said memory block, said step being performed on each read request (405) of the pixel values of said memory block. 3. Procédé de traitement d'une séquence vidéo selon l'une des revendications 1 ou 2, le procédé comprenant une étape consistant à pour chaque bloc mémoire (B;o,jo), mémoriser dans l'étiquette correspondante (36p) un identifiant (MBdm(10'j°)) d'un macrobloc dont l'ensemble de blocs mémoire associé comporte ledit bloc mémoire. 3. A method of processing a video sequence according to one of claims 1 or 2, the method comprising a step consisting in for each memory block (B; o, jo), storing in the corresponding tag (36p) an identifier. (MBdm (10'j °)) of a macroblock whose associated set of memory blocks includes said memory block. 4. Procédé de traitement d'une séquence vidéo selon la revendication 3 dans lequel pour chaque bloc mémoire (B;o,jo), le macrobloc dont l'identifiant (MBdm('o'o)) est mémorisé est le dernier macrobloc, selon un ordre de traitement des macroblocs, dont l'ensemble de blocs mémoire associé comporte ledit bloc mémoire. 4. A method of processing a video sequence according to claim 3 wherein for each memory block (B; o, jo), the macroblock whose identifier (MBdm ('o'o)) is stored is the last macroblock, according to a processing order of the macroblocks, of which the associated set of memory blocks comprises said memory block. 5. Procédé de traitement d'une séquence vidéo selon l'une des revendications 3 ou 4, comprenant en outre, lors de la lecture des valeurs de pixels d'un bloc mémoire donné (B;o,jo), les étapes consistant à pour chaque emplacement du jeu d'emplacements (381,p, 382,p, 383,p, 384,p) correspondant audit bloc mémoire donné, calculer une densité d'utilisation locale (Dk) à partir du comptage (Cil Vil, C212 ,C313 , Ci414) du nombre de macroblocs mémorisé dans l'étiquette (401,p, 402,p, 403,p, 404,p) correspondant à l'emplacement, de l'identifiant de macrobloc (MBdm(i"), MBdm('2,i2), MBdm03,j3> MBdm(i4,j4)) mémorisé dans l'étiquette, et d'un identifiant du macrobloc (MBm) associé au bloc mémoire donné, et pour lequel les valeurs de pixels du bloc mémoire donné sont lues, choisir l'emplacement correspondant à la densité d'utilisation la plus faible pour écrire les valeurs de pixels du bloc mémoire donné. 5. A method of processing a video sequence according to one of claims 3 or 4, further comprising, during the reading of the pixel values of a given memory block (B; o, jo), the steps consisting in for each location of the set of locations (381, p, 382, p, 383, p, 384, p) corresponding to said given memory block, calculate a local use density (Dk) from the count (Cil Vil, C212 , C313, Ci414) of the number of macroblocks stored in the tag (401, p, 402, p, 403, p, 404, p) corresponding to the location, of the macroblock identifier (MBdm (i "), MBdm ('2, i2), MBdm03, j3> MBdm (i4, j4)) stored in the label, and an identifier of the macroblock (MBm) associated with the given memory block, and for which the pixel values of the block given memory are read, choose the location corresponding to the lowest usage density to write the pixel values of the given memory block. 6. Procédé de traitement d'une séquence vidéo selon la revendication 5, dans lequel, lors de la lecture des valeurs de pixels d'un bloc mémoire donné (Bio,io), pour chaque emplacement du jeu d'emplacements (381,p, 382,p, 383,p, 384,p) correspondant audit bloc mémoire donné, la densité d'utilisation locale vérifie : C. ' %k A + dist(MB, MBdm'k ) Clk,.%k est le comptage du nombre de macroblocs mémorisé dans l'étiquette (40k,p) correspondant audit emplacement (38k,p), 10 A est strictement positif, et dist(MB,MBdm'k)est une distance estimée entre le macrobloc pour lequel les valeurs de pixels du bloc mémoire donné sont lues, et le macrobloc dont l'identifiant (MBdm'k) est stocké dans l'étiquette (40k,p) correspondant audit emplacement. 15 6. A method of processing a video sequence according to claim 5, wherein, when reading the pixel values of a given memory block (Bio, io), for each location of the set of locations (381, p , 382, p, 383, p, 384, p) corresponding to said given memory block, the local usage density checks: C. '% k A + dist (MB, MBdm'k) Clk,.% K is the count of the number of macroblocks stored in the label (40k, p) corresponding to said location (38k, p), 10 A is strictly positive, and dist (MB, MBdm'k) is an estimated distance between the macroblock for which the values of pixels of the given memory block are read, and the macroblock whose identifier (MBdm'k) is stored in the label (40k, p) corresponding to said location. 15 7. Procédé de traitement d'une séquence vidéo selon l'une quelconque des revendications 1 à 6, comprenant en outre les étapes consistant à estimer (503) un paramètre de cohérence de mouvement à partir du champ de vecteurs de mouvement reçu, 20 choisir (505, 506, 508) un degré d'associativité (K') de la mémoire cache à partir de la valeur estimée du paramètre de cohérence de mouvement, dans lequel le nombre d'emplacements de la mémoire cache attribué à chaque bloc mémoire est égal au degré d'associativité choisi. 25 7. A method of processing a video sequence according to any one of claims 1 to 6, further comprising the steps of estimating (503) a motion coherence parameter from the received motion vector field, choosing. (505, 506, 508) a degree of associativity (K ') of the cache memory from the estimated value of the motion consistency parameter, in which the number of cache memory locations allocated to each memory block is equal to the degree of associativity chosen. 25 8. Procédé de traitement d'une séquence vidéo selon l'une quelconque des revendications 1 à 7, comprenant les étapes consistant à préalablement à l'étape de réception du champ de vecteurs, déterminer (403, 450) un champ de vecteurs préliminaires ({Vm,1+1final}) 30 chaque vecteur préliminaire associant un macrobloc de pixels d'une image Dk = où 23 obtenue par sous-échantillonnage de la première image à des pixels d'une image obtenue par sous-échantillonnage de la deuxième image, et estimer (404) le champ de vecteurs ({Vm,l}) à partir du champ de vecteurs préliminaires, et suite à l'étape de lecture, pour chaque macrobloc, utiliser (410) les valeurs de pixels des blocs mémoire lues pour rechercher un vecteur de mouvement définitif (Vm,lfinal) 8. A method of processing a video sequence according to any one of claims 1 to 7, comprising the steps of, prior to the step of receiving the vector field, determining (403, 450) a preliminary vector field ( {Vm, 1 + 1final}) 30 each preliminary vector associating a macroblock of pixels of an image Dk = where 23 obtained by subsampling the first image to pixels of an image obtained by subsampling the second image , and estimate (404) the field of vectors ({Vm, l}) from the field of preliminary vectors, and following the read step, for each macroblock, use (410) the pixel values of the memory blocks read to find a definitive motion vector (Vm, lfinal) 9. Procédé de traitement d'une séquence vidéo selon l'une quelconque des revendications 1 à 7, dans lequel la première image et la deuxième image sont deux images (Im_1, Im2) de la séquence vidéo, le procédé comprenant en outre des étapes consistant à, pour chaque macrobloc, suite à l'étape de lecture, comparer (514) les valeurs de pixels du macrobloc à au moins une partie des valeurs de pixels lues, et prendre (514) une décision quant au type d'encodage pour ledit macrobloc à partir du résultat de la comparaison. 9. A method of processing a video sequence according to any one of claims 1 to 7, wherein the first image and the second image are two images (Im_1, Im2) of the video sequence, the method further comprising steps comprising, for each macroblock, following the reading step, comparing (514) the pixel values of the macroblock to at least a portion of the read pixel values, and making (514) a decision as to the type of encoding for said macroblock from the result of the comparison. 10. Programme d'ordinateur destiné à être stocké dans une mémoire d'un dispositif de traitement de séquence vidéo, et/ou stocké sur un support mémoire destiné à coopérer avec un lecteur dudit dispositif et/ou téléchargé via un réseau de télécommunication, caractérisé en ce qu'il comporte des instructions pour la mise en oeuvre du procédé selon l'une des revendications précédentes, lorsque lesdites instructions sont exécutées par un processeur dudit dispositif de traitement de séquence vidéo. 10. Computer program intended to be stored in a memory of a video sequence processing device, and / or stored on a memory medium intended to cooperate with a reader of said device and / or downloaded via a telecommunications network, characterized in that it comprises instructions for implementing the method according to one of the preceding claims, when said instructions are executed by a processor of said video sequence processing device. 11. Dispositif de traitement de séquence vidéo d'images subdivisées en 30 macroblocs de pixels, comprenant des moyens d'estimation (33) d'un champ de vecteurs de mouvement, chaque vecteur de mouvement associant par adressage un macrobloc depixels d'une première image à un ensemble de blocs mémoire d'une deuxième image, ledit ensemble comprenant au moins un bloc mémoire, et des moyens d'accès (41, 31, 42) aptes à, pour au moins un macrobloc, lire les valeurs de pixels des blocs mémoire de l'ensemble de blocs mémoire associé audit macrobloc, lesdits moyens d'accès comprenant une mémoire cache (31), caractérisé en ce que le dispositif comporte en outre pour au moins un bloc mémoire de la deuxième image, une étiquette (361, 362, 36p, 401,p, 402,p, 403,p, 404,p) correspondant audit bloc mémoire, ladite étiquette étant destinée à mémoriser un comptage du nombre de macroblocs (Cil, C1,2, C;oe), C;l,jl, Ci2,j2, C;3p, C;4j4) dont les ensembles de blocs mémoire associés comportent ledit bloc mémoire, et des moyens de calcul (33) aptes à, lors d'une lecture des valeurs de pixels d'un bloc mémoire donné (35p) dans une mémoire de blocs distincte de la mémoire cache, décider de l'emplacement d'écriture des dites valeurs de pixels dudit bloc mémoire donné parmi un jeu d'emplacements de la mémoire cache (381,p, 382,p, 383,p, 384,p) correspondant audit bloc mémoire donné, lesdits moyens de calcul utilisant les contenus des étiquettes (401,p, 402,p, 403,p, 404,p) des blocs mémoire stockés aux dits emplacements. 11. A device for processing a video sequence of images subdivided into macroblocks of pixels, comprising means (33) for estimating a field of motion vectors, each motion vector associating by addressing a macroblock of pixels of a first one. image to a set of memory blocks of a second image, said set comprising at least one memory block, and access means (41, 31, 42) capable of, for at least one macroblock, reading the pixel values of the memory blocks of the set of memory blocks associated with said macroblock, said access means comprising a cache memory (31), characterized in that the device further comprises for at least one memory block of the second image, a label (361 , 362, 36p, 401, p, 402, p, 403, p, 404, p) corresponding to said memory block, said label being intended to store a count of the number of macroblocks (Cil, C1,2, C; oe), C; l, jl, Ci2, j2, C; 3p, C; 4j4) whose sets of associated memory blocks include said memory block oire, and calculation means (33) capable of, when reading the pixel values of a given memory block (35p) in a block memory separate from the cache memory, deciding the write location said pixel values of said given memory block from among a set of cache memory locations (381, p, 382, p, 383, p, 384, p) corresponding to said given memory block, said computing means using the contents of labels (401, p, 402, p, 403, p, 404, p) of the memory blocks stored at said locations. 12. Mémoire (31 ; 32) comprenant une pluralité de zones mémoire (351, 352, 35p ; 381,p, 382,p, 383,p, 384,p ) chaque zone mémoire comportant un champ de données (371, 372, 37p ; 391,p, 392,p, 393,p, 394,p) apte à mémoriser les valeurs de pixels d'un bloc mémoire d'une image, et une étiquette (361, 362, 36p ; 401,p, 402,p, 403,p, 404,p), ladite étiquette permettant de mémoriser un nombre de macroblocs d'une autre image associés par des vecteurs de mouvement respectifs au bloc mémoire dont les valeurs de pixels sont mémorisées dans le champ de données.30 12. Memory (31; 32) comprising a plurality of memory areas (351, 352, 35p; 381, p, 382, p, 383, p, 384, p) each memory area comprising a data field (371, 372, 37p; 391, p, 392, p, 393, p, 394, p) capable of storing the pixel values of a memory block of an image, and a label (361, 362, 36p; 401, p, 402 , p, 403, p, 404, p), said label making it possible to store a number of macroblocks of another image associated by respective motion vectors with the memory block whose pixel values are stored in the data field.
FR0852374A 2008-04-09 2008-04-09 PROCESSING A VIDEO SEQUENCE IN A CACHE MEMORY Active FR2930059B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0852374A FR2930059B1 (en) 2008-04-09 2008-04-09 PROCESSING A VIDEO SEQUENCE IN A CACHE MEMORY

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0852374A FR2930059B1 (en) 2008-04-09 2008-04-09 PROCESSING A VIDEO SEQUENCE IN A CACHE MEMORY

Publications (2)

Publication Number Publication Date
FR2930059A1 true FR2930059A1 (en) 2009-10-16
FR2930059B1 FR2930059B1 (en) 2010-04-09

Family

ID=40344891

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0852374A Active FR2930059B1 (en) 2008-04-09 2008-04-09 PROCESSING A VIDEO SEQUENCE IN A CACHE MEMORY

Country Status (1)

Country Link
FR (1) FR2930059B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2820846A1 (en) * 2001-02-12 2002-08-16 Thomson Multimedia Sa DEVICE AND METHOD FOR MANAGING ACCESS TO A RECORDING MEDIUM
EP1775962A1 (en) * 2004-07-16 2007-04-18 Sony Corporation Information processing system, information processing method, and computer program
FR2897213A1 (en) * 2006-02-08 2007-08-10 Thomson Licensing Sas BLOCK ENCODING METHOD OF IMAGES OF A SEQUENCE OF VIDEO IMAGES

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2820846A1 (en) * 2001-02-12 2002-08-16 Thomson Multimedia Sa DEVICE AND METHOD FOR MANAGING ACCESS TO A RECORDING MEDIUM
EP1775962A1 (en) * 2004-07-16 2007-04-18 Sony Corporation Information processing system, information processing method, and computer program
FR2897213A1 (en) * 2006-02-08 2007-08-10 Thomson Licensing Sas BLOCK ENCODING METHOD OF IMAGES OF A SEQUENCE OF VIDEO IMAGES

Also Published As

Publication number Publication date
FR2930059B1 (en) 2010-04-09

Similar Documents

Publication Publication Date Title
EP0331236A1 (en) Method and device for coding digital video signals and decoding device therefor
WO2000079800A1 (en) A method and a system for generating summarized video
FR2624994A1 (en) INTERMEDIATE TRANSLATION REGISTER CONTROL SYSTEM
FR2913785A1 (en) CIRCULAR BUFFER MEMORY MANAGEMENT
CN102387347A (en) Video storing and instant replay system based on IP (identification of position)-SAN (storage area networking) direct storage technology
FR2963190A1 (en) METHOD AND DEVICE FOR ENCODING AN IMAGE SEQUENCE
FR2959636A1 (en) Method for accessing spatio-temporal part of video image sequence in e.g. mobile telephone of Internet, involves obtaining selection zone updating information, where information is decoding function of data corresponding to selection zone
FR2899354A1 (en) DATA PROCESSING WITH MEMORY DATA TRANSFER.
FR2930059A1 (en) Digital video sequence processing method for e.g. computer, involves selecting location for writing pixel values of given memory block among set of locations of cache memory using labels of memory blocks stored at locations
EP1596607B1 (en) Method and device for generating candidate vectors for image interpolation systems using motion estimation and compensation
EP0662227B1 (en) Computer system memory management method, and computer system and memory using said method
FR2628864A1 (en) Segmentation of point velocity vectors in image sequence - segmenting velocity data based on movement prediction to generate representative vector for processing
WO1981000180A1 (en) Device for the estimation of image contours and application to the coding of television signals
CN107194961B (en) Method for determining multiple reference images in group image coding
FR2543384A1 (en) METHOD FOR ADAPTIVE ENCODING, AND DECODING, OF A TELEVISION IMAGE, AND DEVICES FOR IMPLEMENTING SAID METHOD
FR2871631A1 (en) METHOD FOR ITERACTIVE DECODING OF BLOCK CODES AND CORRESPONDING DECODER DEVICE
WO2021214395A1 (en) Methods and devices for coding and decoding a multi-view video sequence
EP1873711A1 (en) Data management for image processing
FR2934453A1 (en) ERROR MASKING METHOD AND DEVICE
Tsai et al. Fast ANN for High‐Quality Collaborative Filtering
FR2913784A1 (en) DATA MANAGEMENT FOR IMAGE PROCESSING
US11743474B2 (en) Shot-change detection using container level information
FR2945698A1 (en) METHOD AND DEVICE FOR ENCODING A VIDEO SEQUENCE
FR3046691A1 (en) DEVICE FOR SELECTING AND DESCRIBING POINTS OF INTERESTS IN A SEQUENCE OF IMAGES, FOR EXAMPLE FOR THE MATCHING OF POINTS OF INTERESTS
FR3046894A1 (en) SYSTEMS AND METHODS FOR FORMATTING AND ENCODING AERONAUTICAL DATA TO ENHANCE THEIR TRANSMISSIBILITY

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 8

RM Correction of a material error

Effective date: 20150907

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

PLFP Fee payment

Year of fee payment: 14

PLFP Fee payment

Year of fee payment: 15

PLFP Fee payment

Year of fee payment: 16

PLFP Fee payment

Year of fee payment: 17