Compartir a través de


KS Formatos de datos y intervalos de datos

Los pines KS especifican los formatos de datos y sus rangos 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 de 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 medio. Para obtener información sobre cómo funciona esto en la captura de audio y vídeo, consulte: Formatos de datos de audio y intervalos de datos y Selección de un formato de secuencia.

Los clientes usan las siguientes propiedades para consultar la compatibilidad del formato de datos de los pines instanciados por un generador de pines determinado en el filtro.

  • KSPROPERTY_PIN_DATARANGES. El filtro KS informa de todos los intervalos de datos admitidos por los pines instanciados por la fábrica de pines. Esto incluye todos los formatos de datos que el pin puede admitir alguna vez.

  • KSPROPERTY_PIN_CONSTRAINEDDATARANGES. El filtro KS informa de todos los rangos de datos admitidos por los pines instanciados por la fábrica de pines, dado el estado interno actual del controlador.

  • KSPROPERTY_PIN_PROPOSEDATAFORMAT. Los clientes pueden usar esta propiedad para consultar si los pines creados por la fábrica de pines 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 instancia un pin, un cliente en modo usuario puede determinar el formato de datos actual o solicitar un cambio de formato de datos a través de solicitudes de propiedad de KSPROPSETID_Connection. 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 KS pueden negociar los formatos de datos de manera dinámica. 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.