AVStream 中的数据范围交集

数据格式是描述连接的某些方面的单组参数。 例如,音频数据格式可以在每秒 X 个样本和每个样本的 Y 位处指定特定格式的音频。

数据范围指定有效参数序列。 例如,音频数据范围可以指定音频的特定格式,其采样率为每秒 A-B 个样本,每个样本为 C-D 位。

微型驱动程序在相应KSPIN_DESCRIPTOR结构的DataRanges成员中,提供了它所支持的特定引脚的数据范围列表。

在 AVStream 中,微型驱动程序可以通过在 KSPIN_DESCRIPTOR_EXIntersectHandler 成员中提供指向由微型驱动程序自定义的回调例程的指针,从而提供自定义的数据范围交集处理程序。 若要让 AVStream 与范围相交,请将此成员设置为 NULL。 请参阅 AVStrMiniIntersectHandlerEx ,了解如何定义回调例程。

如果微型驱动程序提供了一个交集处理程序,当需要计算交集时,微型驱动程序会接收两个在主要类型、子格式和说明符上匹配的数据范围。 此外,数据范围中所需的属性一致。

如果在 AVStrMiniIntersectHandlerEx 回调例程的数据参数中提供了范围相交和足够的缓冲区空间,则交集例程会选择交集中的格式,并将其返回到数据指向的缓冲区中的调用方。

如果两个数据范围不相交,处理程序将返回STATUS_NO_MATCH。

如果微型驱动程序指定了 AVStrMiniPinSetDataFormat 调度,则 AVStream 将调用此调度,以通知微型驱动程序 AVStream 正在对引脚设置特定格式。 在KSPIN_DISPATCH结构的SetDataFormat成员中,将指针指向AVStrMiniPinSetDataFormat回调例程。 (作为 流类 客户端的微型驱动程序接收 SRB_SET_DATA_FORMAT 而不是 AVStrMiniPinSetDataFormat。)

微型驱动程序可以通过从 AVStrMiniPinSetDataFormat 返回STATUS_NO_MATCH来拒绝建议的格式。

除了在创建引脚之前对 AVStrMiniPinSetDataFormat 的初始调用,小型驱动程序还可以在引脚转换为 RUN 状态之前收到第二次 AVStrMiniPinSetDataFormat 调用。 如果 AVStream 或流类客户端是视频捕获微型驱动程序,并且你收到这样的通知, 则此调度包含实际的图面参数。 如果可能,微型驱动程序不应在第二次格式更改时发生错误。 不要假设会发生第二次调度调用。

微型驱动程序应以在上次成功调度AVStrMiniPinSetDataFormat时包含的格式来捕获数据。