Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous implémentez un pilote pour l’audio déchargé, vous développez un pilote capable de traiter les flux audio déchargés et d’exposer cette capacité au système audio Windows.
Cette rubrique présente les détails de l’implémentation d’un pilote audio développé pour une carte audio capable de traiter les flux audio déchargés par le matériel.
Ces rubriques supplémentaires de cette section décrivent les points importants à connaître lorsque vous développez un pilote pour une carte audio dotée d'un moteur audio matériel chargé de gérer les flux audio déchargés.
Interfaces d’assistance "Portcls" pour le traitement audio externalisé
Rapport de glitch pour l’audio déchargé
Décharge matérielle - Topologie de filtre KS
Windows prend en charge l'utilisation d'un adaptateur audio qui peut utiliser un moteur audio matériel embarqué pour traiter les flux audio. Lorsque vous développez une telle carte audio, le pilote audio associé doit exposer ce fait au système audio en mode utilisateur de manière spécifique, afin que le système audio puisse découvrir, utiliser et exposer correctement les fonctionnalités de cet adaptateur et de son pilote.
GUID KSNODETYPE_AUDIO_ENGINE pour les descripteurs de nœud
Si une carte audio est capable de traiter les flux audio déchargés, le pilote audio de l’adaptateur expose cette fonctionnalité à l’aide d’un nœud dans le filtre KS de l’adaptateur.
Si une carte audio est capable de traiter les flux audio déchargés, le pilote audio de l’adaptateur expose cette fonctionnalité à l’aide d’un nœud spécifique dans le filtre KS de l’adaptateur.
Chaque nœud du chemin d’accès du flux audio a un descripteur de nœud. Pour le déchargement matériel, le pilote doit définir le GUID Type sur KSNODETYPE_AUDIO_ENGINE.
Voici un exemple de configuration du descripteur de nœud pour ce nœud :
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;
Si le GUID du nom est défini sur KSNODETYPE_AUDIO_ENGINE, vous devez alors créer une chaîne de caractères de nom par défaut pour ce nœud. Vous ajoutez ensuite cette chaîne à ks.inf, de sorte que pendant l’installation du pilote, la chaîne peut être utilisée pour remplir la clé de Registre MediaCategories .
La définition du GUID pour le type de nœud, KSNODETYPE_AUDIO_ENGINE, est la suivante :
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)
Pour plus d’informations, consultez le fichier d’en-tête ksmedia.h .
En fonction des informations précédentes, un descripteur pour un nœud miniport peut ressembler à ce qui suit :
PCNODE_DESCRIPTOR MiniportNodes[] =
{
// KSNODE_WAVE_AUDIO_ENGINE
{
0, // Flags
NULL, // AutomationTable
&KSNODETYPE_AUDIO_ENGINE, // Type KSNODETYPE_AUDIO_ENGINE
NULL // Name
}
};
Propriété KSPROPSETID_AudioEngine KS définie pour les moteurs audio
L'ensemble de propriétés KSPROPSETID_AudioEngine est utilisé pour prendre en charge les moteurs audio matériels et le traitement audio déchargé vers le matériel. Par conséquent, le pilote d’un adaptateur capable de traiter les flux audio déchargés doit prendre en charge les propriétés de ce nouvel ensemble de propriétés.
Le jeu de propriétés, KSPROPSETID_AudioEngine, est défini comme suit :
#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)
Les noms des propriétés de cet ensemble de propriétés sont définis dans l’énumération KSPROPERTY_AUDIOENGINE , et le pilote doit prendre en charge ces noms.
Voici les propriétés de l’ensemble de propriétés 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 (Formats d'appareils pris en charge par AudioEngine)
KSPROPERTY_AUDIOENGINE_VOLUMELEVEL
Propriétés requises dans le jeu de propriétés audio KSPROPSETID_
Outre la prise en charge des propriétés dans le jeu de propriétés KSPROPSETID_AudioEngine , le pilote doit également prendre en charge les propriétés existantes suivantes dans le jeu de propriétés KSPROPSETID_Audio :
Pour terminer l’implémentation de la prise en charge du pilote pour le traitement audio déchargé par le matériel, les propriétés sont disponibles pour le jeu de propriétés audio KSPROPSETID_ .
KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION
KSPROPERTY_AUDIO_PRESENTATION_POSITION
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION
Mise à jour du pilote de classe port et rapport de dysfonctionnements
Outre la prise en charge décrite dans les sections précédentes pour le traitement audio délégué au matériel, le pilote de classe de port Windows fournit des « interfaces d'aide » pour faciliter le développement d’un pilote capable de fonctionner avec des flux audio déchargés. Et quand un tel pilote détecte des problèmes, il existe un mécanisme en place pour permettre au pilote de signaler les erreurs de glitch. Les rubriques suivantes fournissent plus d’informations sur les interfaces d’assistance et les rapports de problèmes :
Interfaces d’assistance portcls pour le traitement audio transféré Outre la prise en charge décrite dans les sections précédentes pour le traitement audio transféré du matériel, le pilote de classe port Windows inclut également des « interfaces d’assistance » pour simplifier le développement d’un pilote qui peut fonctionner avec des flux audio transférés. Et quand un tel pilote détecte des problèmes, il existe un mécanisme en place pour permettre au pilote de signaler les erreurs de glitch. Les rubriques suivantes fournissent plus d’informations sur les interfaces d’assistance et les rapports de problèmes :