Análisis de topología de WDMAud
El controlador del sistema WDMAud analiza primero las líneas de mezclador de destino antes de analizar las líneas del mezclador de origen. El orden en que WDMAud analiza las líneas de destino es el inverso de lo que SysAudio detecta las líneas. Por ejemplo, primero se analizan los pines numerados más altos. El análisis comienza en el elemento primario inmediato del pin y se mueve en la dirección ascendente. Cada nodo se traduce según estas reglas hasta que el analizador detecte una de las siguientes condiciones de terminación:
El nodo actual que se analiza es un nodo SUM.
El nodo actual es un nodo MUX.
El nodo actual tiene varios elementos primarios.
Los nodos SUM y MUX son los terminadores clásicos de la línea de destino. Un nodo SUM no genera ningún control. Un nodo MUX genera un control MUX en la línea de destino que contiene referencias a cada una de las líneas de origen controladas por MUX.
Si se detectan varios elementos primarios, el análisis finaliza inmediatamente. El controlador de línea de mezclador interpreta esta condición como una "suma virtual" formada al unir varias entradas.
El nombre de la línea de destino procede del nombre devuelto por la propiedad KSPROPERTY_PIN_NAME en ese pin.
Una vez traducidos todos los controles de línea de destino, WDMAud comienza a traducir las líneas de origen. De nuevo, el orden en que WDMAud analiza estas líneas es el inverso del orden en el que SysAudio los consulta. Además, la dirección en la que se analizan las líneas de origen es opuesta a la que se analizan las líneas de destino. WDMAud analiza cada línea a partir del pin y continúa en la dirección de bajada hasta que detecta una de las siguientes condiciones de terminación:
El analizador busca una línea de destino.
El nodo actual que se traduce pertenece a una línea de destino.
El nodo actual es un nodo SUM.
El nodo actual es un nodo MUX.
Cuando se encuentra una MUX durante el análisis de una línea de origen que pertenece a una línea de destino, se traduce en un control . Sin embargo, solo se usa como marcador de posición para actualizar los números de línea en el MUX almacenado en la línea de destino más adelante. Los números de línea finales aún no están disponibles en este momento, por lo que se requiere un marcador de posición.
Tanto un MUX como un nodo SUM finalizan una línea de origen; por lo tanto, los nodos entre SUM o MUX y otro SUM o MUX no se traducen.
Notas
Los nombres de línea del MUX se derivan del nombre del pin de la línea, excepto cuando la línea que se alimenta en un MUX procede de un nodo SUM o MUX. En ese caso, el nombre de la línea es el nombre del nodo MUX o SUM. Cuando el controlador mezclador detecta esto, crea una línea de mezclador virtual con el nombre del nodo SUM o MUX y, a continuación, traduce todos los controles entre SUM o MUX y MUX.
Una división en la topología es un caso en el que un nodo tiene más de un solo elemento secundario. Esto resulta útil cuando una sola patilla se enruta a dos destinos independientes, pero comparte algunos controles comunes, como el volumen o una exclusión mutua. Cada vez que se encuentra una división, el controlador WDMAud crea una nueva línea y duplica todos los controles analizados hasta la división. Esto sucede incondicionalmente cada vez que se encuentra una división, incluso después de encontrar un nodo SUM que finaliza una línea de origen.