Partilhar via


Análise de topologia WDMAud

O driver do sistema WDMAud analisa primeiro as linhas do misturador de destino antes de analisar as linhas do mixer de origem. A ordem na qual o WDMAud analisa as linhas de destino é o inverso do em que SysAudio descobre as linhas. Por exemplo, os pinos numerados mais altos são analisados primeiro. A análise começa no pai imediato do pino e se move na direção upstream. Cada nó é traduzido de acordo com essas regras até que o analisador detecte uma das seguintes condições de terminação:

  • O nó atual que está sendo analisado é um nó SOMA.

  • O nó atual é um nó MUX.

  • O nó atual tem vários pais.

Os nós SUM e MUX são os terminadores clássicos da linha de destino. Um nó SOMA não gera controles. Um nó MUX gera um controle MUX na linha de destino que contém referências a cada uma das linhas de origem controladas pelo MUX.

Se vários pais forem descobertos, a análise será encerrada imediatamente. O driver de linha de mixer interpreta essa condição como uma "soma virtual" formada pela união de várias entradas.

O nome da linha de destino vem do nome retornado da propriedade KSPROPERTY_PIN_NAME nesse pino.

Depois que todos os controles de linha de destino tiverem sido traduzidos, o WDMAud começará a traduzir as linhas de origem. Novamente, a ordem na qual o WDMAud analisa essas linhas é o inverso da ordem em que SysAudio as consulta. Além disso, a direção na qual as linhas de origem são analisadas é oposta à que as linhas de destino são analisadas. O WDMAud analisa cada linha começando pelo pino e continuando na direção downstream até detectar uma das seguintes condições de terminação:

  • O analisador localiza uma linha de destino.

  • O nó atual que está sendo traduzido pertence a uma linha de destino.

  • O nó atual é um nó SUM.

  • O nó atual é um nó MUX.

Quando um MUX é encontrado durante a análise de uma linha de origem que pertence a uma linha de destino, ele é convertido em um controle. No entanto, ele é usado apenas como um espaço reservado para atualizar os números de linha no MUX armazenado na linha de destino posteriormente. Os números de linha final ainda não estão disponíveis neste ponto, portanto, um espaço reservado é necessário.

Tanto um MUX quanto um nó SUM encerram uma linha de origem; portanto, todos os nós entre uma SOMA ou MUX e outra SOMA ou MUX não são convertidos.

Notas

  1. Os nomes de linha no MUX são derivados do nome do pino da linha, exceto quando a linha que se alimenta em um MUX é de um nó SUM ou MUX. Nesse caso, o nome da linha é o nome do nó MUX ou SOMA. Quando o driver do mixer descobre isso, ele cria uma linha de mixer virtual com o nome do nó SUM ou MUX e converte todos os controles entre o SUM ou o MUX e o MUX.

  2. Uma divisão na topologia é um caso em que um nó tem mais de um único filho. Isso é útil quando um único pino roteia para dois destinos separados, mas compartilha alguns controles comuns, como volume ou mudo. Sempre que uma divisão é encontrada, o driver WDMAud cria uma nova linha e duplica todos os controles analisados até a divisão. Isso acontece incondicionalmente sempre que uma divisão é encontrada, mesmo depois de encontrar um nó SUM que encerra uma linha de origem.