Partilhar via


Especificando a topologia

Depois de um fornecedor de hardware decidir quais drivers de miniport escrever para dispositivos de wave e MIDI, a próxima etapa consiste em representar a topologia de kernel streaming (KS) desses dispositivos. A topologia KS consiste em um conjunto de estruturas de dados que descrevem os caminhos de dados que os fluxos de áudio ou MIDI seguem à medida que fluem através de cada dispositivo. Através dessa topologia, o driver expõe os nós de controle (por exemplo, controle de volume) que se encontram ao longo de cada caminho. Normalmente, uma aplicação usa as funções do mixer multimídia do Windows para explorar a topologia ao enumerar a sequência de nós em cada caminho. Por exemplo, depois de descobrir um nó de controle de nível de volume, um aplicativo pode definir o nível de volume nesse nó. Para obter mais informações sobre multimídia do Windows, consulte a documentação do SDK do Microsoft Windows. Para obter mais informações sobre a representação de topologias KS pelas funçõesXxx do mixer, consulte Kernel Streaming Topology to Audio Mixer API Translation.

O PortCls fornece seis drivers de porta: WavePci, WaveCyclic, WaveRT, MIDI, DMus e Topology. (O WaveRT está disponível desde o Windows Vista e é a abordagem recomendada.) O driver da porta de topologia controla a parte do circuito do adaptador de áudio que mistura os fluxos de renderização dos dispositivos wave e MIDI. Ele também controla a seleção de fluxos de captura de tomadas de entrada. Apesar de o nome ser um tanto enganador, o driver de porta Topologia não incorpora toda a topologia de um adaptador de áudio, embora geralmente contenha uma grande parte dela. Os outros drivers de porta contribuem com as partes restantes da topologia do adaptador.

Cada driver de porta é emparelhado com um driver de miniporta correspondente para formar um filtro KS que representa um dispositivo específico (onda, MIDI ou mixer) no adaptador de áudio, conforme mostrado na tabela a seguir.

Tipo de filtro Descrição

Filtro WaveXxx

Representa um dispositivo de onda que converte um fluxo de saída de onda em um sinal de áudio analógico ou que converte um sinal de áudio analógico em um fluxo de entrada de onda.

Filtro MIDI ou DMus

Representa um dispositivo MIDI que reproduz ou captura um fluxo MIDI.

Filtro de topologia

Representa o circuito misturador do adaptador.

O driver de miniporta implementa as funções específicas do dispositivo de filtro, incluindo a definição da porção da topologia do adaptador que o dispositivo abrange. O driver de porta cuida das operações de filtro genéricas, incluindo a comunicação com o sistema operacional, para cada tipo de filtro.

Cada filtro tem um ou mais pinos KS que servem como caminhos para fluxos de dados de áudio entrarem e saírem do filtro. Normalmente, os pinos no filtro de topologia são vinculados aos pinos nos filtros wave, MIDI e DMus por meio de conexões com fio no circuito do adaptador. Esses filtros e suas interconexões juntos formam um gráfico de filtro KS que incorpora a topologia do adaptador.

A figura a seguir mostra a topologia de um adaptador de áudio de exemplo.

Diagrama mostrando a topologia de um adaptador de áudio com conexões entre filtros MIDI, WaveXXX e topologia.

Na figura anterior, a topologia no nível superior consiste nas conexões entre os filtros MIDI, WaveXXX e topologia. Além disso, cada filtro tem sua própria topologia interna, que consiste nos caminhos de dados através do filtro e nos nós de controle que se encontram ao longo de cada caminho. Os nós são rotulados como mostrado na tabela a seguir.

Etiqueta Descrição KS Node-Type Identificador Global Único

Sintetizador

Nó do sintetizador

KSNODETYPE_SYNTHESIZER

DAC

Nó conversor de digital para áudio

KSNODETYPE_DAC

ADC

Nó conversor analógico-digital

KSNODETYPE_ADC

Volume

Nó de controlo de nível de volume

KSNODETYPE_VOLUME

Silenciar

Silenciar nó de controle

KSNODETYPE_MUTE

Soma

Nó de soma

KSNODETYPE_SUM

MUX

Nó multiplexador

KSNODETYPE_MUX

