AMÉLIORATION D'ÉMISSION DE FLUX MULTIMÉDIA
L'invention concerne l'amélioration de l'émission de flux multimédia, notamment des flux audio. L'accroissement de la puissance des micro- ord i nateu rs, des ord i nateu rs porta bles et des tablettes a perm is le développement du traitement en temps réel des enregistrements audio dont le but principal est de corriger les défauts dus à la technique de lecture et d'enregistrement sur les supports CD et SACD et d'améliorer la pureté du son par l'élimination des parasites dus à la numérisation elle-même et aux interférences introduites par les différents composants de la chaîne d'enregistrement et de reproduction.
Les sociétés qui ont créé des matériels et des logiciels pour cela, sont arrivées à obtenir un saut qualitatif dans la clarté et la pureté du son restitué.
Les améliorations complémentaires qui restent à apporter aux meilleurs matériels et logiciels sont relativement faibles tant que n'est pas apportée une solution au problème physique des parasites générés par les composants utilisés lors de la lecture du signal audio. Le niveau de parasites est lié au mode de fonctionnement de ces composants, et donc de celui du logiciel les contrôlant. Les solutions les plus avancées mises en œuvre jusqu'à ce jour pour les logiciels de lecture de musique dématérial isée sont réalisées au niveau applicatif du système d'exploitation utilisé dans ces systèmes.
Dans les solutions connues, seul le pilote du périphérique audio tourne dans le mode privilégié, le mode noyau (appelé également mode superviseur). La qualité d'émission de flux multimédia des solutions existantes est imparfaite.
L'invention vient améliorer la situation.
Un aspect de l'invention se rapporte à un procédé d'émission de flux multimédia vers un périphérique multimédia d'un ordinateur, l'ordinateur comprenant un processeur apte à fonctionner en mode utilisateur et en mode
superviseur, l'ordinateur comprenant un support de stockage lisible par le processeu r et stockant u n mod u le m u lti méd ia , le procédé d'émission comprenant une mise en œuvre, par le module multimédia exécuté par le processeur en mode superviseur : /a/ d'une allocation, en espace noyau, d'une mémoire tampon agencée pour contenir au moins dix secondes de flux multimédia ;
/b/ d'une réception d'un flux multimédia, et de son stockage dans la mémoire tampon ;
Ici d'une émission d'un flux multimédia stocké dans la mémoire tampon vers le périphérique multimédia.
Ce procédé est avantageux notamment en ce qu'il permet d'améliorer la qualité du son et/ou de la vidéo compris dans un flux multimédia émis par un tel procédé. En mettant en œuvre l'exécution du module multimédia en mode superviseur, le procédé lui donne une très haute priorité pour la gestion en temps réel du flux multimédia. Par ailleurs, en lui allouant une mémoire tampon de taille non conventionnelle car très importante (au moins dix secondes) et en plaçant cette mémoire tampon dans l'espace noyau (accessible seulement en mode superviseur), le procédé permet d'assurer une plus grande continuité dans l'émission du flux multimédia, qui a moins de chances d'être interrompu (même pour des périodes très courtes), assurant ainsi également une plus grande qualité d'émission. De plus, le recours à l'espace noyau implique notamment (par rapport à un recours à l'espace utilisateur) une utilisation réduite de ressources mémoire et processeur, car il nécessite moins de recopies de zones mémoire et moins de changements de contexte du processeur, qui sont susceptibles de générer des interférences électriques et électromagnétiques lors de l'émission d'un flux multimédia.
Un autre aspect de l'invention se rapporte à un programme d'ordinateur comprenant une série d'instructions qui, lorsqu'elles sont exécutées par un processeur, mettent en œuvre un procédé selon un aspect de l'invention.
Un autre aspect de l'invention se rapporte à un support de stockage non
transitoire lisible par ordinateur, comprenant un programme d'ordinateur selon un aspect de l'invention.
Un autre aspect de l'invention se rapporte à un système d'émission de flux multimédia, comprenant un ordinateur et un périphérique multimédia, l'ordinateur comprenant un processeur apte à fonctionner en mode utilisateur et en mode superviseur, l'ordinateur comprenant un support de stockage lisible par le processeur et stockant un module multimédia, le module multimédia étant agencé pour être exécuté par le processeur en mode superviseur, le système d'émission comprenant :
- un circu it d'allocation, en espace noyau , d'une mémoire tampon agencée pour contenir au moins dix secondes de flux multimédia ;
- un circuit de réception d'un flux multimédia, agencé pour recevoir ledit flux multimédia et le stocker dans la mémoire tampon ; - un circuit d'émission d'un flux multimédia stocké dans la mémoire tampon vers le périphérique multimédia.
Ce système est avantageux en ce qu'il est particulièrement adapté pour la mise en œuvre d'un procédé selon l'invention, et permet ainsi d'améliorer la qual ité du son et/ou de la vidéo compris dans un flux multimédia lors de l'émission de ce dernier.
D'autres aspects, buts et avantages de l'invention apparaîtront à la lecture de la description de quelques uns de ses modes de réalisation.
L'invention sera également mieux comprise à l'aide des dessins, sur lesquels :
la figure 1 illustre un système d'émission de flux multimédia selon un mode de réalisation;
la figure 2 illustre schématiquement le contenu d'une mémoire MEM selon un mode de réalisation;
- la figure 3 illustre un procédé d'émission de flux multimédia selon un mode de réalisation;
la figure 4 illustre l'architecture d'un système selon un mode de réalisation;
la figure 5 illustre une procédure d'initialisation d'un procédé selon un mode de réalisation;
- la figure 6 illustre une lecture audio selon un mode de réalisation; la figure 7 illustre une mise en pause automatique selon un mode de réalisation;
la figure 8 illustre un procédé de détection et de traitement de fin d'émission d'un morceau de musique selon un mode de réalisation; - la figure 9 illustre un procédé d'arrêt d'émission d'un morceau de musique selon un mode de réalisation;
la figure 10 illustre une mémoire tampon en espace noyau, selon un mode de réalisation. Dans les figures décrites ci-dessous, les modes de réalisation se rapportent souvent à une flux audio, mais ces modes de réal isation s'appliquent également à d'autres types de flux.
La figure 1 illustre un ordinateur PC comprenant un disque dur HDD, un périphérique multimédia MDEV et une carte mère. Selon une variante, le périphérique multimédia MDEV peut être intégré à la carte mère. Le périphérique multimédia MDEV comprend un convertisseur numérique analogique DAC, par exemple pour convertir une donnée numérique issue d'un flux multimédia MUS (codant de la musique, qui peut être la partie audio d'un flux vidéo) en une tension électrique apte à commander un haut parleur (afin de restituer à l'aide du haut parleur la musique encodée dans le flux multimédia MUS, le cas échéant après amplification par un amplificateur). Les dispositifs de fixation du disque dur HDD et du périphérique multimédia ne sont pas représentés.
La carte mère est équipée d'un processeur MP (dont le système de refroidissement n'est pas représenté) et d'au moins une barrette de mémoire vive MEM (par exemple une barrette DIMM de DDR3 SDRAM).
La carte mère est également équipée de cinq circuits AL_C, REC_C, EM_C, RES_C et SND_C. Ces circuits sont représentés sous forme de composants électroniques discrets distincts. Cependant, selon une mise en œuvre possible, les fonctions de ces cinq circuits sont remplies par un seul circuit assurant ces différentes fonctions. Selon une mise en œuvre possible les cinq circuits sont mis en œuvre par un circuit consistant en la réunion du processeur MP et de la mémoire MEM contenant des programmes spécifiques, d'une manière décrite plus précisément dans la suite de la description.
La carte mère comprend également un connecteur de stockage (SATA,
SCSI ou IDE par exemple), non représenté, pour connecter le disque dur HDD, et un connecteur de cartes d'extensions (par exemple un connecteur PCI, PCI Express ou AGP), non représenté, pour connecter notamment le périphérique multimédia MDEV.
Un bus (non représenté) relie les différents composants de la carte mère
(notamment le microprocesseur MP, la mémoire MEM, le périphérique multimédia MDEV, le disque dur HDD, et les différents circuits AL_C, REC_C, EM_C, RES_C et SND_C).
La figure 2 illustre schématiquement le contenu d'une mémoire MEM selon un mode de réalisation possible. La mémoire représentée est adressée en mode 32-bit (ce qu'illustre l'adresse initiale 0x00000000), mais peut bien sûr être adressée en 64-bit ou selon tout autre adressage approprié. La mémoire MEM contient, à partir d'une première adresse physique, un code exécutable correspondant à un lecteur multimédia MPL implémenté sous forme logicielle. La mémoire MEM contient, à partir d'une deuxième adresse physique, un code exécutable correspondant à un module multimédia MM. Ce module multimédia MM contient une interface INT, qui peut prendre la forme d'une API, à savoir un ensemble normalisé de classes, de méthodes ou de fonctions qui sert de façade par laquelle un logiciel offre des services à d'autres logiciels. La mémoire MEM contient, à partir d'une troisième adresse physique, un code exécutable correspondant à une mémoire tampon BUF. Le
noyau étant normalement chargé avant les applications utilisateur, la mémoire nécessaire pour le module multimédia MM et son interface INT est en principe allouée avant la mémoire nécessaire pour le lecteur multimédia MPL. Il est donc possible que l'adresse physique du bloc mémoire contenant le module multimédia MM soit inférieure à l'adresse physique du bloc mémoire contenant le lecteur multimédia MPL (les positions relatives des blocs mémoire sur la figure 2, qui montrent une configuration inverse, ne sont qu'illustratives). Les trois plages mémoire stockant les informations précitées sont représentées chacune comme étant des plages continues. Cependant, en pratique elles ne le sont pas nécessairement. Ainsi, si la mémoire tampon est généralement allouée de façon continue, en un seul bloc (c'est-à-dire que toute adresse correspondant à une donnée de la mémoire tampon est immédiatement voisine d'au moins une autre adresse contenant une donnée de la mémoire tampon), ce n'est souvent pas le cas en ce qui concerne le module multimédia MM ou le lecteur multimédia MPL, qui peuvent chacun être chargés dans un ensemble de plusieurs blocs mémoire non contigus (espacés par des zones de mémoire non allouées, ou allouées à d'autres applications). Par ailleurs, la figure 2 représente des informations stockées en fonction de leurs adresses physiques. Les adresses virtuelles (qui sont habituellement distribuées par un MMU intégré au processeur et qui permettent de faire abstraction des adresses physiques) peuvent être différentes des adresses physiques (et le sont habituellement).
La figure 3 illustre un procédé d'émission de flux multimédia selon un mode de réalisation possible.
Lors d'une étape de réservation exclusive RES, un module multimédia MM effectue une réservation exclusive d'un périphérique multimédia MDEV. Une flèche est dirigée symboliquement du module multimédia MM vers le périphérique multimédia MDEV. Selon une m ise en œuvre possible, le périphérique multimédia reçoit ainsi une requête qu'il traite par exemple à l'aide d'un microcontrôleur intégré au périphérique multimédia. Mais la réservation exclusive n'atteint pas nécessairement le périphérique multimédia.
Selon une mise en œuvre possible, la requête est par exemple dirigée vers un pilote de périphérique du périphérique multimédia, qui gère la réservation exclusive du périphérique multimédia et peut même ne pas informer le périphérique multimédia de sa réservation exclusive. A l'issue de l'émission d'un flux multimédia pris dans son ensemble (par exemple un film entier), le module multimédia peut procéder automatiquement à une libération du périphérique multimédia (afin de faire cesser la réservation exclusive).
Lors d'une étape AL d'allocation (pouvant suivre ou précéder l'étape RES de réservation exclusive), le module multimédia MM effectue une allocation d'une mémoire tampon BUF de grande taille en espace noyau.
Lors d'une étape REC de réception de flux multiméd ia, le module multimédia MM reçoit (sous forme de bloc de données) un extrait de flux multimédia (par exemple quelques secondes de musique MUS ou de vidéo MOV) de la part d'un lecteur multimédia MPL. Il enregistre cet extrait dans la mémoire tampon BUF. Il reçoit le cas échéant de tels extraits tant que la mémoire tampon n'est pas remplie.
Lors d'une étape EM d'émission de flux multimédia, le module multimédia MM émet (sous forme de bloc de données) un extrait de flux multimédia contenu dans la mémoire tampon BUF vers le périphérique multimédia MDEV. Dès que, la mémoire tampon ayant été remplie, une partie de son contenu a ainsi été émise, le module multimédia MM est agencé pour recevoir à nouveau des extraits de flux multimédia tant que la mémoire tampon n'est pas à nouveau remplie. Les parties de flux multimédia émises ne coïncident pas nécessairement exactement avec les parties de flux multimédia reçues. Il est par exemple possible de recevoir un flux multimédia par blocs de 3 kilooctets et de les émettre par blocs de 2 kilooctets. La taille des blocs reçus et émis n'est d'ailleurs pas nécessairement constante. Ainsi, bien que le flux reçu et le flux émis soient globalement identiques, leur découpage (en blocs de données pour la réception et en blocs de données pour l'émission) ne l'est pas nécessairement.
Par commodité d'écriture, il sera fait référence à des parties de flux de multimédia par l'expression "flux multimédia". En effet, une partie de flux
multimédia reste un flux multimédia.
Lors d'une étape d'envoi SND, le lecteur multimédia (MPL) communique, via une interface (INT) du module multimédia MM, une demande de sélection d'une position de lecture quelconque dans la mémoire tampon (BUF). Malgré la grande taille de la mémoire tampon, il est ainsi possible d'effectuer par exemple une avance rapide sans qu'il ne soit nécessaire d'attendre la lecture de la mémoire tampon (à défaut il conviendrait d'attendre l'émission de la totalité du flux contenu dans la mémoire tampon) ni de charger de nouvelles données dans la mémoire tampon.
La figure 4 illustre l'arch itecture d'un système selon u n mode de réalisation. Une application audio MPL qui est chargée au niveau applicatif (en espace utilisateur) lit une grande quantité de données représentant un morceau de musique depuis une source de données audio (DVD, serveur distant, fichier local, etc.). Elle transfère alors ces données sous forme de petits paquets dans une mémoire tampon BUF d'un lecteur audio MM (un type particulier de module multimédia) qu i est chargé au niveau du noyau (en espace noyau). Elle opère ce transfert de données via une interface INT, qui lui sert également à envoyer des commandes au lecteur audio du noyau MM et à recevoir de sa part des notifications. Le lecteur audio du noyau MM transfère à son tour ces données à un pilote de périphérique DRV d'un périphérique audio MDEV. Le pilote de périphérique DRV est soit externe au lecteur audio du noyau MM soit directement intégré au lecteur audio du noyau MM. Les données sont alors transférées à une interface d'entrée/sortie IO, puis au périphérique audio MDEV.
La figure 5 illustre une procédure d'initialisation d'un procédé selon un mode de réalisation.
Une application audio MPL exécutée en espace utilisateur envoie une requête HQ_MOD à un lecteur aud io MM du noyau (exécuté en espace noyau) pour passer en mode de lecture audiophile (mode haute qualité). Si
nécessaire, l'application audio MPL charge préalablement le lecteur audio du noyau MM en espace noyau.
Le lecteur audio du noyau MM envoie une requête S_RES de réservation exclusive d'un périphérique audio MDEV à un service audio du noyau. Cette requête conduit à une déconnexion du reste du système audio afin de neutraliser toute autre demande adressée au périphérique audio MDEV et ne venant pas du lecteur audio du noyau. Le service audio du noyau répond au lecteur audio du noyau MM en transmettant une notification S_RES_OK indiquant que la réservation exclusive a été correctement effectuée. Le lecteur audio du noyau MM envoie une requête REQ_F au périphérique audio MDEV afin qu'il lui communique les différents formats qu'il supporte (fréquence d'échantillonnage à 44, 1 kHz pour une qualité CD, à 96 kHz, nombre de canaux supportés, etc.). Ce dernier répond en envoyant les formats supportés dans un message SND_F. Le lecteur audio du noyau MM effectue alors une allocation AL d'une mémoire tampon BUF utilisée pour les données audio. Cette mémoire tampon est une mémoire tampon de grande taille (au moins dix secondes de données audio).
Le lecteur audio du noyau MM signale alors à l'application audio MPL, à l'aide d'un message HQ_MOD_OK, que le passage en mode audiophile a été correctement effectué.
La figure 6 illustre un procédé de lecture audio selon un mode de réalisation. Afin de diffuser un morceau de musique MUS, une application audio MPL commence par envoyer un message de configuration CONF1 à un lecteur audio du noyau MM. Le contenu de ce message peut être déterminé lors d'une procédure d'initialisation telle que représentée sur la figure 5. Le message de configuration CONF1 peut ainsi préciser par exemple que le morceau de musique qui sera transmis est échantillonné sur 24 bits, à une fréquence de 96 kHz, et qu'il est stéréophonique. Bien entendu, d'autres formats peuvent être
employés. Le lecteur audio du noyau MM transmet à son tour un message de configuration CONF2 à un périphérique audio MDEV. Ce message CONF2 peut reprendre les éléments reçus dans le message CONF1 , et peut le cas échéant faire l'objet d'un traitement préalable. Une fois la configuration effectuée, le périphérique audio MDEV répond que celle-ci s'est bien déroulée par un message OK2 à destination du lecteur audio du noyau MM qui en informe à son tour l'application audio MPL à l'aide d'un message OK1 .
L'application audio MPL procède alors (étape LD) à un chargement de données audio dans la mémoire tampon BUF du lecteur audio du noyau MM. Dès que suffisamment de données ont été chargées (par exemple une quantité de données correspondant à au moins une seconde de musique), l'application audio MPL envoie un message RD1 au lecteur audio du noyau MM afin de lui demander de démarrer la lecture des données audio (c'est-à- dire leur émission à destination du périphérique audio MDEV en vue de sa diffusion sur des hauts parleurs). Le lecteur audio du noyau MM démarre la lecture en envoyant un message RD2 au périphérique audio MDEV.
Le procédé de lecture déclenche alors une boucle qui se répète en principe jusqu'à ce que la fin des données audio du morceau de musique à jouer soit atteinte (c'est-à-dire jusqu'à ce que tout le morceau de musique ait été traité). Cette boucle comprend l'envoi, par le périphérique audio MDEV au lecteur audio du noyau MM, d'une requête RQ_PK demandant l'envoi d'un paquet de données audio. Le lecteur audio répond en envoyant le paquet demandé à l'aide d'un message SND_PK, et incrémente (à une étape INC) la position de lecture dans la mémoire tampon du noyau BUF afin que la lecture suivante dans cette mémoire tampon du noyau corresponde au début du paquet suivant. Les paquets transmis sont construits à partir des données extraites de la mémoire tampon. Selon une mise en œuvre possible les paquets comprennent d'autres informations (telles qu'un en-tête indiquant par exemple une taille de paquet, un code de redondance cyclique, etc.). Selon une variante, aucune requête RQ_PK n'est envoyée, et le périphérique audio MDEV comprend un convertisseur numérique analogique DAC fonctionnant de façon synchrone. Le lecteur aud io du noyau MM est alors agencé pour
envoyer les données audio sans requête, en décidant de lui même de la fréquence d'envoi, en fonction des paramètres du périphérique audio MDEV.
Périodiquement (par exemple toutes les secondes), le lecteur audio du noyau MM notifie l'application audio MPL de la position de lecture à l'aide d'un message NOT_POS. Alternativement (ou en complément, lorsque cela s'avère utile), l'application audio MPL peut elle-même accéder à cette information par exemple à l'aide de l'interface INT du lecteur audio du noyau (sans attendre de recevoir une notification).
L'application audio MPL, en fonction des notifications NOT_POS qu'elle a reçues et/ou des informations de flux qu'elle a lues directement (sans recourir à de telles notifications), remplit (étape CONT_LD) la mémoire tampon du noyau BUF (tant que le morceau de musique n'a pas été complètement diffusé).
La figure 7 illustre une mise en pause automatique en cas d'attente de données, selon un mode de réalisation.
Le lecteur audio du noyau MM est agencé pour détecter que la position de lecture par le lecteur audio du noyau MM dans la mémoire tampon du noyau BUF atteint une position correspondant à la fin des données audio chargées, mais qui n'est ni la position de la fin du morceau, ni celle de la fin de la mémoire tampon. Il opère par exemple cette détection par la détection d'un événement EMPTY_BUF (événement déclenché lorsque l'incrémentation INC de la position de lecture illustrée à la figure 6 atteint la position de fin des données audio dans la mémoire tampon), ou d'une interruption logicielle, ou par une boucle de test en continu effectuée par un thread séparé (un thread est parfois appelé une "tâche" ou un "fil d'exécution" en français).
Le lecteur audio du noyau envoie alors au périphérique audio MDEV une requête RQ_PSE de mise en pause (afin que le périphérique audio cesse de solliciter des paquets audio). Le périphérique audio MDEV répond par un message PSE_OK que la mise en pause s'est bien déroulée. Le lecteur audio du noyau MM notifie alors l'application audio MPL, par une notification
NOT_PSE, que le périphérique audio MDEV s'est mis en pause faute de données. Selon une mise en œuvre alternative, au lieu d'envoyer une requête RQ_PSE de mise en pause au périphérique audio MDEV, le lecteur audio du noyau MM lui envoie des paquets de "silence" (c'est-à-dire des paquets contenant des échantillons constants représentant un signal nul, correspondant à du silence) jusqu'à ce que la mémoire tampon BUF ait à nouveau suffisamment de données. Cette alternative présente l'avantage d'une interopérabilité accrue avec tout type de périphérique audio (le périphérique audio ne se rendant pas compte de la mise en pause, qui est simulée).
Le lecteur audio du noyau continue pendant ce temps de vérifier le contenu de la mémoire tampon du noyau par un mécanisme analogue à celui qui lui permet de détecter qu'il n'y a plus de données dans cette mémoire tampon du noyau. Dès qu'une quantité suffisante de données est détectée, par exemple à l'aide d'un événement BUF_FILL, le lecteur du noyau transmet un message RES_RD au périphérique audio MDEV afin que celui-ci reprenne la lecture. Le péri phériq ue aud io M DEV répond à l'a ide d'u n message RES_RD_OK qu'il a bien repris la lecture, ce que le lecteur audio du noyau MM notifie à l'application audio MPL à l'aide d'une notification NOT_RD.
La figure 8 illustre un procédé de détection et de traitement de fin d'émission d'un morceau de musique selon un mode de réalisation.
Un lecteur audio du noyau MM est agencé pour détecter que la position de lecture par le lecteur audio du noyau MM dans une mémoire tampon du noyau BUF atteint une position correspondant à la fin de cette mémoire tampon, ou à la fin d'un morceau joué. Il opère par exemple cette détection par la détection d'un événement REACH_END, par une interruption logicielle, ou par une boucle de test en continu effectuée par un thread séparé.
Le lecteur audio du noyau envoie alors à une application audio MPL une notification NOT_END de fin de lecture de la mémoire tampon du noyau ou de fin de lecture du morceau
L'application audio MPL vérifie alors (étape TST_MORE_DAT) si des données audio sont présentes après cette position, ou dans une mémoire tampon suivante (lorsqu'il y a plusieurs mémoires tampon). Si c'est le cas, elle continue la lecture à partir de la mémoire tampon courante ou suivante, selon le cas (étape CONT RD). Sinon (étape NO_MORE_DAT), le lecteur audio du noyau envoie au périphérique audio MDEV une requête PSE de mise en pause (afin que le périphérique audio cesse de solliciter des paquets audio). Le périphérique audio MDEV répond par un message OK_PSE que la mise en pause s'est bien déroulée. Le lecteur audio du noyau MM notifie alors l'application audio MPL, par une notification NOTIF_P, que le périphérique audio MDEV s'est mis en pause faute de données. Selon une mise en œuvre alternative, au lieu d'envoyer une requête PSE de m ise en pause au périphérique audio MDEV, le lecteur audio du noyau MM lu i envoie des paquets de silence, de la manière précédemment indiquée. Ceci permet notamment de passer automatiquement de la lecture de la fin d'un morceau à la lecture du début d'un morceau suivant.
La figure 9 illustre un procédé d'arrêt d'émission d'un morceau de musique selon un mode de réalisation. Une application audio MPL requiert d'un lecteur audio du noyau MM qu'il arrête la lecture d'un morceau de musique par un périphérique audio MDEV, à l'aide d'une requête RQ_STP1 . Le lecteur audio du noyau MM requiert du périphérique audio MDEV qu'il arrête la lecture du morceau de musique, à l'aide d'une requête RQ_STP2. Le périphérique audio MDEV répond au lecteur audio du noyau MM qu'il a arrêté la lecture à l'aide d'un message STP2_OK. Le lecteur audio du noyau MM notifie l'application audio MPL qu'il a arrêté la lecture à l'aide d'un message STP1_OK.
L'application audio MPL demande alors au lecteur audio MM, à l'aide d'un message RQ_NM, qu'il revienne en mode normal (non audiophile).
Le lecteur audio du noyau MM demande à un service audio du noyau, à
l'aide d'une requête RQ_RECONF1 , une reconfiguration du périphérique audio MDEV. Le service audio du noyau demande au périphérique audio MDEV, à l'aide d'une requête RQ_RECONF2, la reconfiguration requise. Le périphérique audio MDEV répond au service audio du noyau, à l'aide d'une notification RECONF2_OK qu'il s'est bien reconfiguré. Le service audio du noyau notifie le lecteur audio du noyau MM, à l'aide d'une notification RECONF1_OK que le périphérique audio MDEV est bien reconfiguré (et prêt à être utilisé de nouveau).
Le lecteur audio du noyau MM demande alors au service audio du noyau, à l'aide d'une requête RQ_FR, qu'il fasse cesser la réservation exclusive du périphérique audio MDEV. Le service audio du noyau répond à l'aide d'une notification FR_OK qu'il a bien fait cesser cette réservation exclusive. Le lecteur audio du noyau MM en notifie l'application audio MPL.
Le lecteur audio du noyau MM peut alors être déchargé du noyau, et il peut auparavant libérer la mémoire tampon en mode noyau (étape UNLD). Le contrôle du périphérique audio MDEV peut alors être rendu au système d'exploitation.
La figure 10 illustre une mémoire tampon en espace noyau, selon un mode de réalisation. La mémoire tampon illustrée comprend des données audio en cours de lecture. La position de lecture courante est identifiée par un pointeur RD_POS. La fin des données audio chargées dans la mémoire tampon est identifiée par un pointeur POS_END_LD_AU. La position de fin du morceau (à supposer qu'elle se situe dans la mémoire tampon) est identifiée par un pointeur POS_END_AU. La position de fin de mémoire tampon est identifiée par un pointeur POS_END_BUF.
Un premier mode de réalisation se rapporte à un procédé d'émission de flux multimédia (tel qu'un flux de musique MUS, ou de vidéo MOV) via un périphérique multimédia MDEV d'un ordinateur PC.
Selon une mise en œuvre possible, le périphérique multimédia, qui est un dispositif matériel (par exemple une carte son, une carte graphique, ou encore la combinaison des deux), fait partie intégrante de l'ordinateur. Selon une mise en œuvre alternative, le périphérique multimédia est extérieur à l'ordinateur et lui est simplement connecté (par lien filaire ou sans fil).
L'ordinateur est par exemple un ordinateur personnel (portable ou de bureau), mais il peut également s'agir par exemple d'un téléphone portable, d'une tablette, d'un lecteur MP3, d'une montre connectée, d'un serveur ou encore d'un lecteur réseau. Selon une mise en œuvre possible, un tel lecteur réseau constitue tout ou partie d'un boîtier intégré contenant à la fois une partie ordinateur (apte à lire un flux multimédia depuis un stockage interne et/ou depuis un réseau informatique) et une partie Hifi apte à restituer un flux multimédia d'une manière perceptible par une oreille humaine.
L'ordinateur comprend au moins un processeur MP apte à fonctionner en mode utilisateur et en mode superviseur (il peut s'agir d'un processeur multicœur ou monocœur). En mode utilisateur, le processeur vérifie de manière assez stricte (sous le contrôle du système d'exploitation) l'accès au ressources (mémoire, périphériques, etc.), ce qui permet d'éviter notamment qu'un logiciel (exécuté dans ce mode utilisateur) accapare des ressources, provoque un plantage de l'ordinateur, ou obtienne des accès à des informations confidentielles auxquelles il n'est pas censé accéder. Ce mode utilisateur est donc le mode par défaut utilisé par les logiciels. Cependant, le fait que le mode utilisateur soit sujet à des contrôles accrus signifie que ce mode utilisateur est plus lent et moins réactif. Lorsque de la mémoire est allouée par un logiciel exécuté en mode utilisateur, elle est allouée dans l'espace utilisateur (un espace dans lequel la mémoire des autres logiciels et du système d'exploitation n'est pas accessible). Lorsque de la mémoire est allouée en mode superviseur, elle est allouée dans l'espace noyau, qui est un espace dans lequel toutes les ressources sont visibles. Dans l'espace noyau, il est ainsi possible de consulter les portions de mémoire physique utilisées par tous les logiciels exécutés par l'ordinateur, et même d'y apporter des modifications (effacer des informations, les remplacer, etc.), ce qu i peut s'avérer très dangereux. En mode superviseur (dit également mode noyau), le
processeur a ainsi un accès quasiment illimité aux ressources de l'ordinateur, notamment à sa mémoire. Le mode noyau est donc en principe réservé au noyau du système d'exploitation, noyau qui gère des fonctions bas niveau (pilotes de périphériques, accès au matériel, etc.).
Selon le premier mode de réalisation, l'ordinateur comprend un support de stockage (tel qu'un disque dur magnétique HDD, ou encore un SSD, parfois appelé disque électronique, composé de mémoire telle que de la mémoire flash, ou toute autre type de support de stockage) lisible par le processeur et stockant un module multimédia MM. Le module multimédia MM est par exemple le résultat de la compilation d'un programme écrit dans un langage assurant des performances assez élevées (par contraste avec certains langages interprétés par exemple), tel que le langage C ou C++. Le module multimédia peut même être le résultat de l'assemblage d'un logiciel écrit directement en assembleur, ce qui peut permettre une optimisation supplémentaire des performances. Le module multimédia peut aussi être mixte, au sens où il peut résulter de la compilation d'un programme écrit pour partie dans un langage tel que le langage C mais dont certaines parties (critiques du point de vue de la performance) sont écrites directement en assembleur.
Le module multimédia MM est conçu pour être exécuté par le processeur
MP en mode superviseur. Ce module multimédia est par exemple intégré au noyau d'un système d'exploitation installé sur l'ordinateur, qui peut être un système d'exploitation conventionnel, par exemple du type Microsoft Windows, Linux, OS X, Android, iOS, Windows Phone, BlackBerry, Symbian, etc. Ce module multimédia peut par exemple être intégré à un pilote de périphérique, notamment à un pilote de périphérique gérant le périphérique multimédia MDEV. Ce module multimédia peut alternativement être installé au même niveau qu'un tel pilote de périphérique (sans y être intégré). Le module multimédia peut également être intégré dans une extension du noyau chargée dynamiquement (à la demande), ou être intégré directement à l'intérieur d'un noyau monolithique (il est ainsi possible de compiler un noyau spécialement pour cet usage). L'exécution du module multimédia en mode superviseur lui confère des performances accrues. Il peut en particulier jouir d'une priorité sur
d'autres modules exécutés en parallèle mais en mode utilisateur. L'exécution en mode superviseur permet d'améliorer la vitesse de réponse à des sollicitations du périphérique multimédia (qui peut notamment émettre des requêtes pour recevoir la suite d'un flux multimédia qu'il est en train de jouer). Ceci améliore la précision temporelle du signal porté par le flux multimédia, grâce à la priorité du module multimédia sur tous les modules exécutés en mode utilisateur, d'autant plus que l'exécution du processus de réponse ne nécessite pas dans ce cas d'appeler des routines présentes en mode utilisateur. L'activité nécessaire à l'émission du flux multimédia en mode superviseur étant inférieure à l'activité nécessaire à l'ém ission du flux multimédia en mode utilisateur, elle permet de réduire les parasites (notamment électromagnétiques) liés à cette activité.
Le procédé d'émission comprend une mise en œuvre, par le module multimédia, d'une allocation, en espace noyau, d'une (ou, alternativement, de plusieurs) mémoire(s) tampon BUF agencée(s) pour contenir (collectivement, s'il y en a plusieurs) au moins dix secondes de flux multimédia. Cette mémoire tampon, en plus de se situer en espace noyau, a ainsi une taille beaucoup plus élevée que dans l'art antérieur ce qui permet d'assurer une continuité lors de rémission d'un flux multimédia. Le flux multimédia émis par le module multimédia vers le périphérique multimédia prend la forme de données, qui sont, avant d'atteindre le périphérique multimédia, susceptibles de transiter par plusieurs éléments intermédiaires, notamment par un pilote de périphérique du périphérique multimédia et par des modules d'un noyau d'un système d'exploitation de l'ordinateur. De nouvelles données sont régulièrement stockées dans la mémoire tampon (susceptible d'être utilisée par de tels modules du noyau) afin d'assurer la continuité de l'émission du flux multimédia. L'utilisation d'une taille non conventionnelle (correspondant à au moins dix secondes de fl ux multimédia) pour cette mémoire tampon permet notamment de réaliser des transferts de données (depuis une source de flux multimédia, telle qu'un lecteur multimédia, vers le module multimédia) de taille unitaire bien plus importante, et donc de réduire fortement le nombre de ces transferts pendant
l'émission des données multimédia vers le périphérique multimédia. Cela limite donc fortement l'activité supplémentaire générée pour requérir de nouvelles données et les transmettre. Ceci réduit corrélativement les interférences électromagnétiques générées par cette activité supplémentaire. La grande taille de la mémoire tampon est ainsi avantageuse en ce qu'une perturbation quelconque empêchant temporairement l'obtention de données depuis une source multimédia peut être compensée pendant une durée pouvant aller jusqu'à dix secondes au minimum.
Selon une mise en œuvre possible, le seuil de dix secondes n'est pas strict et doit s'entendre comme signifiant : environ dix secondes (à titre d'exemple, neuf secondes peuvent suffire). La durée des mémoires tampon de l'art antérieur est inférieure à une seconde, et celle de la mémoire tampon selon l'invention s'en distingue en ce qu'elle est beaucoup plus longue (au minimum dix fois plus longue).
Une telle durée (au minimum une dizaine de secondes) paraît suffisante pour contrer les effets sur l'émission d'un flux multimédia de phénomènes susceptibles de ralentir ou perturber fortement mais très temporairement l'ordinateur. De tels phénomènes peuvent être liés par exemple à un manque temporaire de mémoire vive. Dans une telle hypothèse, il est courant de recourir à une mémoire virtuelle complétant la mémoire vive insuffisante. Cette mémoire virtuelle s'appuie sur un support de stockage de masse, beaucoup plus lent que la mémoire vive mais de capacité beaucoup plus importante (typiquement, un disque dur). Si une portion de flux multimédia à émettre se trouve en mémoire virtuelle, il est nécessaire pour y accéder d'effectuer une opération dite de "swap mémoire" (le mot "swap" signifiant "échange" en anglais) au cours de laquelle les données représentant la portion de flux multimédia stockées en mémoire de masse (par exemple sur un disque dur) sont chargées en mémoire vive en remplacement de données qui s'avèrent ne pas avoir été utilisées depuis longtemps. Cette opération de "swap mémoire", qui peut être longue, peut alors provoquer (dans le cadre des solutions antérieures) une coupure dans l'émission du flux multimédia. Le recours à une mémoire tampon de taille importante permet d'absorber des opérations de
"swap mémoire" ponctuellement requises sans interruption dans l'émission du flux multimédia. De tels phénomènes peuvent également être liés à des phases préparatoires à l'exécution automatique de tâches de fond. Ils peuvent être dus notamment à un logiciel antivirus, à un log iciel d'arch ivage automatique de données (copiant les données nouvellement inscrites sur un disque dur de l'ordinateur vers un support d'archivage), à une maintenance automatique de disque dur (telle qu'une défragmentation), à une recherche automatique de mises à jour de logiciels installés sur l'ordinateur, etc. Ces phases préparatoires, même si elles ne conduisent pas à dépasser les capacités de la mémoire vive, peuvent conduire à solliciter le processeur de manière importante. Le fait d'opérer en mode superviseur permet alors de garantir une disponibilité du processeur supérieure à celle qui serait accordée à un module exécuté en mode utilisateur, et de réduire ainsi la probabilité que rémission du flux multimédia soit affectée. Par ailleurs, même si la source du flux multimédia (qui peut le cas échéant mettre en œuvre des modules exécutés en mode utilisateur) est temporairement tarie par une telle phase préparatoire, la mémoire tampon de taille importante permet de compenser un tel tarissement pendant au moins dix secondes.
Le procédé d'émission comprend une mise en œuvre, par le module multimédia, d'une réception d'un flux multimédia (par exemple depuis un serveur distant, via un réseau, ou encore depuis un stockage local tel qu'un disque dur local ou une clé USB), et de son stockage dans la mémoire tampon. Ce flux multimédia est entendu comme une portion de flux multimédia correspondant aux capacités de la mémoire tampon. Ainsi, il est possible de conserver en continu au moins dix secondes de flux multimédia, et au fur et à mesure que le contenu de la mémoire tampon est émis, il est remplacé par une portion suivante de flux multimédia, reçue de manière analogue à la réception précitée, de manière à remplir en permanence autant que possible la mémoire tampon.
Le procédé d'émission comprend une mise en œuvre, par le module multimédia, d'une émission d'un flux multimédia stocké dans la mémoire tampon BUF vers le périphérique multimédia. Selon une mise en œuvre possible, cette émission s'opère par transmission de petits paquets de flux
multimédia issus de la mémoire tampon BUF, la taille desdits paquets étant fixée par périphérique multimédia MDEV.
Le flux multimédia peut provenir de toute origine. Il peut provenir d'un fichier stocké dans l'ordinateur, mais il peut également provenir d'une entité externe, par exemple d'un serveur distant (par exemple à l'aide d'une technique dite de "streaming", parfois appelée en français flux direct, diffusion en flux, lecture en continu, lecture en transit ou encore diffusion en mode continu).
Selon un deuxième mode de réalisation, un procédé d'émission de flux multimédia selon le premier mode de réalisation comprend une m ise en œuvre, par le module multimédia MM, d'une réservation exclusive RES du périphérique multimédia MDEV pendant l'émission du flux multimédia. Ainsi, aucun autre logiciel n'est susceptible d'interférer avec le module multimédia MM lorsque (tant que) ce dernier émet un flux à destination du périphérique multimédia MDEV en sollicitant un accès concurrent à ce même périphérique multimédia. Par exemple, dans l'hypothèse où le périphérique multimédia est une carte son, la réception d'un email dans un log iciel de messagerie électronique ne sera pas susceptible de déclencher un son intempestif de nature non seulement à se superposer avec (ou à interrompre) l'émission du flux multimédia, mais aussi de nature à perturber une telle émission (par exemple en générant des parasites liés au fait que le logiciel de messagerie tente d'accéder au même périphérique multimédia et consomme ainsi des ressources de ce périphérique multimédia). Selon une mise en œuvre possible, l'émission de flux multimédia est continue (sauf intervention d'un utilisateur requérant par exemple une pause), et la réservation reste exclusive jusqu'à la fin de l'émission de la totalité du flux multimédia considéré (par exemple jusqu'à la fin de la diffusion complète d'un film entier). Ainsi, la réservation exclusive peut s'opérer comme préalable à la diffusion du flux multimédia entier (juste avant le début d'un film par exemple), et subsister pendant tout le film (qui comprend de nombreuses réceptions de parties de flux multimédias et émission de parties de flux multimédias), sans
qu'il ne soit nécessaire d'effectuer à nouveau un réservation exclusive à chaque réception d'une nouvelle partie de flux multimédia (la réservation exclusive initiale perdure).
Selon une mise en œuvre possible, la réservation exclusive s'opère au niveau du noyau d'un système d'exploitation installé sur l'ordinateur. Cette mise en œuvre comprend le remplacement d'un pilote du périphérique multimédia ou d'un module du noyau contrôlant le périphérique multimédia par un nouveau pilote de périphérique (respectivement un nouveau module du noyau) intégrant une fonction permettant de refuser toute connexion d'une application autre qu'une source multimédia déterminée. La source multimédia est par exemple un lecteur multimédia (prenant la forme d'un module applicatif), seul ce module applicatif étant autorisé par le nouveau pilote de périphérique (respectivement driver). Selon une mise en œuvre possible, la fonction prend en paramètre d'entrée un identifiant de la source multimédia ainsi qu'un bit dont une valeur indique qu'une réservation exclusive est requise, et l'autre valeur indique que la réservation exclusive n'est plus requise. Selon une mise en œuvre possible, cette fonction est sécurisée, par exemple en prédéfinissant la ou les sources multimédia habilitée(s) à requérir une réservation exclusive et en interdisant à toute application autre que figurant dans la liste d'applications autorisées ainsi prédéfinies d'effectuer une réservation exclusive. Selon une m ise en œuvre possible, il n'y a qu'une source autorisée, et la fonction ne prend pas en paramètre d'entrée l'identifiant de cette source. Selon une mise en œuvre possible, l'ensemble (ou alternativement une partie) des fonctions du pilote de périphériques (respectivement du module du noyau) se rapportant à l'ém ission de flux multimédia est modifié pour que ces fonctions renvoient un code d'erreur lorsqu'une réservation exclusive a été effectuée et lorsqu'elle identifient que le module applicatif appelant n'est pas celui pour lequel une réservation exclusive a été demandée. Selon une autre mise en œuvre possible, la réservation exclusive s'opère au niveau du noyau d'un système d'exploitation installé sur l'ordinateur, de la façon suivante. Un module d'interface qui réalise l'interface entre des modules
applicatifs et des pilotes de périphérique multimédia au niveau du noyau est remplacé par un nouveau module d'interface intégrant une fonction permettant de refuser toute connexion d'une application autre qu'une source multimédia déterminée, d'une manière similaire à celle indiquée au paragraphe précédent. Selon une autre mise en œuvre possible, la réservation exclusive s'opère au niveau applicatif d'un système d'exploitation installé sur l'ordinateur. Le système d'exploitation fournit une fonction pour réserver un accès exclusif au périphérique multimédia. Une source multimédia telle que le lecteur multimédia applicatif appelle cette fonction du système d'exploitation afin d'opérer une réservation exclusive.
Selon une mise en œuvre possible, la mémoire tampon est une mémoire tampon cyclique. Le module multimédia maintient un pointeur de début de flux multimédia (pointant sur une partie de flux multimédia contenue dans la mémoire tampon cyclique et sur le point d'être émise) et un pointeur de fin de flux multimédia (pouvant être identique au pointeur de début de fl ux multimédia si la mémoire tampon cyclique est pleine).
Selon une convention de notation possible, on attribue la valeur zéro au pointeur de début de flux multimédia (indépendamment de l'adresse mémoire correspondant au début de flux multimédia). Par exemple, considérons une mémoire tampon cyclique de 1764000 octets (soit 0x1AEAA0 octets en notation hexadécimale), occupant une zone mémoire comprise de l'adresse 0x03000000 à l'adresse 0x031AEA9F. Une telle mémoire tampon cyclique peut ainsi contenir dix secondes de flux audio stéréo échantillonné à 16 bits par canal, à une fréquence de 44,1 kHz. Le début de flux multimédia peut ainsi se situer à n' im porte q uel le ad resse comprise entre 0x03000000 et 0x031AEA9F (par exemple, l'adresse 0x0305ABE6). Mais quelle que soit l'adresse @DFM de début de flux multimédia, on attribue conventionnellement la valeur zéro au pointeur sur ce début de flux multimédia. La valeur associée à tout autre pointeur pointant sur une adresse @Q quelconque située à l'intérieur de la mémoire tampon cyclique est alors définie conventionnellement comme étant égale à (@Q + SZBUF - @DFM) Mod SZBUF, SZBUF désignant
la taille de la mémoire tampon (par exemple 1764000 dans l'exemple ci- dessus). Si les deux pointeurs de début et de fin de flux multimédia ont des valeurs différentes, le module multimédia essaye de recevoir davantage de flux multimédia dans la mémoire tampon cyclique jusqu'à ce que les deux pointeurs aient une valeur identique. B ien q u e l 'ad resse mémoire correspondant au pointeur de début de flux multimédia ne cesse de changer au fur et à mesure de l'émission du contenu de la mémoire tampon, et ce de manière cyclique, on peut selon cette convention de notation lui attribuer en permanence la valeur de référence zéro.
Bien entendu, toute autre convention de notation est possible.
Selon un troisième mode de réalisation, le module multimédia MM d'un procédé d'émission de flux multimédia selon le premier ou deuxième mode de réalisation comprend u ne interface I NT accessi ble depu is u n lecteu r multimédia MPL exécuté par le processeur MP en mode utilisateur, le procédé d'émission comprenant un envoi SND au module multiméd ia MM , par le lecteur multimédia MPL, via ladite interface INT, d'une demande de sélection d'une position de lecture quelconque dans la mémoire tampon BUF. Ainsi, le module multimédia permet de sélectionner une position de lecture à une position arbitraire dans la mémoire tampon, et non simplement une position prédéfinie telle que le début de la mémoire tampon. Ceci est particulièrement avantageux compte-tenu de la taille de la mémoire tampon. Une telle sélection ne présente pas d'intérêt avec une mémoire tampon d'une taille conforme à celle des mémoires tampon de l'état de l'art, qui sont si courtes que sélectionner une position de lecture arbitraire n'a pas d'utilité.
Selon une autre mise en œuvre, la mémoire tampon est une mémoire tampon cyclique selon la mise en œuvre précitée, le module multimédia maintenant donc un pointeur de début de flux multimédia et un pointeur de fin de flux multimédia. La demande de sélection d'une position de lecture quelconque opère alors sur un troisième pointeur dont la valeur est comprise entre la valeur du pointeur de début de flux multimédia et la valeur du pointeur de fin de flux multimédia (lorsque les valeurs de ces pointeurs sont définies selon la convention de notation précitée). L'émission de flux multimédia depuis
la mémoire tampon cyclique s'opère alors à partir de l'adresse définie par ce troisième pointeur (lorsque la sélection est opérée) et non à partir du pointeur de début de flux multimédia. Ainsi, il est possible d'effectuer des avances rapides puis des reculs rapides sans avoir à être en mesure de recevoir davantage de flux multimédia, tant que ces avances et reculs rapides se cantonnent au contenu de la mémoire tampon cyclique. Sans ce troisième pointeur mettant en œuvre la sélection d'une position de lecture quelconque, une avance rapide suivie d'un recul rapide impliquerait, à défaut de fonctions particulières, un nouveau téléchargement. En effet, une fois le pointeur de début de flux multimédia déplacé pour une avance rapide, il n'est pas possible de le déplacer dans l'autre sens afin d'effectuer un recul rapide si l'on n'est pas en mesure de savoir quel contenu se trouve avant le pointeur de début de flux multimédia (le contenu précédent a pu être écrasé par la réception d'un autre contenu).
Selon une mise en œuvre possible, le module multimédia est agencé pour déclencher une temporisation à réception par l'interface INT d'une demande de sélection d'une position de lecture. Selon une mise en œuvre possible, la durée de la temporisation est du même ordre de grandeur que la durée maximale de flux multimédia que peut contenir la mémoire tampon . Cette temporisation est interrompue par toute nouvelle réception par l'interface INT d'une autre demande de sélection d'une position de lecture, réception qui déclenche à nouveau une telle temporisation (comme s'il n'y en avait pas eu précédemment). Durant la temporisation, le module multimédia s'interdit d'écraser une zone glissante (de la mémoire tampon cyclique) précédant initialement la nouvelle position sélectionnée (et se déplaçant par la suite au fur et à mesure que le contenu de la mémoire tampon cyclique est émis, de façon à précéder immédiatement l'échantillon courant qui est émis). Cette zone glissante contient initialement des données non émises du fait de la sélection d'une nouvelle position de lecture. Par la su ite, au cours de la temporisation, cette zone glissante contient de moins en moins de données non émises et de plus en plus de données déjà émises (mais qui pourraient devoir être réémises, selon les instructions de l'utilisateur du procédé d'émission). Plus précisément, le module multimédia cherche à remplir la
mémoire tampon à son maximum mais sans écrire, pendant la temporisation, dans la zone de mémoire tampon ainsi protégée. Selon une mise en œuvre, la taille maximale de cette zone protégée est fixée à une durée correspondant à la moitié de la durée maximale de flux multimédia comprise dans la mémoire tampon cyclique totale, soit par exemple cinq secondes. Toute autre durée supérieure à une seconde mais substantiellement inférieure à la taille de la mémoire tampon cyclique (par exemple 80% de la taille de la mémoire tampon cyclique) peut également être choisie.
Par exemple, considérons une mémoire tampon cyclique d'une minute, une durée de temporisation de deux minutes, et une taille maximale de zone à préserver de trente secondes. Supposons que la mémoire tampon est pleine (cas normal durant l'émission d'un flux multimédia, à moins qu'il y ait un problème ponctuel ou que l'on atteigne la fin du flux multimédia total). Si l'utilisateur du procédé d'émission souhaite avancer de vingt secondes (par exemple si le flux multimédia courant l'ennuie ou le choque et s'il souhaite le passer), l'interface INT reçoit une instruction aboutissant à avancer de vingt secondes. Au lieu d'écraser immédiatement (du moins dans la mesure ou le débit le permet) les données correspondant au vingt secondes non jouées, la temporisation permet de les préserver. Plus précisément, au tout début de l'avance rapide, le module multimédia ne peut pas préserver trente secondes puisqu'il ne dispose que des vingt dernières secondes (en raison de l'avance de vingt secondes) et il ne peut donc rien écrire pendant dix secondes. Puis pendant une minute et cinquante secondes, il s'assure de préserver les trente dernières secondes, et passé ce délai il remplit à nouveau complètement la mémoire tampon cyclique sans chercher à préserver les trente secondes précédant l'instant présent dans le flux multimédia. Da n s l a m êm e configuration, si l'utilisateur souhaite cette fois-ci avancer de quarante secondes au lieu de vingt secondes, l e mod u l e m u ltim éd ia peut immédiatement (dans la mesure où le débit le permet) écraser dix secondes de flux multimédia enregistré correspondant à un flux antérieur de plus de trente secondes à l'instant courant, et maintenir ensuite un minimum de trente secondes pendant les deux minutes suivantes. Une finalité de cette fonction est par exemple de permettre à un utilisateur qui a effectué une avance par
mégarde ou qui se rend compte qu'il a avancé davantage qu'il ne le souhaitait réellement d'avoir une garantie de pouvoir revenir en arrière instantanément même en cas de mauvaise liaison avec la source du flux multimédia, en particulier en présence d'une liaison très irrégulière, qui assure un débit moyen satisfaisant mais avec des interruptions très fréquentes.
Selon un quatrième mode de réalisation, le flux multimédia d'un procédé d'émission de flux multimédia selon l'un des modes de réalisation précédents est un flux audio MUS, et le périphérique multimédia MDEV comprend un convertisseur numérique analogique DAC. Ce mode de réalisation permet une émission audio de haute qualité (de type Hifi).
Selon un cinquième mode de réalisation, un programme d'ordinateur comprend une série d'instructions qui, lorsqu'elles sont exécutées par un processeur, mettent en œuvre un procédé selon l'un des modes de réalisation précédents. Ce programme d'ordinateur peut être écrit notamment en langage C, en langage C++, et ou en langage assembleur.
Selon un sixième mode de réalisation, un support de stockage non transitoire lisible par ordinateur (par exemple un disque dur HDD ou une mémoire non volatile, telle qu'une mémoire Flash ou EEPROM) comprend un programme d'ordinateur selon le cinquième mode de réalisation.
Selon un septième mode de réalisation, un système d'émission de flux multimédia comprend un ordinateur PC et un périphérique multimédia MDEV, l'ordinateur PC comprenant un processeur MP apte à fonctionner en mode utilisateur et en mode superviseur, l'ordinateur comprenant un support de stockage HDD lisible par le processeur MP et stockant un module multimédia MM, le module multimédia MM étant agencé pour être exécuté par le processeur MP en mode superviseur.
Le système d'émission comprend un circuit électronique d'allocation AL_C, en espace noyau, d'une mémoire tampon BUF agencée pour contenir au moins dix secondes de flux multimédia. Selon une mise en œuvre possible,
le circuit d'allocation comprend un processeur et une mémoire, ladite mémoire contenant un programme d'ordinateur agencé pou r mettre en œuvre l'allocation de la mémoire tampon BUF d'au moins dix secondes en espace noyau. Le processeur peut être un processeur central de l'ordinateur (qui peut être partagé avec d'autres circuits) ou un processeur dédié. La mémoire peut être une mémoire centrale de l'ordinateur (qui peut être partagée avec d'autres circuits) ou une mémoire dédiée. Il peut s'agir d'une mémoire non transitoire.
Le système d'émission comprend un circuit électronique de réception REC_C d'un flux multimédia, agencé pour recevoir ledit flux multimédia et le stocker dans la mémoire tampon BUF. Selon une mise en œuvre possible, le circuit de réception comprend un processeur et une mémoire, ladite mémoire contenant un programme d'ordinateur agencé pour recevoir led it fl ux multimédia et le stocker dans ladite mémoire tampon BUF. Le processeur peut être un processeur central de l'ordinateur (qui peut être partagé avec d'autres circuits) ou un processeur dédié. La mémoire peut être une mémoire centrale de l'ordinateur (qui peut être partagée avec d'autres circuits) ou une mémoire dédiée. Il peut s'agir d'une mémoire non transitoire.
Le système d'émission comprend un circuit électronique d'émission EM_C d'un flux multimédia stocké dans la mémoire tampon BUF vers le périphérique multimédia MDEV. Selon une mise en œuvre possible, le circuit d'émission com prend u n processeur et u ne mémoire, lad ite mémoire contenant un programme d'ordinateur agencé pour émettre le flux multimédia stocké dans la mémoire tampon BUF vers le périphérique multimédia MDEV. Le processeur peut être un processeur central de l'ordinateur (qui peut être partagé avec d'autres circuits) ou un processeur dédié. La mémoire peut être une mémoire centrale de l'ordinateur (qui peut être partagée avec d'autres circuits) ou une mémoire dédiée. Il peut s'agir d'une mémoire non transitoire.
Selon un huitième mode de réalisation, un système d'émission de flux multimédia selon le septième mode de réalisation comprend un circuit électronique de réservation exclusive RES_C du périphérique multimédia MDEV pendant l'émission du flux multimédia. Selon une mise en œuvre possible, le circuit d'émission comprend un processeur et une mémoire, ladite
mémoire contenant un programme d'ordinateur agencé pour réserver de façon exclusive le périphérique multimédia M DEV pendant l'ém ission du fl ux multimédia. Le processeur peut être un processeur central de l'ordinateur (qui peut être partagé avec d'autres circuits) ou un processeur dédié. La mémoire peut être une mémoire centrale de l'ordinateur (qui peut être partagée avec d'autres circuits) ou une mémoire dédiée. Il peut s'agir d'une mémoire non transitoire.
Selon un neuvième mode de réalisation, le module multimédia MM d'un système d'émission de flux multimédia selon le septième ou huitième mode de réalisation comprend u ne interface I NT accessi ble depu is u n lecteu r multimédia MPL exécuté par le processeur MP en mode utilisateur, le système d'émission comprenant un circuit électronique d'envoi SND_C de demande de sélection d'une position de lecture quelconque dans la mémoire tampon BUF au module multimédia MM par le lecteur multimédia MPL via ladite interface INT. Selon une mise en œuvre possible, le circuit d'envoi SND_C comprend un processeur et une mémoire, ladite mémoire contenant un programme d'ordinateur agencé pour envoyer une demande de sélection d'une position de lecture quelconque dans la mémoire tampon BUF au module multimédia MM par le lecteur multimédia MPL via ladite interface INT. Le processeur peut être un processeur central de l'ordinateur (qui peut être partagé avec d'autres circuits) ou un processeur dédié. La mémoire peut être une mémoire centrale de l'ordinateur (qui peut être partagée avec d'autres circuits) ou une mémoire dédiée. Il peut s'agir d'une mémoire non transitoire.
Un dixième mode de réalisation se rapporte à un système d'émission de flux multimédia selon l'un des septième au neuvième modes de réalisation, dans lequel le flux multimédia est un flux audio MUS et dans lequel le périphérique multimédia MDEV comprend un convertisseur numérique analogique DAC.
Bien entendu, la présente invention ne se limite pas à la forme de réalisation décrite ci-avant à titre d'exemple ; elle s'étend à d'autres variantes.
Les caractéristiques décrites vis-à-vis des procédés selon l'invention se transposent aux systèmes correspond a nts selon l ' i nvention , et réciproquement. Les modes de réalisation décrits pour des morceaux de musique se transposent à d'autres types de flux multimédia, notamment à des flux vidéo, à des flux audio-vidéo, à des flux vidéo en réalité augmentée, voire à des flux d'informations commandant des dispositifs d'éclairage (projecteurs lumineux, lasers, etc.) ou des dispositifs électromécaniques (par exemple des flux pilotant des robots ou des servomoteurs reliés à des éléments d'une scène afin de réaliser des effets spéciaux dans le cadre d'un spectacle), dans des cas où une synchronisation très précise est requise.