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

             从模拟电视向数字电视演进的变革,在用户需求和技术进步的巨大拉动下,已经成为一个不可逆转的潮流。与传统的模拟电视相比,数字电视具有可实现高保真传输,可提供高清晰音视频,可提供与终端用户的交互操作以及可采用数字压缩技术有效提高信道利用率等技术优势。当前,作为市场上的主流PC操作系统,微软Windows系列也不失时机的把数字电视技术纳入其技术框架,为PC用户提供数字电视信号的接收,处理和播放服务。微软电视技术允许基于微软操作系统平台,运用微软提供的构件以及第三方构件,方便快速的实现数字电视的收看及应用程序的设计,支持包括ATSC,DVB等各种协议标准。本文将探讨基于微软广播驱动体系(BDA)的数字电视技术及其应用程序的设计与实现。

 一 广播驱动体系(BDA) 
    1. 广播驱动体系概述 
    微软广播驱动体系(Broadcast Driver Architecture)定义了一种框架,这种框架支持用于接收数字电视的各种网络拓扑构成。它包含了用于网络构造和控制的软构件,多路选择,表分析和IP数据递送等以适用于主要的数字电视标准包括DVB和ATSC等。

    广播驱动体系使得独立硬件提供商(IHVs)能够制造可工作于Windows系统的调谐接收设备或者为支持新的网络类型而设计的硬件设备。与BDA兼容的驱动程序能够被作为过滤器(Filter)自动暴露在DirectShow中,即BDA设备过滤器。作为一个标准的体系,BDA 使得上层应用程序不必关心BDA本身的细节,从而简化了应用程序的设计。

    广播驱动体系(BDA)的微型驱动程序(miniDriver)控制着执行以下操作的数字电视硬件: 
    * 调谐数字广播信号; 
    * 解调数字信号; 
    * 捕获数字信号的帧; 
    * 将信号分离为视频音频以及数据流。

    BDA微型驱动程序具有一个统一的框架,设计者只需要填写一些固定的结构体的相关参数,这些参数指出了对硬件进行各种操作的各种类(CLASS)和方法(Method)。依据这些固定的结构体,驱动程序就可以被内核流插件自动的作为过滤器暴露在DirectShow中了。

    2. 广播接收拓扑 
    为了构造DirectShow框架下的过滤器图表(Filter Graph),使其能够适应网络结构的多样性以及调谐和解码的软,硬件的多样性,广播驱动体系引入了功能拓扑(functional topology)的概念。功能拓扑指出了对接收到的信号所进行的一系列转换操作,但其本身并没有描述任何实际的过滤器,软件模块或者如何在软件或硬件上进行操作等细节,相反,它定义了一系列抽象控制节点(Control node)的布局结构,每一个节点代表着一个通用的离散的操作。取决于安装在计算机上的不同的硬件或者软件构件,同一个功能拓扑,将有可能导致不同的过滤器图表布局。例如,第三方硬件提供者如果选择在同一个电路卡上实现调谐和解调,那么,在DirectShow中,该硬件将表现为一个单独的BDA设备过滤器,而在其内部却包含着两个控制节点(即调谐和解调)。所以,一个BDA设备的过滤器区别于传统的DirectShow 过滤器的特点就在于它能够封装一个功能模块(电路板或者芯片)上的实现着控制节点的所有硬件功能。功能拓扑实际上为第三方提供商构造了一个相当灵活的平台,使其可以根据实际,选择软硬件的实现方法。

