信息处理器的制作方法

文档序号:7580176阅读:316来源:国知局
专利名称:信息处理器的制作方法
技术领域
本发明涉及信息处理器,更特别地,涉及管理格式引擎的操作的信息处理器,所述格式引擎执行以特定格式如Java、HTML等等描述的应用程序。
背景技术
近年来,在如数字电视、移动信息终端和蜂窝电话这样的信息处理器中,大量执行着以特定格式如Java程序、HTML内容等等描述的应用程序。用于执行这样一个应用程序或再现数据的软件称为格式引擎。例如,格式引擎是执行上述Java程序的Java中间件或显示HTML内容的浏览器。除了这样的格式引擎之外,如今在个人计算机上执行的再现PDF数据、音乐数据等等的格式引擎也将在上述数字电视中执行。
总的来说,一个格式引擎是存储在如上述的数字电视这样的信息处理器中的。图94为示意图,展示现有的数字广播接收器的一个例子结构。该数字广播接收器用于执行和管理包括在广播数据中的应用程序(Java程序)。在图94中,数字广播接收器9402与电视监视器9401连接。数字广播接收器9402包括显示管理器9411、应用程序管理器9412、规则9414,及信号监视器9413。
在图94中,数字广播接收器9402中的信号监视器9413接收广播数据流。信号监视器9413确定广播数据流中是否包括应用程序,并将指示是否存在应用程序的信号数据输出到应用程序管理器9412。基于输入的信号数据,应用程序管理器9412确定广播数据流中是否包括应用程序。当广播数据流中包括应用程序时,应用程序管理器9412读取并执行该应用程序。当执行应用程序时,向显示管理器9411提供要在电视监视器上显示的显示信息,将其作为显示上下文。显示管理器9411向电视监视器9401提供适当的显示信息。应用程序管理器9412根据规则9414工作,并将每个应用程序的状态转换为加载状态、暂停状态、活动状态和已删除状态之一。例如,规则为“同时只设置一个应用程序为活动状态”或“只允许同时显示一个应用程序”。通过使用这样的规则,数字广播接收器9402可以管理多个应用程序。
对信息处理器如数字电视、移动信息终端、蜂窝电话等等包括多个格式引擎的情况,已对管理多个格式引擎的技术做出了研究。和CPU相比,信息处理器如数字电视、移动信息终端、蜂窝电话等等具有可用于执行格式引擎的有限资源。资源是由格式引擎使用的硬件,例如,存储器。例如,在存储器之外,数字电视拥有的资源还包括接收广播波并解码数据的调谐器、解码广播波中包含的视频或音频数据的解码器、连接数字电视到因特网的网络接口等等。为了执行格式引擎,需要获取要执行的格式引擎可用的资源。因此,在具有上述有限资源的信息处理器中,管理每个格式引擎的执行。例如,某些类型的数字电视在要执行的格式引擎中进行切换。下面,将对在现有的数字电视中管理多个格式引擎的技术进行说明。
图95为示意图,展示在现有的数字电视中使用的中间件切换设备的一个例子结构。此中间件切换设备在多个要执行的中间件(格式引擎)进行切换。在图95中,中间件切换设备包括中间件确定部9501、中间件读取部9502、中间件执行部9503,及中间件存储部9504。
在图95中,中间件存储部9504存储第一至第n个中间件。中间件确定部9501在第一个至第n个中间件中确定要执行的中间件。中间件读取部9502从中间件存储部9504中读取由中间件确定部9501确定的中间件。中间件执行部9503执行由中间件读取部9502读取的中间件。通过上述结构,可以切换执行第一至第n个中间件。因此,图95中所示的设备允许多个中间件在一个数字电视中并存。

发明内容
然而,对图95中所示的结构来说,很难处理中间件的添加或更改。下面,将对此进行详细说明。
在图95中所示的设备添加新的中间件的情况将在此作为例子进行说明。总的来说,对每个单独的格式引擎定义唯一的状态。因此,格式引擎的管理方(中间件读取部9502和中间件执行部9503)需要掌握对每个格式引擎不同的状态。换句话说,当添加新的中间件时,应更改中间件读取部9502和中间件执行部9503才能够理解该中间件的状态。鉴于此,当添加新的中间件时,将新的中间件添加到中间件存储部9504,且同时应更改中间件读取部9502和中间件执行部9503来适应新的中间件。因此,在添加或更改中间件同时设计图95所示的中间件管理设备时,开发者得更改中间件读取部9502和中间件执行部9503。此更改操作对开发者来说负担很重。
因此,本发明的一个目标是提供能够容易地处理格式引擎的添加或更改的信息处理器。
为了实现上述目标,本发明具有下面的各个方面。本发明涉及存储多个格式引擎的信息处理器,其中每个格式引擎用于执行以不同格式描述的数据。信息处理器包括预先定义公共状态,并管理每个格式引擎的操作的格式引擎管理装置,所述公共状态以对所有的格式引擎相同的表示法定义每个格式引擎的操作状态;及对应于每个格式引擎提供的操作控制装置,所述操作控制装置预先定义公共状态和个别状态之间的对应关系,并控制格式引擎的操作,使得每个格式引擎处于任意的个别状态,所述个别状态以对每个格式引擎不同的表示法定义每个格式引擎的操作状态。为了将格式引擎改变为预定的公共状态,格式引擎管理装置将包含指示预定公共状态的公共状态信息的消息发送到对应于该格式引擎提供的操作控制装置。当从格式引擎管理装置发送消息时,每个操作控制装置都控制该格式引擎,使得该格式引擎处于与包含在该消息中的公共状态信息指示的公共状态相对应的个别状态。
信息处理器还可以包括对应于每个格式引擎提供的表存储装置,所述表存储装置存储包括每个格式引擎的个别状态与对应于该个别状态的公共状态的集合的表。在此情况,每个操作控制装置通过参考该表从公共状态确定其个别状态。
信息处理器还可以包括对应于每个格式引擎提供的个别状态获取装置,所述个别状态获取装置获取每个格式引擎的个别状态,并发送指示与获取的个别状态相对应的公共状态的公共状态信息到格式引擎管理装置。在此情况,格式引擎管理装置基于由个别状态获取装置输出的公共状态信息指示的公共状态管理每个格式引擎的操作。
信息处理器还可以包括由格式引擎在执行期间使用且不能同时由多个格式引擎使用的最小资源。在此情况,当从格式引擎获取的个别状态展示出使用最小资源的操作状态时,个别状态获取装置将指示预定状态的公共状态信息作为该格式引擎的公共状态信息输出到格式引擎管理装置。当从格式引擎获取的个别状态展示出未使用最小资源的操作状态时,个别状态获取装置将指示预定状态之外的状态的公共状态信息作为该格式引擎的公共状态信息输出到格式引擎管理装置。格式引擎管理装置管理每个格式引擎的操作,使得只有一个格式引擎的公共状态信息指示预定状态。
格式引擎管理装置可以包括激活接收装置、公共状态获取装置、操作停止装置,及激活装置。激活接收装置接收激活格式引擎的激活请求。公共状态获取装置通过状态获取装置获取每个格式引擎的公共状态信息来响应激活接收装置接收到激活请求。当由公共状态获取装置获取的格式引擎的公共状态信息指示在执行期间的状态时,操作停止装置将停止格式引擎操作的消息发送到对应于该格式引擎提供的操作控制装置。在操作停止装置停止格式引擎的操作之后,激活装置将激活对应于激活请求的格式引擎的消息发送到对应于该格式引擎提供的操作控制装置。
信息处理器还可以包括最小资源、资源控制装置,及优先级信息存储装置。最小资源是由格式引擎在执行期间使用且不能同时由多个格式引擎使用的资源。资源控制装置允许格式引擎使用资源来响应来自格式引擎的请求。优先级信息存储装置存储优先级信息,优先级信息指示每个格式引擎对于最小资源使用的相对优先级。当存在来自多个格式引擎的使用最小资源的重叠请求时,允许确定装置基于优先级信息确定允许其使用最小资源的格式引擎。在此情况,当存在来自多个格式引擎的使用最小资源的重叠请求时,资源控制装置只允许由允许确定装置确定的格式引擎使用最小资源,而当不存在来自多个格式引擎的使用最小资源的重叠请求时,资源控制装置允许做出请求的格式引擎使用最小资源。
可以提供多个最小资源。在此情况,对应于多个最小资源提供多个资源控制装置。
可以用存储格式引擎的信息处理器的计算机可执行程序的形式提供本发明,其中每个格式引擎执行以不同格式描述的数据。
根据本发明,格式引擎管理装置用公共状态管理每个格式引擎的操作状态。因此,即使添加或更改了格式引擎,也不需要显著地改变格式引擎管理装置的结构。因此,可以容易地处理格式引擎的添加或更改。通过包含公共状态信息的消息来执行从格式引擎管理部分到操作控制部分的通信。因此,格式引擎管理部分可以管理每个格式引擎的操作状态,而不需考虑格式引擎之间的区别,并因此可以容易地同时控制多个格式引擎。
通过信息处理器进一步包括表存储装置,可以容易地执行个别状态和公共状态之间的转换。
通过信息处理器进一步包括个别状态获取装置,格式引擎管理装置可以容易地获取每个格式引擎的操作状态。
通过格式引擎管理装置管理每个格式引擎的操作状态,使得只有一个格式引擎的公共状态信息指示预定状态,可以获得下面的效果。格式引擎管理装置可以管理格式引擎的操作,使得不存在对最小资源的争用。换句话说,在不存在对最小资源的争用的范围内,格式引擎管理装置可以同时执行多个格式引擎。
在格式引擎管理装置包括激活接收装置、公共状态获取装置、操作停止装置和激活装置的情况,可以获得下面的效果。格式引擎管理装置可以肯定地激活对应于激活请求的格式引擎,并可以在不存在对最小资源的争用的范围内让活动的格式引擎继续执行。
在信息处理器包括最小资源、资源控制装置和优先级信息存储装置的情况,可以获得下面的效果。格式引擎管理装置可以管理格式引擎的操作,使得不存在对最小资源的争用。换句话说,在不存在对最小资源的争用的范围内,格式引擎管理装置可以同时执行多个格式引擎。在此情况,多个不同的格式引擎可以同时使用多个不同的最小资源。
在提供多个最小资源的情况,每个格式引擎可以同时使用不同的最小资源。


