Resumen de objetos de ACX

En este tema se hace un resumen general sobre las extensiones de clase de audio (ACX) que forman la base de un controlador de audio de ACX. Para obtener información general sobre ACX, consulte Introducción a las extensiones de clase de audio ACX.

Los objetos de ACX son objetos de Windows Driver Framework (WDF): WDFOBJECT. Para obtener más información sobre WDF, consulte Introducción a los objetos de estructura. Para ver un resumen de los objetos de WDF, consulte Resumen de objetos de estructura.

Jerarquía de objetos de ACX

En ACX (como en WDF), el objeto del controlador es el objeto raíz y todos los demás objetos son sus elementos secundarios o descendientes. Todos los objetos de ACX son elementos secundarios del objeto de controlador directamente o indirectamente a través de otros objetos de ACX o WDF. Un controlador de ACX puede indicar el elemento principal de un objeto de ACX al momento de su creación. Si no se indica el elemento principal, ACX usa un elemento principal predeterminado, tal como se describe en estas secciones.

Diagrama que ilustra la jerarquía de objetos de ACX, con WDFDEVICE en la parte superior y los principales objetos de ACX, como el circuito y la transmisión siguientes.

Creación de objetos WDF que no son de ACX

Además de los objetos ACX, un controlador de audio puede crear y usar otros objetos WDF según sea necesario. Si un controlador planea enumerar dispositivos que no son ACX, debe hacerlo mediante una lista secundaria diferente de la lista secundaria de WDF predeterminada creada cuando se crea un dispositivo ACX/WDF. Un controlador puede crear una nueva lista secundaria de WDF mediante WdfChildListCreate como se describe en Creación de objetos de dispositivo en un controlador de función. Para obtener información general sobre los objetos WDF, vea Introduction to Framework Objects, WDF Architecture and Developing Drivers with the Windows Driver Foundation. Para obtener información sobre cómo inicializar un dispositivo ACX, consulte AcxDeviceInitialize.

Circuito de ACX

Un AcxCircuit representa una ruta de audio parcial o completa a un dispositivo de audio percibido por el usuario (altavoces, micrófonos, etc.). Un AcxCircuit tiene al menos un pin de entrada y un pin de salida (ACXPIN) y puede agregar uno o varios objetos similares a AcxElements. De forma predeterminada, AcxElements se "conecta" en el mismo orden de ensamblado.

El circuito de audio es el bloque de creación principal de ACX. En la nueva estructura de ACX, un controlador de audio crea uno o varios objetos de circuito de ACX para representar una ruta de control o datos de audio parcial o completa. ACX ensambla estos objetos de circuito de ACX para crear una ruta de audio completa que represente un punto de conexión de audio. ACX se encarga de administrar los circuitos de ACX y sus dependencias. El orden de cómo se ensamblan estos circuitos se puede definir estáticamente por tiempo de inicialización o definirse dinámicamente por tiempo de ejecución.

Un punto de conexión de audio en las plataformas de ACX es una colección de uno o varios circuitos de ACX. Cada circuito de ACX de una ruta de audio de varios circuitos debe pertenecer a una pila de dispositivos PnP diferente. Un controlador de ACX puede crear uno o varios circuitos en tiempo de inicialización, o bien puede crear circuitos en tiempo de ejecución, como efecto secundario de un evento externo, como después de detectar un nuevo componente de audio, o porque se ha registrado en ACX como fábrica para un tipo de circuito específico y la estructura de ACX ha pedido al componente de fábrica para crear un nuevo circuito de ese tipo (consulte el administrador o la fábrica de circuitos de ACX descrito más adelante en este tema).

  • Un AcxCircuit puede tener una o varias transmisiones.

  • Un AcxCircuit tiene una cola de WDF dedicada. Para obtener más información sobre las colas de WDF, consulte Objetos de cola de plataforma.

Los DDI de los circuitos de ACX vienen descritos en el encabezado acxcircuit.h.

Pin de ACX

Al igual que en los controladores de audio de WDM Portcls, un objeto de AcxPin representa las conexiones lógicas (no las conexiones físicas) a través de las cuales las transmisiones de datos llegan al adaptador desde el bus de comunicaciones del sistema o acceden al bus de comunicaciones del sistema desde el adaptador.

Los DDI de pin vienen descritos en el encabezado acxpin.h.

Transmisión de ACX