一个典型的BDA接收功能拓扑如图1所示。这个接收拓扑完成了以下操作:

    * 调谐并解调数字信号; 
    * 捕获并解复用信号; 
    * 获得电子节目单(electronic program guide)信息; 
    * 获得音频和视频数据; 
    * 获得IP数据。 
    通常,数字调谐Tuner的功能总是由硬件实现,其过滤器构件由一个内核流代理插件自动暴露给DirectShow 成为BDA设备过滤器。

    Transport information filter(TIF)和Network provider的功能总是由软件实现,其他功能则可以选择由硬件或软件实现。图1的每一个方框都对应着BDA的一个控制接点,每一个控制节点都能够采用标准的算法把网络和节目的特定参数与输入信号或输入信号构件结合起来,从而产生一个对与其直接相连的下游控制节点有用的新的信号。在实际的过滤器图表中,几个控制节点可能只表现为一个过滤器。

    3. 广播驱动体系控制机制 
    在图1中,功能拓扑的第一个控制节点是Network Provider,通常它也表现为一个单独的过滤器。Network Provider在广播驱动体系的过滤器图表中充当着管理者以及应用程序接口的角色,它负责着数字电视信号进入并且通过广播驱动体系设备。当前,广播提供商是通过三种基本的网络形式:卫星,有线和天线来进行数字电视信号的传送的,这些数字信号所遵循的协议也是多样的,比如:ATSC,DVB-C,DVB-T和DVB-S等。BDA设备可以接收并管理这些数字信号。

    对于Network Provider过滤器而言,它具有以下特点和作用: 
    * 是过滤器图表中的源过滤器,但实际上,并没有真实的数据通过这个过滤器; 
    * 对于每一种网络形式,存在一个Network Provider; 
    * 参与整个过滤器图表的建立; 
    * 通过BDA 驱动程序提供的方法和属性与其他的由BDA驱动程序初始化的过滤器进行通信(比如Network Provider负责对Tuner进行配置)。

    Network Provider本身是一个COM组件,它提供了一个标准接口ITuner给上层的应用。使得上层应用程序可以通过这个接口把调谐的请求发送给Network Provider,然后它再把这个请求传递给BDA的驱动程序(miniDriver),用以完成数字调谐,接着在Network Provider的指导下,由Microsoft MPEG2 Demux Filter完成对音频,视频,IP等数据流的分离,送到相应的过滤器进行处理。

    微软已经提供了四种不同的Network Provider,用于支持ATSC,DVB-C,DVB-T和DVB-S等网络类型。这四个Network Provider可以在Graph Edit的BDA Network Providers目录下看到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[Version] Signature="$CHICAGO$" Class=HDC provider=%MSFT% [Manufacturer] %MfgName%=Microsoft [Microsoft] %USB\VID_054C&PID_0023.DeviceDesc%=SonyCDRW.install,USB\VID_55AA&PID_1234 %USB\VID_054C&PID_0023.DeviceDesc%=SonyCDRW.install,USB\VID_04CE&PID_0002 %USB\VID_04E6&PID_0001.DeviceDesc%=ImationLS120.install,USB\VID_04E6&PID_0001 %USB\VID_04fc&PID_1533.DeviceDesc%=SunplusIcatch.install,USB\VID_04fc&PID_1533 %USB\VID_04fc&PID_5331.DeviceDesc%=SunplusIcatch.install,USB\VID_04fc&PID_5331 %USB\VID_04fc&PID_8591.DeviceDesc%=SunplusIcatch.install,USB\VID_04fc&PID_8591 %USB\VID_04fc&PID_757A.DeviceDesc%=SunplusIcatch.install,USB\VID_04fc&PID_757A %UMSS\DISK.DeviceDesc%=umsspdr.install,UMSS\DISK [PreCopySection] HKR,,NoSetupUI,,1 [DestinationDirs] ; \<WINDIR>\SYSTEM32\DRIVERS umss.files = 10,System32\Drivers ; \<WINDIR>\SYSTEM\IOSUBSYS umsspdr.files = 12 [SonyCDRW.install] CopyFiles=umss.files, umsspdr.files AddReg=umss.addreg [ImationLS120.install] CopyFiles=umss.files, umsspdr.files AddReg=umss.addreg [ImationLS120.install.HW] AddReg=cb.addreg.HW [SunplusIcatch.install] CopyFiles=umss.files, umsspdr.files AddReg=umss.addreg [SunplusIcatch.install.HW] AddReg=bulkonly.addreg.HW [umss.addreg] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,,UMSS.SYS ; Indicate that the device uses the C/B/I protocol [cbi.addreg.HW] HKR,,DeviceProtocol,0x10001,00 ; Indicate that the device uses the C/B protocol [cb.addreg.HW] HKR,,DeviceProtocol,0x10001,01 ; Indicate that the device uses the BULK ONLY protocol [bulkonly.addreg.HW] HKR,,DeviceProtocol,0x10001,50 ; Install the port driver [umsspdr.install] AddReg=umsspdr.addreg [umsspdr.addreg] HKR,,DevLoader,,*ios HKR,,PortDriver,,umsspdr.pdr [umss.files] umss.sys [umsspdr.files] umsspdr.pdr [SourceDisksNames] 1000 = "USB Mass Storage Sample Driver Disk","",, [SourceDisksFiles] UMSS.SYS = 1000 UMSSPDR.PDR = 1000 ;---------------------------------------------------------------; [Strings] MSFT="Microsoft" MfgName="Microsoft" USB\VID_04fc&PID_1533.DeviceDesc="Sunplus Icatch" USB\VID_04fc&PID_5331.DeviceDesc="Sunplus Icatch" USB\VID_04fc&PID_8591.DeviceDesc="Sunplus Disc/Audio" USB\VID_04fc&PID_757A.DeviceDesc="Sunplus mulitmedia disk" UMSS\DISK.DeviceDesc="USB Mass Storage Device"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值