Partager via


Résumé des objets ACX

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

Les objets ACX sont des objets Windows Driver Framework (WDF) - WDFOBJECT. Pour plus d’informations sur WDF, veuillez consulter la section Présentation de Framework Objects. Pour un résumé des objets WDF, veuillez consulter la section Résumé de Framework Objects.

Hiérarchie des objets ACX

Dans ACX (comme dans WDF), l’objet pilote est l’objet racine, et tous les autres objets sont ses enfants/des 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 lors de 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 des objets ACX, avec WDFDEVICE en haut et les principaux objets ACX comme circuit et flux en dessous.

Création d’objets WDF non ACX

En plus des objets ACX, un pilote audio peut créer et utiliser d’autres objets WDF en fonction des besoins. Si un pilote envisage d’énumérer des appareils non ACX, il doit le faire à l’aide d’une liste enfant différente de la liste enfant WDF par défaut créée lors de la création d’un appareil ACX/WDF. Un pilote peut créer une liste enfant WDF à l’aide de WdfChildListCreate , comme décrit dans Création d’objets d’appareil dans un pilote de fonction. Pour obtenir des informations générales sur les objets WDF, consultez Présentation des objets Framework, architecture WDF et développement de pilotes avec Windows Driver Foundation. Pour plus d’informations sur l’initialisation d’un appareil ACX, consultez AcxDeviceInitialize.

Circuit ACX

Un AcxCircuit représente un chemin audio partiel ou complet vers un périphérique 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 il peut agréger un ou plusieurs objets de type AcxElements. Par défaut, les AcxElements sont « connectés » dans le même ordre d’assemblage.

Le circuit audio est le bloc de construction central d’ACX. Dans le nouveau cadre ACX, un pilote audio crée un ou plusieurs objets de circuit ACX pour représenter un chemin de données/de contrôle audio 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 dans lequel ces circuits sont assemblés peut être défini statiquement à l’initialisation ou dynamiquement à l’exécution.

