二 微软统一调谐模型
为了适应不同网络类型,微软定义了统一调谐模型(Unified Tuning Model)。这种模型使得应用程序能够对使用任何兼容设备的任意网络类型的任意应用程序采用一个标准的过程进行调谐。
1. 调谐过程概述
应用程序调谐并选择节目的基本方式是提交一个调谐请求给Network Provider过滤器,上面已经提到,Network Provider过滤器在收到调谐请求以后将会与设备过滤器(驱动程序)通信并完成硬件调谐。微软推荐的取得调谐请求的方式是从已经建立的向导库(guide store)中取得一个调谐请求,这种向导库中包含着可以显示给终端用户的节目有关信息以及用于硬件调谐的网络特定信息,一般情况下,这个向导库出现在注册表的下面位置中:HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Tuning Spaces。
[img]http://www.cctvpro.com.cn/jxlt/20051117/200511172910.gif[/img]
图2所示为调谐模型对象之间的关系。如图2所示,系统调谐空间对象(System Tuning Spaces Object)包含了一组调谐空间(Tuning Space),每一个调谐空间代表着一个不同的网络类型(ATSC,DVB-C,DVB-S以及DVB-T等),调谐空间包含着调谐到某一具体节目的相关信息,调谐请求(Tune Request)对象就是根据它来产生的。定位器(Locator) 对象包含着信号源的其他信息。一个调谐空间可以包含一个默认的定位器(Default Locator),用于定位多路复用传输流中的默认流。显然,调谐空间对象,调谐请求对象以及定位器对象都是与特定的网络类型相关的,因而具体的对象也是不相同的。
对于一个具体的节目而言,可以包含一个或者多个基本流,每一个基本流被称为一个组件(Component),并用组件类型(Component Types)来描述之,如音频或者视频组件等。有些组件是可以被手工剔除的,比如同一个节目可能包含两个不同语言的音频流,可以选择一个而剔除另一个。一个调谐空间可以包含一个可供优先选择的组件类型(Preferred Component Types)清单用以从流中选择默认的组件,应用程序可以基于用户要求覆盖这个默认选择而选择其他组件。
2. 调谐过程的操作顺序
与调谐相关的信息总是被包含在调谐请求对象中,应用程序把调谐请求发送给Network Provider过滤器以供调谐。调谐共分为两个阶段:定位和获取。
(1)信号的定位
Network Provider过滤器首先把调谐请求信息传递给过滤器图表中的BDA MPEG-2 Transport Information Filter(TIF)过滤器,TIF据此填充调谐器(Tuner)对信号定位所需要的相关信息,比如载波频率(Carrier Frequency)等。一个调谐请求可能带有一个和它关联在一起的定位器,如果没有,TIF将为之创建一个默认的定位器。
Network Provider过滤器然后要求BDA调谐器调谐到正确的频率上,并设置调谐器所需要的诸如前向纠错(FEC)率等参数信息。调谐器接收到信号以后,就转发给BDA的捕获过滤器(Capture Filter),捕获过滤器负责对信号进行数字化并将数字化后的MPEG-2传输流发送给MPEG-2 Demultiplexer解复用过滤器。
TIF过滤器总是将PID为0的流映射给自己,这个PID是为节目相关表(Program Association Table)PAT而预留的。当TIF收到PAT后,就会通知Network Provider过滤器节目映射表(Program Map Table)PMT表以及其他的表位于那些PID上。
(2)信号的获取
Network Provider过滤器通过询问TIF获得一个节目的组件清单。它可以基于优先选择组件清单激活或者屏蔽一些组件,然后把相应的PID映射到解复用过滤器,这个过滤器负责把相应的流送到对应的PIN 上。对于没有映射到任何输出PIN上的PID流,解复用过滤器就会把它抛弃。TIF在过滤器图表运行的同时不断监测PMT以发现服务的变化,并将变化及时通知给Network Provider过滤器。
3. 与调谐相关的对象
(1)调谐空间
一个调谐空间代表着一个特定的网络类型,主要完成以下功能:
* 保存关于网络的信息;
* 是调谐请求对象的制造工厂;
* 是永久性的。可以被保存在注册表中。
为了取得本地系统的所有可用的调谐空间,如图2示,统一调谐模型提供了SystemTuningSpaces对象并在这个对象上暴露ITuningSpacesContainer接口用以方便的进行调谐空间枚举。每一个调谐空间对象都暴露出一个继承自ITuningSpace的接口,应用程序使用这个接口的CreateTuneRequest方法产生一个调谐请求对象。当然,统一调谐模型也允许在应用程序中产生一个新的调谐空间并设置默认的定位器。
(2)调谐请求,定位器和基本流组件
对于数字电视,无论是初始的信号定位还是后续音视频以及数据基本流的发现,都需要调谐动作的介入。因而对于整个调谐操作而言,调谐请求对象因为其包含(或者提供获取手段)调谐所必须信息而被置于一个中心的地位。
调谐请求对象产生的唯一方法就是调用调谐空间的CreateTuneRequest方法。如前所述,调谐请求中包含了网络相关信息,定位器信息,默认选取的组件信息等。
定位器对象同样是与特定网络相关的,比如DVB-S所引用的定位器就是DVB-S Locator。定位器包含了为了使Network Provider过滤器定位特定的服务所需要的进一步信息,比如载频,符号率,极化方向以及电源等。
统一调谐模型同样提供了对基本流组件进行选择的接口IComponent。如果不进行选择,Network Provider过滤器将使用优先选择组件清单对MPEG-2 Demultiplexer过滤器的输出PIN进行配置。默认的PIN配置如下:
* PIN1:PSI(Program Specific Information)表信息。送给TIF过滤器;
* PIN2:视频流;
* PIN3:音频流;
* PIN4:数据流;
* PIN5:PSI表信息。送给MPEG-2 Section and Tables过滤器。
4. 节目相关信息的取得
为了从传输流中获取节目相关信息,比如PAT,PMT以及CAT等。主要有以下几种方法:
* 从TIF过滤器中获得;
* 从MPEG-2 Section and Tables过滤器中获得;
* 实现一个用户级的过滤器以解析原始的PSI包;
上述过滤器都提供了相应的接口以获得节目信息,并且可以混合使用上面几种方法。
为了适应不同网络类型,微软定义了统一调谐模型(Unified Tuning Model)。这种模型使得应用程序能够对使用任何兼容设备的任意网络类型的任意应用程序采用一个标准的过程进行调谐。
1. 调谐过程概述
应用程序调谐并选择节目的基本方式是提交一个调谐请求给Network Provider过滤器,上面已经提到,Network Provider过滤器在收到调谐请求以后将会与设备过滤器(驱动程序)通信并完成硬件调谐。微软推荐的取得调谐请求的方式是从已经建立的向导库(guide store)中取得一个调谐请求,这种向导库中包含着可以显示给终端用户的节目有关信息以及用于硬件调谐的网络特定信息,一般情况下,这个向导库出现在注册表的下面位置中:HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Tuning Spaces。
[img]http://www.cctvpro.com.cn/jxlt/20051117/200511172910.gif[/img]
图2所示为调谐模型对象之间的关系。如图2所示,系统调谐空间对象(System Tuning Spaces Object)包含了一组调谐空间(Tuning Space),每一个调谐空间代表着一个不同的网络类型(ATSC,DVB-C,DVB-S以及DVB-T等),调谐空间包含着调谐到某一具体节目的相关信息,调谐请求(Tune Request)对象就是根据它来产生的。定位器(Locator) 对象包含着信号源的其他信息。一个调谐空间可以包含一个默认的定位器(Default Locator),用于定位多路复用传输流中的默认流。显然,调谐空间对象,调谐请求对象以及定位器对象都是与特定的网络类型相关的,因而具体的对象也是不相同的。
对于一个具体的节目而言,可以包含一个或者多个基本流,每一个基本流被称为一个组件(Component),并用组件类型(Component Types)来描述之,如音频或者视频组件等。有些组件是可以被手工剔除的,比如同一个节目可能包含两个不同语言的音频流,可以选择一个而剔除另一个。一个调谐空间可以包含一个可供优先选择的组件类型(Preferred Component Types)清单用以从流中选择默认的组件,应用程序可以基于用户要求覆盖这个默认选择而选择其他组件。
2. 调谐过程的操作顺序
与调谐相关的信息总是被包含在调谐请求对象中,应用程序把调谐请求发送给Network Provider过滤器以供调谐。调谐共分为两个阶段:定位和获取。
(1)信号的定位
Network Provider过滤器首先把调谐请求信息传递给过滤器图表中的BDA MPEG-2 Transport Information Filter(TIF)过滤器,TIF据此填充调谐器(Tuner)对信号定位所需要的相关信息,比如载波频率(Carrier Frequency)等。一个调谐请求可能带有一个和它关联在一起的定位器,如果没有,TIF将为之创建一个默认的定位器。
Network Provider过滤器然后要求BDA调谐器调谐到正确的频率上,并设置调谐器所需要的诸如前向纠错(FEC)率等参数信息。调谐器接收到信号以后,就转发给BDA的捕获过滤器(Capture Filter),捕获过滤器负责对信号进行数字化并将数字化后的MPEG-2传输流发送给MPEG-2 Demultiplexer解复用过滤器。
TIF过滤器总是将PID为0的流映射给自己,这个PID是为节目相关表(Program Association Table)PAT而预留的。当TIF收到PAT后,就会通知Network Provider过滤器节目映射表(Program Map Table)PMT表以及其他的表位于那些PID上。
(2)信号的获取
Network Provider过滤器通过询问TIF获得一个节目的组件清单。它可以基于优先选择组件清单激活或者屏蔽一些组件,然后把相应的PID映射到解复用过滤器,这个过滤器负责把相应的流送到对应的PIN 上。对于没有映射到任何输出PIN上的PID流,解复用过滤器就会把它抛弃。TIF在过滤器图表运行的同时不断监测PMT以发现服务的变化,并将变化及时通知给Network Provider过滤器。
3. 与调谐相关的对象
(1)调谐空间
一个调谐空间代表着一个特定的网络类型,主要完成以下功能:
* 保存关于网络的信息;
* 是调谐请求对象的制造工厂;
* 是永久性的。可以被保存在注册表中。
为了取得本地系统的所有可用的调谐空间,如图2示,统一调谐模型提供了SystemTuningSpaces对象并在这个对象上暴露ITuningSpacesContainer接口用以方便的进行调谐空间枚举。每一个调谐空间对象都暴露出一个继承自ITuningSpace的接口,应用程序使用这个接口的CreateTuneRequest方法产生一个调谐请求对象。当然,统一调谐模型也允许在应用程序中产生一个新的调谐空间并设置默认的定位器。
(2)调谐请求,定位器和基本流组件
对于数字电视,无论是初始的信号定位还是后续音视频以及数据基本流的发现,都需要调谐动作的介入。因而对于整个调谐操作而言,调谐请求对象因为其包含(或者提供获取手段)调谐所必须信息而被置于一个中心的地位。
调谐请求对象产生的唯一方法就是调用调谐空间的CreateTuneRequest方法。如前所述,调谐请求中包含了网络相关信息,定位器信息,默认选取的组件信息等。
定位器对象同样是与特定网络相关的,比如DVB-S所引用的定位器就是DVB-S Locator。定位器包含了为了使Network Provider过滤器定位特定的服务所需要的进一步信息,比如载频,符号率,极化方向以及电源等。
统一调谐模型同样提供了对基本流组件进行选择的接口IComponent。如果不进行选择,Network Provider过滤器将使用优先选择组件清单对MPEG-2 Demultiplexer过滤器的输出PIN进行配置。默认的PIN配置如下:
* PIN1:PSI(Program Specific Information)表信息。送给TIF过滤器;
* PIN2:视频流;
* PIN3:音频流;
* PIN4:数据流;
* PIN5:PSI表信息。送给MPEG-2 Section and Tables过滤器。
4. 节目相关信息的取得
为了从传输流中获取节目相关信息,比如PAT,PMT以及CAT等。主要有以下几种方法:
* 从TIF过滤器中获得;
* 从MPEG-2 Section and Tables过滤器中获得;
* 实现一个用户级的过滤器以解析原始的PSI包;
上述过滤器都提供了相应的接口以获得节目信息,并且可以混合使用上面几种方法。