Mappage des formats de flux à des configurations d’orateur
Lorsque vous êtes invité à lire un format de flux qui ne correspond pas à la configuration du haut-parleur du périphérique audio, le pilote audio dispose de plusieurs options :
Refuser de lire le flux.
Lire le flux en effectuant un mappage un-à-un de canaux individuels aux haut-parleurs. Si des canaux sont laissés après qu’un canal a été mappé à chaque haut-parleur, ignorez les canaux restants. À l’inverse, si des haut-parleurs sont laissés après que tous les canaux ont été attribués aux haut-parleurs, écoutez le silence à travers les haut-parleurs restants.
Lisez le flux en mélangeant les canaux dans le flux d’origine pour générer précisément le nombre de canaux requis pour la configuration de l’orateur. S’il y a plus de canaux dans le flux d’origine que de haut-parleurs, cette approche évite la perte du contenu qui résulterait simplement de l’abandon des canaux excédentaires. Le mélange et la conversion de format peuvent être effectués dans des logiciels ou du matériel.
En ce qui concerne la troisième option, le pilote doit éviter d’effectuer directement le mélange de logiciels. Au lieu de cela, le fournisseur de matériel doit installer un module logiciel GFX (Global Effects) pour traiter le flux avant qu’il n’atteigne le périphérique audio. Dans Windows Vista, les effets globaux sont implémentés en tant qu’objets de traitement audio (APO) GFX. Dans Windows Server 2003 et Windows XP, les effets globaux ont été implémentés en tant que filtres GFX.
Lecture d’un flux de canaux 5.1 sur une configuration d’orateur 7.1
La figure suivante montre un flux enregistré pour une configuration de haut-parleurs surround 5.1 (à gauche), mais qui est lu via une configuration de haut-parleurs home cinéma 7.1 (à droite).
Dans la figure précédente, le format 5.1 enregistré ne contient pas d’informations de canal pour les positions de l’orateur BL et BR dans la configuration de l’orateur 7.1. Ainsi, ces deux haut-parleurs sont silencieux. (Une autre alternative, plus difficile, serait que l’appareil audio synthétise deux canaux supplémentaires pour les haut-parleurs BL et BR en mixant le contenu des six canaux d’origine dans l’enregistrement.)
Selon les définitions des bits du masque de canal, le masque de canal pour l’enregistrement du flux 5.1 affiché sur le côté gauche de la figure précédente doit être 0x60F, ce qui affecte les six canaux aux positions d’orateur suivantes : FL, FR, FC, LFE, SL et SR. (Il s’agit de la configuration side-speaker 5.1 décrite précédemment.) En fait, le masque de canal pour le flux 5.1 est 0x3F plutôt que 0x60F pour des raisons qui ont été mentionnées précédemment et qui seront maintenant expliquées en détail.
Dans les versions antérieures de Windows (Windows Server 2003, Windows XP avec SP1, Windows 2000 et Windows Me/98), l’interprétation du masque de canal 0x3F est qu’il affecte les six canaux au format 5.1 aux positions d’orateur suivantes : FL, FR, FC, LFE, BL et BR. (Il s’agit de la configuration back-speaker 5.1.) Toutefois, l’interprétation dans Windows Vista, Windows Server 2003 avec SP1 et Windows XP avec SP2 est différente : par convention, le format 5.1 avec le masque de canal 0x3F est interprété comme signifiant la configuration 5.1 de l’orateur latéral au lieu de la configuration 5.1 du haut-parleur principal.
L’interprétation du masque de canal de cette manière élimine l’obligation d’introduire un deuxième descripteur de format 5.1-channel pour distinguer la configuration side-speaker 5.1 de la configuration back-speaker 5.1. Ces deux configurations sont si similaires que les utilisateurs classiques peuvent avoir des difficultés à les distinguer. Bien que le fait de n’avoir qu’un seul descripteur de format 5.1-canal évite de confondre les utilisateurs, les fournisseurs de matériel n’oublient pas d’interpréter le masque de canal 0x3F pour signifier que les canaux 5 et 6 sont affectés aux positions d’orateur SL et SR au lieu des positions BL et BR. En échange de devoir mémoriser cette interprétation de cas spécial du masque de canal pour un flux 5.1, les fournisseurs peuvent éviter aux utilisateurs la difficulté de distinguer deux descripteurs de format 5.1 très similaires.
Les fournisseurs qui croient qu’au moins certains de leurs utilisateurs souhaitent faire la distinction entre la configuration side-speaker 5.1 et la configuration back-speaker 5.1 ont la possibilité de fournir un programme d’interface utilisateur (IU) à cet effet. Par le biais de l’interface utilisateur, les utilisateurs peuvent choisir si les canaux 4 et 5 d’un flux de canaux 5.1 doivent diriger les haut-parleurs arrière plutôt que les haut-parleurs latéraux dans une configuration de haut-parleurs home cinéma 7.1.
Lecture d’un flux de canaux 7.1 sur une configuration d’orateur 5.1
La figure suivante montre un flux enregistré pour une configuration de haut-parleurs home cinéma 7.1 (à gauche) en cours de lecture via une configuration de haut-parleurs de son surround 5.1 (à droite). Le masque de canal pour le flux de canaux 7.1 est 0x63F.
Dans cet exemple, les canaux 6 et 7, qui contiennent les données pour les positions de l’orateur latéral dans la configuration 7.1, passent en revue les positions du haut-parleur latéral dans la configuration 5.1. Le périphérique audio ignore simplement les canaux 4 et 5, qui contiennent les données pour les positions du haut-parleur arrière dans la configuration 7.1, lorsqu’il lit le flux sur la configuration 5.1. Comme mentionné précédemment, une autre alternative (non illustrée dans la figure précédente) consiste pour l’appareil à tenter de conserver le contenu dans les canaux 4 et 5 en les mixant avec les canaux 6 et 7 avant de les lire via les haut-parleurs latéraux dans la configuration 5.1.
Comportement du mélangeur système
Dans Windows Server 2003, Windows XP, Windows 2000 et Windows Me/98, les flux audio multicanal que le périphérique audio lit sont généralement générés par le mixer du système logiciel, Kmixer.sys. Avant que le flux puisse commencer à jouer, le mixer système et le pilote audio doivent négocier un format de flux que le mixer et le pilote peuvent gérer.
Lorsqu’il est demandé de lire un flux multicanal avec un format qui ne correspond pas à la configuration du haut-parleur du périphérique audio, le pilote audio peut refuser la demande, auquel cas la négociation se poursuit.
Le mélangeur système peut convertir le contenu d’un flux d’entrée de 5,1 canaux en flux de sortie de 7,1 canaux (vers le périphérique audio), et vice versa, bien qu’il préfère éviter de telles conversions pour préserver la qualité du flux d’entrée. Ainsi, le mélangeur système commence la négociation en demandant au pilote d’accepter un flux avec le même format que le flux d’entrée de qualité la plus élevée pour le mélangeur système. En règle générale, cela signifie que si le mélangeur système a un flux d’entrée dans un format de canal 5.1 ou 7.1, il demande au pilote d’accepter un flux dans le même format. Si le pilote rejette ce format, le mélangeur système continue de négocier en lui demandant s’il peut gérer d’autres formats de flux.
Par exemple, si le pilote d’un périphérique audio avec une configuration de haut-parleur 5.1 refuse une demande du mixer système pour lire un flux de 7.1 canaux, le mélangeur système poursuit la négociation en proposant de convertir le flux de canaux 7.1 en flux de 5,1 canaux. Si le pilote accepte ce format, le mélangeur système effectue la conversion de flux pour le pilote.
Lors de la conception d’un pilote audio, l’enregistreur de pilotes doit décider s’il doit gérer ses propres conversions de format ou s’appuyer sur le mixer système pour effectuer les conversions. Le pilote peut avoir besoin de gérer les conversions dans l’une des situations suivantes :
Si le pilote exige que la conversion soit effectuée d’une manière différente de celle effectuée par le mélangeur système.
Si le pilote doit lire des flux qui contournent le mélangeur système.
Dans la deuxième situation, un flux peut contourner le mixer système si est lu à partir d’une mémoire tampon à accélération matérielle Microsoft DirectSound directement vers une broche de mixage matériel sur l’appareil audio. En outre, certaines applications « pro audio » envoient leurs flux directement au périphérique audio, soit pour éviter la latence du mixer système, soit pour empêcher le processus de mixage de modifier les valeurs des exemples numériques dans le flux audio d’origine.
Dans Windows Server 2003 avec SP1 et Windows XP avec SP2, si le mélangeur système produit un flux de sortie de 5.1 canaux, le mélangeur définit toujours le masque de canal du flux sur 0x3F. Le mélangeur système se comporte de cette façon même s’il reçoit un flux d’entrée de 5,1 canaux avec un masque de canal de 0x60F. Avec ce comportement, un pilote audio ne reçoit jamais un flux de 5.1 canaux avec un masque de canal de 0x60F du mixer.
Si le mélangeur système reçoit un flux d’entrée de 7,1 canaux avec un masque de canal de 0x63F et produit un flux de sortie de 5,1 canaux (avec un masque de canal de 0x3F), le mélangeur copie les canaux 6 et 7 du flux d’entrée vers les canaux 4 et 5 du flux de sortie. Le mélangeur rejette les canaux 4 et 5 (pour les deux haut-parleurs arrière) du flux d’entrée de 7,1 canaux. Ce comportement garantit que les canaux contenant le contenu des deux haut-parleurs latéraux dans le flux de canal 7.1 sont lues via les haut-parleurs latéraux dans la configuration de l’orateur 5.1.