Compartir a través de


Patillas de topología

El controlador del sistema WDMAud traduce las patillas de topología en los filtros KS en las líneas de mezclador de origen y destino que expone la API mezcladora a las aplicaciones. Las patillas de entrada (receptor) se convierten en líneas mezcladoras de origen y las patillas de salida (origen) se convierten en líneas mezcladoras de destino.

Como se describe en Factorías de pin, un controlador de minipuerto proporciona una matriz de descriptores de anclaje, cada uno de los cuales es una estructura de tipo PCPIN_DESCRIPTOR que describe un generador de patillas que pertenece a un filtro. Cada descriptor de patillas incluye la siguiente información:

  • Especificador de dirección del flujo de datos

    Indica si el flujo de datos entra (KSPIN_DATAFLOW_IN) o sale (KSPIN_DATAFLOW_OUT) el filtro a través de la patilla.

  • GUID de categoría de patillas KS

    Indica la categoría de patilla a la que pertenece el pin. Por ejemplo, en un dispositivo de reproducción de audio, un pin podría aceptar una secuencia de audio digital con formato de onda y otro pin podría generar una señal de audio analógica para controlar un altavoz. El controlador de minipuerto identifica estos dos tipos de patillas como pertenecientes a categorías de patillas distintas.

  • Especificador de tipo de comunicaciones

    Indica el tipo de comunicaciones IRP que admite la patilla. Un pin que admite comunicaciones IRP puede ser un receptor IRP (KSPIN_COMMUNICATION_SINK), un origen IRP (KSPIN_COMMUNICATION_SOURCE) o ambos (KSPIN_COMMUNICATION_BOTH). Un pin que no admite comunicaciones IRP puede estar dentro de un gráfico de filtros KS (KSPIN_COMMUNICATION_NONE) o ser un pin de puente en el punto de conexión de un grafo (KSPIN_COMMUNICATION_BRIDGE).

Para obtener más información sobre los pines de puente, vea Gráficos de filtros de audio.

WDMAud convierte la información del descriptor pin del controlador de miniporte en un descriptor de línea de mezclador, que es una estructura de tipo MIXERLINE que incluye la siguiente información:

  • Tipo de componente de línea mezclador

    Indica si la línea mezcladora es una línea de origen o de destino, e indica también la función general de la línea mezcladora. Por ejemplo, el tipo de componente de una línea mezcladora que transporta una señal analógica que se genera a partir de una secuencia de salida de onda (representación) para controlar un conjunto de auriculares es MIXERLINE_COMPONENTTYPE_DST_HEADPHONES.

  • Tipo de destino de línea mezclador

    Indica el tipo de flujo de datos que transporta la línea mezcladora. Por ejemplo, el tipo de destino de una secuencia de salida de onda (representación) es MIXERLINE_TARGETTYPE_WAVEOUT y el tipo de destino de una secuencia de entrada de onda (captura) es MIXERLINE_TARGETTYPE_WAVEIN.

Para obtener más información, consulte la estructura MIXERLINE en la documentación del SDK.

En las dos tablas siguientes se muestra cómo WDMAud traduce las líneas de mezclador de origen de entrada (KSPIN_DATAFLOW_IN).

En la primera tabla se muestra cómo se asignan los GUID de categoría de patilla KS de patilla de entrada (PCPIN_DESCRIPTOR valores) a los tipos de destino MIXERLINE asociados.

GUID de categoría de patillas KS ¿Patilla de puente? Tipo de destino MIXERLINE
KSNODETYPE_MICROPHONE - MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_DESKTOP_MICROPHONE - MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_LEGACY_AUDIO_CONNECTOR - MIXERLINE_TARGETTYPE_WAVEOUT
KSCATEGORY_AUDIO - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_CD_PLAYER - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_SYNTHESIZER - MIXERLINE_TARGETTYPE_MIDIOUT
KSNODETYPE_LINE_CONNECTOR - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_TELEPHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_PHONE_LINE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_DOWN_LINE_PHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_ANALOG_CONNECTOR MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_ANALOG_CONNECTOR No MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPDIF_INTERFACE MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_SPDIF_INTERFACE No MIXERLINE_TARGETTYPE_WAVEOUT

