Formatos de datos KS y intervalos de datos

Las patillas KS especifican formatos y rangos de datos mediante las estructuras KSDATAFORMAT y 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-24 bits.

Un minidriver incluye una matriz de estructuras KSDATARANGE en cada estructura KSPIN_DESCRIPTOR 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 el formato principal, el subformato y los miembros del especificador de KSDATARANGE.

Los minidrivers usan versiones extendidas de estas estructuras para definir valores específicos de medios. Para obtener información sobre cómo funciona esto en la captura de audio y vídeo, consulte: Formatos de datos de audio y rangos 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 pines creados por un generador de patillas determinado en el filtro:

  • KSPROPERTY_PIN_DATARANGES. El filtro KS informa de todos los intervalos de datos admitidos por los patillas creados por el generador de patillas. 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 pines creados por el generador de patillas, dado el estado actual del controlador interno.

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

  • KSPROPERTY_PIN_DATAINTERSECTION. Los clientes pueden usar esta propiedad para ofrecer un intervalo 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 solicitudes de propiedades. 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 datos.

Los minidrivers y los clientes de KS pueden negociar dinámicamente formatos de datos. Cuando cambia el formato de datos de una secuencia, el minidriver especifica la marca de 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.