Résumé des objets ACX

Important

Certaines informations concernent un produit prérelease qui peut être sensiblement modifié avant sa publication commerciale. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.

Cette rubrique fournit un résumé de haut niveau des objets ACX (Audio Class Extensions) qui forment la base d’un pilote audio ACX. Pour obtenir une vue d’ensemble générale d’ACX, consultez la vue d’ensemble des extensions de classe audio ACX.

Les objets ACX sont des objets WDF (Windows Driver Framework) - WDFOBJECT. Pour plus d’informations sur WDF, consultez Présentation des objets Framework. Pour obtenir un résumé des objets WDF, consultez Résumé des objets Framework.

Hiérarchie d’objets ACX

Dans ACX (comme dans WDF), l’objet pilote est l’objet racine et tous les autres objets sont ses enfants/descendants. Tous les objets ACX sont des enfants de l’objet pilote directement ou indirectement via d’autres objets ACX ou WDF. Un pilote ACX peut spécifier le parent d’un objet ACX pendant la création. Si le parent n’est pas spécifié, ACX utilise un parent par défaut comme décrit dans ces sections.

diagramme illustrant la hiérarchie d’objets ACX avec WDFDEVICE en haut et les principaux objets ACX tels que le circuit et le flux

ACX Circuit

Un AcxCircuit représente un chemin audio partiel ou complet vers un appareil audio perçu par l’utilisateur (haut-parleurs, micro, etc.). Un acxCircuit a au moins une broche d’entrée et une broche de sortie (ACXPIN) et peut agréger un ou plusieurs objets similaires à AcxElements. Par défaut, les acxElements sont « connectés » dans le même ordre d’assembly.

Le circuit audio est le bloc de construction principal d’ACX. Dans le nouveau framework ACX, un pilote audio crée un ou plusieurs objets de circuit ACX pour représenter un chemin d’accès audio/contrôle partiel ou complet. ACX assemble ces objets de circuit ACX ensemble pour créer un chemin audio complet qui représente un point de terminaison audio. ACX est responsable de la gestion des circuits ACX et de leurs dépendances. L’ordre de montage de ces circuits peut être défini de manière statique au moment de l’initialisation ou défini dynamiquement au moment de l’exécution.

Un point de terminaison audio dans les frameworks ACX est une collection d’un ou plusieurs circuits ACX. Chaque circuit ACX dans un chemin audio à plusieurs circuits doit appartenir à une pile d’appareils PnP différente. Un pilote ACX peut créer un ou plusieurs circuits au moment de l’initialisation, ou il peut créer des circuits au moment de l’exécution, comme effet secondaire d’un événement externe, par exemple après la détection d’un nouveau composant audio, ou parce qu’il s’est inscrit auprès d’ACX comme usine pour un type de circuit spécifique, et l’infrastructure ACX a demandé à l’infrastructure ACX de créer un nouveau circuit de ce type (voir le gestionnaire de circuit ACX/factory décrit plus loin dans cette rubrique).

  • Un AcxCircuit peut avoir un ou plusieurs flux.

  • AcxCircuit a une file d’attente WDF dédiée. Pour plus d’informations sur les files d’attente WDF, consultez Framework Queue Objects.

Les DDIS pour les circuits ACX sont décrits dans l’en-tête acxcircuit.h .

Épingle ACX

Comme dans les pilotes audio WDM Portcls, et l’objet AcxPin représente les connexions logiques (et non les connexions physiques) via lesquelles les flux de données entrent dans l’adaptateur à partir du bus de communications système ou entrent le bus de communications système à partir de l’adaptateur.

Les DDIS pour pin sont décrits dans l’en-tête acxpin.h .

Flux ACX

AcxStream représente un flux audio sur le matériel d’un circuit spécifique. AcxStream peut agréger un ou plusieurs objets similaires à AcxElements. Par défaut, les acxElements sont « connectés » dans le même ordre d’assembly. AcxStream n’est associé qu’à un seul circuit ACX.

  • AcxStream dispose d’une file d’attente WDF dédiée. Pour plus d’informations sur les files d’attente WDF, consultez Framework Queue Objects
  • AcxStream prend en charge différents états. Ces états indiquent quand l’audio est en cours d’exécution (état RUN) ou non (ÉTAT PAUSE ou STOP).
  • Actuellement, ACX prend en charge deux types de flux : les objets de flux ACX de base utilisés par les circuits non de streaming et les objets de flux ACX RT utilisés par les circuits de diffusion en continu.