En la tabla siguiente se muestra cómo se asignan los GUID de categoría de patilla KS de patilla de entrada a los tipos de componente MIXERLINE asociados.

valores de PCPIN_DESCRIPTOR Valores DE MIXERLINE
GUID de categoría de patillas KS Tipo de componente

KSNODETYPE_MICROPHONE

KSNODETYPE_DESKTOP_MICROPHONE

MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE

KSNODETYPE_LEGACY_AUDIO_CONNECTOR

KSCATEGORY_AUDIO

KSNODETYPE_SPEAKER

MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT

KSNODETYPE_CD_PLAYER

MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC

KSNODETYPE_SYNTHESIZER

MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER

KSNODETYPE_LINE_CONNECTOR

MIXERLINE_COMPONENTTYPE_SRC_LINE

KSNODETYPE_TELEPHONE

KSNODETYPE_PHONE_LINE

KSNODETYPE_DOWN_LINE_PHONE

MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_SRC_ANALOG

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_SRC_ANALOG

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_SRC_DIGITAL

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_SRC_DIGITAL

En las tablas anteriores, la columna izquierda especifica el GUID de categoría de anclaje de la estructura de PCPIN_DESCRIPTOR del pin y las columnas derechas especifican el tipo de destino y el tipo de componente correspondientes para la estructura MIXERLINE.

Las entradas de la columna con la etiqueta "Bridge Pin?" indican si el pin es un pin de puente. Un "Sí" significa que el tipo de comunicaciones de patillas es KSPIN_COMMUNICATION_BRIDGE. Un valor "No" significa que el tipo de comunicaciones pin es un valor KSPIN_COMMUNICATION_Xxx distinto de KSPIN_COMMUNICATION_BRIDGE. Si WDMAud omite el tipo de comunicaciones de patillas al traducir los parámetros de patilla a parámetros de línea mezcladora, la entrada "Bridge Pin?" es un guión (-).

Para todas las categorías de patillas que no aparecen en las tablas anteriores, WDMAud traduce las patillas de entrada a las líneas mezcladoras de origen con tipos de destino de MIXERLINE_TARGETTYPE_UNDEFINED y tipos de componentes de MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED.

En las tablas siguientes se muestra cómo WDMAud traduce las patillas de salida (KSPIN_DATAFLOW_OUT) a las líneas de mezclador de destino. Los encabezados de columna tienen los mismos significados que en la tabla anterior. En la primera tabla se muestra cómo los GUID de categoría de pin KS de pin de salida se asignan a los tipos de destino MIXERLINE asociados.

GUID de categoría de patillas KS ¿Pin de puente? Tipo de destino MIXERLINE
KSNODETYPE_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_DESKTOP_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_ROOM_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_COMMUNICATION_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSCATEGORY_AUDIO - MIXERLINE_TARGETTYPE_WAVEIN
PINNAME_CAPTURE - MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_HEADPHONES - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_TELEPHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_PHONE_LINE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_DOWN_LINE_PHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_ANALOG_CONNECTOR MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_ANALOG_CONNECTOR No MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_SPDIF_INTERFACE MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPDIF_INTERFACE No MIXERLINE_TARGETTYPE_WAVEIN

En la tabla siguiente se muestra cómo se asignan los GUID de categoría de pin KS del pin de salida a los tipos de componentes MIXERLINE asociados.

PCPIN_DESCRIPTOR valores Valores DE MIXERLINE
GUID de categoría de patillas KS Tipo de componente

KSNODETYPE_SPEAKER

KSNODETYPE_DESKTOP_SPEAKER

KSNODETYPE_ROOM_SPEAKER

KSNODETYPE_COMMUNICATION_SPEAKER

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

