音频筛选器

KS 筛选器是内核对象,由内核对象句柄标识。 在下图中,中心大框是表示音频设备的 KS 筛选器。 数据流从左侧流入筛选器,经过几个节点处理,然后从右侧退出筛选器。 筛选器由筛选器工厂创建,筛选器在图中显示为框,底部带虚线边缘。

Diagram showing a KS filter with two nodes, representing an audio device with data stream flow.

在图中,在筛选器上实例化了两个引脚。 左侧的引脚是数据接收器,而右侧的引脚是数据源。 数据流经接收器引脚进入筛选器,并经过源引脚从筛选器流出。

根据约定,在 KS 中使用的源和接收器这两个术语以缓冲区为中心(或者更广义地说,以连接为中心)。 在一个筛选器上的源引脚连接到另一个筛选器的接收器引脚的点,通常需要一个数据缓冲区。 缓冲区会消除数据从源引脚到达并退出进入接收器引脚时的速率不规则性。 (当然,并非所有连接都需要缓冲。例如,同一适配器卡上的两个设备之间就可进行无缓冲区连接,这样接收器和源数据速率就更容易匹配。)

相比之下,混音器 API 中使用的 SRC 和 DST(源和目标)混音器线路术语以设备为中心:

  • 流经过 SRC 混音器线路进入混音器设备。

  • 流经过 DST 混音器线路退出混音器设备。

换言之,SRC 混音器线路会映射到 KS 筛选器上的数据接收器引脚,而 DST 混音器线路会映射到数据源引脚。 有关详细信息,请参阅从内核流式处理拓扑到混音器 API 的转换

为简单起见,该图省略了筛选器的引脚工厂,该工厂用于创建引脚实例。

除了作为数据接收器和数据源之外,引脚和筛选器还可以是 IRP 接收器和 IRP 源。 引脚和筛选器不仅可以接收 IRP,还可以发送 IRP。 图中的三个深箭头表示 IRP。 图左侧的引脚是 IRP 接收器。 右侧的引脚是 IRP 源。 该图还显示了要发送到筛选器对象本身的 IRP。