Compartir a través de


Especificación de la topología

Después de que un proveedor de hardware decida qué controladores de minipuerto escribir para los dispositivos wave y MIDI, el siguiente paso es representar la topología de streaming de kernel (KS) de estos dispositivos. La topología KS consta de un conjunto de estructuras de datos que describen las rutas de acceso de datos que siguen las secuencias de audio o MIDI a medida que fluyen a través de cada dispositivo. A través de esta topología, el controlador expone los nodos de control (por ejemplo, el control de volumen) que se encuentran a lo largo de cada ruta de acceso. Normalmente, una aplicación usa las funcionesXxx del mezclador multimedia de Windows para explorar la topología mediante la enumeración de la secuencia de nodos a lo largo de cada ruta de acceso. Por ejemplo, después de detectar un nodo de control de nivel de volumen, una aplicación puede establecer el nivel de volumen en ese nodo. Para obtener más información sobre los elementos multimedia de Windows, consulta la documentación de Microsoft Windows SDK. Para obtener más información sobre la representación de topologías KS por parte de las funcionesxxx de mezclador, consulte Kernel Streaming Topology to Audio Mixer API Translation (Topología de streaming de kernel a traducción de API de mezclador de audio).

PortCls proporciona seis controladores de puerto: WavePci, WaveCíclico, WaveRT, MIDI, DMus y Topología. (WaveRT ha estado disponible desde Windows Vista y es el enfoque recomendado). El controlador de puerto de topología controla la parte del circuito del adaptador de audio que combina las secuencias de representación de los dispositivos wave y MIDI. También controla la selección de secuencias de captura de los conectores de entrada. A pesar de su nombre algo engañoso, el controlador de puerto de topología no incorpora toda la topología de un adaptador de audio, aunque normalmente contiene una gran parte de ella. Los demás controladores de puerto contribuyen a las partes restantes de la topología del adaptador.

Cada controlador de puerto se empareja con un controlador de minipuerto correspondiente para formar un filtro KS que representa un dispositivo determinado (onda, MIDI o mezclador) en el adaptador de audio, como se muestra en la tabla siguiente.

Tipo de filtro Descripción

Filtro WaveXxx

Representa un dispositivo de onda que convierte una secuencia de salida de onda en una señal de audio analógica o que convierte una señal de audio analógica en un flujo de entrada de onda.

Filtro MIDI o DMus

Representa un dispositivo MIDI que reproduce o captura una secuencia MIDI.

Filtro de topología

Representa el circuito mezclador del adaptador.

El controlador de minipuerto implementa las funciones específicas del dispositivo del filtro, incluida la definición de la parte de la topología del adaptador que abarca el dispositivo. El controlador de puerto se encarga de las operaciones de filtro genéricas, incluida la comunicación con el sistema operativo, para cada tipo de filtro.

Cada filtro tiene uno o varios patillas KS que sirven como caminos para que las secuencias de datos de audio entren y salgan del filtro. Normalmente, las patillas del filtro topología están vinculadas a las patillas de la onda, MIDI y DMus a través de conexiones cableadas en los circuitos del adaptador. Estos filtros y sus interconexiones forman juntos un gráfico de filtros KS que incorpora la topología del adaptador.

En la ilustración siguiente se muestra la topología de un adaptador de audio de ejemplo.

Diagrama que muestra la topología de un adaptador de audio con conexiones entre filtros MIDI, WaveXxx y topología.

En la ilustración anterior, la topología en el nivel superior consta de las conexiones entre los filtros MIDI, WaveXxx y topología. Además, cada filtro tiene su propia topología interna, que consta de las rutas de acceso de datos a través del filtro y los nodos de control que se encuentran a lo largo de cada ruta de acceso. Los nodos se etiquetan como se muestra en la tabla siguiente.

Etiqueta Descripción KS Node-Type GUID

Sintetizador

Nodo sintetizador

KSNODETYPE_SYNTHESIZER

DAC

Nodo de convertidor de audio a digital

KSNODETYPE_DAC

ADC

Nodo de convertidor analógico a digital

KSNODETYPE_ADC

Volumen

Nodo de control de nivel de volumen

KSNODETYPE_VOLUME

Silencio

Silenciar nodo de control

KSNODETYPE_MUTE

Sum

Nodo de suma

KSNODETYPE_SUM

MUX

Nodo multiplexador

KSNODETYPE_MUX

