configuration de l’orateur DSSPEAKER_SURROUND
Note Ces informations s’appliquent à Windows XP et aux systèmes d’exploitation antérieurs. À compter de Windows Vista, IDirectSound::GetSpeakerConfig et IDirectSound::SetSpeakerConfig ont été déconseillés.
Un programme d’application peut modifier la configuration de l’orateur DirectSound en mode surround en appelant la méthode IDirectSound::SetSpeakerConfig avec le paramètre de configuration de l’orateur défini sur DSSPEAKER_SURROUND. Cela spécifie un format PCM à quatre canaux dans lequel les canaux sont mappés aux haut-parleurs de gauche, de droite, de centre et d’arrière-parleurs.
Une fois qu’il prend effet, le paramètre de configuration du haut-parleur DSSPEAKER_SURROUND est global et affecte le périphérique audio dans son ensemble. Toutes les applications audio qui s’exécutent par la suite sont soumises au nouveau paramètre jusqu’à ce que DirectSound modifie à nouveau le paramètre.
DirectSound utilise l’algorithme suivant pour configurer le système audio en mode surround :
DirectSound demande tout d’abord au pilote de passer en mode haut-parleur surround en envoyant une requête KSPROPERTY_AUDIO_CHANNEL_CONFIG set-property au nœud DAC du pilote (ou au nœud 3D s’il n’a pas de nœud DAC). (Voir KSNODETYPE_DAC et KSNODETYPE_3D_EFFECTS.) La structure KSAUDIO_CHANNEL_CONFIG qui accompagne cette demande de propriété spécifie la configuration de l’orateur KSAUDIO_SPEAKER_SURROUND. Si la requête réussit, le périphérique audio achemine les quatre canaux vers quatre sorties analogiques qui sont connectées directement aux haut-parleurs de gauche, de droite, de centre et d’arrière-parleurs.
En cas d’échec, DirectSound demande au pilote de configurer l’appareil en mode haut-parleur stéréo et d’activer son nœud KSNODETYPE_PROLOGIC_ENCODER , le cas échéant. Si cela réussit, l’appareil convertit le flux à quatre canaux de l’application en signal stéréo encodé en surround qu’il génère sous forme numérique ou analogique. (Le matériel doit effectuer l’encodage après avoir mélangé les flux qui circulent dans les différentes broches de mixage de l’appareil.) L’utilisateur peut connecter les sorties stéréo de l’appareil à un décodeur externe qui convertit le signal encodé en quatre canaux de sortie vers les haut-parleurs de gauche, de droite, de centre et d’arrière-parleurs.
En cas d’échec, DirectSound active le nœud KSNODETYPE_PROLOGIC_ENCODER dans KMixer. (L’appareil est déjà en mode stéréo de l’étape précédente.) Là encore, le signal stéréo qui est généré par l’appareil peut être transmis à un décodeur externe.
Si cet algorithme réussit, l’application peut créer et lire des mémoires tampons PCM à quatre canaux. Dans les cas 1 et 2 ci-dessus, les mémoires tampons matérielles que l’appareil lit utilisent quatre canaux, mais dans le cas 3, les mémoires tampons matérielles utilisent un format stéréo. L’application peut écrire directement dans les mémoires tampons matérielles dans les cas 1 et 2, mais dans le cas 3, elle doit écrire dans une mémoire tampon logicielle et autoriser KMixer à convertir le flux à quatre canaux de l’application au format stéréo encodé en surround nécessaire pour la mémoire tampon matérielle.
Dans le cas (3) ci-dessus, l’application doit éviter d’utiliser des mémoires tampons matérielles pour tous ses flux de sortie. Notez que KMixer mélange tous ses flux d’entrée avant d’encoder le mélange pour produire le flux stéréo surround. Toutefois, tout flux qui entre dans une broche de mixage matériel est mélangé dans le matériel avec la chaîne stéréo encodée de KMixer, ce qui dégrade la qualité de l’audio surround lorsqu’il est décodé. L’application peut empêcher cela en utilisant uniquement des mémoires tampons logicielles.
Un flux stéréo qui a été encodé en surround par un nœud KSNODETYPE_PROLOGIC_ENCODER peut être décodé en quatre canaux (gauche, droite, centre et arrière) par un nœud KSNODETYPE_PROLOGIC_DECODER .