AVStream 中的数据范围交集
数据格式是描述连接某些方面的单个参数集。 例如,音频数据格式可以指定特定格式的音频(X 样本/秒)和 Y 位(每个样本)。
数据范围指定有效参数的序列。 例如,音频数据范围可以指定特定格式的音频,即每秒 A-B 样本数和每个样本的 C-D 位。
微型驱动程序为相应KSPIN_DESCRIPTOR结构的 DataRanges 成员中的特定引脚提供它支持的数据范围列表。
在 AVStream 中,微型驱动程序可以通过在 KSPIN_DESCRIPTOR_EXIntersectHandler 成员中提供指向微型驱动程序提供的回调例程的指针来提供自己的数据范围交集处理程序。 若要让 AVStream 与范围相交,请将此成员设置为 NULL。 请参阅 AVStrMiniIntersectHandlerEx ,了解如何定义回调例程。
如果微型驱动程序提供相交处理程序,则当需要创建交集时,微型驱动程序会收到两个与主要类型、子格式和说明符匹配的数据范围。 此外,数据范围的必需属性匹配。
如果在 AVStrMiniIntersectHandlerEx 回调例程的 Data 参数中提供了范围相交且有足够的缓冲区空间,则交集例程将在交集中选择一种格式,并将其返回到 Data 指向的缓冲区中的调用方。
如果两个数据区域不相交,处理程序将返回STATUS_NO_MATCH。
如果微型驱动程序已指定 AVStrMiniPinSetDataFormat 调度,则 AVStream 调用此调度以通知微型驱动程序 AVStream 正在引脚上设置特定格式。 提供指向 KSPIN_DISPATCH 结构的 SetDataFormat 成员中的 AVStrMiniPinSetDataFormat 回调例程的指针。 作为 流类 客户端的 (微型驱动程序接收 SRB_SET_DATA_FORMAT 而不是 AVStrMiniPinSetDataFormat.)
微型驱动程序可以通过从 AVStrMiniPinSetDataFormat 返回STATUS_NO_MATCH来拒绝建议的格式。
除了在创建固定之前对 AVStrMiniPinSetDataFormat 进行初始调用外,微型驱动程序还可以在固定转换为 RUN 状态之前收到第二次 AVStrMiniPinSetDataFormat 调用。 如果 AVStream 或流类客户端是视频捕获微型驱动程序,并且你收到此类通知, 则此调度包含实际的表面参数。 如果可能,微型驱动程序不应使第二种格式更改失败。 不要假定将发生第二次调度调用。
微型驱动程序应捕获上一次成功的 AVStrMiniPinSetDataFormat 调度中包含的任何格式的数据。