KSCATEGORY_AUDIO

PINNAME_CAPTURE

MIXERLINE_COMPONENTTYPE_DST_WAVEIN

KSNODETYPE_HEADPHONES

KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO

MIXERLINE_COMPONENTTYPE_DST_HEADPHONES

KSNODETYPE_TELEPHONE

KSNODETYPE_PHONE_LINE

KSNODETYPE_DOWN_LINE_PHONE

MIXERLINE_COMPONENTTYPE_DST_TELEPHONE

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_DST_WAVEIN

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_DST_WAVEIN

Para todas las categorías de patillas que no aparecen en las tablas anteriores, WDMAud traduce las patillas de salida a las líneas mezcladoras de destino con tipos de destino de MIXERLINE_TARGETTYPE_UNDEFINED y tipos de componentes de MIXERLINE_COMPONENTTYPE_DST_UNDEFINED.

En las tablas anteriores, la mayoría de los GUID de categoría de pin KS tienen nombres KSNODETYPE_Xxx . Estos nombres se definen en los archivos de encabezado Ksmedia.h y Dmusprop.h. (Dos salidas de esta convención de nomenclatura son GUID KSCATEGORY_AUDIO y PINNAME_CAPTURE, que también se definen en Ksmedia.h). Como se describe en Nodos de topología, también se pueden usar guid de KSNODETYPE_Xxx para designar tipos de nodo KS. La mayoría de los GUID de KSNODETYPE_Xxx especifican categorías de patillas o tipos de nodo, pero no ambos. La excepción es KSNODETYPE_SYNTHESIZER, que puede especificar una categoría de patillas o un tipo de nodo, en función del contexto en el que se use. Para obtener una lista de KSNODETYPE_Xxx GUID que representan categorías de patillas, vea Pin Category Property. Para obtener una lista de KSNODETYPE_Xxx GUID que representan tipos de nodo, consulte Nodos de topología de audio.

KSCATEGORY_AUDIO es otro GUID de uso dual. Se puede usar como GUID de categoría de pin KS o como GUID de categoría de filtro KS, según el contexto. Durante la instalación del dispositivo, un controlador de audio registra su interfaz de dispositivo en la categoría de filtro KSCATEGORY_AUDIO. Para obtener más información, consulte Instalación de interfaces de dispositivo para un adaptador de audio.

Para una categoría de patillas de KSNODETYPE_ANALOG_CONNECTOR o KSNODETYPE_SPDIF_INTERFACE, WDMAud debe saber si el pin es un pin de puente para traducir correctamente el pin a su equivalente de línea mezcladora. Por ejemplo, un pin S/PDIF (con la categoría de patillas KSNODETYPE_SPDIF_INTERFACE) se traduce en uno de los cuatro tipos de línea mezclador que se muestran en la ilustración siguiente. La traducción depende de la dirección de datos del pin (dentro o fuera) y de si es un pin de puente (sí o no), que juntos producen cuatro tipos posibles de línea mezcladora (en+sí, in+no, out+sí y out+no). Los cuatro tipos de línea mezclador que se muestran en la ilustración representan los pares inferiores de entradas de las tablas anteriores.

Diagrama que ilustra la traducción de patillas S/PDIF a líneas mezcladoras.

Tenga en cuenta que dos secuencias en el lado derecho del dispositivo de audio de la figura están en formato S/PDIF y las dos secuencias de la izquierda están en formato de onda. El dispositivo de audio realiza la conversión entre los dos formatos digitales.

La aplicación SndVol32 es un cliente de la API de mezclador. La API de mezclador convierte cada patilla que se encuentra en la topología en una línea de mezclador de origen o de destino, pero es posible que la línea no se muestre en SndVol32, que reconoce solo un subconjunto de los tipos de componentes de línea de mezclador que el archivo de encabezado Mmsystem.h define para la API de mezclador. Para obtener más información sobre SndVol32, consulte SysTray y SndVol32.