Analyse de topologie WDMAud

Le pilote système WDMAud analyse d’abord les lignes de mélangeur de destination avant d’analyser les lignes de mélangeur source. L’ordre dans lequel WDMAud analyse les lignes de destination est l’inverse de celui dans lequel SysAudio découvre les lignes. Par exemple, les broches numérotées les plus élevées sont analysées en premier. L’analyse commence au parent immédiat de la broche et se déplace dans la direction amont. Chaque nœud est traduit selon ces règles jusqu’à ce que l’analyseur détecte l’une des conditions de fin suivantes :

  • Le nœud en cours d’analyse est un nœud SOMME.

  • Le nœud actuel est un nœud MUX.

  • Le nœud actuel a plusieurs parents.

Les nœuds SUM et MUX sont les terminateurs classiques de la ligne de destination. Un nœud SUM ne génère aucun contrôle. Un nœud MUX génère un contrôle MUX dans la ligne de destination qui contient des références à chacune des lignes sources contrôlées par l’interface MUX.

Si plusieurs parents sont découverts, l’analyse est immédiatement terminée. Le pilote mixer-line interprète cette condition comme une « somme virtuelle » qui est formée en liant plusieurs entrées entre elles.

Le nom de la ligne de destination provient du nom retourné par la propriété KSPROPERTY_PIN_NAME sur cette broche.

Une fois tous les contrôles de ligne de destination traduits, WDMAud commence à traduire les lignes sources. Là encore, l’ordre dans lequel WDMAud analyse ces lignes est l’inverse de l’ordre dans lequel SysAudio les interroge. En outre, la direction dans laquelle les lignes sources sont analysées est opposée à celle dans laquelle les lignes de destination sont analysées. WDMAud analyse chaque ligne à partir de la broche et continue dans la direction aval jusqu’à ce qu’il détecte l’une des conditions de fin suivantes :

  • L’analyseur recherche une ligne de destination.

  • Le nœud actuel en cours de traduction appartient à une ligne de destination.

  • Le nœud actuel est un nœud SOMME.

  • Le nœud actuel est un nœud MUX.

Lorsqu’un MUX est rencontré lors de l’analyse d’une ligne source qui appartient à une ligne de destination, il est traduit en contrôle. Toutefois, il est utilisé uniquement comme espace réservé pour mettre à jour les numéros de ligne dans l’expérience MUX stockée ultérieurement dans la ligne de destination. Les numéros de ligne finaux ne sont pas encore disponibles à ce stade, un espace réservé est donc nécessaire.

Un nœud MUX et sum mettent fin à une ligne source ; Par conséquent, les nœuds entre une SOMME ou MUX et une autre SOMME ou MUX ne sont pas traduits.

Notes

  1. Les noms de lignes dans l’interface MUX sont dérivés du nom d’épingle de la ligne, sauf lorsque la ligne alimentant un MUX provient d’un nœud SUM ou MUX. Dans ce cas, le nom de la ligne est le nom du nœud MUX ou SUM. Lorsque le pilote mixer découvre cela, il génère une ligne de mélangeur virtuel avec le nom du nœud SUM ou MUX, puis traduit tous les contrôles entre sum ou MUX et MUX.

  2. Un fractionnement dans la topologie est un cas où un nœud a plus d’un seul enfant. Cela est utile lorsqu’une seule broche achemine vers deux destinations distinctes, mais partage certains contrôles communs, tels que le volume ou un muet. Chaque fois qu’un fractionnement est rencontré, le pilote WDMAud crée une nouvelle ligne et duplique tous les contrôles analysés jusqu’au fractionnement. Cela se produit de manière inconditionnelle chaque fois qu’un fractionnement est rencontré, même après avoir rencontré un nœud SOMME qui termine une ligne source.