FR2866729A1 - Multi-track audiovisual flow processing device, has administration module that synchronizes successive use of synchronized buffers by different active processes according to usage sequence determined by switching process - Google Patents

Multi-track audiovisual flow processing device, has administration module that synchronizes successive use of synchronized buffers by different active processes according to usage sequence determined by switching process Download PDF

Info

Publication number
FR2866729A1
FR2866729A1 FR0401889A FR0401889A FR2866729A1 FR 2866729 A1 FR2866729 A1 FR 2866729A1 FR 0401889 A FR0401889 A FR 0401889A FR 0401889 A FR0401889 A FR 0401889A FR 2866729 A1 FR2866729 A1 FR 2866729A1
Authority
FR
France
Prior art keywords
memory
synchronized
flow management
multitrack
data
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
FR0401889A
Other languages
French (fr)
Other versions
FR2866729B1 (en
Inventor
Benoit Fevrier
Christophe Monestie
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.)
EVS TOULOUSE, FR
Original Assignee
OPENCUBE
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 OPENCUBE filed Critical OPENCUBE
Priority to FR0401889A priority Critical patent/FR2866729B1/en
Priority to ES05729304.5T priority patent/ES2616309T3/en
Priority to EP05729304.5A priority patent/EP1719054B1/en
Priority to PCT/FR2005/000364 priority patent/WO2005093570A1/en
Priority to US11/065,092 priority patent/US20050198448A1/en
Publication of FR2866729A1 publication Critical patent/FR2866729A1/en
Application granted granted Critical
Publication of FR2866729B1 publication Critical patent/FR2866729B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)

Abstract

The device has a self-controlled memory comprising an administration zone (4) dedicated to administration of the memory and a useful zone (5) for data processing, where the memory is reserved and dedicated to processing of multi-track flow. An administration module synchronizes successive use of synchronized buffers of each memory line by different active processes according to usage sequence determined by a switching process (27).

Description

DISPOSITIF A MEMOIRE VIRTUELLE PARTAGEE AUTO-ADMINISTREESELF-ADMINISTERED SHARED VIRTUAL MEMORY DEVICE

APTE A GERER AU MOINS UN FLUX DE DONNEES MULTIPISTE
L'invention concerne un dispositif à mémoire virtuelle partagée auto-administrée.
Une mémoire virtuelle est formée d'une zone de mémoire vive électronique associée à un(des) microprocesseur(s) sur une carte mère de l'unité centrale d'un dispositif. Cette mémoire virtuelle est organisée en blocs de mémoire, pouvant être utilisés dynamiquement par au moins un programme applicatif et/ou des tâches ou processus, en complément d'une(des) zone(s) de mémoire vive électronique utilisée(s) par le système d'exploitation et le BIOS.
Un programme applicatif est un programme destiné à un utilisateur humain pour réaliser des fonctions (informatiques ou autres) choisies par lui. Certains programmes applicatifs, notamment dans le domaine audio-visuel, utilisent ou génèrent des flux de données, dits flux multipistes, comprenant une pluralité de pistes lues et/ou écrites et/ou modifiées en parallèle. Ces flux de données peuvent nécessiter pour leur traitement un volume mémoire important, être de formats très divers, selon les applications, et nécessiter une synchronisation entre les pistes.
Or, le besoin se fait sentir de disposer d'un dispositif apte à gérer de tels flux multipistes en nombre important, en parallèle, sans saturation de la mémoire vive du dispositif.
Par exemple, il serait utile de pouvoir lire et/ou transférer d'un périphérique à un autre et/ou modifier (filtrer, convertir, transcoder, encapsuler, extraire ...) des flux multipiste audiovisuels de format quelconque tel que MPEG, MPEG2, DV, audio, ... sans nécessiter une quelconque configuration spécifique de la mémoire virtuelle requise et sans risque de saturation ou de blocage de cette mémoire virtuelle. D'autres applications nécessitent aussi le traitement de flux de données en parallèle multipistes volumineux. Par exemple, dans l'industrie pétrolière, on effectue de nombreux relevés sismiques qui forment des flux de données devant être comparés à des fichiers modèles.
On connaît déjà des dispositifs informatiques utilisant une mémoire virtuelle partagée.
Pour allouer de la mémoire virtuelle à un programme applicatif, on utilise par exemple une fonction telle que "malloc (size)" en langage C ou "new[size]" en langage C++, qui crée un bloc de mémoire virtuelle accessible uniquement par le processus utilisant cette fonction. Des librairies de fonctions systèmes connues telles que "shmat" ou "shmcreat" en langage C permettant de faire partager une même zone de mémoire virtuelle par plusieurs processus, qui ciblent donc une adresse initiale de mémoire virtuelle connue. La synchronisation est alors effectuée par des sémaphores ou des mécanismes d'exclusion mutuelle ("mutex"), de sorte que les différents processus accèdent à la mémoire partagée avec une adresse décalée de l'adresse initiale.Mais ces mécanismes de synchronisation supposent, pour chaque processus, de connaître et prendre en compte précisément les différentes tâches réalisées par les différents processus, et les formats des données exploitées en mémoire virtuelle. En outre l'allocation des blocs mémoires est statique et rigide.
EP-1 031 927 décrit un procédé pour allouer des blocs d'une mémoire partagée à différentes tâches (ou processus), consistant à identifier et allouer des blocs disponibles en mémoire pour chaque tâche via des jetons et une table d'allocation unique. Ce procédé est néanmoins indépendant des programmes applicatifs, dont il ne prend pas en compte les contraintes spécifiques. Ainsi, il est en particulier non adapté au traitement de flux de données multipistes, tels que des flux audiovisuels.
Aucun dispositif connu ne permet de gérer une zone mémoire virtuelle partagée auto-administrée, et donc auto-adaptative, qui permette son utilisation dynamique pour le traitement de flux de données multipistes de formats quelconques non nécessairement préalablement spécifiés, et en nombre quelconque.
SUITABLE TO MANAGE AT LEAST ONE MULTIPIST DATA STREAM
The invention relates to a self-administered shared virtual memory device.
A virtual memory is formed of an electronic RAM area associated with a microprocessor (s) on a motherboard of the central unit of a device. This virtual memory is organized in blocks of memory, which can be used dynamically by at least one application program and / or tasks or processes, in addition to one (s) zone (s) of electronic random access memory used by the operating system and the BIOS.
An application program is a program intended for a human user to perform functions (computer or other) chosen by him. Some application programs, especially in the audio-visual field, use or generate data streams, called multitrack streams, comprising a plurality of tracks read and / or written and / or modified in parallel. These data streams may require for their processing a large memory volume, be of very different formats, depending on the applications, and require synchronization between the tracks.
However, the need arises to have a device capable of managing such multitrack streams in large numbers, in parallel, without saturation of the RAM device.
For example, it would be useful to be able to read and / or transfer from one device to another and / or modify (filter, convert, transcode, encapsulate, extract ...) audiovisual multitrack streams of any format such as MPEG, MPEG2 , DV, audio, ... without requiring any specific configuration of the required virtual memory and without risk of saturation or blocking of this virtual memory. Other applications also require the processing of large multitrack parallel data streams. For example, in the oil industry, many seismic surveys are conducted which form data streams to be compared to model files.
Computer devices using shared virtual memory are already known.
To allocate virtual memory to an application program, use for example a function such as "malloc (size)" in C or "new [size]" language in C ++, which creates a virtual memory block accessible only by the process using this function. Libraries of known system functions such as "shmat" or "shmcreat" in C language to share a same area of virtual memory by several processes, which therefore target an initial address of known virtual memory. The synchronization is then performed by semaphores or mutual exclusion mechanisms ("mutex"), so that the different processes access the shared memory with an address shifted from the initial address. But these synchronization mechanisms assume, for each process, to know and take into account precisely the different tasks performed by the different processes, and the data formats used in virtual memory. In addition, the allocation of memory blocks is static and rigid.
EP-1 031 927 discloses a method for allocating blocks of a shared memory to different tasks (or processes), consisting of identifying and allocating blocks available in memory for each task via tokens and a single allocation table. This process is nevertheless independent of the application programs, which it does not take into account the specific constraints. Thus, it is particularly not suitable for processing multitrack data streams, such as audiovisual streams.
No known device can manage a shared virtual memory zone self-administered, and therefore self-adaptive, which allows its dynamic use for the processing of multitrack data streams of any formats not necessarily previously specified, and in any number.

L'invention vise donc à résoudre ce problème général.
L'invention vise plus particulièrement à proposer un dispositif particulièrement adapté au traitement de flux multipistes audiovisuels.
L'invention vise aussi plus particulièrement à proposer un dispositif dans lequel la gestion de la zone de mémoire virtuelle auto-administrée est assurée directement et totalement automatiquement, les programmes applicatifs n'ayant pas à traiter les problèmes d'adressage mémoire, de synchronisation entre les processus fonctionnels, et de traitement en parallèle sur diverses parties de cette zone de mémoire virtuelle auto-administrée.
L'invention vise aussi plus particulièrement à proposer un dispositif permettant de réaliser en parallèle et simultanément différents traitements (lecture, écriture, transfert, conversion, filtrage, transcodage, compression, décompression, encapsulation, extraction...).
L'invention vise aussi à proposer un dispositif dans lequel la gestion de la zone de mémoire virtuelle auto-administrée permet d'absorber les différences de débits en écriture ou en lecture de média ou périphériques.
Pour ce faire, l'invention concerne un dispositif comprenant : - des moyens à microprocesseur(s) et mémoire(s) vive(s) aptes à exécuter au moins un système d'exploitation et au moins un programme applicatif de traitement de données, - au moins une mémoire vive virtuelle, adaptée pour pouvoir être utilisée en tant que mémoire vive de travail pour au moins un programme applicatif dont l'un au moins est adapté pour le traitement d'au moins un flux de données numériques, dit flux multipiste, comprenant une pluralité de pistes lues et/ou écrites et/ou traitées en parallèle,, caractérisé en ce que : a) il comprend des moyens, dits moyens de configuration, adaptés pour configurer le dispositif avec :
une zone de mémoire virtuelle, dite mémoire autoadministrée, réservée et dédiée au traitement de flux multipistes, cette mémoire auto-administrée comprenant une zone d'administration dédiée à l'administration de la mémoire auto-administrée, et une zone utile pour le traitement des données, un processus fonctionnel, dit processus aiguilleur, adapté pour pouvoir être chargé en mémoire vive, et définir et enregistrer dans la zone d'administration, au moins une ligne mémoire destinée à contenir une liste de tampons, dits tampons synchronisés, de la zone utile de la mémoire autoadministrée, une pluralité de processus fonctionnels, dits processus de gestion de flux, adaptés pour pouvoir être chargés en mémoire vive et, avec au moins une ligne mémoire, créer et/ou utiliser au moins un tampon synchronisé dans cette ligne mémoire,pour exécuter au moins une tâche sur des données d'un flux multipiste, puis libérer ce (ces) tampon(s) synchronisé(s), b) le processeur aiguilleur est adapté pour :
* déterminer, en fonction de contraintes de traitement prédéfinies pour chaque flux multipiste à traiter, une séquence d'utilisation des tampons synchronisés d'au moins une ligne mémoire par chaque processus de gestion de flux, dit processus actif, concerné par le traitement dudit flux multipiste, * transmettre à chaque processus actif, des données identifiant la (les) ligne(s) mémoire dans laquelle (lesquelles) il doit créer et/ou utiliser au moins un tampon synchronisé, c) le dispositif comprend un module d'administration adapté pour réaliser la synchronisation de l'utilisation successive de chaque tampon synchronisé de chaque ligne mémoire par les processus actifs en fonction de la séquence d'utilisation déterminée par le processus aiguilleur.
L'invention permet ainsi de traiter en parallèle simultanément (sur la même ligne de temps) des flux multipistes complètement différents, considérés jusqu'à maintenant comme totalement incompatibles entre eux, par exemple une piste au format vidéo haute définition sans compression, et une piste vidéo ayant un format à fort taux de compression tel que le format MPEG2. Ce résultat est obtenu grâce à la mémoire auto-administrée, au processus aiguilleur, aux processus de gestion de flux, et aux différentes lignes mémoire, qui permettent la synchronisation des données et l'ordonnancement des différents processus de gestion de flux qui peuvent exécuter de nombreuses tâches diverses sur les données.
Avantageusement et selon l'invention, le module d'administration est lié (à la compilation et à l'exécution) au processus aiguilleur et à chaque processus de gestion de flux, et rassemble des fonctions communes de gestion de la mémoire auto-administrée. Selon l'invention, ce module d'administration est avantageusement formé d'une librairie de fonctions communes liée (au sens informatique) aux processus par programmation orientée objet, par exemple comme une librairie liée dynamiquement en langage C++.
Outre le fait de permettre l'ordonnancement des processus de gestion de flux pour l'utilisation des tampons synchronisés d'une ligne mémoire, le module d'administration comprend d'autres fonctions communes. En particulier, avantageusement et selon l'invention le module d'administration est adapté pour déterminer, lors de la libération par un processus de gestion de flux d'un tampon synchronisé, le processus de gestion de flux subséquent défini dans la séquence d'utilisation, et, à défaut, pour supprimer le tampon synchronisé. La suppression du tampon synchronisé permet de rendre l'espace mémoire correspondant à nouveau disponible pour d'autres traitements. Il est à noter que les tampons synchronisés créés sur une même ligne mémoire ne correspondent pas nécessairement à des fragments contigus de la zone utile de la mémoire auto-administrée.
Avantageusement et selon l'invention, chaque processus de gestion de flux est adapté pour traiter les données à chaque instant avec un unique tampon synchronisé d'une ligne mémoire, puis pour libérer ce tampon synchronisé en fin de traitement, l'utilisation de différents tampons synchronisés d'une ligne mémoire par chaque processus de gestion de flux s'effectuant successivement, les uns après les autres. De ce fait, l'utilisation de l'espace de la mémoire utile est optimisée, plusieurs processus de gestion de flux pouvant être actifs simultanément sur des tampons synchronisés différents, et ce, de façon parfaitement synchronisée.
En outre, avantageusement et selon l'invention, le module d'administration comprend les fonctions suivantes : - création de la zone d'administration et de la zone utile de la mémoire auto-administrée, - initialisation d'une ligne mémoire avec un taux de remplissage maximum de la zone utile par cette ligne mémoire, - création d'un tampon synchronisé dans une ligne mémoire, - libération d'un tampon synchronisé, - accès à un tampon synchronisé par un processus actif, - détermination du processus actif subséquent sur la séquence d'utilisation d'un tampon synchronisé d'une ligne mémoire, après libération de ce dernier par le processus actif précédent.
Par ailleurs, avantageusement et selon l'invention le processus aiguilleur est adapté pour définir, pour chaque piste de chaque flux multipiste à traiter, au moins une ligne mémoire dédiée au traitement de cette piste. En outre, avantageusement et selon l'invention, le processus aiguilleur est adapté pour définir, pour chaque piste de chaque flux multipiste à traiter et pour chaque processus de gestion de flux traitant des données de cette piste, au moins une ligne mémoire source fournissant des données à traiter par le processus de gestion de flux et/ou au moins une ligne mémoire destination recevant des données traitées par le processus de gestion de flux.
En outre, avantageusement et selon l'invention le processus aiguilleur est adapté pour définir une et une seule séquence d'utilisation pour tous les tampons synchronisés d'une même ligne mémoire.
En outre, avantageusement et selon l'invention le processus aiguilleur est adapté pour transmettre la séquence d'utilisation de chaque ligne mémoire au premier processus de gestion des flux devant être actif sur un tampon synchronisé de ligne mémoire, ce processus de gestion de flux étant créateur de ce tampon synchronisé et définissant et enregistrant dans la zone d'administration des données identifiant ce tampon synchronisé et l'associant à la ligne mémoire et à la séquence d'utilisation.
Par ailleurs, avantageusement et selon l'invention, le processus aiguilleur est adapté pour calculer, en fonction de la nature de chaque flux multipiste à traiter, une taille maximum de la zone utile de la mémoire autoadministrée pouvant être donnée à chaque ligne mémoire. De la sorte, l'utilisation de la zone utile de la mémoire auto-administrée est optimisée par le processus aiguilleur selon les besoins de chaque piste de chaque flux multipiste, sans risque de blocage. Cette taille maximum est avantageusement définie sous forme d'un taux de remplissage, par exemple un pourcentage, de la zone utile de la mémoire autoadministrée. Elle est enregistrée dans la zone d'administration.
En outre, avantageusement et selon l'invention les processus de gestion de flux sont distincts, chacun d'eux exécutant au moins une tâche qui lui est propre. Rien n'empêche au contraire de prévoir que plusieurs versions identiques d'un ou plusieurs processus de gestion de flux soient actives simultanément, notamment pour réaliser des tâches semblables en parallèle.
Dans un mode de réalisation de l'invention avantageux pour de nombreuses applications du dispositif, ce dernier comprend au moins un programme applicatif, dit module lanceur, adapté pour charger en mémoire vive les différents processus et modules permettant la configuration et le fonctionnement de la mémoire auto-administrée dont : - le processus aiguilleur, - chaque processus de gestion de flux susceptible d'être utilisé pour le traitement de flux multipistes, - le module d'administration, - un module de fenêtrage dynamique sur un écran d'affichage du dispositif, adapté pour pouvoir former une interface homme/machine permettant à un utilisateur de définir chaque flux multipiste à traiter à partir de données sources d'origines diverses.Dans cette variante, c'est le chargement en mémoire du module lanceur, sur commande d'un utilisateur humain, qui permet de configurer le dispositif avec la mémoire auto-administrée, les processus de gestion de flux, et le processus aiguilleur conformément à l'invention. Le module de fenêtrage est un programme applicatif permettant à l'utilisateur d'exploiter le dispositif selon l'invention ainsi configuré de façon simple et conviviale, notamment par des commandes de type cliquer/glisser de fichiers de données sources destinées à constituer le(les) flux multipiste(s).
Dans une autre variante, qui peut d'ailleurs être combinée à la précédente, le dispositif selon l'invention peut être configuré au préalable, par exemple dès son démarrage, et fonctionner de façon plus ou moins automatique, notamment en esclave au sein d'une architecture complexe (par exemple au sein d'un réseau), ou sur commande d'un programme applicatif de contrôle automatique pour exécuter certaines tâches selon des évènements prédéterminés (par exemple assembler, convertir et enregistrer sur une unité d'enregistrement plusieurs pistes lues depuis diverses sources externes). Dans cette variante, le module de fenêtrage dynamique n'est pas indispensable.
Avantageusement et selon l'invention, le dispositif comprend : - au moins un processus de gestion de flux, dit processus de chargement, apte à écrire des données -notamment des données issues d'une unité de lecture-, en zone utile de la mémoire auto-administrée, - au moins un processus de gestion de flux, dit processus apte à lire des données -notamment des données destinées à une unité réceptrice telle qu'un dispositif d'enregistrement, un écran d'affichage...- depuis la zone utile de la mémoire auto-administrée.
Une unité de lecture peut être un périphérique du dispositif selon l'invention, un autre dispositif ou tout dispositif susceptible d'émettre des données à destination du dispositif selon l'invention.
De même, une unité réceptrice peut être un périphérique du dispositif selon l'invention, par exemple un dispositif d'enregistrement, un autre dispositif, ou tout dispositif susceptible de recevoir des données émises par le dispositif selon l'invention.
Par ailleurs, avantageusement et selon l'invention, les processus de gestion de flux sont adaptés pour pouvoir être chargés en une zone de mémoire vive distincte de la mémoire auto-administrée. De même, le processus aiguilleur est adapté pour pouvoir être chargé en une zone de mémoire vive distincte de la mémoire auto-administrée.
En outre, avantageusement et selon l'invention, le processus aiguilleur est adapté pour, dans une première étape d'analyse, analyser les caractéristiques de chaque flux multipiste à traiter et les contraintes de traitement de chaque flux multipiste, de façon à définir les données représentant les lignes mémoires, et des données représentant chaque séquenced'utilisation des tampons synchronisés de chaque ligne mémoire pour le traitement de ce flux multipiste, puis dans une deuxième étape subséquente de traitement, lancer le traitement du flux multipiste selon lesdites données définies préalablement lors de l'étape d'analyse.
Les contraintes prédéfinies propres à chaque flux peuvent être prédéfinies par programmation du processus aiguilleur et/ou enregistrement de paramètres dans une mémoire de masse du dispositif et/ou par des données, dites métadonnées, associées au flux -notamment dans un en-tête- et lues par le processus aiguilleur et/ou fournies par le programme applicatif. Ces contraintes comprennent par exemple le nombre de pistes ; des données de synchronisation entre pistes ; la durée de chaque piste ; le taux de transfert des données depuis/vers une unité de lecture/une unitéréceptrice ; le format des données sur chaque piste ; le mode de compression des données ; la nature du traitement à effectuer sur chaque piste ....
Avantageusement, dans un dispositif selon l'invention, la taille de la mémoire auto-administrée est définie par les moyens de configuration à une valeur fixe prédéterminée -notamment comprise entre 20 % et 80 % de celle de la mémoire virtuelle, typiquement de l'ordre de 128 Mégaoctets à 15 Gigaoctets avec les mémoires actuelles-. De même, avantageusement et selon l'invention, la taille de la zone d'administration est définie par les moyens de configuration à une valeur fixe prédéterminée -notamment une valeur fixe absolue, par exemple de l'ordre de 1 Mégaoctets-. La taille de la zone d'administration est beaucoup plus faible que celle de la zone utile de la mémoire auto-administrée. En outre, avantageusement et selon l'invention, la mémoire auto-administrée est définie par le processus aiguilleur lors de son chargement en mémoire vive.
Par ailleurs, avantageusement et selon l'invention, dans la zone d'administration chaque élément, dit élément d'administration, contient une adresse d'un élément précédent et une adresse d'un élément suivant.
Avantageusement et selon l'invention, la zone d'administration comprend lors de l'étape de traitement : - une liste des fragments de mémoire auto-administrée disponibles, - une liste des lignes mémoire actives (c'est-à-dire définies par le processus aiguilleur), - une liste de tampons synchronisés de la zone utile de la mémoire auto-administrée devant être utilisés par les lignes mémoire actives, et une liste des différents processus actifs qui doivent utiliser ces tampons synchronisés de mémoire auto-administrée.
Avantageusement et selon l'invention, les moyens de configuration sont adaptés pour permettre le traitement de flux multipistes qui sont des flux audiovisuels, notamment ayant des pistes dont le format est choisi parmi : - les formats de télévision haute définition (TVHD), - les formats de télévision de définition standard (TVSD), - les formats de cinéma numérique, - les formats vidéo compressés (MPEG2, MPEG4, DV...), - les formats audio non compressés, - les formats audio compressés, - les formats d'encapsulation multipiste (Quicktime , AVI ...), - les formats d'images, - les formats de données audiovisuelles brutes.
L'invention s'étend à un support d'enregistrement susceptible d'être lu par une unité de lecture associée à un dispositif de traitement numérique, ce support d'enregistrement comprenant un programme d'ordinateur adapté pour pouvoir former des moyens de configuration d'un dispositif selon l'invention, lorsqu'il est installé, et exécuté sur ce dispositif.
L'invention s'étend à un procédé de traitement de flux multipistes à l'aide d'un dispositif selon l'invention.
L'invention s'étend également à un dispositif; à un support d'enregistrement, et à un procédé caractérisés en combinaison par tout ou partie des caractéristiques mentionnées ci-dessus ou ci-après.
D'autres buts, caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante donnée uniquement à titre d'exemple non limitatif, qui se réfère aux figures annexées dans lesquelles : - la figure 1 est un schéma représentant l'organisation d'une mémoire vive d'un dispositif selon l'invention, - la figure 2 est un schéma d'un exemple d'environnement de périphériques pouvant être avantageusement exploités avec un dispositif selon l'invention, - la figure 3 est un schéma d'un exemple de fenêtre d'une interface homme/machine activée par un module lanceur d'un dispositif selon l'invention, - la figure 4 est un schéma illustrant un exemple d'architecture informatique fonctionnelle d'un dispositif selon l'invention,- la figure 5 est un organigramme illustrant un exemple d'algorithme d'un processus aiguilleur d'un dispositif selon l'invention, - la figure 6 est un organigramme illustrant un exemple d'algorithme d'un processus de gestion de flux d'un dispositif selon l'invention, - la figure 7 est un schéma illustrant l'architecture générale des requêtes et des états des processus de gestion de flux d'un dispositif selon l'invention, - la figure 8 est un schéma illustrant un exemple de chronogramme de deux flux multipistes, devant être traités successivement, - la figure 9 est un schéma illustrant l'organisation du fonctionnement de la mémoire auto-administrée d'un dispositif selon l'invention pour le traitement des flux de la figure 8.
Un dispositif 1 selon l'invention est un dispositif de traitement de données numériques qui peut, du point de vue de son architecture structurelle, présenter toutes les formes de réalisation possibles connues. Il peut s'agir d'un micro-ordinateur comprenant une carte mère à microprocesseur(s) et mémoire vive (RAM) associée ; un ou plusieurs bus de connexion de barrettes de mémoire et/ou de périphériques (notamment une interface homme/machine comprenant un clavier, un dispositif de pointage, un écran d'affichage) ; et des mémoires de masse tels qu'un disque dur et/ou des lecteurs/enregistreurs de supports de mémoire de masse amovible. Il peut également s'agir d'une architecture en réseau comprenant plusieurs machines et/ou plusieurs parties de machines reliées entre elles.En tout état de cause, le dispositif selon l'invention est adapté pour former au moins une unité centrale permettant l'exécution d'au moins un système d'exploitation (notamment du type LINUX , UNIX , WINDOWS , ...) et un ou plusieurs programmes applicatifs de traitement de données.
Le dispositif selon l'invention comprend en outre au moins une mémoire virtuelle 2 adaptée pour pouvoir être utilisée en tant que mémoire de travail pour des programmes applicatifs.
Une mémoire virtuelle est en effet une zone de mémoire vive gérée de façon centralisée par au moins un module du système d'exploitation, et qui peut être mis à dispositition d'au moins un programme applicatif pour lui permettre d'exécuter des tâches spécifiques.
Sur la figure 1, on a représenté un exemple de mémoire vive virtuelle 2. Cette mémoire virtuelle 2 peut être une portion de mémoire vive électronique associée à un microprocesseur sur une carte mère d'ordinateur. Il est à noter que l'invention s'applique tout aussi bien à la mise en u̇vre d'une telle mémoire virtuelle avec d'autres formes de réalisation de mémoire vive, par exemple une mémoire vive associée par l'intermédiaire d'un bus à un microprocesseur. La technologie de réalisation de cette mémoire vive n'a en réalité par d'importance dans le cadre de l'invention dès lors que les capacités et les vitesses d'accès et autres caractéristiques de la mémoire matérielle mettant en u̇vre cette mémoire vive sont compatibles avec les applications qui en sont faites, notamment en terme de durée de traitement.En particulier, il est à noter que pour le traitement de flux multipistes audiovisuels, notamment en vue de leur lecture, les durées de traitement en mémoire vive doivent être suffisamment faibles pour éviter toute interruption de la lecture du flux audiovisuel ou tout phénomène de hachage ou de saccade.
Dans un dispositif selon l'invention, une portion prédéterminée de la mémoire virtuelle 2 peut être réservée et dédiée au traitement de flux multipistes. Cette zone spécifique, dite mémoire auto-administrée 3, peut être définie à l'avance, par exemple par configuration de l'utilisateur, soit sous forme d'une valeur fixe, soit par une valeur correspondant à un pourcentage de la mémoire virtuelle 2 totale ou de la mémoire vive 1 totale.
Dans l'exemple représenté figure 1, la mémoire virtuelle 2 a une capacité de 512 Mégaoctets, et la mémoire auto-administrée 3 a une capacité de 256 Mégaoctets.
En outre, la mémoire auto-administrée 3 comprend deux zones distinctes, à savoir une zone, dite zone d'administration 4, dédiée à l'administration de la mémoire auto-administrée 3 et dans laquelle des données permettant l'administration (organisation, synchronisation, défragmentation...) de la mémoire auto-administrée 3 peuvent être enregistrées ; et une zone, dite zone utile 5, faisant office de mémoire de travail pour le traitement de flux de données numériques, dits flux multipistes, comprenant une pluralité de pistes lues et/ou écrites et/ou traitées en parallèle. La taille de la zone utile 5 est très largement supérieure à celle de la zone d'administration. Les données d'administration ne sont pas des données à traiter par le dispositif, telles que des données de flux multipistes).
Les pistes du flux multipistes sont par exemple une piste vidéo, une piste audio, ... Dans un flux multipiste à l'entrée et/ou à la sortie, les pistes peuvent être transmises dans un format multiplexé sur une ligne unique et/ou compressé, par exemple MPEG2, DV .... Mais le traitement d'un flux multipiste peut comprendre au moins une tâche ou une série de tâches (lecture, enregistrement, conversion, transcodage, filtrage, compression, décompression, encapsulation, extraction d'un format encapsulé,...) à effectuer séparément sur plusieurs pistes (dont le nombre peut être très important).
Comme représenté figure 2, le dispositif 1 selon l'invention peut être utilisé pour le traitement de flux de données en provenance et/ou à destination de divers périphériques de formats normalement incompatibles entre eux. Dans l'exemple représenté figure 2, il est prévu des caméras (par exemple du typecinéma numérique, vidéo numérique ou caméscope numérique, ...) qui peuvent fournir des données vidéo via des interfaces de type HDSDI, SDI, "Firewire" (dénommée aussi "I-Link" ou IEEE1394), ou Ethernet. Dans l'exemple, on a représenté une caméra de cinéma numérique 6a et un caméscope DV 6b. Il est également prévu un magnétoscope 7 ou autre dispositif lecteur/enregistreur qui peut acquérir et/ou fournir des données vidéo via des interfaces de type HDSDI, SDI, "Firewire" ou un réseau local, par exemple de type Ethernet.Il peut être également prévu une mémoire de masse telle qu'une unité de disque 9, par exemple de type RAID fournissant et/ou recevant des données vidéo, un écran d'affichage de type VGA ou un moniteur vidéo 10 recevant des données vidéo par une interface de type HDSDI, SDI ou analogique, et une liaison à un réseau 11 par une interface de type Ethernet ou réseau de stockage partagé "SAN". Dans cet exemple, le dispositif 1 selon l'invention constitue un serveur vidéo.
Bien sûr, cette illustration n'est qu'un exemple et toute autre liaison fournissant ou recevant des données multipistes peut être prévue, par exemple un récepteur d'émission de télévision (par voie hertzienne, satellite ou câble, ...).
Le dispositif selon l'invention comprend au moins un programme applicatif, dit module lanceur, adapté pour charger en mémoire vive et lancer l'exécution de moyens de configuration du dispositif conformément à l'invention. Ce module lanceur lance en particulier un module de fenêtrage dynamique qui réalise, sur un écran d'affichage du dispositif, une fenêtre 26 telle que celle représentée figure 3, adaptée pour pouvoir former une interface homme/machine 26 permettant à un utilisateur de définir chaque flux multipiste à traiter à partir de données sources d'origines diverses.Dans l'exemple représenté figure 3, la fenêtre 26 comprend une barre de titre 12, une barre de menu 13, une fenêtre de visualisation vidéo 14 associée à une zone 15 de commande/affichage d'informations de lecture/enregistrement (retour arrière, retour rapide, lecture, pause, stop, avance rapide, avance, compteur, ...). Il est prévu également une fenêtre 16 de navigation comprenant une zone 17 d'affichage de l'arborescence de fichiers et une zone 18 d'affichage de miniatures ou d'icônes représentant des fichiers.
La fenêtre 26 comprend en outre une fenêtre de montage 19 comprenant une zone de commandes ou d'actions 20, une zone 21 de représentation chronographique des flux multipistes à traiter utilisée dans le cas d'une édition, une zone 22 d'outils de filtrage pouvant être actionnés par l'utilisateur et une zone 23 complémentaire d'affichage/saisie de commandes spécifiques. Il peut être prévu aussi avantageusement une zone (non représentée dans l'exemple) pour la gestion de l'acquisition de flux multipistes.
Avec une telle fenêtre 26, l'utilisateur peut par exemple simplement sélectionner un fichier dans la zone de navigation 16 et le déplacer vers la zone d'affichage chronographique 21, ce qui aura pour effet de prendre en compte le flux multipiste associé à ce fichier dans son traitement par la mémoire autoadministrée 3. Grâce à l'invention, on peut en particulier associer sur le même chronogramme et monter en simultané de façon synchronisée différents flux multipistes de formats complètement différents, normalement incompatibles, et notamment des formats haute définition, des formats en définition standard, des formats compressés ou non compressés, des formats d'encapsulation (Quicktime , AVI , ...).
La figure 4 représente un exemple d'architecture informatique correspondant aux moyens de configuration de la mémoire auto-administrée 3 dans un dispositif selon l'invention. Cette architecture comprend l'interface homme/machine 26 représentée figure 3.
Cette interface homme/machine 26 communique avec un processus fonctionnel, dit processus aiguilleur 27 qui est chargé en mémoire vive 1 et exécuté de préférence sur la même machine que celle sur laquelle la mémoire auto-administrée 3 est gérée. Ce processus aiguilleur 27 est un processus fonctionnel, c'est-à-dire un processus de type serveur de bas niveau dans le système d'exploitation qui n'est pas directement visible ni accessible par l'utilisateur.
Les moyens de configuration selon l'invention comprennent en outre d'autres processus fonctionnels, dits processus de gestion de flux, dont le nombre n'est pas limité, chacun d'entre eux étant adapté pour pouvoir être chargé en mémoire vive 1 et réaliser au moins une tâche sur des données d'un flux multipiste. De très nombreux processus de gestion de flux peuvent être développés selon les fonctions à effectuer pour l'application à envisager du dispositif selon l'invention.
De préférence, chaque processus de gestion de flux est adapté pour effectuer une tâche spécifique unique, ou une série de tâches correspondant à une fonction de traitement unique sur une piste d'un flux multipiste, par exemple, une lecture, un enregistrement, un transfert vers un périphérique tel qu'un écran d'affichage, un filtrage, un transcodage, une compression, une décompression, une encapsulation, une extraction d'un format encapsulé, ...
Il est à noter cependant que l'interface homme/machine 26 communique directement et uniquement avec le processus aiguilleur 27, et en aucune manière avec les processus de gestion de flux. Dès lors, quelle que soit la fonction requise par le programme applicatif commandé par l'interface homme/machine 26, cette fonction est nécessairement adressée au processus aiguilleur 27 et traitée et analysée par ce dernier.
Dans l'exemple non limitatif représenté figure 4, il est prévu, à titre de processus de gestion de flux, un processus 28 de chargement de données dans la zone utile 5 de la mémoire auto-administrée 3, un processus 29 d'enregistrement de données depuis la zone utile 5 de la mémoire auto-administrée 3, un processus 30 de filtrage de données lues dans la zone utile 5 de la mémoire auto-administrée 3 et ré-écrite après filtrage dans la zone utile 5 de la mémoire autoadministrée 3, et un processus 31 de contrôle de périphériques de visualisation. Il est à noter que les différents processus de gestion de flux ne communiquent pas entre eux directement, mais communiquent uniquement avec le processus aiguilleur 27.La communication entre la fenêtre dynamique d'interface homme/machine 26 et le processus aiguilleur 27 s'effectue par deux liaisons dédiées de communication (par exemple de type "SOCKET"), à savoir une liaison de communication de type commande/acquittement CMD/ACK 24, et une liaison de surveillance 25 permettant de transmettre les statuts, les codes temporels et les éventuelles erreurs entre le processus aiguilleur 27 et le module de fenêtrage dynamique 26.
Chaque processus de gestion de flux 28, 29, 30, 31 est configuré par le processus aiguilleur 27. Par ailleurs, les différents processus de gestion de flux 28 à 31 n'échangent entre eux que des données correspondant au contenu des flux multipistes, via la zone utile 5 de la mémoire auto-administrée 3.
Chaque processus de gestion de flux 28 à 31 est relié au processus aiguilleur 27 par deux liaisons de communication (par exemple de type "SOCKET"), à savoir une liaison de commande/acquittement (CMD/ACK) et une liaison de surveillance d'éventuelles erreurs relevées par le processus de gestion de flux 28 à 31 correspondant.
Il est prévu également une librairie commune 32 d'opérations informatiques que les processus de gestion de flux 28 à 31, et le processus aiguilleur 27 utilisent pour effectuer des commandes ou tâches communes via des écritures/lectures en mémoire. Cette librairie 32 forme un module, dit module d'administration 32, lié par programmation à chaque processus 27, 28 à 31.11 est à noter que la mémoire auto-administrée 3 avec les processus de gestion de flux 28 à 31 et le processus aiguilleur 27 et le module d'administration 32 peuvent fonctionner de façon entièrement autonome, sans nécessiter l'exécution d'un fenêtrage dynamique, ou plus généralement d'une interface graphique utilisateur telle que 26.
Les différents processus de gestion de flux 28 à 31 sont de préférence similaires dans leur fonctionnement et leur architecture. Cette architecture générale commune est représentée par exemple figure 7.
Le service REQ_ISALIVE permet au module d'interface homme/machine 26 de savoir si les différents processus de gestion de flux sont chargés et actifs ou non.
Le service REQ_INIT réalise l'initialisation du processus de gestion de flux et de place à l'état "INIT" représenté figure 7. C'est à la réception de ce service que tous les processus de gestion de flux vont être configurés avant le lancement d'une action sur des données à traiter. Chaque processus de gestion de flux possède également un service REQ_CHANGECONF qui permet au processus aiguilleur 27 de changer la configuration spécifique de ce processus de gestion de flux.
REQ_PROCESS désigne de façon générique toutes les actions effectuées sur chaque flux multipiste par un processus de gestion de flux qui se trouve alors dans l'état "PROCESS" représenté figure 7.
La requête REQ_STOP place le processus de gestion de flux à l'état initialisé. La requête REQ _RESET permet au processus de gestion de flux de repasser dans un état stable "READY".
La librairie 32 formant le module d'administration comprend diffférentes fonctions communes pouvant être utilisées par les processus, et notamment : - une fonction de création de la zone d'administration 4 et de la zone utile 5 de la mémoire auto-administrée, consistant à réserver les zones de mémoire vive correspondantes avec leurs adresses mémoire correspondantes, - une fonction d'initialisation dans la zone d'administration 4 d'une ligne mémoire (sur commande du processus aiguilleur 27), avec un taux de remplissage maximum (calculé par le processus aiguilleur 27), de la zone utile 5 par cette ligne mémoire, - une fonction de création d'un tampon synchronisé dans une ligne mémoire, (par un processus de gestion de flux créateur d'un tel tampon synchronisé) avec sa taille mémoire, son numéro, son adresse,sa séquence d'utilisation (liste des différents processus de gestion de flux actifs devant accéder successivement à ce tampon, telle que déterminée par le processus aiguilleur 27), et un champ mémorisant son état courant, - une fonction d'accès à un tampon synchronisé d'une ligne mémoire par un processus de gestion de flux actif, - une fonction de libération d'un tampon synchronisé après utilisation par un processus de gestion de flux, permettant de rendre ce tampon synchronisé disponible pour le processus de gestion de flux subséquent, ou de supprimer ce tampon synchronisé s'il s'agit du dernier processus de gestion de flux actif devant intervenir sur ce tampon synchronisé, - une fonction de synchronisation consistant à déterminer, après libération d'un tampon synchronisé par un processus actif,quel est le processus actif subséquent devant intervenir sur ce tampon synchronisé, à partir de la séquence d'utilisation de ce tampon synchronisé.
Cette librairie 32 peut être formée de classes programmées par exemple en langage C++.
Le module lanceur charge en mémoire vive, outre l'interface homme/machine 26, le processus aiguilleur 27, chaque processus de gestion de flux 28 à 31, et la librairie 32 (module d'administration), ces processus 27 à 31, entre eux et la librairie 32 étant liés.
La figure 5 représente un organigramme de fonctionnement du processus aiguilleur 27.
L'étape 50 représente l'initialisation du processus aiguilleur 27 et son chargement en mémoire, par exemple sous l'effet du lancement du module lanceur. Lors de l'étape 51 subséquente, le processus aiguilleur 27 créé la mémoire auto-administrée 3,. Il crée une connexion avec chaque processus de gestion de flux 28 à 31. Lorsque l'utilisateur exécute une commande sur la fenêtre 26, le processus aiguilleur 27 reçoit en fait une séquence de flux multipiste(s) sous forme d'un chronogramme classiquement désigné "liste d'éditions". Cette réception est schématisée par l'étape 52 figure 5.
Il exécute ensuite, lors de l'étape 53, l'analyse de cette liste d'éditions et ouvre une boucle sur les différentes éditions, c'est-à-dire sur les différentes pistes à traiter.
Le processus aiguilleur 27 enregistre (étape 54), dans la zone d'administration de la mémoire auto-administrée 3, une ou plusieurs lignes de mémoire, dont en général au moins une ligne mémoire source et/ou au moins une ligne mémoire destination. Le processus aiguilleur 27 crée au moins une ligne mémoire pour chaque piste (source ou destination) à traiter. Il est à noter qu'une même ligne mémoire peut faire office de source et de destination pour les données à traiter.
Par exemple, il crée une ligne mémoire pour recevoir une piste vidéo source et une ligne mémoire source pour recevoir une piste audio qui doivent être traitées en parallèle, et/ou une ou plusieurs ligne(s) mémoire de destination pour recevoir le résultat du traitement par le processus de gestion de flux actif.
Cette étape d'analyse 53 permet au processus aiguilleur 27 de définir le nombre de ligne mémoire, la taille maximum en mémoire de chaque ligne mémoire, et la séquence d'utilisation des tampons synchronisés sur chaque ligne mémoire, et ce en fonction des contraintes prédéfinies par le programme applicatif qui fournit le flux multipiste à traiter au processus aiguilleur 27. Dans l'exemple, ce programme applicatif est constitué de l'interface homme/machine 26. L'étape 53 d'analyse est en particulier lancée lorsque l'utilisateur place un fichier dans la zone d'affichage chronographique 21 à l'aide de son dispositif pointeur, ce qui a pour effet de fournir au processus aiguilleur 27 des requêtes et des paramètres correspondant au flux multipiste à traiter.A réception d'une telle requête d'édition d'un flux multipiste, le processus aiguilleur 27 détermine dans un premier lieu si le traitement à effectuer consiste en une édition ou, au contraire, en une acquisition.
Cas d'une édition :
En fonction des paramètres transmis par le programme applicatif 26, le processus aiguilleur 27 détermine si l'édition doit être filtrée et/ou visualisée et/ou enregistrée et détermine la séquence d'utilisation des tampons synchronisés pour chaque ligne mémoire à créer, correspondant en réalité à la séquence d'intervention des différents processus de gestion de flux qui doivent être actifs sur chaque piste du flux multipiste.
Les paramètres pris en compte sont : - un fichier "liste d'éditions" (edl), - un fichier "liste de fichiers" (edl fichier), - un fichier "liste de filtres" (edl de filtre).
Pour chaque édition, c'est-à-dire chaque piste, de la liste d'éditions, le processus aiguilleur 27 détermine le format des données, c'est-à-dire notamment le standard audio/vidéo dans lequel elles sont enregistrées, et détermine la taille de l'édition (c'est-à-dire de la piste) par rapport à la taille maximum des différentes éditions de la séquence, pour déterminer le pourcentage de zone utile 5 de mémoire vive pouvant affecté à chaque ligne mémoire correspondant à chaque piste.
Le processus aiguilleur 27 crée ensuite une ligne mémoire source pour chaque piste audio et une ligne mémoire source pour chaque piste vidéo, et calcule et met en forme les paramètres destinés au processus de chargement, à savoir l'identification des différentes lignes mémoire utilisées et les séquences d'utilisation correspondantes.
Le processus aiguilleur 27 détermine ensuite si chaque édition, c'est-à-dire chaque piste, doit être filtrée ou non. Dans l'affirmative, le processus aiguilleur 27 extrait du fichier de filtres envoyés en paramètres le ou les filtres relatifs à la piste à filtrer, et vérifie le nombre d'entrée/sortie, puis crée autant de lignes mémoire qu'il y a de sortie pour le (les) filtre(s) à appliquer. Le processus aiguilleur 27 prépare ensuite et met en forme les paramètres destinés au processus de filtrage, à savoir l'identification des différentes lignes mémoire source audio et vidéo et des différentes lignes mémoire de destination de la piste.
Le processus aiguilleur 27 examine ensuite si la piste doit être ou non visualisée. Dans l'affirmative, et si la piste a également été filtrée, le processus aiguilleur 27 utilise les lignes mémoire de destination identifiées pour le processus de filtrage. Si la piste doit être visualisée mais sans filtrage, le processus aiguilleur 27 envoie les lignes mémoire source audio et vidéo préalablement créées au processus de visualisation. Il est à noter que dans ce cas, les lignes mémoire source font aussi office de lignes mémoire de destination. Le processus aiguilleur 27 calcule et met en forme ensuite les paramètres destinés au processus de visualisation (lignes mémoire et séquences d'utilisation).
Le processus aiguilleur 27 détermine ensuite le flux de l'édition doit être ou non enregistré. Dans l'affirmative et si le flux a fait l'objet d'un filtrage, le processus aiguilleur 27 utilise des lignes mémoire de destination du processus de filtrage. Si le flux doit être enregistré sans filtrage, le processus aiguilleur 27 envoie les lignes mémoire source audio et vidéo au processus d'enregistrement. Là encore, il calcule ensuite et met en forme des paramètres destinés au processus d'enregistrement (lignes mémoire et séquences d'utilisation).
Cas d'une acquisition :
En fonction des paramètres reçus du programme applicatif, le processus aiguilleur 27 détermine si l'acquisition est visualisée et enregistrée et calcule la séquence d'utilisation des tampons synchronisés correspondante.
Les paramètres sont : - un fichier "liste d'éditions d'acquisition" (edl acquisition), - un fichier "liste de fichiers" (edl fichier).
Pour chaque édition de la liste d'édition transmise au processus aiguilleur 27, ce dernier détermine le format des données (standard audio/vidéo), et calcule la taille de l'édition d'acquisition par rapport à la taille maximum des différentes pistes de chaque flux multipiste de la séquence à acquérir, de façon à déterminer le pourcentage de zones utiles de la mémoire autoadministrée pouvant utilisées par chaque ligne mémoire.
Dans le cas où le processus aiguilleur 27 détecte ensuite la présence de pistes audio dans la liste d'éditions d'acquisition, il crée une ligne mémoire d'acquisition pour chaque piste audio correspondante. De même, lorsque le processus aiguilleur 27 détecte la présence de pistes vidéo dans la liste d'éditions d'acquisition, il crée une ligne mémoire d'acquisition pour chaque piste vidéo correspondante.
Le processus aiguilleur 27 détermine et met en forme ensuite les paramètres destinés au processus d'acquisition, notamment l'identification des différentes lignes mémoire et leur séquence d'utilisation.
Le processus aiguilleur 27 détermine ensuite si l'édition doit être visualisée ou non. Dans l'affirmative, il prépare les paramètres correspondants (lignes mémoire d'acquisition) pour le processus de visualisation. Ensuite, le processus aiguilleur 27 détermine et met en forme les paramètres destinés au processus d'enregistrement.
L'étape d'analyse 53 et l'étape 54 de création des lignes mémoire décrites ci-dessus ne sont que des exemples non limitatifs et bien d'autres formes d'analyse peuvent être prévues, selon les applications du dispositif selon l'invention.
L'étape suivante 55 consiste à ouvrir une boucle sur les différents processus de gestion de flux 28 à 31 chargés en mémoire. Pour chacun de ces processus, il est effectué lors de l'étape 56 un test pour déterminer si ce processus de gestion de flux 28 à 31 peut être concerné par la piste à traiter. Dans l'affirmative, le processus aiguilleur 57 envoie les lignes mémoire et les informations de synchronisation (séquence d'utilisation) correspondantes au premier processus de gestion de flux concerné, lors de l'étape 57. Dans la négative, le processus reboucle pour passer au processus de gestion de flux suivant. Après l'étape 57, on exécute un test 58 pour terminer la boucle, c'est-à-dire pour savoir s'il s'agissait du dernier processus de gestion de flux de la séquence d'utilisation. Si tel n'est pas le cas, on passe au processus de gestion de flux suivant.Si tel est le cas, on exécute un test 59 pour savoir si la piste traitée était la dernière. Si tel n'était pas le cas, on reboucle à l'étape 53 pour réexécuter les étapes 54 à 58 sur la piste suivante. S'il s'agissait de la dernière piste, la première phase d'analyse de la séquence de flux multipiste(s) à traiter est terminée, et on passe à une phase subséquente d'exécution comprenant tout d'abord une étape 60 d'initialisation du processus aiguilleur 27, puis de réception lors de l'étape 61 d'une commande de la part de l'utilisateur, c'està-dire du programme applicatif commandé par l'utilisateur (interface homme/machine 26), et on envoie ensuite, lors de l'étape 62, une action à chaque processus de gestion de flux 28 à 31 pour déclencher la mise en fonctionnement de ces processus de gestion de flux, et ce de façon synchronisée les uns avec les autres.
La figure 6 représente l'organigramme de fonctionnement d'un processus de gestion de flux commandé par le processus aiguilleur 27. Sur les figures 5 et 6, les liens entre les deux organigrammes sont représentés par les lettres A et B .
L'étape 63 correspond au lancement du processus de gestion de flux, suivi de l'étape 64 d'attachement de ce processus de gestion de flux à la mémoire auto-administrée 3, c'est-à-dire à l'état "READY" représenté figure 7.
Lors de l'étape 65 subséquente, le processus de gestion de flux peut recevoir une liste d'éditions (une séquence de flux multipistes) qui lui est envoyée par le processus aiguilleur 27 à l'issue de l'étape 57 de ce processus aiguilleur 27. Si le processus de gestion de flux reçoit ensuite une action lors de l'étape 66 de la part du processus aiguilleur 27 (suite à l'étape 62 d'envoi d'action de ce processus aiguilleur 27), le processus de gestion de flux ouvre une étape 67 d'ouverture de boucle qui permet de parcourir chaque piste de la liste correspondant chacune à une ligne mémoire. Suite à cette étape 67, il exécute un test 68 permettant de déterminer si l'action demandée et la fonction qu'il exécute correspond ou non à la création d'un ou plusieurs tampon(s) synchronisé(s) dans la zone utile 5 de la mémoire auto-administrée 3.Dans la négative, le processus de gestion de flux exécute une étape 69 d'attente synchronisée sur un tampon synchronisé de la mémoire auto-administrée 3. Il exécute ensuite un test 70 pour déterminer si ce tampon synchronisé est ou non disponible sur la ligne mémoire source.
Il est à noter que le tampon synchronisé sur lequel le processus de gestion de flux se positionne est déterminé à l'avance dans la ligne mémoire par le processus aiguilleur 27, et cette donnée est connue du processus de gestion de flux.
Tant que le tampon synchronisé n'est pas disponible tel que déterminé par le test 70, le processus de gestion de flux revient à l'étape 69 d'attente. Lorsque le tampon synchronisé devient disponible, le processus de gestion de flux exécute l'étape ultérieure 71 de traitement des données dans ce tampon synchronisé.
Egalement, si le test 68 détermine que le processus de gestion de flux doit créer un tampon synchronisé, il est alors exécuté l'étape 72 de création de ce tampon synchronisé, puis le processus passe à l'étape 71 de traitement des données dans le tampon synchronisé ainsi créé.
Le processus de gestion de flux crée un tampon synchronisé lorsqu'il est le premier processus de gestion de flux à intervenir sur une ligne mémoire à traiter. Après exécution de l'étape 71 de traitement des données, le processus de gestion de flux libère le tampon synchronisé lors de l'étape 73 pour le rendre disponible pour le processus de gestion de flux devant ensuite intervenir sur cetampon synchronisé. Après cette étape 73 de libération du tampon synchronisé, le processus de gestion de flux termine la boucle de parcours des différents flux de la liste grâce au test 74 qui, après avoir traité toutes les pistes de la liste, exécute une étape 75 de fin de traitement de cette liste d'éditions.
La librairie commune 32 permet de définir différents éléments d'administration qui sont en réalité des listes, puisque chaque élément d'administration contient une référence aux éléments suivant et précédent.
Un élément d'administration de type fragment de mémoire est défini de plus par son décalage de début par rapport à l'adresse de base de la zone utile 5 de la mémoire auto-administrée 3, son décalage de fin par rapport à l'adresse de base de cette zone utile 5 de la mémoire auto-administrée 3 et par sa taille.
Un élément de type ligne mémoire ou "TRACK" est défini de plus par un identifiant, une liste de tampons synchronisés qui lui sont associés et par sa taille.
Un élément d'administration de type tampon mémoire ou "BUFFER" est défini en plus par son identifiant, son adresse en mémoire (décalage par rapport à l'adresse de début de la zone utile 5 de la mémoire), sa taille, une séquence d'utilisation (ou table de transition), et une variable représentant son état.
La zone d'administration 4 est découpée en tampons d'administration où seront définis les éléments d'administration (lignes mémoires, tampons mémoire ou fragments de mémoire libres).
Lors de la demande de création d'une ligne mémoire ou d'un tampon de mémoire, le module d'administration 32 convertit un élément d'administration libre en un élément de type ligne mémoire ou de type tampon de mémoire.
Dans le cas d'une conversion en élément de type ligne mémoire, le processus aiguilleur 27 définit la séquence d'utilisation en fonction des contraintes de traitement du flux multipiste et notamment selon les différents processus de gestion de flux qui seront nécessaires à ce traitement.
Dans le cas d'une conversion d'un élément en tampon de mémoire, le module d'administration 32 récupère un fragment de la zone utile 5 libre à partir de la liste des fragments de mémoire libre, et ce en fonction de la taille désirée pour ce tampon. Trois cas peuvent se présenter :
1) Si le fragment de mémoire libre a une taille inférieure à la taille du tampon de mémoire désirée, le module d'administration va récupérer le prochain fragment de mémoire libre et recommencer le test. S'il n'a pas de fragment de mémoire libre, une erreur est remontée au processus de gestion de flux créateur (le processus fait alors plusieurs demandes successives attendant la libération d'une zone par un autre processus).
2) Si le fragment de mémoire libre a la même taille que la taille du tampon désirée, on affecte la valeur de début du fragment à la valeur adresse du tampon mémoire, et on supprime le fragment mémoire libre de la liste de fragments de mémoire libre dans la zone d'administration 4.
3) Si au contraire le fragment de mémoire a une taille supérieure à la taille du tampon mémoire désirée, on affecte la valeur de début du fragment à la valeur adresse du tampon et on réduit le fragment de mémoire libre de la taille affectée au tampon.
Ensuite, on initialise l'état du tampon de mémoire à la valeur correspondante à un numéro identifiant le processus de gestion de flux actif sur ce tampon.
Lors de la libération d'un tampon synchronisé par un processus de gestion de flux, l'état évoluera en fonction de la séquence d'utilisation définie pour ce tampon synchronisé (soit retour à l'état initial, soit passage à l'état suivant, ce dernier cas provoquant la disponibilité du tampon synchronisé pour le processus de gestion de flux subséquent, soit suppression du tampon dans le cas où il s'agirait du dernier processus de gestion de flux dans la séquence d'utilisation).
Si la libération du tampon synchronisé implique sa suppression, le module d'administration 32 convertit ce dernier en fragment de mémoire libre, et l'on ajoute à la suite de la liste des fragments de mémoire libre dans la zone d'administration 4. Ensuite, il défragmente la zone utile 5 de la mémoire en vérifiant que le tampon synchronisé libéré est ou n'est pas adjacent à un ou deux fragments de mémoire libre.
Lors de la demande d'accès d'un tampon synchronisé par un processus de gestion de flux, les vérifications suivantes sont effectuées avant de donner l'accès au tamponsynchronisé : - la ligne mémoire existe-t-elle ? - le tampon synchronisé existe-t-il ? - le tampon synchronisé est-il disponible pour le processus de gestion de flux (vérification de son état courant) ? Si le tampon synchronisé est disponible pour ce processus de gestion de flux, l'adresse du tampon synchronisé est renvoyée au processus de gestion de flux qui peut l'utiliser. Sinon, un code indique l'état du tampon synchronisé.
Le processus de gestion de flux a la possibilité de demander l'accès à un tampon mémoire de manière asynchrone (utile pour un processus de vérification), c'est-à-dire qu'il peut récupérer un tampon mémoire indépendamment de l'état de ce dernier.
Il est à noter qu'un tel procédé de gestion de mémoire autoadministrée mis en u̇vre dans un dispositif selon l'invention peut être implémenté dans n'importe quel langage informatique supportant l'allocation dynamique de mémoire et la gestion de mémoire partagée. Il est à noter également que les données descriptives contenues dans un tampon mémoire peuvent varier. Par exemple, les identifiants (tampon mémoire ou de la ligne de mémoire) constitués de nombres entiers peuvent être remplacés par des chaînes de caractères.Les figures 8 et 9 illustrent un exemple d'application particulier.Il est à noter que cet exemple ne correspond pas strictement à l'exemple d'implémentation représenté figure 4. Sur la figure 8, on a représenté un exemple de chronogramme de deux flux audiovisuels successifs, à savoir une séquence au format MPEG2 qui dure 3 secondes et qui comprend une piste vidéo VI et une piste audio Al, suivie d'une séquence DV, qui dure aussi 3 secondes, comprenant également une piste vidéo VI et une piste audio Al. La figure 9 représente schématiquement le traitement de ces flux par la mémoire auto-administrée 3 conformément à l'invention. La liste d'édition 90 est fournie au processus aiguilleur 27.Dans l'exemple représenté, les processus de gestion de flux suivants sont prévus : un processus PGF1 de chargement, un processus PGF4 de visualisation vidéo, un processus PGF5 d'écoute audio, un processus PGF2 de décompression MPEG 2, et un processus PFG3 de décompression DV.
Dans l'exemple représenté, chaque processus de gestion de flux utilise au moins une ligne mémoire source et au moins une ligne mémoire destination. La ligne mémoire LMO en tant que source signifie que le processus de gestion de flux est créateur de tampon synchronisé (et premier intervenant de la séquence d'utilisation) et ne reçoit pas de données d'une ligne mémoire (par exemple processus de chargement). De même, la ligne mémoire LMO en tant que destination signifie que le processus de gestion de flux est le dernier intervenant de la séquence d'utilisation sur un tampon synchronisé.
Le processus aiguilleur 27 définit dans la zone d'administration 4 à l'aide de la librairie 32, six lignes mémoire, LM1, LM2, LM3, LM4, LM5, LM6 avec, pour chacune d'entre elles, sa taille maximum et son adresse de début. Par exemple, la taille maximum pour la ligne mémoire LM1 et pour la ligne mémoire LM4 est de 10 % de la zone utile 5 de la mémoire auto-administrée 3. Et la taille maximum des lignes mémoire LM2, LM3, LM5 et LM6 est de 20 % de la zone utile 4 de la mémoire auto-administrée 3.
Chaque processus de gestion de flux créateur de tampons synchronisés sur une ligne mémoire destination définit également des tampons synchronisés tels que TM1, TM2..., et enregistre dans la zone d'administration 4 leur taille, leur numéro, leur adresse, leur séquence d'utilisation, et leur état courant, le tout à l'aide de la librairie 32.
On a représenté dans la zone utile 5 de la mémoire autoadministrée 3 les différentes lignes mémoire LM1 à LM6 et la nature des données qui y sont traitées. On a également représenté les données de synchronisation qui sont adressées par le processus aiguilleur 27 à chacun des processus de gestion de flux qui identifient les lignes mémoire source et destination et les informations de synchronisation (séquences d'utilisation et/ou identification des tampons synchronisés).
Dans l'exemple représenté, le processus aiguilleur 27 fournit au premier processus de gestion de flux (PGF1) qui est le processus de chargement, les informations 95 comprenant le numéro de la ligne mémoire source, qui, dans l'exemple, est LMO, et le numéro de la ligne mémoire de destination ainsi que la séquence d'utilisation des tampons synchronisés de cette ligne mémoire de destination. Pour la première liste d'éditions (séquence MPEG2), la ligne mémoire de destination est LM1 et la séquence d'utilisation est 1,2, ce qui signifie que les processus de gestion de flux PGF1 et PGF2, successivement, devront intervenir successivement sur les données issues de la ligne mémoire LM1 pour le traitement de ce flux.Pour la deuxième liste d'édition (séquence DV), la ligne mémoire source est LMO, la ligne mémoire destination est LM4 et la séquence d'utilisation est 1,3, ce qui signifie que les processus PGF1 et PGF3, interviendront successivement.
Le processus PGF1 de chargement est créateur de tampons synchronisés puisqu'il doit charger les données de la ligne mémoire source dans la zone utile 5 de la mémoire. Le processus PGF1 de chargement crée donc les tampons synchronisés nécessaires. Typiquement, dans l'exemple représenté, trente tampons synchronisés par seconde du flux doivent être créés. Ainsi, le processus PGF1 de chargement utilise successivement quatre-vingt dix tampons synchronisés TM1, TM2, ..., TM90 pour la séquence MPEG2 sur la ligne mémoire de destination LM1. Pour ce faire, il crée un premier tampon synchronisé TM1, y charge des données de la séquence MPEG2, puis libère ce tampon TM1. Le module d'administration 32 permet alors au processus de gestion de flux actif subséquent d'intervenir, c'est-à-dire le processus PGF2 qui réalise la décompression MPEG2.Le processus de chargement réitère ces opérations successivement sur les quatrevingt dix tampons synchronisés TM1 à TM90.
Préalablement, le processus aiguilleur 27 avait fourni les informations 96 au processus PGF2 de gestion de flux subséquent. De la sorte, ce processus PGF2 sait qu'il doit intervenir sur une ligne mémoire source LM1, et sur les lignes mémoire de destination LM2 avec la séquence d'utilisation 2, 4 (PGF2 puis PGF4) et LM3 avec la séquence d'utilisation 2, 5 (PGF2 puis PGF5), et ce pour les tampons synchronisés commençant au tampon synchronisé TM1 jusqu'au tampon synchronisé TM90. Ainsi, cet exemple montre que, grâce à l'invention, plusieurs processus de gestion de flux sont actifs simultanément sur des tampons synchronisés différents, et ce, de façon parfaitement synchronisée.
Le processus PGF2 peut ainsi utiliser la ligne mémoire LM2 pour la piste vidéo issue du flux MPEG2 et la ligne mémoire LM3 pour la piste audio issue du flux MPEG2. Il charge et libère successivement les tampons synchronisés de ces deux lignes mémoire avec les données appropriées, comme décrit ci-dessus pour le processus PGF1. Le module d'administration 32 permet alors l'utilisation des tampons synchronisés par le processus de gestion de flux PGF4 de visualisation vidéo de la ligne mémoire LM2 au fur et à mesure de la libération successive de ces tampons synchronisés.. Il permet ainsi, de la même façon, l'utilisation successive des tampons de la ligne mémoire LM3 par le processus PGF5 d'écoute audio.
Là encore, le processus aiguilleur 27 avait fourni préalablement les informations 97 et, respectivement 98 à ces processus PGF4, PGF5. De la sorte, ces deux processus savent que les lignes mémoire source LM2 et LM3 doivent être traitées, et que la ligne mémoire de destination est LMO, ce qui signifie que ces processus PGF4, PGF5 sont les derniers intervenants sur la séquence d'utilisation correspondant au flux MPEG2.
Le dispositif selon l'invention permet ainsi dans l'exemple donné de lire simultanément, à partir d'un flux MPEG2, une piste audio et une piste vidéo de façon parfaitement synchronisée.
De plus, le processus PFG1 charge des données en mémoire pendant que les processus PGF2 et PGF3 lisent et décompressent des données provenant de la mémoire. C'est en effet un avantage de l'invention de permettre à plusieurs processus d'utiliser la mémoire en écriture et/ou lecture simultanément.
Le même type de fonctionnement se déroule pour le traitement du deuxième flux au format DV. Au fur et à mesure de son chargement dans les tampons synchronisés de la ligne mémoire LM4 successivement, la séquence d'utilisation permet l'activation du processus de gestion de flux PGF3 de décompression DV. Ce dernier reçoit les données de chaque tampon synchronisé de la ligne mémoire LM4 au format DV et décompresse et charge ces données décompressées dans les tampons synchronisés successivement des deux lignes mémoire LM5 avec la séquence d'utilisation 3, 4 (PGF3 puis PGF4) et LM6 avec la séquence d'utilisation 3, 5 (PGF3 puis PGF5) vidéo, respectivement audio.Le processus aiguilleur 27 avait communiqué les informations 99 au processus de gestion de flux PGF3 pour lui indiquer l'identification des lignes mémoire source et destination, les séquences d'utilisation ainsi que les numéros des tampons synchronisés de début et de fin (TM91 et TM180).
Il est à noter que, avec un dispositif conforme à l'invention, les tampons synchronisés TM1 à TM90 ou TM91 à TM180 créés sur une même ligne mémoire ne correspondent pas nécessairement à des espaces contigus dans la zone utile 5 de la mémoire auto-administrée. Il en résulte une gestion beaucoup plus souple et efficace de cette zone utile 5, dont les capacités sont grandement améliorées par rapport aux dispositifs antérieurs, dans lesquels une telle utilisation de tampons disjoints pour un même processus et/ou pour le traitement d'un même flux de données n'est pas possible. Mais, les lignes mémoire représentent une abstraction d'attachement et de continuation des tampons synchronisés.
Comme on le voit, les différents processus de gestion de flux reçoivent du processus aiguilleur 27, l'intégralité des informations de synchronisation et ne communiquent pas les uns avec les autres. Ils sont synchronisés à partir de ces informations, et par le module d'administration 32. Seuls les processus de gestion de flux PGF1, PGF2, PGF3 créateurs de tampons synchronisés dans les lignes mémoire reçoivent les séquences d'utilisation correspondantes, et les enregistrent dans la zone d'administration 4 avec les lignes mémoire et l'identificateur des tampons synchronisés correspondants.
Bien évidemment, l'exemple représenté figures 8 et 9 n'est pas limitatif et de très nombreuses autres possibilités sont offertes. Par exemple, deux séquences vidéo au format non compressé, peuvent être lues simultanément sur le même écran, séparées en deux parties distinctes grâce au dispositif selon l'invention.
Ainsi, il suffit de prévoir une piste de type par exemple FI réalisant un filtrage consistant à incruster une image dans une autre et d'appliquer un processus de gestion de flux correspondant à cette incrustation simultanément sur les deux séquences lues en parallèle. Le processus aiguilleur 27 pourra définir trois lignes mémoire, à savoir une ligne mémoire source pour chacune des séquences vidéo à lire, et une troisième ligne mémoire de destination pour recevoir le résultat de l'incrustation qui sera fournie au processus de visualisation vidéo. De nombreux autres exemples sont possibles.
The invention therefore aims to solve this general problem.
The invention aims more particularly at providing a device that is particularly suitable for processing audiovisual multitrack streams.
The invention also aims more particularly at providing a device in which the management of the virtual self-administered memory area is provided directly and completely automatically, since the application programs do not have to deal with the problems of memory addressing, of synchronization between functional processes, and parallel processing on various parts of this self-administered virtual memory area.
The invention also aims more particularly to provide a device for performing in parallel and simultaneously different processing (reading, writing, transfer, conversion, filtering, transcoding, compression, decompression, encapsulation, extraction ...).
The invention also aims to propose a device in which the management of the virtual memory area self-administered can absorb differences in write speeds or read media or devices.
To do this, the invention relates to a device comprising: - microprocessor means (s) and memory (s) live (s) able to run at least one operating system and at least one application program data processing, at least one virtual random access memory adapted to be used as working RAM for at least one application program, at least one of which is suitable for processing at least one digital data stream, said multi-track stream , comprising a plurality of tracks read and / or written and / or processed in parallel, characterized in that: a) it comprises means, said configuration means adapted to configure the device with:
a virtual memory zone, called self-administered memory, reserved and dedicated to the processing of multitrack streams, this self-administered memory comprising an administration zone dedicated to the administration of the self-administered memory, and a zone useful for the processing of data, a functional process, said process director, adapted to be loaded in RAM, and define and save in the administration area, at least one memory line for containing a list of buffers, called synchronized buffers, the area useful self-administered memory, a plurality of functional processes, so-called flow management processes, adapted to be loaded into RAM and, with at least one memory line, create and / or use at least one synchronized buffer in this memory line , to execute at least one task on data of a multitrack stream, then release this (these) synchronized buffer (s), b) the switchman is suitable for:
determining, according to predefined processing constraints for each multitrack stream to be processed, a sequence for using the synchronized buffers of at least one memory line by each flow management process, said active process, concerned with the processing of said stream multitrack, * transmit to each active process, data identifying the memory line (s) in which it must create and / or use at least one synchronized buffer, c) the device comprises a suitable administration module to synchronize the successive use of each synchronized buffer of each memory line by the active processes according to the usage sequence determined by the switcher process.
The invention thus makes it possible to process in parallel simultaneously (on the same time line) completely different multitrack streams, considered until now as totally incompatible with each other, for example a track in high definition video format without compression, and a track video having a high compression ratio format such as MPEG2 format. This result is achieved through the self-managed memory, the switcher process, the flow management processes, and the different memory lines, which allow the synchronization of data and the scheduling of the different flow management processes that can execute many different tasks on the data.
Advantageously and according to the invention, the administration module is linked (at compilation and execution) to the switcher process and to each flow management process, and brings together common management functions of the self-administered memory. According to the invention, this administration module is advantageously formed of a library of common functions linked (in the IT sense) to processes by object-oriented programming, for example as a dynamically linked library in C ++ language.
In addition to scheduling flow management processes for using synchronized buffers of a memory line, the administration module includes other common functions. In particular, advantageously and according to the invention, the administration module is adapted to determine, upon release by a flow management process of a synchronized buffer, the subsequent flow management process defined in the sequence of use. , and, failing that, to delete the synchronized buffer. Deleting the synchronized buffer makes the corresponding memory space available again for further processing. It should be noted that the synchronized buffers created on the same memory line do not necessarily correspond to contiguous fragments of the useful area of the self-administered memory.
Advantageously and according to the invention, each flow management process is adapted to process the data at each moment with a single synchronized buffer of a memory line, then to release this synchronized buffer at the end of processing, the use of different buffers synchronized memory line by each flow management process being performed successively, one after the other. As a result, the use of useful memory space is optimized, with several flow management processes being able to operate simultaneously on different synchronized buffers in a perfectly synchronized manner.
In addition, advantageously and according to the invention, the administration module comprises the following functions: - creation of the administration zone and the useful zone of the self-administered memory, - initialization of a memory line with a rate maximum filling of the useful area by this memory line, - creation of a synchronized buffer in a memory line, - release of a synchronized buffer, - access to a buffer synchronized by an active process, - determination of the subsequent active process on the sequence of using a synchronized buffer of a memory line, after releasing the latter by the preceding active process.
Furthermore, advantageously and according to the invention the switcher process is adapted to define, for each track of each multitrack stream to be processed, at least one memory line dedicated to the processing of this track. Furthermore, advantageously and according to the invention, the switcher process is adapted to define, for each track of each multitrack stream to be processed and for each flow management process processing data of this track, at least one source memory line providing data to be processed by the flow management process and / or at least one destination memory line receiving data processed by the flow management process.
In addition, advantageously and according to the invention the switcher process is adapted to define one and only one use sequence for all the synchronized buffers of the same memory line.
Furthermore, advantageously and according to the invention, the switcher process is adapted to transmit the sequence of use of each memory line to the first flow management process to be active on a synchronized memory line buffer, this flow management process being Creator of this synchronized buffer and defining and recording in the administration area data identifying this synchronized buffer and associating it with the memory line and the sequence of use.
Furthermore, advantageously and according to the invention, the switcher process is adapted to calculate, depending on the nature of each multitrack stream to be processed, a maximum size of the useful area of the self-administered memory that can be given to each memory line. In this way, the use of the useful area of the self-administered memory is optimized by the routing process according to the needs of each track of each multitrack stream, without risk of blocking. This maximum size is advantageously defined as a filling ratio, for example a percentage, of the useful area of the self-administered memory. It is saved in the administration area.
In addition, advantageously and according to the invention the flow management processes are distinct, each of them performing at least one task of its own. On the contrary, there is nothing to prevent several identical versions of one or more flow management processes from being active simultaneously, in particular to perform similar tasks in parallel.
In one embodiment of the invention that is advantageous for many applications of the device, the device comprises at least one application program, called a launcher module, adapted to load in the RAM the different processes and modules allowing the configuration and operation of the memory. self-administered including: - the switcher process, - each flow management process that can be used for the processing of multitrack streams, - the administration module, - a dynamic windowing module on a display screen of the device , adapted to form a human / machine interface allowing a user to define each multitrack stream to be processed from source data of various origins. In this variant, it is the loading in memory of the launcher module, on command of a human user, who can configure the device with self-administered memory, flow management processes, and the process according to the invention. The windowing module is an application program that enables the user to use the device according to the invention thus configured in a simple and user-friendly manner, in particular by clicking / dragging commands of source data files intended to constitute the ) multitrack stream (s).
In another variant, which can also be combined with the previous one, the device according to the invention can be configured beforehand, for example as soon as it is started, and operate more or less automatically, in particular as a slave within a complex architecture (for example within a network), or on command of an automatic control application program to execute certain tasks according to predetermined events (for example, to assemble, convert and record on a recording unit several tracks read from various external sources). In this variant, the dynamic windowing module is not essential.
Advantageously and according to the invention, the device comprises: at least one flow management process, referred to as a loading process, capable of writing data, in particular data from a reading unit, in a useful area of the memory self-administered, - at least one flow management process, said process capable of reading data -in particular data intended for a receiving unit such as a recording device, a display screen ...- since the useful area of the self-administered memory.
A reading unit may be a device of the device according to the invention, another device or any device capable of transmitting data to the device according to the invention.
Similarly, a receiving unit may be a device of the device according to the invention, for example a recording device, another device, or any device capable of receiving data transmitted by the device according to the invention.
Furthermore, advantageously and according to the invention, the flow management processes are adapted to be able to be loaded into a RAM area separate from the self-administered memory. Similarly, the sender process is adapted to be loaded into a RAM area separate from the self-administered memory.
In addition, advantageously and according to the invention, the switcher process is adapted to, in a first analysis step, analyze the characteristics of each multitrack stream to be processed and the processing constraints of each multitrack stream, so as to define the data representing the memory lines, and data representing each sequence of use of the synchronized buffers of each memory line for the processing of this multitrack stream, then in a second subsequent processing step, start the processing of the multitrack stream according to said data previously defined during the analysis step.
The predefined constraints specific to each stream may be predefined by programming the switcher process and / or recording parameters in a mass memory of the device and / or by data, called metadata, associated with the stream -especially in a header- and read by the switcher process and / or provided by the application program. These constraints include for example the number of tracks; synchronization data between tracks; the duration of each track; the rate of data transfer from / to a reading unit / receiver unit; the format of the data on each track; the mode of data compression; the nature of the treatment to be performed on each track ....
Advantageously, in a device according to the invention, the size of the self-administered memory is defined by the configuration means to a predetermined fixed value-in particular between 20% and 80% of that of the virtual memory, typically from order of 128 megabytes to 15 gigabytes with current memories. Similarly, advantageously and according to the invention, the size of the administration zone is defined by the configuration means to a predetermined fixed value-in particular an absolute fixed value, for example of the order of 1 megabyte. The size of the administration area is much smaller than that of the useful area of the self-administered memory. In addition, advantageously and according to the invention, the self-administered memory is defined by the switcher process when it is loaded into random access memory.
Furthermore, advantageously and according to the invention, in the administration area each element, said administration element, contains an address of a previous element and an address of a next element.
Advantageously and according to the invention, the administration zone comprises during the processing step: a list of available self-administered memory fragments, a list of active memory lines (that is to say defined by the switcher process), - a list of synchronized buffers of the useful area of the self-administered memory to be used by the active memory lines, and a list of the different active processes that should use these synchronized buffers of self-administered memory.
Advantageously and according to the invention, the configuration means are adapted to allow the processing of multitrack streams which are audiovisual streams, in particular having tracks whose format is chosen from: high definition television (HDTV) formats, standard definition television (SDTV) formats, - digital cinema formats, - compressed video formats (MPEG2, MPEG4, DV ...), - uncompressed audio formats, - compressed audio formats, - audio formats, multi-track encapsulation (Quicktime, AVI ...), - image formats, - raw audiovisual data formats.
The invention extends to a recording medium that can be read by a reading unit associated with a digital processing device, this recording medium comprising a computer program adapted to be able to form configuration means. a device according to the invention, when installed, and executed on this device.
The invention extends to a multitrack flow processing method using a device according to the invention.
The invention also extends to a device; to a recording medium, and to a process characterized in combination by all or some of the features mentioned above or hereinafter.
Other objects, features and advantages of the invention will appear on reading the following description given solely by way of non-limiting example, which refers to the appended figures in which: FIG. 1 is a diagram representing the organization of a RAM of a device according to the invention, - Figure 2 is a diagram of an example of a device environment that can be advantageously operated with a device according to the invention, - Figure 3 is a diagram of an example of a window of a man / machine interface activated by a launcher module of a device according to the invention, - Figure 4 is a diagram illustrating an example of a functional computer architecture of a device according to the invention, FIG. 5 is a flowchart illustrating an exemplary algorithm of a switching process of a device according to the invention; FIG. 6 is a flowchart illustrating an example of an algorithm of a management process of FIG. FIG. 7 is a diagram illustrating the general architecture of the requests and states of the flow management processes of a device according to the invention, FIG. 8 is a diagram illustrating the general architecture of the requests and states of the flow management processes of a device according to the invention; an example of a timing diagram of two multitrack streams, to be processed successively; FIG. 9 is a diagram illustrating the organization of the operation of the self-administered memory of a device according to the invention for the processing of the flows of FIG. .
A device 1 according to the invention is a digital data processing device which can, from the point of view of its structural architecture, present all known possible embodiments. It may be a microcomputer comprising a motherboard with microprocessor (s) and associated random access memory (RAM); one or more memory module and / or peripheral connection buses (in particular a man / machine interface comprising a keyboard, a pointing device, a display screen); and mass memories such as a hard disk and / or readers / recorders of removable mass storage media. It may also be a network architecture comprising several machines and / or several machine parts interconnected.In any event, the device according to the invention is adapted to form at least one central unit allowing the execution of at least one operating system (in particular of the LINUX, UNIX, WINDOWS, ... type) and one or more application programs for data processing.
The device according to the invention further comprises at least one virtual memory 2 adapted to be used as working memory for application programs.
A virtual memory is in fact a RAM area managed centrally by at least one operating system module, and which can be made available to at least one application program to enable it to perform specific tasks.
FIG. 1 shows an example of virtual random access memory 2. This virtual memory 2 can be a portion of electronic random access memory associated with a microprocessor on a computer motherboard. It should be noted that the invention applies equally well to the implementation of such a virtual memory with other embodiments of RAM, for example an associated random access memory via a bus to a microprocessor. The production technology of this RAM is actually of importance in the context of the invention since the capabilities and access speeds and other characteristics of the hardware memory implementing this RAM are compatible with the applications that are made, especially in terms of processing time. In particular, it should be noted that for the processing of audiovisual multitrack streams, especially for their reading, the processing times in RAM must be sufficiently low to avoid any interruption in the playback of the audiovisual stream or any hashing or jerking phenomenon.
In a device according to the invention, a predetermined portion of the virtual memory 2 can be reserved and dedicated to processing multitrack streams. This specific area, called self-administered memory 3, can be defined in advance, for example by configuration of the user, either as a fixed value or by a value corresponding to a percentage of the virtual memory 2 total or RAM 1 total.
In the example shown in FIG. 1, the virtual memory 2 has a capacity of 512 megabytes, and the self-administered memory 3 has a capacity of 256 megabytes.
In addition, the self-administered memory 3 comprises two distinct zones, namely a zone, called the administration zone 4, dedicated to the administration of the self-administered memory 3 and in which data allowing the administration (organization, synchronization, defragmentation ...) of the self-administered memory 3 can be recorded; and a zone, called the useful zone 5, serving as a working memory for the processing of digital data streams, called multitrack streams, comprising a plurality of tracks read and / or written and / or processed in parallel. The size of the useful zone 5 is very much greater than that of the administration zone. The administrative data is not data to be processed by the device, such as multitrack stream data).
The tracks of the multitrack stream are for example a video track, an audio track, etc. In a multitrack stream at the input and / or the output, the tracks can be transmitted in a format multiplexed on a single line and / or compressed, for example MPEG2, DV .... But the processing of a multitrack stream can include at least one task or series of tasks (playback, recording, conversion, transcoding, filtering, compression, decompression, encapsulation, extraction of an encapsulated format, ...) to be performed separately on several tracks (the number of which can be very important).
As represented in FIG. 2, the device 1 according to the invention can be used for the processing of data streams originating from and / or intended for various peripherals of formats which are normally incompatible with one another. In the example represented in FIG. 2, there are provided cameras (for example digital typecinema, digital video or digital video camera, etc.) that can provide video data via HDSDI, SDI, "Firewire" type interfaces (called also "I-Link" or IEEE1394), or Ethernet. In the example, there is shown a digital cinema camera 6a and a DV camcorder 6b. There is also provided a video recorder 7 or other reader / recorder device which can acquire and / or provide video data via HDSDI, SDI, "Firewire" type interfaces or a local network, for example of the Ethernet type. It can also be provided a mass memory such as a disk unit 9, for example of RAID type providing and / or receiving video data, a VGA type display screen or a video monitor 10 receiving video data by an interface of type HDSDI, SDI or analog, and a link to a network 11 by an Ethernet type interface or shared storage network "SAN". In this example, the device 1 according to the invention constitutes a video server.
Of course, this illustration is only an example and any other link providing or receiving multitrack data can be provided, for example a television broadcast receiver (over the air, satellite or cable, ...).
The device according to the invention comprises at least one application program, called launcher module, adapted to load in RAM and start the execution of configuration means of the device according to the invention. This launcher module in particular launches a dynamic windowing module which produces, on a display screen of the device, a window 26 such as that shown in FIG. 3, adapted to form a human / machine interface 26 enabling a user to define each multitrack stream to be processed from source data of various origins.In the example shown in FIG. 3, the window 26 comprises a title bar 12, a menu bar 13, a video display window 14 associated with a zone 15 of control / display of playback / recording information (rewind, rewind, play, pause, stop, fast forward, feed, counter, ...). There is also provided a navigation window 16 including a display area 17 of the file tree and a display area 18 of thumbnails or icons representing files.
The window 26 further comprises a mounting window 19 comprising a command or action zone 20, a zone 21 for chronographic representation of the multitrack streams to be processed used in the case of an edition, an area 22 for filtering tools. which can be actuated by the user and a complementary zone 23 for displaying / entering specific commands. It can also be advantageously provided a zone (not shown in the example) for managing the acquisition of multitrack streams.
With such a window 26, the user can for example simply select a file in the navigation area 16 and move it to the chronographic display area 21, which will have the effect of taking into account the multitrack stream associated with this file in its processing by the self-administered memory 3. Thanks to the invention, it is possible in particular to associate on the same timing diagram and simultaneously in a synchronized manner different multitrack streams of completely different, normally incompatible formats, and in particular high definition formats, formats in standard definition, compressed or uncompressed formats, encapsulation formats (Quicktime, AVI, ...).
FIG. 4 represents an exemplary computer architecture corresponding to the means for configuring the self-administered memory 3 in a device according to the invention. This architecture comprises the man / machine interface 26 represented in FIG.
This human / machine interface 26 communicates with a functional process, called the switcher process 27, which is loaded into RAM 1 and preferably executed on the same machine as that on which the self-administered memory 3 is managed. This switcher process 27 is a functional process, i.e., a low-level server-type process in the operating system that is not directly visible or accessible to the user.
The configuration means according to the invention furthermore comprise other functional processes, called flow management processes, the number of which is not limited, each of them being adapted to be able to be loaded into RAM 1 and to realize at least one task on data of a multitrack stream. Many flow management processes can be developed according to the functions to be performed for the application to consider the device according to the invention.
Preferably, each flow management process is adapted to perform a single specific task, or a series of tasks corresponding to a single processing function on a track of a multitrack stream, for example, a read, a record, a transfer. to a device such as a display screen, filtering, transcoding, compression, decompression, encapsulation, extraction of an encapsulated format, etc.
It should be noted, however, that the human / machine interface 26 communicates directly and only with the switcher process 27, and in no way with the flow management processes. Therefore, whatever the function required by the application program controlled by the man / machine interface 26, this function is necessarily addressed to the sender process 27 and processed and analyzed by the latter.
In the nonlimiting example shown in FIG. 4, there is provided, as a flow management process, a process 28 for loading data into the useful area 5 of the self-administered memory 3, a process 29 for recording data. data from the useful area 5 of the self-administered memory 3, a process 30 of filtering data read in the useful area 5 of the self-administered memory 3 and re-written after filtering in the useful area 5 of the self-administered memory 3 , and a visualization device control process 31. It should be noted that the different flow management processes do not communicate with each other directly, but only communicate with the switcher process 27. Communication between the dynamic man-machine interface window 26 and the switcher process 27 is effected by two dedicated communication links (for example of the "SOCKET" type), namely a communication link of the command / acknowledgment CMD / ACK 24 type, and a monitoring link 25 making it possible to transmit the statuses, the time codes and any errors between the switcher process 27 and the dynamic windowing module 26.
Each flow management process 28, 29, 30, 31 is configured by the switcher process 27. Moreover, the different flow management processes 28 to 31 only exchange between them data corresponding to the content of the multitrack streams, via the useful area 5 of the self-administered memory 3.
Each flow management process 28 to 31 is connected to the switcher process 27 by two communication links (for example of the "SOCKET" type), namely a control / acknowledgment link (CMD / ACK) and a monitoring link of possible errors identified by the corresponding flow management process 28 to 31.
There is also provided a common library 32 of computer operations that the flow management processes 28 to 31, and the switcher process 27 use to perform common commands or tasks via writes / reads in memory. This library 32 forms a module, said administration module 32, programmatically linked to each process 27, 28 to 31.11 It should be noted that the self-administered memory 3 with the flow management processes 28 to 31 and the switcher process 27 and the administration module 32 can operate entirely autonomously, without requiring the execution of a dynamic windowing, or more generally of a graphical user interface such as 26.
The different flow management processes 28 to 31 are preferably similar in their operation and their architecture. This common general architecture is represented for example in FIG.
The REQ_ISALIVE service allows the human / machine interface module 26 to know if the different flow management processes are loaded and active or not.
The REQ_INIT service performs the initialization of the flow and place management process in the "INIT" state represented in FIG. 7. It is at the reception of this service that all the flow management processes will be configured before launching. an action on data to be processed. Each flow management process also has a REQ_CHANGECONF service that allows the switcher process 27 to change the specific configuration of this flow management process.
REQ_PROCESS generically designates all the actions performed on each multitrack stream by a flow management process which is then in the "PROCESS" state represented in FIG. 7.
The REQ_STOP request places the flow management process in the initialized state. The REQ _RESET request allows the flow management process to return to a stable state "READY".
The library 32 forming the administration module comprises various common functions that can be used by the processes, and in particular: a function for creating the administration zone 4 and the useful area 5 of the self-administered memory, consisting in to reserve the corresponding RAM areas with their corresponding memory addresses, - an initialization function in the administration zone 4 of a memory line (on command of the switching process 27), with a maximum filling rate (calculated by the switcher process 27), the useful area 5 by this memory line, - a function for creating a buffer synchronized in a memory line, (by a flow management process creating such a synchronized buffer) with its memory size , its number, its address, its sequence of use (list of the different processes of management of active flows having to access successively this buffer, as determined by the pro 27), and a field storing its current state, - a function of accessing a synchronized buffer of a memory line by an active flow management process, - a function of releasing a synchronized buffer after use by a flow management process, making this synchronized buffer available for the subsequent flow management process, or delete this synchronized buffer if it is the last active flow management process to take effect on this synchronized buffer, - A synchronization function of determining, after release of a buffer synchronized by an active process, what is the subsequent active process to intervene on this synchronized buffer, from the sequence of use of this synchronized buffer.
This library 32 may be formed of classes programmed for example in C ++ language.
The launcher module loads in RAM, in addition to the man / machine interface 26, the switcher process 27, each flow management process 28 to 31, and the library 32 (administration module), these processes 27 to 31, between they and the library 32 being linked.
Fig. 5 shows an operating flowchart of the switcher process 27.
Step 50 represents the initialization of the switcher process 27 and its loading in memory, for example under the effect of launching the launcher module. In the subsequent step 51, the switcher process 27 creates the self-administered memory 3. It creates a connection with each flow management process 28 to 31. When the user executes a command on the window 26, the switcher process 27 actually receives a multitrack flow sequence (s) in the form of a conventionally designated chronogram. "list of editions". This reception is shown schematically by step 52 figure 5.
It then executes, during step 53, the analysis of this list of editions and opens a loop on the different editions, that is to say on the different tracks to be treated.
The switcher process 27 records (step 54), in the administration area of the self-administered memory 3, one or more lines of memory, including in general at least one source memory line and / or at least one destination memory line. The switcher process 27 creates at least one memory line for each track (source or destination) to be processed. It should be noted that the same memory line can act as source and destination for the data to be processed.
For example, it creates a memory line for receiving a source video track and a source memory line for receiving an audio track that must be processed in parallel, and / or one or more destination memory line (s) for receiving the processing result. through the active flow management process.
This analysis step 53 enables the switcher process 27 to define the number of memory lines, the maximum memory size of each memory line, and the sequence of use of the buffers synchronized on each memory line, and this according to the predefined constraints. by the application program that provides the multitrack stream to be processed to the switcher process 27. In the example, this application program consists of the man / machine interface 26. The analysis step 53 is in particular launched when the user places a file in the chronographic display area 21 by means of its pointer device, which has the effect of providing the switcher process 27 with requests and parameters corresponding to the multitrack stream to be processed. Upon receipt of such a request When editing a multitrack stream, the routing process 27 determines in a first place whether the processing to be performed consists of an edition or, conversely, an acquisition.
Case of an edition:
According to the parameters transmitted by the application program 26, the switcher process 27 determines whether the edition must be filtered and / or displayed and / or recorded and determines the sequence of use of the synchronized buffers for each memory line to be created, corresponding to reality to the sequence of intervention of the different flow management processes that must be active on each track of the multitrack flow.
The parameters taken into account are: - a file "editions list" (edl), - a file "list of files" (edl file), - a file "list of filters" (edl of filter).
For each edition, that is to say each track, of the list of editions, the switcher process 27 determines the format of the data, that is to say in particular the audio / video standard in which they are recorded, and determines the size of the edition (i.e., of the track) relative to the maximum size of the different editions of the sequence, to determine the percentage of useful area of RAM that can be allocated to each memory line corresponding to each track.
The switcher process 27 then creates a source memory line for each audio track and a source memory line for each video track, and calculates and formats the parameters for the loading process, namely the identification of the different memory lines used and the corresponding usage sequences.
The switcher process 27 then determines whether each edition, i.e. each track, should be filtered or not. If so, the switcher process 27 extracts from the filter file sent in parameters the filter or filters relating to the track to be filtered, and checks the number of input / output, then creates as many memory lines as there are output for the filter (s) to be applied. The switcher process 27 then prepares and formats the parameters for the filtering process, namely the identification of the different audio and video source memory lines and the different destination memory lines of the track.
The switcher process 27 then examines whether or not the track should be viewed. If so, and if the track has also been filtered, the switcher process 27 uses the destination memory lines identified for the filtering process. If the track is to be viewed without filtering, the switcher process 27 sends the previously created audio and video source memory lines to the visualization process. It should be noted that in this case, the source memory lines also act as destination memory lines. The switcher process 27 then calculates and formats the parameters for the visualization process (memory lines and usage sequences).
The switcher process 27 then determines whether or not the edit stream should be recorded. If so, and if the stream has been filtered, the switcher process 27 uses destination memory lines of the filtering process. If the stream is to be recorded without filtering, the switcher process 27 sends the audio and video source memory lines to the registration process. Again, it calculates and formats parameters for the registration process (memory lines and usage sequences).
Case of an acquisition:
Based on the parameters received from the application program, the switcher process 27 determines whether the acquisition is viewed and recorded and calculates the corresponding synchronized buffer usage sequence.
The parameters are: - a file "list of acquisition editions" (edl acquisition), - a file "list of files" (edl file).
For each edition of the edition list transmitted to the switcher process 27, the latter determines the format of the data (standard audio / video), and calculates the size of the acquisition edition relative to the maximum size of the different tracks of each multi-track stream of the sequence to be acquired, so as to determine the percentage of useful areas of the self-administered memory that can be used by each memory line.
In the case where the switcher process 27 then detects the presence of audio tracks in the list of acquisition editions, it creates an acquisition memory line for each corresponding audio track. Similarly, when the switcher process 27 detects the presence of video tracks in the list of acquisition editions, it creates an acquisition memory line for each corresponding video track.
The switcher process 27 then determines and formats the parameters for the acquisition process, including the identification of the different memory lines and their sequence of use.
The switcher process 27 then determines whether the editing is to be viewed or not. If so, it prepares the corresponding parameters (acquisition memory lines) for the visualization process. Then, the switcher process 27 determines and formats the parameters for the registration process.
The analysis step 53 and the step 54 for creating the memory lines described above are only non-limiting examples and many other forms of analysis may be provided, depending on the applications of the device according to the invention. .
The next step 55 is to open a loop on the different flow management processes 28 to 31 loaded into memory. For each of these processes, it is performed in step 56 a test to determine if this flow management process 28 to 31 may be concerned by the track to be treated. If so, the switcher process 57 sends the memory lines and the synchronization information (usage sequence) corresponding to the first flow management process concerned, in step 57. If not, the process loops back to pass to the next flow management process. After step 57, a test 58 is executed to complete the loop, i.e., to know if this was the last flow management process in the usage sequence. If this is not the case, we proceed to the next flow management process. If this is the case, we run a test 59 to find out if the treated track was the last one. If this is not the case, it loops back to step 53 to rerun steps 54 to 58 on the next track. If this was the last track, the first phase of analysis of the multitrack flow sequence (s) to be processed is completed, and we proceed to a subsequent phase of execution comprising first a step 60 of initialization of the switcher process 27, then reception during step 61 of a command from the user, that is to say from the application program controlled by the user (human / machine interface 26), and then, in step 62, an action is sent to each flow management process 28 to 31 to trigger the operation of these flow management processes, and this in a synchronized manner with each other.
Figure 6 shows the flowchart of a flow management process controlled by the sender process 27. In Figures 5 and 6, the links between the two flowcharts are represented by the letters A and B.
Step 63 corresponds to the launch of the flow management process, followed by the step 64 of attaching this flow management process to the self-administered memory 3, that is to say to the state " READY "shown in FIG.
In the subsequent step 65, the flow management process may receive a list of edits (a multitrack flow sequence) sent to it by the switcher process 27 at the end of step 57 of this switcher process. 27. If the flow management process then receives an action at step 66 from the switcher process 27 (following step 62 of sending action of this switcher process 27), the management process flow opens a step 67 opening loop which allows to browse each track in the list each corresponding to a memory line. Following this step 67, it performs a test 68 to determine whether the requested action and the function it performs corresponds or not to the creation of one or more buffer (s) synchronized (s) in the useful area 5 3.Done in the negative, the flow management process executes a synchronized buffer synchronization step 69 of the self-administered memory 3. It then performs a test 70 to determine whether this synchronized buffer is or is not available on the source memory line.
It should be noted that the synchronized buffer on which the flow management process is positioned is determined in advance in the memory line by the switcher process 27, and this data is known from the flow management process.
As long as the synchronized buffer is not available as determined by test 70, the flow management process returns to step 69 waiting. When the synchronized buffer becomes available, the flow management process executes the subsequent step 71 of processing the data in this synchronized buffer.
Also, if the test 68 determines that the flow management process should create a synchronized buffer, then step 72 of creating this synchronized buffer is executed, and then the process proceeds to step 71 of data processing in the synchronized buffer. synchronized buffer thus created.
The flow management process creates a synchronized buffer when it is the first flow management process to occur on a memory line to be processed. After executing the data processing step 71, the flow management process releases the synchronized buffer in step 73 to make it available for the flow management process to then operate on that synchronized buffer. After this step 73 of release of the synchronized buffer, the flow management process ends the loop of the different streams of the list through the test 74 which, after having processed all the tracks of the list, executes a step 75 of end of processing this list of editions.
The common library 32 makes it possible to define different administration elements which are actually lists, since each administration element contains a reference to the following and previous elements.
A memory fragment type administration element is further defined by its start offset with respect to the base address of the useful area 5 of the self-administered memory 3, its end offset with respect to the address. of this useful area 5 of the self-administered memory 3 and its size.
An element of type memory line or "TRACK" is further defined by an identifier, a list of synchronized buffers associated with it and by its size.
A memory buffer type administration element or "BUFFER" is further defined by its identifier, its address in memory (offset with respect to the start address of the useful area 5 of the memory), its size, a sequence of use (or transition table), and a variable representing its state.
The administration zone 4 is divided into administration buffers where the administration elements (memory lines, memory buffers or free memory fragments) will be defined.
When requesting the creation of a memory line or a memory buffer, the administration module 32 converts a free administration element into a memory line or memory buffer type element.
In the case of a conversion to a memory line type element, the switcher process 27 defines the usage sequence according to the processing constraints of the multitrack stream and in particular according to the different flow management processes that will be necessary for this processing.
In the case of a conversion of an element into a memory buffer, the administration module 32 retrieves a fragment of the free useful area 5 from the list of free memory fragments, and this according to the desired size for this stamp. Three cases can occur:
1) If the free memory fragment is smaller than the size of the desired memory buffer, the administration module will retrieve the next free memory fragment and restart the test. If it does not have a free memory fragment, an error is returned to the creative flow management process (the process then makes several successive requests waiting for the release of a zone by another process).
2) If the free memory fragment has the same size as the desired buffer size, assigning the fragment start value to the address value of the memory buffer, and deleting the free memory fragment from the free memory fragment list in the administration area 4.
3) If, on the other hand, the memory fragment is larger than the size of the desired memory buffer, the fragment start value is assigned to the address value of the buffer and the free memory fragment is reduced to the size allocated to the buffer.
Then, the state of the memory buffer is initialized to the value corresponding to a number identifying the active flow management process on this buffer.
When releasing a buffer synchronized by a flow management process, the state will change according to the usage sequence defined for this synchronized buffer (either return to the initial state or change to the next state , the latter case causing the availability of the synchronized buffer for the subsequent flow management process, either deleting the buffer in the case where it would be the last flow management process in the usage sequence).
If the release of the synchronized buffer involves its deletion, the administration module 32 converts the latter to a free memory fragment, and is added after the list of free memory fragments in the administration area 4. Next , it defragments the useful area of the memory by verifying that the released synchronized buffer is or is not adjacent to one or two free memory fragments.
When requesting access from a synchronized buffer by a flow management process, the following checks are made before giving access to the synchronized buffers: - does the memory line exist? - does the synchronized buffer exist? - is the synchronized buffer available for the flow management process (checking its current state)? If the synchronized buffer is available for this flow management process, the synchronized buffer address is returned to the flow management process that can use it. Otherwise, a code indicates the status of the synchronized buffer.
The flow management process has the ability to request access to a memory buffer asynchronously (useful for a verification process), that is, it can retrieve a memory buffer regardless of the state of the last.
It should be noted that such a self-administered memory management method implemented in a device according to the invention can be implemented in any computer language that supports dynamic memory allocation and shared memory management. It should also be noted that the descriptive data contained in a memory buffer may vary. For example, the identifiers (memory buffer or memory line) consisting of integers can be replaced by character strings. FIGS. 8 and 9 illustrate an example of a particular application. It should be noted that this example does not correspond to not strictly to the example of implementation shown in FIG. 4. In FIG. 8, an example of a chronogram of two successive audiovisual streams is represented, namely a sequence in the MPEG2 format that lasts 3 seconds and which comprises a video track VI and an audio track A1, followed by a DV sequence, which also lasts 3 seconds, also comprising a video track VI and an audio track A1. FIG. 9 schematically represents the processing of these streams by the self-administered memory 3 in accordance with FIG. 'invention. The editing list 90 is provided to the switcher process 27. In the example shown, the following flow management processes are provided: a loading process PGF1, a video viewing process PGF4, a listening audio process PGF5, a PGF2 MPEG 2 decompression process, and a PFG3 decompression process DV.
In the example shown, each flow management process uses at least one source memory line and at least one destination memory line. The LMO memory line as a source means that the flow management process is synchronized buffer creator (and first participant of the usage sequence) and does not receive data from a memory line (eg loading process) . Similarly, the LMO memory line as a destination means that the flow management process is the last participant in the usage sequence on a synchronized buffer.
The switcher process 27 defines in the administration zone 4 with the aid of the library 32, six memory lines, LM1, LM2, LM3, LM4, LM5, LM6 with, for each of them, its maximum size and its start address. For example, the maximum size for the memory line LM1 and for the memory line LM4 is 10% of the useful area 5 of the self-administered memory 3. And the maximum size of the memory lines LM2, LM3, LM5 and LM6 is 20% of the useful area 4 of the self-administered memory 3.
Each buffer-flow management process synchronized to a destination memory line also defines synchronized buffers such as TM1, TM2 ..., and records in the administration area 4 their size, number, address, and their sequence. use, and their current state, all using the library 32.
There is shown in the useful area 5 of the self-administered memory 3 the different memory lines LM1 to LM6 and the nature of the data that are processed there. The synchronization data that is addressed by the sender process 27 to each of the flow management processes that identify the source and destination memory lines and the synchronization information (usage sequences and / or synchronized buffer identification) are also shown. .
In the example shown, the switcher process 27 provides to the first flow management process (PGF1) which is the loading process, the information 95 including the number of the source memory line, which in the example is LMO, and the number of the destination memory line and the sequence of use of the synchronized buffers of this destination memory line. For the first edition list (MPEG2 sequence), the destination memory line is LM1 and the usage sequence is 1.2, which means that the flow management processes PGF1 and PGF2, successively, will have to intervene successively on the data from the memory line LM1 for the processing of this stream. For the second edition list (DV sequence), the source memory line is LMO, the destination memory line is LM4 and the usage sequence is 1.3. which means that the processes PGF1 and PGF3 will intervene successively.
The loading process PGF1 is the creator of synchronized buffers since it has to load the data of the source memory line into the useful area 5 of the memory. The loading PGF1 process therefore creates the necessary synchronized buffers. Typically, in the example shown, thirty synchronized buffers per second of the stream must be created. Thus, the loading process PGF1 uses successively ninety synchronized buffers TM1, TM2, ..., TM90 for the MPEG2 sequence on the destination memory line LM1. To do this, he creates a first TM1 synchronized buffer, loads data from the MPEG2 sequence, and then releases the TM1 buffer. The administration module 32 then allows the subsequent active flow management process to intervene, that is to say the PGF2 process which performs MPEG2 decompression. The loading process repeats these operations successively on the ninety synchronized buffers. TM1 to TM90.
Previously, the switcher process 27 provided the information 96 to the subsequent flow management process PGF2. In this way, this process PGF2 knows that it must intervene on a source memory line LM1, and on the destination memory lines LM2 with the sequence of use 2, 4 (PGF2 then PGF4) and LM3 with the sequence of use 2, 5 (PGF2 then PGF5), for synchronized buffers starting at synchronized buffer TM1 up to synchronized buffer TM90. Thus, this example shows that, thanks to the invention, several flow management processes are active simultaneously on different synchronized buffers, and this, in a perfectly synchronized manner.
The process PGF2 can thus use the memory line LM2 for the video track coming from the stream MPEG2 and the memory line LM3 for the audio track coming from the stream MPEG2. It successively loads and releases the synchronized buffers of these two memory lines with the appropriate data, as described above for the PGF1 process. The administration module 32 then makes it possible to use the buffers synchronized by the video management flow management process PGF4 of the memory line LM2 as the successive release of these synchronized buffers. the same way, the successive use of the buffers of the LM3 memory line by the audio listening process PGF5.
Again, the switcher process 27 previously provided the information 97 and 98 respectively to these PGF4, PGF5 processes. In this way, these two processes know that the source memory lines LM2 and LM3 must be processed, and that the destination memory line is LMO, which means that these processes PGF4, PGF5 are the last speakers on the corresponding usage sequence. to the MPEG2 stream.
The device according to the invention thus makes it possible in the given example to read simultaneously, from an MPEG2 stream, an audio track and a video track in a perfectly synchronized manner.
In addition, the PFG1 process loads data into memory while the PGF2 and PGF3 processes read and decompress data from the memory. It is indeed an advantage of the invention to allow several processes to use the memory in writing and / or reading simultaneously.
The same type of operation takes place for the processing of the second stream in DV format. As it is loaded into the synchronized buffers of the LM4 memory line successively, the usage sequence allows the activation of the DV decompression flow management process PGF3. The latter receives the data from each synchronized buffer of the memory line LM4 in the DV format and decompresses and loads this uncompressed data into the synchronized buffers successively of the two memory lines LM5 with the usage sequence 3, 4 (PGF3 then PGF4) and LM6 with the sequence of use 3, 5 (PGF3 then PGF5) video, respectively audio.The switcher process 27 had communicated the information 99 to the flow management process PGF3 to indicate the identification of the source and destination memory lines, the sequences as well as the synchronized start and end buffer numbers (TM91 and TM180).
It should be noted that, with a device according to the invention, the synchronized buffers TM1 to TM90 or TM91 to TM180 created on the same memory line do not necessarily correspond to contiguous spaces in the useful area 5 of the self-administered memory . This results in a much more flexible and effective management of this useful area 5, whose capabilities are greatly improved over previous devices, in which such a use of disjoint buffers for the same process and / or for the treatment of the same data flow is not possible. But, the memory lines represent an abstraction of attachment and continuation of the synchronized buffers.
As can be seen, the different flow management processes receive from the switcher process 27, the entirety of the synchronization information and do not communicate with each other. They are synchronized from this information, and by the administration module 32. Only the PGF1, PGF2, PGF3 flow management processes that create synchronized buffers in the memory lines receive the corresponding usage sequences, and record them in the administration area 4 with the memory lines and the identifier of the corresponding synchronized buffers.
Of course, the example shown in Figures 8 and 9 is not limiting and many other possibilities are offered. For example, two video sequences in uncompressed format, can be read simultaneously on the same screen, separated into two distinct parts with the device according to the invention.
Thus, it suffices to provide a track of the type, for example FI, performing filtering consisting in embedding one image in another and applying a flow management process corresponding to this incrustation simultaneously on the two sequences read in parallel. The switcher process 27 may define three memory lines, namely a source memory line for each of the video sequences to be read, and a third destination memory line to receive the result of the overlay that will be provided to the video viewing process. Many other examples are possible.

