Compartilhar via


Especificando a topologia

Depois que um fornecedor de hardware decide quais drivers de miniporto gravar para os dispositivos wave e MIDI, a próxima etapa é representar a topologia de streaming de kernel (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 por cada dispositivo. Por meio dessa topologia, o driver expõe os nós de controle (por exemplo, controle de volume) que estão ao longo de cada caminho. Normalmente, um aplicativo usa as funçõesxxx do mixer multimídia do Windows para explorar a topologia enumerando a sequência de nós ao longo de cada caminho. Por exemplo, depois de descobrir um nó de controle no nível do volume, um aplicativo pode definir o nível de volume nesse nó. Para obter mais informações sobre a 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.

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 topologia controla a parte do circuito do adaptador de áudio que combina 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 seu nome um tanto enganoso, o driver de porta topologia não incorpora toda a topologia de um adaptador de áudio, embora normalmente contenha uma grande parte dele. Os outros drivers de porta contribuem com as partes restantes da topologia do adaptador.

Cada driver de porta é emparelhado com um driver de miniporto 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 de mixer do adaptador.

O driver de miniporto implementa as funções específicas do dispositivo do filtro, incluindo a definição da parte 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 deixarem o filtro. Normalmente, os pinos no filtro topologia são vinculados aos pinos nos filtros wave, MIDI e DMus por meio de conexões conectadas no circuito do adaptador. Esses filtros e suas interconexões formam um grafo 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 por meio do filtro e dos nós de controle que estão ao longo de cada caminho. Os nós são rotulados como mostrados na tabela a seguir.

Rótulo Descrição KS Node-Type GUID

Synth

Nó do sintetizador

KSNODETYPE_SYNTHESIZER

DAC

Nó conversor digital para áudio

KSNODETYPE_DAC

ADC

Nó conversor analógico para digital

KSNODETYPE_ADC

Volume

Nó de controle no nível do volume

KSNODETYPE_VOLUME

Mute

Ativar mudo do nó de controle

KSNODETYPE_MUTE

Somar

Nó de soma

KSNODETYPE_SUM

MUX

Nó multiplexer

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) por meio das quais os fluxos de dados entram no adaptador do barramento do sistema ou entram no barramento do sistema do adaptador. Esses pinos são logicamente conectados a 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 grafo de filtro maior cuja topologia pode ser explorada por aplicativos usando as funçõesxxx do mixer. Por exemplo, o pino rotulado como "PCM Wave Out" na figura anterior está logicamente conectado ao mecanismo de áudio do modo de usuário no Windows. Essas conexões lógicas são mantidas por transferências de DMA pelo barramento do sistema.

Por outro lado, os pinos na borda esquerda do filtro de topologia são fisicamente conectados a pinos nos filtros MIDI e WaveXxx . Essas conexões são ligadas e não podem ser alteradas pelo software.

Os pinos de ponte no lado direito do adaptador de áudio representam tomadas de áudio no chassi do sistema. Esses pinos são chamados de pinos de ponte porque fazem a ponte entre o grafo de filtro KS e o mundo externo.

Filtros, pinos e nós normalmente têm propriedades acessíveis aos clientes (componentes do modo kernel ou aplicativos no modo 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 no nível do 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. Por outro lado, alguns dispositivos de onda fornecem vários pinos para a saída de onda do PCM e contêm hardware para misturar internamente os fluxos que inserem os pinos. Esses dispositivos fornecem aceleração de hardware para aplicativos que usam o DirectSound aceitando fluxos pcm que são reproduzidos 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 Aceleração de Hardware directSound no áudio WDM.

Esse tipo de aceleração de hardware tem suporte no Windows Server 2003, Windows XP, Windows 2000 e Windows Me/98, mas não há suporte no Windows Vista. O Windows Vista não usa os pinos de aceleração de hardware em dispositivos de onda mais antigos.

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

O pino "Não 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 pelo link S/PDIF sem decodificar os dados. Por esse motivo, o caminho de dados para o pino "S/PDIF Out" no canto inferior direito da figura anterior não contém nenhum volume ou nós mudos. 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 transmissão de S/PDIF Pass-Through de fluxos não PCM.

O driver de miniporto 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 entre si.

Em vez de criar um filtro de topologia monolítica, conforme mostrado na figura anterior, o circuito de 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 alimentada sem desabilitar todo o adaptador. Para obter mais informações, consulte Subdispositivos de Áudio Dinâmico.