Formatos de datos e intervalos de datos de KS

Los pins KS especifican los formatos de datos y los intervalos mediante las estructuras KSDATAFORMATy KSDATARANGE . Un formato de datos especifica un único atributo de un flujo de datos, por ejemplo, un tamaño de muestreo de audio de 16 bits. Un intervalo de datos especifica varios formatos, por ejemplo, un intervalo de muestreo de audio de 16 a 24 bits.

Un minidriver incluye una matriz de estructuras KSDATARANGE en cada KSPIN_DESCRIPTOR estructura que proporciona. Los formatos proporcionados por Microsoft se enumeran en ksmedia.h.

Una estructura KSDATARANGE tiene los mismos miembros que una estructura KSDATAFORMAT; sin embargo, el minidriver puede especificar valores comodín para los miembros de formato principal, subformato y especificador de KSDATARANGE.

Los minidriveres usan versiones extendidas de estas estructuras para definir valores específicos del medio. Para obtener información sobre cómo funciona esto en la captura de audio y vídeo, vea: Formatos de datos de audio e intervalos de datos y Selección de un formato de secuencia.

Los clientes usan las siguientes propiedades para consultar la compatibilidad con el formato de datos de los pins creados por un generador de pins determinado en el filtro:

  • KSPROPERTY_PIN_DATARANGES. El filtro KS informa de todos los intervalos de datos admitidos por los pins a los que crea una instancia el generador de pins. Esto incluye todos los formatos de datos que el pin puede admitir .

  • KSPROPERTY_PIN_CONSTRAINEDDATARANGES. El filtro KS informa de todos los intervalos de datos admitidos por los pins a los que crea una instancia el generador de pins, dado el estado actual del controlador interno.

  • KSPROPERTY_PIN_PROPOSEDATAFORMAT. Los clientes pueden usar esta propiedad para consultar si los pins creados por el generador de pins admiten un formato de datos específico.

  • KSPROPERTY_PIN_DATAINTERSECTION. Los clientes pueden usar esta propiedad para ofrecer una variedad de formatos de datos.

Una vez que se crea una instancia de un pin, un cliente en modo de usuario puede determinar el formato de datos actual o solicitar un cambio de formato de datos a través de KSPROPSETID_Connection de propiedad . Por ejemplo, el cliente usa KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT para determinar si un pin admite un formato de datos determinado. El cliente usa KSPROPERTY_CONNECTION_DATAFORMAT para cambiar el formato de los datos.

Los minidrivers y clientes de KS pueden negociar dinámicamente formatos de datos. Cuando cambia el formato de datos de una secuencia, el minidriver especifica la marca KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY en el miembro OptionsFlags de un KSSTREAM_HEADER. El minidriver pasa el nuevo formato de datos, descrito en una estructura KSDATAFORMAT , en el búfer de datos correspondiente.