Claims (14)

REVENDICATIONS 1/ - Dispositif comprenant : - des moyens à microprocesseur(s) et mémoire(s) vive(s) aptes à exécuter au moins un système d'exploitation et au moins un programme applicatif de traitement de données, - au moins une mémoire vive virtuelle, adaptée pour pouvoir être utilisée en tant que mémoire vive de travail pour au moins un programme applicatif, dont l'un au moins est adapté pour le traitement d'au moins un flux de données numériques, dit flux multipiste, comprenant une pluralité de pistes lues et/ou écrites et/ou traitées en parallèle, caractérisé en ce que : a) il comprend des moyens, dits moyens de configuration, adaptés pour configurer le dispositif avec : une zone de mémoire virtuelle, dite mémoire autoadministrée (3), réservée et dédiée au traitement de flux multipistes, cette mémoire auto-administrée comprenant une zone d'administration (4) dédiée à l'administration de la mémoire auto-administrée, et une zone utile (5) pour le traitement des données, un processus fonctionnel, dit processus aiguilleur (27), adapté pour pouvoir être chargé en mémoire vive, et définir et enregistrer dans la zone d'administration (4), au moins une ligne mémoire destinée à contenir une liste de tampons dits tampons synchronisés, de la zone utile (5) de la mémoire autoadministrée, une pluralité de processus fonctionnels, dits processus de gestion de flux (28-31 ; PGF1-PGF5), adaptés pour pouvoir être chargés en mémoire vive et, avec au moins une ligne mémoire, créer et/ou utiliser au moins un tampon synchronisé dans cette ligne mémoire, pour exécuter au moins une tâche sur des données d'un flux multipiste, puis libérer ce tampon synchronisé, b) le processeur aiguilleur (27) est adapté pour : * déterminer, en fonction de contraintes de traitement prédéfinies pour chaque flux multipiste à traiter, une séquence d'utilisation des tampons synchronisés d'au moins une ligne mémoire par chaque processus de gestion de flux, dit processus actif, concerné par le traitement dudit flux multipiste, * transmettre à chaque processus actif, la (les) ligne(s) mémoire(s) dans laquelle (lesquelles) il doit créer et/ou utiliser des tampons synchronisés, c) il comprend un module d'administration (32) adapté pour réaliser la synchronisation de l'utilisation successive des tampons synchronisés de chaque ligne mémoire par les processus actifs en fonction de la séquence d'utilisation déterminée par le processus aiguilleur (27). 2/ - Dispositif selon la revendication 1, caractérisé en ce que le module d'administration (32) est lié au processus aiguilleur (27) et à chaque processus de gestion de flux, et rassemble des fonctions communes de gestion de la mémoire auto-administrée (3). 3/ - Dispositif selon l'une des revendications 1 ou 2, caractérisé en ce que le module d'administration (32) est adapté pour déterminer, lors de la libération par un processus de gestion de flux d'un tampon synchronisé, le processus de gestion de flux subséquent défini dans la séquence d'utilisation, et à défaut, pour supprimer le tampon synchronisé. 4/ - Dispositif selon l'une des revendications 1 à 3, caractérisé en ce que chaque processus de gestion de flux (28-31 ; PGF1-PGF5) est adapté pour traiter les données à chaque instant avec un unique tampon synchronisé d'une ligne mémoire, puis pour libérer ce tampon synchronisé en fin de traitement, l'utilisation de différents tampons synchronisés d'une ligne mémoire par chaque processus de gestion de flux s'effectuant successivement, les uns après les autres, de sorte que plusieurs processus de gestion de flux peuvent être actifs simultanément sur des tampons synchronisés différents. 5/ - Dispositif selon l'une des revendications 1 à 4, caractérisé en ce que le module d'administration (32) est une librairie de fonctions qui comprend les fonctions suivantes : - création de la zone d'administration (4) et de la zone utile (5) de la mémoire auto-administrée (3), - initialisation d'une ligne mémoire avec un taux de remplissage maximum de la zone utile (5) pour cette ligne mémoire, - création d'un tampon synchronisé dans une ligne mémoire, - libération d'un tampon synchronisé, - accès à un tampon synchronisé par un processus actif, - détermination du processus actif subséquent sur la séquence d'utilisation d'un tampon synchronisé d'une ligne mémoire après libération de ce dernier par le processus actif précédent. 6/ - Dispositif selon l'une des revendications 1 à 5, caractérisé en ce que le processus aiguilleur (27) est adapté pour définir, pour chaque piste de chaque flux multipiste à traiter, au moins une ligne mémoire dédiée au traitement de cette piste. 7/ - Dispositif selon la revendication 6, caractérisé en ce que le processus aiguilleur (27) est adapté pour définir, pour chaque piste de chaque flux multipiste à traiter et pour chaque processus de gestion de flux traitant des données de cette piste, au moins une ligne mémoire source fournissant des données à traiter par le processus de gestion de flux et/ou au moins une ligne mémoire destination recevant des données traitées par le processus de gestion de flux. 8/ - Dispositif selon l'une des revendications 1 à 7, caractérisé en ce que le processus aiguilleur (27) est adapté pour définir une et une seule séquence d'utilisation pour tous les tampons synchronisés d'une même ligne mémoire.1 / - Device comprising: - microprocessor means (s) and memory (s) live (s) capable of executing at least one operating system and at least one application program for data processing, - at least one memory virtual voucher, adapted to be used as working memory for at least one application program, at least one of which is adapted for processing at least one digital data stream, said multitrack stream, comprising a plurality tracks read and / or written and / or processed in parallel, characterized in that: a) it comprises means, said configuration means adapted to configure the device with: a virtual memory area, said self-administered memory (3) , reserved and dedicated to the treatment of multitrack streams, this self-administered memory comprising an administration zone (4) dedicated to the administration of the self-administered memory, and a useful area (5) for the tr a data processing, a functional process, said switcher process (27), adapted to be loaded in RAM, and define and record in the administration area (4), at least one memory line for holding a list of buffers said synchronized buffers, the useful area (5) of the self-administered memory, a plurality of functional processes, said flow management processes (28-31; PGF1-PGF5), adapted to be loaded into RAM and, with at least one memory line, to create and / or use at least one synchronized buffer in this memory line, to execute at least one task on data of a stream multi-track, then release this synchronized buffer, b) the routing processor (27) is adapted to: * determine, according to predefined processing constraints for each multitrack stream to be processed, a sequence of use of the synchronized buffers of at least one line memory by each flow management process, said active process, concerned with the processing of said multitrack stream, * transmit to each active process, the line (s) memory (s) in which (he) it must create and / or use synchronized buffers, c) it comprises an administration module (32) adapted to synchronize the successive use of the synchronized buffers of each memory line by the act processes ifs according to the sequence of use determined by the switcher process (27). 2 / - Device according to claim 1, characterized in that the administration module (32) is related to the switcher process (27) and to each flow management process, and brings together common functions of management of the memory. administered (3). 3 / - Device according to one of claims 1 or 2, characterized in that the administration module (32) is adapted to determine, upon release by a flow management process of a synchronized buffer, the process subsequent flow management defined in the usage sequence, and failing this, to delete the synchronized buffer. 4 / - Device according to one of claims 1 to 3, characterized in that each flow management process (28-31; PGF1-PGF5) is adapted to process the data at each moment with a single synchronized buffer of a memory line, then to release this synchronized buffer at the end of processing, the use of different synchronized buffers of a memory line by each flow management process is performed successively, one after the other, so that several processes of Flow management can be active simultaneously on different synchronized buffers. 5 / - Device according to one of claims 1 to 4, characterized in that the administration module (32) is a library of functions which comprises the following functions: - creation of the administration zone (4) and the useful area (5) of the self-administered memory (3), - initialization of a memory line with a maximum filling rate of the useful area (5) for this memory line, - creation of a synchronized buffer in a memory line, - release of a synchronized buffer, - access to a buffer synchronized by an active process, - determination of the subsequent active process on the sequence of use of a synchronized buffer of a memory line after release of the latter by the previous active process. 6 / - Device according to one of claims 1 to 5, characterized in that the switcher process (27) is adapted to define, for each track of each multitrack stream to be processed, at least one memory line dedicated to the processing of this track . 7 / - Device according to claim 6, characterized in that the switcher process (27) is adapted to define, for each track of each multitrack stream to be processed and for each flow management process processing data of this track, at least a source memory line providing data to be processed by the flow management process and / or at least one destination memory line receiving data processed by the flow management process. 8 / - Device according to one of claims 1 to 7, characterized in that the switcher process (27) is adapted to define a single sequence of use for all synchronized buffers of the same memory line. 9/ - Dispositif selon l'une des revendications 1 à 8, caractérisé en ce que le processus aiguilleur (27) est adapté pour transmettre la séquence d'utilisation de chaque ligne mémoire au premier processus de gestion de flux devant être actif sur un tampon synchronisé de cette ligne mémoire, ce processus de gestion de flux étant créateur de ce tampon synchronisé et définissant et enregistrant dans la zone d'administration (4) des données identifiant ce tampon synchronisé et l'associant à la ligne mémoire, et à la séquence d'utilisation. 9 / - Device according to one of claims 1 to 8, characterized in that the switcher process (27) is adapted to transmit the sequence of use of each memory line to the first flow management process to be active on a buffer synchronized with this memory line, this flow management process being the creator of this synchronized buffer and defining and recording in the administration zone (4) data identifying this synchronized buffer and associating it with the memory line, and with the sequence use. 10/ - Dispositif selon l'une des revendications 1 à 9, caractérisé en ce que le processus aiguilleur (27) est adapté pour calculer, en fonction de la nature de chaque flux multipiste à traiter, une taille maximum de la zone utile (5) de la mémoire auto-administrée (3) pouvant être donnée à chaque ligne mémoire.10 / - Device according to one of claims 1 to 9, characterized in that the switcher process (27) is adapted to calculate, depending on the nature of each multitrack stream to be processed, a maximum size of the useful area (5). ) of the self-administered memory (3) that can be given to each memory line. 11/ - Dispositif selon l'une des revendications 1 à 10, caractérisé en ce que les processus de gestion de flux (28-31 ; PGF1-PGF5) sont distincts, chacun d'eux exécutant au moins une tâche qui lui est propre.11 / - Device according to one of claims 1 to 10, characterized in that the flow management processes (28-31; PGF1-PGF5) are distinct, each of them performing at least one task of its own. 12/ - Dispositif selon l'une des revendications 1 à 11, caractérisé en ce qu'il comprend au moins un programme applicatif, dit module lanceur, adapté pour charger en mémoire vive les différents processus et modules permettant la configuration et le fonctionnement de la mémoire auto-administrée dont :12 / - Device according to one of claims 1 to 11, characterized in that it comprises at least one application program, said launcher module, adapted to load in the RAM the various processes and modules for the configuration and operation of the self-administered memory of which: - le processus aiguilleur (27),- the switcher process (27), - chaque processus de gestion de flux susceptible d'être utilisé pour le traitement de flux multipistes,each stream management process that can be used for processing multitrack streams, - le module d'administration (32),the administration module (32), - un module (26) de fenêtrage dynamique sur un écran d'affichage du dispositif, adapté pour pouvoir former une interface homme/machine permettant à un utilisateur de définir chaque flux multipiste à traiter à partir de données sources d'origines diverses.a module (26) for dynamic windowing on a display screen of the device, adapted to form a human / machine interface allowing a user to define each multitrack stream to be processed from source data of various origins. 13/ - Dispositif selon l'une des revendications 1 à 12, caractérisé en ce qu'il comprend :13 / - Device according to one of claims 1 to 12, characterized in that it comprises: - au moins un processus de gestion de flux, dit processus de chargement, apte à écrire des données en zone utile (5) de la mémoire auto-administrée ,at least one flow management process, referred to as the loading process, capable of writing data in the useful zone (5) of the self-administered memory, - au moins un processus de gestion de flux, dit processus de déchargement, apte à lire des données depuis la zone utile (5) de la mémoire auto-administrée .- At least one flow management process, said unloading process, able to read data from the useful area (5) of the self-administered memory. 14/ - Dispositif selon l'une des revendications 1 à 13, caractérisé en ce que les processus de gestion de flux sont adaptés pour pouvoir être chargés en une zone de mémoire vive distincte de la mémoire auto-administrée (3).14 / - Device according to one of claims 1 to 13, characterized in that the flow management processes are adapted to be loaded into a RAM area separate from the self-administered memory (3). 15/ - Dispositif selon l'une des revendications 1 à 14, caractérisé en ce que le processus aiguilleur (27) est adapté pour pouvoir être chargé en une zone de mémoire vive distincte de la mémoire auto-administrée (3).15 / - Device according to one of claims 1 to 14, characterized in that the switcher process (27) is adapted to be loaded into a RAM area separate from the self-administered memory (3). 16/ - Dispositif selon l'une des revendications 1 à 15, caractérisé en ce que le processus aiguilleur (27) est adapté pour :16 / - Device according to one of claims 1 to 15, characterized in that the switching process (27) is suitable for: - dans une première étape d'analyse, analyser les caractéristiques de chaque flux multipiste à traiter et les contraintes de traitement de chaque flux multipiste, de façon à définir les données représentant les lignes mémoires, et des données représentant chaque séquence d'utilisation des tampons synchronisés de chaque ligne mémoire pour le traitement de ce flux multipiste à traiter,in a first analysis step, analyzing the characteristics of each multitrack stream to be processed and the processing constraints of each multitrack stream, so as to define the data representing the memory lines, and data representing each sequence of use of the buffers synchronized each memory line for processing this multitrack stream to be processed, - puis dans une deuxième étape subséquente de traitement, lancer le traitement du flux multipiste selon lesdites données définies préalablement lors de l'étape d'analyse.- Then in a second subsequent processing step, start the processing of the multitrack stream according to said data previously defined during the analysis step. 17/ - Dispositif selon l'une des revendications 1 à 16, caractérisé en ce que la taille de la mémoire auto-administrée (3) est définie par les moyens de configuration à une valeur fixe prédéterminée.17 / - Device according to one of claims 1 to 16, characterized in that the size of the self-administered memory (3) is defined by the configuration means to a predetermined fixed value. 18/ - Dispositif selon la revendication 17, caractérisé en ce que la taille de la mémoire auto-administrée (3) est comprise entre 20 % et 80 % de celle de la mémoire virtuelle.18 / - Device according to claim 17, characterized in that the size of the self-administered memory (3) is between 20% and 80% of that of the virtual memory. 19/ - Dispositif selon l'une des revendications 1 à 18, caractérisé en ce que la taille de la zone d'administration (4) est définie par les moyens de configuration à une valeur fixe prédéterminée.19 / - Device according to one of claims 1 to 18, characterized in that the size of the administration zone (4) is defined by the configuration means to a predetermined fixed value. 20/ - Dispositif selon l'une des revendications 1 à 19, caractérisé en ce que la mémoire auto-administrée (3) est définie par le processus aiguilleur (27) lors de son chargement en mémoire vive.20 / - Device according to one of claims 1 to 19, characterized in that the self-administered memory (3) is defined by the switcher process (27) during its loading in RAM. 21/ - Dispositif selon l'une des revendications 1 à 20, caractérisé en ce que les moyens de configuration sont adaptés pour permettre le traitement de flux multipistes qui sont des flux audiovisuels.21 / - Device according to one of claims 1 to 20, characterized in that the configuration means are adapted to allow the processing of multitrack streams that are audiovisual streams. 22/ - Dispositif selon l'une des revendications 1 à 21, caractérisé en ce que les moyens de configuration sont adaptés pour permettre le traitement de flux multipistes ayant des pistes dont le format est choisi parmi : - les formats de télévision haute définition (TVHD),22 / - Device according to one of claims 1 to 21, characterized in that the configuration means are adapted to allow the processing of multitrack streams having tracks whose format is selected from: - HDTV formats (HDTV) ) - les formats de télévision de définition standard (TVSD),- standard definition television formats (TVSD), - les formats de cinéma numérique,- digital cinema formats, - les formats vidéo compressés (MPEG2, MPEG4, DV...),- compressed video formats (MPEG2, MPEG4, DV ...), - les formats audio non compressés,- uncompressed audio formats, - les formats audio compressés,- compressed audio formats, - les formats d'encapsulation multipiste,- multitrack encapsulation formats, - les formats d'images,- image formats, - les formats de données audiovisuelles brutes.- raw audiovisual data formats.
FR0401889A 2004-02-25 2004-02-25 SELF-ADMINISTERED SHARED VIRTUAL MEMORY DEVICE FOR MANAGING AT LEAST ONE MULTIPIST DATA STREAM Expired - Fee Related FR2866729B1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
FR0401889A FR2866729B1 (en) 2004-02-25 2004-02-25 SELF-ADMINISTERED SHARED VIRTUAL MEMORY DEVICE FOR MANAGING AT LEAST ONE MULTIPIST DATA STREAM
ES05729304.5T ES2616309T3 (en) 2004-02-25 2005-02-17 Self-managed shared virtual memory device to manage at least one multi-track data stream
EP05729304.5A EP1719054B1 (en) 2004-02-25 2005-02-17 Virtual self-administrated shared memory device for managing at least one multi-track data stream
PCT/FR2005/000364 WO2005093570A1 (en) 2004-02-25 2005-02-17 Virtual self-administrated shared memory device for managing at least one multi-track data stream
US11/065,092 US20050198448A1 (en) 2004-02-25 2005-02-25 Self-administered shared virtual memory device, suitable for managing at least one multitrack data flow

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0401889A FR2866729B1 (en) 2004-02-25 2004-02-25 SELF-ADMINISTERED SHARED VIRTUAL MEMORY DEVICE FOR MANAGING AT LEAST ONE MULTIPIST DATA STREAM