En la ilustración anterior, las patillas del lado izquierdo del adaptador de audio representan las conexiones lógicas (no las conexiones físicas) a través de las cuales los flujos de datos entran en el adaptador desde el bus del sistema o entran en el bus del sistema desde el adaptador. Estas patillas están conectadas lógicamente a patillas de origen y receptor en otros filtros (no se muestran) que son externos al adaptador. Normalmente, estos filtros son módulos de software que, junto con la topología del adaptador, forman un gráfico de filtros más grande cuya topología se puede explorar mediante aplicaciones que usan las funcionesXxx del mezclador. Por ejemplo, la patilla con la etiqueta "PCM Wave Out" en la ilustración anterior está conectada lógicamente al motor de audio en modo de usuario en Windows. Estas conexiones lógicas se mantienen mediante transferencias DMA a través del bus del sistema.

En cambio, las patillas del borde izquierdo del filtro de topología se conectan físicamente a los pines de los filtros MIDI y WaveXxx . Estas conexiones están cableadas y no se pueden cambiar por software.

Los pines de puente del lado derecho del adaptador de audio representan conectores de audio en el chasis del sistema. Estos pines se conocen como patillas de puente porque puenten el límite entre el gráfico de filtros KS y el mundo externo.

Los filtros, las patillas y los nodos suelen tener propiedades que son accesibles para los clientes (componentes en modo kernel o aplicaciones en modo de usuario) del controlador de audio. Un cliente puede enviar una solicitud de propiedad KS a un filtro, anclaje o nodo para consultar el valor actual de una propiedad o para cambiar el valor de la propiedad. Por ejemplo, un nodo de control de nivel de volumen tiene una propiedad KSPROPERTY_AUDIO_VOLUMELEVEL , que un cliente puede cambiar a través de una solicitud de propiedad KS. Un nodo de suma es un ejemplo de un tipo de nodo que normalmente no tiene propiedades.

Por motivos de simplicidad, el filtro WaveXxx de la ilustración anterior proporciona solo un pin para aceptar un flujo de salida de onda PCM desde el bus del sistema. Por el contrario, algunos dispositivos de onda proporcionan varios pines para la salida de onda PCM y contienen hardware para mezclar internamente las secuencias que entran en los pines. Estos dispositivos proporcionan aceleración de hardware para las aplicaciones que usan DirectSound aceptando secuencias PCM que se reproducen desde los búferes de sonido de las aplicaciones. Para que DirectSound use estas patillas, deben proporcionar nodos adicionales para el procesamiento bidimensional (2D) y tridimensional (3D), como se describe en DirectSound Hardware Acceleration in WDM Audio.

Este tipo de aceleración de hardware se admite en Windows Server 2003, Windows XP, Windows 2000 y Windows Me/98, pero no se admite en Windows Vista. Windows Vista no usa las patillas de aceleración de hardware en dispositivos de onda anteriores.

En la ilustración anterior, las conexiones físicas entre midi, WaveXxx y topología filtran todas las señales de audio analógicas de transporte. Sin embargo, un dispositivo de topología diferente podría lograr un efecto similar al aceptar flujos de salida digitales de los dispositivos MIDI y wave, mezclarlos digitalmente y convertir la mezcla digital en una señal de salida analógica.

La patilla "Onda fuera de PCM" en la esquina inferior izquierda de la ilustración anterior acepta un flujo de salida que no sea PCM en un formato de paso a través de S/PDIF, como AC-3-over-S/PDIF o WMA Pro-over-S/PDIF. Con uno de estos formatos, el dispositivo simplemente transmite los datos comprimidos a través del vínculo S/PDIF sin descodificar los datos. Por este motivo, la ruta de acceso de datos a la patilla "S/PDIF Out" en la esquina inferior derecha de la ilustración anterior no contiene ningún volumen ni nodos silenciados. Para obtener más información sobre los formatos de audio que no son PCM y la transmisión de paso a través de S/PDIF, consulta Compatibilidad con formatos de onda no PCM y S/PDIF Pass-Through transmisión de secuencias no PCM.

El controlador de minipuerto presenta su topología al controlador de puerto en forma de estructura PCFILTER_DESCRIPTOR . Esta estructura describe todas las patillas y nodos del filtro, y especifica cómo se conectan los pines y los nodos entre sí.

En lugar de diseñar un filtro de topología monolítica, como se muestra en la ilustración anterior, el circuito mezclador del adaptador de audio se puede particionar en varios filtros de topología. Por ejemplo, en la ilustración anterior, las rutas de acceso de datos que controlan los altavoces se pueden implementar como un filtro de topología y las rutas de acceso de datos que capturan datos de audio de los dispositivos de entrada se pueden implementar como un filtro de topología independiente. Cuando las rutas de acceso de datos de un filtro de topología determinado no están en uso, esa parte del adaptador se puede apagar sin deshabilitar todo el adaptador. Para obtener más información, vea Subdispositivos de audio dinámico.