图1为框图,展示作为本实施形态的信息处理器例子的数字电视的硬件结构;图2为视图,展示图1中所示数字电视100的外观;图3为视图,展示构成输入部111的例子面板;图4为框图,展示图1中所示数字电视用于执行第一个操作例子的功能结构;图5展示存储在表存储部44中的表的例子;图6为框图,展示图1中所示数字电视用于执行第二个操作例子的功能结构;图7为视图,更具体地展示信息处理器的功能结构;图8展示在显示107上显示的格式引擎列表的例子;
图9展示在显示107上显示的格式引擎列表的例子;图10展示在显示107上显示的格式引擎列表的例子;图11展示在显示107上显示的可执行应用程序列表的例子;图12展示在显示107上显示的可执行应用程序列表的例子;图13展示另一个在显示107上显示的可执行应用程序列表的例子;图14展示另一个在显示107上显示的可执行应用程序列表的例子;图15展示在显示107上显示的可执行HTML数据列表的例子;图16展示在显示107上显示的可执行HTML数据列表的例子;图17展示例子消息格式;图18展示子程序ID表的例子;图19展示存储在消息ID字段173中的消息ID的表的例子;图20为示意图,展示“格式引擎状态响应”消息中的数据字段175的格式的例子;图21展示指示格式引擎的操作状态和操作状态ID之间的对应关系的表的例子;图22为示意图,展示“应用程序/数据列表响应”消息中的数据字段175的格式的例子;图23为示意图,展示“执行应用程序/数据”消息、“停止应用程序/数据”消息及“暂停应用程序/数据”消息的数据字段175的格式的例子;图24为示意图,展示“格式引擎状态请求”消息的具体例子;图25为示意图,展示“格式引擎状态请求”消息的具体例子;图26为示意图,展示“格式引擎状态请求”消息的具体例子;图27为示意图,展示“格式引擎获取响应”消息的具体例子;图28为示意图,展示“格式引擎获取响应”消息的具体例子;图29为示意图,展示“格式引擎获取响应”消息的具体例子;图30为示意图,展示“应用程序/数据列表请求”消息的具体例子;图31为示意图,展示“应用程序/数据获取响应”消息的具体例子;图32展示由状态管理部732保存的信息的例子;图33展示由状态管理部732保存的信息的例子;图34展示由状态管理部732保存的信息的例子;图35为示意图,展示“格式引擎状态改变”消息的例子;
图36为示意图,展示由状态管理部732发送的消息的例子;图37为示意图,展示由邮件程序760发送的消息的例子;图38展示图32中的状态改变之后的状态;图39为框图,展示资源管理部733的内部结构;图40展示存储在进程存储部3901中的信息的例子;图41展示存储在优先级存储部3902中的信息的例子;图42展示存储在最近激活存储部3903中的信息的例子;图43展示存储在资源ID存储部3904中的信息的例子;图44展示以C语言描述的资源ID的定义的例子,其中C语言为编程语言;图45为框图,展示Java中间件740的结构;图46示意性地展示AIT的主要部分;图47为状态转换图,展示Java应用程序的四种操作状态及操作状态之间的转换;图48示意性地展示AIT的主要部分;图49展示指示可由Java中间件740执行的所有Java应用程序的操作状态与Java中间件740的操作状态之间的对应关系的转换表的例子;图50展示将每个Java应用程序的操作状态转换为公共状态的转换表的例子;图51为示意图,展示由第一个转换部741发送的消息的具体例子;图52为框图,展示HTML浏览器750的结构;图53展示DVB-HTML数据的例子;图54展示确定VB-HTML布局的样式表的例子;图55为示意图,展示DOM树的例子;图56展示在画出图55中所示的DOM树时的显示107;图57展示DVB-HTML数据的例子;图58展示DVB-HTML数据的例子;图59为示意图,展示由解析器5201对图58中所示的DVB-HTML数据构建的DOM树的一部分;图60展示通过布局器5202和画出部5203实现的显示的例子;图61为示意图,展示改变DOM树造成的结果的例子;图62展示改变显示造成的结果的例子;
图63示意性地展示AIT的主要部分;图64为状态转换图,展示DVB-HTML数据的五种操作状态及这些状态之间的转换;图65示意性地展示AIT的主要部分;图66展示具有在其中定义的到另一个DVB-HTML数据的链接的DVB-HTML数据的例子;图67展示图66中所示的DVB-HTML数据的显示的例子;图68展示DVB-HTML数据的显示的例子;图69展示指示可由HTML浏览器750显示的所有HTML数据的状态与HTML浏览器750的操作状态之间的对应关系的转换表的例子;图70展示将每个HTML数据的状态转换为公共状态的转换表的例子;图71为示意图,展示由第二个转换部751发送的消息的具体例子;图72展示指示邮件程序760的状态与组合部730定义的公共状态之间的对应关系的转换表的例子;图73为示意图,展示由第三个转换部761产生的“应用程序/数据列表响应”消息的具体例子;图74为流程图,展示在数据电视中执行第一个操作例子的处理流程;图75为流程图,展示由通信部731执行的发送消息的处理流程;图76为流程图,展示在第一个转换部741接收“格式引擎状态请求”消息时的处理流程;图77为流程图,展示在第三个转换部771接收“格式引擎状态请求”消息时的处理流程;图78为流程图,展示在第一个转换部741接收“停止格式引擎”消息时的处理流程;图79为流程图,展示在第二个转换部751接收“停止格式引擎”消息时的处理流程;图80为流程图,展示在第三个转换部761接收“停止格式引擎”消息时的处理流程;图81为流程图,展示在第一个转换部741接收“执行格式引擎”消息时的处理流程;图82为流程图,展示在第一个转换部741接收“暂停格式引擎”消息时的处理流程;图83为流程图,展示在数字电视中执行第二个操作例子的处理流程;图84为流程图,展示已接收到资源剥夺通知的转换部的处理流程;图85为流程图,展示在第一个转换部741从应用程序管理器4503接收到Java应用程序状态改变的通知时的处理流程;图86为流程图,展示在第一个转换部741接收“应用程序/数据列表请求”消息时的处理流程;图87为流程图,展示在第一个转换部741接收“执行应用程序/数据”消息时的处理流程;图88为流程图,展示在第一个转换部741接收“停止应用程序/数据”消息时的处理流程;图89为流程图,展示在第一个转换部741接收“暂停应用程序/数据”消息时的处理流程;图90为流程图,展示在第三个转换部761从邮件程序760接收邮件程序760已终止的通知时的处理流程;图91为流程图,展示组合部730的状态管理部732在组合部730接收“格式引擎状态改变”消息时的处理流程;图92为流程图,展示组合部730的状态管理部732在组合部730接收“应用程序/数据列表改变”消息时的处理流程;图93展示即使在执行一个格式引擎也不影响其他格式引擎的状态的组合;图94展示现有的数字广播接收器的例子结构;及图95展示在现有的数字电视中使用的中间件切换设备的结构。
具体实施例方式
下面,参考附图对本发明的信息处理器的实施形态进行说明。在下面的实施形态中,使用数字电视作为信息处理器的例子,但本发明可应用于蜂窝电话、移动信息终端等等。
(硬件结构)首先,参考图1至图3,对信息处理器的硬件结构进行说明。图1为框图,展示作为本实施形态的信息处理器例子的数字电视的硬件结构。在图1中,数字电视100包括调谐器101、解扰器102、TS解码器103、音频解码器104、扬声器105、视频解码器106、显示107、二级存储部109、一级存储部109、ROM110、输入部111、网络接口112及CPU 113。
图2为视图,展示图1中所示的数字电视100的外观。将图1中所示的数字电视100作为例如图2中所示的平板电视来实现。如图2所示,数字电视100在图1中所示的结构之外还包括外壳201和信号输入端子204。显示202对应于图1中所示的显示107。前端面板部203对应于图1中的输入部111。前端面板部203包括多个按钮。前端面板部203的详细结构如后面说明的图3所示。信号输入端子204是从陆地广播站、卫星天线,或有线电视站系统输入广播信号到数字电视100的插头。信号输入端子204连接到图1中所示的调谐器101。数字电视100具有连接数字电视100到因特网的网络插头。网络插头连接到网络接口112。
接下来,对数字电视100的基本操作进行说明。调谐器101接收通过信号输入端子204发送的广播信号。调谐器101根据指示由CPU 113指定的频率的调谐信息解调制输入的广播信号。将解调制后的广播信号传递给解扰器102。解扰器102解码解调制的广播信号。解码所需的密钥由CPU 113给出。将通过解码获得的MPEG2传输流输出到TS解码器103。
TS解码器103过滤从解扰器102接收的MPEG2传输流,并传递所需数据到音频解码器104、视频解码器106或CPU 113。MPEG2传输流在MPEG标准“ISO/IEC13818-1”中有详细说明,在此不对其进行详细说明。MPEG2传输流包括多个固定长度的包,每个包都存储视频数据、音频数据、字幕数据、应用程序等等。每个包都具有包ID。TS解码器103通过CPU 113获取处理一组包ID且具有该包ID的包的输出目的地的指令。包的输出目的地是“音频解码器104”、“视频解码器106”和“CPU 113”之一。例如,当CPU 113将指定包ID为“123”的包的输出目的地是“视频解码器106”的指令输出到TS解码器103时,TS解码器103从MPEG2传输流中抽取包ID为“123”的包,并将该包传递给视频解码器106。TS解码器可以并行执行多种类型的过滤处理。
音频解码器104连接包含在从TS解码器103传递的每个包中的音频数据,执行数模转换,并输出结果信号到扬声器105。扬声器105将音频解码器104输出的信号作为声音输出。声音解码器106连接包含在从TS解码器103传递的每个包中的视频数据,执行数模转换,并输出结果视频信号到显示107。显示107通常包括CRT、液晶显示设备等等,并输出从视频解码器106输出的视频信号。显示107有时也显示由CPU 113控制消息等等。
二级存储部108通常包括闪存、硬盘等等,并存储由CPU 133控制的数据和程序。存储的数据和程序由CPU 113引用。即使数字电视100处于关闭状态,仍然保持对已存储的数据和程序的存储。一级存储部109通常包括RAM等等,并临时存储由CPU 113控制的数据和程序。存储的数据和程序由CPU 113引用。当关闭数字电视100时,删除这些存储的数据和程序。ROM 110为不可重写的存储设备,并通常包括ROM、CD-ROM、DVD等等。ROM存储由CPU 113执行程序。
输入部111通常包括前端面板或遥控器,并接收来自用户的输入。图3为示意图,展示构成输入部111的前端面板的例子。在图3中,前端面板300包括七个按钮,即,光标向上按钮301、光标向下按钮302、光标向左按钮303、光标向右按钮304、确定按钮305、取消按钮306、菜单按钮307、C+按钮308和C-按钮309。当用户按下这些按钮中的一个时,向CPU 113通知指示按下的按钮的标识符。
网络接口112通常包括调制解调器、以太网连接器等等,并向数字电视100提供使数字电视与网络如因特网、内联网等等连接的功能。根据来自CPU 113的指令,在网络接口112与连接到网络的其他信息设备之间进行数据的发送和接收。例如,当网络接口112包含调制解调器时,网络接口112从CPU 113接收连接目的地的电话号码或通信参数信息,并和网络建立通信路径。
CPU 113执行存储在ROM 110中的程序。根据程序的指令,CPU 113控制调谐器101、解扰器102、TS解码器103、显示107、二级存储部、一级存储部109及ROM 110的操作。后面将详细说明CPU 113的操作。
(操作概况)下面,对信息处理器的详细结构和操作进行说明。在此之前,参考图4至图6说明实现本发明目标的信息处理器的操作概况。在此,将两个操作例子,即,第一个操作例子和第二个操作例子作为信息处理器的操作例子进行说明。
(第一个操作例子)首先,参考图4和图5,说明第一个操作例子的概况。图4为框图,展示图1中所示数字电视用于执行第一个操作例子的功能结构。在图4中,数字电视包括格式引擎管理部41、第一个转换部42、第二个转换部43、第一个表存储部44、第一个表存储部44、第二个表存储部49、第一个格式引擎45、第二个格式引擎46、资源控制部47及资源48。在图4中,资源48之外的元素由图1中所示的CPU 113使用一级存储部109和二级存储部108执行存储在ROM 110中的程序来实现。资源48是可由格式引擎使用的硬件。例如,资源48是存储器(一级存储部109或二级存储部108)、调谐器101、TS解码器103、网络接口112等等。对图4来说,为了简便,所述的数字电视100具有两个格式引擎,但实际上格式引擎的数量可以不止两个。
格式引擎45和46的每一个都可以处于多种类型的操作状态中的任何一种。具体来说,格式引擎45和46的每一个都可以处于“已执行状态”,“未执行状态”等等。下面,在参考图4至图6对信息处理器的操作概括的说明中,第一个格式引擎45可以处于表示为“操作中”、“停止”、和“暂停”的三种状态中的任何一种。第二个格式引擎46可以处于“活动”或“不活动”两种状态之一。对每个单独的格式引擎定义的操作状态称为个别状态。即,对第一个格式引擎45,定义包括表示为“操作中”、“停止”和“暂停”的三种类型的操作状态的个别状态。对第二个格式引擎46,定义包括“活动”和“非活动”两种类型的操作状态的个别状态。总的来说,每个格式引擎可以处于各种类型的操作状态中的任何一种。
格式引擎管理部41管理操作格式引擎45和46中的每一个。具体来说,例如,格式引擎管理部41控制格式引擎45和46中的每一个活动或停止。在格式引擎管理部41中,将每个格式引擎可以处于的操作状态预先定义为公共状态。公共状态是概念上通过对所有格式引擎相同的表示法定义的格式引擎操作状态。在图4中,在格式引擎管理部41中,定义包括表示为“在执行期间”和“已终止”两种类型的操作状态的公共状态。因此,公共状态可以处于与对格式引擎45和46中的每一个定义的操作状态(即,个别状态)不同的表示法。包括在公共状态中的操作状态的类型数量不一定是两种。可以将格式引擎管理部41管理格式引擎所需类型和数量的操作状态定义为公共状态。
格式引擎管理部41也可以根据例如来自用户的指令对格式引擎做出操作指令。在此,格式引擎管理部41做出使用公共状态信息的指令。公共状态信息是表示具有公共状态的格式引擎的操作状态的信息。在图4中,例如,为了做出指令使得第一个格式引擎45处于预定的操作状态,格式引擎管理部41将指示预定操作状态的公共状态信息输出到第一个转换部42。类似地,为了对第二个格式引擎46做出操作指令,格式引擎管理部41输出公共状态信息到第二个转换部43。
格式引擎管理部41接收从转换部42和42中的一个输出的公共状态信息,并因此通过公共状态的表示法掌握格式引擎45和46中每一个的操作状态。格式引擎管理部41可以使用以此方式掌握的公共状态管理格式引擎45和46中的每一个的操作。
第一个转换部42基于从格式引擎管理部41输出的公共状态信息控制第一个格式引擎45的操作。具体来说,第一个转换部42预先定义格式引擎管理部41中定义的公共状态与对第一个格式引擎45定义的个别状态之间的对应关系。当从格式引擎管理部41输出公共状态信息时,第一个转换部42基于该对应关系指定对应于由公共状态信息指示的公共状态的个别状态。然后第一个转换部42控制第一个格式引擎45的操作,使得第一个格式引擎45处于指定的个别状态。
第一个转换部42获取第一个格式引擎45的操作状态(以个别状态表示)并用以公共状态表示的形式向格式引擎管理部41通知获取的操作状态。即,第一个转换部42将指示从第一个格式引擎45获取的操作状态的公共状态信息输出到格式引擎管理部41。同样为了将公共状态信息输出到格式引擎管理部41,使用上述公共状态和个别状态之间的对应关系。具体来说,当从第一个格式引擎45获取个别状态时,第一个转换部42基于上述对应关系指定对应于获取的个别状态的公共状态。然后第一个转换部42将指示指定公共状态的公共状态信息输出到格式引擎管理部41。
第二个转换部43执行本质上和第一个转换部42相同的处理。即,第二个转换部43基于从格式引擎管理部41输出的公共状态信息控制第二个格式引擎46的操作。第二个转换部43也获取第二个格式引擎46的操作状态(以个别状态表示)并用以公共状态表示的形式向格式引擎管理部41通知获取的操作状态。以本质上和第一个转换部42中的操作相同的方式执行这样的操作。
第一个表存储部44存储相互关联格式引擎管理部41中定义的公共状态和对第一个格式引擎45定义的个别状态的表。第二个表存储部49存储相互关联格式引擎管理部41中定义的公共状态和对第二个格式引擎46定义的个别状态的表。图5展示存储在表存储部44和49中的每一个的表的例子。图5(a)展示存储在表存储部49中的表的例子。在图5(a)中,公共状态“在执行期间”与个别状态“操作中”关联。公共状态“已终止”与个别状态“停止”和“暂停”关联。在图5(b)中,公共状态“在执行期间”与个别状态“活动”关联。公共状态“已终止”与个别状态“不活动”关联。转换部42和43的每一个都参考图5中所示的表来指定对应于由格式引擎管理部41输出的公共状态信息指示的公共状态的个别状态。转换部42和42的每一个都参考图5中所示的表来指定对应于从相应的格式引擎45或46获取的个别状态的公共状态。
例如,当第一个转换部45获得指示“在执行期间”的公共状态信息时,第一个转换部45参考图5(a)中所示的表来指定个别状态“操作中”。然后第一个转换部45控制第一个格式引擎45,使得第一个格式引擎45处于指定的操作状态“操作中”。例如,当第二个转换部43从第二个格式引擎46获得指示“不活动”的个别状态时,第二个转换部43参考图5(b)中所示的表来指定公共状态“已终止”。然后第二个转换部43将这样指定的指示“已终止”的公共状态信息输出到格式引擎管理部41。
在图4中,资源控制部47允许格式引擎45和46中的每一个使用资源48来响应来自格式引擎45和46中的每一个的请求。
上述操作本质上和后面描述的第二个操作例子相同。
在此,对资源48是最小资源的情况进行说明。最小资源是由格式引擎在执行期间使用且不能由多个格式引擎同时使用的资源。例如,调谐器101、TS解码器103、网络接口112都是最小资源。最小资源是这样的资源,数字电视100拥有的最小资源数量有限,且多个格式引擎可能同时尝试使用并争用最小资源。例如,调谐器101只可以将数字电视100调谐到一个频段。当多个格式引擎尝试调谐数字电视100到不同的频段时,争用发生。这样的最小资源不能由多个格式引擎同时使用,因此资源控制部47需要防止允许多个格式引擎同时使用最小资源。如果资源控制部47允许多个格式引擎同时使用最小资源,则格式引擎可能不能正常工作。因此,在图4中,为了正常操作格式引擎,采用下面的方法。
在图4中,公共状态和个别状态在表存储部44和49的每一个中存储的表中按如下相互关联。对指示格式引擎使用最小资源的操作状态的个别状态,用公共状态“在执行期间”与其关联。对指示格式引擎不使用最小资源的操作状态的个别状态,用公共状态“已终止”与其关联。在图4中,假设第一个格式引擎45只在个别状态“操作中”使用最小资源,而在其他个别状态中不使用最小资源。同时假设第二个格式引擎46仅在个别状态“活动”中使用最小资源,而在其他个别状态中不使用最小资源。在这样的状态下,在图5中展示上述的表。
除了在表中按上述做出关联,格式引擎管理部41还控制格式引擎45和46中每一个的操作,使得一个格式引擎处于公共状态“在执行期间”。以此方式,格式引擎管理部41可以管理格式引擎45和46中每一个的操作,使得一个格式引擎使用最小资源。存在由格式引擎管理部41使用的各种可能的具体管理方法。在后面的处理例子中说明具体的管理方法。
(第二个操作例子)下面,参考图6,说明第二个操作例子。图6为框图,展示图1中所示数字电视用于执行第二个操作例子的功能结构。在图6中,除了图4中所示的结构,数字电视还包括允许确定部61和优先级信息存储部62。在图6中,和图4中的那些元素相同的元素具有相同的编号。在图6中,允许确定部61和优先级信息存储部62由图1中所示的CPU 113使用一级存储部109和二级存储部108执行存储在ROM 110中的程序来实现。
图4中的操作和图6中的操作之间的区别在于当资源48是最小资源时正常操作格式引擎的方法。其他操作,例如由格式引擎管理部41使用公共状态管理每个格式引擎45和46的操作,及通过每个转换部42和43转换公共状态为个别状态或相反的操作,本质上在图4和图6中是相同的。因此,下面对第二个操作例子中正常地操作格式引擎的方法进行说明。
在第二个操作例子中,不需要在表存储部44和49的每一个中关联公共状态“在执行期间”和指示每个格式引擎使用最小资源的操作状态的个别状态。格式引擎管理部也不需要管理格式引擎45和46中的每一个的操作,使得只有一个格式引擎处于公共状态“在执行期间”。在第二个操作例子中,当资源控制部47接收到使用资源的重叠请求时,基于优先级信息选择可以使用资源的格式引擎。下面对此进行详细说明。
优先级信息存储部62存储优先级信息。优先级信息是资源48为最小资源时指示格式引擎对于资源48的使用的相对优先级的信息。在图6中,优先级信息是指示第一个格式引擎45或第二个格式引擎46哪个具有优先级的信息。
当接收到使用资源48的重叠的请求,即,当多个格式引擎同时请求使用资源48时,资源控制部47将存在重叠请求的通知输出到允许确定部61。
当从资源控制部47接收到存在重叠请求的通知时,允许确定部61基于存储在优先级信息存储部62中的优先级信息确定允许其使用资源48的格式引擎。然后允许确定部6将指示所确定的格式引擎的信息输出到资源控制部47。资源控制部47允许由该信息指示的格式引擎使用资源48。通过上述操作,可以管理格式引擎45和46中每一个的操作,使得一个格式引擎使用最小资源。可以向不允许其使用资源的格式引擎资源通知控制部47或格式引擎管理部41不允许其使用最小资源。
如上所述,根据第一个和第二个操作例子,格式引擎管理部41使用公共状态管理格式引擎45和46中每一个的操作。公共状态独立于对每个格式引擎定义的个别状态,且与要管理的格式引擎无关。因此,即使添加或更改格式引擎,也不需要更改定义为公共状态的内容。即,不需要更改格式引擎管理部41。当添加格式引擎时,只需要添加格式引擎并添加与其对应的转换部。即,只需要添加对添加的格式引擎定义的个别状态与公共状态之间的对应关系。如上所述,根据第一个和第二个操作例子,即使添加或更改格式引擎,也可以容易地处理这样的添加或更改。
在资源48是最小资源的情况下,根据第一个和第二个操作例子,管理每个格式引擎的操作,使得多个格式引擎不能同时使用最小资源。这样可以防止多个格式引擎因为同时使用最小资源而工作异常。
在第一个和第二个操作例子中,存在一个资源48。可以有多个资源。在有多个资源的情况下,需要提供相同数量的资源控制部,使得对一个资源提供一个资源控制部。在第一个操作例子中,即使存在多个资源,公共状态“在执行期间”也如上所述与指示格式引擎使用最小资源的操作状态的个别状态关联。在第一个操作例子中,即使存在多个资源,格式引擎管理部41也能按如上所述管理格式引擎45和46中每一个的操作,使得一个格式引擎处于公共状态“在执行期间”。
在第二个操作例子中,在有多个资源的情况下,对应于最小资源提供的资源控制部执行本质上和上述相同的操作。因此,当存在多个最小资源时,可以防止每个最小资源同时由多个格式引擎使用。在第二个操作例子中,多个不同的格式引擎可以同时使用多个不同的最小资源。即,当格式引擎A使用最小资源A时,另一个格式引擎B可以使用另一个最小资源B。在第一个操作例子中,即使存在多个最小资源,也不能同时使用多个最小资源。相比之下,在第二个操作例子中,可以同时使用多个最小资源,且在这一点上,格式引擎的执行可以比第一个操作例子更加高效。
在第一个和第二个例子中,独立于格式引擎构建转换部45和46,但是也可以集成格式引擎来构建它们。换句话说,格式引擎可以具有转换部的功能。现已完成对第一个和第二个操作概况的说明。
(具体的结构例子)接下来,参考图7至图73,对本发明的信息处理器的具体结构进行说明。下面所述的结构可以实现第一个和第二个操作例子两者。下面所述的结构不仅包括仅由执行第一个操作例子所需的元素和仅由执行第二个操作例子所需的元素,需要时将在说明中指出附加的元素。
图7为示意图,更具体地展示信息处理器的功能结构。图7中所示的每个元素均由图1中所示的CPU 113使用一级存储部109和二级存储部108执行存储在ROM 110中的程序来实现。换句话说,图7为示意图,展示存储在ROM110中并由CPU 113执行的程序的结构。
在图7中,信息处理器包括OS 710、浏览器720、组合部730、Java中间件740、HTML浏览器450、邮件程序460、第一个转换部741、第二个转换部451,及第三个转换部761。这些都是存储在ROM 110中的程序的子程序。将图4中所示的格式引擎管理部41作为浏览器720和组合部730的部分功能来实现。
在图7所示的子程序中,Java中间件740、HTML浏览器750和邮件程序760都是例如执行以预定格式描述的应用程序或显示以预定格式描述的数据的格式引擎。在下面说明的具体结构例子中,将把这三种类型的格式引擎作为例子进行说明,但格式引擎也可以是字处理器程序、电子表格程序等等。包含在信息处理器中的格式引擎数量不限于三个,可以是一个、两个、四个或更多。然而,需要提供和格式引擎数量相同的转换部。
OS 710是在打开数字电视100时由CPU 113激活的子程序。OS 710是操作系统的缩写,它可以是例如Linux等等。OS 710是包括内核711、库712等等且并行执行其他子程序的一组程序的通用术语,在此不详细描述。在此结构例子中,OS 710的内核711在打开电源之后将浏览器720、Java中间件740、HTML浏览器750和邮件程序760作为子程序激活。当OS 710是Linux时,OS 710对每个子程序激活独立的进程,并在每个进程中执行单独的子程序。
OS 710的库712提供具有控制数字电视100拥有的硬件元素(资源)的多种功能的其他子程序。即,将图4中所示的资源控制部47作为库712的部分功能来实现。在此结构例子中,将调谐器库(调谐器Lib)7121、解扰器库(解扰器Lib)和AV再现库(AV再现Lib)7123作为多个功能的例子进行说明。这些库实现图4中所示的资源控制部47的功能。
调谐器库7121向子程序提供控制调谐器101的功能。具体来说,调谐器库7121从子程序接收包括提供给调谐器的频率的调谐信息。调谐器库7121向调谐器101提供接收的信息并控制调谐器101执行调谐。
解扰器库7122向子程序提供控制解扰器102的功能。具体来说,解扰器库7122从子程序接收包含密钥等等的解码信息。解扰器库7122向解扰器102提供接收的信息并控制解扰器102执行解码。
AV再现库7123向子程序提供控制TS解码器103及执行视频和音频再现的功能。具体来说,AV再现库7123从子程序接收要再现的视频数据的包ID和要再现的音频数据的包ID。AV再现库7123将一组接收到的视频数据的包ID与输出目的地“视频解码器106”及一组接收到的音频数据的包ID与输出目的地“音频解码器104”输出到TS解码器103,并控制TS解码器103执行过滤。通过此操作,在将包含音频数据的包传递给音频解码器104之后,通过扬声器105再现音频数据,且在将包含视频数据的包传递给视频解码器106之后,通过显示107再现视频数据。
浏览器720根据例如来自用户的指令来控制格式引擎活动或停止。例如,浏览器720也控制数字电视的频道切换、应用程序的执行和停止,及格式引擎对数据的再现和停止。路由器720是由OS 710的内核711激活的子程序。接下来,说明通过浏览器720进行频道切换的操作。假设输入部111是图3中所示的前端面板。当用户按下C+按钮308或C-按钮309时,浏览器720接收按下的按钮的标识符,并切换在其中再现数据的频道。在此,C+按钮308将频道切换至编号更大的频道,C-按钮309将频道切换至编号更小的频道。例如,假设可以在频道“1”、“2”、“4”、“6”和“8”中再现数据,且目前在频道“6”中再现数据。当用户按下C+按钮308时,浏览器720将进行再现的信道从“6”切换到“8”。当用户按下C-按钮309时,浏览器720将进行再现的频道从“6”切换到“4”。通过向包含在OS 710的库712中的AV再现库7123给出包含对应于该频道的视频数据和音频数据的包ID来执行频道切换。此操作是当前市场上提供的电视的基本功能,因此不在此详细描述。
接下来,参考图8至图16,说明浏览器在用户激活格式引擎等等时的操作。当用户按下输入部111的菜单按钮307时,浏览器720在显示107上显示可执行的格式引擎的列表。图8、图9和图10展示显示在显示107上的格式引擎列表的例子。在图8至图10中,将几组格式引擎的名称及其状态作为格式引擎的列表显示。此外,显示光标81以便选择格式引擎。当用户按下输入部111的光标向上按钮301或光标向下按钮302时,光标81移动。在图8所示状态中按下光标向下按钮302时,光标81向上移动一行,达到图9中所示的状态。在图9所示的状态中按下光标向下按钮302时,光标81向下移动一行,达到图10中所示的状态。在图9所示状态中按下光标向上按钮301时,光标81向上移动一行,达到图8中所示的状态。在图8至图10中,浏览器720从组合部730获取所显示的每个格式引擎的状态(Java中间件740、HTML浏览器750和邮件程序760)。
当用户在图8所示状态中按下输入部111的确定按钮306时,浏览器720显示可由Java中间件740执行的应用程序的列表。图11和图12展示显示在显示107上的可执行应用程序的列表的例子。在图11和图12中,将几组应用程序的名称及其状态作为可执行应用程序的列表显示。此外,显示光标81以便选择应用程序。当用户按下输入部111的光标向上按钮301或光标向下按钮302时,光标81移动。在图11所示的状态中按下光标向下按钮302时,光标81向下移动一行,达到图12所示的状态。在图12所示状态中按下光标向上按钮301时,光标81向上移动一行,达到图11中所示的状态。在图11和图12中,浏览器720从组合部730获取所显示的每个应用程序的状态。
当用户在图11所示状态中按下输入部111的确定按钮305时,浏览器720控制组合部730激活应用程序“EPG”。当用户在图12所示状态中按下输入部111的确定按钮306时,浏览器720控制组合部730激活应用程序“纸牌游戏”。
在图11和图12中,所有应用程序均为“停止”。存在应用程序为“暂停”或“在执行期间”的情况。图13和图14展示显示在显示107上的可执行应用程序列表的其他例子。在图13和图14中,“EPG”的操作状态是“在执行期间”,而“纸牌游戏”的操作状态是“暂停”。当用户在图13所示的状态中按下输入部111的确定按钮305时,浏览器720控制组合部730停止应用程序“EPG”。当用户在图14所示的状态中按下输入部111的确定按钮305时,浏览器720控制组合部730停止应用程序“纸牌游戏”。总之,当用户在光标81选择了“停止”的应用程序状态下按下输入部111的确定按钮305时,浏览器720控制组合部730激活该应用程序。当用户在光标110选择了“在执行期间”或“暂停”的应用程序的状态下按下输入部111的确定按钮305时,浏览器720控制组合部730停止该应用程序。
当用户在图9所示的状态中按下输入部111的确定按钮305时,浏览器720显示可由HTML浏览器750显示的数据的列表。在图15和图16中,将几组数据及其状态作为可执行数据的列表显示。此外,显示光标81以便让用户选择数据。当用户按下光标向上按钮301或光标向下按钮302时,光标81移动。在图15所示的状态中按下光标向下按钮302时,光标81向下移动一行,达到图16所示的状态。在图16所示的状态中按下光标向上按钮301时,光标81向上移动一行,达到图15所示的状态。浏览器720从组合部730获取所显示的每个数据的状态。当用户在图15所示的状态中按下确定按钮305时,浏览器720控制组合部730停止数据“天气预报”。当用户在图16所示的状态中按下确定按钮305时,浏览器720控制组合部730停止数据“假日外出信息”。
当用户在图10所示的状态中按下输入部111的确定按钮305时,浏览器720控制组合部730激活邮件程序760。邮件程序760没有任何要处理的单个数据的操作状态(如,停止、在执行期间,暂停),并只定义邮件程序760自身的操作状态。因此,即使用户在图10所示的状态中按下输入部111的确定按钮305,也不显示由单个格式引擎如Java中间件740或HTML浏览器750处理的应用程序或数据的列表。当尝试从组合部730获取由邮件程序760处理的应用程序或数据的状态列表时,浏览器720得知邮件程序760没有保存任何单个应用程序或数据的操作状态。另外,浏览器720也可以事先知道邮件程序760没有保存任何单个应用程序或数据的操作状态。
浏览器720按如下对上述不保存任何单个应用程序或数据的操作状态的格式引擎进行操作。当用户在光标81选择了处于“停止”操作状态的格式引擎的状态中按下输入部111的确定按钮305时,浏览器720控制组合部730激活该格式引擎。当用户在光标81选择了处于“操作中”或“暂停”操作状态的格式引擎的状态中按下输入部111的确定按钮305时,浏览器720控制组合部730停止该格式引擎。
当用户在显示了由格式引擎处理的格式引擎列表或应用程序或数据列表的状态中(图8至图16)按下输入部111的菜单按钮307时,浏览器720停止显示该列表。
返回图7,组合部730是组合浏览器720和多个格式引擎的模块。组合部730包括通信部731、状态管理部732及资源管理部733。
通信部731在浏览器720和每个格式引擎之间进行通信。在此,通信指消息数据的数据发送和接收。具体来说,为了向格式引擎做出指令,浏览器720将指示该指令的消息通过通信部731发送到格式引擎。例如,为了做出停止正由Java中间件740执行的应用程序的指令,浏览器720通过通信部731发送指示停止Java中间件740的指令的消息。
由于浏览器720和每个格式引擎在不同的进程或线程中工作,需要执行进程间通信或线程间通信。在OS为Linux的情况下,可以使用OS 710的功能如Socket、管道等等来实现进程间通信或线程间通信。
如果在浏览器720和每个格式引擎之间确定了单独的通信方法,则需要在浏览器720和每个格式引擎上安装多种类型的通信方法。这增加了所有程序的代码量以及开发步骤的数量。通信部731定义可由浏览器720和格式引擎使用的公共通信方法。在此,浏览器720使用Socket通信,但是也可以使用其他的方法如FIFO等等来实现公共通信方法。通信部731还在Socket通信协议上定义唯一的消息格式。
接下来,参考图17至图31,对消息格式进行详细说明。图17为示意图,展示例子消息格式。在图17中,消息包括五个字段。源ID字段171存储指示作为消息发送源的子程序的信息。向子程序分配子程序ID来表示该子程序(见后面图18的说明)。源ID字段171存储作为消息发送源的子程序的子程序ID。具体来说,源ID字段171在1个字节中存储子程序ID,指示发送消息的浏览器720或格式引擎。子程序ID将在后面详细说明。
目的地ID字段172在1个字节中存储子程序ID(SID),指示接收消息的子程序。格式引擎ID将在后面详细说明。消息ID字段173在1个字节中存储消息ID,指示消息的内容。消息ID将在后面详细说明。数据长度字段174在2个字节中存储存储在数据字段175中的数据的长度。数据字段175存储对应于消息ID的详细数据。对应于消息ID定义存储的数据的格式。
图18为表格,展示存储在图17所示的源ID字段171和目的地ID字段172中的子程序ID的例子。在图18所示的表中,子程序在左边一栏中展示,而对应的子程序ID在右边一栏展示。左边一栏中的“所有”指所有的格式引擎。在此,除了“所有”还将子程序ID提供给向浏览器720、组合部730、Java中间件740、HTML浏览器750和邮件程序760。即,这些子程序是用于发送和接收消息的子程序。
图19展示存储在消息ID字段173中的消息ID的表格的例子。在图19所示的表中,消息在左边一栏展示,消息ID(MID)在中间一栏展示,而存储在数据字段175中的数据的格式ID在右边一栏中展示。下面,对每个消息进行详细说明。
在图19中,在从上往下数的第二行中,展示请求格式引擎通知格式引擎的状态的“格式引擎状态请求”消息。在例如浏览器720希望知道每个格式引擎的操作状态使用此消息。此消息不使用数据字段175。
在图19中,在从上往下数的第三行中,展示“格式引擎状态响应”。当例如Java中间件740从浏览器720接收到“格式引擎状态请求”时,Java中间件740使用“格式引擎状态响应”消息来通知格式引擎的状态。此消息在数据字段175中存储格式引擎的状态。图20展示格式引擎状态响应消息中的数据字段175的格式的例子。在数据字段175中,在1个字节中存储指示格式引擎的操作状态的操作ID。
图21为表格,展示指示格式引擎的操作状态和操作状态ID之间的对应关系的例子。在图21中,格式引擎的操作状态在左边一栏中展示,操作状态的意义在中间一栏展示,而操作ID在右边一栏中展示。在此,定义了“在执行期间”、“暂停”和“停止”三种操作状态。图21中定义的这些操作状态是对所有格式引擎相同的公共状态。即,用公共状态表示包括在消息中的操作状态。公共状态“在执行期间”指正在使用数字电视100拥有的最小资源。
返回图19,在从上往下数的第四行中,展示“格式引擎状态改变”消息,它由格式引擎用来向浏览器720或其他格式引擎通知格式引擎的状态已改变。此消息不使用数据字段175。
在从上往下数的第五至第七行中,展示“执行格式引擎”消息、“停止格式引擎”消息和“暂停格式引擎”消息,它们由浏览器720等等用来控制其他格式引擎,各自将其改变状态为“在执行期间”、“停止”和“暂停”。这些消息不使用数据字段175。
在从上往下数的第八行中,展示请求格式引擎通知可由格式引擎执行的应用程序或可由格式引擎显示的数据的列表的“应用程序/数据列表请求”消息。在例如浏览器720希望知道可由Java中间件740执行的应用程序的列表时使用它。此消息不使用数据字段175。
在从上往下数的第九行中,展示响应“应用程序/数据列表请求”的“应用程序/数据列表响应”消息。当例如Java中间件740从浏览器720接收到“应用程序/数据列表请求”时,Java中间件740使用“应用程序/数据列表响应”消息来通知可由Java中间件740执行的应用程序及其状态的列表。此消息在数据字段175中存储应用程序/数据列表。
图22展示应用程序/数据列表响应消息中的数据字段175的格式的例子。在图22中,在应用程序数量(图22中的“应用程序数量”)字段2201中,在1个字节中存储可由格式引擎执行的应用程序或可由格式引擎显示的数据的数量。
在应用程序数量字段2201之后,数据字段175包括应用程序信息字段2202。应用程序信息字段2202的数量等于存储在应用程序数量字段2201中的数。
在每个应用程序信息字段2202的前端,提供应用程序ID字段2202。在应用程序ID字段2203中,应用程序ID以1个字节标识可执行的应用程序或可显示的数据。此应用程序ID由格式引擎分配。
在它之后,应用程序信息字段2202包括应用程序状态(图22中的“应用程序状态”)ID字段2204。在应用程序状态ID字段2204中,在1个字节中存储指示应用程序或数据的状态的应用程序状态ID。在此结构例子中,应用程序状态和应用程序状态ID之间的对应关系和图21中所示的对应关系相同,即,格式引擎的操作状态和操作状态ID之间的对应关系。
在它之后,应用程序信息字段2202包括应用程序名称长度(图22中的“应用程序名称长度”)字段2205。在应用程序名称长度字段2205中,存储应用程序或数据的名称的长度。
在每个应用程序信息字段2202的末端,提供应用程序名称(图22中的“应用程序名称”)字段2206。在应用程序名称字段2206中,存储具有由存储在应用程序名称长度字段2205中的数据指定的长度的应用程序名称。
返回图19,在从上往下数的第十行中,展示“应用程序/数据列表改变”消息,它由格式引擎用来通知浏览器720或其他格式引擎正在执行的应用程序或正在显示的数据的状态已改变。此消息不使用数据字段175。
在从上往下数的第11至第13行中,展示“执行应用程序/数据”消息、“停止应用程序/数据”消息,及“暂停应用程序/数据”消息,它们由浏览器720等等用来控制其他格式引擎,各自将其状态改变为“在执行期间”、“停止”和“暂停”。这些消息在数据字段175中存储标识作为状态改变目标的应用程序或数据的应用程序ID。
图23展示“执行应用程序/数据”消息、“停止应用程序/数据”消息及“暂停应用程序/数据”消息中的数据字段175的例子格式。在数据字段175中,在1个字节中存储标识应用程序或数据的应用程序ID(图23中为“应用程序ID”)。应用程序ID使用格式引擎在“应用程序/数据列表响应”消息中返回的值。
返回图19,在从上往下数的第14行中,展示“私用”消息,它用于发送或接收浏览器720和其他格式引擎之间唯一的数据。在唯一数据包含在浏览器720和其他格式引擎之间唯一定义的格式中状态中使用数据字段175。
在此结构例子中,对格式引擎定义的操作状态和对应用程序/数据定义的操作状态相同,但是它们也可以不同。此结构例子中描述的消息和消息格式是示范性的。另外,例如,可以包括其他消息,可以使用其他格式,可以不使用此结构例子中描述的部分或全部消息。重要的一点是组合部730或与其等价的元素定义在浏览器720和多个格式引擎之间使用的格式引擎公共状态和应用程序/数据公共状态,从而提供公共的通信方法。
接下来,说明对应于浏览器720的操作的消息的具体例子。为了显示图8中所示的格式引擎的列表,浏览器720传递三个图24至图26中所示的“格式引擎状态请求”消息到组合部730。图24至图26展示“格式引擎状态请求”消息的具体例子。图24中展示的消息2400是从浏览器720到Java中间件740的“格式引擎状态请求”。在源ID字段2401中,存储指示浏览器720的子程序ID“1”(见图18)。在目的地ID字段2402中,存储指示Java中间件740的子程序ID“2”(见图18)。在消息ID字段2043中,存储指示“格式引擎状态请求”的“1”(见图19)。在数据长度字段1504中,存储数据长度“0”。图25中所示的消息2500是从浏览器720到HTML浏览器750的“格式引擎状态请求”。消息2400和消息2500的唯一不同在于,在消息2500中,在目的地ID字段1512中存储指示HTML浏览器750的ID“3”(见图18)。消息2400和2500在其他方面相同。图26中所示的消息2600是从浏览器720到邮件程序760的“格式引擎状态请求”。消息2400和消息2600的唯一不同在于,在消息2600中,在目的地ID字段1522中存储指示邮件程序760的ID“4”(见图18)。消息2400和2600在其他方面相同。
在发送了“格式引擎状态请求”消息之后,浏览器720从组合部730接收三个图27至图29中所示的“格式引擎获取响应”消息。图27至图29展示“格式引擎获取响应”消息的具体例子。消息2700是从Java中间件740到浏览器720的“格式引擎获取响应”。在源ID字段2701中,存储指示Java中间件740的子程序ID“2”(见图18)。在目的地ID字段2702中,存储指示浏览器720的子程序ID“1”(见图18)。在消息ID字段2703中,存储指示“格式引擎获取响应”的消息ID“2”(见图19)。在数据长度字段2704中,存储数据长度“1”。在数据字段2705中,存储指示“停止”的操作状态ID“3”(见图21)。消息2800是从HTML浏览器750到浏览器720的“格式引擎获取响应”。消息2700和消息2800的唯一不同在于,在消息2800中,在目的地ID字段2801中存储指示HTML浏览器750的子程序ID“3”。消息2700和2800在其他方面相同。消息2900是从邮件程序760到浏览器720的“格式引擎获取响应”。消息2700和消息2900的唯一不同在于,在消息2900中,在源ID字段2901中存储指示邮件程序760的子程序ID“4”,见图18。消息2700和2900在其他方面相同。通过如上述从组合部730发送三个“格式引擎获取响应”消息,浏览器720可以显示图8中所示的格式引擎列表。
接下来,对浏览器720显示图15所示的可由HTML浏览器750显示的数据的列表的情况进行说明。在此情况,浏览器720传递图30所示的“应用程序/数据列表请求”消息到组合部730。图30展示“应用程序/数据列表请求”消息的具体例子。图30中所示的消息3000是从浏览器720到HTML浏览器750的“应用程序/数据列表请求”。在源ID字段1701中,存储指示浏览器720的子程序ID“1”(见图18)。在目的地ID字段1702中,存储指示HTML浏览器750的子程序ID“3”(见图18)。在消息ID字段1703中,存储指示“应用程序/数据列表请求”的消息ID“11”(见图19)。在数据长度字段1704中,存储指示数据长度的“0”。
在发送“应用程序/数据列表请求”消息之后,浏览器720从组合部730接收三个图31所示的“应用程序/数据获取响应”消息。图31展示“应用程序/数据获取响应”消息的具体例子。图31中所示的消息3100是从HTML浏览器750到浏览器720的“应用程序/数据获取响应”。在源ID字段3101中,存储指示HTML浏览器750的子程序ID“3”(见图18)。在目的地ID字段3102中,存储指示浏览器720的子程序ID“1”(见图18)。在消息ID字段3103中,存储指示“应用程序/数据获取响应”的消息ID“12”(见图19)。在数据长度字段1604中,存储指示数据长度的“27”。在应用程序数量字段3105中,存储指示可由HTML浏览器750显示的数据条数“2”。
在图31中,应用号字段3105包括第一个数据的应用程序信息(图31中所示的“应用程序信息”)字段3111和第二个数据的应用程序信息(图31中所示的“应用程序信息”)字段3112。在应用程序ID字段3121中,存储指示第一个数据的应用程序ID“1”。在应用程序名称字段3124中,存储指示数据名称的“天气预报”。在此,“天气预报”的每个字符由2字节代码表示,结果,应用程序名称长度为4字符×2字节=8字节。在信息ID字段3125中,存储指示第二个数据的应用程序ID“2”。在状态ID字段3127中,存储指示“在执行期间”的应用程序状态ID“3”。在应用程序名称长度字段3128中,存储指示应用程序名称长度的“12”。在应用程序名称字段3124中,存储指示数据名称的“假日外出信息”。“假日外出信息”的每个字符由2字节代码表示,结果,应用程序名称长度为6字符×2字节=12字节。
对消息格式的说明现已完成。
返回图4,通信部731在接收到来自浏览器720或格式引擎的消息时检查包括在消息中的目的地ID字段,并发送消息到对应的格式引擎或浏览器720。当例如在目的地ID字段中存储“0”时,通信部731发送消息到所有格式引擎和浏览器720(见图18)。因此,当希望终止所有格式引擎时,浏览器720可以发送目的地ID字段为“0”而消息ID为“5”的消息到通信部31。
状态管理部732保存格式引擎的操作状态和可由格式引擎执行的应用程序及可由格式引擎显示的数据的操作状态。具体来说,状态管理部732在二级存储部108或一级存储部109中存储这样的信息。
图32至图34展示由状态管理部732保存的信息的例子。图32以表格形式展示有关格式引擎的信息。在图32中,在最左边一栏中展示标识相应的格式引擎的格式引擎ID。在此,每个格式引擎的格式引擎ID都和图18中定义的子程序ID相同。在左起第二栏中,展示格式引擎的名称。在左起第三栏中,展示指示相应的格式引擎的操作状态的操作状态ID。在图32中所示的表中,操作状态ID由图21中定义的值表示。在最右边的一栏中,展示指示有关相应格式引擎执行的应用程序或显示的数据的信息的存储位置的指针。对无可执行的应用程序或可显示的数据的格式引擎,在该栏中显示“NULL”。
在图32所示的表中,在从上往下数的第二行中,展示有关Java中间件740的信息。具体来说,展示格式引擎ID“2”、名称“Java中间件”、指示“停止”的操作状态ID“3”,及以十六进制表示的指向有关可执行应用程序的信息的指针“0x5678”。在从上往下数的第三行中,展示有关HTML浏览器750的信息。具体来说,展示格式引擎ID“3”、名称“HTML浏览器”、指示“停止”的操作状态ID“3”,及以十六进制表示的指向有关可显示数据的信息的指针“0x7162”。在从上往下数的第四行中,展示有关邮件程序760的信息。具体来说,展示格式引擎ID“4”、名称“邮件程序”和指示“停止”的操作状态ID“3”。由于不包含有关应用程序/数据的信息,在指针列中展示“NULL”。
图33以表格形式展示有关可由Java中间件740执行的应用程序的信息。此信息从存储位置0x5678开始存储在一级存储部109中。在图33中,在左边一栏,展示分配给相应应用程序的应用程序ID。在中间一栏,展示应用程序的名称。在右边一栏,展示应用程序状态ID。在从上往下数的第二行中,展示应用程序ID“1”、名称“EPG”,及指示“停止”的应用程序状态ID“3”。在从上往下数的第三行中,展示应用程序ID“2”、名称“纸牌游戏”和指示“停止”的应用程序状态ID“3”。
图34以表格形式展示有关可由HTML浏览器750显示的数据的信息。此信息从存储位置0x7162开始存储在一级存储部109中。在图34中,在左边一栏,展示分配给相应数据的数据ID。在中间一栏,展示数据名称。在右边一栏,展示指示相应数据的状态的应用程序状态ID。在从上往下数的第二行中,展示应用程序ID“1”、名称“天气预报”,和指示“在执行期间”的应用程序状态ID“1”。在从上往下数的第三行中,展示应用程序ID“2”、名称“假日外出信息”,和指示“在执行期间”的应用程序状态ID“1”。
回到图4,通信部731按上述根据存储在消息中的目的地ID字段内的数据发送消息。在此,通信部731可以发送“格式引擎状态请求”消息和“应用程序/数据列表请求”消息到状态管理部732,而忽略目的地ID字段。状态管理部732保存每个格式引擎的状态,并因此可以产生“格式引擎状态请求”消息、“格式引擎状态响应”消息,或“应用程序/数据列表响应”而不是由每个格式引擎产生。通过由状态管理部732产生这些消息,进程间通信和线程间通信可以忽略,从而可以实现短时间内的响应。
状态管理部732总是保持格式引擎的最新操作状态。对此,状态管理部732在需要时从每个格式引擎获取信息。具体来说,当打开数字电视100时,状态管理部732发送“格式引擎状态请求”消息到每个格式引擎。状态管理部732从每个格式引擎接收“格式引擎状态响应”消息,并基于接收到的消息将每个格式引擎的操作状态存储到一级存储部109中。状态管理部732也发送“应用程序/数据列表请求”消息到每个格式引擎。状态管理部732从每个格式引擎接收“应用程序/数据列表响应”消息,并基于接收到的消息将每个应用程序和数据的应用程序状态存储到一级存储部109中。
此外,当接收到来自格式引擎的“格式引擎状态改变”消息时,状态管理部732发送“格式引擎状态请求”消息到该格式引擎。状态管理部732向其发送“格式引擎状态请求”消息的格式引擎接收“格式引擎状态响应”消息,并基于接收到的消息将格式引擎的操作状态存储到一级存储部109中。
接下来,参考图35至图38,说明当邮件程序760的操作状态发生改变时的消息发送和接收。图35展示从邮件程序760发送的“格式引擎状态改变”消息的例子。图35中所示的消息3500是从邮件程序760到所有格式引擎的“格式引擎状态改变”消息的例子。在消息3500中,在源ID字段3501中,存储指示邮件程序760的子程序ID“4”(见图18)。在目的地ID字段3502中,存储指示所有格式引擎的子程序ID“0”(见图18)。在消息ID字段3503中,存储指示“格式引擎状态改变”的操作状态ID“3”(见图19)。在数据长度字段3504中,存储指示数据长度的“0”。
当接收到图35中所示的消息3500时,状态管理部732发送图36中所示的消息3600到邮件程序760。图36展示由状态管理部732发送的消息的例子。在图36所示的消息3600中,在源ID字段3601中,存储指示组合部730的子程序ID“5”(见图18)。在目的地ID字段3602中,存储指示邮件程序760的子程序ID“4”(见图18)。在消息ID字段3603中,存储指示“格式引擎状态获取”的消息ID“1”(见图19),在数据长度字段3604中,存储指示数据长度的“0”。
当接收到图36中所示的消息3600时,邮件程序760发送图37中所示的消息3700到组合部730中的状态管理部732。图37展示由邮件程序760发送的消息的例子。在图37所示的消息3700中,在源ID字段3701中,存储指示邮件程序760的子程序ID“4”(见图18)。在目的地ID字段3702中,存储指示组合部730的子程序ID“5”(见图18)。在消息ID字段3703中,存储指示“格式引擎获取响应”的消息ID“2”(见图19)。在数据长度字段3704中,存储指示数据长度的“1”。在数据字段3705中,存储指示“在执行期间”的操作ID“1”(见图21)。
作为将图37所示的消息3700发送到组合部730中的状态管理部732的结果,状态管理部732可以得知邮件程序760的状态已改变为“在执行期间”。如果状态在接收消息3700之前如图32所示,则状态管理部732如图38中所示那样更新存储在一级存储部109中的信息。图38展示图32中的状态改变之后的状态。在图38中,邮件程序760的操作状态ID为“1”。
像“格式引擎状态改变”消息那样,当接收到来自格式引擎的“应用程序/数据列表改变”消息时,状态管理部732获取最新的状态。具体来说,状态管理部732将“应用程序/数据列表请求”消息发送到已发送“格式引擎状态改变”消息的格式引擎。状态管理部732从该格式引擎接收“应用程序/数据列表响应”消息,并基于接收到的消息将每个应用程序和数据的应用程序状态存储到一级存储部109中。
以此方式,状态管理部732可以保存有关每个格式引擎、由每个格式引擎执行的应用程序,及由每个格式引擎显示的数据的最新信息。
接下来,参考图39至图44,说明资源管理部733。资源管理部733是执行上述第二个操作例子所需的元素,且不是执行第一个操作例子所需的元素。
资源管理部733提供信息来解决在多个格式引擎之间出现的争用。图39为框图,展示资源管理部733的内部结构。在图39中,资源管理部733包括进程存储部3901、优先级存储部3902、最新激活存储部3903、资源ID存储部3904、格式引擎指定部3904、优先级信息提供部3904,及资源剥夺通知部3904。
进程存储部3091由二级存储部108或一级存储部109实现,并保存有关执行每个格式引擎的进程或线程的信息。在此,在进程上实现每个格式引擎。图40展示存储在进程存储部3901中的信息的例子。在图40中,进程存储部3901以表的形式存储执行相应的格式引擎的进程ID。在图40中,在左边一栏中,展示格式引擎ID(FID)。在右边一栏中,展示标识执行相应的格式引擎的进程的进程ID。进程ID是由OS 710的内核711产生的进程的ID。资源管理部733从内核711接收进程ID并将进程ID存储在进程存储部3901中。在从上往下数的第二行中,展示Java中间件740的格式引擎ID“2”(图18)和执行Java中间件740的进程的进程ID“100”。在从上往下数的第三行中,展示HTML浏览器750的格式引擎ID“3”(图18)和执行HTML浏览器750的进程的进程ID“110”。在从上往下数的第四行中,展示邮件程序760的格式引擎ID“4”(图18)和执行邮件程序760的进程的进程ID“120”。
回到图39,优先级存储部3902由二级存储部108、一级存储部109或ROM110实现。优先级存储部3902存储每个格式引擎的优先级。
图41展示存储在优先级存储部3902中的信息的例子。在图41中,优先级存储部3902以表的形式存储每个格式引擎的优先级。在图41中,在左边一栏中,展示格式引擎ID(FID)。在右边一栏中,展示相应的格式引擎的优先级。在此较大优先级值表明较高的优先级。在从上往下数的第二行中,展示Java中间件的格式引擎ID“2”和对应的优先级“2”。在从上往下数的第三行中,展示HTML浏览器的格式引擎ID“3”和对应的优先级“1”。在从上往下数的第四行中,展示邮件程序760的格式引擎ID“4”(图18)和对应的优先级“4”。回到图39,最新激活存储部3903由二级存储部108或一级存储部109实现。最新激活存储部3903存储包含在从浏览器720发送的“执行格式引擎”消息或“执行应用程序/数据”消息中的目的地ID字段内描述的格式引擎ID。即,最新激活存储部3903存储最新的激活信息。最新的激活信息是指示用户最新请求执行的格式引擎的信息。
图42展示存储在最新激活存储部3903中的信息的例子。在图42中,最新激活存储部3903存储邮件程序760的格式引擎ID“4”。下面说明浏览器720在图42所示状态中通过组合部730发送“执行格式引擎”消息或“执行应用程序/数据”消息到HTML浏览器750的情况。在此情况,资源管理部733将存储在最新激活存储部3903中的信息更新为“3”,这是指示HTML浏览器750的格式引擎ID。
回到图39,资源ID存储部3904由二级存储部108或ROM 110实现。资源ID存储部3904存储标识作为资源管理部733的管理目标的资源的资源ID(RID)。
图43展示存储在资源ID存储部3904中的信息的例子。在图43中,资源ID以表的形式存储部3904存储资源ID。在图43中,在左边一栏中,展示资源ID。在右边一栏中,展示对应的资源名称。在图43中,将调谐器101、TS解码器103、音频解码器104、视频解码器106和网络接口112定义为作为管理目标资源。将资源ID分配给这些资源。图44展示以C编程语言描述资源ID定义的例子。
回到图39,格式引擎指定部390指定请求资源的格式引擎。每个格式引擎均使用由OS 710的库712提供的功能。例如,调用控制调谐器101的调谐器库7121,以便调谐到特定的频段。为了实现此效果,格式引擎调用由调谐器库7121准备的功能。当格式引擎做出请求,即,当格式引擎调用功能时,调谐器库7121向格式引擎指定部3905查询哪个格式引擎调用了该功能。为了响应此查询,格式引擎指定部3905指定调用该功能的进程。格式引擎指定部3905参考指定进程的进程ID及一组格式引擎ID和存储在进程存储部3901中的进程ID,来指定已调用该功能的格式引擎。
优先级信息提供部3906向库712提供存储在优先级存储部3902中的格式引擎优先级和存储在最新激活存储部3903中的有关由用户最新激活的格式引擎的信息。库712可以使用格式引擎指定部3905和优先级信息提供部3906来确定向哪个格式引擎提供资源。下面,对此进行详细说明。
例如,假设调谐器库7121由Java中间件740调用并执行调谐。调谐器库7121使用格式引擎指定部3905得知Java中间件740当前正在使用调谐器101。下面说明邮件程序760在此状态中调用调谐器库7121以尝试调谐到另一个频段的情况。调谐器库7121使用格式引擎指定部3905得知邮件程序760使用调谐器101的功能。接下来,调谐器库7121从优先级信息提供部3906中获取有关最新激活的格式引擎的信息。当最新激活的格式引擎是邮件程序760时,调谐器库7121允许邮件程序760使用调谐器101。当最新激活的格式引擎是Java中间件740时,调谐器库7121拒绝邮件程序760使用调谐器101。当最新激活的格式引擎既不是邮件程序760也不是Java中间件740时,调谐器库7121从优先级信息提供部3906中获取邮件程序760和Java中间件740的优先级。当邮件程序760的优先级高于Java中间件740的优先级时,调谐器库7121允许邮件程序760使用调谐器101。当邮件程序760的优先级低于Java中间件740的优先级时,调谐器库7121拒绝邮件程序760使用调谐器101。以此方式,库712可以确定向哪个格式引擎提供资源。
库712使用有关最新激活的格式引擎的信息或优先级信息的方式是任意的,且上述方式仅作为例子。任何规则都可以用于确定允许哪个格式引擎使用资源。例如,库712可以只使用优先级信息来确定允许哪个格式引擎使用资源。另外,库712也可以允许正在使用资源的格式引擎使用资源。相反,库712也可以允许最新做出调用的格式引擎使用资源。
在图39中,资源剥夺通知部3904通知不允许使用资源的格式引擎资源已被剥夺。例如,下面说明当Java中间件740已调用调谐器库7121并正在使用调谐器101时,邮件程序760调用调谐器库7121来尝试使用调谐器101的情况。如果调谐器库7121允许邮件程序760使用调谐器101,则调谐到不同于Java中间件740所需频段的另一频段。因此,在Java中间件740上执行的应用程序可能会不能继续正常工作。为了防止此情况,调谐器库7121查询资源剥夺通知部3907来通知Java中间件740调谐器资源已被剥夺。为了进行这样的查询,将得到资源剥夺通知的格式引擎的格式引擎ID与资源ID传递给资源剥夺通知部3907。库712可以通过获取格式引擎ID从格式引擎指定部3905得知格式引擎ID。库712可以通过参考资源ID存储部2904事先知道库712。当接收到格式引擎ID和资源ID时,资源剥夺通知部3907通知由格式引擎ID指示的格式引擎资源已被剥夺。接收到通知的格式引擎的操作取决于每个格式引擎。对难以继续操作的格式引擎,可以将其操作状态从“在执行期间”改变为“停止”或“暂停”。对资源管理部733的说明现已完成。
接下来,参考图45至图71,对每个格式引擎进行详细说明。
首先,参考图45至图51,对Java中间件740进行说明。Java中间件740是执行Java应用程序的格式引擎。在此结构例子中,将DVB-MHP 1.0标准(正式名称为ETSI TS 101 812 DVB-MHP规范v1.0.2)作为具体例子进行说明。另外,可以使用根据其他规范如小程序查看器等等进行操作的Java中间件。在此结构例子中,Java中间件740的详细操作包括DVB-MHP 1.0标准的内容。因此,在此只对其概况进行说明。
图45为框图,展示Java中间件740的结构。Java中间件740包括Java虚拟机(VM)4501、类库4502和应用程序管理器4503。
Java虚拟机4501是逐个分析和执行以Java(商标)语言描述的应用程序的Java虚拟机。以Java语言描述的程序被编译为称为字节码的不依赖于硬件的中间码。Java虚拟机是执行字节码的解释器。某些Java虚拟机首先将字节码翻译为可以由CPU 113理解的执行形式,然后将结果代码传递给CPU 113来执行。类库4502和应用程序管理器4503的部分或全部以Java语言描述并由Java虚拟机4501执行。在此结构例子中,OS 710的内核711将应用程序管理器4503指定为首先执行的Java应用程序。Java语言的细节在很多书籍中都有解释,包括“Java语言规范(ISBN-0-201-63451-1)”等等,因此不在这里描述。Java虚拟机自身的详细操作等等在很多书籍中都有解释,包括“Java虚拟机规范(ISBN-0-201-63451-X)等等,因此不在这里描述。
类库4502是存储在ROM 110中的多个Java类库的聚合。多个Java类库中的大多数都对应于OS 710的库712提供的功能提供可以由Java应用程序调用的Java API。结果,Java应用程序可以使用数字电视100拥有的功能。例如,根据DVB-MHP 1.0标准,定义作为使用调谐器101的API的org.davic.mpeg.tuning包,使得Java应用程序可以控制调谐器101。
应用程序管理器4503下载并执行在广播波中多路传输的Java应用程序。根据MHP 1.0标准,在广播波中多路传输和发送称为AIT的定义Java应用程序的表。应用程序管理器4503首先下载AIT。AIT包括例如下载应用程序的信息及应用程序的名称和控制信息。
图46示意性地展示AIT的主要部分。在图46中,在最左边一栏中,展示Java应用程序ID。在左起第二栏中展示Java应用程序的控制信息。控制信息包括“自动启动”、“提供”、“杀死”等等。“自动启动”指Java中间件740立即自动地执行对应的Java应用程序。“提供”指不进行自动执行。“杀死”指Java应用程序停止。在左起第三栏中,展示Java应用程序的应用程序名称。在最右边一栏中,展示Java应用程序的优先级。当在Java应用程序中发生资源争用时,通过优先级,将资源提供给具有最高优先级的应用程序。较大的优先级值指示较高的优先级。
在图46中,在从上往下数的第二和第三行中,展示几组有关Java应用程序的信息。对从上往下数的第二行中定义的Java应用程序,Java应用程序ID为“1”,控制信息为“自动启动”,应用程序名称为“EPG”,而优先级为“64”。对从上往下数的第三行中定义的Java应用程序,Java应用程序ID为“2”,控制信息为“提供”,应用程序名称为“纸牌游戏”,而优先级为“32”。
当接收到AIT时,应用程序管理器4503下载并执行应用程序名称为“EPG”的Java应用程序。在此,由DVG-MHP 1.0标准定义的Java应用程序具有四种操作状态“加载”、“暂停”、“活动”和“销毁”。
图47为状态转换图,展示Java应用程序的四种操作状态及这些操作状态之间的转换。当应用程序管理器4503下载Java应用程序且将该Java应用程序存储到一级存储部109中时,Java应用程序的操作状态变为“加载”。从一个操作状态到另一个操作状态的转换通过应用程序管理器4503调用包含在下载的Java应用程序中的方法“initXlet”,“startXlet”、“pauseXlet”和“destroyXlet”来实现。
当应用程序管理器4503在操作状态“加载”中调用“initXlet”方法时,Java应用程序的操作状态转换为“暂停”。当应用程序管理器4503在操作状态“暂停”中调用“startXlet”方法时,Java应用程序的操作状态转换为“活动”。当应用程序管理器4503在操作状态“活动”中调用“pauseXlet”方法时,Java应用程序的操作状态转换为“暂停”。在任何一种操作状态中,当应用程序管理器4503调用“destroyXlet”方法时,Java应用程序的操作状态都转换为“销毁”。
应用程序管理器4503根据三种指令执行Java应用程序的状态转换(1)广播波中的AIT中的控制信息,(2)Java应用程序的指令,及(3)浏览器720通过组合部730发送的指令。
当AIT中的控制信息是“自动启动”时,应用程序管理器4503下载Java应用程序,然后调用“initXlet”方法和“startXlet”方法将其状态转换为“活动”状态。AIT随着时间推移而改变。例如,假设AIT从图46中的状态改变为图48中的状态。在图48中,名称为“EPG”的应用程序的控制信息已从“自动启动”改变为“杀死”。在此,应用程序管理器4503调用“destroyXlet”方法,让Java应用程序将状态转换为“销毁”状态。
Java应用程序可以转换其自身的状态或另一个Java应用程序的应用程序状态。根据DVB-MHP 1.0标准,当Java应用程序希望转换其自身的状态时,Java应用程序调用“notifyDestroyed”、“notifyPaused”、“resumeRequest”方法中的一个。为了转换到“销毁”状态,Java应用程序调用“notifyDestroyed”方法。为了转换到“活动”状态,Java应用程序调用“resumeRequest”方法。为了转换到“暂停”状态,Java应用程序调用“notifyPaused”方法。为了转换另一个Java应用程序的状态,Java应用程序使用由DVB-MHP 1.0标准定义的org.dvb.application包所定义的方法。具体来说,Java应用程序首先通过应用程序ID指定另一个Java应用程序,然后调用由org.dvb.application包定义的方法来转换指定的Java应用程序的状态。在此,不对其进行详细描述。
最后,说明通过来自浏览器720的指令转换Java应用程序的状态的方法。浏览器720基于公共状态做出指令,公共状态即由组合部730定义的格式引擎的操作状态或可由格式引擎执行的应用程序的操作状态。公共状态不同于个别状态,即,由Java中间件740的应用程序管理器4503执行的Java应用程序的操作状态。公共状态和个别状态之间的差距由第一个转换部741填补。第一个转换部741将来自浏览器720的指令转换到由Java中间件740处理的操作状态。结果,应用程序管理器4503接收到与AIT中的控制信息或来自Java应用程序的指令等价的指令,并可以转换Java应用程序的状态操作状态。
第一个转换部741转换来自组合部730的消息并将该消息发送到Java中间件740,同时转换有关Java中间件740的信息并将该信息发送到组合部730。以此方式,第一个转换部741使Java中间件740的操作适应由组合部730定义的状态。至此,已说明了通过组合部730发送到Java中间件740的各种消息。准确地说,将这些消息发送到第一个转换部741,而不是Java中间件740。当第一个转换部741从组合部730接收到“格式引擎状态请求”消息时,第一个转换部741基于可由Java中间件740执行的所有Java应用程序的状态确定Java中间件740的状态。然后,第一个转换部741创建“格式引擎状态响应”消息并发送该消息到组合部730。
图49是指示所有可由Java中间件740执行的Java应用程序的操作状态和Java中间件740的操作状态之间的对应关系的转换表的例子。在图49中,在左边一栏,展示所有可由Java中间件740执行的Java应用程序的操作状态。在右边一栏,展示对应的Java中间件740的操作状态。Java中间件740的状态是由组合部730定义的状态,即,公共状态。具体来说,Java中间件740的状态是图21中所示的三种操作状态“在执行期间”、“暂停”和“停止”。在从上往下数的第二至第四行中,定义对应于这三种操作状态的所有可由Java中间件740执行的Java应用程序的操作状态。
首先,在从上往下数的第二行中,在所有Java应用程序中的至少一个处于操作状态“活动”的情况下,将“在执行期间”作为Java中间件740的操作状态。定义这样的对应关系是因为处于“活动”状态的Java应用程序通常有较高的可能性使用最小资源。
在从上往下数的第三行中,在没有Java应用程序处于“活动”状态且所有Java应用程序中的至少一个处于“暂停”状态的情况下,将“暂停”作为Java中间件740的操作状态。根据DVB-MHP 1.0标准,处于“暂停”状态的Java应用程序应释放最小所需资源之外的资源。从而定义这样的对应关系。
在从上往下数的第四行中,在从上往下数的第二行和第三行所示情况之外的情况下,将“停止”作为Java中间件740的操作状态。具体来说,从上往下数的第二和第三行所示情况之外的情况指所有Java应用程序都处于操作状态“加载”或“销毁”或处于读取未完成的操作状态的情况。在这样的情况下,尚未执行Java应用程序代码,因此可以将这样的情况与没有使用资源的“停止”操作状态关联。
如上所述,Java中间件740的应用程序管理器4503通过改变AIT中的控制信息或来自Java应用程序的指令转换Java应用程序的状态。第一个转换部741从应用程序管理器4503接收状态改变通知。在Java中间件740的公共状态因此发生改变的情况下,第一个转换部741参考图49中的转换表来产生“格式引擎状态改变”消息,并向组合部730通知该改变。在此情况,第一个转换部741在一级存储部109中存储Java中间件的公共状态。第一个转换部741在Java应用程序的状态改变之后比较存储的公共状态与Java中间件的公共状态。另外,无论何时从应用程序管理器4503得到Java应用程序的状态改变通知时,第一个转换部741都可以产生“格式引擎状态改变”消息,并向组合部730通知该改变。
当接收到来自组合部730的“执行格式引擎”消息时,第一个转换部741控制应用程序管理器4503将AIT所定义的预定Java应用程序的状态转换为“活动”状态。预定的Java应用程序可以是由AIT定义的所有Java应用程序,或具有最高优先级的Java应用程序。为了将预定Java应用程序的状态转换为“活动”状态,可以使用由DVB-MHP 1.0标准定义的org.dvb.application包的功能。通过指定应改变其状态的Java应用程序的ID,然后指定转换后的状态为“活动”,可以将作为转换目标的Java应用程序的状态转换为“活动”状态。当已经有Java应用程序处于“活动”状态时,第一个转换部741可以不进行处理。
当接收到来自组合部730的“停止格式引擎”消息时,第一个转换部741控制应用程序管理器4503将AIT定义的所有Java应用程序的状态转换为“销毁”状态。对尚未读取的Java应用程序,不需要进行任何处理。为了将所有Java应用程序的状态转换为“销毁”状态,可以使用由DVB-MHP 1.0标准定义的org.dvb.application包的功能。通过指定Java应用程序的ID,然后指定转换后的状态“销毁”,可以将作为转换目标的Java应用程序的状态转换为“销毁”状态。此操作可以对AIT定义的所有Java应用程序执行。
当接收到来自组合部730的“暂停格式引擎”消息时,第一个转换部741在AIT定义的Java应用程序中查找处于“活动”状态的Java应用程序,并控制应用程序管理器4503将该Java应用程序的状态转换为“暂停”状态。为了实现此处理,可以使用由DVB-MHP 1.0标准定义的org.dvb.application包的功能。在指定Java应用程序的ID之后,获取Java应用程序的状态。如果状态为“活动”,则指定转换后状态为“暂停”。以此方式,可以将作为转换目标的Java应用程序的状态转换为“暂停”状态。此操作可以对AIT定义的所有Java应用程序执行。
当接收到来自组合部730的“应用程序/数据列表请求”消息时,第一个转换部741基于AIT定义的所有Java应用程序及其状态创建“应用程序/数据列表响应”消息,并发送该消息到组合部730。像包含在“应用程序/数据列表响应”消息中的应用程序名称那样,照原样使用AIT定义的应用程序名称。通过使用转换表将每个Java应用程序的状态转换为由组合部730定义的公共状态,创建包含在“应用程序/数据列表响应”消息中的状态ID。
图50展示将每个Java应用程序的操作状态转换为公共状态的转换表的例子。在图50中,在左边一栏,展示个别状态,即,由DVB-MHP 1.0标准定义的Java应用程序的操作状态。在右边一栏,展示对应的公共状态。如从上往下数的第二行所示,由DVB-MHP 1.0标准定义的Java应用程序的操作状态“活动”关联于公共状态“在执行期间”。定义这样的对应关系是因为处于“活动”状态的Java应用程序通常具有使用最小资源的较高可能性。
在图50中,如从上往下数的第三行所示,由DVB-MHP1.0标准定义的Java应用程序的操作状态“暂停”关联于公共状态“暂停”。根据DVB-MHP 1.0标准,处于“暂停”状态的Java应用程序应释放最小所需资源之外的资源。因此定义这样的对应关系。
如从上往下数的第四行所示,对从上往下数的第二和第三行所示的情况之外的情况,与公共状态“停止”关联。具体来说,从上往下数的第二和第三行所示的情况之外的情况指,Java应用程序处于“加载”状态或“销毁”状态,或处于读取尚未完成的操作状态的情况。在这样的情况下,还没有执行Java应用程序代码,因此可以使这样的情况关联于没有使用资源的“停止”操作状态。
下面,讨论AIT定义名称为“EPG”的应用程序的操作状态为“活动”且名称为“纸牌游戏”的应用程序的操作状态为“销毁”的情况。在此情况,当接收到“应用程序/数据列表请求”消息时,第一个转换部741创建图51中所示的“应用程序/数据列表响应”消息5100,并发送该消息到组合部730。
图51展示由第一个转换部741发送的消息的具体例子。图51中所示的消息5100是从Java中间件740到浏览器720的“应用程序/数据获取响应”。在源ID字段5101中,存储指示Java中间件740的子程序ID“2”(见图18)。在目的地ID字段5102中,存储指示浏览器720的子程序ID“1”(见图18)。在消息ID字段5103中,存储指示“应用程序/数据获取响应”消息ID的“12”(见图19)。在数据长度字段5104中,存储指示数据长度的“27”。在应用程序数量字段5105中,存储指示Java中间件740接收的由AIT定义的Java应用程序的数量“2”。
在图51中,应用号字段5105包括第一个Java应用程序的应用程序信息字段5111和第二个Java应用程序的应用程序信息字段5112。在应用程序ID字段5121中,存储指示第一个Java应用程序的应用程序ID“1”。在应用程序状态ID字段5122中,存储指示“在执行期间”的应用程序状态ID“3”。“在执行期间”状态是作为转换Java应用程序的操作状态“活动”的结果获得的。在应用程序名称长度字段5123中,存储指示应用程序名称的长度的“6”。在应用程序名称字段5124中,存储由AIT定义的应用程序名称“EPG”。在此,“EPG”的每个字符都由双字节码表示,因此,应用程序名称长度为3字符×2字节=6字节。在应用程序ID字段5125中,存储指示第二个Java应用程序的应用程序ID“2”。在状态ID字段5126中,存储指示“停止”的应用程序状态ID“3”。“停止”状态是作为转换Java应用程序的操作状态“销毁”的结果获得的。在应用程序名称长度字段5127中,存储指示应用程序名称长度的“14”。在应用程序名称字段5128中,应用程序名称“纸牌游戏”的每个字符由双字节码表示,因此,应用程序名称长度为7字符×2字节=14字节。
如上所述,Java中间件740的应用程序管理器4503通过AIT中的控制信息中的改变或来自Java应用程序的指令来转换Java应用程序的操作状态。第一个转换部741从应用程序管理器4503接收状态改变通知。在此,第一个转换部741产生“应用程序/数据列表改变”消息,并向组合部730通知该改变。当接收到来自组合部730的“执行应用程序/数据”消息时,第一个转换部741控制应用程序管理器4503将消息的数据字段175中指定的Java应用程序的状态转换为“活动”状态。为了将Java应用程序的状态转换为“活动”状态,可以使用由DVB-MHP 1.0标准定义的org.dvb.application包的功能。通过指定应改变状态的Java应用程序的ID,然后指定转换后的状态“活动”,可以将作为转换目标的Java应用程序的状态转换为“活动”状态。当Java应用程序已经处于“活动”状态时,第一个转换部741可以不进行处理。
当接收到来自组合部730的“停止应用程序/数据”消息时,第一个转换部741控制应用程序管理器4503将消息的数据字段175中指定的Java应用程序的状态转换为“销毁”状态。对尚未读取的Java应用程序,不需要进行任何处理。为了将Java应用程序的状态转换为“销毁”状态,可以使用由DVB-MHP1.0标准定义的org.dvb.application包的功能。通过指定Java应用程序的ID,然后指定转换后的状态“销毁”,可以将作为转换目标的Java应用程序的状态转换为“销毁”状态。当接收到来自组合部730的“暂停应用程序/数据”消息时,第一个转换部741控制应用程序管理器4503将消息的数据字段175中指定的Java应用程序的状态转换为“暂停”状态。为了实现此处理,可以使用由DVB-MHP 1.0标准定义的org.dvb.application包的功能。通过指定Java应用程序的ID,然后指定转换后的状态“暂停”,可以将作为转换目标的Java应用程序的状态转换为“暂停”状态。
第一个转换部741可以得到来自组合部730的资源管理部733的资源剥夺通知。第一个转换部741可以使应用程序管理器4503根据被剥夺的资源转换Java应用程序的状态。在剥夺了执行Java应用程序必需的资源的情况下,第一个转换部741将所有Java应用程序的状态转换为“销毁”。在其他资源的情况,如剥夺了不是执行Java应用程序绝对必需的资源时,第一个转换部741不需要进行任何处理。
Java中间件740可以直接接收资源剥夺通知并执行对应的处理。对Java中间件740的说明现已完成。
接下来,参考图52至图71,对HTML浏览器750进行说明。HTML浏览器750是解释和显示HTML数据的格式引擎。在此结构例子中,将DVB-MHP1.1标准(正式名称为ETSI TS 101 812 DVB-MHP规范v1.1)定义的DVB-HTML作为具体例子进行说明。另外,也可以使用根据其他规范如XHTML 1.0等等工作的HTML浏览器。在此结构例子中,HTML浏览器450的详细操作包括DVB-MHP 1.1标准的内容。因此,在此只说明其概况。
图52为框图,展示HTML浏览器750的结构。HTML浏览器750包括解析器5201、布局器5202、画出部5203、交互部5204和HTML管理器5205。
解析器5201分析由HTML管理器5202下载的DVB-HTML数据,并构建DOM(文档对象模型)树。图53展示DVB-HTML数据的例子。解析器5201对DVB-HTML数据构建图55中所示的DOM树。
布局器5202计算并确定由解析器5201构建的DOM树中的每个元素在显示107上的显示位置。图54展示用于确定DVB-HTML数据的布局的样式表的例子。图54中所示的每行指定图53所示的DVB-HTML数据中的元素5311、5312、5313和5314的显示位置。在此,使用通过DVB-MHP(由W3C定义的CSS2的扩展规范)定义的CSS作为样式表的例子。另外,也可以使用符合其他规范如CSS2等等的样式表,只要该样式表可以由布局器作为要确定其布局的HTML数据的样式表来分析。布局器5202基于样式表确定DOM树中的每个元素在显示107上的显示位置。例如,在确定对图55中所示的“天气预报”使用由(50,50)指示的显示位置的情况下,显示字符流“天气预报”,使得其左上角的坐标位置是距显示上边50px而距左边50px的位置。在确定对图55中所示的“Japan”使用由(200,200)指示的显示位置的情况下,显示字符流“Japan”,使得其左上角坐标位置处于距显示上边200px而距左边200px的位置。
布局器可以包括样式表的解析器,可以由解析器在构建DOM树之后接收来自HTML管理器的指令对样式表进行分析和计算,可以向布局器通知作为计算结果的显示位置。另外,HTML浏览器也可以具有缺省的样式表,当没有样式表时,布局器可以根据HTML浏览器的缺省样式表来计算和确定DOM树中的每个元素在显示107上的显示位置。
回到图52,画出部5203根据由布局器5202计算出的显示位置画出DOM树中的每个元素。图56展示在画出图55中所示的DOM树时的显示107。
交互部5204执行与用户对包含在已画出的DVB-HTML数据中的链接、按钮等等输入的指令相对应的处理。例如,假设DVB-HTML数据具有在其中定义的到另一个DVB-HTML数据的链接。当用户通过输入部111在链接上输入点击时,交互部5204将有关在链接中定义的DVB-HTML数据的信息传递给HTML管理器5205。
HTML管理器5205基于传递的有关DVB-HTML数据的信息下载DVB-HTML数据。HTML管理器5205使用解析器5201、布局器5202及画出部5203来解释和显示DVB-HTML数据。在图53所示的DVB-HTML数据中,定义了到其他DVB-HTML数据的链接。
在图56中,当用户在表示为显示上的字符流“Japan”的链接目的地“dvb∥1.2.1/Japan_Weather.html”上输入点击时,交互部5204将有关DVB-HTML数据“dvb∥1.2.1/Japan_Weather.html”的信息传递给HTML管理器5205。在此,“在链接目的地上输入点击”指当链接目的地由焦点5601选择时按下确定按钮305。HTML管理器5205基于有关DVB-HTML“dvb∥1.2.1/Japan_Weather.html”的信息下载DVB-HTML数据。HTML管理器5205使用解析器5201、布局器5202及画出部5203来解释和显示DVB-HTML数据。图57展示在用户点击表示为字符流“Japan”的链接目的地之后显示的DVB-HTML数据的例子。
例如,假设在DVB-HTML数据中定义的按钮具有改变其中定义的DOM树的结构的脚本。当用户通过输入部111从解析器5201输入点击时,交互部5204从解析器5201接收DVB-HTML数据,执行在按钮中定义的脚本,并改变DOM树的结构。根据此改变,布局器重新计算显示位置,且画出部5203进行重画。向HTML管理器5202通知DOM已改变。
在图58所示的DVB-HTML数据中,“changeDOMTree()”被定义为改变DOM树结构(具体来说,例如,在DOM树中描述的表元素)的脚本5801。根据定义在点击按钮5802时执行脚本5801。在脚本5801中,省略了改变DOM树结构的源代码。脚本可以,例如,符合由DVB-MHP(由W3C定义的DOM2的扩展规范)或其他规范如DOM1、DOM2等等定义的DOM标准。
图59展示由解析器5201对图58中所示的DVB-HTML数据构建的DOM树的一部分。图60展示由布局器5202和画出部5203实现的显示例子。在图60中,当用户在表示为标签“详细信息”6001的按钮5802上输入点击时,交互部5204从解析器5201接收DVB-HTML数据。交互部5204执行按钮5802中定义的脚本5801来改变DOM树的结构。布局器5202重新计算显示位置。画出部5203进行重画。向HTML管理器5205通知DOM树已改变。图61展示根据用户点击按钮改变DOM树的结果。图62展示改变显示的结果的例子。
HTML管理器5205下载在广播波中多路传输的DVB-HTML数据。HTML管理器5205使用解析器5201、布局器5202及画出部5203来解释和显示DVB-HTML数据。根据MHP 1.1标准,在广播波中多路传输并发送定义HTML数据的称为AIT的表。HTML管理器5205首先下载AIT。AIT包括,例如,下载DVB-HTML数据的信息,及DVB-HTML数据的名称和控制信息。
图63示意性地展示AIT的主要部分。在图63中,在最左边一栏中,展示DVB-HTML数据ID。在左起第二栏中,展示DVB-HTML数据的控制信息。控制信息包括“自动启动”、“提供”、“杀死”等等。“自动启动”指HTML浏览器750立即解释和显示对应的DVB-HTML数据。“提供”指不执行自动解释和显示。“杀死”指取消DVB-HTML的显示。在左起第三栏中,展示DVB-HTML数据的名称。在最右边的一栏中,展示DVB-HTML数据的优先级。在显示多条DVB-HTML数据时发生资源争用时,根据优先级将资源提供给具有最高优先级的DVB-HTML数据。较大的优先级值指示较高的优先级。
在图63中,在从上往下数的第二和第三行中,展示几组有关DVB-HTML数据的信息。对从上往下数的第二行中定义的DVB-HTML数据,ID为“1”,控制信息为“自动启动”,数据名称为“天气预报”,而优先级为“54”。对从上往下数的第三行中定义的DVB-HTML数据,ID为“2”、控制信息为“提供”,数据名称为“假日外出信息”,而优先级为“22”。
当接收到图63中所示的AIT时,HTML管理器5205下载、解释并显示数据名称为“天气预报”的DVB-HTML数据。在此,由DVG-MHP 1.1标准定义的DVB-HTML数据具有状态“加载”、“暂停”、“活动”、“销毁”及“杀死”。
图64为状态转换图,展示DVB-HTML数据的五种状态及这些状态之间的转换。当HTML管理器5205下载DVB-HTML数据且将DVB-HTML数据存储在一级存储部109中时,DVB-HTML数据的状态变为“加载”。连接状态的箭头展示状态之间可能的转换,而没有箭头连接的状态之间不会发生转换。例如,不能从“销毁”状态转换到“活动”状态。
HTML管理器5205根据三种指令执行DVB-HTML数据的状态转换(1)广播波中的AIT中的控制信息,(2)DVB-HTML数据的指令,及(3)浏览器720通过组合部730发送的指令。
当AIT中的控制信息是“自动启动”时,HTML管理器5205下载DVB-HTML数据,然后控制解析器3602、布局器3603及画出部3604来解释并显示DVB-HTML数据。这样,DVB-HTML数据的状态转换为“活动”状态。AIT随着时间推移而改变。例如,假设AIT从图63中所示的状态改变为图65中所示的状态。在图65中,数据名称为“天气预报”的DVB-HTML数据的控制信息已从“自动启动”改变为“杀死”。在此,HTML管理器5205将DVB-HTML数据的显示状态转换为“杀死”状态。
DVB-HTML数据可以通过用户在DVB-HTML数据上的输入产生状态转换。图66展示具有在其中定义的到另一个DVB-HTML数据的链接的DVB-HTML数据的例子。图67展示图66中所示的DVB-HTML数据的显示例子。在图67中,显示6711对应于链接6601。当用户通过输入部111在链接6601上输入点击时,交互部5204将有关在链接中定义的DVB-HTML数据的信息传递给HTML管理器5205。在此,有关DVB-HTML数据的信息为“dvb∥1.2.1/Japan_Weather.html”,参见图66。HTML管理器5205基于传递的有关DVB-HTML的信息下载DVB-HTML数据。然后HTML管理器5205使用解析器5201、布局器5205及画出部5203来解释和显示DVB-HTML数据。通过此处理,HTML管理器5205将初始的DVB-HTML数据的状态从“活动”转换为“杀死”。对应于信息“dvb∥1.2.1/Japan_Weather.html”的新DVB-HTML数据的状态从“加载”转换为“活动”。图68展示对应于信息“dvb∥1.2.1/Japan_Weather.html”的新DVB-HTML数据的显示例子。
最后,说明来自浏览器720的指令转换DVB-HTML数据的显示状态的方法。浏览器720基于公共状态做出指令,公共状态即由组合部730定义的格式引擎的操作状态及可由格式引擎显示的数据的操作状态。此公共状态不同于个别状态,即,由HTML浏览器750的HTML管理器5205显示的DVB-HTML数据的显示状态或状态转换。公共状态和个别状态之间的差距由第二个转换部751填补。第二个转换部751将来自浏览器720的指令转换到由HTML浏览器750处理的状态和状态转换。结果,HTML管理器5205接收到等价于AIT中的控制信息的指令或来自DVB-HTML数据的指令,并可以转换DVB-HTML数据的显示状态。
第二个转换部751转换来自组合部730的消息并发送该消息到HTML浏览器750,同时转换有关HTML浏览器750的信息并发送该信息到组合部730。以此方式,第二个转换部751使HTML浏览器750的操作适应由组合部730定义的状态。至此,已描述了通过组合部730发送到HTML浏览器750的各种消息。准确地说,这些消息是发送到第二个转换部751而不是HTML浏览器750。当第二个转换部751接收到来自组合部730的“格式引擎状态请求”消息时,第二个转换部751基于所有可由HTML浏览器750显示的HTML数据的状态确定HTML浏览器750的状态。然后,第二个转换部751创建“格式引擎状态响应”消息,并发送该消息到组合部730。
图69为指示可由HTML浏览器750显示的所有HTML数据的状态和HTML浏览器750的操作状态之间的对应关系的转换表的例子。在图69中,在左边一栏中,展示可由HTML浏览器750显示的所有HTML数据的状态。在右边一栏中,展示对应的HTML浏览器750的操作状态。HTML浏览器750的状态是由组合部730定义的状态,即,公共状态。具体来说,HTML浏览器750的状态是图21中所示的三种操作状态“在执行期间”、“暂停”和“停止”。在从上往下数的第二至第四行中,展示可由HTML浏览器750显示的所有HTML数据的状态,它们对应于这三种状态。
首先,在从上往下数的第二行中,在所有HTML数据中的至少一个处于“活动”状态的情况下,与作为HTML浏览器750的公共状态的“在执行期间”关联。定义这样的对应关系是因为最小资源被用来进行处于“活动”状态的HTML数据显示和用户之间的交互的可能性一般很高。
接下来,在从上往下数的第三行中,在没有HTML数据处于“活动”状态且所有HTML数据的至少一个处于“暂停”状态的情况下,与作为HTML浏览器750的公共状态的“暂停”关联。根据DVB-MHP 1.1标准,某些资源不可用于显示处于“暂停”状态中的HTML数据。因此,定义这样的对应关系。
在从上往下数的第四行中,“停止”和从上往下数的第二和第三行中所示的情况之外的情况关联。具体来说,从上往下数的第二和第三行中所示的情况之外的情况指所有HTML数据都处于“加载”状态、“销毁”状态或“杀死”状态,或处于读取尚未完成的状态的情况。在这样的情况下,还未执行处理HTML数据的交互,因此可以使这样的情况关联于没有使用资源的“停止”。
如上所述,HTML浏览器750的HTML管理器5205通过改变AIT中的控制信息或来自HTML数据的指令转换HTML数据的状态。第二个转换部751从HTML管理器5205接收状态改变通知。在HTML浏览器750的状态因此改变的情况下,第二个转换部751参考图69中的转换表来产生“格式引擎状态改变”消息,并向组合部730通知该改变。在此情况,第二个转换部751在一级存储部109中存储HTML浏览器750的公共状态。第二个转换部751在HTML数据的状态改变之后比较存储的公共状态与HTML浏览器750的公共状态。另外,第二个转换部751也可以产生“格式引擎状态改变”消息,并在无论何时从HTML管理器5205得到HTML数据状态改变的通知时,向组合部730通知该改变。
当接收到来自组合部730的“执行格式引擎”消息时,第二个转换部751控制HTML浏览器750将AIT定义的预定HTML数据的状态转换为“活动”状态。预定的HTML数据可以是由AIT定义的所有HTML数据,或具有最高优先级的HTML数据。为了将预定HTML数据的状态转换为“活动”状态,可以使用由DVB-MHP 1.1标准定义的org.dvb.application包的功能。通过指定状态应改变的HTML数据的ID,然后指定转换后的状态“活动”,可以将作为转换目标的HTML数据的状态转换为“活动”状态。在没有HTML数据处于“活动”状态时,第二个转换部751可以不进行任何处理。
当接收到来自组合部750的“停止格式引擎”消息时,第二个转换部751控制HTML浏览器750将AIT定义的所有HTML数据的状态转换为“杀死”状态。对尚未读取的HTML数据,不需要进行任何处理。为了将所有HTML数据的状态转换为“杀死”状态,可以使用由DVB-MHP 1.1标准定义的org.dvb.application包的功能。通过指定状态应改变的HTML数据的ID,然后指定转换后的状态“杀死”,可以将作为转换目标的HTML数据的状态转换为“杀死”状态。此操作可以对AIT定义的所有HTML数据执行。
当接收到来自组合部730的“暂停格式引擎”消息时,第二个转换部751在AIT定义的HTML数据中搜索处于“活动”状态的HTML数据,并控制HTML浏览器750将这样的HTML数据的状态转换为“暂停”状态。为了实现此处理,可以使用由DVB-MHP 1.1标准定义的org.dvb.application包的功能。在指定HTML数据的ID之后,获取该HTML数据的状态。如果状态为“活动”,则指定转换后状态“暂停”。以此方式,可以将作为转换目标的HTML数据的状态转换为“暂停”状态。此操作可以对AIT定义的所有HTML数据执行。
当接收到来自组合部730的“应用程序/数据列表请求”消息时,第二个转换部751基于AIT定义的HTML数据及其状态创建“应用程序/数据列表响应”消息,并发送该消息到组合部730。像包含在“应用程序/数据列表响应”消息中的应用程序名称那样,照原样使用AIT定义的应用程序名称。通过使用转换表将每个HTML数据的状态转换为由组合部730定义的公共状态,创建包含在“应用程序/数据列表响应”消息中的状态ID。
图70展示用于将每个HTML数据的状态转换为公共状态的转换表的例子。在图70中,在左边一栏中,展示由DVB-HMP 1.1标准定义的HTML数据的状态。在右边一栏中,展示对应的公共状态。如从上往下数的第二行所示,由DVB-MHP 1.1标准定义的HTML数据的状态“活动”关联于公共状态“在执行期间”。定义这样的对应关系是因为最小资源被用来进行处于“活动”状态的HTML数据显示和用户之间的交互的可能性一般很高。
在图70中,如从上往下数的第三行所示,由DVB-MHP 1.1标准定义的HTML数据的状态“暂停”关联于公共状态“暂停”。根据DVB-MHP 1.1标准,用于处于“暂停”状态的HTML数据的显示和用户之间的交互处理的资源有限。因此,定义这样的对应关系。
如从上往下数的第四行所示,对从上往下数的第二和第三行中所示的情况之外的情况,与公共状态“停止”关联。具体来说,从上往下数的第二和第三行中所示的情况之外的情况指所有HTML数据都处于“加载”状态、“销毁”状态或“杀死”状态,或处于读取尚未完成的状态的情况。在这样的情况下,还未执行HTML数据的解释和显示处理及与用户进行的交互处理,因此可以使这样的情况关联于没有使用资源的“停止”。
下面,对AIT定义数据名称为“天气预报”的HTML的状态为“活动”并定义数据名称为“假日外出信息”的HTML数据的状态为“销毁”的情况进行说明。在此情况,当接收到“应用程序/数据列表请求”消息时,第二个转换部751创建图71中所示的“应用程序/数据列表响应”消息4700,并发送该消息到组合部730。
图71展示由第二个转换部751发送的消息的具体例子。图71中所示的消息7100是从HTML浏览器750到浏览器720的“应用程序/数据获取响应”。在源ID字段7101中,存储指示HTML浏览器750的子程序ID“3”(见图18)。在目的地ID字段7102中,存储指示浏览器720的子程序ID“1”(见图18)。在消息ID字段7103中,存储指示“应用程序/数据获取响应”消息ID的“12”(见图19)。在数据长度字段7104中,存储指示数据长度的“27”。在应用程序数量字段7110中,存储指示HTML浏览器750接收的由AIT定义的HTML数据的数量“2”。
在图71中,应用号字段7105包括第一个HTML数据的应用程序信息字段7111和第二个HTML数据的应用程序信息字段7112。在应用程序ID字段7121中,存储指示第一个HTML数据的应用程序ID“1”。在应用程序状态ID字段7122中,存储指示“在执行期间”的应用程序状态ID“3”。“在执行期间”状态是作为转换HTML数据的操作状态“活动”的结果获得的。在应用程序名称长度字段7123中,存储指示应用程序名称的长度的“8”。在应用程序名称字段7124中,存储由AIT定义的应用程序名称“天气预报”。在此,“天气预报”的每个字符都由双字节码表示,因此,应用程序名称长度为4字符×2字节=8字节。在应用程序ID字段7125中,存储指示第二个HTML数据的应用程序ID“2”。在状态ID字段7126中,存储指示“停止”的应用程序状态ID“3”。“停止”状态是作为转换java应用程序的操作状态“销毁”的结果获得的。在应用程序名称长度字段7127中,存储指示应用程序名称长度的“12”。在应用程序名称字段7128中,应用程序名称“假日外出信息”的每个字符由双字节码表示,因此,应用程序名称长度为6字符×2字节=14字节。
如上所述,HTML浏览器750的HTML管理器5205通过AIT中的控制信息中的改变或来自HTML数据的指令来转换HTML数据的状态。第二个转换部751从HTML管理器5205接收状态改变通知。在此,第二个转换部751产生“应用程序/数据列表改变”消息,并向组合部730通知该改变。当接收到来自组合部730的“执行应用程序/数据”消息时,第二个转换部751控制HTML管理器5205将消息的数据字段175中定义的HTML数据的状态转换为“活动”状态。为了将HTML数据的状态转换为“活动”状态,可以使用由DVB-MHP1.1标准定义的org.dvb.application包的功能。通过指定应改变状态的HTML数据的ID,然后指定转换后的状态“活动”,可以将作为转换目标的HTML数据的状态转换为“活动”状态。当HTML数据已经处于“活动”状态时,第二个转换部751可以不进行处理。
当接收到来自组合部730的“停止应用程序/数据”消息时,第二个转换部751控制HTML管理器5205将消息的数据字段175中指定的HTML数据的状态转换为“杀死”状态。对尚未读取的HTML数据,不需要进行任何处理。为了将HTML数据的状态转换为“杀死”状态,可以使用由DVB-MHP 1.1标准定义的org.dvb.application包的功能。通过指定HTML数据的ID,然后指定转换后的状态“杀死”,可以将作为转换目标的HTML数据的状态转换为“杀死”状态。
当接收到来自组合部730的“暂停应用程序/数据”消息时,第二个转换部751控制HTML管理器5205将消息的数据字段175中指定的HTML数据的状态转换为“暂停”状态。为了实现此处理,可以使用由DVB-MHP 1.1标准定义的org.dvb.application包的功能。通过指定HTML数据的ID,然后指定转换后的状态“暂停”,可以将作为转换目标的HTML数据的状态转换为“暂停”状态。
第二个转换部751可以得到来自组合部730的资源管理部733的资源剥夺通知。第二个转换部751可以使HTML管理器5205根据被剥夺的资源转换HTML数据的状态。在剥夺了显示HTML数据必需的资源的情况下,第二个转换部751将所有HTML数据的状态转换为“杀死”。在其他资源的情况,第二个转换部751不需要进行任何处理。
HTML浏览器750可以直接接收资源剥夺通知并执行对应的处理。对HTML浏览器750的说明现已完成。
接下来,参考图72至73,对邮件程序760进行说明。邮件程序760是读写电子邮件的格式引擎。不像Java中间件740和HTML浏览器750,不定义由邮件程序760处理的应用程序或数据的状态。也不具体定义邮件程序760的状态。在此,假设邮件程序760具有两种状态“在执行期间”和“停止”。邮件程序760具有电子邮件软件的一般功能。邮件程序760的功能是众所周知的,因此不在这里描述。
第三个转换部761转换来自组合部730的消息,并发送该消息到邮件程序760,转换邮件程序760的操作状态,并发送该操作状态到组合部730。以此方式,第三个转换部761使邮件程序760的操作状态适应由组合部730定义的公共状态。至此,描述了通过组合部730发送到邮件程序的各种消息。准确地说,这些消息是发送到第三个转换部761,而不是邮件程序760。
当第三个转换部761接收到来自组合部730的“格式引擎状态请求”消息时,第三个转换部761基于邮件程序760的操作状态创建“格式引擎状态响应”消息,并发送该消息到组合部730。
图72展示指示邮件程序760的状态和由组合部730定义的公共状态之间的对应关系的转换表的例子。在图72中,在左边一栏中,展示邮件程序760的个别状态的状态。在右边一栏中,展示邮件程序760对应的公共状态。具体来说,公共状态是图21中所示的两种状态“在执行期间”和“停止”。在从上往下数的第二至第三行中,展示邮件程序760的个别状态,它们对应于这两种状态。
首先,在从上往下数的第二行中,在邮件程序活动情况下,与作为邮件程序760的公共状态的“在执行期间”关联。定义这样的对应关系是因为处于活动状态的邮件程序使用最小资源如网络接口等等的可能性一般较高。
接下来,在从上往下数的第三行中,在邮件程序760停止的情况下,与作为邮件程序760的公共状态的“停止”关联。当邮件程序760停止时,邮件程序760不使用任何资源。因此,可以将这样的状态与“停止”关联。对邮件程序760,没有对应于公共状态“暂停”的个别状态。
当出现意外情况时,邮件程序760可能终止邮件程序760自身。第三个转换部761从邮件程序760接收此改变。在此,第三个转换部761产生“格式引擎状态改变”消息,并向组合部730通知该改变。当接收到来自组合部730的“执行格式引擎”消息时,第三个转换部761激活邮件程序760。当接收到来自组合部730的“停止格式引擎”消息时,第三个转换部761终止邮件程序760。当接收到来自组合部730的“暂停格式引擎”消息时,第三个转换部761终止邮件程序760。如图72所示,邮件程序没有对应于“暂停”的状态。在此,“暂停”指不使用最小资源(见图21)。为了实现此效果,除了终止邮件程序之外没有其他办法。
当接收到来自组合部730的“应用程序/数据列表请求”消息时,第三个转换部761创建“应用程序/数据响应”消息,并发送该消息到组合部730。由于邮件程序760没有任何要处理的应用程序或数据,产生应用程序数量为“0”的消息。
图73展示由第三个转换部761创建的“应用程序/数据列表响应”消息的具体例子。图73中所示的消息7300是从邮件程序760到浏览器720的“应用程序/数据获取响应”。在源ID字段7301中,存储指示邮件程序的子程序ID“4”。在目的地ID字段7302中,存储指示浏览器720的子程序ID“1”。在消息ID字段7303中,存储指示“应用程序/数据获取响应”消息ID的“12”(见图19)。在数据长度字段7304中,存储指示数据长度的“1”。在应用程序数量字段7305中,存储“0”。
当接收到来自组合部730的“执行应用程序/数据”消息时、“停止应用程序/数据”消息或“暂停应用程序/数据”消息时,第三个转换部760不进行任何处理。原因是邮件程序760没有任何要处理的应用程序或数据的状态。第三个转换部761不创建任何“应用程序/数据列表改变”消息。
第三个转换部761可以得到来自组合部730的资源管理部733的资源剥夺通知。第三个转换部761可以根据被剥夺的资源终止邮件程序760。在剥夺了执行邮件程序必需的资源如网络接口等等的情况下,第三个转换部761终止邮件程序760。在剥夺了其他资源的情况,第三个转换部761不需要进行任何处理。
邮件程序760可以直接接收资源剥夺通知并执行对应的处理。对邮件程序760的说明现已完成。对信息处理器具体结构的说明现已完成。
(详细操作)接下来,参考图74至图84,对在上面的结构例子描述的数字电视中执行的第一个操作例子和第二个操作例子进行说明。
(第一个操作例子的详细操作)首先,参考图74至图81,对第一个操作例子的详细操作进行说明。图74为流程图,展示数字电视中执行第一个操作例子的处理流程。在图74中,浏览器720接收格式引擎的激活请求(步骤S1)。激活请求通常由用户做出。例如,用户在图8所示的状态中按下输入部111的确定按钮305来做出对Java中间件740的激活请求。
接下来,浏览器720选择格式引擎中的一个(步骤S2)。对步骤2中选择的格式引擎执行接下来的步骤S3至S6。然后,浏览器720发送对步骤S2中选择的格式引擎的“格式引擎(在图中为“格式引擎”)状态请求”消息到组合部730(步骤S3)。此消息由组合部730发送到对应于该格式引擎的转换部。
在此,说明由通信部731发送消息时执行的处理。图75为流程图,展示由通信部731执行消息发送时的处理流程。当接收到消息(步骤S7501)时,通信部731参考消息中的目的地ID字段的值。当目的地ID字段的值为“0”(步骤S7502)时,通信部731发送消息到浏览器720、Java中间件740、HTML浏览器750、邮件程序760及组合部730的状态管理部732(步骤S7503)。当目的地ID字段中的值为“1”时(步骤S7504),通信部731发送该消息到浏览器720(步骤S7505)。当目的地ID字段的值为“2”时(步骤S7506),通信部731发送该消息到Java中间件740(步骤S7507)。当目的地ID字段的值为“3”时(步骤S7508),通信部731发送该消息到HTML浏览器775(步骤S7509)。当目的地ID字段的值为“4”时(步骤S7510),通信部731发送该消息到邮件程序760(步骤S7511)。当目的地ID字段的值为“5”时(步骤S7512),通信部731发送该消息到组合部730的状态管理部732(步骤S7513)。通过上述处理,来自每个子程序的消息被发送到适当的子程序。通信部731在每次接收到消息时执行上述处理。
接下来,说明每个转换部在步骤S3中接收到“格式引擎状态请求”消息时的处理流程。
图76为流程图,展示第一个转换部741接收到“格式引擎状态请求”消息时的处理流程。当接收到“格式引擎状态请求”消息时(步骤S7601),第一个转换部741检查是否有Java应用程序处于“活动”状态(步骤S7602)。当有Java应用程序处于“活动”状态时,第一个转换部741创建指示Java中间件740处于“在执行期间”状态的“格式引擎状态响应”消息(步骤S7603)。当没有Java应用程序处于“活动”状态时,第一个转换部741检查是否有Java应用程序处于“暂停”状态(步骤S7604)。当有Java应用程序处于“暂停”状态时,第一个转换部741创建指示Java中间件740处于“暂停”状态的“格式引擎状态响应”消息(步骤S7605)。当没有Java应用程序处于“暂停”状态时,第一个转换部741创建指示Java中间件740处于“停止”状态的“格式引擎状态响应”消息。在步骤S7603、S7605或S7606之后,第一个转换部741发送创建的“格式引擎状态响应”消息到组合部730(步骤S7607)。
第二个转换部751接收到“格式引擎状态请求”消息时的处理流程符合图76中的流程图。
图77为流程图,展示第三个转换部771接收到“格式引擎状态请求”消息时的处理流程。当接收到“格式引擎状态请求”消息时(步骤S7701),第三个转换部771检查邮件程序760是否活动(步骤S7702)。当邮件程序760活动时,第三个转换部771创建指示邮件程序760活动的“格式引擎状态响应”消息(步骤S7703)。当邮件程序760不活动时,第三个转换部771创建指示邮件程序760停止的“格式引擎状态响应”消息(步骤S7704)。在步骤S7703或S7704中,第三个转换部771发送创建的“格式引擎状态响应”消息到组合部730(步骤SS7705)。
通过图76和图77中所示的处理,发送“格式引擎状态响应”消息到浏览器720。回到图74,在步骤S3之后,浏览器720接收“格式引擎状态响应”消息(步骤S4)。然后,基于接收到的消息,浏览器720确定步骤2中选择的格式引擎是否在执行期间(步骤S5)。
当在步骤5中确定格式引擎不在执行期间时,浏览器720跳过步骤6中的处理并执行步骤7中的处理。当确定格式引擎在执行期间时,浏览器720发送该格式引擎的“停止格式引擎”消息到组合部730(步骤S6)。此消息由组合部403发送到对应于该格式引擎的转换部。
接下来,说明每个转换部在步骤S6中接收到“停止格式引擎”消息时的处理流程。
图78为流程图,展示第一个转换部741接收到“停止格式引擎”消息时的处理流程。当接收到“停止格式引擎”消息(步骤S7801)时,第一个转换部741从AIT中选择一个Java应用程序(步骤S7802)。然后,第一个转换部741检查选择的Java应用程序的状态是否是“销毁”状态和读取前的状态中的一个(步骤S7803)。当选择的Java应用程序的状态既不是“销毁”也不是读取前的状态时,第一个转换部741转换选择的Java应用程序状态为“销毁”(步骤S7804)。当选择的Java应用程序的状态是“销毁”或读取前的状态时,第一个转换部741跳过步骤S7804中从处理并执行步骤S7805中的处理。具体来说,第一个转换部741确定是否在步骤S7802中选择了所有Java。当至少有一个Java应用程序未被选择时,第一个转换部741执行步骤S7802中的处理。然后,第一个转换部741重复步骤S7802至S7805中的处理。当已选择了所有Java应用程序时,第一个转换部741终止图78中的处理。如上所述,第一个转换部741对所有Java应用程序执行步骤S7802至S7804中的处理。
图79为流程图,展示第二个转换部751接收到“停止格式引擎”消息时的处理流程。当接收到“停止格式引擎”消息时(步骤S7901),第二个转换部751从AIT中选择一个HTML数据(步骤S7902)。然后,第二个转换部751检查选择的HTML数据的状态是否是“杀死”状态和读取之前的状态中的一个(步骤S7903)。当选择的HTML数据的状态既不是“杀死”也不是读取之前的状态时,第二个转换部751将选择的HTML数据的状态转换为“摧毁”(步骤S7904)。当选择的HTML数据的状态是“杀死”或读取之前的状态时,第二个转换部751跳过步骤S7904中的处理并执行步骤S7905中的处理。这样,第二个转换部751对所有HTML数据执行步骤S7902至S7904中的处理(步骤S7905)。
图80为流程图,展示第三个转换部761接收到“停止格式引擎”消息时的处理流程。当接收到“停止格式引擎”消息时(步骤S8001),第三个转换部761检查邮件程序760是否活动(步骤S8002)。当邮件程序760活动时,第三个转换部761终止邮件程序760(步骤S8003),并终止图80中所示的处理。当邮件程序760不活动时,第三个转换部761跳过步骤S8003中的处理,并终止图80中所示的处理。通过图78至图80中所示的处理,处于“在执行期间”操作状态的格式引擎终止。回到图74,在步骤S5或S6之后,浏览器720在步骤S2确定除作为激活请求目标的格式引擎之外是否已选择了所有的格式引擎中(步骤S7)。当至少有一个格式引擎未被选中时,浏览器720执行步骤S2中的处理。然后,浏览器720重复步骤S2至S7中的处理。当已选择了所有格式引擎时,浏览器720将作为激活请求目标的格式引擎的“执行格式引擎”消息发送到组合部(步骤S8)。然后,浏览器740终止图74中的处理。
接下来,说明每个转换部在步骤S8接收到“执行格式引擎”消息时的处理流程。
图81为流程图,展示第一个转换部741接收到“执行格式引擎”消息时的处理流程。当接收到“执行格式引擎”消息时(步骤S8101),第一个转换部741确定要执行的Java应用程序(步骤S8102)。此确定通过例如从AIT中选择优先级最高的Java应用程序来执行。然后,第一个转换部741确定步骤S8103中确定的Java应用程序的状态是否是“活动”(步骤S8103)。当Java应用程序的状态不是“活动”时,第一个转换部741将Java应用程序的状态转换为“活动”(步骤S8104),并终止图81中所示的处理。当Java应用程序的状态是“活动”时,第一个转换部741跳过步骤S8104中的处理并终止图81中所示的处理。
第二个转换部751接收“执行格式引擎”消息时的处理流程符合图81中所示的流程图。
第三个转换部761接收“执行格式引擎”消息时的处理流程符合图81中所示的流程图。
如上所述,通过在图74所示的步骤S8中发送的“执行格式引擎”消息,激活作为激活请求目标的格式引擎。由于其他格式引擎(不是激活请求目标的格式引擎)不处于状态“在执行期间”,因此可以避免对最小资源的争用。
在图74的步骤S6中,浏览器720发送“停止格式引擎”消息。另外,浏览器720也可以发送“暂停格式引擎”消息。在此情况中,其他格式引擎(不是激活请求目标的格式引擎)不处于状态“在执行期间”,因此可以避免对最小资源的争用。
接下来,说明每个转换部在接收“暂停格式引擎”消息时的处理流程。
图82为流程图,展示第一个转换部741接收到“暂停格式引擎”消息时的处理流程。当接收到“暂停格式引擎”消息时(步骤S8201),第一个转换部741从AIT中选择一个Java应用程序(步骤S8202)。然后,第一个转换部741确定选择的Java应用程序的状态是否是“活动”(步骤S8203)。当选择的Java应用程序的状态是“活动”时,第一个转换部741将选择的Java应用程序的状态转换为“暂停”(步骤S8204)。当选择的Java应用程序的状态不是“活动”时,第一个转换部741跳过步骤S7804中的处理,并执行步骤S8205中的处理。因此,第一个转换部741对所有的Java应用程序执行步骤S8202至S8204中的处理(步骤S8205)。
第二个转换部751接收到“暂停格式引擎”消息时的处理流程符合图82中所示的流程图。
第三个转换部761接收到“暂停格式引擎”消息时的处理流程和接收到“停止格式引擎”消息时的处理流程相同。
(第二个操作例子的详细操作)接下来,对第二个操作例子的详细操作进行说明。图83为流程图,展示在数字电视中执行第二个操作例子的处理流程。在图83中,浏览器720接收格式引擎的激活请求(步骤S11)。步骤S11中的处理本质上和第一个操作例子的步骤S1中的处理相同。
接下来,浏览器720将作为激活请求目标的格式引擎的“执行格式引擎”消息发送到组合部733(步骤S12)。已通过组合部733接收到消息的转换部的处理本质上和第一个操作例子相同。
每个格式引擎在响应“执行格式引擎”消息而激活之后,在需要时向库711请求对资源的使用。对每个格式引擎预先定义是否请求对资源的使用。下面,在格式引擎请求了对资源的使用的假设基础上进行说明。当格式引擎未请求使用最小资源时,格式引擎继续照原样操作。
在步骤S12之后,库711从激活的格式引擎接收使用最小资源的请求(步骤S13)。在此阶段,格式引擎尚未得到使用最小资源的许可。然后,库711确定是否存在使用最小资源的重叠请求(步骤S14)。在此“存在使用最小资源的重叠请求”指存在多个使用单个最小资源的请求。因此,即使存在使用两个不同的最小资源中的每一个的请求,也不意味着存在使用最小资源的重叠请求。下面,详细说明步骤S14中的确定处理。
在步骤S14中,库711向格式引擎指定部3905查询该激活请求是向哪个格式引擎做出的。为了响应此查询,格式引擎指定部3905参考进程存储部3901来指定向其做出激活请求的格式引擎。然后,格式引擎指定部3905向库711通知指定的格式引擎。现已指定在使用最小资源的格式引擎。因此,基于在使用最小资源的格式引擎(没有此格式引擎,则确定不存在重叠请求)和由格式引擎指定部3905通知的格式引擎,库711可以确定是否存在使用最小资源的重叠请求。
当在步骤S14中不存在重叠请求时,库711允许已做出使用最小资源的请求的格式引擎使用最小资源(步骤S19),并终止图83中所示的处理。
当在步骤S14中存在重叠请求时,库711获取优先级信息(步骤S15)。具体来说,库711请求资源管理部733的优先级信息提供部S3906提供优先级信息。在此,优先级信息概念上包括存储在优先级存储部3902中的优先级和存储在最新激活存储部3903中的优先级。换句话说,为了响应来自库711的请求,优先级信息提供部S3906发送存储在优先级存储部3902中的优先级和存储在最新激活存储部3903中的最新激活信息。
库711使用优先级信息提供部3906发送的信息来确定允许其使用最小资源的格式引擎(步骤S16)。通过步骤S16,可以实现图6所示允许确定部61的功能。在前面,步骤S16中的处理由库执行。另外,优先级信息提供部3906可以确定允许其使用最小资源的格式引擎,并向库711通知已确定的格式引擎。
步骤S16中的处理例如按如下执行。在此,将在步骤S11中做出激活请求的格式引擎称作格式引擎A,而将在使用最小资源的格式引擎称作格式引擎B。
库711首先基于最新激活信息确定最新激活的格式引擎是否是格式引擎A。当用户最新激活的格式引擎是格式引擎A时,库711确定允许格式引擎A使用最小资源。当用户最新激活的格式引擎不是格式引擎A时,库711确定最新激活的格式引擎是否是格式引擎B。当用户最新激活的格式引擎是格式引擎B时,库711确定允许格式引擎B使用最小资源。即,库711确定允许用户最新激活的格式引擎使用最小资源。
当用户最新激活的格式引擎既不是格式引擎A也不是格式引擎B时,库711使用存储在优先级信息存储部3902中的信息来确定允许哪个格式引擎使用最小资源。具体来说,库711确定允许优先级信息存储部3902中的优先级较高的格式引擎使用最小资源。
在步骤S16之后,库711允许步骤S16中确定的格式引擎使用最小资源(步骤S17)。然后,库711通知步骤S16中确定的格式引擎之外的格式引擎资源已被剥夺(步骤S18)。具体来说,库711请求资源管理部733的资源剥夺通知部3907发送资源剥夺通知到这样的格式引擎。据此,资源剥夺通知部3907发送资源剥夺通知到这样的格式引擎。在步骤S18之后,库711终止图83中所示的处理。
通过上述处理,将资源剥夺通知发送到对应于不允许其使用最小资源的格式引擎的转换部。转换部根据资源剥夺通知执行下面的处理。
图84为流程图,展示接收到资源剥夺通知的转换部的处理流程。图84中所示的处理由转换部执行。另外,格式引擎也可以执行相同的操作。首先,转换部接收已被资源剥夺通知部3904剥夺的资源的资源ID(步骤S8401)。接下来,转换部确定格式引擎是否可以继续执行(步骤S8402)。在此,“格式引擎可以继续执行”指“即使没有该资源(被剥夺的资源),格式引擎也能够继续执行”。当在步骤S8402中格式引擎可以继续执行时,转换部终止图84中所示的处理。被剥夺资源的格式引擎继续执行。
当在步骤S8402中格式引擎不能继续执行时,转换部确定如果暂停该格式引擎,该格式引擎是否可以执行(步骤S8403)。当在步骤S8403中格式引擎不能继续执行时,转换部停止格式引擎(步骤S8404)。当格式引擎可以继续执行时,转换部暂停该格式引擎(步骤S8405)。
在图84中,格式引擎是停止或暂停的目标。在对由格式引擎(上述的Java应用程序或HTML数据)执行的应用程序或由格式引擎显示的数据定义状态的情况下,除了改变格式引擎的操作状态之外,还可以改变这样的应用程序或数据的状态。参考图84描述的状态是公共状态。转换部根据格式引擎的操作状态以适当方式转换公共状态来转换格式引擎的状态。
在图83中,库711将存储在优先级存储部3902中的优先级和存储在最新激活存储部3903中的最新激活信息用作优先级信息来做出步骤S16中的确定。另外,库711也可以首先只获取最新激活信息,然后在发现用户最新激活的格式引擎既不是格式引擎A也不是格式引擎B时再获取存储在优先级存储部3902中的优先级。库711可以只使用存储在优先级存储部3902中的优先级来做出步骤S16中的确定。对第二个操作例子的详细说明现已完成。
(其他操作例子)在上述结构例子中,也发送和接收图74至图84所示的那些类型之外的各种类型的消息。下面,说明转换部发送和接收图74至图84所示的那些类型之外的消息的处理。
图85为流程图,展示第一个转换部741从应用程序管理器4503接收Java应用程序的状态改变通知的处理流程。当从应用程序管理器4503接收Java应用程序的状态改变通知时(步骤S8501),第一个转换部741基于Java应用程序的操作状态确定Java中间件740的公共状态(步骤S8502)。第一个转换部741也比较存储在一级存储部109中的Java中间件740改变前的公共状态与在步骤S8502中确定的Java中间件740公共状态,并确定公共状态是否在改变之后还发生了改变(步骤S8503)。当确定公共状态已发生改变时,第一个转换部741创建“格式引擎改变”消息,并发送该消息到组合部(步骤S8504)。最后,第一个转换部741创建有关Java应用程序、已改变的状态的“应用程序/数据列表改变”消息,并发送该消息至组合部730(步骤S8505)。
第二个转换部751从HTML管理器5205接收状态改变通知时的处理流程符合图85中所示的处理。
图86为流程图,展示第一个转换部741接收到“应用程序/数据列表请求”消息时的处理流程。当接收到“应用程序/数据列表请求”消息时(步骤S8601),第一个转换部741从AIT获取Java应用程序的列表(步骤S8602)。接下来,第一个转换部741从Java中间件740中获取每个Java应用程序的状态(步骤S8603)。第一个转换部741将获取的每个Java应用程序的状态转换为应用程序/数据的公共状态(步骤S8604)。最后,第一个转换部741创建“应用程序/数据列表响应”消息,并发送该消息到组合部730(步骤S8605)。
第二个转换部751接收到“应用程序/数据列表请求”消息时的处理流程符合图86中所示的处理。
图87为流程图,展示第一个转换部741接收到“执行应用程序/数据”消息时的处理流程。当接收到“执行应用程序/数据”消息时(步骤S8701),第一个转换部741确定在“执行应用程序/数据”消息中指定的Java应用程序的操作状态是否是“活动”(步骤S8702)。当确定Java应用程序的状态不是“活动”时,第一个转换部741将指定的Java应用程序的操作状态转换为“活动”(步骤S8703)。当确定Java应用程序的操作状态是“活动”时,第一个转换部741终止图87中所示的处理。
第二个转换部751接收到“执行应用程序/数据”消息时的处理流程符合图87中所示的处理。
图88为流程图,展示第一个转换部741接收到“停止应用程序/数据”消息时的处理流程。当接收到“停止应用程序/数据”消息时(步骤S8801),第一个转换部741确定在“停止应用程序/数据”消息中指定的Java应用程序的操作状态是否是“销毁”(步骤S8802)。当确定Java应用程序的状态不是“销毁”时,第一个转换部741将指定的Java应用程序的操作状态转换为“销毁”(步骤S8803)。当确定Java应用程序的操作状态为“销毁”时,第一个转换部741终止图88中所示的处理。
第二个转换部751接收到“停止应用程序/数据”消息时的处理流程符合图88中所示的处理。
图89为流程图,展示第一个转换部741接收到“暂停应用程序/数据”消息时的处理流程。当接收到“暂停应用程序/数据”消息时(步骤S8901),第一个转换部741确定在“暂停应用程序/数据”消息中指定的Java应用程序的状态是否是“活动”(步骤S8902)。当确定Java应用程序的状态是“活动”时,第一个转换部741将指定的Java应用程序的状态转换为“暂停”(步骤S8903)。当确定Java应用程序的操作状态是“活动”时,第一个转换部741终止图89中所示的处理。
第二个转换部751接收到“暂停应用程序/数据”消息时的处理流程符合图89中所示的处理。
图90为流程图,展示第三个转换部761从邮件程序760接收到邮件程序760已终止的通知时的处理流程。当从邮件程序760接收到邮件程序760已终止的通知(步骤S9001)时,第三个转换部761创建“格式引擎状态改变”消息,并发送该消息到组合部(步骤S9002)。
图91为流程图,展示组合部730的状态管理部732在组合部730接收到“格式引擎状态改变”消息时的处理流程。首先,组合部730接收“格式引擎状态改变”消息(步骤S9101)。接下来,组合部730参考接收到的消息中的源ID字段来指定状态已改变的格式引擎,并发送指定的格式引擎的“格式引擎状态请求”消息(步骤S9102)。结果,组合部730的状态管理部732接收“格式引擎状态响应”消息(步骤S9103),并在一级存储部109中存储格式引擎的状态(步骤S9104)。
图92为流程图,展示组合部730的状态管理部723在组合部730接收到“应用程序/数据列表改变”消息时的处理流程。首先,组合部730接收“应用程序/数据列表改变”消息(步骤S9201)。接下来,组合部730参考接收到的消息的源ID字段来指定正在执行应用程序或显示数据且状态已改变的格式引擎,并发送指定的格式引擎的“应用程序/数据列表请求”消息(步骤S9202)。结果,组合部730的状态管理部732接收“应用程序/数据列表响应”消息(步骤S9203),并在一级存储部109中存储应用程序/数据的状态(步骤S9204)。
在上述说明中,通过向浏览器720提供状态管理部732的功能,可以从组合部730中删除状态管理部732。对这样的结构,浏览器720管理所有格式引擎的状态。
在此结构例子中,每个格式引擎都不限制所发送的消息的发送源。因此,格式引擎可以改变其他格式引擎的操作状态,或正在由该格式引擎执行的应用程序的状态,或正在由该格式引擎显示的数据的状态。例如,显然Java中间件740可以通过发送“执行格式引擎”消息到HTML浏览器750来停止HTML浏览器750。
在此结构例子中,在存储在ROM 110中的内容实际上存储在二级存储部108中的情况下,可以省略ROM 110。二级存储部108可以包括多个子二级存储部,其中每个子二级存储部存储不同的信息。例如,将存储在状态管理部732中的格式引擎的状态存储在一个子二级存储部中,将存储在第一个转换部741中的Java中间件740的状态存储在另一个子二级存储部中,而将存储在第二个转换部751中的HTML浏览器750的状态存储在另一个子二级存储部中。这样,可以进一步划分每个存储部。
如上所述,根据此实施形态,为了组合多个格式引擎,使用连接组合部730及每个格式引擎的转换部。这样,不需要显著改变每个格式引擎的实现。因此,可以用较少的步骤组合多个格式引擎。
通过使用由组合部730定义的公共状态,即使要组合更多的格式引擎,浏览器720也只需要增加消息的发送目的地。因此,可以容易地处理添加的格式引擎。
通过使用公共状态,浏览器720和组合部730可以容易地掌握多个格式引擎的状态。因此,可以容易地管理多个格式引擎。具体来说,可以容易地在同时控制多个格式引擎。
图93展示即使一个格式引擎在执行也不影响其他格式引擎的状态的组合。如图93所示,所有格式引擎都停止或暂停的情况指没有格式引擎在使用最小资源。因此,在图93所示的情况种,任何格式引擎都可以激活。例如,在图93所示的情况中,可以激活邮件程序760而不停止Java中间件740和HTML浏览器750。
当没有在组合部730中定义公共状态时,浏览器720需要掌握对每个单独的格式引擎定义的唯一状态的组合。在这样的情况下,浏览器720要确定是否可能在给定的情况下同时执行格式引擎是很困难的事。特别是,在此结构例子中,对于Java中间件740和HTML浏览器750,这些元素定义了由格式引擎执行的应用程序的状态,由格式引擎显示的数据,但没有定义其作为格式引擎的状态。因此,在上述情况下,浏览器720需要掌握由Java中间件740执行的Java应用程序和由HTML浏览器750显示的数据可以处于的所有状态的组合。对添加此结构例子中所述的Java中间件740、HTML浏览器750和邮件程序760之外的格式引擎的情况,也需要考虑对添加的格式引擎定义的状态的组合。这使得管理多个格式引擎更加困难。
工业实用性在上述说明中,描述了作为示意性实施形态的数字电视。本发明并不限于数字电视,并可以应用于操作多个格式引擎的信息处理器,如个人计算机、蜂窝电话、移动信息终端等等。
权利要求
1.一种存储多个格式引擎的信息处理器,其中每个格式引擎用于执行以不同的格式描述的数据,其特征在于,所述信息处理器包括预先定义公共状态,并管理每个格式引擎的操作的格式引擎管理装置,所述公共状态以对所有格式引擎相同的表示法定义每个格式引擎的操作状态;及对应于每个格式引擎提供的操作控制装置,所述操作控制装置预先定义公共状态和个别状态之间的对应关系,并控制格式引擎的操作,使得每个格式引擎处于任意的个别状态,所述个别状态以对每个格式引擎不同的表示法定义每个格式引擎的操作状态;其中为了将格式引擎改变为预定的公共状态,格式引擎管理装置将包含指示预定的公共状态的公共状态信息的消息发送到对应于该格式引擎提供的操作控制装置;及当从格式引擎管理装置发送消息时,操作控制装置控制格式引擎,使得格式引擎处于与由包含在所述消息中的公共状态信息指示的公共状态相对应的个别状态。
2.如权利要求1所述信息处理器,其特征在于,还包括对应于每个格式引擎提供的表存储装置,所述表存储装置存储包含几组每个格式引擎的个别状态及对应于该个别状态公共状态的表;所述操作控制装置参考所述表通过公共状态确定个别状态。
3.如权利要求1所述的信息处理器,其特征在于,还包括对应于每个格式引擎提供的个别状态获取装置,所述个别状态获取装置获取每个格式引擎的个别状态,并将指示与获取的个别状态相对应的公共状态的公共状态信息发送到格式引擎管理装置;所述格式引擎管理装置基于由个别状态获取装置输出的公共状态信息指示的公共状态管理每个格式引擎的操作。
4.如权利要求3所述的信息处理器,其特征在于,还包括由格式引擎在执行期间使用且不能由多个格式引擎同时使用的最小资源;其中当从格式引擎获取的个别状态展示出使用最小资源的操作状态时,个别状态获取装置将指示预定状态的公共状态信息作为该格式引擎的公共状态信息输出到格式引擎管理装置;及当从格式引擎获取的个别状态展示出不使用最小资源的操作状态时,个别状态获取装置将指示所述预定状态之外的状态的公共状态信息作为该格式引擎的公共状态信息输出到格式引擎管理装置;及格式引擎管理装置管理每个格式引擎的操作,使得只有一个格式引擎的公共状态信息指示所述预定状态。
5.如权利要求4所述的信息处理器,其特征在于,所述格式引擎管理装置包括接收激活格式引擎的激活请求的激活接收装置;公共状态获取装置从状态获取装置获取每个格式引擎的公共状态信息来响应所述激活接收装置接收到所述激活请求;当由公共状态获取装置获取的格式引擎的公共状态信息指示在执行期间状态时,将停止该格式引擎的操作的消息发送到对应于该格式引擎提供的操作控制装置的操作停止装置;及在格式引擎的操作由操作停止装置停止之后,将激活对应于激活请求的格式引擎的消息发送到对应于该格式引擎提供的操作控制装置的激活装置。
6.如权利要求1所述的信息处理器,其特征在于,还包括由格式引擎在执行期间使用且不能由多个格式引擎同时使用的最小资源;允许格式引擎使用所述资源来响应来自格式引擎的请求的资源控制装置;存储指示每个格式引擎对于最小资源使用的相对优先级的优先级信息的优先级信息存储装置;及当存在来自多个格式引擎的使用最小资源的重叠请求时,基于所述优先级信息确定允许其使用最小资源的格式引擎的允许确定装置;当存在来自多个格式引擎的使用最小资源的重叠请求时,资源控制装置只允许由允许确定装置确定的格式引擎使用最小资源;及当不存在来自多个格式引擎的使用最小资源的重叠请求时,资源控制装置允许做出请求的格式引擎使用最小资源。
7.如权利要求6所述的信息处理器,其特征在于,其中提供多个最小资源;及对应于所述多个最小资源提供多个资源控制装置。
8.一种由信息处理器的计算机执行的程序,所述信息处理器存储多个格式引擎,其中每个格式引擎用于执行以不同的格式描述的数据,其特征在于,所述程序使得计算机充当下述功能预先定义公共状态,并管理每个格式引擎的操作的格式引擎管理装置,所述公共状态以对所有格式引擎相同的表示法定义每个格式引擎的操作状态;及对应于每个格式引擎提供的操作控制装置,所述操作控制装置预先定义公共状态和个别状态之间的对应关系,并控制格式引擎的操作,使得每个格式引擎处于任意的个别状态,所述个别状态以对每个格式引擎不同的表示法定义每个格式引擎的操作状态;其中为了将格式引擎改变为预定的公共状态,格式引擎管理装置将包含指示预定的公共状态的公共状态信息的消息发送到对应于该格式引擎提供的操作控制装置;及当从格式引擎管理装置发送消息时,操作控制装置控制格式引擎,使得格式引擎处于与由包含在所述消息中的公共状态信息指示的公共状态相对应的个别状态。
全文摘要
提供能够容易地处理格式引擎的添加或更改的信息处理器。所述信息处理器包括格式引擎管理装置和操作控制装置。格式引擎管理装置预先定义公共状态,并管理每个格式引擎的操作。所述公共状态以对所有格式引擎相同的表示法定义每个格式引擎的操作状态。对应于每个格式引擎提供操作控制装置,所述操作控制装置预先定义公共状态和个别状态之间的关联,并控制格式引擎的操作,使得每个格式引擎处于任意的个别状态。所述个别状态以对每个格式引擎不同的表示法定义每个格式引擎的操作状态。
文档编号H04N5/44GK1711755SQ20038010322
公开日2005年12月21日 申请日期2003年10月9日 优先权日2002年10月9日
发明者堀井幸, 川上义雄, 胁康 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1