Publications (2)

Publication Number Publication Date
FR2866729A1 true FR2866729A1 (en) 2005-08-26
FR2866729B1 FR2866729B1 (en) 2006-08-11

Family

ID=34834032

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0401889A Expired - Fee Related FR2866729B1 (en) 2004-02-25 2004-02-25 SELF-ADMINISTERED SHARED VIRTUAL MEMORY DEVICE FOR MANAGING AT LEAST ONE MULTIPIST DATA STREAM

Country Status (2)

Country Link
ES (1) ES2616309T3 (en)
FR (1) FR2866729B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7432832B2 (en) * 2006-01-12 2008-10-07 Hitachi, Ltd. Information processing apparatus and information processing system
CN101315807B (en) * 2007-05-30 2010-04-14 北京芯技佳易微电子科技有限公司 Method for implementing different configurations of random memory
CN101212679B (en) * 2006-12-30 2010-04-14 凌阳科技股份有限公司 AV synchronization method and device for switching multi-channel audio streams during playing of AVI files
CN114138371A (en) * 2021-12-02 2022-03-04 北京天融信网络安全技术有限公司 Configuration dynamic loading method and device, computer equipment and storage medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487167A (en) * 1991-12-31 1996-01-23 International Business Machines Corporation Personal computer with generalized data streaming apparatus for multimedia devices
EP0694847A2 (en) * 1994-07-29 1996-01-31 International Business Machines Corporation Data streaming in a computer system
EP1031927A2 (en) * 1999-02-04 2000-08-30 Sun Microsystems Inc. Protocol for coordinating the distribution of shared memory.

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487167A (en) * 1991-12-31 1996-01-23 International Business Machines Corporation Personal computer with generalized data streaming apparatus for multimedia devices
EP0694847A2 (en) * 1994-07-29 1996-01-31 International Business Machines Corporation Data streaming in a computer system
EP1031927A2 (en) * 1999-02-04 2000-08-30 Sun Microsystems Inc. Protocol for coordinating the distribution of shared memory.

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
W. RICHARD STEVENS: "Chapter 3 - Interprocess Communication", UNIX NETWORK PROGRAMMING, 23 January 1990 (1990-01-23), PRENTICE HALL, NEW JERSEY, pages 87 - 170, XP002291781 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7432832B2 (en) * 2006-01-12 2008-10-07 Hitachi, Ltd. Information processing apparatus and information processing system
CN101212679B (en) * 2006-12-30 2010-04-14 凌阳科技股份有限公司 AV synchronization method and device for switching multi-channel audio streams during playing of AVI files
CN101315807B (en) * 2007-05-30 2010-04-14 北京芯技佳易微电子科技有限公司 Method for implementing different configurations of random memory
CN114138371A (en) * 2021-12-02 2022-03-04 北京天融信网络安全技术有限公司 Configuration dynamic loading method and device, computer equipment and storage medium
CN114138371B (en) * 2021-12-02 2024-02-06 北京天融信网络安全技术有限公司 Configuration dynamic loading method and device, computer equipment and storage medium

