Application des paramètres de Speaker-Configuration
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.
DirectSound effectue le suivi de son paramètre de configuration du haut-parleur actuel dans le Registre et applique ce paramètre au matériel audio chaque fois qu’un nouvel appareil DirectSound est créé.
Un programme d’application peut modifier la configuration de l’orateur à l’échelle du système en appelant la méthode IDirectSound::SetSpeakerConfig , qui met à jour le paramètre de configuration de l’orateur dans le Registre. La méthode tente également d’appliquer immédiatement le nouveau paramètre au matériel, bien que les périphériques audio ne soient généralement pas en mesure de modifier les paramètres du haut-parleur lorsque l’objet DirectSound existe. Pour obtenir la liste des configurations d’orateur que DirectSound définit pour cette méthode, consultez Traduction de requêtes Speaker-Configuration.
Un utilisateur peut modifier la configuration via la boîte de dialogue de configuration du haut-parleur dans la page Propriétés multimédias (mmsys.cpl) de Panneau de configuration. Pour localiser la boîte de dialogue configuration de l’orateur DirectSound sous Windows XP, par exemple, procédez comme suit :
Dans Panneau de configuration, double-cliquez sur l’icône Sons et périphériques audio.
Sous l’onglet Audio , sélectionnez un appareil dans la liste Lecture audio .
Sélectionnez le bouton Advanced (Avancé) .
Sélectionnez l’onglet Haut-parleurs .
À ce stade, vous devez voir l’étiquette Configuration de l’orateur en regard d’une liste des configurations d’orateur que vous pouvez sélectionner.
DirectSound utilise une KSPROPERTY_AUDIO_CHANNEL_CONFIG demande set-property pour envoyer les informations de configuration de l’orateur à un nœud 3D ou un nœud DAC (KSNODETYPE_3D_EFFECTS ou KSNODETYPE_DAC) dans un graphique de filtre audio. Pour un nœud 3D, la cible de la demande de propriété est en fait la broche (objet 3D-stream) qui alimente le nœud. Pour un nœud DAC, la cible est l’objet de filtre qui contient le nœud DAC. Dans les deux cas, le paramètre de configuration du haut-parleur 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.
Notez que seules les versions de DirectSound fournies avec Windows Me, ainsi que Windows XP et versions ultérieures, envoient des demandes de propriété de configuration de l’orateur aux nœuds DAC . Les versions antérieures de DirectSound ne prennent pas en charge cette fonctionnalité. Toutefois, toutes les versions de DirectSound envoient ces requêtes aux nœuds 3D.
Si un programme d’application a créé plusieurs nœuds 3D, DirectSound envoie des demandes de configuration du haut-parleur uniquement au premier nœud 3D à créer.
DirectSound envoie des demandes de configuration du haut-parleur aux nœuds 3D et DAC chaque fois qu’une application crée un objet DirectSound ou appelle la méthode IDirectSound::SetSpeakerConfig . Les périphériques audio ne peuvent généralement pas modifier la configuration de leur haut-parleur pendant qu’ils gèrent les flux actifs, et DirectSound tente d’éviter cette limitation dans la mesure du possible. Par exemple, lors de la création d’un objet DirectSound, DirectSound envoie les demandes de configuration de l’orateur après avoir instancié le filtre, mais avant d’instancier les broches sur le filtre, c’est-à-dire avant de créer des flux.
Cette limitation est plus difficile à éviter dans le cas d’un appel à SetSpeakerConfig. Lorsqu’une application appelle SetSpeakerConfig, le pilote de l’adaptateur échoue généralement à la demande de configuration du haut-parleur de DirectSound. Cela est dû au fait que l’objet DirectSound existe déjà, ce qui signifie que l’appareil a déjà des flux actifs à gérer.
Dans ce cas, le pilote d’adaptateur dispose de deux options pour traiter une demande de configuration du haut-parleur qui a échoué :
Le pilote peut mémoriser la configuration demandée et l’appliquer dès que tous ses flux sont détruits.
Le pilote peut ignorer la demande et s’appuyer sur DirectSound pour envoyer une autre demande de configuration du haut-parleur la prochaine fois qu’un objet DirectSound est créé.
La première option offre une meilleure expérience utilisateur, car si l’utilisateur sélectionne un nouveau paramètre via la boîte de dialogue de configuration de l’orateur, la modification prend effet immédiatement dans toutes les applications, et pas seulement dans les applications DirectSound. (Bien sûr, si des applications audio sont en cours d’exécution au moment où le nouveau paramètre est sélectionné, la modification est différée jusqu’à ce que toutes les applications audio se terminent.) Toutefois, avec la deuxième option, la modification n’entre pas en vigueur tant qu’une application DirectSound n’est pas exécutée. Par exemple, si une application qui utilise l’API windows multimedia waveOut est la première application à s’exécuter après avoir modifié un paramètre de Panneau de configuration, l’utilisateur peut se demander pourquoi le nouveau paramètre n’a aucun effet apparent.
En réponse à une demande de configuration du haut-parleur envoyée à un nœud 3D ou DAC, un pilote d’adaptateur standard met à jour la configuration de l’orateur dans le matériel audio uniquement si aucune broche n’est actuellement instanciée par une application audio. Cela signifie que si une application waveOut, par exemple, a une ou plusieurs broches ouvertes au moment où une deuxième application appelle DirectSoundCreate, le pilote peut avoir besoin de différer les modifications en attente apportées à la configuration du haut-parleur du périphérique audio jusqu’à une date ultérieure.
Si votre pilote ne parvient pas à répondre à une demande de modification de la configuration du haut-parleur de l’appareil, il doit simplement échouer. L’échec d’une demande de configuration de l’orateur lors de la création d’un objet DirectSound ou d’un appel SetSpeakerConfig n’entraîne pas l’échec de la création de l’objet DirectSound ou de l’appel SetSpeakerConfig .
Au démarrage, un pilote de carte audio initialise la configuration du haut-parleur du matériel avec son paramètre par défaut, qui est généralement stéréo. Dès qu’une application crée un objet DirectSound, DirectSound applique au matériel le paramètre stocké dans le registre. Un programme d’application doit créer un appareil DirectSound avant de pouvoir appeler SetSpeakerConfig pour modifier le paramètre de configuration du haut-parleur dans le Registre, mais ce paramètre de Registre prend généralement effet dans le matériel uniquement après la mise en production de l’appareil DirectSound et la création d’un deuxième appareil DirectSound.
Immédiatement après l’installation d’un périphérique audio ou lorsqu’une erreur de configuration du haut-parleur se produit, la configuration de l’orateur DirectSound est par défaut stéréo.