Paramètres de regroupement

Un paramètre de regroupement identifie une collection de sessions audio qui sont toutes contrôlées par un seul contrôle de volume dans le programme système de contrôle de volume, Sndvol. Le paramètre de regroupement est un GUID qui identifie de manière unique la collection dans l’étendue de l’ordinateur.

L’objectif d’un paramètre de regroupement est similaire à celui du GUID de session pour une session interprocesseur. Autrement dit, le paramètre de regroupement permet à l’utilisateur de contrôler une collection de flux à partir d’un nombre quelconque de processus sous la forme d’une seule unité. Toutefois, le paramètre de regroupement remplit cette fonction dans les circonstances où les sessions interprocesseur ne peuvent pas fournir de solution.

Si plusieurs clients affectent leurs flux respectifs à des sessions distinctes, mais attribuent le même paramètre de regroupement à toutes les sessions, Sndvol affiche un seul contrôle de volume pour ces sessions. Pour prendre en charge les paramètres de regroupement, Sndvol ou toute application de contrôle de volume similaire doit effectuer les opérations suivantes :

  • Avant d’afficher les contrôles de volume, case activée les paramètres de regroupement de toutes les sessions actives. Regroupez sous un seul contrôle de volume toutes les sessions qui ont le même paramètre de regroupement.
  • Lorsque l’utilisateur modifie le paramètre sur un contrôle de volume pour un paramètre de regroupement particulier, mettez à jour les niveaux de volume de toutes les sessions qui partagent ce paramètre de regroupement.

Les paramètres de regroupement permettent de réduire le nombre de contrôles de volume affichés par Sndvol. Les utilisateurs peuvent devenir confus si Sndvol encombre son affichage avec trop de contrôles. Sans prise en charge des paramètres de regroupement, Sndvol affiche toujours un contrôle de volume distinct pour chaque session, ce qui peut ne pas être approprié dans toutes les circonstances. En outre, les paramètres de regroupement offrent un moyen pratique de s’assurer que les sessions qui contiennent des types similaires de contenu audio peuvent facilement être définies sur le même niveau de volume.

Comme expliqué précédemment, les API audio de niveau supérieur attribuent généralement leurs flux à la session par défaut spécifique au processus (identifiée par la valeur GUID de session GUID_NULL). Cette valeur par défaut permet à Sndvol d’afficher un contrôle de volume distinct pour chaque processus d’application cliente, ce qui correspond souvent au comportement souhaité. En outre, si plusieurs instances du même client s’exécutent dans des processus distincts mais nécessitent un seul contrôle de volume partagé, les clients peuvent simplement affecter leurs flux à la même session interprocesseur. Aucun de ces cas ne nécessite l’utilisation de paramètres de regroupement. Toutefois, un cas important, tel qu’illustré par Microsoft Internet Explorer, nécessite l’utilisation de paramètres de regroupement pour obtenir le comportement souhaité.

Internet Explorer permet aux utilisateurs d’ouvrir plusieurs fenêtres de navigateur, et ces fenêtres peuvent ne pas toutes s’exécuter dans le même processus. Les utilisateurs peuvent devenir confus si Sndvol affichait un contrôle de volume distinct pour chaque application instance, qui avaient toutes la même étiquette, « Internet Explorer ». Une session interprocesses n’est pas une solution réalisable dans ce cas : si plusieurs instances de Explorer Internet s’exécutent dans des processus différents, elles peuvent ne pas pouvoir affecter tous leurs flux audio à une seule session interprocesseur. La raison en est que l’Internet Explorer windows peut exécuter des instances de Lecteur multimédia Windows ou un autre plug-in multimédia qui utilise une API audio de niveau supérieur pour lire ses flux audio. Ces API affectent généralement les flux d’un processus à une session par défaut spécifique au processus. Internet Explorer n’a aucun contrôle sur l’affectation de ces flux aux sessions.

WASAPI résout ce problème en permettant à chaque instance de Explorer Internet d’accéder aux contrôles de session pour sa session par défaut spécifique au processus et d’affecter un paramètre de regroupement à cette session. Si toutes les instances d’Internet Explorer attribuer le même paramètre de regroupement à toutes leurs sessions audio, Sndvol affiche un seul contrôle de volume pour ces sessions.

Par défaut, une session n’appartient à aucun regroupement. Si un client n’affecte pas explicitement de session à un regroupement, Sndvol affiche un contrôle de volume dédié pour cette session. La valeur du paramètre de regroupement GUID_NULL indique qu’une session n’appartient à aucun regroupement. Si aucun client n’a explicitement affecté un paramètre de regroupement à une session, la valeur du paramètre de regroupement pour cette session est GUID_NULL par défaut.

Un client peut modifier dynamiquement le regroupement auquel une session est affectée.

Un regroupement peut inclure n’importe quelle combinaison de sessions interprocesseur et de sessions spécifiques aux processus sur un appareil de point de terminaison audio.

L’interface utilisateur de Sndvol permet à l’utilisateur d’afficher les contrôles de volume pour un seul appareil de point de terminaison audio à la fois. Lorsque l’utilisateur ajuste les contrôles de volume pour un appareil particulier, les niveaux de volume des sessions qui se connectent à d’autres appareils ne sont pas affectés. En particulier, un contrôle de volume pour un paramètre de regroupement particulier affecte uniquement les sessions qui partagent le paramètre de regroupement et sont connectées à l’appareil actuellement sélectionné. Une session qui a un paramètre de regroupement identique, mais qui est connectée à un autre appareil n’est pas affectée.

Comme décrit précédemment, Sndvol étiquette chaque contrôle de volume qu’il affiche avec un nom d’affichage et une icône. Dans le cas d’un contrôle de volume pour un regroupement, Sndvol sélectionne arbitrairement l’une des sessions du regroupement comme source du nom complet et de l’icône qu’il affiche avec le contrôle de volume. Par conséquent, pour s’assurer que Sndvol affiche toujours le même nom d’affichage et la même icône pour un regroupement, toutes les instances d’application qui attribuent des sessions à ce regroupement doivent s’assurer que leurs sessions respectives ont le même nom d’affichage et la même icône. Pour plus d’informations sur les noms d’affichage et les icônes, consultez Sessions audio.

Une application telle que Sndvol peut s’inscrire pour recevoir des notifications lorsque le paramètre de regroupement d’une session change. Ces notifications peuvent être utiles si l’application met en cache des informations sur l’affectation de sessions aux paramètres de regroupement. Une notification informe l’application que les informations mises en cache peuvent ne plus être valides.

Pour affecter un paramètre de regroupement à une session, appelez la méthode IAudioSessionControl::SetGroupingParam . Pour obtenir le paramètre de regroupement affecté à une session, appelez la méthode IAudioSessionControl::GetGroupingParam .

Audio Sessions