Les DDIS pour le flux sont définis dans l’en-tête acxstreams.h .

Cibles ACX

WdfIoTarget est une abstraction WDF pour faciliter la communication entre deux piles différentes. Pour plus d’informations sur les cibles d’E/S WDF, consultez Présentation des cibles d’E/S.

  • Les pilotes utilisent AcxTargetCircuit pour communiquer avec un circuit distant exposé par une autre pile. AcxTargetCircuit est implémenté à l’aide d’un WdfIoTarget.
  • Les pilotes utilisent AcxTargetPin pour communiquer avec l’épingle d’un circuit distant exposé par une autre pile. AcxTargetPin est implémenté à l’aide d’un WdfIoTarget pour envoyer des messages à l’entité de broche distante.
  • Les pilotes utilisent AcxTargetElement pour communiquer avec l’élément d’un circuit distant exposé par une autre pile. AcxTargetElement est implémenté à l’aide d’un WdfIoTarget pour envoyer des messages à l’entité d’élément distant.
  • Les pilotes utilisent AcxTargetStream pour communiquer avec le flux d’un circuit distant exposé par une autre pile. AcxTargetStream est implémenté à l’aide d’un WdfIoTarget pour créer un flux distant et modifier l’état du flux distant.
  • Les pilotes utilisent AcxTargetFactoryCircuit pour communiquer avec une instance de fabrique de circuit distant. AcxTargetFactoryCircuit est implémenté à l’aide d’un WdfTarget pour envoyer des messages à la fabrique de circuit distant.

Chacun des types ACX ci-dessus prend en charge les propriétés, les méthodes et les événements pour interagir avec le circuit distant. Tous ces types sont basés sur l’objet WdfIoTarget.

Les DDIS pour les cibles sont définies dans l’en-tête acxtargets.h .

Pont de flux ACX

L’objet AcxStreamBridge est utilisé par un circuit pour propager une création de flux, les transitions d’états du flux et les paramètres DRM entre les segments de circuit. Cet objet est utilisé uniquement dans un scénario multi-circuit (composite audio). Un pilote peut associer un ou plusieurs objets ACXSTREAMBRIDGE à une broche de pont. Une broche de pont est l’ACXPIN qui se connecte logiquement à l’acxpoinding ACXPIN sur l’autre circuit.

Les DDIS pour Stream sont décrits dans l’en-tête acxstreams.h .

Exemple de disposition du circuit de nœud du moteur audio ACX

Le diagramme suivant illustre un circuit ACX. L’hôte et les broches de déchargement sont des entrées sur le circuit avec une broche de bouclage qui peut être utilisée pour l’annulation d’écho. La sortie peut être une broche de pont qui est acheminée vers un haut-parleur.

diagramme illustrant et circuit acx avec et hôte, décharger une broche de bouclage sur la gauche et une broche de pont sur la droite routée par le biais d’un nœud de moteur audio

Notez que le pilote n’a pas besoin d’effectuer l’étape de connexion explicite lorsque les circuits/éléments sont connectés dans le même ordre qu’ils ont été ajoutés au circuit.

Par défaut, ACX connecte les éléments à partir de l’épingle du récepteur de requête ACX du circuit et se termine par la broche de pont d’appareil du circuit pour les appareils de rendu et de capture.

Gestionnaire ACX

Le gestionnaire ACX est utilisé pour les tâches système telles que la prise en charge des points de terminaison audio composites. Ces types de points de terminaison sont gérés par une ou plusieurs piles de pilotes provenant de fournisseurs identiques ou différents. Les clients peuvent préconfigurer cette configuration dans ACPI ou utiliser directement le DDI du Gestionnaire ACX. Les DDIS du gestionnaire ACX sont décrits dans l’en-tête acxmanager.h .

Sac d’objets ACX

Le sac d’objets ACX est utilisé pour stocker différents types de données. ACXOBJECTBAG peut être passé en tant qu’argument dans différentes DDIS. Les DDIS pour Object Bag sont décrits dans l’en-tête acxmisc.h .

Résumé de l’objet ACX

Le tableau suivant répertorie tous les objets ACX et fournit des informations de base sur chaque objet.

Handle Nom Objectif
ACXMANAGER Gestionnaire ACX Objet ACX Manager utilisé pour gérer et contrôler d’autres objets.
ACXOBJECTBAG Bag d’objets Utilisé pour stocker des données à utiliser avec des objets.
ACXEVENT Événement ACX Pour les événements KS (noyau-streaming).
ACXEVENTDATA Données d’événement Données associées à un événement.
ACXPNPEVENT Événement Pnp Pour les événements plug-and-play.
ACXCIRCUIT Circuit Un circuit ACX décrit ci-dessus dans cette rubrique.
ACXPIN Épingle Un objet de broche ACX représente les connexions logiques et est décrit ci-dessus dans cette rubrique.
ACXELEMENT Élément Utilisé pour représenter n’importe quel élément qui peut être ajouté à un AcxCircuit ou AcxStream, tel que AcxVolume
ACXAUDIOENGINE Moteur audio Moteur audio ACX utilisé dans un circuit de rendu pour représenter un DSP.
ACXSTREAMAUDIOENGINE Stream Audio Engine Utilisé dans un flux de rendu pour représenter un DSP.
ACXKEYWORDSPOTTER Spotter de mots clés Spotter de mots clés, utilisé dans un circuit de capture pour la détection de mots clés dans un flux audio.
ACXVOLUME Volume Utilisé pour représenter un volume, gagner, augmenter.
ACXMUTE Désactiver le son Utilisé pour représenter un élément muté.
ACXJACK Jack Utilisé pour représenter une prise audio ou un autre connecteur physique.
ACXMICARRAYGEOMETRY Géométrie du tableau de micro Utilisé pour représenter la géométrie du tableau de micros, par exemple l’emplacement des microphones.
ACXPEAKMETER Compteur de pointe Utilisé lorsque le matériel prend en charge les fonctionnalités de compteur de pointe.
ACXSTREAM Flux Utilisé pour représenter un flux audio créé par un circuit, décrit ci-dessus dans cette rubrique.
ACXDATAFORMAT Format de données Un format de données représente un format de données pris en charge par l’appareil audio.
ACXDATAFORMATLIST Liste de formats de données Liste des formats de données audio disponibles pour une utilisation.
ACXTARGETCIRCUIT Circuit cible Utilisé pour communiquer avec un circuit distant exposé par une autre pile.
ACXTARGETPIN Épingle cible Utilisé pour communiquer avec la broche d’un circuit distant exposé par une autre pile.
ACXTARGETELEMENT Élément Target Utilisé pour représenter un élément cible qui peut être ajouté à un AcxCircuit ou AcxStream, tel que AcxVolume
ACXTARGETSTREAM Flux cible Utilisé pour communiquer avec le flux d’un circuit distant exposé par une autre pile.
ACXTARGETFACTORYCIRCUIT Fabrique de circuit cible Utilisé pour communiquer avec la fabrique d’un circuit distant.
ACXSTREAMBRIDGE Pont de flux Utilisé par un circuit pour propager une création de flux, des transitions d’états et des DRM entre les segments de circuit.
ACXCOMPOSITE Composite Utilisé pour représenter des architectures de flux multi-circuit/multi-pile/plusieurs fournisseurs.
ACXCOMPOSITEFACTORY Fabrique composite Fabrique qui crée des circuits audio composites.
ACXFACTORYCIRCUIT Circuit d’usine Fabrique qui crée des circuits à l’aide d’un modèle spécifique.
ACXCIRCUITMANAGER Gestionnaire de circuits Fournisseur de circuits utilisé pour la création de circuit dynamique.
ACXCOMPOSITETEMPLATE Modèle composite Un modèle composite représente une liaison audio partielle ou complète. Un modèle composite peut avoir un ou plusieurs modèles de circuit.
ACXCIRCUITTEMPLATE Modèle de circuit Un modèle de circuit représente un chemin audio partiel.
ACXAUDIOMODULE Audio Module Pour les fonctionnalités d’ajout tierce personnalisées.

Les objets ACX suivants sont utilisés pour stocker les informations de circuit, de flux et de fabrique de circuit.

Handle Objectif
ACXCIRCUIT_INIT Stocke les données d’initialisation des circuits ACX
ACXSTREAM_INIT Stocke les données d’initialisation de flux ACX
ACXFACTORYCIRCUIT_INIT Stocke les données d’initialisation utilisées par une fabrique de circuit ACX

Voir aussi

Vue d’ensemble des extensions de classe audio ACX

Communications entre pilotes multiplateformes ACX