Un point de terminaison audio dans les cadres ACX est une collection d’un ou plusieurs circuits ACX. Chaque circuit ACX dans un chemin audio multi-circuits doit appartenir à une pile de périphériques PnP différente. Un pilote ACX peut créer un ou plusieurs circuits à l’initialisation, ou il peut créer des circuits à l’exécution, comme effet secondaire d’un événement externe, par exemple après avoir détecté un nouveau composant audio, ou parce qu’il s’est enregistré auprès d’ACX en tant que fabrique pour un type de circuit spécifique, et le cadre ACX a demandé au composant fabrique de créer un nouveau circuit de ce type (voir le gestionnaire/fabrique de circuit ACX décrit plus loin dans cette rubrique.

  • Un AcxCircuit peut avoir un ou plusieurs flux.

  • Un AcxCircuit a une file d’attente WDF dédiée. Pour plus d’informations sur les files d’attente WDF, veuillez consulter la section Framework Queue Objects.

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

ACX Pin

Comme dans les pilotes audio WDM Portcls, un objet AcxPin représente les connexions logiques (pas les connexions physiques) par lesquelles les flux de données entrent dans l’adaptateur depuis le bus de communication du système ou entrent dans le bus de communication du système depuis l’adaptateur.

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

Flux ACX

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

  • Un AcxStream a une file d’attente WDF dédiée. Pour plus d’informations sur les files d’attente WDF, veuillez consulter la section Framework Queue Objects
  • Un AcxStream prend en charge différents états. Ces états indiquent quand l’audio circule (état RUN) ou ne circule pas (é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-streaming, et les objets de flux RT ACX utilisés par les circuits de streaming.

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 IO WDF, veuillez consulter la section Présentation des cibles d’E/S.

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

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

Les DDIs pour les cibles sont définis 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’état du flux et les paramètres DRM entre les segments de circuit. Cet objet est uniquement utilisé dans un scénario multi-circuits (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’ACXPIN correspondant sur l’autre circuit.

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

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

Le diagramme suivant illustre un circuit ACX. Les broches host et offload sont des entrées du circuit avec une broche de boucle de retour qui pourrait être utilisée pour l’annulation d’écho. La sortie pourrait être une broche de pont qui route vers un haut-parleur.

Diagramme illustrant un circuit ACX avec des broches host, offload, et loopback à gauche, et une broche de pont à droite, routée via 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 que celui dans lequel ils ont été ajoutés au circuit.

Par défaut, ACX connecte les éléments en commençant par la broche de récepteur de requêtes ACX du circuit et en terminant par la broche de pont de l’appareil du circuit pour les dispositifs de rendu et de capture.

ACX Manager

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 du même fournisseur ou de fournisseurs différents. Les clients peuvent préconfigurer cette configuration dans ACPI ou utiliser directement le DDI du gestionnaire ACX. Les DDIs pour le gestionnaire ACX sont décrits dans l’en-tête acxmanager.h.

ACX Object Bag (Conteneur d’objet ACX)

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

Résumé des objets ACX

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

Poignée Nom Objectif
ACXMANAGER Le gestionnaire ACX Objet ACX Manager utilisé pour gérer et contrôler d’autres objets.
ACX Object Bag (Conteneur d’objet ACX) Object Bag Utilisé pour stocker des données à utiliser avec des objets.
ACXEVENT Événement ACX Pour les événements KS (kernel-streaming).
ACXEVENTDATA Données d’événement Les données associées à un événement.
ACXPNPEVENT Événement PnP Pour les événements Plug and Play.
ACXCIRCUIT indirect Un circuit ACX décrit ci-dessus dans ce sujet.
ACXPIN Épingler Un objet pin ACX représente les connexions logiques et est décrit ci-dessus dans cette rubrique.
ACXELEMENT Element Utilisé pour représenter tout élément pouvant être ajouté à un AcxCircuit ou AcxStream, tel que AcxVolume.
ACXAUDIOENGINE Moteur audio Le moteur audio ACX utilisé dans un circuit de rendu pour représenter un DSP.
ACXSTREAMAUDIOENGINE Moteur audio de flux Utilisé dans un flux de rendu pour représenter un DSP.
ACXKEYWORDSPOTTER Détecteur de mots-clés Un détecteur 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, gain, boost.
ACXMUTE Désactiver le son Utilisé pour représenter un élément de sourdine.
ACXJACK Jack Utilisé pour représenter une prise audio ou un autre connecteur physique.
ACXMICARRAYGEOMETRY Géométrie de l’Array de micros Utilisé pour représenter la géométrie de l’array de micros, telle que l’emplacement des microphones.
ACXPEAKMETER Peak Meter Utilisé lorsque le matériel prend en charge la fonctionnalité de peak-meter.
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 le périphérique audio.
ACXDATAFORMATLIST Liste de formats de données Une liste de formats de données audio disponibles à l’utilisation.
ACXTARGETCIRCUIT Circuit cible Utilisé pour communiquer avec un circuit distant exposé par une pile différente.
ACXTARGETPIN Broche cible Utilisé pour communiquer avec la broche d’un circuit distant exposé par une pile différente.
ACXTARGETELEMENT Target, élément Utilisé pour représenter un élément cible pouvant être ajouté à un AcxCircuit ou AcxStream, tel que AcxVolume.
ACXTARGETSTREAM Flux cible Utilisé pour communiquer avec un flux de circuit distant exposé par une pile différente.
ACXTARGETFACTORYCIRCUIT Usine de circuit cible Utilisé pour communiquer avec l’usine de circuits d’un circuit distant.
ACXSTREAMBRIDGE Pont de flux Utilisé par un circuit pour propager une création de flux, des transitions d’états et DRM entre segments de circuit.
ACXCOMPOSITE Composite Utilisé pour représenter des architectures de flux multi-circuit/multi-pile/multi-fournisseurs.
ACXCOMPOSITEFACTORY Usine composite Une usine qui crée des circuits audio composites.
ACXFACTORYCIRCUIT Circuit de l’usine Une usine qui crée des circuits en utilisant un modèle spécifique.
ACXCIRCUITMANAGER Gestionnaire de circuit Un fournisseur de circuits utilisé pour la création dynamique de circuits.
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 Module audio Pour les fonctionnalités ajoutées par des tiers.

Les objets ACX suivants sont utilisés pour stocker les informations de circuit, de flux et d’usine de circuits.

Poignée Objectif
ACXCIRCUIT_INIT Stocke les données d’initialisation du circuit ACX.
ACXSTREAM_INIT Stocke les données d’initialisation du flux ACX.
ACXFACTORYCIRCUIT_INIT Stocke les données d’initialisation utilisées par une usine de circuits ACX.

Voir aussi

Vue d’ensemble des extensions de classe audio ACX

Documentation de référence de l’ACX