Na figura anterior, os pinos no lado esquerdo do adaptador de áudio representam as conexões lógicas (não conexões físicas) através das quais os fluxos de dados entram no adaptador a partir do barramento do sistema ou entram no barramento do sistema a partir do adaptador. Esses pinos são logicamente conectados aos pinos de origem e coletor em outros filtros (não mostrados) que são externos ao adaptador. Normalmente, esses filtros são módulos de software que, juntamente com a topologia do adaptador, formam um gráfico de filtro maior cuja topologia pode ser explorada por aplicativos que usam as funçõesXxx do misturador. Por exemplo, o pino rotulado "PCM Wave Out" na figura anterior está logicamente conectado ao motor de áudio em modo de utilizador no Windows. Estas conexões lógicas são mantidas por transferências de DMA através do barramento do sistema.

Em contraste, os pinos na borda esquerda do filtro de topologia estão fisicamente conectados aos pinos nos filtros MIDI e WaveXxx . Essas conexões são conectadas e não podem ser alteradas por software.

Os pinos de ponte no lado direito do adaptador de áudio representam tomadas de áudio no chassi do sistema. Estes pinos são referidos como pinos de ponte porque eles fazem a ponte entre o gráfico de filtro KS e o mundo externo.

Filtros, pinos e nós normalmente têm propriedades que são acessíveis aos clientes (componentes de modo kernel ou aplicativos de modo de usuário) do driver de áudio. Um cliente pode enviar uma solicitação de propriedade KS para um filtro, pino ou nó para consultar o valor atual de uma propriedade ou para alterar o valor da propriedade. Por exemplo, um nó de controle de nível de volume tem uma propriedade KSPROPERTY_AUDIO_VOLUMELEVEL , que um cliente pode alterar por meio de uma solicitação de propriedade KS. Um nó de soma é um exemplo de um tipo de nó que normalmente não tem propriedades.

Para simplificar, o filtro WaveXxx na figura anterior fornece apenas um único pino para aceitar um fluxo de saída de onda PCM do barramento do sistema. Em contraste, alguns dispositivos de onda fornecem vários pinos para saída de onda PCM e contêm hardware para misturar internamente os fluxos que entram nos pinos. Esses dispositivos fornecem aceleração de hardware para aplicativos que usam DirectSound aceitando fluxos PCM que são reproduzidos a partir dos buffers de som dos aplicativos. Para que o DirectSound use esses pinos, eles devem fornecer nós adicionais para processamento bidimensional (2D) e tridimensional (3D), conforme descrito em DirectSound Hardware Acceleration in WDM Audio.

Este tipo de aceleração de hardware é suportado no Windows Server 2003, Windows XP, Windows 2000 e Windows Me/98, mas não é suportado no Windows Vista. O Windows Vista não usa os pinos de aceleração de hardware em dispositivos wave mais antigos.

Na figura anterior, as conexões físicas entre os filtros MIDI, WaveXxx e topologia transportam todos os sinais de áudio analógicos. No entanto, um dispositivo de topologia diferente pode alcançar um efeito semelhante aceitando fluxos de saída digital dos dispositivos MIDI e wave, misturando-os digitalmente e convertendo a mistura digital em um sinal de saída analógico.

O pino "Non-PCM Wave out" no canto inferior esquerdo da figura anterior aceita um fluxo de saída não-PCM em um formato de passagem S/PDIF, como AC-3-over-S/PDIF ou WMA Pro-over-S/PDIF. Usando um desses formatos, o dispositivo simplesmente transmite os dados compactados através do link S / PDIF sem decodificar os dados. Por esse motivo, o caminho de dados para o pino "Saída S/PDIF" no canto inferior direito da figura anterior não contém volume ou nós de silenciamento. Para obter mais informações sobre formatos de áudio não-PCM e transmissão de passagem S/PDIF, consulte Suporte a formatos de onda não-PCM e S/PDIF Pass-Through transmissão de fluxos não-PCM.

O driver de miniporta apresenta sua topologia para o driver de porta na forma de uma estrutura PCFILTER_DESCRIPTOR . Essa estrutura descreve todos os pinos e nós do filtro e especifica como os pinos e nós se conectam uns aos outros.

Em vez de projetar um filtro de topologia monolítico, como mostrado na figura anterior, o circuito do mixer no adaptador de áudio pode ser particionado em vários filtros de topologia. Por exemplo, na figura anterior, os caminhos de dados que conduzem os alto-falantes podem ser implementados como um filtro de topologia e os caminhos de dados que capturam dados de áudio de dispositivos de entrada podem ser implementados como um filtro de topologia separado. Quando os caminhos de dados em um filtro de topologia específico não estão em uso, essa parte do adaptador pode ser desligada sem desativar todo o adaptador. Para obter mais informações, consulte Subdispositivos de áudio dinâmico.