Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Ao implementar um driver para áudio descarregado, você desenvolve um driver que é 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 de hardware.
Estes tópicos adicionais nesta seção discutem os problemas que você deve estar ciente ao desenvolver um driver de áudio para um adaptador de áudio que implementa um mecanismo de áudio de hardware para lidar com fluxos de áudio descarregados.
Interfaces auxiliares de Portcls para processamento de áudio descarregado
Relatório de falhas para áudio descarregado
Descarregamento de hardware - topologia de filtro KS
O Windows suporta o uso de um adaptador de áudio que pode usar um mecanismo de áudio de hardware integrado para processar fluxos de áudio. Quando você desenvolve tal adaptador de áudio, o driver de áudio associado deve expor esse fato para o sistema de áudio de 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 descritores de nó
Se um adaptador de áudio for capaz de processar fluxos de áudio desagregados, o driver de áudio do adaptador expõe esse recurso usando um nó no filtro KS para o adaptador.
Se um adaptador de áudio for capaz de processar fluxos de áudio descarregados, o driver de áudio do adaptador expõe esse recurso usando um nó específico no filtro KS para o adaptador.
Cada nó no caminho do fluxo de áudio tem um descritor de nó; para descarga de hardware, o driver deve definir o Tipo GUID como KSNODETYPE_AUDIO_ENGINE.
Aqui está um exemplo de como o driver pode configurar o descritor de nó para esse 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, a cadeia de caracteres 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 miniporta pode ter a seguinte aparência:
PCNODE_DESCRIPTOR MiniportNodes[] =
{
// KSNODE_WAVE_AUDIO_ENGINE
{
0, // Flags
NULL, // AutomationTable
&KSNODETYPE_AUDIO_ENGINE, // Type KSNODETYPE_AUDIO_ENGINE
NULL // Name
}
};
O conjunto de propriedades KSPROPSETID_AudioEngine KS para mecanismos de áudio
O conjunto de propriedades KSPROPSETID_AudioEngine é utilizado para suportar motores de áudio de hardware e processamento de áudio descarregado para hardware. Portanto, o driver de um adaptador que pode processar fluxos de áudio delegados deve suportar as propriedades deste novo conjunto de propriedades.
O conjunto de propriedades, KSPROPSETID_AudioEngine, é definido da seguinte forma:
#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 neste conjunto de propriedades são definidos no KSPROPERTY_AUDIOENGINE enum, e o driver deve oferecer 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_SUPPORTEDDEVICEFORMATS
KSPROPERTY_AUDIOENGINE_VOLUMELEVEL
Propriedades necessárias no conjunto de propriedades KSPROPSETID_ Audio
Além de oferecer suporte às propriedades no conjunto de propriedades KSPROPSETID_AudioEngine , o driver também deve oferecer suporte às seguintes propriedades existentes no conjunto de propriedades KSPROPSETID_Audio :
E para completar a implementação do suporte do driver para processamento de áudio fora do hardware, as propriedades estão disponíveis para o conjunto de propriedades KSPROPSETID_ Audio.
KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION
KSPROPERTY_AUDIO_PRESENTATION_POSITION
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION
Atualizações de driver de classe de porta e relatórios de falhas
Além do suporte descrito nas seções anteriores para processamento de áudio descarregado de hardware, o driver da classe de porta do Windows fornece "interfaces auxiliares" para facilitar o desenvolvimento de um driver compatível com fluxos de áudio descarregados. E quando esse driver deteta falhas, há um mecanismo em vigor para permitir que o motorista relate os erros de falha. Os tópicos a seguir fornecem mais detalhes sobre as interfaces auxiliares e o relatório de falhas:
Interfaces auxiliares de Portcls para processamento de áudio descarregado Além do suporte descrito nas seções anteriores para processamento de áudio descarregado de hardware, o driver de classe de porta do Windows também inclui "interfaces auxiliares" para simplificar o desenvolvimento de um driver que possa funcionar com fluxos de áudio descarregados. E quando esse driver deteta falhas, há um mecanismo em vigor para permitir que o motorista relate os erros de falha. Os tópicos a seguir fornecem mais detalhes sobre as interfaces auxiliares e o relatório de falhas: