Windows平台下DVB-C接收端应用程序的设计与实现

2012-03-15 01:23:14于鸿洋
电视技术 2012年10期
关键词:过滤器应用程序组件

左 义,于鸿洋,张 萍

(电子科技大学 电子科学技术研究院,四川 成都 611731)

在三网融合[1]的背景下,PC客户端支持接收数字电视信号已成为一种趋势。与传统的模拟电视相比,数字电视由于利用了现代信号处理中的压缩编码技术,使得电视信号在传输过程中不仅不易受到干扰,而且可有效降低带宽,并能提供高质量的电视画面。数字电视按照信号的传输方式可以分为地面无线传输数字电视、卫星传输数字电视、有线传输数字电视3类,为了提供对PC用户数字电视信号的接收,微软为Windows操作系统支持数字电视接收应用定义了一套组件框架——广播驱动架构[2-3](Broadcast Driver Architecture,BDA),使用该框架,硬件制造商不需要为自己的硬件编写复杂的驱动程序,而软件开发人员也不需要涉及繁琐的底层操作,这样不仅可以减少软硬件开发成本,而且具有良好的可扩展性。

1 DirectShow简介

由于流媒体应用广泛,流媒体数据本身的处理又是相当复杂,所以就需要寻找一种简单而有效的处理流媒体数据的方法,为此,选择一个技术成熟并且高效的平台处理流媒体数据显得尤为重要,微软的DirectShow[4]架构即属于这样一个平台。基于这个平台,在开发流媒体应用程序的时候,无须考虑硬件差异等问题带来的不便,底层交互完全由DirectShow完成,应用程序要做的就是和DirectShow框架交互信息。基于广播驱动架构的数字电视接收应用程序则亦是构建在DirectShow的基础之上。

利用DirectShow系统处理流媒体数据的过程如图1所示,它位于应用层,可以看到实际处理数据时并不是直接处理,而是分模块处理数据,每一个模块都担任不同的角色,这样的模块在DirectShow中被称作过滤器(Filter)。

图1 DirectShow应用框架

图1中过滤器图表管理器组件管理着过滤器图表(Filter Graph)中各个Filter的工作,并负责和应用程序的事件交互。分别处理数据的Filter在DirectShow中可以分为3类:

1)源过滤器(Source Filter),主要负责数据的获取,有推和拉两种工作模式;

2)转换过滤器(Transform Filter),主要负责数据的转换,如数据解码等;

3)提交过滤器,主要负责数据最终去向,如播放或写入文件等。

2 广播驱动架构(BDA)

2.1 广播驱动架构概述

微软广播驱动架构定义了一种支持各种用于接收数字信号的组件拓扑结构的框架,包括用于网络配置和控制的软件组件、解复用、表分析以及IP数据传递以适应包括DVB和ATSC在内的主流数字电视标准。

BDA的微型驱动程序(minidriver)是AVStream minidriver的一种特殊类型(如图2所示),是BDA架构的一部分,AVStream是一款微软提供的多媒体类

驱动程序,用来处理许多和操作系统进行交互的细节。BDA minidriver直接与数字电视接收硬件进行交互,功能主要有调谐与解调数字信号、捕获数字信号的帧、分离音视频数据流等。

图2 BDA minidriver结构

图2中,BDA minidriver由硬件厂商编写,BDA support library被包含在WDK(Windows Driver Kit)中,它可以简化BDA minidriver的编写。数字调谐Tuner与Capture总是由硬件实现的,其过滤器组件会被DirectShow中的ksproxy.ax过滤器组件包装成和硬件相关的BDA设备过滤器组件并在DirectShow中可见。

2.2 广播接收拓扑

由于网络结构或者硬件差异性,为了能构造出统一的接收数字电视信号框架,BDA架构引入了功能拓扑的概念(如图3所示)。功能拓扑将接收数字信号的过程抽象成了一系列被称为控制节点(Control node)相互之间协作的过程,功能节点之间相互独立但相互联系,每一个控制节点都完成一个特定的功能,同一个功能拓扑,将有可能导致不同的过滤器图表布局,这取决于安装在计算机上的不同硬件和软件。这个接收拓扑的主要功能有调谐、解调、捕获、解复用数字广播信号,获得节目相关信息并获得音视频数据等。

在图3中,Network Provider是功能拓扑图的第一个节点,通常它表现为一个单独的Filter,在Filter Graph中充当着管理者以及应用程序接口的角色,它负责数字电视信号进入并且通过BDA设备。相对于DirectShow框架来看,Network Provider在这里充当着源过滤器的角色,但事实上并没有真正的数据通过。

图3 数字广播接收控制节点的功能拓扑

当需要调谐到某一个频率点上接收相应的节目时,需要将频率信息传入到调谐器(Tuner)以控制硬件调谐,但由于应用程序不能直接操作硬件,这时就需要Network Provider的存在,上层应用程序通过Network Provider提供的一个ITuner接口把调谐请求发送给Network Provider,接着它将这个调谐请求传递给BDA minidriver,由微型驱动程序与硬件交互完成数字调谐。

图3中,RF输入可以来自于有线、卫星、地面无线传输,经解调(Demodulator)之后传送至 Capture Filter,MPEG-2 Demultiplexer Filter负责TS流的解复用,其中的PID Filter表示过滤固定PID的TS包过滤器。

3 BDA应用程序的设计与实现

3.1 有线数字电视调谐接收过程

应用程序需要控制硬件的调谐,以便收看对应频点上的节目,具体应用过程如下。

1)创建调谐请求

微软推荐的取得调谐请求的方式是从已建立的调谐空间向导库(Windows XP下目录为HKEY_LOCAL_MACHINESOFTWAREMicrosoftTuning Spaces)中取得一个调谐请求,另外还可以自己创建调谐空间[1],取得调谐请求。

2)创建Network Provider

调谐空间向导库中包含了一组调谐空间,每一个调谐空间代表着一个不同的网络类型(ATSC,DVB-C,DVB-T,DVB-S等),取得一个固定的调谐空间后,就可以通过其提供的get__NetworkType方法取得网络类型唯一标识,再经由CoCreateInstance方法就可创建Network Provider Filter。

3)信号定位

上面已提到Network Provider提供了一个ITuner接口给上层应用,在创建了Network Provider Filter之后就可以将调谐请求通过该接口发送给它,在收到调谐请求之后,Network Provider Filter首先把调谐请求传递给Filter Graph 中 的 Transport Information Filter(TIF)(如 图 3 所示),接着TIF填充调谐器Tuner对信号定位所需的如载波频率等相关信息。之后Network Provider Filter要求BDA Tuner调谐到相应的频率点上,并设置相应参数给调谐器,在Tuner调谐到正确频点并当信号解调之后,就将信号转发给BDA Capture Filter(如图3所示),该过滤器负责从硬件读取数据并向后传送数字化的TS码流至MPEG-2 Demultiplexer解复用过滤器。

3.2 实现过程

在开发应用程序之前,首先正确安装数字电视接收卡并加载其驱动搭建硬件环境,如果正确安装,打开GraphEdit,Tuner Filter和 Capture Filter就会出现在BDA源过滤器(BDA Source Filters)和BDA接收组件(BDA Receiver Components)目录中。应用程序设计的流程如图4所示。

图4 应用程序实现流程

图4中,加载的 BDA Tuner Filter,BDA Capture Filter,Transport Information Filter的目录ID依次为KSCATEGORY_BDA_NETWORK_TUNER,KSCATEGORY_BDA_-RECEIVER_COMPONENT,KSCATEGORY_BDA_TRAN SPORT_INFO-RMATION,应用程序正常运行时,可随时向Network Provider过滤器提交一个新的调谐请求,因此当用户需要观看另一个频率点上的节目时,就可以在保持Graph运行状态情况下,重新提交新的调谐请求,只要获取想要观看节目的PSI[5]信息,然后将音视频的PID映射到MPEG-2 Demultiplexer Filter上,即可正常播放。

3.3 系统测试

该系统在局域网下进行测试,通过流媒体服务器复用TS流经过千兆交换机发送到IPQAM的数据端口上,配置好搭载信号的频点后,通过调制器的RF输出,经由有线电视分支器传送到多个客户端,在客户端采用的电视接收设备是Conexant公司的CX23102芯片,软件开发平台为Windows XP SP3,Visual Studio 2005,DirectX SDK 9.0b,采用第三方音视频解码器,经测试播放稳定、流畅。在GraphEdit中查看得到的Filter Graph如图5所示。

4 结语

本文较为详细地分析了微软电视技术的广播驱动架构,并在此基础上给出了在Windows XP平台下有线数字电视的完整接收过程,借助于Conaxent公司的USB接口的数字电视接收设备,可以实现在PC机上观看流畅的有线数字电视节目。

[1]周师亮.三网融合的前景[J].电视技术,2011,35(16):15-16.

[2]肜云.一种USB前端接收的PCTV技术研究与实现[D].武汉:华中科技大学,2007.

[3]张勇.基于微软广播驱动体系的数字电视技术及其应用程序的设计[J].现代电视技术,2005(10):78-83.

[4]陆其明.DirectShow开发指南[M].北京:清华大学出版社,2003.

[5]方涛.数字电视业务信息及其编码[M].北京:国防工业出版社,2003.

猜你喜欢
过滤器应用程序组件
无人机智能巡检在光伏电站组件诊断中的应用
能源工程(2022年2期)2022-05-23 13:51:50
新型碎边剪刀盘组件
重型机械(2020年2期)2020-07-24 08:16:16
U盾外壳组件注塑模具设计
删除Win10中自带的应用程序
电脑报(2019年12期)2019-09-10 05:08:20
支持过滤器的REST模型研究与实现
电子测试(2018年9期)2018-06-26 06:45:56
声音过滤器
趣味(语文)(2018年2期)2018-05-26 09:17:55
风起新一代光伏组件膜层:SSG纳米自清洁膜层
太阳能(2015年11期)2015-04-10 12:53:04
基于LOGO!的空气过滤器自洁控制系统
自动化博览(2014年6期)2014-02-28 22:32:20
HVM膜过滤器管板改造总结
中国氯碱(2014年11期)2014-02-28 01:05:07
关闭应用程序更新提醒
电脑迷(2012年15期)2012-04-29 17:09:47