AcxStream representa una transmisión de audio en el hardware de un circuito específico. AcxStream puede agregar uno o varios objetos similares a AcxElements. De forma predeterminada, AcxElements se "conecta" en el mismo orden de ensamblado. Un AcxStream está asociado a un solo circuito de ACX.

  • Un AcxStream tiene una cola de WDF dedicada. Para obtener más información sobre las colas de WDF, consulte Objetos de cola de plataforma.
  • Un AcxStream admite diferentes estados. Estos estados indican cuándo fluye el audio (estado RUN) o no fluye (estado PAUSE o STOP).
  • Actualmente, ACX admite dos tipos de flujos: objetos de ACX básicos de transmisión usados por circuitos que no son de streaming y objetos de transmisión RT de ACX usados por circuitos de streaming.

Las DDI de la transmisión vienen definidos en el encabezado acxstreams.h.

Destinos de ACX

WdfIoTarget es una abstracción de WDF para facilitar la comunicación entre dos pilas diferentes. Para obtener más información sobre los destinos de E/S de WDF, consulte Introducción a los destinos de E/S.

  • Los controladores usan AcxTargetCircuit para comunicarse con un circuito remoto expuesto por una pila diferente. AcxTargetCircuit se implementa mediante un WdfIoTarget.
  • Los controladores usan AcxTargetPin para comunicarse con el pin de un circuito remoto expuesto por una pila diferente. AcxTargetPin se implementa mediante un WdfIoTarget para enviar mensajes a la entidad remota del pin.
  • Los controladores usan AcxTargetElement para comunicarse con el elemento de un circuito remoto expuesto por una pila diferente. AcxTargetElement se implementa mediante un WdfIoTarget para enviar mensajes a la entidad remota del elemento.
  • Los controladores usan AcxTargetStream para comunicarse con la transmisión de un circuito remoto expuesto por una pila diferente. AcxTargetStream se implementa mediante un WdfIoTarget para crear una transmisión remota y cambiar el estado de la transmisión remota.
  • Los controladores usan AcxTargetFactoryCircuit para comunicarse con una instancia de fábrica de circuitos remotos. AcxTargetFactoryCircuit se implementa mediante un WdfTarget para enviar mensajes a la fábrica de circuitos remotos.

Cada uno de los tipos de ACX anteriores admite propiedades, métodos y eventos para interactuar con el circuito remoto. Todos estos tipos se basan en el objeto WdfIoTarget.

Los DDI de destinos vienen definidos en el encabezado acxtargets.h.

Puente de transmisión de ACX

Un circuito usa el objeto AcxStreamBridge para propagar la creación de una transmisión, las transiciones de estados de la transmisión y la configuración de DRM entre segmentos de circuito. Este objeto solo se usa en un escenario de varios circuitos (audio compuesto). Un controlador puede asociar uno o varios objetos ACXSTREAMBRIDGE a un pin de puente. Un pin de puente es el ACXPIN que se conecta lógicamente al ACXPIN correspondiente en el otro circuito.

Las DDI de transmisión vienen descritos en el encabezado acxstreams.h.

Ejemplo de diseño de circuito de nodo del motor de audio de ACX

En el diagrama siguiente se muestra un circuito de ACX. Los pines host y de descarga son entradas para el circuito con un pin de bucle invertido que se puede usar para la cancelación de eco. La salida puede ser un pin de puente que se redirige a un altavoz.

Diagrama que ilustra un circuito de ACX con pines host, de descarga y de bucle invertido a la izquierda y un pin de puente a la derecha, redirigido a través de un nodo del motor de audio.

Tenga en cuenta que el controlador no necesita realizar el proceso de conexión de forma explícita cuando los circuitos o elementos están conectados en el mismo orden que se agregaron al circuito.

De forma predeterminada, ACX conecta los elementos a partir del pin receptor de solicitud de ACX del circuito y termina con el pin de puente de dispositivo del circuito para dispositivos de renderización y captura.

ACX Manager

El administrador de ACX se usa para tareas del sistema, como incluir puntos de conexión de audio compuesto. Estos tipos de puntos de conexión se administran mediante una o varias pilas de controladores de los mismos proveedores o diferentes. Los clientes pueden configurar previamente esta configuración en ACPI o usar la DDI de ACX Manager directamente. Las DDI del administrador de ACX vienen descritas en el encabezado acxmanager.h.

Contenedor de objetos de ACX

El contenedor de objetos de ACX sirve para almacenar varios tipos de datos. ACXOBJECTBAG se puede pasar como argumento en varias DDI. Las DDI de contenedor de objetos vienen descritas en el encabezado acxmisc.h.

Resumen de objetos de ACX

En la tabla siguiente figuran todos los objetos de ACX y se incluye información básica sobre cada objeto.

