Brevet FR2896652A1 — publié le 20070727

TABLE DE MIXAGE VIDÉO La présente invention concerne les dispositifs et procédés de mixage vidéo, notamment de plusieurs flux vidéo non compressés. L'invention permet le mélange et la manipulation de flux vidéo en temps réel. Ces flux vidéo sont organisés selon une structure hiérarchisée et manipulés de façon originale en leur appliquant des effets et en les incrustant les uns dans les autres. On connaît depuis la fin des années 80 des dispositifs de mixage vidéo mettant en oeuvre des traitements analogiques sur des signaux analogiques (notamment US 5 027 213 et GB 2 227 903). Ces solutions apparaissent maintenant quelque peu archaïques au regard des promesses qu'offre le traitement numérique : modularité, pluralités de traitements et configuration aisée d'un même matériel. On connaît également, par le brevet EP 0 573 293, un appareil de mixage vidéo à partir d'un signal enregistré et d'un signal graphique généré par une unité de traitement informatique. Cette solution n'est pas appropriée aux utilisations actuelles dans lesquelles il est souhaitable de pouvoir acquérir et combiner, en temps réel, de nombreux flux vidéo. On connaît également, par le brevet US 5 872 565, un système de traitement vidéo en temps réel permettant l'acquisition d'un grand nombre de signaux vidéo et l'application de divers effets à ces signaux. Ce système repose sur la présence de cartes de traitement vidéo, lesquelles sont préparamétrées. L'inconvénient de cette solution est qu'elle réalise une gestion brute des données, nécessitant une grande puissance de calcul pour l'unité de traitement (proportionnellement au nombre d'entrées vidéo) et qu'elle ne permet pas une interaction forte de la part de l'utilisateur pour modifier dans le temps les paramètres de mixage. Les ressources matérielles de l'art antérieur disponibles pour les traitements vidéo sont soit trop spécialisées (carte de traitement vidéo dont la configuration matérielle est dédiée à un nombre restreint de manipulations ou d'opérations) soit trop généralistes (cas d'un processeur d'ordinateur) et pas assez puissantes pour des traitements en temps réel. Un problème de l'art antérieur concerne donc le traitement en temps réel de plusieurs flux vidéo non compressés (c'est-à-dire un traitement pixel par pixel) alors que la puissance de calcul reste limitée. Il ressort ainsi le besoin d'optimiser la gestion des traitements spécifiques et coûteux concernant les pixels des flux vidéo et des traitements plus généraux relatifs à des paramètres ou à des signaux audio. L'invention vise à résoudre ce problème en proposant un dispositif optimisé quant à l'unité de traitement et de calcul. L'optimisation de l'unité de traitement et de calcul repose sur l'utilisation de deux entités de traitement différentes : l'une dédiée à des calculs de paramètres (à partir de signaux externes et/ou d'informations en provenance de l'utilisateur) et l'autre consacrée aux calculs directs des pixels de la vidéo de sortie à partir de ceux des vidéos en entrée. Une application de la présente invention vise notamment les plateformes de mixage vidéo pour des représentations temps réel (en direct), mélangeant audio et plusieurs vidéos. À cet effet, la présente invention a tout d'abord pour objet un dispositif de mixage vidéo comprenant au moins une pluralité de modules d'acquisition de signaux vidéo composés de pixels, une unité de traitement de type réseau logique, par exemple un FPGA (Field-Programmable Gate Array -réseau prédiffusé programmable par l'utilisateur), un processeur, par exemple un DSP (Digital Signal Processor - processeur de signal numérique) et un module de sortie vidéo, dispositif dans lequel : • le processeur est agencé pour recevoir et interpréter des données externes de mixage et pour transmettre des paramètres de calcul audit réseau logique, lesdits paramètres de calcul étant déterminés en fonction desdites données externes de mixage, et • le réseau logique est agencé pour acquérir de façon synchronisée des données numériques desdits pixels en entrée depuis lesdits modules d'acquisition et pour effectuer des opérations de calcul fonction desdits paramètres de calcul sur lesdits pixels acquis, pour la génération et la transmission audit module de sortie vidéo d'un signal vidéo de sortie. On entend par réseau logique, un circuit intégré logique composé de nombreuses cellules logiques élémentaires réalisant des fonctions de calculs numériques. Ces réseaux logiques peuvent être non programmables, type ASIC (Application Specific Integrated Circuit, circuit intégré spécialisé) ou programmables. Dans ce dernier cas, les cellules logiques élémentaires sont librement assemblables et peuvent être reprogrammées après la fabrication du réseau et pendant son utilisation. Ces cellules sont connectées par programmation, afin de réaliser la ou les fonctions numérique(s) voulue(s). Un intérêt de ces réseaux réside dans la possibilité de les configurer pour des tâches ou calculs spécifiques et notamment pour des traitements parallèles au niveau pixel de plusieurs flux vidéo d'entrée, ces traitements étant généralement coûteux en ressources au regard du nombre de données à traiter. On connaît notamment le réseau de type FPGA (field-programmable gate array, réseau de portes programmables in-situ). Le FPGA est programmé en blocs logiques utilisés lors des calculs, ces blocs logiques requerrant des paramètres de calcul : par exemple, le degré de transparence d'une couche vidéo (composante alpha vue ci-après), la rapidité de transition, les effets souhaités, les paramètres d'effet (intensité de déformation, ...), ... On entend par processeur un composant électronique optimisé pour les calculs. Il s'agit généralement d'un processeur associé à un microprogramme exécutable dans lequel des règles de calcul ont été établies. Dans la présente invention, ces règles de calcul concernent principalement la conversion de signaux extérieurs générés par un utilisateur au moyen d'une interface homme-machine (IHM - boutons de sélections, potentiomètres) en des paramètres de calculs pour le FPGA (paramètres de mixage : choix d'un effet visuel plutôt qu'un autre, intensité et durée d'un effet, ...). Le DSP constitue l' intelligence du système car interprète des données, alors que le FPGA ne réalise que des calculs bruts. Il existe un grand nombre de processeurs pour le traitement de données tels que des microprocesseurs, des processeurs ARM (Advanced RISC Machines), des processeurs DSP (Digital Signal Processor - processeur de signal numérique), ... Pour la description ci-après, les termes réseau logique , réseau logique programmable et FPGA sont à entendre comme synonymes. De même, on utilise dans la suite indifféremment les termes processeur(s) et DSP pour désigner le même composant de traitement de la plateforme de mixage vidéo. La séparation des fonctions DSP et FPGA est clé pour l'invention : d'une part, le DSP effectue tous les calculs relatifs aux paramètres d'effets et traitements vidéo (fonction de pilotage du DSP) et d'autre part, le FPGA réalise ces traitements bruts de la vidéo û pixel par pixel û en fonction, notamment des paramètres que lui transmet le DSP (fonction de traitement vidéo du FPGA). FPGA et DSP communiquent via un bus asynchrone ou synchrone, et, parallèle ou série. Cependant, les composants matériels relatifs aux fonctions DSP et FPGA peuvent être réunis sur un même circuit intégré. En outre, il est envisagé qu'une partie du réseau logique soit précâblée en dur pour réaliser les fonctions de DSP. On a du coup un unique composant matériel tout en conservant la même architecture DSP-réseau logique tous deux reliés par un bus. L'architecture modulaire due aux modules d'entrée peut générer des problèmes concernant le déphasage et la désynchronisation des différents signaux vidéo d'entrée. Une synchronisation des vidéos d'entrée est souhaitable pour permettre la lecture synchronisée des données par le FPGA. Celle-ci est réalisée lors de l'acquisition des données de pixels par le FPGA. Ainsi, la lecture d'un même pixel de plusieurs sources au travers des modules d'entrée pour enregistrement en mémoire vive est réalisée de façon synchronisée afin que le FPGA dispose en mémoire vive des mêmes pixels (pixels ayant la même position dans les différentes images sources) sans décalage pour un traitement optimisé en rapidité. Dans ce dessein, lesdits modules d'acquisition comprennent chacun une mémoire de type premier entré, premier sorti FIFO pour le stockage des données numériques desdits pixels acquis et ledit réseau logique est apte à lire simultanément, dans lesdites mémoires, les données numériques correspondant à un même pixel dans lesdits signaux vidéo en entrée. On entend par correspondants deux pixels ayant la même position (mêmes coordonnées) dans deux images différentes, provenant ici de deux signaux vidéo d'entrée différents. Si les images n'ont pas la même dimension une règle de proportionnalité est appliquée pour en déduire le pixel ayant approximativement la même position relative dans l'image (au regard des dimensions générales). Éventuellement, des lois plus élaborées faisant intervenir un ré-échantillonnage de l'image peuvent également être utilisées. Grâce à la présence des mémoires dans les modules d'acquisition, le FPGA a à sa disposition un grand nombre de pixels composant chacune des images acquises. De ce fait, il peut synchroniser la lecture des données du premier pixel de chacune des images de sorte que la lecture des pixels suivants selon le principe de premier entré, premier sorti, est effectuée simplement. Un autre problème que vise à résoudre l'invention est relatif à l'optimisation des ressources fournies par le FPGA et notamment la gestion de la mémoire pour optimiser les cycles de lecture/écriture des données vidéo et le nombre d'entrées/sorties disponibles par le FPGA. En effet, les réseaux logiques programmables économiques sont limités en nombre de broches de connexion. Il apparaît dès lors important d'optimiser l'utilisation de celles-ci permettant ainsi de diminuer les câblages internes et externes au FPGA (c'est-à-dire notamment la complexité de la programmation en VHDL _Very-high-speed integrated circuit Hardware Description Language_ du réseau FPGA) et de connecter d'autres options (par exemple une liaison MIDI_Musical Instrument Digital Interface) sur le FPGA. Une optimisation importante concerne les mémoires pour le stockage des données des pixels en vue des traitements du FPGA. Dans ce dessein, le dispositif peut comprendre, en outre, une pluralité de mémoires vives (SRAM ou SDRAM par exemple) connectées audit réseau logique par l'intermédiaire de bus d'adresses et de données, le nombre de bus d'adresses étant inférieur au nombre de signaux vidéos d'entrée, lesdites mémoires vives étant dédiées chacune à un seul module d'acquisition pour stocker les données numériques de pixels lues par le réseau logique dans lesdites mémoires de type FIFO, ledit réseau logique étant apte à stocker les données numériques de pixels correspondants, sur au moins deux mémoires vives connectées au même bus d'adresse en utilisant une ou plusieurs même(s) adresse(s) mémoire. Chacune des mémoires a son propre bus de données relié au FPGA et éventuellement un bus de contrôle. Un bus d'adresses se trouve commun à plusieurs mémoires. Puisque l'écriture en mémoire est une opération consommatrice de temps et que l'on souhaite disposer d'images en entrée synchronisées, l'utilisation d'une même adresse mémoire pour le stockage des données de pixels correspondants de deux images est envisagé. Ainsi, on mutualise l'écriture en mémoire par la génération d'une (ou plusieurs) même adresse mémoire à plusieurs mémoires vives. On utilise plusieurs adresses mémoires pour un même pixel si les mots binaires des mémoires ne sont pas suffisamment grands pour stocker toutes les données des composantes d'un pixel. Cette optimisation est rendue possible du fait que les temps d'accès aux mémoires en écriture et en lecture permettent un accès en écriture (24,5 ns pour une mémoire SRAM) et plusieurs accès en lecture (12,2 ns par lecture) pendant un cycle d'acquisition d'un pixel (environ 112,5 ns pour les trois composantes d'un signal PAL). Selon la bande passante disponible sur les bus, il est envisagé de disposer de deux mémoires par bus d'adresses afin de disposer de suffisamment de temps pour effectuer toutes les opérations de lecture et écriture pendant une période pixel . Une autre solution consiste à associer un deuxième FPGA u premier afin de fournir le nombre de broches suffisant et des performances équivalentes même si elle n'apparaît pas satisfaisante économiquement parlant. Une optimisation qui peut être complémentaire de celle évoquée précédemment consiste à combiner au sein d'un même mot binaire de mémoire au moins deux composantes de pixel. Cela est particulièrement intéressant pour un signal vidéo au format 4 :2 :2 : on stocke dans un mot mémoire les données Y et Cb d'un premier pixel et les données Y' et Cr du pixel suivant. Dans ce dessein, lesdites mémoires vives sont aptes à stocker des mots binaires de longueur au moins égale à deux fois la longueur des données d'une composante de pixel, et le réseau logique est apte à générer sur ledit bus de données un mot comprenant les données numériques d'au moins deux composantes de pixels correspondants pour stockage dans ladite mémoire vive. Une extension de ce mode de réalisation consiste à utiliser un même mot binaire de mémoire pour stocker toutes les données de plusieurs pixels, par exemple un mot mémoire de 4 octets pour stocker Y-Cr-Cb-Y' de deux pixels consécutifs d'une vidéo 4 :2 :2. Afin d'optimiser au maximum les ressources broches du FPGA au détriment du coût des mémoires vives utilisées, une alternative de réalisation consiste à utiliser une seule mémoire pour l'ensemble des données de pixels des vidéos d'entrée. Ainsi, le dispositif comprend une unique mémoire vive connectée audit réseau logique par l'intermédiaire d'un bus d'adresses et d'un bus de données, la mémoire étant apte à stocker des mots binaires de longueur au moins égale à la longueur des données des composantes d'un pixel multipliée par le nombre de signaux d'entrée, et le réseau logique étant apte à générer un mot comprenant les données numériques des pixels correspondants de tous les signaux d'entrée et à stocker ce mot dans la mémoire vive. Afin de permettre une interaction du dispositif avec un utilisateur en vue de la création artistique d'effets vidéo, ce dispositif comprend, en outre, une interface Homme-Machine IHM connectée audit DSP pour la sélection et la transmission desdites données externes de mixage par un utilisateur. Éventuellement, cette IHM matérielle peut être reliée au FPGA, lequel réalise un traitement/décodage du signal généré afin de transmettre des données exploitables par le DSP. Les signaux issus de cette IHM sont interprétés par le DSP puis traduits en des paramètres, lesquels sont transmis au FPGA pour paramétrer les blocs logiques de traitement. Dans tout dispositif de mixage, aussi bien audio que vidéo, il est intéressant de disposer de voies de prévisualisation (préécouté pour l'audio) pour préparer les effets désirés. Il est ainsi prévu que le dispositif comprend, en outre, un module de sortie vidéo de prévisualisation connecté à un module de commutation, ledit réseau logique étant programmé pour fournir audit module de commutation des données de pixels calculées en différents points desdites opérations, et ledit DSP étant apte à piloter ledit module de commutation en fonction des interactions de l'utilisateur avec ladite IHM. L'utilisateur relie un moniteur au module de sortie vidéo pour visualiser les signaux vidéos créés en différents points de la chaîne de traitement du FPGA. Ce dernier est programmé pour fournir en permanence des données de calculs intermédiaires (en différents emplacements qui auront été déterminés au préalable lors de la programmation ou le câblage du réseau) à un multiplexeur ou commutateur. L'utilisateur interagit avec le commutateur par l'intermédiaire de l'IHM afin de sélectionner et commuter vers une sortie de prévisualisation (convertisseur numérique analogique) les données numériques issues d'un emplacement désiré de la chaîne de traitement du FPGA. Éventuellement, le FPGA peut être programmé pour effectuer des traitements additionnels sur les données prélevées en différents points de la chaîne de calcul afin de proposer des fonctionnalités accrues de prévisualisation : par exemple, fournir un quadra permettant d'afficher simultanément les quatre voies vidéo en entrée. Le mixage vidéo pouvant consister à superposer plusieurs vidéos en jouant sur la transparence des différentes images, il apparaît important pour l'utilisateur de disposer de moyens efficaces pour la sélection d'une hiérarchie d'empilement de ces vidéos. Il est ainsi prévu que ladite interface IHM comprend un clavier bidimensionnel à NxM touches où une dimension représente le nombre de signaux d'entrée vidéo et l'autre dimension le nombre de couches, et dans lequel une seule touche par ligne et par colonne est active pour la fonction d'empilement de couches, ledit DSP étant apte à paramétrer le réseau logique pour la superposition des signaux d'entrée dans le signal de sortie en fonction desdites touches actives dudit clavier. En équipant ces touches d'indicateur lumineux de touches actives pour identifier la position d'une vidéo dans la hiérarchie des couches, il devient ainsi aisé à l'utilisateur de suivre rapidement et efficacement l'évolution de l'empilement. Par exemple, pour quatre vidéos en entrée, on prévoit un clavier 4x4 dont les lignes représentent les couches d'empilement des vidéos et les colonnes représentent les vidéos. À un instant donné, l'utilisateur identifie rapidement quelle vidéo est la plus haute dans l'empilement en déterminant (grâce à l'indicateur lumineux) la colonne correspondant à la touche illuminée de la première ligne. L'appui d'une touche inactive par l'utilisateur provoque la modification de touches actives afin de garantir qu'une seule vidéo est affectée à chacune des couches. La modification peut consister en l'interversion de couche entre la vidéo affectée à une nouvelle couche par l'appui de la touche et la vidéo qui était affectée à cette couche. Mais cette modification peut être plus complexe, par exemple en remontant ou redescendant d'une couche les vidéos qui étaient affectées aux couches intermédiaires entre la nouvelle couche sélectionnée et l'ancienne couche désélectionnée. Dans une variante, il est prévu que l'interversion de deux signaux sur deux couches est réalisée lorsque l'utilisateur sélectionne les deux touches actives relatives à ces deux signaux et couches. Des instruments musicaux électroniques peuvent être associés à la table de mixage comme des interfaces homme- machine ou pour élargir les interactions de la table de mixage. Il existe de nombreux appareils produisant des signaux MIDI, notamment des instruments de musique numériques (guitare, synthétiseur, ...). Un signal audio peut être utilisé comme source de paramètres pour le traitement vidéo du FPGA. Le flux audio est analysé en temps réel ; un certain nombre d'informations en sont extraites (le tempo musical, le contenu fréquentiel - proportion de graves et d'aiguës -, le niveau - volume sonore -, la hauteur des notes jouées, les attaques des notes, ...). Ces informations sont ensuite utilisées pour modifier des paramètres de la chaîne vidéo ou pour synchroniser le signal audio et les traitements vidéos (déclenchement d'effets sur apparition d'une caractéristique donnée). Outre la réception d'informations MIDI interprétées par le DSP pour paramétrer le FPGA, le DSP peut également générer un flux MIDI à partir de ses propres calculs et/ou de calculs (intermédiaires ou non) du FPGA pour modifier le comportement ou piloter des équipements externes tels que des instruments électroniques de musique. Dans ce mode de réalisation, le dispositif comprend une interface MIDI reliée audit DSP, soit directement soit par l'intermédiaire du FPGA, ladite interface MIDI étant apte : • à recevoir des signaux MIDI émis par un dispositif électronique adéquat distant, ledit DSP étant apte à convertir lesdits signaux en des paramètres de calculs transmis au réseau logique, et/ou • à émettre des signaux MIDI à destination d'un dispositif électronique distant, ledit DSP étant apte à générer lesdits signaux MIDI en fonction desdits paramètres de calcul utilisés par le réseau logique. Dans un mode de réalisation, le mixage vidéo est corrélé à un signal audio, par exemple provenant d'un Disc Jokey. Il est à noter que le DSP est par nature approprié pour des traitements audio et qu'à cet effet un module d'acquisition d'une source audio est directement relié au DSP. Cette source audio sert de source de paramètres pour le FPGA (le DSP réalisant alors des calculs sur le flux audio afin d'en déduire ou de prélever les paramètres adéquats). Ce flux audio peut être le flux sonore ambiant de la salle dans laquelle est projetée l'image de sortie de la table de mixage vidéo : les effets vidéo visibles sont ainsi favorablement corrélés à l'ambiance sonore instantanée (un bit sonore rapide peut faire flasher l'image à la même fréquence). À cet effet, le dispositif comprend une interface audio connectée audit DSP, ce dernier étant apte à traiter le signal audio pour déterminer des paramètres de calculs du réseau logique en fonction dudit signal audio. Selon différents modes de réalisation particuliers, il est prévu • de munir le dispositif table de mixage d'une interface USB d'administration et exploitation, notamment pour : - permettre principalement la mise à jour soit du logiciel de programmation (firmware) du FPGA soit de l'exécutable ou de données complémentaires (registres, fichiers de paramètres) du DSP ; - permettre l'envoi bidirectionnel de données variées, telles que des photos, des paramètres, des signaux vidéo, . ; - permettre également de connecter à la table de mixage vidéo une IHM informatique qui vient compléter ou se substituer à l'IHM hardware traditionnelle, • d'associer le DSP avec un lecteur de cartes mémoires. La carte mémoire connectée au DSP peut avoir deux fonctions principales : - la sauvegarde des paramètres du DSP et/ou du FPGA à un instant donné (sorte de photo instantanée de l'état de la plateforme assimilable à un vecteur d'état), afin d'être capable ultérieurement de récupérer rapidement une configuration connue voire optimisée pour une voie vidéo d'entrée connue ; - le stockage sur la carte d'une image au format JPEG _ Joint Photographic Experts Group_ (ou autre) par exemple L'image est décompressée par le DSP puis transmise au FPGA par le bus parallèle et stockée dans une des mémoires vives de travail du FPGA. L'image est alors substituée à une piste vidéo d'entrée...DTD: L'invention a également pour objet un procédé comprenant : • une étape de lecture synchronisée par ledit réseau logique des données numériques de pixels correspondants dans les modules d'acquisition, • une étape de détermination de paramètres de calcul par ledit DSP en fonction de données externes de mixage, • une étape de paramétrage dudit réseau logique par le DSP par l'envoi desdits paramètres de calcul, • une étape de calculs, par ledit réseau logique, des pixels du signal vidéo de sortie à partir desdites données numériques de pixels lus, et • une étape d'affichage dudit signal vidéo par l'intermédiaire dudit module de sortie vidéo. Selon un mode de réalisation, le procédé comprend, en outre et suite à ladite étape de lecture synchronisée, une étape d'écriture de données numériques de pixels dans des mémoires vives connectées audit réseau logique par des bus d'adresses et de données, le nombre de bus d'adresses étant inférieur au nombre de signaux vidéo d'entrée et l'écriture des données de pixels correspondants dans deux mémoires vives appartenant à un même bus d'adresses étant réalisée par l'utilisation d'une même adresse mémoire. Selon différents modes de réalisation pour l'utilisation du clavier bidimensionnel précédemment évoqué, - le procédé comprend, suite à l'activation d'une touche inactive (ou de deux touches actives) dudit clavier par un utilisateur, une étape de permutation de couche entre la vidéo affectée à une nouvelle couche par la touche nouvellement activée (ou une des deux touches actives sélectionnées) et la vidéo qui était affectée à cette couche (ou l'autre touche active) et une étape de détermination par ledit DSP desdites touches actives pour paramétrer ledit réseau logique. Il s'agit simplement d'une permutation de couche entre deux signaux vidéo. - le procédé comprend, suite à l'activation d'une touche inactive dudit clavier par un utilisateur, une étape de décalage d'une couche des vidéos qui étaient affectées aux couches intermédiaires entre la nouvelle couche sélectionnée par ladite activation et l'ancienne couche désélectionnée et une étape de détermination par ledit DSP desdites touches actives pour paramétrer ledit réseau logique. Ce décalage peut consister soit en remontant d'une couche soit en descendant d'une couche toutes les vidéos intermédiaires entre l'ancienne couche (couche désélectionnée) affectée à la vidéo dont on souhaite changer le numéro de couche et cette nouvelle couche sélectionnée. L'invention sera également mieux comprise à l'aide des dessins, dans lesquels : - les figures 1 et 11 illustrent de façon schématique la structure fonctionnelle du système selon la présente invention ; - la figure 2 est une représentation détaillée du système de la figure 1 ; - la figure 3 représente un exemple de chronogramme de lecture/écriture des mémoires SRAM du système des figures 1 et 2 ; - la figure 4 illustre de façon détaillée une architecture mémoire selon la présente invention ; la figure 5 illustre la principe de superposition de 30 couches ; - les figures 6 à 8 illustrent une interface d'affectation des sources aux différentes couches de la figure 5 ; et - les figures 9 et 10 illustrent deux modes de fonctionnements des interfaces des figures 6 à 8. En référence à la figure 1, le système se compose d'une unité de traitement programmable FPGA 10 à laquelle sont connectés • quatre modules d'acquisition de flux vidéo 12 via une interface de connexion 14, chaque module se présentant sous une forme modulaire amovible ; • des mémoires vidéo 16 de type SRAM (mémoire vive statique) ; • une unité de traitement numérique DSP 18 via un bus parallèle 20 ; • un module de sortie vidéo 22 de type convertisseur numérique analogique qui est relié à un dispositif de visualisation ; • une interface MIDI 24 reliée à un ou plusieurs instruments musicaux numériques aptes à émettre ou recevoir un signal MIDI à destination du FPGA ; et • une interface homme machine IHM 26, laquelle interface peut également avoir des connexions directes avec le DSP 18. Le coeur du système est basé sur une architecture mixte associant un FPGA 10 programmable en VHDL à une unité de traitement numérique DSP 18. Cette dernière vient paramétrer les unités ou blocs logiques du FPGA pour exécuter des calculs sur des données sources vidéos conformément à laprogrammation du FPGA réalisée par l'utilisateur. La programmation du FPGA permet notamment de soulager le DSP en diminuant le nombre de calculs que ce dernier doit réaliser. Le système permet à partir des sources vidéos et de paramètres saisis par l'utilisateur sur l'IHM et/ou calculés à partir de flux de données reçus (audio, MIDI, flux video, ...) de produire des données vidéo mixées affichées sur le dispositif de visualisation. De nombreux effets peuvent être mis en oeuvre et combinés lors des calculs par le FPGA dont quelques exemples à titre non limitatif sont : • modification de la luminosité ou du contraste, mélange de plusieurs couches vidéo, • effets sans utilisation de filtres pour la pixellisation, un rendu négatif, la quantification ou un flash, • effets utilisant des filtres pour par exemple la détection de contours, l'amélioration de l'image, le filtrage spatial, • suppression ou permutation de couleur, • transition d'un flux vidéo à un autre (cut, fondu, volet, iris, flou, seuil, ...), ... Le traitement vidéo est réalisé en temps réel par le système, ce qui impose une fréquence d'environ 27 MHz pour la production d'un pixel de sortie. Il peut être envisagé d'introduire un léger décalage temporel entre l'instant d'acquisition d'une image des flux vidéos et la production d'une image de sortie correspondante. Les sources vidéo arrivent en entrée des cartes d'acquisition 12. Ces modules d'acquisition 12 fournissent au système en sortie les informations constitutives des pixels (généralement les composantes de luminance Y et de chrominance Cb et Cr), ces données étant produites pixel après pixel, image après image. Le traitement au coeur du système (FPGA) est réalisé pixel par pixel dans l'espace Rouge-Vert-Bleu RVB, c'est-à-dire que les pixels de l'image de sortie sont calculés successivement les uns après les autres à partir des pixels correspondants des images en entrée ou de pixels équivalents. Ici, correspondant signifie que le pixel ayant la position (ligne 30, colonne 112) est calculé à partir des pixels ayant la même position dans l'image correspondante des flux vidéo d'entrée. Cependant, des effets (par exemple renversement des images) sur les images peuvent nécessiter l'utilisation de pixels équivalents (ligne 30 en partant de la fin de l'image, colonne 112, par exemple). Il y a donc une conversion du format YCbCr en RVB par le FPGA avant l'application de la chaîne de traitement de celui-ci puis une nouvelle conversion RVB en YCbCr pour l'image de sortie. Il est en outre introduit une information de transparence à chacun des pixels pour le traitement précisant les parties de l'image opaques et les parties transparentes. On peut ainsi distinguer dans une image différentes zones auxquelles on accorde une importance plus moins grande (la notion d'importance étant bien entendu dépendante du contexte et des intentions de l'utilisateur). La transparence permet (entre autres) de réaliser des incrustations, les parties transparentes de la première image laissant apparaître la seconde image (le fond). La composante alpha (en plus des composantes RVB) est la composante porteuse de l'information de transparence : elle code la transparence de chaque pixel entre 0 et 1 : a=0 : le pixel est parfaitement transparent ae]0,1[ : le pixel est partiellement transparent a=1 : le pixel est opaque La composante alpha est parfois intégrée dans le signal vidéo. Dans le cas contraire, elle est synthétisée (par exemple par un générateur de masque générant des formes pré-définies). Il est également prévu d'utiliser une composante d'un autre signal vidéo ou une image... ou de l'extraire de l'image en se basant sur certaines caractéristiques de celle ci (couleur, luminosité...). Chaque pixel est donc représenté par un quadruplet : R, V, B et a. Module d'acquisition vidéo 12 Plus en détail en référence à la figure 2, les quatre modules d'acquisition vidéo 12 sont interchangeables et de plusieurs natures : analogiquesûnumériques 12' ou totalement numériques 12". Chaque module 12 comprend un module de traitement et une mémoire FIFO (premier entré, premier sorti). Les modules analogiques peuvent recevoir 4 flux vidéo et 2 flux audio, desquels ils ne prélèvent qu'un seul flux vidéo. De même, les modules numériques prélèvent un seul flux audio-vidéo parmi l'ensemble des flux qui compose le flux multiplexé arrivant en entrée de module. Les signaux vidéos analogiques sont convertis en numériques pour être traités et mélangés. Les différents flux vidéos sont resynchronisés, ce qui nécessite de stocker temporairement les images acquises. Afin de limiter l'espace mémoire et de limiter la bande passante nécessaire aux lectures/écritures dans ces mémoires, les signaux analogiques sont échantillonnés dans le format YCrCb4:2:2, qui compresse les données d'un facteur 3/2. Le module de traitement d'acquisition prélève ensuite successivement les données de chacun des pixels composant les images de la source vidéo et les enregistre dans la mémoire FIFO. Les mémoires FIFO de tous les modules 12 sont lues de façon synchronisée par le FPGA 10 à la fréquence de lecture de 27 MHz pour des sources vidéo de type PAL, cette fréquence étant fournie par un oscillateur incorporé au FPGA. Pour réaliser cette synchronisation, le FPGA identifie le début de chaque image dans les mémoires et procède à la lecture des données de pixel successifs dans les différentes mémoires FIFO des modules d'acquisition. Ainsi les données lues des différents modules 12 par le FPGA sont synchronisées et en phase. Il est à noter que l'oscillateur permet également de synchroniser les autres éléments électroniques du système DSP, codeur-décodeur, ... En référence à la figure 4, les mémoires vives 16 sont regroupées par paire sur un même bus d'adresse 28 connecté au FPGA et chacune des mémoires dispose de son propre bus de données 28' et de contrôle 28". Le bus d'adresse est codé sur 19 bits, le bus de données sur 16 bits et le bus de contrôle sur 1 bit. Cette configuration permet de ne requérir que 106 (19*2 + 16*4 + 4) broches sur le FPGA alors qu'une configuration plus simpliste (une mémoire indépendante pour chaque signal vidéo d'entrée) requiert 144 broches, soit 38 broches de plus. Les mémoires sont de 8Mbits permettant de stocker aisément toutes les données d'une image vidéo. Pour une image PAL 720x576 échantillonnée en 4 :2 :2, il y a 829 440 composantes à mémoriser, soit 6,6 Mbits. Chaque mémoire vive est dédiée à une seule source, par exemple la mémoire SRAM ANAL1 à la première source vidéo Entrée Analog.1, etc... Puisque le bus de données est de 16 bits, il n'est possible d'écrire que deux composantes de pixels à la fois en mémoire. On utilise donc deux adresses mémoires pour enregistrer les quatre composantes définissant deux pixels voisins d'un signal 4 :2 :2, comme suit : Adresses données écrites @ Y1 Cr1 @+1 Y2Cb1 @+2 Y3Cr3 @+3 Y4Cb3 où Yi, Cri et Cbi représentent la luminance, chrominance rouge et chrominance bleue du pixel i. Ecriture d'un pixel pour une mémoire dont le bus de donnée est de 16 bits : Deux pixels entrants consécutifs vont avoir des adresses mémoires consécutives. Dans ce cas, les cycles d'écriture s'optimisent. Pour écrire deux pixels, il faut donc faire deux accès mémoire à deux adresses différentes consécutives. Cela nécessite 8 cycles FPGA (4 cycles pour chaque pixel écrit). Lecture d'un pixel pour une mémoire dont le bus de donnée est de 16 bits : Pour lire un pixel, il faut faire deux accès mémoire à deux adresses différentes consécutives. Cela nécessite 4 cycles FPGA (2 cycles FPGA pour chaque lecture). Les pixels souhaités par le générateur d'adresse ne sont pas forcément deux pixels consécutifs, selon les effets de mixage souhaités (par exemple un effet miroir peut nécessiter de lire les pixels depuis la fin). Pour cela, la lecture d'un pixel nécessite au moins deux lectures mémoire. En référence à la figure 3, pendant douze cycles élémentaires (soit 74 ns), le FPGA génère l'adresse unique (4 cycles) pour l'écriture des données de pixels lues des modules d'acquisition et les quatre adresses de lecture (4x2 cycles) de données pour le traitement du pixel de sortie à produire pendant ce cycle (2 adresses pour chacune des mémoires). A lecture des données de pixels dans les mémoires FIFO 12, le FPGA génère une adresse pour l'écriture des données dans les mémoires 16. Le générateur d'adresses 30 en écriture est unique pour toutes les mémoires 16 et s'incrémente linéairement garantissant l'enregistrement de pixels consécutifs à des adresses mémoires consécutives. L'adresse mémoire générée permet de stocker dans les mémoires en même temps les données transmises sur les bus de données 28' spécifiques à chaque mémoire. Pour la lecture des données, le FPGA doit générer 4 adresses différentes puisque selon les effets souhaités (miroir, retournement), on n'accède pas de façon identique à deux mémoires 16. Ainsi, chaque source vidéo possède un générateur d'adresse 30 en lecture propre. Le FPGA récupère successivement les données YnCrn et Yn+1Cbn pour le pixel n de la première vidéo (mémoire 1) et les données Y,Cru et Yu+1Cbu pour le pixel u de la deuxième vidéo (mémoire 2) La figure 3 ne représente le chronogramme que d'un seul des deux bus 28. Le traitement par le FPGA La programmation du FPGA en langage VHDL permet d'obtenir un certain nombre d'éléments fonctionnels utiles au calcul d'effets sur les images, par exemple : • des blocs de déformation en amont du traitement vidéo brut des flux vidéo. Ces blocs reçoivent ou prélèvent les données de pixels des mémoires vives 16 pour les fournir à la suite de la chaîne de traitement ; • des blocs de prétraitements et d'effets FX recevant les signaux des blocs ; • des blocs d'extraction de la composante alpha des signaux vidéo soit directement du signal (si elle y est incluse) soit par application de fonctions de calcul ; • un multiplexeur central permettant d'aiguiller un flux vidéo (et sa composante alpha) vers une couche donnée ; • des blocs de contrôle de gains pour chaque piste ainsi que de génération de masques de transitions dont leurs signaux de sorties (a_gain, a_transi) sont multipliés à la composante alpha, en amont des blocs de mélange ; • des blocs Blend permettant de mélanger deux couches superposées ; • un bloc d'effets FX en sortie des mélangeurs ; • des points de pré-visualisation en n'importe quel point de la chaîne de traitement pour visualisation sur une deuxième sortie de prévisualisation du module de sortie 22. Les traitements réalisés par le FPGA pour chaque pixel portent sur les trois composantes Y, Cr et Cb lues en mémoire. A titre d'exemple, • les déformations d'imaqes (symétries, retournements...) sont rendues possibles grâce à un bloc d'accès aléatoire aux pixels30 placés en amont de la chaîne de traitement. Pour re-synchroniser les flux vidéos, il est nécessaire de les stocker temporairement dans des mémoires, juste après leur échantillonnage dans les modules 12. Les déformations d'images sont réalisées lors de la lecture de ces mémoires : plutôt que de lire les pixels en mémoire de manière séquentielle (ce qui donne une image non déformée), on accède à n'importe quel pixel de l'image en utilisant les générateurs d'adresse propres 30. Le bloc de déformation est donc un générateur d'adresses spécifique de lecture en mémoire. • Chaque flux peut être prétraité avant d'être mélangé avec les autres. Les pré-traitements ont pour but de corriger l'image ou au contraire de la déformer à des fins artistiques. De nombreux effets et traitement correctifs peuvent être envisagés, par exemple : • Réglage du contraste et de la luminosité • Balances des couleurs • Inversion des couleurs • Réductions du nombre de couleurs • Seuil • Mosaïque • Extraction de la composante alpha : en utilisation, chaque flux vidéo peut être atténué par l'utilisateur via un contrôle dédié via l'interface IHM 26. Ce gain est mis en oeuvre par une multiplication avec la composante alpha. Ainsi, lorsque le gain est nul, la composante alpha est nulle elle aussi, et les pixels du flux vidéos sont transparents. Quand ce gain est unitaire (pas d'atténuation), la composante alpha est inchangée. La composante alpha appliquée à une piste est extraite d'un signal vidéo en utilisant les informations de couleurs ou de luminosité du flux vidéo. Le signal vidéo utilisé pour l'extraction peut être celui de n'importe piste (et pas nécessairement celle à laquelle on applique la composante alpha). Différentes méthodes d'extraction existent dont : • Color-key : extraction exploitant les couleurs, • Chroma-key : extraction exploitant les informations de chroma, • Luma-key : extraction exploitant les informations de luminosité. • Aiquillaqe des flux et de la composante alpha : les images acquises et à traiter sont organisées en couches superposées comme illustré par la figure 5. On organise celles-ci en couches (layers) superposées : les couches sont ordonnées en profondeur : la couche 1 est au-dessus de la couche 2, elle-même au-dessus de la couche 3, ... Chacune des quatre vidéos d'entrée est affectée à l'une des quatre couches. Cette affectation peut être modifiée pendant le processus de mixage par l'utilisateur au moyen, par exemple de l'interface IHM 26 et le pavé illustré par la figure 6. La chaîne de traitement vidéo peut être contrôlée par une interface utilisateur matérielle IHM 26 dédiée, composée de contrôles classiques (potentiomètres, boutons, écran...). Un contrôle spécifique a cependant été développé pour faciliter l'aiguillage des pistes vidéos vers les différentes couches superposées. Ce contrôle est composé d'un ensemble de boutons lumineux disposés en carré, conformément à la figure 6. Il permet de diriger une piste vers une couche donnée. L'éclairage des boutons par une couleur donnée permet d'identifier rapidement la manière dont les pistes sont organisées en couches. Ce contrôle permet également de gérer la réorganisation des pistes lorsqu'une piste est déplacée vers une couche, puisqu'une seule piste peut être affectée à une couche donnée : ainsi pour chaque dimension une seule touche du clavier est active (au sens de l'affectation des pistes aux différentes couches). Ainsi, deux modes sont proposés lorsque l'on souhaite changer une piste de couche : • le premier mode, illustré par la figure 7, consiste à décaler toutes les pistes affectées aux couches situées entre la couche d'origine et de destination. Par exemple, en partant de la configuration précédente, si l'on souhaite aiguiller la piste 2 (dirigée vers la couche 2) vers la couche 4, les pistes associées aux couches 3 et 4 (ici les pistes 3 et 4) seront décalées. Ce changement de configuration est obtenu en pressant le bouton situé à l'intersection de piste que l'on souhaite déplacer et de la couche vers laquelle on souhaite l'associer (ici, le bouton à l'intersection de la piste 2 et de la couche 4). Ainsi, ce mode est déclenché en appuyant sur une touche du clavier qui n'est pas encore active. • le deuxième mode, illustré par la figure 8, consiste à permuter deux couches. Par exemple, on peut permuter les pistes 2 et 4 (en partant de la première configuration), ce qui conduit également à affecter la piste 2 vers la couche 4. On active ce mode en maintenant appuyé le bouton (piste 2, couche 2) et en appuyant sur le bouton (piste 4, couche 4) (les deux boutons allumés des pistes que l'on souhaite permuter). Ce mode est ainsi déclenché en appuyant sur deux touches actives simultanément (ou en maintenant une première enfoncée et en appuyant sur la seconde). Bien que très simple, ce contrôle est parfaitement adapté à l'aiguillage des pistes vers les couches. L'éclairage des boutons permet d'afficher l'affection des pistes aux différentes couches, et est tout à fait adapté à une utilisation dans l'obscurité. Ce contrôle peut également être utilisé pour afficher diverses informations concernant la piste, en tirant profit des différentes couleurs d'éclairage, et d'un éventuel clignotement de l'éclairage. Il peut également être utilisé conjointement à d'autres éléments de l'interface, en utilisant par exemple des doubles appuis : en maintenant enfoncé un bouton fonction et en enfonçant l'un des boutons du clavier bidimensionnel associé à une piste (c'est d'un dire l'un des boutons de la colonne associée à cette piste), la fonction est appliquée à cette piste. Une variante consisterait à appliquer cette fonction en différents points de la chaîne de traitement en fonction du bouton de la colonne utilisée. Ce contrôle est exploité de la manière suivante : • Si une touche du clavier est enfoncée alors qu'une touche de fonction est maintenue enfoncée, c'est cette fonction qui va être appliquée à la piste associée à la touche enfoncée (le numéro de la touche dans la colonne peut alors être paramètre pour cette fonction, ou permettre de sélectionner l'une des variantes de cette fonction). Dans ce cas, l'affectation des pistes aux différentes touches n'est pas affectée • Si une touche non active est enfoncée alors qu'aucune touche fonction n'est enfoncée, le routage des pistes vers les couches est modifié. Les pistes affectées aux couches situées entre la couche d'origine et de destination de la piste qui vient d'être modifié vont être décalées (chacune d'entre elles est affectée à la couche située juste au-dessus de la couche qu'elle occupe actuellement si la piste qui est modifié par l'utilisateur est affectée à une couche située en dessous de celle qu'elle occupe actuellement). L'affectation des pistes vers les couches est alors recalculée et le résultat de ce calcul permet, d'une part, de commander le multiplexeur qui aiguille les pistes vers les couches (et donc de rendre effective la nouvelle affectation des pistes) et, d'autre part, de redéfinir les nouvelles touches actives du clavier et de mettre à jour le retour visuel (allumage des touches du clavier actives, extinction des autres). • Si deux touches actives sont enfoncées (simultanément ou l'une après l'autre si la première est maintenue enfoncée), les deux pistes sont permutées : chacune d'elles est alors dirigée vers la couche qu'occupait l'autre. Dans ce cas l'affectation des pistes aux couches est modifiée (en recalculant la nouvelle affectation des pistes et en commandant en conséquence le multiplexeur qui réalise l'aiguillage), et le jeu de touches actives est mis à jour ainsi que le retour visuel. Les diagrammes des figures 9 et 10 résument la façon dont peut être recalculée l'affectation des pistes. L'affectation des pistes vers les couches est sauvegardée dans un tableau de N éléments notés piste2couche dont le premier élément est le numéro de la couche à laquelle est affectée la piste 1, le deuxième élément est le numéro de la couche à laquelle est affectée la piste 2... Ainsi piste2couche[k] est le numéro de la couche affectée à la piste k, (étant entendu que la couche 1 est au-dessus -devant- de la couche 2, et que les pistes et les couches sont numérotées de 1 à N). Le tableau est initialisé par exemple avec les valeurs 1, 2, 3, N (c'est-à-dire la première piste affectée à la première couche, la deuxième piste affectée à la deuxième couche...). Figure 9, l'utilisateur appuie sur la touche (piste A, couche 2) 20 On compare la nouvelle couche sélectionnée (couche 2) avec l'ancienne couche de la piste 1 (piste2couche[piste A]) : Si elle est supérieure (au-dessus), alors pour chacune des pistes (k=1 à N) dont la couche affectée est au-dessous (inférieure ou égale) de la couche 2 nouvellement choisie et au-dessus 25 (strictement supérieure) de l'ancienne couche de la piste 1, alors la piste k en question est descendue d'une couche. Si elle est inférieure (au-dessous), alors pour chacune des pistes (k=1 à N) dont la couche affectée est au-dessus (supérieure ou égale) de la couche 2 nouvellement choisie et au-dessous 30 (strictement inférieure) de l'ancienne couche de la piste 1, alors la piste k en question est remontée d'une couche. Dans le deuxième cas (figure 10), il s'agit d'une simple substitution de deux pistes par appui sur deux touches actives. Dans la suite des traitements réalisés par le FPGA, les couches sont mélangées deux par deux, en commençant par les deux couches inférieures. Le résultat de cette fusion est utilisé comme fond pour la piste située juste au-dessus et se combine avec celle-ci. Le mélange de deux couches prend en compte les couleurs et la transparence de ces couches (composante alpha), et le résultat dépend du type de mélange utilisé. Selon les effets souhaités, il convient de requérir divers modes de mélanges lesquels reposent sur des opérations arithmétiques ou logiques, de sorte que les combinaisons possibles sont infinies. Pré-visualisation Afin de faciliter les réglages pour l'utilisateur, une sortie vidéo supplémentaire est proposée : elle permet de visualiser n'importe quel point de la chaîne de traitement. Ainsi, l'utilisateur peut par exemple effectuer les réglages qu'il souhaite pour une piste en visualisant le résultat, avant que celui-ci ne soit transmis sur la sortie principale. Pour réaliser cette fonctionnalité, le FPGA est programmé pour connecter divers points dans la chaîne de calculs (par exemple les points d'entrée des vidéos, les sorties de calculs d'effets, .) à un commutateur piloté par l'IHM. De façon continue, les données calculées par le FPGA sont transmises au commutateur. L'utilisateur par une commande de sélection pilote le commutateur (éventuellement via le DSP pour interpréter le signal généré par l'IHM et paramétrer le FPGA en conséquence) afin de fournir au convertisseur numérique-analogique de la sortie vidéo supplémentaire le signal qu'il souhaite prévisualiser...DTD: Le DSP 18 De retour à la figure 2, le DSP est utilisé pour la génération des paramètres à appliquer au FPGA. Il est constitué d'un processeur pour l'exécution d'un programme applicatif stocké dans une mémoire SDRAM _synchronous dynamic random access memory, mémoire vive dynamique synchrone_ ou équivalente (Flash, ...). Ce programme réalise l'acquisition de données extérieures, l'interprétation de celles-ci et la production et transmission de paramètres au FPGA. Quelques exemples de sources extérieures : un signal audio reçu par le codeur-décodeur 32, l'interface homme-machine 26 connectée directement au DSP ou par l'intermédiaire du FPGA si un traitement préliminaire des données est nécessaire, des données MIDI en provenance d'équipements numériques musicaux reçues par une interface dédiée 24, des données contenues dans des cartes mémoires via un lecteur de cartes connecté au DSP, un ordinateur relié à la plateforme de mixage par un port USB par exemple pour offrir une IHM virtuelle, Pilotage par MIDI La chaîne de traitement vidéo peut être pilotée par des messages MIDI, issu d'instruments de musiques numériques. Les messages supportés ainsi que les paramètres qu'ils contrôlent sont configurables. Les signaux MIDI sont numériques et directement traités par le DSP : une guitare électrique numérique est branchée au système via une connexion MIDI et produit des signaux concernant, par exemple, les informations suivantes : Le volume sonore de la guitare, identifié dans le flux MIDI par id=7 prend une valeur e [0 ; 127], soit sur 7 bits, De même le trémolo dont id=24 prend une valeur e [0 ; 127], Le message MIDI (id=7, valeur=100) est reçu par le DSP (via le FPGA si nécessaire), lequel DSP détermine le paramétrage du 29 FPGA approprié par l'utilisation d'une table de correspondance ou d'indirection ou d'une fonction de correspondance, par exemple : a(couchel)= valeur 127 Ces tables ou fonctions associent les informations MIDI (un identifiant et tout ou partie de la plage de valeurs) à une valeur dans un registre FPGA, le DSP paramètre le FPGA après détermination de la valeur du registre FPGA. Ce registre ayant été prédéfini comme paramètre de certains calculs, le signal de sortie tiendra compte des données MIDI ainsi reçues. Ainsi, la transparence de la couche 1 est paramétrée à a(couchel)=0,78. Cette valeur est donc transmise, via le bus 20, par le DSP au FPGA comme étant la nouvelle valeur du registre a(couchel ). Il s'en suit que les calculs réalisés après cette affectation de registre tiendront compte de la nouvelle valeur déterminée. Ainsi, lorsque le musicien joue de son instrument, la valeur de transparence de la couche 1 varie, donnant un effet vidéo corrélé à l'intensité sonore de l'instrument de musique. Génération d'un signal MIDI De façon réciproque, la génération d'une valeur par le FPGA à la fin d'une opération de calcul, par exemple l'extraction de luminosité d'une vidéo, peut venir paramétrer un instrument musical numérique. Le DSP récupère la valeur de la luminosité moyenne d'une image et la compare à une table d'indirection : Luminosité valeur trémolo moyenne Id=24 10% 127 10% Pilotage par un signal audio La chaîne de traitement vidéo peut également être pilotée par 10 un flux audio. Un codec 32 (codeur-décodeur) audio permet la conversion des signaux audio analogiques en entrée en signaux numériques directement exploitables par le DSP. Le flux audio numérisé est transmis au DSP et analysé en temps réel, et un certain nombre d'informations en est extrait. Ces informations sont 15 utilisées pour modifier des paramètres de la chaîne vidéo de façon similaire au signal MIDI. Elles sont également utilisées à des fins de synchronisation entre le signal audio et les traitements vidéos (déclenchement d'effets sur apparition d'une caractéristique donnée). De nombreuses informations peuvent être extraites, 20 comme par exemple : • le tempo musical • le contenu fréquentiel (proportion de graves, d'aiguës) • le niveau ( volume sonore) • la hauteur des notes jouées 25 • les attaques des notes L'exploitation du signal audio est intéressante puisqu'elle permet dès lors de corréler le signal audio généré par un disc jokey avec les effets vidéo qu'un mixeur vidéo produira. A cet effet, une fois le flux audio numérique exploité par le DSP, le codec permet de 30 reconvertir le signal audio numérique en un signal de sortie analogique pour diffusion. Utilisation d'une carte mémoire ou d'une clé USB La carte mémoire est utilisée comme moyen de sauvegarde de configuration. Si l'utilisateur de la plateforme de mixage souhaite sauvegarder une configuration qu'il apprécie tout particulièrement, il déclenche une étape de sauvegarde via l'IHM. Le DSP procède alors, via le bus 20, à la récupération de tous les paramètres stockés dans les registres du FPGA et/ou de ses propres paramètres, et à l'enregistrement de ceux-ci dans un fichier de configuration approprié sur la carte mémoire (ou clé USB). Des moyens traditionnels de nommage des configurations et de sélection de configuration à restaurer (le DSP modifiant les registres du FPGA avec les données en mémoire) sont prévus. La carte mémoire peut également êtreutilisée comme source de vidéo statique, c'est-à-dire d'une image. Si l'utilisateur le souhaite, le DSP transmet au FPGA les données de l'image. Le FPGA substitue alors dans la mémoire vive 16 une vidéo qu'il souhaite remplacer avec l'image. Une telle image peut être utilisée pour constituer un fond fixe (couche 4) ou pour réaliser un masque (couche 1). En outre, une connexion USB est prévue sur le DSP pour connecter un ordinateur. Cela permet de fournir des fonctionnalités d'administration (modification de la programmation du FPGA, modification du logiciel DSP et des tables de correspondance, ...) mais également de doter la plateforme de moyens de pilotage (IHM) évolués via une interface logicielle. Eventuellement, des diffuseurs d'odeurs sont connectés à la plateforme de mixage, lesquels diffuseurs sont commandés (choix d'une odeur, intensité de diffusion, ...) par des paramètres ou des résultats de calculs du FPGA ou DSP. Il est ainsi possible d'associer des odeurs à des effets vidéo. REVENDICATIONS 1. Dispositif de mixage vidéo caractérisé en ce qu'il comprend au moins une pluralité de modules d'acquisition de signaux vidéo composés de pixels, une unité de traitement de type réseau logique, par exemple un FPGA (Field-Programmable Gate Array - réseau prédiffusé programmable), un processeur, par exemple un DSP (Digital Signal Processor - processeur de signal numérique) et un module de sortie vidéo, dispositif dans lequel : • le processeur est agencé pour recevoir et interpréter des données externes de mixage et pour transmettre des paramètres de calculs au réseau logique , lesdits paramètres de calcul étant déterminés en fonction desdites données externes de mixage, et • le réseau logique est agencé pour acquérir de façon synchronisée des données numériques desdits pixels en entrée depuis lesdits modules d'acquisition et pour effectuer des opérations de calcul fonction desdits paramètres de calcul sur lesdits pixels acquis pour la génération et la transmission audit module de sortie vidéo d'un signal vidéo de sortie. 2. Dispositif selon la revendication précédente, caractérisé en ce que lesdits modules d'acquisition comprennent chacun une mémoire de type premier entré, premier sorti FIFO pour le stockage des données numériques desdits pixels et ledit réseau logique est apte à lire simultanément dans lesdites mémoires les données numériques correspondant à un même pixel dans lesdits signaux vidéo en entrée. 3. Dispositif selon la revendication précédente, caractérisé en ce qu'il comprend, en outre, une pluralité de mémoires vives connectées audit réseau logique par l'intermédiaire de bus d'adresses et de données, le nombre de bus d'adresses étantinférieur au nombre de signaux vidéo d'entrée, lesdites mémoires vives étant dédiées chacune à un seul module d'acquisition pour stocker les données numériques de pixels lues par le réseau logique dans lesdites mémoires de type FIFO, ledit réseau logique étant apte à stocker les données numériques de pixels correspondants, sur au moins deux mémoires vives connectées au même bus d'adresse en utilisant une ou plusieurs même(s) adresse(s) mémoire. 4. Dispositif selon la revendication 3, caractérisé en ce que lesdites mémoires vives sont aptes à stocker des mots binaires de longueur au moins égale à deux fois la longueur des données d'une composante pixel, et le réseau logique est apte à générer sur ledit bus de données un mot comprenant les données numériques d'au moins deux composantes pixels correspondants pour stockage dans ladite mémoire vive. 5. Dispositif selon la revendication 1, caractérisé en ce qu'il comprend une unique mémoire vive connectée audit réseau logique par l'intermédiaire d'un bus d'adresses et d'un bus de données, la mémoire étant apte à stocker des mots binaires de longueur au moins égale à la longueur des données des composantes d'un pixel multipliée par le nombre de signaux d'entrée, et en ce que le réseau logique est apte à générer un mot comprenant les données numériques des pixels correspondants de tous les signaux d'entrée et à stocker ce mot dans la mémoire vive. 6. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend, en outre, une interface Homme-Machine IHM connectée audit processeur pour la sélection et la transmission desdites données externes de mixage par un utilisateur. 7. Dispositif selon la revendication précédente, caractérisé en ce qu'il comprend, en outre, un module de sortie vidéo de prévisualisation connecté à un module de commutation, ledit réseau logique étant apte à fournir audit module de commutation des données de pixels calculées en différents points desdites opérations, et ledit processeur étant apte à piloter ledit module de commutation en fonction des interactions de l'utilisateur avec ladite IHM. 8. Dispositif selon la revendication 6, caractérisé en ce que ladite interface IHM comprend un clavier bidimensionnel à NxM touches où une dimension représente le nombre de signaux d'entrée vidéo et l'autre dimension le nombre de couches, et dans lequel une seule touche par ligne et par colonne est active, ledit processeur étant apte à paramétrer le réseau logique pour la superposition des signaux d'entrée dans le signal de sortie en fonction desdites touches actives dudit clavier. 9. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une interface MIDI reliée audit processeur, ladite interface MIDI étant apte : • à recevoir des signaux MIDI émis par un dispositif électronique adéquat distant, ledit processeur étant apte à convertir lesdits signaux en des paramètres de calculs transmis au réseau logique, et/ou • à émettre des signaux MIDI à destination d'un dispositif électronique distant, ledit processeur étant apte à générer lesdits signaux MIDI en fonction desdits paramètres de calcul utilisés par le réseau logique. 10. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une interface audio connectée audit processeur, ce dernier étant apte à traiter le signalaudio pour déterminer des paramètres de calculs du réseau logique en fonction dudit signal audio. 11. Procédé de mixage vidéo dans un dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend : • une étape de lecture synchronisée par ledit réseau logique des données numériques de pixels correspondants dans les modules d'acquisition, • une étape de détermination de paramètres de calcul par ledit processeur en fonction de données externes de mixage, • une étape de paramétrage dudit réseau logique par le processeur par l'envoi desdits paramètres de calcul, • une étape de calculs, par ledit réseau logique, des pixels du signal vidéo de sortie à partir desdites données numériques de pixels lus, et • une étape d'affichage dudit signal vidéo par l'intermédiaire dudit module de sortie vidéo. 12. Procédé de mixage vidéo selon la revendication précédente, caractérisé en ce qu'il comprend, en outre et suite à ladite étape de lecture synchronisée, une étape d'écriture de données numériques de pixels dans des mémoires vives connectées audit réseau logique par des bus d'adresses et de données, le nombre de bus d'adresses étant inférieur au nombre de signaux vidéo d'entrée et l'écriture des données de pixels correspondants dans deux mémoires vives appartenant à un même bus d'adresses étant réalisée par l'utilisation d'une même adresse mémoire. 13. Procédé de mixage vidéo selon la revendication 11, dans un dispositif selon la revendication 8, caractérisé en ce qu'il comprend, suite à la sélection d'au moins une touche dudit clavierpar un utilisateur, une étape de réaffectation des couches auxdits signaux vidéos d'entrée. 14. Procédé de mixage vidéo selon la revendication précédente, caractérisé en ce que ladite étape de réaffectation consiste en une étape de permutation de couche entre la vidéo affectée à une nouvelle couche par la touche nouvellement activée et la vidéo qui était affectée à cette couche et une étape de détermination par ledit processeur desdites touches actives pour paramétrer ledit réseau logique. 15. Procédé de mixage vidéo selon la revendication 13, caractérisé en ce que ladite étape de réaffectation consiste en une étape de décalage d'une couche des vidéos qui étaient affectées aux couches intermédiaires entre la nouvelle couche sélectionnée par ladite activation et l'ancienne couche désélectionnée et une étape de détermination par ledit processeur desdites touches actives pour paramétrer ledit réseau logique.