KS筛选器
2025-02-18
11
0
Ks内核驱动的基本模块为筛选器(filter),其在应用层由DirectShow代理为DirectShow筛选器。
筛选器图是一组连接的筛选器. 筛选器图链接要对数据流进行的多个处理任务。可通过GraphEdit工具测试各种筛选器。
一个筛选器由三部分组成:
- Node:用于数据处理
- Pin:用于对外的连接
- connection:用于Node和Pin的连接
下图是一个最简单的筛选器:
引脚为粗线,引脚与Node之间通过connection相连。
筛选器包括2个Pin(source Pin和sink Pin)。
Node从Source Pin上接收数据,在内部处理之后,再写入到Sink Pin引脚。
对于实现混音功能的过滤器,可能有多个输入源。
筛选器中connection的实现是通过KSTOPOLOGY_CONNECTION结构体实现的,其是通过KSPROPERTY_TOPOLOGY_CONNECTIONS 属性查询的。
typedef struct {
ULONG FromNode;
ULONG FromNodePin;
ULONG ToNode;
ULONG ToNodePin;
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;
KSTOPOLOGY_CONNECTION connection[]=
// FromNode, FromNodePin, ToNode, ToNodePin,
{
{ KSFILTER_NODE, 0, 0, 0 },
{ 0, 1, KSFILTER_NODE, 1 }
};
- 如果Node值为KSFILTER_NODE,则表明该Pin无外部连接节点。