BDA驱动学习笔记(1):功能拓扑图

 

功能拓扑图(Functional Topology)BAD的目标是不管硬件或者接收信号如何变,它的整体架构可以不做大调整,为此BDA引入功能拓扑图的概念,它把类似DirectShow Filter的结构作为节点(Node),包含在一个receiver filter中,因此一个filter可以做很多工作,这取决于该filter包含了哪些node,以及这些node都具备哪些功能。Functional Topology只是描述了一个结构,具体工作分发给了拓扑图中的各个node。在我们的程序中,外部可见的一个filtertunner filter,实际上包含了两个nodetuner demodulator。拓扑图中的node不是随便什么类型都可以的,只有在BDA Node Category GUIDs列表中列明的node类型,才可以加到图中去,node的各项功能也都是用注册分发例程的方法完成。

BDA Node Category GUIDs

KSNODE_BDA_RF_TUNER

KSNODE_BDA_QAM_DEMODULATOR

KSNODE_BDA_QPSK_DEMODULATOR

KSNODE_BDA_8VSB_DEMODULATOR

KSNODE_BDA_OPENCABLE_POD

KSNODE_BDA_PID_FILTER

KSNODE_BDA_IP_SINK

每种node都有特定的GUID,当network provider filter连上tunner filter时,它会根据GUID寻找相应的node并生成实例。Tunner filter中还使用Template topology 来描述各个PIN NODE的类型以及连接方式等信息。


 

如上图所示,整幅图是一个Functional Topologytunner node demodualator node是两个node,它们都有特定的GUID,他们都是在network provider filter连上tunner filter时动态生成的。pin1tunner node相连而不和demodulator相连,tunner node demodulator node之前而不是之后等等信息是Template topology决定好的,整个图的连接也是在network provider filter连上tunner filter时根据Template topology动态完成的。

不过一个filter里包含几个node不是硬性规定的,比如上面这幅图,可以是一个filter里包含两个node,也可以拆分成两个filter,每个filter包含一个node,看自己喜欢。

我们常用的nodeNetwork ProviderTunerDemodulatorCaptureNetwork Provider目前有很多现成的filter可用,可能做DMB的时候需要去修改这部分,大部分时候直接拿来用就可以;tunner demodulator现在是放在同一个filter里,叫tunner filtercapture filter是最核心的部分,负责从硬件读取数据和往后传数据,一般单独做成一个filterBDA还提供了很多其他的node,帮我们做了很多工作。比如PID Filter NODE 实际上做的是demultiplexer filter的工作,不过目前为止我都不用PID Filter NODE,而是用DirectShow中的demultiplexer filter

posted @ 2007-06-11 16:46  gussing  阅读(3374)  评论(2编辑  收藏  举报