Compartir a través de


Generadores de patillas

Los generadores de patillas de un filtro de audio describen todas las patillas que el filtro puede crear instancias. Como se mencionó anteriormente, un controlador de minipuerto de audio almacena información de patillas en una matriz de estructuras de PCPIN_DESCRIPTOR . Cada estructura especifica un generador de patillas y un generador de patillas se identifica mediante su índice en la matriz. Este índice se conoce con frecuencia como identificador de patilla.

Una estructura de PCPIN_DESCRIPTOR contiene una tabla de automatización y una estructura de KSPIN_DESCRIPTOR .

La estructura KSPIN_DESCRIPTOR contiene la siguiente información sobre las patillas del generador de patillas:

  • Dirección relativa del filtro del flujo de datos

  • Dirección relativa al filtro del flujo de comunicación (en todas las versiones actuales de Windows, los filtros KS usan IRP para la comunicación).

  • Categoría de anclaje

  • Nombre descriptivo

  • Funcionalidades de instancia

  • Funcionalidades de formato de datos

Los miembros Category y Name de la estructura especifican la categoría de patillas del generador de patillas y el nombre descriptivo. Para cada generador de patillas del filtro, el controlador de minipuerto especifica una combinación de GUID de categoría y nombre que juntos identifican de forma única el generador de patillas. Si dos o más generadores de patillas comparten el mismo valor category , cada generador de patillas tiene un valor name que lo distingue de los demás. Si solo un generador de patillas tiene un valor category determinado, ese valor es suficiente para identificar el generador de patillas y el valor name de ese generador de patillas se puede establecer en NULL. Para obtener un ejemplo de codificación, vea Exponer topología de filtro. Para obtener información sobre las categorías de patillas, vea Pin Category Property.

Un generador de patillas especifica el intervalo de formatos de datos que admite como una matriz de estructuras KSDATARANGE extendidas:

  • Un generador de patillas que admite un intervalo de formatos de datos wave o DirectSound para su flujo de entrada o salida especifica una matriz de estructuras de KSDATARANGE_AUDIO .

  • Un generador de patillas que admite una gama de formatos de datos MIDI o DirectMusic para su flujo de entrada o salida especifica una matriz de estructuras KSDATARANGE_MUSIC .

KSDATARANGE_AUDIO y KSDATARANGE_MUSIC son versiones extendidas de KSDATARANGE. Para obtener ejemplos de ambos tipos de intervalos de datos, consulte Formatos de datos de audio y Rangos de datos.

Antes de conectar un pin de receptor en un filtro a un pin de origen en otro filtro, un generador de grafos (por ejemplo, el controlador del sistema SysAudio) puede buscar los intervalos de datos para un formato compatible. El generador de grafos normalmente llama al controlador de intersección de datos del filtro, lo que permite al propio filtro elegir un formato compatible.

Un filtro puede tener varios generadores de patillas y un generador de patillas puede admitir varias instancias de patillas.

  • Tener varios generadores de patillas en un filtro es útil para distinguir rutas de acceso de datos independientes para los distintos tipos de datos que fluyen a través del filtro. Por ejemplo, una fábrica de patillas podría admitir flujos de datos PCM y otra factoría de patillas podría admitir secuencias AC-3.

  • Un único filtro puede admitir la representación y captura de secuencias simultáneamente. Las rutas de acceso de representación y captura tienen conjuntos independientes de generadores de filtros.

  • Tener varias instancias de patillas en un generador de patillas receptores suele implicar la mezcla, en cuyo caso el filtro contiene un nodo SUM (KSNODETYPE_SUM).

Al igual que los filtros, las patillas son objetos kernel y se identifican mediante identificadores de kernel. El identificador de una instancia de pin se crea mediante una llamada a KsCreatePin. Como objeto kernel, se puede especificar un pin como destino de un IRP. Un cliente del controlador especifica el identificador de patilla al enviar una solicitud IOCTL a un pin.

Al compilar un grafo de filtro de audio, SysAudio vincula un filtro a otro conectando sus patillas. Un pin de origen de un filtro se puede conectar al pin receptor de otro filtro. Datos e IRP del flujo de patillas de origen al pin receptor a través de esta conexión. Para establecer la conexión, un generador de grafos (normalmente SysAudio) crea primero el pin de origen llamando a KsCreatePin y, a continuación, crea el pin receptor llamando a KsCreatePin de nuevo. Sin embargo, en la segunda llamada, el cliente especifica que el nuevo pin de receptor se va a conectar al pin de origen que se creó en la primera llamada.