Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao implementar um driver para áudio descarregado, você desenvolve um driver capaz de processar fluxos de áudio descarregados e expor essa capacidade ao sistema de áudio do Windows.
Este tópico apresenta os detalhes de implementação de um driver de áudio desenvolvido para um adaptador de áudio capaz de processar fluxos de áudio descarregados por hardware.
Estes tópicos adicionais nesta seção discutem as questões das quais você deve estar ciente ao desenvolver um driver de áudio para um adaptador de áudio que implementa um mecanismo de áudio baseado em hardware para lidar com fluxos de áudio offload.
Interfaces auxiliares do Portcls para processamento de áudio descarregado
Relatório de falhas para áudio descarregado
Descarregamento de hardware – topologia de filtro KS
O Windows dá suporte ao uso de um adaptador de áudio que pode usar um mecanismo de áudio de hardware a bordo para processar fluxos de áudio. Quando você desenvolve esse adaptador de áudio, o driver de áudio associado deve expor esse fato ao sistema de áudio do modo de usuário de uma maneira específica, para que o sistema de áudio possa descobrir, usar e expor corretamente os recursos desse adaptador e seu driver.
O GUID 'KSNODETYPE_AUDIO_ENGINE' para os descritores de nós
Se um adaptador de áudio for capaz de processar fluxos de áudio não processados localmente, o driver de áudio do adaptador expõe essa funcionalidade usando um nó no filtro KS para o adaptador.
Se um adaptador de áudio for capaz de processar fluxos de áudio deslocados, o driver de áudio do adaptador exporá essa funcionalidade por meio de um nó específico no filtro KS do adaptador.
Cada nó no caminho do fluxo de áudio possui um descritor de nó. Para que o hardware faça offload, o driver deve definir o GUID de Tipo como KSNODETYPE_AUDIO_ENGINE.
Aqui está um exemplo de como o driver pode configurar o descritor de nó para este nó:
typedef struct _KSNODE_DESCRIPTOR {
const KSAUTOMATION_TABLE *AutomationTable; // drv specific
const GUID *Type; // must be set to KSNODETYPE_AUDIO_ENGINE
const GUID *Name; // drv specific (KSNODETYPE_AUDIO_ENGINE?)
} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
Se o GUID de Nome estiver definido como KSNODETYPE_AUDIO_ENGINE, você deverá criar uma cadeia de caracteres de nome padrão para esse nó. Em seguida, adicione essa cadeia de caracteres a ks.inf, para que, durante a instalação do driver, ela possa ser usada para preencher a chave do Registro MediaCategories.
A definição do GUID para o tipo de nó, KSNODETYPE_AUDIO_ENGINE, é a seguinte:
Code style
#define STATIC_KSNODETYPE_AUDIO_ENGINE\
0x35caf6e4, 0xf3b3, 0x4168, 0xbb, 0x4b, 0x55, 0xe7, 0x7a, 0x46, 0x1c, 0x7e
DEFINE_GUIDSTRUCT("35CAF6E4-F3B3-4168-BB4B-55E77A461C7E", KSNODETYPE_AUDIO_ENGINE);
#define KSNODETYPE_AUDIO_ENGINE DEFINE_GUIDNAMED(KSNODETYPE_AUDIO_ENGINE)
Para obter mais informações, consulte o arquivo de cabeçalho ksmedia.h .
E com base nas informações anteriores, um descritor para um nó de miniport pode ser semelhante ao seguinte:
PCNODE_DESCRIPTOR MiniportNodes[] =
{
// KSNODE_WAVE_AUDIO_ENGINE
{
0, // Flags
NULL, // AutomationTable
&KSNODETYPE_AUDIO_ENGINE, // Type KSNODETYPE_AUDIO_ENGINE
NULL // Name
}
};
O conjunto de propriedades KS KSPROPSETID_AudioEngine para motores de áudio
O conjunto de propriedades KSPROPSETID_AudioEngine é usado para dar suporte a mecanismos de áudio de hardware e processamento de áudio com descarregamento por hardware. Portanto, o driver de um adaptador que pode processar fluxos de áudio transferidos deve dar suporte às propriedades neste novo conjunto de propriedades.
O conjunto de propriedades, KSPROPSETID_AudioEngine, é definido da seguinte maneira:
#define STATIC_KSPROPSETID_AudioEngine\
0x3A2F82DCL, 0x886F, 0x4BAA, 0x9E, 0xB4, 0x8, 0x2B, 0x90, 0x25, 0xC5, 0x36
DEFINE_GUIDSTRUCT("3A2F82DC-886F-4BAA-9EB4-082B9025C536", KSPROPSETID_AudioEngine);
#define KSPROPSETID_AudioEngine DEFINE_GUIDNAMED(KSPROPSETID_AudioEngine)
Os nomes das propriedades nesse conjunto de propriedades são definidos na enumeração KSPROPERTY_AUDIOENGINE e o driver deve dar suporte a esses nomes.
Aqui estão as propriedades no conjunto de propriedades KSPROPSETID_AudioEngine :
KSPROPERTY_AUDIOENGINE_BUFFER_SIZE_RANGE
KSPROPERTY_AUDIOENGINE_DESCRIPTOR
KSPROPERTY_AUDIOENGINE_DEVICEFORMAT
KSPROPERTY_AUDIOENGINE_GFXENABLE
KSPROPERTY_AUDIOENGINE_LFXENABLE
KSPROPERTY_AUDIOENGINE_LOOPBACK_PROTECTION
KSPROPERTY_AUDIOENGINE_MIXFORMAT
KSPROPERTY_AUDIOENGINE_FORMATOSDISPOSITIVOSUPORTADOS
KSPROPERTY_AUDIOENGINE_VOLUMELEVEL
Propriedades necessárias no conjunto de propriedades KSPROPSETID_ Audio
Além de dar suporte às propriedades no conjunto de propriedades KSPROPSETID_AudioEngine , o driver também deve dar suporte às seguintes propriedades existentes no conjunto de propriedades KSPROPSETID_Audio :
E para completar a implementação do suporte de driver para o processamento de áudio realizado por hardware, as propriedades estão disponíveis no conjunto de propriedades KSPROPSETID_Audio.
KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION
KSPROPERTY_AUDIO_PRESENTATION_POSITION
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION
Atualizações de driver da classe de porta e relatórios de erros
Além do suporte descrito nas seções anteriores para processamento de áudio descarregado por hardware, o driver da classe de porta do Windows fornece "interfaces auxiliares" para simplificar o desenvolvimento de um driver que possa trabalhar com fluxos de áudio descarregados. E quando esse driver detecta falhas, há um mecanismo em vigor para permitir que o driver relate os erros de falha. Os tópicos a seguir fornecem mais detalhes sobre as interfaces auxiliares e os relatórios de falhas:
Interfaces auxiliares do Portcls para processamento de áudio descarregado Além do suporte descrito nas seções anteriores para processamento de áudio descarregado por hardware, o driver da classe de porta do Windows também inclui "interfaces auxiliares" para tornar mais simples desenvolver um driver que possa funcionar com fluxos de áudio descarregados. E quando esse driver detecta falhas, há um mecanismo em vigor para permitir que o driver relate os erros de falha. Os tópicos a seguir fornecem mais detalhes sobre as interfaces auxiliares e os relatórios de falhas: