能够使数字电视接收机以提取的格式 存取系统信息的应用程序编程接口 本发明的背景技术
本专利申请要求享有1998年10月30日申请的美国临时专利申请No.60/106,508、1998年11月12日申请的美国临时专利申请No.60/107,965以及1998年12月23日申请地美国临时专利申请No.60/113,444的权益。
本申请文件中使用下列缩写:
A/V—音频/视频
API—应用程序编程接口
ATSC—高级电视系统委员会
BAT—一揽子(Bouquet)相关表格(DVB)
CA—条件准入
CAT—条件准入表(MPEG)
CNN—有线新闻网
DAVIC—数字音频-视频协会
DCII—GI Digicipher II(tm)
DIT—数据信息表
DTV—数字电视
DVB—数字视频广播
DVS—数字视频标准
EIT—事件信息表(DVB/ATSC)
EMM—权利管理消息
EPG—电子节目指南ETT—扩展文本表格(ATSC)FCC—联邦通信委员会GIC—通用仪器公司GPS—全球定位卫星ID—标识符IP—互联网协议JMF—Java介质框架(Sun Microsystems)MGT—主要的指南表格(ATSC)MPAA—美国活动图像协会MPEG—活动图像专家组MSP—消息流协议NIT—网络信息表(DVB)NVOD—接近视频点播PID—信息包标识符PMT—节目变换表PSI—节目特定信息PSIP—节目和系统信息协议(ATSC)RRT—费率区域表(ATSC)SCTE—有线电视工程师协会SDT—服务描述表(DVB)SI—系统信息STT—系统时间表TDT—时间日期表(DVB)TOT—时间偏置表(DVB)TS—传送流TSDT—传送流描述符表(MPEG)UML—统一的建模语言
URL—一致的资源定位器
VCT—虚频道表
VSB—残留边带
本发明为接入节目和系统信息提供API,所述的节目和系统信息描述了MPEG-2 TS的安排和内容。这个也称为服务信息的信息一般称做系统信息(SI)。
现在将已经使用的不同格式的SI标准化。这些格式包括最初的ATSC A56标准,它是DigiCipher II(DCII)MSP的子集,用于卫星和有线电视传输,新的ATSC PSIP用于地面和有线电视DTV,有线电视SI如DVS(SCTE DVS 234:用于数字有线电视的带外传送的服务信息),以及DVB SI标准。如也可以使用其知识产权属于通用仪器公司,即,本发明的受让人的Digicipher II标准中的专用数据。
从ATSC可得到的1997年12月23日的Doc.A/65“用于地面广播和有线电视的节目和系统信息协议”中描述了ATSC标准。从欧洲广播联盟或欧洲电信标准协会可得到的EN 300 468 V1.3.1(1998-02)的“数字视频广播(DVB);DVB系统中服务信息(SI)的规范”描述了DVB标准。
用户终端经过网络接收SI。也称为集成的接收机—译码器(IRD)或用户终端的机顶终端是接收和译码用于电视机显示的电视信号的装置。例如,可以经过卫星、经过电缆线路或借助于地面广播提供这些信号。通过使用现代机顶技术,已经提出了各种应用,或者当前可获得的各种应用,这些应用包括:视频点播(VOD)、音频点播、每次观看付费、交互式购物、电子商务、电子节目指南、互联网浏览器、邮件业务(例如,文本电子邮件、话音邮件、音频邮件和/或视频邮件)、电话业务、股票机、天气预报、旅游信息、游戏、赌博、银行、购物、选举以及其它项目。这些应用也可能实现互联网连通和可能的基于互联网的电话。该机顶功能能够通过专门的硬件和软件实现。
例如,应用程序可以经过网络由终端下载、本地加载(例如经过智能卡)、或在制造时安装。
然而,接收SI的用户终端必须知道正在使用哪种格式,以及提供对于该协议特定的相应处理。因为它必须开发用于存取SI的终端的特定代码(软件)。这样,终端的成本、复杂性和计算要求增加了,并且影响了对于终端软件的开发。
由于趋势朝向集成宽带分配网络、电话网络和计算机网络如互联网和家网(in-home network),以及由于要求能够提供给观看者丰富感受的新型应用,使得上面的问题更加突出。
因此,最好提供一个系统用于存取兼容于不同SI格式的数字传送流或其它数据流的SI。
该系统应该从不同的格式中提取SI的公共部分以提供“提取的SI”。“提取的SI”应该以这样一种提取的级别提供对应用程序有用的SI的存取,该应用程序不必知道使用什么SI标准格式将信息提供给接收机。
当系统试图在不同的环境如DVB、SCTE和基于ATSC的系统运行时,它不需要应用程序具有特定的代码(软件)。
该系统应该适应于使用不同格式提供的SI,包括MPEG节目特定信息(PSI)、数字视频广播服务信息(DVB SI)、高级电视系统委员会节目和系统信息协议(ATSC PSIP)、有线电视SI如DVS、以及专用SI如DCII系统中的那些SI。
该系统应该允许不同的应用程序仅检索它们要求的特定的SI。
如果需要,该系统应该允许应用程序从SI中检索特定的描述符。
描述符指的是扩展表格数据的方法。通常,不同的数字视频标准允许使用不同类型的数据表格来传送SI。例如,表格可以指定传送特定的频道或节目的TS(例如,PID、频率)的位置。
另外,因为表格是很难随着时间扩展以容纳附加信息的固定结构,所以已经将描述符开发成一种扩展方法。描述符可以附加在表格的外环或内环上。在外环,描述符附加在表格的末尾并且每次读整个表格时提供附加的表格入口。在内环,描述符附加在一部分表格的末尾并且在每次读该部分表格时提供附加的表格入口。
例如,描述符可以包括后面跟随信息字段或信息串的标记。
描述符仅在需要时被包括,并且不干扰接收机,该接收机没有更新以识别描述符。
另外,该系统应该使用当前对DTV规定的UTL语法概念。
该系统应该能用电视网络用户终端的API实现。
API应该兼容于Java(tm),ActiveX(tm)或相同类型的基于分量的、面向对象的技术。
该系统应该选择地提供异步的输出结果、与TS分开的MPEG-2特定的数据、以及SI数据的递增检索。
该系统应该兼容于URL定位器语法。注意对于DTV的URL定义仍然建立。当前的API定义支持DAVIC DVB URL和GIC建议的DTV以及ATSC URL。
本发明提供具有上面和其它优点的系统。
本发明的概述
本发明提供一种API,它允许应用程序运行在数字电视终端,以恢复来自数字TS的SI而不用考虑特定的格式类型。API提取SI的相关部分,以在终端可以由不同应用程序使用的格式提供它。
另外,如果下面描述的描述符子信息包具有特别的需要,则它允许应用程序检索特定的DVB或ATSC或专用(例如DCII)描述符。
这个SI API定义还使用在互联网和浏览器应用程序中公知的URL概念。DTV的正式URL定义仍然在讨论中。当前的API定义支持DAVIC DVB URL和通用仪器公司(GI)建议的DTV和ATSCURL。
本发明的电视机顶终端包括具有计算机编程代码方式(例如面向目标的代码如Java(tm))的计算机可读介质(例如磁或光存储装置),以及用于执行计算机编程代码方式的装置(例如任何处理器如CPU),以实现应用程序编程接口(API)。
API适用于在由终端以多个不同格式的任何一个接收的数字电视传送流中提取SI。API以适用于终端应用程序的通用格式提供提取的SI,而不管提供的SI的特定格式。例如,不同的SI格式可以包括不同的数据表格式。
这允许终端兼容于许多不同的数据流格式。
另外,API可以在响应于提取的SI的终端提供许多功能,例如:导航功能,使终端能够在传送流中电视频道之间导航;节目指南功能,实现电视频道的电子节目指南;选择功能,选择特定的电视频道;以及描述符检索功能,再现SI的描述符。
另外,API提供包含支持对象的实用功能,它包括事件和异常、用于支持同步地输出SI到应用程序、用于根据提取的SI实现传送流中数据服务的指南的数据功能、以及提供关于传送流的实际输出方法(例如卫星或转发器标识符)的信息的管道功能。管道功能使用适当的SI表格以提供关于输出网络(MPEG-2传送流等)的信息。
API通过将适当的SI数据显露给应用程序来提供这些功能。应用程序如EPG能够使用这些API来做它的工作,例如EPG使用导航信息包(或功能)来查明有关频道,并且它使用指南信息包(功能)来查明选定频道上有关安排的节目。这样,这里讨论的API或信息包由特定的应用程序使用(调用)。
不同的可利用SI格式可以包括:活动图像专家组(MPEG)节目特定信息(PSI)、数字视频广播(DVB)系统信息(SI)、高级电视系统委员会(ATSC)节目和系统信息协议(PSIP)、有线电视和电视工程师协会的有线电视SI数字视频标准234、以及专用SI。
当终端接收传送流时,终端可以包括存储SI的存储器,其中API提供检索函数调用,使得调用应用程序能够检索SI,因此在存储器可利用的SI作为直接返回值基本上立刻返回。如果不能利用存储器中服务信息,检索函数调用返回异常信号到调用的应用程序,SI被异步地输出到调用的应用程序。在这种情况下,API也可以提供包含支持对象的实用函数,包括事件和异常、支持异步输出SI到调用的应用程序。
另外,当传送流以多个可利用传送流格式的一个被提供时,API可以提取SI,以适用于终端应用程序的通用格式提供它。这可以通过提供基本信息包而实现,该基本信息包具有对于可利用的传送流格式通用的信息。API适用于使用单独的信息包,这种单独的信息包的信息是针对所接收的传送流格式的。
一般地,API提供可扩展的API的基本集。例如,ATSC加上新的信息包,以提供PSIP特定的信息,DVB也可以做同样的工作。这里没有示出这样的信息包。然而,本发明的API是可扩展的,使得特定格式的扩展可以通过再细分类或扩展提取的SI API类和接口而容易地实现。
在本发明的又一个方面,API通过允许在终端的调用应用程序获得在终端可利用的SI的子集来提供服务信息的递增检索,完成获得的SI的分析,以及如果需要,根据该分析来检索附加的SI。附加的SI可以在终端存储器中,从终端可获得的SI的子集中检索或从传送流中检索。
注意SI数据可以使用不同的方法存储在终端中。例如,它可以在提取之前和/或之后存储,在优化和压缩之后存储,等等。
API允许在终端的调用应用程序恢复传送流中的SI子集,同时拒绝不是调用应用程序要求的传送流中的其它SI。
API也可以提供响应于提取的SI的滤波功能,以便使应用程序规定感兴趣的应用程序的传送流中的至少一种服务。滤波可以基于该服务是否相关于:特定的传送流(当可以利用来自多个传送流的服务时一接收机可以具有多个调谐器,或SI数据可以存储在接收机的存储器中,存储在SI数据库中,它随着时间从多个传送流中收集)、网络、一揽子(a bouquet)情况、卫星、卫星转发器、服务名称、服务/频道号码、喜欢的频道以及主题。
另外,API可以使用提取SI的多个信息包实现,在这种情况下它有效地用于终端的不同应用程序,以包括根据每个应用程序要求的提取SI的特定部分的信息包中规定的那些内容。
同时,还提出了相应的方法。
附图的简要说明
图1示出了本发明的API的信息包关系和相关性。
图2表示本发明的导航信息包类别/接口图。
图3表示本发明的节目指南信息包类别/接口图。
图4表示本发明的选择信息包类别/接口图。
图5表示本发明的描述符信息包类别/接口图。
图6表示本发明的管道信息包类别/接口图。
图7表示本发明的数据信息包类别/接口图。
图8表示本发明的实用信息包类别/接口图。
本发明的详细说明
API允许运行在数字电视终端的应用程序从数字TS恢复SI而不用考虑特定的格式类型。API提取SI的相关部分以在终端由不同的应用程序可以使用的格式提供它。
API最好独立于终端的操作系统和硬件。
注意这些图是通过美国的Rational Software Corportion开发的Rational Rose(tm)CASE工具自动产生的。这些图使用UML的Rational Rose(tm)描述,它是用于规定、构造、可视化以及提供资料给软件增强系统的人工制造物的语言。类图(class diagram)表示系统的静态结构,并且表示该系统表现的性能模式。这是通过示出类的存在和它们的关系来实现的。每个类由具有三个部分的方框表示。顶部列出类的名称。中间部分表示属性列表,底部表示操作列表。
类之间的实线或虚线表示相关或依赖。白色的菱形尖表示参考的集合,而黑色的菱形尖表示值的集合。三角箭头表示限制的导航,例如操作而不是结构的继承。
另外,接口和类由大写字母开始,而方法由小写字母开始。
类是规定一个对象的数据结构、方法和函数调用的模板。接口规定一组可以由类操作的方法/函数调用。该类提供实现接口的代码。
1.模型描述
整个SI数据库模型基于“视图(view)”的概念。有不同的方法来概述SI数据库,不同的应用程序可以具有不同的需求。规定的概述允许应用程序仅仅考虑根据应用程序需要的SI数据库的子集。概述的概念由Java信息包来表示。
以下部分是描述Abstract SI API的对象模型。
图1是一个示出本发明的API信息包关系和相关性的上位示意图。
导航信息包110包含用于导航现有电视频道(DVB服务或ATSC虚频道)的类和接口的主要设置。选择信息包130增加的特性允许TvChannel用于调谐和选择特定的服务(MPEG节目)。指南信息包120提供对于EPG有用的信息,包括节目时间表、各个节目事件和节目费率。描述符信息包140允许检索与输出SI的MPEG部分有关的各个MPEG描述符。管道信息包170隔离一些特定输出的介质信息。当前在这个信息包中提供的类表示MPEG-2输出方法。数据信息包160类似于指南信息包120,除了它提供关于数据相关事件(服务)的信息以外,例如与音频/视频流一起发送的任何软件应用程序,如股票机、新闻机、运动统计、交互式商务等,而没有音频/视频事件。最后,Util(实用)信息包150包含支持特性的对象,如事件、异常等。
这个模型提供了描述经过多路复用(元数据)上输出的内容布置的SI的高级提取,以及对于特定SI格式的特定详细信息。这通过存取MPEG表格描述符来实现。因为描述符用作扩展SI的附加和未来功能的方式,本发明显著的优点是API提供了对描述符的通用存取而不必采用每个新的或改变的描述符来改变API的实现。
在本发明的一个方面,提供了异步输出的结果。因为DTV接收机具有不同的性能,最好不是每个接收机都要将所有的SI数据高速缓存在存储器中。对于需要的最有用信息的子集要这样做,但当需要检索不存储在存储器中的数据时必须分析实际的TS。然而,存取TS可能占用很大的时间量。因此,API一直对于不期望在存储器中的信息提供异步存取。一般来说,异步(或无阻塞)调用不仅将增加了API实现的复杂性而且也增加了使用API应用程序的复杂性。
为了隐藏低端和高端接收机之间的差别,这个API提供一种方法,如果信息可以本地获得(在存储器中)则能够同步完成,或如果数据必须从TS检索就异步地完成。以“检索”开始的所有API调用返回请求的对象或者发出一个异常,表示该数据将经过异步事件稍后提供。调用者可以将自己登记为这个事件的收听者。或者不通过登记,调用者可以表示仅仅感兴趣同步数据输出。异常包括有足够的信息来取消该请求并且将它与输出数据的实际事件相联系。
SI通常以PSIP STT消息或DVB TDT和TOT消息的形式包含系统时间相关的信息。这时假设本地DTV接收机时间将与当前调谐的频道的系统时间同步并且可以使用java.util.Data类获得该值。注意如果所有传送的多路复用使用一个可靠的和同步的数据源(如GPS)则这是可接受的。如果某一多路复用提供错误的时间信息,则通过接收机来实现对这种情况的分析。
1.1导航信息包概述
图2表示本发明的导航信息包类/接口图。
图中,相同标号的部件相互对应。
导航信息包110具有两个主要功能,即:
(1)利用所有的或选择的TvChannel的子集,它表示DVB服务和ATSC虚频道;以及
(2)利用网络相关信息如网络定义、卫星和转发器信息、TS和一揽子信息等。
图中,相同标号的部件相互对应。
该信息包包括下面的类和接口:CAIdentification 205、DeliverySystemType 807、SystemInformationType 810、ChannelCollection 220、TvChannel 225、SIUpdate 830、ChannelConstraint 235、SIManager 240、TvChannelDetails 245以及ChannelIdentification 250。
主要的导航功能通过下面的类和接口表示。SIManager 240是到基本SI数据库的主要存取点。它可以根据ChannelConstraint 235对象表示的选择准则产生称为ChannelCollection 220的一群TvChannels225。选择准则可以是网络ID、TS ID、一揽子ID、用户喜欢的频道、URL等等。该群可以随后用于通过频道数或通过频道名称分类,并且导航经过TvChannels 225,TvChannels 225表示DVB服务或ATSC虚频道。
TvChannel 225本身仅包含需用于导航的最少的信息(如定位器、频道名称和号码)。关于该频道附加的信息包含在TvChannelDetails对象245中。当关于这个频道的信息被最后更新时TvChannelDetails还经过CAIdenfication接口205提供一些CA相关信息、输出方法以及时间。频道名称和号码实际上被封装在ChannelIdentification对象250中,该对象可以扩展以容纳对频道命名和编号的不同方法,如ATSC两部分频道号码(例如,使用最大最小符号一在最大和最小频道号码之间具有一个点的串—ex:10.2)。
1.2指南信息包概述
图3表示本发明的节目指南信息包类/接口图。
该信息包包括下面的接口:SIManager 240、TvChannelDetails245、TvChannelWithSchedule 300、ContentRatingAdvisory 310、ProgramSchedule 320、RatingRegion 330、ProgramEvent 340、RatingDimension 350和SIUpdate 830(在图8中详细示出)。
这个信息包用于支持电子节目指南类型应用程序。它提供给应用程序两个相关的信息组:每个频道的节目时间表以及费率信息。ProgramSchedule对象320能够用于检索当前播放的节目,紧跟的下一个,以及在未来特定时间周期的任何其它可获得的节目。能够询问每个ProgramEvent 340它的名称、开始时间和结束时间、描述符、费率、成本和其它相关的信息。
费率相关信息被组织到费率范围,这里每个范围可以具有多种费率大小如MPAA费率、FCC TV费率、DVB基于使用期限的费率等等。每种大小包含多个等级;每个ProgramEvent以所有支持的费率范围的这些级别中的一个级别来标记。
1.3选择信息包概述
图4表示本发明的选择/调谐信息包类/接口图。
该信息包包括下面的类和接口:TvChannelDetails 245、ChannelComponent 410、MPEGChannelComponent 420、Locator 430、MPEGLocator 440和ATSCLocator 450。
调谐信息包基本上通过加上关于每个TvChannel的各个分量的信息如视频、可能的多个音频分量和选择的数据分量来扩展导航功能。TvChannel对象225能够提供遵守JMF播放机模型或单独的服务选择API的TV播放机使用的定位器。
通用的ChannelComponent 410通过表示MPEG特定信息的MPEGChannelComponent 420扩展。
基本的定位器430概念被扩展,以支持MPEG特定的定位器(MPEGLocator 440),它随后专用于ATSC(ATSCLocator 450)。注意DAVIC信息包也包括DVB特定的子类。
1.4描述符信息包概述
图5表示本发明的描述符信息包类/接口图。
该信息包包括下面的接口:TableType 510、DescriptorTag 520、Descriptor 530、MPEGTableDescriptors 540和MPEGPipeline 660(图6中详细示出)。
描述符一般在MPEG-2表格的两个位置获得:将描述符与整个表格相联系的外环,以及将描述符与内环中描述的特定实体相联系的内环。一个例子是PSIP VCT,它具有外环和内环描述符。外环描述符与这个VCT定义的所有虚频道相联系,而每个内环包含用于特定的虚频道的描述符。
在机顶执行的应用程序使用API,以利用包括SI的机顶功能。它的目的是提供格式独立的API来检索SI(ATSC PSIP,DVB SI等),以将应用程序要求了解的这些SI格式的细节减至最小。在大多数情况下提取是很好的,但是某些应用程序需要利用在提取的API级别不提供的特定描述符。例如,这可以是将在未来定义的描述符。因此,它不能直接在API中表示。它也可以不是用于应用程序的描述符中的一个;而是被接收机本身使用(例如,AC3描述符,Linkage描述符等)。
问题在于规定应用程序感兴趣的特定的描述符。它适用于确定适当的表格以及描述符环路的位置。
用于检索描述符的信息类型(例如,TS、服务、事件等)主要由DTV URL识别。有一些少有的异常;例如,DVB BAT实际上不被任何当前的URL格式识别。DTV URL通常足以指向特定的<table_type,描述符环路>对,特别用于URL指向一个事件或一个基本流。
存在URL不是特别足够的一些情况,因为一个实体例如服务可以在多个表格如PMT和DVB SDT中描述。因此,table_type被规定用于识别从哪种类型的表格检索描述符。不使用Table_id,因为一些表格类型在类型中具有不同的table_id(例如,DVB NIT具有0x40和0x41)。table_type缩小表格的范围,以特别在较高级别的URL(服务和TS级别)搜索描述符。
在一些偶然情况下,需要附加的识别。例如,如果规定了rating_type,则需要费率范围ID从ATSC RRT检索描述符的适当子集。同样应用于navigation_type表格,这里需要一揽子ID从DVB BAT外部描述符环路检索描述符。
另外,一组选择的描述符标记可以在调用中规定,以限制搜索和返回的描述符组对应于列表中暗示的描述符。如果通过<url,table_type,entity_info>tuple(例如,一组值)识别的给定表格找到一组描述符,只有那些匹配于暗示中提供的描述符标记返回。
注意根据DTV接收机的高速缓冲能力,所有的描述符检索方法支持同步以及异步数据输出。
1.5管道信息包概述
在选择的实施例中,提供分开的MPEG-2特定的数据。
使用MPEG-2传送格式主要输出数字电视内容。对于DVB以及ATSC实际上就是这样。通过将电视和个人计算机集合,最好可以通过其他手段,如借助于某种类型的实时协议,以IP格式经过互联网将数字视频内容输出到电视接收机。这激发了较高级别的SI API的提取,它不仅隐藏了ATSC PSIP和DVB SI(都是MPEG-2的扩展)之间的差别,而且隐藏了输出内容和SI的不同方式之间的差别。
这种设计将所有MPEG-2(例如TS)特定的信息移到分开的信息包中。提供通用传送的中性信息的基类可以采用用于MPEG-2输出网络的MPEG-2特定的信息进一步扩展。因为新的输出方法已经很普遍,可以扩展基类,以提供关于特定协议的详细信息。
实质上,API进一步提取SI以独立于特定的TS格式的方式提供它。因此,API可以运行在以许多不同的可利用格式的任何一个接收TS的终端上。
图6表示本发明管道信息包的类/接口图。
该信息包包括下面的类和接口:SIManager 240、SatelliteInformation 605、NetworkInformation 610、BouquetInformation630、SISpecificManager 640、PipelineInformation 650、TransportStreamInfo 660、MPEGPipeline 670和SystemInformationType810(图8中详细示出)。
管道信息包提供关于物理方法介质的附加信息,该介质输出SI数据描述的内容。物理输出方法可以包括例如卫星/转发器信息。SISpecificManager 640提供了提取PipelineInfomation 650的途径(access),在这种特定的情况下,PipelineInfomation 650通过表示MPEG-2多路复用的MPEGPipeline 670来扩展。通用的PipelineInfomation 650可以被扩展,以支持其他类型的内容输出(例如,互联网协议)。
1.6数据信息包概述
图7表示本发明数据信息包的类/接口图。
该信息包包括下面的接口:TvChannelDetails 245、ContentRatingAdvisory 310、TvChannelWithData 710、DataSchedule720、DataEvent 730和SIUpdate 830(图8中详细示出)。
数据信息包概述类似于指南信息包概述,它表示类似EPG的信息。在这种情况下,数据时间表表示与音频/视频事件不同的数据事件的调整或指南。
注意这个信息包在仍然进行中的ATSC T3/S13工作之后建模。
1.7实用信息包概述
图8表示本发明实用信息包的类/接口图。
该包包括下面的类和接口:SIFactory 805、SIManager 240、SystemInformationType 810、SIChangeListener 815、EventObject 820、SIUpdate 830、SIChangeEventType 832、SIChangeEvent 834、TvChannelChangeEvent 835、DataChangeEvent 840、ProgramChangeEvent 845、SIInfoChangeEvent 850、Exception 860(来自java.lang信息包)、SIRetrievalEvent 865、SIRetrievalListener 870、SIDelayedDeliveryException 875、SIException 880、SIRetrievalFailEvent 882、SIRetrievalSuccessEvent 884、SIRequest886、SINotAvailableException 890、SIRetrievalSingleSuccessEvent 892和SIRetrievalMultipleSuccessEvent 894。
实用信息包在一些范围内提供支持,即
1.对于在TS中检测的SI实体变化和输出异步请求事件的事件通知方法;
2.创建SI Manager(s)的SI Factory;以及
3.异常
SIChangeListener 815和SIChangeEvent 834支持标准Java事件模型。有三种类型的对象收听变化:
1.SIManager 240,它报告TransportStreamInfo 660、NetworkInformation 610、BouquetInformation 630等对象表示的网络定义相关表格中检测的变化。
2.ChannelCollection 220,它报告通过群包含的TvChannels 225的任何一个中检测的变化。
3.ProgramSchedule 320,它报告时间表中ProgramEvents 340的任何一个中检测的变化。
应用程序可以登记为具有上面列出的对象的收听者,并且它们通过接收三个适当事件中的一个得到通知,它将输出关于哪个特定的对象已经改变的细节。为了获得新的信息,应用程序需要重新产生特定的对象群(ChannelCollection 220、ProgramSchedule 320等)。
注意,可能很难实现上面规定的事件,除非接收机进行相同类型的旧、新表格的逐个字段比较。接收机可以选择仅输出高级别事件,并且如果需要使应用程序更新多个对象。
实用信息包150也提供异步输出数据的方法。通过SIRequest886、SIDelayedDeliveryException 875、SIRetrievalEvent 865和SIRetrievalListener 870提供这种功能。SIDelayedDeliveryException875发信号给调用者,该数据仅异步可利用,并且提供可以用于取消请求和将这个请求与SIRetrievalEvent 865相联系的SIRequest对象886,它最后输出请求数据或失败的指示。异步方法的调用者(通过“retrieveXXX”名称表示)可以登记为收听者以获得该事件。如果它决定不登记作为收听者,则它对于API实现是一个指示,不需要分析TS以及检索请求的数据。这样,根据本发明,应用程序在数据输出时具有完全的控制。
这样,可以提供SI数据的递增检索。一般地,有许多应用程序将在DTV接收机上执行。一些接收机需要利用整个SI数据组(如EPG类的应用程序),而其他的可能仅需要非常小的SI数据的子集。为了支持所有这些应用程序而不将多余的负担加到那些需要小的SI数据子集的接收机上,本发明能够进行SI数据的递增检索。这允许应用程序获得一小组SI数据,做出智能的判定,以及检索更多的SI用于可能的一个选择的SI对象或一个SI对象子集。
这样一个设计对于应用程序提供了灵活的、更多的控制、以及更有效的SI数据的检索。
因为大多数SI对象实际上是没有结构的接口,应用程序没有办法用具体例子来说明实现规定的接口的对象。为了获得实现SIManager接口240的对象的情况,提供SIFactory类805,它具有获得SIManager情况的方法。
一些方法发出异常来报告无效参数或其他类型的错误状态(见类875和880)。
2.0类和接口描述
2.1导航信息包(图2)
从导航方法如简单的频道指南、channelUp和channelDown按钮等的角度来概述SI。
它提供了足够信息来显示具有滤波方法的可利用MPEG-2服务的列表。
2.1.1 TvChannel 225
TvChannel 225表示称为MPEG节目、DVB服务或ATSC虚频道的提取的概述。它表示与它相关的通用信息,如频道名称、频道号码、描述符等。每个TvChannel通过包括系统类型、网络标识符、TS ID、服务号码或频道号码的多元组唯一地识别。这种识别可以用URL格式表示。
公共操作:
getLocator():Locator
返回这个TvChannel的整个定位器。
getLongChannelName():String
返回整个频道名称。
isHidden():boolean
返回TRUE,这是一个隐藏的频道。
retrieveDetails(listener:org.atsc.abstractSI.util.SIRetrievalListener):org.atsc.abstractSI.navigation.TvChannelDetails
这种方法检索关于TvChannel的附加信息。这个信息基于SI数据(也称为元数据)。可以考虑SI数据是关于其他数据(内容)如传送流的音频/视频/数据分量的信息。因为它是关于其他数据的数据,所以有时称它为元数据。
这种方法可以同步或异步地返回数据。
getIdentification():org.atsc.abstractSI.navigation.ChannelIdentification
这种方法用于获得频道标识(例如,频道名称和号码)。
2.1.2 ChannelCollection 220
CharmelCollection表示根据ChannelConstraint相关类235定义的特定的分组规则的一群TVChannel 225。用于创建这样一个群的滤波可以基于TS ID、Network ID、System type(DVB,ATSC等)、Bouquet、内容主题(例如运动)、频道名称或它的子集(例如CNN)或可能的这些的组合。
这个类还提供用于浏览被特定群的情况包含的那些TVChannels的方法。
这类似于SortedMap接口(来自Sun Microsystem的JDK 1.2APIs),但仅提供很小的功能子集应用于这个范围。
公共属性:
SORT_BY_CHANNEL_NUMBER:short=1
SORT_BY_NAME:short=2
公共操作:
size():int
返回包含在这个群中的TvChannel的数量。
sort(criterion:short):void
用于规定一种算法,以确定nextChannel和previousChannel方法的性能。
例如,如果规定了用频道名称分类,nextChannel方法将在当前TvChannel之后按名称的字母顺序返回下一个TvChannel对象。它总是以升序分类:
nextChannel(currentChannel:org.atsc.abstractSI.navigation.TvChannel):TvChannel
根据分类准则返回相关于规定的TvChannel的下一个TvChannel。如果到达该群的末尾则返回空(null)。
previousChannel(currentChannel:org.atsc.abstractSI.navigation.TvChannel):TvChannel
根据分类准则返回先前的TvChannel。如果到达这个群的开始则返回空。
firstChannel():TvChannel
根据为这个群设置的分类准则返回这个群中第一个TvChannel。
lastChannel():TvChannel
根据为这个群设置的分类准则返回这个群中最后的TvChannel。
addListener(listener:SIChangeListener):void
用于登记SIChangeListener 815以相关于这个群中频道的改变。TvChannelChangeEvent 835将输出给收听者。
removeListener(listener:SIChangeListener):void
用于撤销SIChangeListener的登记,以相关于这个群中频道的改变。
retrieveChannels(flter:org.atsc.abstractSI.navigation.ChangeConstraint,listener:org.atsc.abstractSI.util.SIRetrievalListener):ChannelCollection
基于滤波器参数中规定的分组条件,这种方法返回ChannelCollection对象220,它是这个群的子集。如果滤波器是空的,则返回包含在这个群中一群所有的TvChannels 225。
根据多个滤波(分组)准则,这种方法产生越来越多的特定群的TvChannels。
findChannel(locator:org.davic.net.Locator):org.atsc.abstractSI.navigation.TvChannel
如果它是这个群中的一个成员,则这种方法返回相应于规定的定位器的TvChannel。否则,它返回空。
findChannel(channelID:org.atsc.abstractSI.navigation.ChannelIdentification):org.atsc.abstractSI.navigation.TvChannel
如果它是这个群中的一个成员,则这种方法返回相应于规定的频道标识的TvChannel。否则,它返回空。
2.1.3 SIManager240
SI Manager表示中心管理实体,它了解整个网络或一群网络,并且能够根据ChannelConstraint滤波规则创建一群TvChannel。
它也可利用每个单独的TS(DVB SIDatabase,ATSCPSIPDatabase等)的特定的SI表示。
公共操作:
retrieveChannels(filter:org.atsc.abstractSI.navigation.ChannelConstraint,listener:org.atsc.abstractSI.util.SIRetrievalListener):ChannelCollection
这种方法根据在滤波器参数中规定的分组条件返回ChannelCollection对象。如果滤波器是空的,则产生一群所有已知的TvChannel。
这种方法能够同步或异步地输出结果。如果请求的数据是可以立刻得到的,则它被同步地返回。
如果该数据必须首先由传送检索,则发出SDelayedDeliveryException 875并且其结果经过一个事件输出给登记的收听者。
参数滤波器—限定请求的频道群的规则。
参数收听者—当异步检索数据时接收输出事件的收听者。如果应用程序不提供收听者(空),则不试图进行异步检索。收听者仅为了这个调用而被登记。
setPreferredLanguage(language:int):void
如果提供作为多种语言中的多种语言串,这种方法设置从SI相关类和接口(例如TvChannel名称等)返回任何文本信息使用的语言。如果规定的语言是不可利用的,则使用系统级的优选语言。如果该语言也是不可利用的,则使用第一种可利用的语言。
这种方法用于临时取代abstractSI信息包中的系统级优选语言。
getPreferredLanguage():int
使用这种方法来确定返回串类型值的优选语言。
getRatingRegions():int[]
这种方法返回一个可利用费率范围ID的列表。
retrieveRatingRegion(regionID:int,listener:org.atsc.abstractSI.util.SIRetrievalListener):RatingRegion
这种方法用于获得规定的ratingRegionID的RatingRegion对象。这种方法可以同步地以及异步地输出数据。
2.1.4 ChannelConstraint 235
这个相关类表示用于产生特定的ChannelCollection 220的一组规则或滤波准则。用于创建这样一群的滤波可以基于TS ID、NetworkID、System Type(DVB,ATSC等)、一揽子内容、内容主题(例如运动)、频道名称或它的子集(例如CNN)等。
公共操作:
ChannelConstraint(filter:int,value:java.lang.Object):
这种构造器规定什么是分组准则。
参数滤波器—滤波器表示特定的滤波器类型的计算值。
参数值—根据滤波器类型设置滤波器值。
getFilterType():int
用于确定什么分组方法用于这个ChannelConstraint。
getFilterValue():java.lang.Object
用于确定当前滤波器值。该值的意思根据滤波器类型改变。
2.1.5 CAIdentification 205
CAIdentification接口提供一种方法将CA相关的信息与任何SI相关的类相联系,如TS或TvChannel。它存取在CAT MPEG表格中找到的信息。
公共操作:
getCASystemIDs():int[]
返回CAT MPEG消息中定义的CA系统ID的阵列。如果没有CAT信息提供给这个频道则返回空。
isAccessControlled():boolean
如果这个TvChannel被CA保护,则返回TRUE。如果它没有被保护或不知道,则返回FALSE。
2.1.6 FilterType 265
这个接口提供支持滤波方法如通过NetworkID、TS ID等滤波的恒定值的定义。
公共属性:
NETWORK_ID_FILTER:short=1
基于Network ID的滤波器
TRANSPORT_ID_FILTER:short=2
基于TS ID的滤波器
BOUQUET_ID_FILTER:short=3
基于BouquetID的滤波器
SYSTEM_TYPE_FILTER:short=4
基于SI类型(例如,DVB、ATSC等)的滤波器
SATELLITE_FILTER:short=5
基于Satellite ID的滤波器
TRANSPONDER_FILTER:short=6
基于转发器号码的滤波器
LOCATOR_FILTER:short=7
基于定位器(URL)的滤波器
CHANNEL_NAME_FILTER:short=8
基于频道名称的滤波器
CHANNEL_NUMBER_FILTER:short=9
基于频道号码的滤波器
THEME_FILTER:short=10
基于主题/内容种类的滤波器
FAVORITE_CHANNELS_FILTER:short=11
基于用户喜欢的频道的滤波器
2.1.7 TvChannelDetails 245
这个接口提供了利用TvChannel元数据。
从DeliverySystemType 807、SIUpdate 830、SystemInformationType 810以及CAIdentification 205产生。
公共操作:
retrieveChannelDescription(listener:org.atsc.abstractSI.util.SIRetrievalListener):String
返回这个频道的文本描述符,或者如果什么都没获得,返回空。
getServiceProvider():String
返回服务供应商的名称。
getServiceType():int
返回这个服务的类型。服务类型是下面值中的一个:数字电视、数字无线电、模拟电视、模拟无线电、数据服务、NVOD参考服务、NVOD时移服务。这个列表可以在未来用新类型的服务扩展。
retrieveComponents(listener:org.atsc.abstractSI.util.SIRetrievalListener):ChannelComponent[]
这种方法返回一个作为这个频道部分的基本分量列表。
getRunningStatus():short
返回这个服务的运行状态(见DVB SI文件)。
retrieveContentAdvisory(listener:org.atsc.abstractSI.util.SIRetrievalListener):org.atsc.abstractSI.guide.ContentRatingAdvisory[]
返回每个费率范围的Content Advisory信息的列表。
getDeliverySystemType():int
用于确定输出这个TvChannel的方法(例如,有线电视、卫星等)。
2.1.8 ChannelIdentification 250
这个接口用于通过名称、频道号码或其它手段提供识别TvChannel的灵活性和可扩展的方式。
它可以扩展,以支持特定的方法,如ATSC两部分频道号码。
公共操作:
getChannelNumber():String
返回频道名称,它是系统特定的值。例如,DCII使用一单个号码,DVB实际上不支持频道号码或者它们是特别的机顶技术或广播电台,现在ATSC具有两部分频道号码。
在ATSC范围中,它可以用最大、最小符号表示(在最大和最小频道号码之间具有一个点的串)。
对于DVB频道,它可以是作为频道号码的服务ID。
它也可以表示作为专用描述符输出的广播电台特定的频道编号方法。
getChannelName():String
返回短的频道名称或缩写。
2.2指南信息包(图3)
从节目指南的角度来概述SI,节目指南不仅表示服务可利用性而且表示它们中每一个提供的未来事件列表。
2.2.1 ProgramSchedule 320
这个接口表示对于时间排序的给定TvChannel 225的一群节目事件。它提供当前的、下一个和未来的事件。
公共操作:
retrievePresentEven(listener:org.atsc.abstractSI.util.SIRetrievalListener):ProgramEvent
返回当前的(如果调谐到可以观看的)节目事件。
retrieveFollowingEvent(listener:org.atsc.abstractSI.util.SIRetrievalListener):ProgramEvent
返回即时跟随当前节目事件的节目事件。
retrieveFutureEvent(when:java.util.Date,Listener:org.atsc.abstractSI.util.SIRetrievalListener):ProgramEvent
返回规定时间的节目事件。将返回包含规定时间的节目事件。规定的时间落在节目事件的开始时间和开始时间加事件持续时间之间。
当规定的时间没有落在任何已知的节目事件内时,返回空。
retrieveFutureEvents(startOfInterval:java.util.Date,endOfInterval:java.util.Date,Listener:org.atsc.abstractSI.util.SIRetrievalListener):ProgramEvent[]
返回规定时间间隔的这个频道上所有已知的节目事件。
retrieveEvent(locator:org.davic.net.Locator,Listener:org.atsc.abstractSI.util.SIRetrievalListener):org.atsc.abstractSI.guide.ProgramEvent
这种方法检索匹配于定位器的节目事件。注意该事件必须是这个时间表的一部分。
addListener(listener:org.atsc.abstractSI.util.SIChangeListener):void
对于与这个时间表中ProgramEvents 340的变化有关的事件,登记SIChangeListener 815。当这个时间表上任何ProgramEvent变化时,将ProgramChangeEvent 845输出给指定的收听者。
removeListener(listener:SIChangeListener):void
用于撤销SIChangeListener 815的登记。
2.2.2 ProgramEvent 340
这个接口包括具有公用时基(time base)、相关的开始时间以及相关的结束时间的一群基本流。事件等同于“电视节目”的通常工业使用。
事件信息表(EIT)包含在规定的TvChannel上事件的信息(标题、开始时间等)。在大多数情况下,事件是典型的电视节目,然而它的定义可以扩展,以包括广播对话和其他信息段,如信息数值的特别数据,或者可以表示部分该事件包括交互式数据应用程序,而其他部分不包括。
由SystemInformationType 810和SIUpdate 830产生。SIUpdate是表示SI表格的所有SI对象共享的接口,并且它提供最后时间更新这个对象的有关信息。
公共操作:
getLocator():Locator
返回表示这个节目事件的定位器。
getStartTime():java.util.Date
返回这个节目事件的开始时间。
getEndTime():java.util.Date
返回这个节目事件的结束时间。
getDuration():long
立刻返回这个节目事件的持续时间。
getEventName():String
返回节目事件标题。
retrieveDescription(listener:org.atsc.abstractSI.util.SIRetrievalListener):String
返回该事件的文本描述。这个信息来自ATSC的扩展文本表(ETT)或DVB的扩展事件描述符。当没有ETT可用于这个事件时,将返回一个空串。
retrieveContentAdvisory(listener:org.atsc.abstractSI.util.SIRetrievalListener):ContentRatingAdvisory[]
返回每个费率范围的Content Advisory信息的列表。
getRunningStatus():short
返回这个事件的运行状态(见DVB SI文件)。
getTvChannel():TvChannel
返回这个节目事件相关的TvChannel。在DVB中,通过服务ID,事件和TvChannel相关;在ATSC中,通过源ID,它们相关。
getCost():String
这种方法返回IPPV节目事件的成本或者如果这不是IPPV事件则返回空。
getTheme():short[]
这种方法返回与节目相关的题目列表。它表示为数字,并且是系统特定的(例如,DVB内容四位字节)。详细内容可以参照适当的说明。
2.2.3 ContentRatingAdvisory 310
Content Advisory用于对给定事件表示每个费率范围规定的任何或所有的费率大小。费率可以给予任何或所有的定义范围。没有内容咨询(content advisory)的事件表示用于任何费率范围中规定的任何费率大小的费率值是零。缺少特定大小的费率完全等同于具有这样一种大小的零值费率。缺少特定范围的费率表示缺少用于范围中所有大小的费率。
公共操作:
getRatingRegion():short
返回规定费率范围的无符号8位整数用于这个对象中定义的数据。rating region将这里给出的费率数据与相应的费率范围标记的RRT中定义的数据相关。
注意,DVB费率系统仅基于使用期限。它可以容易地变换到这个更精致的费率系统作为规定大小中的一个。
getDimension():short[]
返回这个费率范围额定的所有大小的列表。
getRatingValue(ratedDimension:short):short
对于这个费率范围,返回表示参数规定大小的费率值的数值。
getRatingText(ratedDimension:short):String
返回规定大小的费率描述显示串。它应该限制于16个字符或者更少。
2.2.4 RatingRegion 330
这个接口定义特定费率范围的所有费率大小。
PSIP费率规定对于服务或事件由任何内容咨询描述符参照的电视最原始的指南系统。它基于RRT。
公共操作:
getNumberOfDimensions():short
返回这个费率范围中规定的费率大小的数字。
getRegionName():String
返回与费率范围有关的费率范围名称,例如“美国(50个州+属地)”。用于费率范围名称的显示串应该限制于32个字符或更少。
getRatingDimensions():RatingDimension[]
返回这个费率范围定义的所有费率大小的阵列。
2.2.5 RatingDimension 350
例如,美国费率范围中一个大小用于描述MPAA列表。用于这种情况的大小名称可以定义为“MPAA”。
费率大小的另一个例子可以是基于使用期限的DVB费率。
公共操作:
getDimensionName():String
返回表示这个对象描述的大小名称的串,如“MPAA”。大小名称显示串应该限于20个字符或更少。
isGraduatedScale():boolean
表示是否这个大小中的费率值是一个比例尺,即较高的费率值表示该大小内额定内容的增加级别。值1意味着“是”,而值0意味着“不是”。
getNumberOfLevels():short
返回规定这个特别大小所定义的数字值4位字段(1-15)。
getRatingLevelDescription(ratingLevelIndex:short):string[]
返回描述这个大小的规定的费率级别的一对串。
第一个串表示一个特别费率值的缩写名称。费率值0的缩写名称被设置为空串,即“”。缩写值显示串应该限于8个字符或更少。
第二个串表示一个特定的费率值的全名。费率值0的全名应该设置为空串,即“”。费率值显示串应该限于150个字符或更少。
2.2.6 TvChannelWithSchedule 300
这个接口通过加上存取与这个TvChannel相关的节目时间表来扩展TvChannelDetails。这由TvChannelDetails 245产生。
公共操作:
getProgramSchedule():ProgramSchedule
返回与这个TvChannel相关的节目/事件时间表。
2.3选择信息包(见图4)
从频道选择的角度来概述SI。它表示必需提供给其他API,如NetworkInterfaceController、JMF播放机、A/V译码器等的信息,以选择、调谐和最后译码特定的MPEG-2服务和它的分量。
2.3.1 ChannelComponent 410
这个接口表示MPEG基本流的提取。它提供关于TvChannel 225的各个分量的信息。它可以用于播放机选择TS的适当的分量。
公共操作:
getComponentName():String
返回与这个分量有关的名称。如果存在,则可以使用分量描述符。否则,可以使用通用的名称(例如,视频、第一音频等)。
getAssociatedLanguage():int
根据ISO 639.2/B,返回3字节(24位)字段,规定基本流使用的语言。在没有规定这个基本流例如视频的语言的情况下,每个字节应该具有值0x00。
getStreamType():short
返回这个分量流的类型。
也参见StreamType
2.3.2 MPEGLocator 440
由Locator 430产生。
公共操作:
getNetworkID():int
用于确定这个定位器表示的网络的网络ID。
getServiceID():int
用于确定这个定位器表示的服务的服务ID(MPEG节目号码)。
getTransportStreamID():int
用于确定这个定位器表示的传送的TransportStreamID。
getEventID():int
返回这个节目事件的标识。
注意:ATSC PSIP事件ID仅在单个EIT表中是唯一的,而DVB事件ID在服务中是唯一的。
2.3.3 ATSCLocator 450
由MPEGLocator 440产生。
公共操作:
getSourceID():int
返回整数号码,该整数号码识别与虚频道相关的节目源。在这方面,源是视频、文本、数据或音频节目的一个特定的源。
源ID值零被保留。在0x0001到0x0FFF范围内的源ID值应该在传递VCT的TS中是唯一的,而值0x1000到0xFFFF在区域级别上应该是唯一的。
用于source ids 0x1000以及以上的值应该由ATSC指定的登记授权发出和管理。
2.3.4 MPEGChannelComponent 420
这是表示MPEG-2基本流的特定的频道分量。
由ChannelComponent 410产生。
公共操作:
getPID():short
返回PID,基本流的数据在TS上发送。
getPcrPID():short
返回与这个分量有关的PCR PID号码。
getTag():int
返回这个基本流的分量标记(流标识描述符),或者如果什么都没出现,则返回空。
getAssociationTag():int
返回这个基本流的相关标记(相关标记描述符),或者如果什么都没出现则返回空。
2.3.5 TrunableChannelControl(415)
TunableChannelControl是一个接受TvChannel对象的接口,它能够被JMF播放机或它的DTV衍生物调谐和播放。
由JMF javax.media.Control产生。
公共操作:
getCurrentChannel():TvChannel
返回当前播放的TvChannel。
play(newChannel:TvChannel)
这种方法称为初始化TvChannel的调谐、译码和显示。
play(newChannel:TvChannel,components:int[])
这种方法称为初始化TvChannel的调谐、译码和显示。附加的参数规定TvChannel的哪些分量来播放。通过它们的标记数字来识别分量。
play(newChannel:TvChannel,language:int)
这种方法称为初始化TvChannel的调谐、译码和显示。根据语言相关性,附加的参数规定TvChannel的哪些分量来播放。
2.4描述符信息包(图5)
这个信息包描述从任何类型MPEG表格中检索描述符的一般的API方法,这些表格包括:MPEG PSI、DVB SI、ATSC PSIP、或甚至专用表格,如DCII。
目的是规定检索这些描述符的SI格式独立的方法,以使对于DVB和ATSC差别的了解以及对于调用这个API的应用程序中特别代码的需求达到最小。
参照在1.4部分“描述符信息包概述”中的讨论。
2.4.1 MPEGTableDescriptors 540
这个接口提供一种用于检索与任何MPEG、DVB、ATSC或甚至专用表格相关的MPEG描述符的方法。它返回一组描述符或一组可利用的描述符标记。调用的应用程序也可以暗示它感兴趣的描述符。仅当这些描述符出现在规定的表格时那些描述符的子集将返回。
描述符主要由URL识别。这在许多情况下是不够的,因为例如服务可以在多个表格如PMT和SDT中描述。因此,规定表格类型,以识别从哪种类型的表格中检索描述符。在极少的情况下需要附加的识别。例如,如果规定RRT类型,就需要费率范围ID来检索适当的描述符子集。同样地应用于BAT类型表格,这里需要BouquetID来确定哪些描述符要检索。
另外,可以在调用中规定选择的描述符标记组,以限制搜索和返回的描述符组。
由DescriptorTag 520和TableType 510产生。
公共操作:
retrieveDescriptors(url:Locator,tableType:short,someTags:short[],listener:org.atsc.abstractSI.util.SIRetrievalListener):org.atsc.abstractSI.descriptor.Descriptor[]
检索一组描述符。这种方法检索所有或一组描述符,这些描述符与采用描述符广播的次序的规定的表格中通过输出的定位器(URL)规定的实体有关。
参数url—实体(如TS、服务等)的基于URL的说明,对于该实体获得描述符。
参数tableID—表格的TableType,从该表格中检索规定的描述符。
参数someTags—一个标记列表,用于应用程序感兴趣的描述符(由它们的标记来识别)。所有不可应用的标记值被忽略。如果这个列表是清空的或空的,则返回所有的描述符。
参数收听者—一个在数据被异步检索时接收输出事件的收听者。如果应用程序不提供一个收听者(空),则不试图进行异步检索。收听者仅为了这个调用而登记。
返回值—一组(或一个子集)描述符对象,如someTags中表示。
参见描述符信息包。
retrieveDescriptors(url:Locator,tableType:short,entityID:short,someTags:short[],listener:org.atsc.abstractSI.util.SIRetrievalListener):org.atsc.abstractSI.descriptor.Descriptor[]
检索一组描述符。这种方法检索所有或一组描述符,这些描述符与采用描述符广播的次序的规定的表格中通过输出的定位器(URL)规定的实体有关。
参数url—见前面的定义。
参数tableID—见前面的定义。
参数entityID—一个表示在规定表格中描述的特定实体的ID。实体类型取决于表格类型。例如,如果表格ID识别一个BAT,则实体ID是一个特定的BouquetID。
参数someTags—见前面的定义。
参数收听者—见前面的定义。
返回值—见前面的定义。
还参见描述符信息包。
retrieveDescriptorTags(url:Locator,tableType:short,listener:org.atsc.abstractSI.util.SIRetrievalListener):short[]
检索通过对于规定的表格类型实际广播的Locator(URL)规定的实体有关的所有描述符的标记。以描述符广播(即在传送流中)相同的次序返回标记。
参数url—见前面的定义。
参数tableID—表格的表格ID,从该表格中检索描述符标记。
参数收听者—见前面的定义。
返回值—描述符的标记,实际上对于规定的表格广播(通过它们的标记来识别)。
还参见DescriptorTag。
retrieveDescriptorTags(url:Locator,tableType:short,entityID:short,listener:org.atsc.abstractSI.util.SIRetrievalListener):short[]
检索所有描述符的标记,这些所有描述符的标记与Locator(URL)规定的实体相关,Locator(URL)实际上对于规定的表格类型广播。当描述符广播时,标记以相同的次序返回。
参数url—见前面的定义。
参数tableID—见前面的定义。
参数entityID—表示在规定的表格中描述的特定实体的ID。实体类型取决于表格类型。例如,如果表格ID识别BAT,则实体ID是一个特定的BouquetID。
参数收听者—见前面的定义。
返回值—见前面的定义。
还参见DescnptorTag。
2.4.2 Descriptor 530
这个接口规定MPEG描述符的基本结构。它包括标记、长度和字节阵列。
由SystemInformationType 810和DescriptorTag 520产生。
公共操作:
getTag():short
返回描述符标记。
getByteAt(index:int):byte
返回描述符内容中特定的字节。
getLength():short
返回描述符内容的长度。
getContent():byte[]
返回整个描述符内容。
2.4.3 DescriptorTag 520
这个接口规定相应于大多数通用描述符标记的常数。参见描述符。
公共属性:
NETWORK_NAME:short=0x40
SERVICE_LIST:short=0x41
STUFFING:short=0x42
SATELLITE_DELIVERY_SYSTEM:short=0x43
CABLE_DELIVERY_SYSTEM:short=0x44
BOUQUET_NAME:short=0x47
SERVICE:short=0x48
COUNTRY_AVAILABILITY:short=0x49
LINKAGE:short=0x4A
NVOD_REFERENCE:short=0x4B
TIME_SHIFTED_SERVICE:short=0x4C
SHORT_EVENT:short=0x4D
EXTENDED_EVENT:short=0x4E
TIME_SHIFTED_EVENT:shon=0x4FCOMPONENT:short=0x50MOSAIC:short=0x51STREAM_IDENTIFIER:short=0x52CA_IDENTIFIER:short=0x53CONTENT:short=0x54PARENTAL_RATING:short=0x55TELETEXT:short=0x56TELEPHONE:short=0x57LOCAL_TIME_OFFSET:short=0x58SUBTITLING:short=0x59TERRESTRIAL_DELIVERY_SYSTEM:short=0x5AMULTILINGUAL_NETWORK_NAME:short=0x5BMULTILINGUAL_BOUQUET_NAME:short=0x5CMULTILINGUAL_SERVICE_NAME:short=0x5DMULTILINGUAL_COMPONENT:short=0x5EPRIVATE_DATA_SPECIFIER:short=0x5FSERVICE_MOVE:shorr=0x60SHORT_SMOOTHING_BUFFER:short=0x61FREQUENCE_LIST:short=0x62PARTIAL_TRANSPORT_STREAM:short=0x63DATA_BROADCAST:short=0x64AC3_AUDIO:short=0x81PROGRAM_IDENTIFIER:short=0x85CAPTION_SERVICE:short=0x86CONTENT_ADVISORY:short=0x87EXTENDED_CHANNEL_NAME:shorr=0xA0SERVICE_LOCATION:short=0xA1
TIME_SHIFTED_ATSC_SERVICE:short=0xA2
COMPONENT_NAME:short=0xA3
2.4.4 TableType 510
这个接口定义一组相应于MPEG、ATSC和DVB表格类型,或者专用表格如DCII的常数。
公共属性:
UNKNOWN:short=0
CA_INF0:short=1
MPEG PSI CAT表格。
SERVICE_INFO:short=2
MPEGPSIPMT表格.
TRANSPORT_INFO:short=3
MPEG PSI TSDT表格。
NAVIGATION_INFO:short=4
DVB BAT和SDT表格,以及ATSC VCT表格。
NET_INFO:short=5
DVB NIT表格和ATSC MGT表格。
RATING_INFO:short=6
ATSC RRT表格。
TIME_INFO:short=7
DVB TOT表格和ATSC STT表格。
EVENT_INFO:short=8
DVB EIT表格和ATSC EIT表格。
2.5管道信息包(见图6)
这个信息包表示管道(或网络)概述。它表示相关于传送输出方法如MPEG-2的对象。它也能够包括关于非MPEG输出协议如IP的信息。
2.5.1 SatelliteInformation 605
这个接口表示关于卫星输出网络中卫星的信息。
公共操作:
getSatelliteID():int
返回这个卫星的ID。
getSatelliteName():String
返回整个卫星名称。
getSatelliteAbbreviation():String
返回缩写的卫星名称。
getNumberOfTransponders():int
返回这个卫星上可利用的转发器数量。
getTransponderNumbers():int[]
这种方法返回这个卫星上一系列可利用的转发器。
getTransponderName(transponderNumber:int):String
返回规定的转发器的名称。
getTransponderNumber(transportStreamID:int):int
返回输出规定的TS的转发器数量。
2.5.2 BouquetInformation 630
这个接口表示关于一揽子内容(一群能够跨过TS和网络边界的服务)的信息,它是DVB特定的概念。
公共操作:
getBouquetID():int
这种方法返回这个一揽子规定的ID。
getName():java.lang.String
这种方法返回这个一揽子内容的名称。
2.5.3 TransportStreamInfo 660
这个接口提供关于TS的信息。
由SystemInformationType 810产生。
公共操作:
getLocator():org.davic.net.Locator
这种方法返回这个TS的URL。
getNetworkID():int
返回传递这个TS的网络的ID。
getTransportStreamID():int
这种方法返回这个TS的ID。
getDescription():String
返回这个TS的文本名称或描述符。
getOriginalNetworkID():int
这种方法返回产生TS的网络的网络ID。
如果这个TS产生在传递它的网络上,这种方法返回与getNetworkID相同的ID。
2.5.4 NetworkInformation
这个接口提供关于传送流网络的描述信息。
公共操作:
getNetworkID():int
这种方法返回这个网络的ID。
getLocator():org.davic.net.Locator
这种方法返回这个网络的URL。
getNetworkName():java.lang.String
这种方法返回这个网络的名称。
2.5.5 MPEGPipeline 670
MPEG SI Manager表示MPEG-2特定的SI。
由PipelineInformation 650和MPEGTableDescriptors 540产生。
公共操作:
retrieveSatelliteInformation(transportStreamID:int,listener:org.atsc.abstractSI.util.SIRetrievalListener):SatelliteInformation[]
这种方法返回一系列表示有关卫星传递规定的TransportStream信息的对象。
如果没有规定TS,它返回一系列表示关于所有已知卫星信息的对象。
如果这不是卫星网络,则它返回空阵列。
RetrieveBouquet(bouquetID:int,listener:org.atsc.abstractSI.util.SIRetrievalListener):org.atsc.abstractSI.pipeline.BouquetInformation
这种方法返回关于规定的一揽子内容的信息。
RetrieveBouquet(listener:org.atsc.abstractSI.uril.SIRetrievalListener):BouquetInformation[]
返回一系列表示所有已知Bouquet的BouquetInformation对象。
RetrieveTransportStream(url:Locator,listener:org.atsc.abstractSI.util.SIRetrievalListener):TransportStreamInfo
该方法返回表示有关规定的TS信息的特定的TransportStreamInfo对象。
RetrieveTransportStreams(networkID:int,listener:org.atsc.abstractSI.util.SIRetrievalListener):TransportStreamInfo[]
返回一系列表示规定网络的所有已知传送流的TransportStreamInfo对象。
RetrieveNetwork(networkID:int,listener:org.atsc.abstractSI.util.SIRetrievalListener):NetworkInformation
返回它的ID规定的NetworkInformarion。
RetrieveNetworks(listener:org.atsc.abstractSI.util.SIRetrievalListener):NetworkInformation[]
返回表示所有已知网络的NetworkInformation对象的阵列。
addListener(listener:SIChangeListener):void
登记SIChangeListener 815,用于与SIManager 240提供的对象中变化有关的变化。
这包括TransportStreamInfo 660、NetworkInformation 610等,但不包括可以经过适当的群如ChannelCollection 220和ProgramSchedule 320收听的TvChannel 225和ProgramEvent 340。因此,SIInfbChangeEvent 850将输出给收听者。
removeListener(listener:SIChangeListener):void
用于撤销SIChangeListener 815的登记。
2.5.6 SISpecificManager 640
这个SI管理器具有关于内容输出介质特定的信息。从SIManager240产生。
公共操作:
getPipelineInfb():org.atsc.abstractSI.pipeline.PipelineInformation[]
这种方法返回表示不同的内容输出介质如MPEG-2传送的对象列表。
2.5.7 PipelineInformation 650
这个提取类是用于不同内容输出介质的位置保持器(placeholder)。它必须通过对于特别的传送方法如MPEG-2 TS特定的对象扩展。
2.6数据信息包(图7)
这个信息包表示数据事件时间表。类似于音频/视频节目,它们也可以是对于给定TvChannel安排的数据事件。
2.6.1 TvChannelWithData 710
这个接口通过加上存取与这个TvChannel有关的数据事件时间表来扩展TvChannelDetails。从TvChannelDetails 245产生。
公共操作:
getDataSchedule():org.atsc.abstractSI.data.DataSchedule
这种方法返回数据事件时间表。
2.6.2 DataSchedule 720
这个接口表示对于给定的、以时间排序的TvChannel的一群数据事件。
公共操作:
addListener(listener:org.atsc.abstractSI.util.SIChangeListener):void
登记SIChangeListener 815,用于与这个时间表上DataEvents 730的变化有关的事件。当这个时间表上任何DataEvent 730变化时,将DataChangeEvent 840输出给指定的收听者。
RemoveListener(listener:org.atsc.abstractSI.util.SIChangeListener):void
撤销SIChangeListener的登记。
RetrieveEvent(when:java.util.Date,listener:org.atsc.abstractSI.util.SIRetrievalListener):org.atsc.abstractSI.data.DataEvent
返回对于规定时间的数据事件。返回包含规定时间的数据事件。规定的时间落在数据事件的开始时间和开始时间加上事件的持续时间之间。
当规定的时间不落在任何已知的数据事件内时,返回空。
RetrieveEvents(startOfInterval:java.util.Date,EndOfInterval:java.util.Date,listener:org.atsc.abstractSI.util.SIRetrievalListener):org.atsc.abstractSI.data.DataEvent[]
对于规定的时间间隔,返回这个频道上所有已知的数据事件。
RetrieveEvent(locator:org.davic.net.Locator,listener:org.atsc.abstractSI.util.SIRetrievalListener):DataEvent
这种方法检索匹配于定位器的数据事件。该事件必须是这个时间表的一部分。
2.6.3 DataEvent 730
这个对象表示对于特别的时间间隔与TvChannel 225有关的数据事件。在ATSC中,信息在DIT表格中输出。DIT是PSIP的扩展。它类似于EIT,但它宣布数据事件(不是视听事件),并且在ATSCT3/S13数据广播说明中定义。
从SIUpdate 830产生。
公共操作:
getLocator():org.davic.net.Locator
返回表示这个数据事件的定位器。
getStartTime():java.util.Date
返回这个数据事件的开始时间。
getEndTime():java.util.Date
返回这个数据事件的结束时间。
getDuration():long
立刻返回这个数据事件的持续时间。
getTitle():java.lang.String
返回数据事件标题。
RetrieveDescription(listener:org.atsc.abstractSI.util.SIRetrievalListener):java.lang.String
返回该事件的文本描述。这个信息来自ATSC中的ETT或DVB中的扩展事件描述符。当没有ETT可用于这个事件时,将返回空串。
retrieveContentAdvisory(listener:org.atsc.abstractSI.util.SIRetrievalListener):org.atsc.abstractSI.guide.ContentRatingAdvisory
返回每个费率范围的Content Advisory信息的列表。
getTvChannel():org.atsc.abstractSI.navigation.TvCharmel
返回这个数据事件相关的TvChannel。在DVB中,通过服务ID,事件和TvChannel相关;在ATSC中,通过源ID,它们相关。
2.7实用信息包(图8)
这个信息包定义将支持功能提供给SI信息包的类和接口。这包括通知方法(事件和收听者),用于创建SIManager对象的Factory方法,以及所有异常。
如面向对象编程的领域所知道的,Factory方法是解决问题的方法和结构。
2.7.1 SIFactory 805
这个类提供一种创建实现SIManager接口240的对象的方法。这个类在Factory方法设计模式之后建模。
公共操作:
SIFactory():
构造器
getSIManager():SIManager
返回SIManager接口的实现,或者如果不能利用,则返回空。
2.7.2 SIChangeListener 815
应该通过使用应用类来收听SI对象中的变化来实现SIChangeListener接口。它提供一种通过收听SI对象的回答信号来通知事件的方法。
公共操作:
SIChange(event:SIChangeEvent):void
当现有的SI对象改变时调用这种方法,检测新的SI对象或现有的SI对象不再可用。
2.7.3 SIChangeEvent 834
将SIChangeEvent对象834发送到SIChangeListeners 815,以通知新的事件。
由EventObject 820产生。
公共操作:
getType():byte
返回事件类型(在SIChangeEventType接口中定义可能的值)。
2.7.4 SIChangeEventType
这个接口定义相应于SIChangeEvent类型值的常数。
公共属性:
OBJECT_CHANGED:byte=1
现有的对象已经改变。
NEW_OBJECT:byte=2
检测新的对象。
OBJECT_UNKNOWN:byte=3
对象不再可利用。
2.7.5 TvChannelChangeEvent 835
这个事件输出关于特定的TvChannel的信息。由SIChangeEvent834产生。
公共操作:
getChangedChannel():Locator
这种方法用于确定哪个频道已经改变。
2.7.6 ProgramChangeEvent 845
这个事件输出关于特定的ProgramEvent的信息。
由SIChangeEvent 834产生。
公共操作:
getChangedProgram():Locator
这种方法用于确定哪个ProgramEvent已经改变。
2.7.7 SIInfoChangeEvent 850
这个事件输出信息,所输出的信息通常经过SI Manager获得,是有关特定高级别SI对象的信息。
公共操作:
getSIObjectType():short
这种方法用于确定哪种类型的SI对象已经改变。这可以是TransportStreamInfo 660、NetworkInformation 610、BouquetInformation630、RatingRegion 330等。
getSIObjectID():int
这种方法返回改变的SI对象的ID,该对象的类型由getSIObjectType方法识别。例如,如果SIObjectType是TransportStreamInfo,则SIObjectID是TS ID。
2.7.8 SIUpdate 830
这个接口能够与任何SI实体相关。它提供关于何时数据被最后更新的信息。SI数据库可以具有新的有关所有的收听者得到通知的信息。
公共操作:
getUpdateTime():java.util.Date
返回包含在实现这个接口的对象中的信息被最后更新的时间。
返回值—最后更新的日期。
2.7.9 SIDelayedDeliveryException 875
当请求的数据不能立刻利用时(例如没有高速缓冲存储),发出这种异常,并且给出异步输出数据的信号。
由Exception 860产生。
公共操作:
getRequest():org.atsc.abstractSI.util.SIRequest
这种方法返回表示异步请求的对象。它能够用于取消请求,并且使它与输出请求数据的事件相关。
2.7.10 SIRetrievalListener 870
通过应用类接收关于整个异步SI请求的事件来实现这个接口。
一般地,收听者将它自己登记在可能异步调用的时间(作为参数中的一个)。收听者仅登记一个调用,并且当请求满足时自动地撤销登记。
公共操作:
postRetrievalEvent(event:org.atsc.abstractSI.util.SIRetrievalEvent):void
这种方法用于将异步SI检索事件输出给收听者。
2.7.11.SIRetrievalEvent 865
这个事件通过任何“retrieveXXX”调用异步输出请求的数据。以词“retrieve”开始的所有方法落入这个范畴,例如方框225的retrieveDetails()、块320的retrievePresentEvent()等。
提供数据本身或者提供故障的指示。它也提供通过使用请求序列号将这个事件与最初的请求相关的方法。
仅当“retrieveXXX”调用发出SIDelayedDelivery异常875时,输出这个事件,它包含具有请求序列号的SIRequest对象886。
由EventObject 820产生。
公共操作:
getSequenceNumber():int
这种方法返回分配给最初异步检索请求的序列号,这个事件响应于该请求。
2.7.12 SIRequest 886
这个对象便于异步检索SI数据。这个对象可以用于取消等待状态的请求,并且使该请求与输出请求数据的事件相关。
公共操作:
cancelRequest():boolean
这种方法将取消等待状态的请求。
返回表示这个请求成功取消的值“True”。“False”表示请求已经输出,并且不能取消。
getSequenceNumber():int
这种方法返回与这个异步检索调用有关的号码。它能够用于将该子序列事件与这个请求配对。
2.7.13 SIRetrievalSuccessEvent 884
这个事件发出请求的数据已经检索并且被输出的信号。
由SIRetrievalEvent 865产生。
2.7.14 SIRetrievalSingleSuccessEvent 892
该事件输出请求的单个对象。由SIRetrievalSuccessEvent 884产生。
公共操作:
getResult():java.lang.Object
这种方法用于获得这个事件输出的数据。
特定类型(类)的返回对象可以从最初调用的上下文预计:它是通过“retrieveXXX”方法同步返回的相同的对象。
2.7.15 SIRetrievalMultipleSuccessEvent 894
该事件提供一系列请求的对象。由SIRetrievalSuccessEvent 884产生。
公共操作:
getResult():java.lang.Object[]
这种方法用于获得这个事件输出的数据。
特定类型(类)的返回对象可以从最初调用的上下文预计:它是通过“retrieveXXX”方法同步返回的相同的对象。
2.7.16 SIRetrievalFailEvent 882
这个事件发出输出请求的数据失败的信号。这个故障可能的原因可以是数据不在TS中或资源不能用于获得该数据。
由SIRetrievalEvent 865产生。
2.7.17 SIException 880
这是当特别的SI相关的调用包含无效参数时能够发出的一般异常。由Exception 860产生。
2.7.18 SystemInformationType 810
这个接口提供利用特定的SI数据库(例如,DVB SI数据库、ATSC PSIP数据库等)
公共属性:
ATSC_PSIP:short=l
DVB_SI:short=2
SCTE_SI:short=3
公共操作:
getSystemInformationType():short
用于确定输出这个元素的特定SI格式(例如,ATSC PSIP,DVBSI等)。
2.7.19 DataChangeEvent 840
这个事件输出关于特定的数据事件的信息。由SIChangeEvent834产生。
公共操作:
getChangeData():org.davic.net.Locator
2.7.20 SINotAvailableException 890
该异常表示请求的数据不能用于特定的情况。
由SIException 880产生。
2.7.21 DeliverySystemType 807
这个接口提供有关输出系统类型(例如,有线电视、卫星等)的信息,这些输出系统是实现这个接口的特定对象的系统。
公共属性:
CABLE_DELIVERY_SYSTEM:short=l
SATELLITE_DELIVERY_SYSTEM:short=2
TERRESTRIAL_DELIVERY_SYSTEM:short=3
因此,能够看到本发明提供的API允许在数字电视终端的应用程序从数字TS恢复SI,而不用考虑特定的格式类型。API提取SI的相关部分以终端可以使用的格式提供它。
该系统适用于例如包括MPEG PSI、DVB SI和ATSC PSIP以及专用SI的SI格式。
虽然结合各种具体的实施例描述了本发明,但是本领域的普通技术人员应该理解,可以进行许多修正和改变,而不背离如书所述的精神和范围。
例如,尽管这里讨论了不同的语法元素,但是,要注意它们只是例子而已,可以使用任何语法。
另外,本发明适用于实际上任何类型的网络,包括有线电视或卫星电视广播通讯网络、局域网(LAN)、城域网(MAN)、广域网(WAN)、互联网络、企业网和因特网、或它们的组合。
另外,已知的计算机硬件、固件和/或软件技术可以用于实现本发明。