Identificador Nombre Fin
ACXMANAGER El administrador de ACX (ACX Manager) ACX Manager que se usa para administrar y controlar otros objetos.
ACXOBJECTBAG Contenedor de objetos Sirve para almacenar datos para usarlos con objetos.
ACXEVENT Evento de ACX Para eventos KS (streaming basado en kernel).
ACXEVENTDATA Datos de evento Datos asociados a un evento.
ACXPNPEVENT Evento Pnp Para eventos de Plug and Play.
ACXCIRCUIT Circuito Un circuito de ACX, que se ha descrito anteriormente en este tema.
ACXPIN Pin Un objeto de pin de ACX representa las conexiones lógicas y se ha descrito anteriormente en este tema.
ACXELEMENT Elemento Sirve para representar cualquier elemento que se pueda agregar a AcxCircuit o AcxStream, como AcxVolume
ACXAUDIOENGINE Motor de audio Motor de audio de ACX que se usa en un circuito de renderización para representar un DSP.
ACXSTREAMAUDIOENGINE Motor de transmisión de audio Se usa en una transmisión de renderización para representar un DSP.
ACXKEYWORDSPOTTER Observador de palabras clave Un observador de palabras clave, que se usa en un circuito de captura para detectar palabras clave en una transmisión de audio.
ACXVOLUME Volumen Se usa para representar un volumen, ganancia o aumento.
ACXMUTE Silencio Se usa para representar un elemento silenciado.
ACXJACK Jack Se usa para representar un conector de audio u otro conector físico.
ACXMICARRAYGEOMETRY Geometría de matriz de micrófonos Se usa para representar la geometría de la matriz de micrófonos, como la ubicación de los micrófonos.
ACXPEAKMETER Medidor máximo Se usa cuando el hardware admite la funcionalidad de medidor máximo.
ACXSTREAM Transmisión Se usa para representar una transmisión de audio creada por un circuito, descrita anteriormente en este tema.
ACXDATAFORMAT Formato de datos Un formato de datos representa un formato de datos compatible con el dispositivo de audio.
ACXDATAFORMATLIST Lista de formatos de datos Lista de formatos de datos de audio disponibles para usar.
ACXTARGETCIRCUIT Circuito de destino Se usa para comunicarse con un circuito remoto expuesto por una pila diferente.
ACXTARGETPIN Pin de destino Se usa para comunicarse con el pin de un circuito remoto expuesto por una pila diferente.
ACXTARGETELEMENT Elemento Target Sirve para representar un elemento de destino que se pueda agregar a AcxCircuit o AcxStream, como AcxVolume
ACXTARGETSTREAM Transmisión de destino Se usa para comunicarse con la transmisión de un circuito remoto expuesto por una pila diferente.
ACXTARGETFACTORYCIRCUIT Fábrica de circuito de destino Se usa para comunicarse con la fábrica de un circuito remoto.
ACXSTREAMBRIDGE Puente de transmisión Lo usa un circuito para propagar la creación de transmisiones, transiciones de estados y DRM entre segmentos de circuito.
ACXCOMPOSITE Compuesto Se usa para representar arquitecturas de transmisión de varios circuitos, multi-pila o varios proveedores.
ACXCOMPOSITEFACTORY Fábrica compuesta Fábrica que crea circuitos de audio compuesto.
ACXFACTORYCIRCUIT Circuito de fábrica Fábrica que crea circuitos mediante una plantilla específica.
ACXCIRCUITMANAGER Administrador de circuitos Proveedor de circuitos que se usa para la creación de circuitos dinámicos.
ACXCOMPOSITETEMPLATE Plantilla compuesta Una plantilla compuesta representa un enlace de audio parcial o completo. Una plantilla compuesta puede tener una o varias plantillas de circuito.
ACXCIRCUITTEMPLATE Plantilla de circuito Una plantilla de circuito representa una ruta de audio parcial.
ACXAUDIOMODULE Módulo de audio Para funcionalidades de complementos de terceros personalizadas.

Los siguientes objetos de ACX se usan para almacenar información de los circuitos, las transmisiones y la fábrica de circuitos.

Identificador Fin
ACXCIRCUIT_INIT Almacena los datos de inicialización de circuitos de ACX
ACXSTREAM_INIT Almacena los datos de inicialización de transmisiones de ACX
ACXFACTORYCIRCUIT_INIT Almacena los datos de inicialización usados por una fábrica de circuitos de ACX

Consulte también

Introducción a extensiones de clase de audio (ACX)

Documentación de referencia de la ACX