Also Published As

Publication number Publication date
FR2866729B1 (en) 2006-08-11
ES2616309T3 (en) 2017-06-12

Similar Documents

Publication Publication Date Title
EP1719054B1 (en) Virtual self-administrated shared memory device for managing at least one multi-track data stream
EP0974896B1 (en) Method for downloading objects or files to update software
CA2216665C (en) Procedure for selecting a recording on a digital audiovisual reproduction system and the system for implementing the procedure
RU2453908C2 (en) Interfaces for processing digital multimedia data
EP2158577B1 (en) Method and device for acquiring, recording and utilizing data captured in an aircraft
KR101693683B1 (en) Virtual database rewind
CA3102192A1 (en) Method implemented by computer for the creation of contents comprising synthesis images
EP1432246B1 (en) MPEG images decoding and reverse display procedure and device, video pilot circuit and decoder including such a device
FR2866729A1 (en) Multi-track audiovisual flow processing device, has administration module that synchronizes successive use of synchronized buffers by different active processes according to usage sequence determined by switching process
JP5762145B2 (en) REPRODUCTION SYSTEM, ITS PROCESSING METHOD, AND PROGRAM
EP1341087B1 (en) Method and system for the management of a personal event journal
US20210064270A1 (en) Method and adevice for downloading resources
US8639897B1 (en) Method to restore application specific content from volume images
FR3076003A1 (en) MULTIPLE ACCESS TO A STOCK DATA FILE IN A DATA STORAGE SYSTEM ASSOCIATED WITH A BUFFER MEMORY SPACE
FR2820846A1 (en) DEVICE AND METHOD FOR MANAGING ACCESS TO A RECORDING MEDIUM
JP2008054312A (en) Multimedia system framework having layer consolidating access to multiple media devices
CN112148917A (en) Media playing control method, device and system and computer readable storage medium
EP3274830A1 (en) Improvement in sending of multimedia streams
EP0407295B1 (en) Method for observing the execution of a program loaded into a computer system and apparatus for implementing said method
CN111309526A (en) File backup and recovery method and device
EP1341093B1 (en) Access to a shared resource
RU2351002C2 (en) Demultiplexer application program interface
EP2353076A1 (en) Method and system for the virtualized storage of a digital data set
TWI408603B (en) Systems and methods for generating a mini-operating system, and computer program products thereof
FR2875926A1 (en) Digital multimedia apparatus e.g. video camera, data flow controlling method for digital video surveillance device, involves segmenting flows into sequences of predefined duration, storing, indexing and subsequently processing sequences

Legal Events

Date Code Title Description
CD Change of name or company name
CA Change of address

Effective date: 20140205

CD Change of name or company name

Owner name: EVS TOULOUSE, FR

Effective date: 20140205

CJ Change in legal form

Effective date: 20140205

PLFP Fee payment

Year of fee payment: 13

PLFP Fee payment

Year of fee payment: 14

ST Notification of lapse

Effective date: 20181031