Compartilhar via


Visão geral de extensões de classe de áudio ACX

Este tópico fornece um resumo de alto nível das extensões de classe de áudio do ACX.

A estrutura do ACX foi criada sobre a estrutura de driver do Windows

Para permitir que os drivers de áudio sejam mais confiáveis e ofereçam a melhor experiência possível para usuários de PC, o ACX (Audio Class eXtension) agora está disponível no Windows. O ACX define uma extensão de classe WDF (Windows Driver Framework) para o domínio de áudio. Para obter mais informações sobre o WDF, consulte Introdução aos objetos de estrutura. Muitos conceitos do WDF, como destinos de E/S do WDF, estão disponíveis no ACX. Para obter mais informações sobre destinos de E/S do WDF, consulte Introdução aos destinos de E/S.

O ACX foi criado usando o KMDF (Kernel Mode Driver Framework) e não o UMDF (User Mode Driver Framework) para evitar qualquer latência associada à alternância de tarefas várias vezes do modo de usuário para kernel durante o streaming. Os drivers de áudio Portcls, o modelo herdado atual, são drivers WDM baseados no modo kernel.

O uso da estrutura do ACX facilita a criação de drivers de áudio funcionais "prontos para uso". Por exemplo, o ACX dá suporte à conclusão padrão para a maioria de suas configurações, o que torna mais fácil para o driver usar a configuração correta, enquanto ainda permite a personalização.

A estrutura do ACX expõe conceitos de áudio como objetos WDF com os quais o driver pode interagir (fluxo, formato etc.). Isso permite uma experiência de programação consistente e permite uma comunidade maior de desenvolvedores de drivers de áudio.

ACX goals

As eXtensões de Classe de Áudio (ACX) têm as seguintes metas:

  • Simplificar o esforço e o know-how necessários para desenvolver drivers de áudio autônomos simples.
  • Reduzir a quantidade de código que um terceiro precisa desenvolver. Menos linhas de código diminui a manutenção e facilita a depuração.
  • Permitir que os clientes do modo de usuário superior (serviços e aplicativos) existentes sejam executados como estão.
  • Simplificar o gerenciamento de pnp de energia dos drivers de pilha de áudio.
  • Nenhum impacto negativo no desempenho geral; como, por exemplo, latência adicional ou perceptível no processamento ou entrega de áudio.
  • Simplificar o esforço necessário para desenvolver drivers de áudio de pilha múltipla.
  • Permite que o driver do terceiro especifique o mecanismo de bloqueio a ser usado durante o streaming.
  • Use a solução de isolamento de implantação de componentes da Microsoft, que torna os módulos drivers/APOs autossuficiíveis e reutilizáveis.

ACX architecture

Este diagrama ilustra a arquitetura do ACX, que mostra aplicativos de modo de usuário existentes e objetos do ACX no modo kernel e hardware de áudio na parte inferior da pilha. Além dos objetos do ACX, o desenvolvedor do driver tem acesso aos objetos WDF para que eles sejam aproveitados no código do driver, por exemplo, para gerenciamento de energia.

Diagrama que ilustra a arquitetura do ACX e mostra o modo de usuário e kernel com objetos WDF e ACX no modo kernel e hardware de áudio na parte inferior da pilha.

Coexistência do ACX com drivers de áudio existentes

O ACX foi projetado para coexistir com drivers de áudio existentes para permitir uma migração flexível para novos drivers do ACX.

  • A compatibilidade binária de drivers de miniporta de áudio existentes e inalterados (baseados em WDM) é mantida por drivers de classe legados existentes no Windows.
  • Atualmente, apenas o streaming baseado em WaveRT é suportado pelo ACX.
  • PortCls/KS herdados e novas pilhas ACX são executadas lado a lado. O uso do ACX não força o terceiro a fazer a portabilidade dos drivers de áudio atuais para o novo modelo. Como o modelo oferece muitas vantagens, os terceiros podem optar voluntariamente por usá-lo em um futuro desenvolvimento de áudio.

Definições comuns do ACX

Circuito - Um componente de driver que representa um caminho de áudio parcial ou completo. O circuito representa um ponto de extremidade existente e suas capacidades.

Transmissão - Um componente de driver criado para representar uma transmissão de áudio, criada por um circuito. A transmissão é composta por uma lista de elementos criados com base nos elementos do circuito pai.

Circuito de transmissão - O circuito em uma arquitetura de pilha múltipla (caminho de áudio parcial) que faz interface direta com o serviço de streaming de modo de usuário superior.

Circuito principal - O circuito em uma arquitetura de pilha múltipla (caminho de áudio parcial) que fornece a identidade do dispositivo de ponto de extremidade de áudio.

Elemento – Um subcomponente de um Circuito ou Stream, representando uma funcionalidade de áudio do hardware subjacente. Isso pode ser um elemento de volume, ou mudo, ou entrada, ou um elemento do módulo em um circuito de DSP etc.

Caminho de áudio de ponto de extremidade - Um único ou um grupo de objetos de circuito conectados para representar um único ponto de extremidade de áudio. Os objetos do circuito devem vir de pilhas de dispositivos diferentes pertencentes aos mesmos drivers ou a drivers diferentes.

Resumo de objetos ACX

Para obter um resumo dos objetos ACX de base, consulte Resumo de objetos ACX.

Driver do ACX de exemplo

Um driver de exemplo simples do ACX está disponível para visualização e download no GitHub na ramificação de desenvolvimento - https://github.com/microsoft/Windows-driver-samples/tree/main/audio/Acx/Samples.

Driver Verifier

O uso do verificador de driver é incentivado para todos os drivers do Windows, incluindo drivers do ACX. Use o verificador de driver para detectar erros latentes, diminuir o consumo de energia e aumentar a confiabilidade do seu driver. Para obter mais informações, consulte Driver Verifier.

Comunicações cruzadas padronizadas do driver de pilha múltipla do ACX

É comum que o caminho de áudio passe por vários componentes de hardware manipulados por diferentes pilhas de drivers para criar uma experiência de áudio completa. É típico de um sistema ter a funcionalidade DSP, CODEC e AMP implementada por diferentes fornecedores de tecnologia de áudio.

Em uma arquitetura de pilha múltipla sem um padrão bem definido, cada fornecedor é forçado a definir sua própria interface proprietária e protocolo de comunicação. É uma meta do ACX facilitar o desenvolvimento de drivers de áudio de multi-pilhas, assumindo o controle da sincronização entre essas pilhas e fornecendo um padrão simples e reutilizável para que os drivers se comuniquem facilmente entre si.

Para obter mais informações, consulte Comunicações entre drivers de pilha múltipla ACX.

Documentação de referência da ACX

Para obter informações sobre a documentação de referência do ACX no nível do cabeçalho, consulte Documentação de referência do ACX.

See also

Resumo de objetos ACX

Documentação de referência da ACX

Informações de versão ACX

Registro em log e depuração de ACX

Destinos e sincronização de drivers do ACX

IRPs de pacote de solicitação de E/S ACX

Enumeração de dispositivo ACX

Gerenciamento de energia de ACX

Comunicações entre drivers de pilha múltipla ACX

ACX streaming