KS 数据格式和数据范围
KS 引脚使用 KSDATAFORMAT 和 KSDATARANGE 结构指定数据格式和范围。 数据格式指定数据流的单个属性,例如 16 位的音频采样大小。 数据范围指定多种格式,例如 16-24 位的音频采样范围。
微型驱动程序在它提供的每个 KSPIN_DESCRIPTOR 结构中包含 KSDATARANGE 结构的数组。 Microsoft 提供的格式在 ksmedia.h 中枚举。
KSDATARANGE 结构的成员与 KSDATAFORMAT 结构相同;但是,微型驱动程序可以为 KSDATARANGE 的主要格式、子格式和说明符成员指定通配符值。
微型驱动程序使用这些结构的扩展版本来定义特定于媒体的值。 若要了解这在音频和视频捕获中的工作原理,请参阅: 音频数据格式和数据范围 和 选择流格式。
客户端使用以下属性来查询筛选器上给定引脚工厂实例化引脚的数据格式支持:
KSPROPERTY_PIN_DATARANGES。 KS 筛选器报告引脚工厂实例化引脚支持的所有数据范围。 这包括 引脚可以支持 的每一种数据格式。
KSPROPERTY_PIN_CONSTRAINEDDATARANGES。 根据当前的内部驱动程序状态,KS 筛选器报告引脚工厂实例化引脚支持的所有数据范围。
KSPROPERTY_PIN_PROPOSEDATAFORMAT。 客户端可以使用此属性来查询由引脚工厂实例化的引脚是否支持特定数据格式。
KSPROPERTY_PIN_DATAINTERSECTION。 客户端可以使用此属性提供一系列数据格式。
实例化引脚后,用户模式客户端可以确定当前数据格式或通过 KSPROPSETID_Connection 属性请求更改数据格式。 例如,客户端使用 KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT 来确定引脚是否支持给定的数据格式。 客户端使用 KSPROPERTY_CONNECTION_DATAFORMAT 更改数据格式。
KS 微型驱动程序和客户端可以动态协商数据格式。 当流的数据格式更改时,微型驱动程序在KSSTREAM_HEADER的 OptionsFlags 成员中指定KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY标志。 微型驱动程序在相应的数据缓冲区中传递新的数据格式(如 KSDATAFORMAT 结构中所述)。