广播驱动体系(BDA) 系列讲座:四

来源:互联网 发布:物联网书籍推荐 知乎 编辑:程序博客网 时间:2024/04/28 17:22
 功能拓扑图(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