Topología de streaming de kernel a traducción de API de mezclador de audio
La API de mezclador es un conjunto de funciones multimedia de Windows que se usan para recuperar información sobre los dispositivos mezclador de audio. La API de mezclador clasifica las líneas de mezclador de audio como líneas de origen y destino. Las líneas de origen son entradas en la tarjeta de audio (por ejemplo, CD, micrófono, línea de entrada y onda). Las líneas de destino son salidas de la tarjeta (por ejemplo, altavoces, auriculares, línea de teléfono y onda). Para que una línea de origen sea válida, debe tener una ruta de acceso única del origen a un destino. Una sola línea de origen puede asignarse a más de un destino, pero no más de una sola ruta de acceso puede conectar una línea de origen a una línea de destino. Para más información sobre la API de mezclador, consulte la documentación de Microsoft Windows SDK.
El controlador WDM para un adaptador de audio expone una topología de filtro KS que representa las rutas de acceso de datos a través del hardware y las funciones que están disponibles en esas rutas de acceso. El controlador del sistema WDMAud (en los archivos de Wdmaud.sys y Wdmaud.drv) debe interpretar la topología de filtro KS y generar las líneas de mezclador de origen y destino correspondientes que se exponen a través de la API de mezclador . WDMAud también controla las llamadas API de mezclador y las traduce en las llamadas de propiedad equivalentes en los pines de filtro y los nodos administrados por el controlador del adaptador.
El controlador del sistema KMixer (Kmixer.sys) y el controlador del sistema SWMidi (Swmidi.sys) son componentes integrales de la pila de audio del kernel. KMixer proporciona mezcla de audio en todo el sistema, conversión de profundidad de bits, conversión de velocidad de muestreo y traducción de configuración de canal a altavoz (supermezcla) para secuencias de audio PCM. SWMidi proporciona una síntesis de software de alta calidad de secuencias MIDI. El controlador de audio del sistema, SysAudio (Sysaudio.sys; consulte SysAudio System Driver), combina las funcionalidades de KMixer y SWMidi con los controladores de adaptador de audio instalados para formar dispositivos de audio virtual mejorados funcionalmente.
WDMAud administra la interfaz entre la parte KS y la parte heredada (consulte Componente del sistema WinMM) de la pila de audio. WDMAud traduce las patillas de los filtros virtualizados de SysAudio en las líneas de mezclador heredadas que se presentan en aplicaciones como SndVol32. La traducción de la topología KS a las líneas mezcladoras se realiza de la siguiente manera:
Las patillas de origen (KSPIN_DATAFLOW_OUT) de la topología KS se exponen como líneas mezcladoras de destino (MIXERLINE_COMPONENTTYPE_DST_XXX).
Las patillas receptoras (KSPIN_DATAFLOW_IN) de la topología KS se exponen como líneas de mezclador de origen (MIXERLINE_COMPONENTTYPE_SRC_XXX).
WDMAud recorre el gráfico de filtros KS comenzando en el pin de origen que se encuentra en el punto de conexión del gráfico de filtros y recorre el gráfico en la dirección opuesta al flujo de datos hasta que se alcanza un pin receptor.
Las propiedades que se admiten en cada nodo KS que se encuentra durante el recorrido se exponen como controles en la línea mezcladora de origen.
En los dos primeros elementos anteriores, la asignación de patillas de origen y receptor KS al destino y las líneas mezcladoras de origen es potencialmente confusa debido a las diferencias en la terminología. En KS, un dispositivo se encapsula en un filtro que tiene patillas receptor (entrada) y patillas de origen (salida). Los términos "sink" y "source" hacen referencia no al filtro, sino a la conexión (normalmente almacenada en búfer) entre dos filtros:
El pin de origen del filtro ascendente es el origen del flujo de datos que entra en la conexión.
El flujo de datos sale de la conexión a través del anclaje receptor del filtro de bajada.
En cambio, la terminología de la línea mezcladora está centrada en el dispositivo:
Una línea mezcladora de origen es el origen de una secuencia que entra en el dispositivo.
Una línea mezcladora de destino es el destino de una secuencia que sale del dispositivo.
Además, la terminología de KS es algo incoherente en la dirección del flujo de flujo que asigna a un pin en un filtro KS. El descriptor de anclaje usa un valor de enumeración KSPIN_DATAFLOW para especificar la dirección:
Una secuencia que entra en el filtro a través de un anclaje receptor tiene una dirección de KSPIN_DATAFLOW_IN.
Una secuencia que sale del filtro a través de un pin de origen tiene una dirección de KSPIN_DATAFLOW_OUT.
Las direcciones "in" y "out" están claramente centradas en filtros, mientras que los términos "receptor" y "origen" están centrados en la conexión.
Para obtener más información sobre el algoritmo de análisis de topología usado por WDMAud, vea Análisis de topología de WDMAud.
Esta sección también incluye: