用于播放装置的集成电路的制作方法

文档序号:6750029阅读:271来源:国知局
专利名称:用于播放装置的集成电路的制作方法
技术领域
本发明涉及用于控制虚拟机中应用程序执行的应用程序控制技 术的领域,并且更具体地,涉及用于将该控制技术应用于例如 BD-ROM的记录介质和BD-ROM播放装置的应用技术,并且其中该 BD-ROM用于发行电影作品。
背景技术
用于虚拟机的应用程序控制技术,例如Java (TM)编程,已经 在个人计算机软件行业中得到了广泛应用。目前,如何将从个人计算 机软件发展而来的Java (注册商标,在下文中用TM表示)编程用于 实现BD-ROM (蓝光光盘只读存储器)播放装置中的播放控制是一 个研究的热点。
在下面专利文件1中叙述的技术是一种公知的关于一种类似的 播放装置的传统技术。 *专利文件1:日本专利公开No.281324
发明内容
本发明要解决的问题
同吋,Java (TM)编程所创建的应用程序的运行并不稳定,运 行状态会根据资源使用状态和CPU负载而改变。因此,经常会发生 资源短缺,而这会导致应用程序的启动失败或者导致应用程序异常终 止,从导致装置发生中断。在个人计算机软件行业中,人们可能并不 将这视为严重问题。但是,在制造例如BD-ROM播放装置这样的消费品的领域中,这种现象将会被视作质量问题。因此,许多制造商都
不愿意使用Java (TM)编程来实现装置控制。(注中断是指这样一 种状态,其中,装置中的软件停止工作并且显示屏变为黑屏)
本发明的目的是提供一种记录介质,当控制记录介质的应用程序 异常终止时,或者当该应用程序发生启动故障时,所述记录介质可以 实现失效保护。
解决这些问题的方法
通过一种记录介质可以实现上述目的,在该介质中记录有应用程 序、数字流以及管理信息,其中所述应用程序是用编程语言编写的用 于虚拟机的程序,并且定义了一个生存周期,在该周期内虚拟机可以 执行该应用程序,并且管理信息指示了在所述生存周期期间与所述应 用程序的执行同时执行的所述数字流的播放控制。
本发明的作用
根据本发明的记录介质,由于为每个生存周期定义与应用程序的 执行同时执行的数字流的播放控制,如果发生应用程序的启动故障或 者如果该应用程序在执行过程中异常终止,那么同时执行的数字流的 播放会继续进行,其提供了一种状态,在该状态中"屏幕上仍然显示 某些图像"。通过这种安排,可以避免装置发生中断这种最坏情况。 这至少在一定程度上可以使装置的制造商感到放心。
这种放心感可以把对质量问题放心不下的制造商推向通过Java (TM)应用程序的播放装置控制的开发。通过这种强有力的推动作 用,播放装置将会变得更便宜并且种类更多,并且BD-ROM的内容 也将得到丰富,而这也会引领内容相关行业的增长。
附图简述


图1显示了本发明的播放装置的一种使用形式; 图2显示了用于BD-ROM的文件/目录结构; 图3显示了播放列表信息的构建;图4显示了 AV剪辑时间轴和PL时间轴之间的关系;
图5显示了通过四个Clip—information—file—name实现的批说明;
图6显示了 PLMark信息的内部结构;
图7显示了通过PLMarks定义章;
图8显示了子路径信息的内部结构;
图9显示了如何在子播放项时间轴上做出同步说明和播放周期 的定义;
图IO显示了电影对象的内部结构; 图ll显示了BD-J对象的内部结构;
图12A显示了存储于Java (TM)存档文件中的程序和数据; 图12B显示了类文件的内部结构; 图13显示了盘内容中的状态改变; 图14显示了 HDMV模式中包含动态脚本的两个标题; 图15显示了BD-J模式(BD-J对象)中包含动态脚本的标题的 内部结构;
图16显示了不包含播放列表管理表的一个标题;
图17显示了从HDMV模式中标题到BD-J模式中标题的一个转
移;
图18显示了从BD-J模式中标题到HDMV模式中标题的一个转
移;
图19显示了 index.bdmv的内部结构;
图20A显示了应用程序管理表的内部结构;
图20B显示了应用程序管理表中包含的信息元素的含义;
图21A显示了整个盘的时间轴;
图21B显示了时间轴是如何构建的;
图22A和22B在整个BD-ROM的时间轴上显示了由一个BD-J 对象标识的标题播放周期,而该BD-J对象是由标识符"bobjjd"标 识的;
图23显示了在图22B中所示时间轴上定义的一种典型的生存周图24显示了包含三个标题的盘内容,所述三个标题为主标题、
在线购物标题以及游戏标题;
图25A和25B显示了应用程序管理表和生存周期的实例; 图26显示了三种运行属性(预发送、自动运行和暂停)以及前
一个标题的三种可能的状态(未运行、运行中和暂停); 图27A显示了播放列表管理表的内部结构; 图27B显示了播放列表管理表中包含的信息元素的含义; 图28显示了转移目的地标题的三种可能的状态((i)不具有播
放列表管理表;(ii)具有播放列表管理表和自动播放以及(iii)具
有播放列表管理表和预发送)与前一个标题中PL的两种可能的状态 (未播放以及正在播放)的六种组合;
图29A显示了播放列表管理表和应用程序管理表的描述实例; 图29B显示了如何基于图29A中所示播放列表和应用程序管理
表,使播放列表被播放和执行应用程序;
图30A显示了播放列表管理表的描述的一个实例;
图30B显示了是如何基于图30A中所示脚本播放播放列表以及
执行应用程序;
图31A至31C显示了播放列表时间轴和标题播放周期之间的关
系;
图32显示了本发明的播放装置的内部结构; 图33以层结构的方式显示了 CPU 24中的硬件和存储于其中的 软件;
图34是由呈现引擎31对模块管理器34所执行的处理的说明;
图35显示了应用程序管理器36所执行的处理;
图36显示了用户事件管理器37至缺省操作管理器40;
图37显示了Java (TM)虚拟机39的内部结构;
图38显示了应用程序终止的四种模式;
图39是一个流程图,该图显示了应用程序管理器36的工作步骤; 图40显示了播放列表管理表和应用程序管理表的具体实例; 图41A显示了实施例2中BD-J对象的内部结构;图41B显示了错误管理表的内部结构;
图42显示了错误管理表中五个标记的含义;
图43A显示了其中写有错误管理表的两个标题(标题#1,标题
#2);
图43B显示了根据图43A所示的应用程序和错误管理表进行的 应用程序执行和播放列表播放的进行过程;
图44是一个流程图,该图显示了实施例2中应用程序管理器36 的工作步骤;
图45是一个流程图,该图显示了实施例2中应用程序管理器36 的工作步骤;
图46是一个流程图,该图显示了由应用程序管理器36执行的通 知的工作步骤;
图47是一个流程图,该图显示了实施例3中应用程序管理器36
的工作步骤;
图48A显示了基于母级别的选择算法的内容;
图48B显示了基于音频语言的选择算法的内容;
图48C显示了基于对于视频的播放器配置的选择算法的内容;
图49是过程的说明,在该过程中,标题无界应用程序选择PL;
图50是一个流程图,该图显示了由播放控制引擎32执行的PL
播放工作步骤;
图51是一个流程图,该图显示了角改变步骤和向回跳读/向下跳 读的工作步骤;
图52是一个流程图,该图显示了当判断出调用了向回跳读/向下 跳读API时执行的处理步骤;
图53是一个流程图,该图详细显示了呈现引擎31的处理步骤; 图54是一个流程图,该图显示了子播放项的处理步骤。
符号描述
1 BD-ROM驱动器
2 读取缓冲器3 解复用器
4 视频解码器
5 视频平面
6 P图像解码器
7 呈现图像平面
8 合并单元
9 字体生成器
10 I图像解码器 11开关
12互动图像平面 13合并单元
14 CLUT单元
15 CLUT单元 16音频解码器 22用户事件处理单元
23 PSR集合
24 CPU
25脚本存储器 26本地存储器 33 HDMV模块 34模块管理器 35 BD-J模块 36用程序管理器
37 UO控制器
38 Java (TM)虚拟机 41PLMT处理器
42许可控制器 52用户类加载器 53方法区域 54工作存储器55a, 55b,…55n 线程
56a, 56b,…56n Java (TM)堆栈
具体实施例方式
实施例1
接下来的内容描述了本发明的记录介质的实施例。首先,将会描 述本发明的记录介质的使用形式。在图1中,本发明的记录介质是 BD-ROM 100。 BD-ROM 100用于向一个家庭影院系统提供内容,其 中该家庭影院系统包含播放装置200、遥控器300和电视400。
其中,遥控器300配有一些键,例如播放(Play)、停止CStop)、 暂停开始(Pause On)、暂停结束(Pause Off)、静止结束(Still Off) 向前播放(Forward Play,带有速度的说明)、向后播放(BackwardPlay, 带有速度的说明)、音频变换(Audio Change)、字幕变换(SubTitle Change)以及角度变换(Angle Change),并且这些键用于接收这些 功能的指令,还有一些键,例如向上移动(MoveUp)、向下移动(Move Down)向右移动(Move Right)以及向左移动(Move Left),这些键 用于接收在菜单操作期间使焦点发生移动的指令,另外还有弹出键 (PopUp),用于接收显示菜单的指令,以及用于接收数字输入的数 字键。
到现在为止,己经对本发明的记录介质的使用形式进行了描述。 接下来将描述本发明的记录介质的制造。可以通过BD-ROM上 文件系统的改进实现本发明的记录介质。图2显示了用于BD-ROM 的文件/目录结构。如图中所示,对于BD-ROM,在根目录下提供 BD雨目录。
BDMV目录具有扩展名为"bdmv"的文件("index.bdmv"、"Movie Object.bdmv"、 "BD-JObject.bdmv")。在BDMV目录下,有四个子目 录播放列表(PLAYLIST)目录、CLIPNF目录、流(STREAM) 目录以及BDJA目录。该播放列表目录具有扩展名为"mpls"的文件 ("OOOOl.mpls"、 "00002.mpls"、 "00003.mpls")。
CLIPNF目录具有扩展名为"dpi"的文件("00001.clpi"、"00002.clpi"、 "00003.dpi")。流目录具有扩展名为"m2ts"的文件 ("00001. m2ts"、 "00002. m2ts"、 "00003. m2ts")。 BDJA目录具有扩 展名为"jar"的文件("00001. jar"、 "00002. jar"、 "00003.jar")。通 过上面的描述可以知道,该目录结构可以使得在BD-ROM上记录不 同类型的文件。
在图2中,扩展名为"m2ts"的文件("00001. m2ts"、"00002. m2ts"、 "00003. m2ts",…)包含可以分为例如主剪辑和子剪辑的AV剪辑。 主剪辑是通过将多个基本流复用到一起而获得的,这些基本流是例如 视频流、音频流、构成字幕的呈现图像流(PG流),以及构成菜单的 互动图像流(IG流)。
子剪辑是对应于一种基本流的数字流,其中这些基本流是例如音 频流、图像流以及文本字幕流(TextStream)。扩展名为"dpi"的文 件("00001. clpi、 "00002. clpi"、 "00003. clpi",…)是与AV剪辑有 一一对应关系的管理信息。作为管理信息,剪辑信息具有关于如下方
面的信息AV剪辑中流的编码格式、帧速率、比特率、分辨率等等,
以及指示GOP的起始位置的"EP_map"。
扩展名为"mpls"的文件("00001. mpls"、 "00002. mpls"、 "00003. mpls",…)是包含播放列表信息的文件。播放列表信息是通过指出 AV剪辑而定义播放列表的信息。图3显示了播放列表信息的构造。 如图3的左手侧所示,播放列表信息包含主路径信息、PL Mark信息 以及子路径信息。
主路径信息(MainPath ())包含多条如虚线箭头"mpl"所指 示的播放项信息(Playltem ())。播放项(Play Item)是通过在一个 或多个AV剪辑时间轴上指定"In—time"和"Out—time"从而定义的 播放周期。将多个播放项信息合并在一起就定义了一个包含多个播放 周期的播放列表(PL)。图3中的虚线箭头"mp2"指示了播放项信 息的内部结构的局部放大图。如图3中所示,播放项信息包含指示相 应的AV剪辑的"Clip_information—file—name"、 " In_time "以及 "Out—time"。图4显示了 AV剪辑和PL之间的关系。该图的第一行 指示了 AV剪辑的时间轴,并且第二行指示了 PL的时间轴。PL信息包含三条播放项信息"Playltem#l "、"Playltem弁2"以及"Playltem弁3"。 Playltem#l、 Playltem#2和Playltem#3的In_time和Out—time定义了 三个播放周期。通过安排这三个播放周期,就定义了一个不同于AV 剪辑时间轴的时间轴。这个时间轴就是第二行所示的PL时间轴。从 中可以明显地看出,可以通过定义播放项信息从而定义一个不同于 AV剪辑时间轴的时间轴。
基本地,只指定了一个AV剪辑。但是,可以由一个批说明来指 定多个AV剪辑。通过播放项信息中的多个Clip—information—file—name 获得该批说明。图5显示了通过四个Clip—information—file—name获得 的批说明。在图5中,第一行到第四行指示了四个AV剪辑时间轴(AV 剪辑#1、 #2、 #3和#4的时间轴),并且第五行指示了一个PL时间 轴。由包含在播放项信息中的四个Clip—information—file—name指定这 四个时间轴。通过这样一种构造,由包含在播放项中的In—time和 Out—time定义了这四个播放周期,并且可以有选择性地播放这四个周 期。这使得可以通过PL时间轴定义这样一个周期(所谓的多角度周 期),其中可以提供多个可变换角度的图像。
PLMark信息(PLMark ())是将PL时间轴上一段给定周期指定 为一个章节的信息。图6显示了 PLMark信息的内部结构。如图中虚 线"pml"所指示的,PLMark信息包含"ref_to—Playltem—Id"和 "Mark—time—stamp"。图7显示了通过PLMark定义章节。在图7中, 第一行指示一个AV剪辑时间轴,并且第二行指示一个PL时间轴。 在图7中,箭头"pkl"和"pk2"分别指示PLMark中一个播放项的 说明(ref—to_PlayItem_Id)和一个时间点的说明(Mark—time—stamp)。 通过这些说明,在PL时间轴上定义了三个章节。到目前为止,已经 解释了PLMark。接下来将解释子路径信息。
子路径信息(SubPath ())是通过指定子剪辑时间轴上的In_Time 和Out—Time从而定义一个或多个播放周期的信息。图8显示了内部 结构。如图8中的虚线"shl"所指示的,子路径信息包含多个子播 放项信息(SubPlayltem ())。如虚线"sh2"所指示的,子播放项信 息包含"Clip—information—file—name " 、 "In—time" 、 "Out—time"、"Sync—Playltem—Id "以及"Sync—start—Pts—of—Playltem "。 由 Clip—information_file—name"、 "In—time"和Out—time"指定子剪辑时 间轴上的 In—time 和 Out—time 。
" Sync—Playltem—Id "和
"Sync—start—Pts_of—Playltem"用于同步说明以将子剪辑时间轴上的 播放周期与PL时间轴同步。通过该同步说明,子剪辑时间轴和PL 时间轴同步进行。
图9显示了如何做出同步说明和在子播放项(Sub Play Item)时 间轴上定义一个播放周期。在图9中,第一行指示了PL时间轴,并 且第二行指示了子播放项时间轴。在图9中,SubPlayltem.In—time和 SubPlayItem.Out_time分别指示了播放周期的开始点和结束点。由此 可以理解,播放周期也是被定义在子剪辑时间轴上。对应于箭头Snl 的Sync—Playltem一Id指示播放项的同步说明,并且对应于箭头sn2的 Sync—start—Pts—of—Playltem指示PL时间轴上播放项中一个时间点的 说明。
BD-ROM上的播放列表信息的特征在于它可以定义一个多角度 周期和一个同步周期,其中在该多角度周期内可以在多个AV剪辑之 间切换,并且在该同步周期内AV剪辑可以与子剪辑之间同步。上述 的剪辑信息和播放列表信息可以归类为"静态脚本"。这是因为剪辑 信息和播放列表信息定义了一个PL,而该PL是一个静态播放单元。 上述是对静态脚本的描述。
接下来描述"动态脚本"。动态脚本是一种动态地定义AV剪辑 的播放控制的脚本数据。这里,"动态地"意味着播放控制可以根据 播放装置的状态变换或用户通过键盘输入的事件进行变换。BD-ROM 假定了两种模式作为播放控制的操作环境。第一种模式是一种类似于 DVD播放装置的操作环境的操作环境,并且是一种基于命令的执行 环境。第二种模式是一种Java (TM)虚拟机的操作环境。在这两种 操作环境中,第一种操作环境称作HDMV模式,第二种操作环境称 作BD-J模式。由于这两种工作环境的存在,所以通过假定两种操作 环境中的任意一种写动态脚本。假设HDMV模式的动态脚本称作电 影对象,并且由管理信息对其进行定义。另一方面,假定BD-J模式的动态脚本称作BD-J对象。
首先将解释电影对象。 <电影对象>
电影对象存储在文件"Movie Object.bdmv"中。图10显示了 Movie Object.bdmv的内部结构。如图10的最左侧部分所示,Movie Object.bdmv包含指示编码序列"MOBJ "的"type—indicator "、 "version—number"以及一个或多个电影对象"Movie Objects ()"。 图10中的虚线vh指示了电影对象的内部结构的局部放大图。"Movie Objects ()"包含指示其自身数据长度的"length"、指示其中所含电 影对象的数量的"nmnber—of—mobjs",以及其数量由number—of—mobjs 指示的多个电影对象。由标识符mobj一id标识电影对象,而这些电影 对象的数量由number—of—mobjs指示。图10中的虚线vh2指示了由 标识符mobj_id标识的一个给定Movie Object [mobj一id]的内部结构的 局部放大图。
如虚线所指示的,电影对象包含"resume—intention—flag",它指 示在执行一次菜单调用之后是否继续播放;"menu—call—mask",它是 指示是否应该屏蔽菜单调用的信息;"Title—search—flag",它指示是否 应该屏蔽标题搜索功能;"number—of一navigation—command",它指示 导航命令的数量;以及其数量由"number—of—navigation—command" 指示的多个导航命令。
导航命令序列包含实现以下功能的命令条件转移;设置播放装 置中的状态寄存器;获得该状态寄存器中设置的值等等。以下是可以 写入电影对象的命令。 PlayPL命令
格式PlayPL (第一变量,第二变量)
作为第一变量的播放列表号可以用于指示一个将被播放的PL。 包含在PL中的播放项、PL中的给定时间、 一个章节或者一个掩码, 作为第二变量可以用于指示播放起始位置。
使用播放项在PL时间轴上指定播放起始位置的PlayPL函数被称 作PlayPLatPlayltem ()。使用一个章节在PL时间轴上指定播放起始位置的PlayPL函数被 称作PlayPLatChapter ()。
使用时间信息在PL时间轴上指定播放起始位置的PlayPL函数被 称作PlayPLatPlayltem ()。 JMP命令
格式JMP变量
JMP命令用于这样一个转移该转移丢弃当前正在执行的动态脚
本而执行一个由该变量指定的转移目的动态脚本。JMP命令有两种类
型直接地指定转移目的动态脚本的直接指向类型;以及间接地指向
转移目的动态脚本的间接指向类型。
电影对象中导航命令的描述格式类似于DVD中的导航命令的描 述格式。因此,可以有效地实现将盘内容从DVD上转移到BD-ROM 上。电影对象是一种在以下的国际出版物中公开的现有技术。详细内 容可以参考国际出版物。
国际公开WO 2004/074976。
到目前为止,已经对电影对象进行了描述。接下来将描述BD-J 对象。
<BD-J对象>
BD-J对象是在Java (TM)编程环境中写出的BD-J模式中的一 种动态脚本。
图11显示了 BD-JObject.bdmv的内部结构。如图11的最左侧所 示,BD-J Object.bdmv包含指示码序列"BOBJ"的"type—indicater",
"version—number"以及一个或多个BD-J对象"BD-J Object ()"。图 11中的虚线"bhl"指示了 BD-J Object ()的内部结构的局部放大图。
"BD-J Object ()"包含指示其自身数据长度的"length"、指示其中 所包含BD-J对象的数量的"number_of—bobjs",以及数量由 number—of—bobjs所指示的多个BD-J对象。通过标识符bobj—id标识 数量由number一of—bobjs所指示的多个BD-J对象。图11中的虚线bh2 指示了由标识符bobj—id标识的一个给定BD-J Object[bob—id]()的 内部结构的局部放大图。如带有虚线指示的图中所示,BD-J对象包含 "resume—intention一flag[bobj—id] " 、 " menu—call_mask[bobj—id]"、 " Title—search—flag[bobj—id] " 、
" Application—Management一Table[bobj—id] "以 及 "Playlist—Management—Table[bobjjd] " 。
BD-J 对象也包含 "resume—intention—flag"、 "menu_call—mask"以及"Title—search—flag", 在这点上BD-J对象大致上与电影对象相同。
BD-J对象与电影对象之间的区别在于,在BD-J对象中命令不被 直接写。也就是说,在电影对象中,控制过程是直接写入导航命令中。 与此不同地是,BD-J对象通过允许Java (TM)应用程序的说明被写 入"Application_Management—Table[bobj—id]"从而间接地定义了控制 过程。通过这样一种间接定义提供了对公用控制过程的有效共享,并 且使得多个动态脚本可以共享一个公用控制过程。
另外,在电影对象中,根据写入在电影对象中的用于命令执行 PL播放的导航命令(PlayPl命令)执行PL播放。与此不同地是,在 BD-J 对象中,通过将指示 PL 播放过程的 "Application—Management—Table[bobj—id]"包含到BD-J对象中从而 使得PL播放过程被写入。而且,还可以通过将PL过程包含到从应 用程序管理表指出的一个应用程序中,从而写入PL播放过程。也就 是说,既可以通过将播放列表播放过程写入到播放列表管理表中,也 可以通过将其写入到应用程序中从而将该播放列表播放过程包含进 来。
这里,将对Java (TM)应用程序进行描述。Java (TM)应用程 序包含一个或多个加载到虚拟机的堆区域(也称作工作存储器)中的 xlet程序。Java (TM)应用程序包含多个xlet程序和数据。到目前为 止,已经对Java (TM)应用程序的构造进行了描述。
Java(TM)应用程序的重要主体是存储在如图2中所示的BDMV 目录下的BDJA目录中的Java(TM)存档文件(00001 .jar、 00002.jar)。 接下来将参考图12A和12B描述Java (TM)存档文件。 <Java (TM)存档文件>每个Java (TM)存档文件(图2中所示的00001.jar、 00002.jar)
都是通过将一个或多个类文件和一个或多个数据文件合并在一起而 形成的。图12A显示了存储在存档文件中的程序和数据。通过将多 个文件安排到椭圆框所指示的目录结构中,由Java (TM)存档器对 图12A中所示的数据进行了配置。该椭圆框所指示的目录结构包含 根、Java (TM)以及图像目录。common.pkg安排在根目录下,类文 件(aaa.class、 bbb.class)安排在Java (TM) 目录下,并且menu.jpg 安排在图像目录下。Java (TM)存档器通过将上述这些文件合成为 一个而形成每个Java (TM)存档文件。当从BD-ROM中读出这样的 类文件和数据时,会对它们进行扩充并且将它们视作安排在目录中的 文件。每个Java (TM)存档文件名字中的五位数字"zzzzz"指示了 应用程序ID。当将这样一个Java (TM)存档文件被读取到高速缓存 中时,可以通过参考附带到文件名字上的数字来提取出任意一个Java (TM)应用程序所包含的程序和数据。这些类文件(图12A中所示 的aaa.class、 bbb.class)是对应于上述xlet程序的类文件。对应于类 文件的实例的xlet程序定义了 BD-J模式中的播放过程。
xlet程序是这样一种Java(TM)程序它可以使用符合Java(TM) 媒体框架(JMF)的接口,并且可以根据例如JMF的格式,执行响 应于键盘事件的处理。因为xlet程序可以执行JMF格式的处理,所 以它可以通过生成对应于一个MPLS文件的实例(JMF播放器实例), 从而命令播放装置播放一个播放列表。另外,xlet程序可以通过写入 对功能API的调用从而命令BD-ROM播放装置执行对于BD-ROM播 放装置来说是唯一的处理。
此外,xlet程序可以执行用于访问一个WWW网站并且从该网站 上下载内容的步骤。这使得可以播放一些原创作品,其中这些作品是 通过将所下载的内容与播放列表播放结合到一起从而生成的。
接下来将描述xlet程序的类文件。图12B显示了类文件的内部 结构。如图12B中所示,类文件包含"常数池"、"接口"以及"方 法l、 2、 3…n"。类文件中的方法可以分为以下几种 一种方法(事 件听者方法),通过该方法可以预先记录触发一种操作的键盘事件;用于命令JMF播放步骤的方法(JMF播放器实例的方法);以及调用 BD-ROM播放装置的功能API的方法。在这些方法中,使用分配给 他们自己的局部变量或者用于调用他们自己的参数,写入这些用于计 算等的步骤。到目前为止,.已经对Java (TM)存档文件进行了描述。 应该注意到,尽管在本实施例中,应用程序所包含的程序和数据存储 于Java (TM)存档文件中,但是这些程序和数据也可以存储于LZH 文件或zip文件中。
到目前为止,已经对BD-J模式中的动态脚本进行了描述。 <BD-ROM中的状态改变>
只读盘中提供的盘内容,例如DVD视频,具有一种以顶级菜单 为中心的结构。这样一种盘内容中的状态改变是唯一的,这是因为播 放从顶级菜单标题转移到每个标题并且随后返回到顶级菜单标题。图 13显示了盘内容的状态改变。图13中的方框代表了标题。这里,每 个标题是对应于状态改变中一个"状态"的播放单元,并且该"状态" 对于盘内容来说是唯一的。标题可以分为以下几类加载BD-ROM 后首先播放的"FirstPlayTitle"(首先播放标题)、组成顶级菜单的 "Top—menuTitle"(顶级菜单标题)以及通用标题"Title"。图13中 的箭头jhl、 jh2、 jh3、 jh4、 jh5、 jh6、 jh7以及jh8象征性地指示了 标题之间的转移。根据图13中所示的状态改变,在加载BD-ROM后 马山播放"FirstPlayTitle",然后出现跳转到"Top_menuTitle"的转移, 并且然后等待顶级菜单上的选择。在用于发行电影的记录介质(例如 BD-ROM)的行业中,经常一加载这样一种记录介质就播放动态商标。 该动态商标象征着电影的制片商或发行人。"FirstPlayTitle"的作用就 在于在加载BD-ROM之后立即播放动态商标。
然后,如果用户选择了菜单上的一个标题,那么就播放所选择的 标题。然后播放返回到顶级菜单标题。反复执行这样一种播放步骤, 直到弹出该BD-ROM。这是只有该盘内容才有的状态改变。
具有这种状态改变的标题包含HDMV模式中的动态脚本或BD-J 模式中的动态脚本。图14显示了包含HDMV模式中的动态脚本的两 个标题。图14的第一行指示了一个由标识符"Title—id"标识的标题(Title—id)。第二行指示了一个电影对象(Movie Object)序列,其包
含一个或多个构成标题的电影对象。第三行指示了电影对象所包含的 导航命令序列。
图13中所示的从一个标题到另一个标题的转移是通过预先在一 个电影对象中写入一个导航命令(JumpTitle命令)而实现的,该导 航命令指示播放装置跳转到另一个标题。另外,图14的第四行指示 了属于该标题的播放列表。该播放列表与该标题之间的这种从属关系 是通过预先在一个电影对象中写入一个导航命令(PlayPL命令)而 实现的,该导航命令指示播放该播放列表。.
通过使一个播放列表属于一个标题,对于HDMV模式中的标题, 可以定义一个伴随有一个视频播放的电影。这就是由HDMV模式中 动态脚本所定义的标题的结构。
接下来将描述包含BD-J模式中动态脚本的标题的内部构造。图 15显示了包含BD-J模式中动态脚本(BD-J对象)的标题的内部构 造。
第一行指示了一个由标识符"Titlejd"标识的标题。第二行指示 了组成该标题的唯一 BD-J对象。第三行指示了 BD-J对象中提供的 应用程序管理表和播放列表管理表。第四行指示了一个由第三行中应 用程序管理表操作的应用程序。该应用程序包含一种命令播放装置跳 转到另一个标题的方法(一种调用JumpTitle API的方法),如第五行 所指示的那样。因此,如图13中所示的跳转到另一个标题的转移是 通过JumpTitleAPI调用方法而实现的。另一方面,因为在第三行中写 入播放列表管理表,所以在执行该应用程序的同时播放一个播放列 表,如第四行中所指示的那样。
该BD-J对象包含应用程序管理表和播放列表管理表。这使得可 以在执行应用程序的同时执行PL播放,如第四行中所指示的那样。 这种应用程序和PL播放的同时执行是BD-J模式中标题的一个特点。
并不是所有的BD-J对象都包含播放列表管理表。播放列表管理 表是一种任意的成分。 一些BD-J对象包含播放列表管理表,而其它 BD-J对象不包含。图16显示了并不包含播放列表管理表的标题。在这样一个仅包含应用程序管理表但不包含播放列表管理表的BD-J对 象中,仅定义了应用程序操作,如第四行中所指示的那样。通过这样 一种应用程序操作的定义,就定义了一种标题,其中这种标题仅有控 制步骤而并不伴随有PL播放。
图14显示了从HDMV模式中一个标题转移到HDMV模式中一 个标题。但是应该注意到,如图17中所示,也可以实现从HDMV模 式中一个标题转移到BD-J模式中一个标题。类似地,尽管图15显示 了从BD-J模式中一个标题转移到BD-J模式中一个标题,也可以实 现从BD-J模式中一个标题转移到HDMV模式中一个标题,如图18 中所示。
在上述的标题的内部结构中,由图2中所示的index.bdmv定义 标题所包含的电影对象或BD-J对象。接下来将描述index.bdmv。 index.bdmv是指示标题所包含的电影对象或BD-J对象的一个表。
图19显示了 index.bdmv的内部结构。如图19中所示,index.bdmv 包含具有值"INDX"的"type—indicator"、 "version—number"、指示 从文件起始位置到索引的相对地址的"Indexes_start—address"以及
"Indexes ()"。 "Indexes O"分别对应于不同的标题。如图19中虚 线箭头"ixl"所示,"Indexes ()"包含"length"、 "FirstPlayback () (FirstPlayback一mobj一id一ref) "、"TopMenu( ) {TopMenu—mobj—id一ref)"、
"number—of—Titles"以及"Title[O]()…Title [number—of—Titles - 1〗
()"o
"FirstPlayback () {FirstPlayback—mobj—id_ref}"是FirstPlayTWe 的索引,并且存储该FirstPlayTitle所包含的电影对象的电影对象标识 符参照值 (FirstPlayback—mobj—id—ref ) 。 " TopMenu () {TopMenu_mobj_id_ref}"是TopMenuTitle的索弓l,并且存储该 TopMenuTitle所包含的电影对象的电影对象标识符参照值 (TopMenu—mobj—id_ref)。
"Title[O]()…Title[number—ofJTitles - 1]()"是除FirstPlayTitle 和TopMenuTitle之外的标题的索弓l,并且它们的数量为number—of—Title。 "Title[O]()…Title[number—of—Titles - 1]()"由标 识符Title—id标识。
由标识符Title—id标识的索引表示为Title[Title—id]()。图19中 的虚线ix2指示了 Title[Title—id]()的局部放大图。
如图19 中所示,"Title[Title—id]()" 包含 "Title—Playback—Type[Titlejd]",它指示了标题播放类型,它是通过 例如该"Title[Title一id]()"是否包含一个转移来示出的; "Title—access—Flag[TMe—id]",它指示了是否允许执行标题的服务函 数;以及唯一地指示了该标题所包含的电影对象的 "Title—mobj—id—ref[Title一id]"。这里,如果标题所包含的动态脚本是 BD-J 对象,那么由 "Title—bobj—id—ref[Title—id]" 代替 "Title_mobj—id—reflTitle—id]"。 "Title—bobj—id—ref[Title—id]"唯一地指 示了该标题所包含的BD-J对象。
下面的国际公开对Index.bdmv进行了详细公开。详细内容请参 考国际公开。
国际公开WO 2004/025651 Al 。 <应用程序管理表>
包含在BD-J对象表中的应用程序管理表和播放列表管理表是本 实施例的主要元素。接下来将对这些表进行详细描述。首先,将要描 述应用程序管理表(AMT)。
图20A显示了应用程序管理表的内部结构。如图20A中所示, 应用程序管理表包含"life_cycle"、 "apli—id—ref,、 "run—attribute"以 及"run_priority"。
图20B显示了应用程序管理表所包含的信息元素的含义。 "life_Cyde"指示了应用程序的"生存周期"。 "apli—id—ref"通过与"应用程序标识符" 一致写入到其中的参 照值指示了具有上述生存周期的应用程序。该应用程序标识符由Java (TM)存档文件中提供的作为文件名的五位数字值"zzzzz"表示,。 该五位数字值被写入"apli一icLref"中。
"run attribute"指示了应用程序在生存周期内的运行属性。这些运行属性可以分为以下几类自动运行、预发送以及暂停。
"mn_priority"指示应用程序在生存周期内的"运行优先级"。 BD-J对象使用这些信息控制应用程序的运行。 <生存周期>
接下来将描述应用程序管理中所定义的生存周期。 生存周期意味着这样一个周期在该周期内,应用程序存活于虚 拟机的工作存储器上,并且用BD-ROM的全部内容的时间轴代表该 周期。这里,名词"存活"指这样一种状态其中己经将应用层程序 所包含的xlet程序加载到工作存储器中,从而可以由虚拟机执行该应 用程序。
当在Java (TM)虚拟机上运行应用程序时,有一点很重要,那 就是在时间轴上清楚地定义由应用程序提供的服务的起点和终点。应 用程序管理表的"life_Cyde"中定义了服务的这些起点和终点。
下面的内容显示了是如何对如图13所示改变状态的盘内容定义 标题的生存周期。假设在加载BD-ROM之后,以图13中箭头jhl、 jh2、 jh3、 jh4…所指示的数字的上升的顺序进行转移,并且弹出了 BD-ROM。可以将以加载为开始到以BD-ROM弹出为结束的连续时 间段视作一个时间轴。将该时间轴定义为整个盘的时间轴。图21A 显示了整个盘的时间轴。图21B显示了该时间轴是如何构建的。如 图21B中所示,整个盘的时间轴包含播放FirstPlayTitle的周期;播 放TopMenuTitle的周期;播放Title #1的周期 一个标题包含一个
或多个电影对象或一个BD-J对象。因此,可以将每个标题的播放周 期定义为这样一个周期,期间激活了电影对象或BD-J对象中的任意 一个对象的周期。
也就是说,FirstPlayTitle、 TopMenuTitle以及其它标题中的每一 个都包含动态脚本。因此,可以将每个标题的播放周期定义为这样一 个周期,期间可以将标题所包含的电影对象或BD-J对象中的任意一 个对象激活为当前电影对象或当前BD-J对象,并且可以在播放装置 中对该对象进行解码并执行。图22A在整个BD-ROM的时间轴上显 示了由BD-J对象标识的标题播放周期,该BD-J对象由标识符"bobj一id"标识。这里,如果一个标题包含由标识符"bobj—id"标识 的BD-J对象,那么可以将BD-ROM时间轴上的激活了由标识符 "bobj—id"标识的BD-J对象的周期视作标题的播放周期。
类似地,如果一个标题包含由标识符"mobj一id"标识的电影对 象,那么可以将BD-ROM时间轴上的激活了由标识符"mobj一id"标 识的电影对象的周期视作标题的播放周期。
激活了电影对象或BD-J对象的周期一直持续到执行标题转移 (JumpTitle)。也就是说, 一直将动态脚本视作当前电影对象或当前 BD-J对象,直到执行了一个标题转移(JumpTitle),其中该动态脚本 是执行的目标。因此,将一直持续到电影对象或BD-J对象中发生 JumpTitle的周期视作标题播放周期。
接下来将描述标题播放周期和PL时间轴之间的关系。如前面所 述,在电影对象或BD-J对象中,可以将PL播放步骤写为处理步骤。 如果已经写入了 PL播放步骤,那么上述PL时间轴的全部或部分属 于标题播放周期。假设在图22A所示的例子中的BD-J对象中写入了 一个播放列表管理表。那么,如图22B中所示,PL时间轴属于对应 于BD-J对象的标题播放周期。因为可以进一步在PL时间轴上定义 多个章(章#1、 #2、 #3),所以BD-ROM时间轴上存在有域(全部 BD-ROM-Title-PL-Chapter)。可以使用这些域从而写入应用程序的生 存周期。这里应该注意到,因为播放列表播放与应用程序的执行同时 开始,所以标题转移可能发生在播放列表的播放过程中。在这种情况 下,仅部分播放列表时间轴而不是整个播放列表时间轴属于一个标题 播放周期。也就是说,究竟是仅部分播放列表时间轴还是整个播放列 表时间轴属于一个标题播放周期取决于标题转移发生的时间。
图23显示了在图22B中所示时间轴上定义的一种典型的生存周 期。如图23中所示,有三种典型应用程序标题边界应用程序,它 的生存周期是一个标题;章节边界应用程序,它的生存周期是标题内 的一个章节;以及无边界应用程序,它的生存周期是整个BD-ROM 的时间轴。
在这三种应用程序中,可以使用标题的标识符定义标题边界应用程序的生存周期。另外,可以使用下述两种标识符的组合定义章节边 界应用程序的生存周期该章节所属于的标题的标识符和该章节的标 识符。
即使平台正在运行,还是可以在被定义为标题或章节的生存周期 结束之后从应用程序重新获得资源。这样一种构建确保了可以重新获 得资源,并且由此稳定了平台的运行。
接下来将通过一个具体的例子描述如何将生存周期写入到应用 程序管理表中,其中该例子包含将在以后实现的用作材料的盘内容作 为材料。用作材料的盘内容包含三种不同类型的标题主图像作品所 包含的主标题(标题#1);在线购物所包含的在线购物标题(标题 #2);以及游戏应用程序所包含的游戏标题(标题#3)。图24显示了 包含三种标题的盘内容主标题、在线购物标题以及游戏标题。图 24的左手侧显示了 Index.bdmv,并且图24的右手侧显示了这三个标 题。
图24的右手侧的虚线框显示了指示每个应用程序所述标题的从 属关系。在这三个标题中,标题#1包含应用程序#1、应用程序#2以 及应用程序#3。另外,标题弁2包含应用程序#3和应用程序#4,并且 标题#3包含应用程序#5。在图24所示的例子中,由标题#1和标题 #2都运行应用程序#3。
图25A显示了每个应用程序的生存周期,而这些生存周期都是 基于图24的虚线框所示的从属关系而得到的。在图25A中,水平轴 指示标题播放周期,而垂直轴方向安排应用程序的生存周期。这里, 应用程序#1和应用程序#2仅属于标题#1,并且因此这些应用程序的 生存周期限制在标题#1内。应用程序#4仅属于标题#2,并且因此 该应用程序的生存周期限制在标题#2内。应用程序#5仅属于标题 #3,并且因此该应用程序的生存周期限制在标题#3内。应用程序#3 属于标题#1和标题#2,因此该应用程序的生存周期延伸在标题#1和 标题弁2上。图25B显示了标题弁1、标题弁2和标题3的应用程序管 理表,其中这些表是根据图25A中所示生存周期而写入的。按照这 种方式写入应用程序管理表之后,当启动标题#1的播放时将应用程序#1、应用程序#2以及应用程序#3加载到工作存储器中。然后,当 启动标题#2的播放时,将应用程序#1和应用程序#2从工作寄存器 中删除,这会导致仅有应用程序#3保留在工作寄存器中。类似地, 可以进行控制从而当启动标题#2的播放时将应用程序#4加载到工作 寄存器中,并且当启动标题#3的播放时,将应用程序#3和应用程序 #4从工作寄存器中删除。
进一步,可以进行控制从而当播放标题#3时将应用程序#5加载 到工作寄存器中,并且当标题#3的播放终止时,将应用程序#5从工 作寄存器中删除。
通过这种构造,可以使得将应用程序加载到工作存储器中的次数 最小化。这是因为如果在标题之间发生一个转移,那么同时位于转移 源和转移目的地中的应用程序会存储于工作存储器中,而且不位于转 移源而仅位于转移目的地中的应用程序也会加载到工作存储器中。这 样一种降低加载数据次数的构造使得可以实现无边界应用程序,这种 应用程序使得人们并不会意识到标题之间的边界。
接下来将描述应用程序的运行属性。这些运行属性包含自动运 行,它指示具有这种属性的应用程序会自动地开始运行;预发送,它 指示具有这种属性的应用程序不是自动运行的目标但是可以存储于 虚拟机的工作存储器中;以及暂停,它指示具有这种属性的应用程序 存储于虚拟机的工作存储器中但是并未分配给该应用程序CPU功 率。
当一个对应的标题发生转移时,具有"自动运行"属性的应用程 序被加载到工作存储器中并且被执行。当一个标题转移到另一个标题 时,管理应用程序的管理体(应用程序管理器)将一个应用程序加载 到虚拟机的工作存储器中并且执行该应用程序,其中该应用程序存活 于转移目的地标题中并且已经将它的运行属性设置为自动运行。这意 味着当标题发生转移时该应用程序自动地启动运行。
运行属性"预发送"是一种连续属性,并且指示转移源标题中应 用程序的状态被保持。这还是一种指示了可以执行一个对应的应用程 序的属性。可以从另一个应用程序调用运行属性被设置为"预发送"的应用程序。当从另一个正在运行的应用程序中调用一个程序时,管 理体(应用程序管理器)判断该应用程序的应用程序ID是否己经写 入到应用程序管理表并且是否该应用程序的运行属性被设置为"预发 送"。如果该应用程序的运行属性被设置为"预发送",那么管理体将 该应用程序加载到工作存储器中。如果调用目的地应用程序的应用程
序ID未写入到应用程序管理表中,那么管理体并不将该应用程序加
载到工作存储器中。只有那些属性设置为"预发送"的应用程序才可 以被从另一个程序中调用。"预发送"是一种缺省的运行属性,当没 有明确指明运行属性时就指派给应用程序这种属性。因此,当应用程 序的运行属性为指示没有说明的"一"时,这就意味着应用程序的运 行属性为"预发送"。
"暂停"指示了给具有这种属性的应用程序分配了资源但是未给
它分配CPU功率。属性"暂停"是有效的,例如在以下方面当执 行一个游戏标题时,实现通过一条便道的处理。
图26显示了这三种运行属性(预发送、自动运行和暂停)和前
一个标题的三种可能的状态(未运行、运行中以及暂停)之间的组合。 如果前一个状态是"未运行"并且运行属性是"自动运行",那么应 用程序在转移目的地标题中启动。
如果前一个状态是"未运行"并且运行属性是"预发送"或"暂 停",那么不进行操作并且保持该状态。
如果前一个状态是"运行中"并且运行属性是"预发送"或"自 动运行",那么不进行操作并且保持该状态。
如果将运行属性设置为"暂停",那么该应用程序的状态是暂停。 如果前一个状态是"暂停"并且转移目的地标题的运行属性是"暂停", 那么就保持"暂停"。如果前一个状态是"暂停"并且转移目的地标 题的运行属性是"预发送"或"自动运行",那么在转移目的地标题 中再继续该应用程序。在应用程序管理表中定义生存周期和运行属性
使得可以执行同步控制以在标题播放周期期间运行Java (TM)应用 程序。这使得可以实现和提供各种用于播放图像和执行程序的应用程 序。应该注意到,如果前一个状态是"暂停"并且转移目的地标题的 运行属性是"预发送",那么前一个状态"暂停"可以被保持。 最后,将描述每个应用程序的"运行优先级"。
运行优先级的值为0到255。当存储器资源变得短缺或当CPU 负载较高时,应用程序管理器可以使用运行优先级来决定强制终止哪 个应用程序,或者决定哪个应用程序重新获得资源。应用程序管理器 终止具有低级别运行优先级的应用程序,而保持具有高级别运行优先 级的应用程序的运行。
还可以将运行优先级用于对由于请求正在播放的一个PL从而彼 此发生冲突的应用程序进行仲裁。这里假设一个应用程序正在对一个 播放列表进行快进操作,而另一个应用程序向该播放列表发出了暂停 请求。那么,对分配给这两个应用程序的运行优先级的级别进行比较。 如果快进应用程序具有较高运行优先级级别,那么就继续进行该快进 操作。如果暂停请求应用程序具有较高运行优先级级别,那么正在快 进的PL就会被暂停。
使用上述的生存周期、运行属性以及运行优先级,可以在编写程 序时将可以在虚拟机上运行的应用程序的数量限制为预定的数量或 更少。这使得应用程序可以稳定地工作。 <播放列表管理表>
到目前为止,已经描述了应用程序管理表。接下来将描述播放列 表管理表。播放列表管理表显示了应该在应用程序的生存周期期间与 每个应用程序的执行同时进行的播放控制。应用程序的运行是不稳定 的。可能会发生启动故障或异常终止。在本实施例中,为每个应用程 序生存周期都提供了一个播放列表管理表并将其作为发生启动故障 或异常终止时发挥作用的失效保护机制。播放列表管理表是一种信 息,它定义了当一个应用程序生存周期开始时应该执行的播放控制。 这里所描述的播放控制是一种基于播放列表信息的AV剪辑的播放。 也就是说,通过执行基于播放列表信息的播放控制,可以同时进行应 用程序的执行和播放列表的播放。在前面我们曾经说过,为每个应用 程序的生存周期都提供了一个播放列表管理表。但是,这里应该注意到,播放列表管理表仅与标题边界应用程序一致地被提供。这是因为 标题无边界应用程序的生存周期延伸到所有标题,所以在标题无边界 应用程序中无法控制同时进行应用程序的执行和播放列表的播放。
对于章节边界应用程序来说,并不需要定义播放列表的播放。这 是因为定义章节边界应用程序的生存周期是以该应用程序的执行是 从播放列表内 一个章节开始为前提的。通过上述内容我们可以理解, 与包含一个或多个标题的生存周期一致地定义播放列表管理表。
图27A显示了播放列表管理表的内部结构。如图27A中所示, 播放列表管理表包含"PL—id—ref"禾B "Playback—Attribute"。
图27B显示了播放列表管理表所包含的信息元素的含义。 "PL—id一ref"通过与PL标识符一致地写入到其中的参照值指示 了在应用程序生存周期期间可以被播放的PL。该PL标识符由一个在 文件YYYYYMPLS中提供的作为文件名的五位数字值"YYYYY" 所表示。其中写入了 YYYYY的"PL—id一ref"指示了可以在一个对 应的标题中播放的PL。
"Playback—Attribute"是类似于应用程序管理表中运行属性的一 种属性,并且它定义了当标题启动时如何播放"PLjd一ref"中写入 的PL。 PL的播放属性可以分为以下几类"自动播放"、"预发送" 等等。
"自动播放"是这样一种属性它指示当对应的标题发生转移时, 播放具有"自动播放"属性的播放列表。当一个标题转移到另一个标 题时,管理应用程序的管理体(应用程序管理器)开始播放这样一种 播放列表可以在转移目的地标题中播放该播放列表并且该播放列表
的播放属性已经设置为自动播放。这意味着当标题发生转移时其播放 属性被设置为自动播放的播放列表会自动地被激活。
与运行属性"预发送"的情况一样,"预发送"也是一种连续属
性,并且指示转移源标题中PL的状态被保持。"预发送"还是一种
指示可以播放一个对应的播放列表的属性。例如,假设将要连续播放 两个标题,并且转移源标题的播放列表管理表中一个播放列表的播放 属性设置为自动播放,并且在转移目的地标题的播放列表管理表中,该播放列表的播放属性被设置为预发送。这里,假设可以播放该播放 列表两个小时,并且该播放列表播放一小时之后发生转移。在这种情 况下,其中播放列表的播放属性在转移目的地标题中被设置为预发 送,转移目的地标题对该播放列表的播放是从紧接着已经播放一小时 部分之后的位置开始的。由此我们可以理解,即使在标题之间发生转 移,通过将转移目的地标题中一个播放列表的播放属性设置为预发 送,就可以在转移目的地标题中继续播放该播放列表。这使得多个转 移标题可以连续地播放一个公用的播放列表,从而使得可以容易地实 现"在多个标题中播放的公用播放列表"。当存在多个转移目的地标 题时,通过将这些转移目的地标题中播放列表的播放属性设置为预发 送,就可以在这些转移目的地标题中继续播放一个公用的播放列表。
这里应该注意到,因为不需要确保在标题的边界处实现无缝播 放,所以对于上述在多个标题中播放一个公用播放列表这种情况,允 许在转移附近打断播放列表的播放。
另外,当另一个应用程序发出请求时,其播放属性设置为"预发 送"的一个播放列表可以被马上播放。当播放请求是从另一个正在运 行的应用程序发出时,管理体(应用程序管理器)判断目标播放列表
的PLjd一ref是否已经写入到播放列表管理表并且是否该播放列表的 播放属性被设置为"自动播放"或"预发送"。如果被设置为"自动 播放"或"预发送",那么管理体将播放该播放列表。如果播放列表 的PL_id—ref未写入到播放列表管理表,那么管理体就不播放该播放 列表。当另一个应用程序发出请求时,只有那些其播放属性设置为"自 动播放"或"预发送"的播放列表才可以播放。"预发送"是一种缺 省播放属性,当没有明确指明播放属性时就给播放列表赋予这种属 性。因此,当应用程序的播放属性为指明没有说明的"一"时,这就 意味着该播放列表的播放属性为"预发送"。
图28显示了转移目的地标题的三种可能存在的状态((i)不具 有播放列表管理表(ii)具有播放列表管理表和自动播放;以及(iii) 具有播放列表管理列表和预发送)和前一个标题中PL的两种可能存 在的状态(未播放以及正在播放)之间的六种组合形式。在图28所示的这六种组合形式中,在"前一种状态二未播放" 和"转移目的地标题具有播放列表管理表,并且播放属性为自动播放" 的这种组合中,播放列表的播放在转移目的地标题中自动地启动。
另外,在"前一种状态二正在播放"和"转移目的地标题不具有 播放列表管理表"这种组合中,播放列表的播放在转移目的地标题中 停止。在除上述两种之外的其它组合形式中,转移源标题中的状态可 以被保持。基于播放列表管理表,仅当在转移源标题中未播放该播放 列表并且播放列表的播放属性在转移目的地标题中设置为自动播放 时,才会启动播放列表的播放。因此,并不需要每次在标题之间发生 转移时都启动播放列表的播放。因此,即使在标题之间发生多次转移, 也可以使得启动播放列表播放的次数最小化。
接下来将参考图29A中所示具体的例子,描述如何写播放列表 和应用程序管理表。在该具体例子中,使用了两个连续标题(标题#1 和标题#2)。在标题#1的表中,将应用程序#1和应用程序#2写为自 动运行程序。在标题#2的表中,将应用程序#2和应用程序#3写为自 动运行程序。假设在标题#1的播放列表管理表中,将播放列表#1写 为自动播放的播放列表,并且在标题#2的播放列表管理表中,将播 放列表#2写为自动播放的播放列表。图29B显示了如何根据图29A 中所示的播放列表和应用程序管理表播放这些播放列表以及执行应 用程序。
根据按照上述方式设置的播放列表和应用程序管理表,当标题弁1 启动时,应用程序#1禾脂2自动地启动,并且自动地启动播放列表#1 的播放。
根据按照上述方式设置的播放列表和应用程序管理表,就应用程 序#1而言,在表中对标题#1进行了描述,但是在表中没有对标题#2 进行描述。因此,应用程序#1的执行就会停止。类似地,就播放列 表#1而言,在表中对标题#1进行了描述,但是在表中没有对标题#2 进行描述。因此,播放列表#1的播放就会停止。
就播放列表#2和应用程序#3而言,在表中没有对标题#1进行描 述,但是在表中对标题#2进行了描述。因此,播放列表#2的播放和应用程序#3的执行会自动地启动。可以将一个转移用于使将要播放 的一个播放列表变为另一个播放列表。按照这种方式,通过使用播放 列表和应用程序管理表使得提前在编写程序阶段就可以在转移定义 改变将要播放的播放列表的处理。
另外在图29A所示的例子中,应用程序#1、应用程序#2以及应 用程序約的运行优先级分别为200、 128和200。这样一种运行优先 级的分配使得可以裁决要被执行的不同应用程序之间的冲突,其中这 些应用程序由于发出控制播放列表#1或播放列表#2的请求从而彼此 发生冲突。这里假设应用程序#1是对播放列表#1进行快进,而应用 程序#2发出使播放列表#1暂停的请求。那么,通过对应用程序管理 表中分配给这些应用程序的运行优先级进行比较从而进行裁决。因 此,应用程序#1对播放列表#1的控制得以继续,而拒绝了应用程序 #2提出的请求。可以在编写程序阶段定义这样一个处理。在播放列 表管理表中使用运行优先级使得播放装置可以在出现播放列表所引 发的冲突时进行裁决。
接下来描述了播放列表管理表的描述的一个具体例子。图30A 显示了播放列表管理表的描述的一个例子。按照如下所述为两个连续 标题(标题#1、标题#2)写出了表。在标题#1的播放列表管理表中, 将播放列表#1写为自动运行播放列表,并且将播放列表#2写为可播 放的播放列表。在标题#1的应用程序管理表中,将应用程序#1写为 自动运行应用程序,并且将应用程序#2写为可执行的应用程序。在 标题#2的播放列表管理表中,将播放列表#2和播放列表#3写为可播 放的播放列表。在标题#2的应用程序管理表中,将应用程序#3写为 自动播放应用程序。图30B显示了如何基于图30A中所示的播放列 表和应用程序管理表而播放这些播放列表以及执行这些应用程序。根 据如上述方式设置的播放列表和应用程序管理表,当标题#1启动时, 写为自动运行应用程序的应用程序#1自动地启动。另外,因为在标 题#1的应用程序管理表中将应用程序#2写为可执行应用程序,所以 通过从应用程序#1发出的调用ydl来启动应用程序弁2。
在标题#2的应用程序管理表中,并没有描述应用程序#1和#2,但是将应用程序#3写为了自动运行应用程序。因此,在标题#1和标 题#2之间的边界处,应用程序#1和#2的执行会停止,并且应用程序 #3会自动地启动。在标题#1的播放列表管理表中,将播放列表#1和 #2写为可播放的播放列表。在这些可播放的播放列表中,给播放列 表#1赋予了自动播放属性。因此,播放列表#1在标题#1启动时会自 动地播放。
在标题#1的播放列表管理表中,将播放列表#1和#2写为可播放 的播放列表。因此,应用程序#1可以通过请求播放列表#2的播放从 而停止播放列表#1的播放并且启动播放列表#2的播放,从而实现了 播放列表改变。在标题#2的播放列表管理表中,将播放列表#2和#3 写为可播放的播放列表,并且不存在附带有自动播放属性的播放列 表。因此,在标题#1启动时自动地启动的播放列表#1的播放在标题 #1期间会持续,但是在标题#2开始时会自动地停止。
但是,如果播放列表#2的播放在标题#1期间一直持续,那么它 在标题#2中也会持续。在标题#2的播放列表管理表中,将播放列表 #2和#3写为可播放的播放列表。因此,在标题#2中运行的应用程序 #3可以通过请求播放列表#3的播放从而停止播放列表#2的播放并且 启动播放列表#3的播放,从而实现了播放列表改变。
接下来,将参考图31A到31C描述如何通过播放列表管理表定 义标题播放周期。
图31A显示了一个标题的标题播放周期,其中该标题的播放属 性设置为自动播放。如果播放属性设置为自动播放,那么当标题的播 放启动时自动播放PL的播放也会启动。这里,即使应用程序正常运 行并且正常终止,也会根据PL时间轴确定标题播放周期。
图31B显示了这样一种情况在播放列表管理表中播放属性设 置为自动播放,并且应用程序异常终止。在该异常终止后,并不运行 任何应用程序,但是会继续自动播放P1的播放。在这种情况下也是 根据PL时间轴确定标题播放周期。
图31C显示了这样一种情况,在播放列表管理表中播放属性设 置为自动播放,并且主应用程序未能启动。在这种情况下也是基于PL时间轴确定标题播放周期,这是因为自动播放P1会被播放而无论
应用程序是否出现启动故障。
通过上述这种在播放列表管理表中将播放属性设置为自动播放
的安排,可以使得即使启动一个Java(TM)应用程序需要5到10秒, 但是在启动期间屏幕上会有显示。也就是说,即使启动一个应用程序 需要时间,但是在启动期间屏幕上会有显示。这就缓解了由应用程序 启动的耗费时间的处理所导致的启动延迟。
通过定义应用程序和播放列表管理表使得可以进行同步控制以 在标题播放期间运行Java (TM)应用程序。这使得可以实现和提供 多种用于播放图像和执行程序的应用程序。到目前为止,已经对记录 介质进行了描述。接下来将描述本发明的播放装置。
图32显示了本发明的播放装置的内部结构。本发明的播放装置 是基于图32中所示内部结构进行工业制造的。本发明的播放装置主 要包含两个部分系统LSI和驱动装置。工业制造是通过将这两部分 装入装置的机柜和板中实现的。系统LSI是一种集成电路,它包含用 于执行播放装置的函数的多种处理单元。按照这样一种方式制造出的 播放装置包含BD-ROM驱动器1 、读取缓冲器2、解复用器3、视频 解码器4、视频平面5、 P图像解码器6、呈现图像平面7、合并单元 8、字体生成器9、 I图像解码器IO、开关ll、互动图像平面12、合 并单元13、 CLUT单元14、 CLUT单元15、音频解码器16、网络设 备17、本地存储器18、读取缓冲区19、解复用器20、指令ROM21、 用户事件处理单元22、 PSR装置23、 CPU 24、脚本存储器25、本地 存储器26以及幵关27。
首先,将描述用于播放记录于BD-ROM上的AV剪辑的器件 (BD-ROM驱动器1至音频解码器16)。
BD-ROM驱动器1执行BD-ROM的加载/弹出以及对BD-ROM 进行访问。
读取缓冲器2是一种FIFO存储器,其中从BD-ROM读取的TS 包按照先进先出的方式存储。
解复用器(De-mux) 3从读取存储器2中提取TS包,并且将TS包转换为PES包。对于通过这种转换从而获得的PES包。解复用器 3将其中那些由CPU 24对PID进行了设置的PES包从通过转换获得 的PES包中输出到视频解码器4、 P图像解码器6、 I图像解码器10 以及音频解码器16中的任意一个。
视频解码器4对从解复用器3输出的多个PES包进行解码,将 其解码成一种非压縮格式的图像,并且将这些图像写到视频平面5 上。
视频平面5是一种用于存储非压縮格式图像的平面。该平面是播 放装置中一种用于存储屏幕画面的象素数据的存储区域。视频平面5 的分辨率是1920 x 1080。存储于视频平面5中的图像数据包含由音 频解码器16比特YUV值表示的象素数据。在视频平面5中,可以 对视频流中每帧播放图像进行縮放。这里,"縮放"是指将每帧播放 图像的尺寸变为视频平面5的1/4 (四分之一)和1/1 (全屏)。可以 在BD-J模式中根据CPU 24的指令执行这样一种缩放。这使得可以 通过在一个角落或以全屏方式等等显示视频流的播放图像从而实现 对屏幕的不同安排。
P图像解码器6将从BD-ROM读出的呈现图像流解码为非压縮 图像,并且将这些非压縮图像写入到呈现图像平面7上。对图像流的 解码产生出现在屏幕上的字幕。
呈现图像平面7是一种具有一个屏幕大小的存储器区域,并且可 以存储一个屏幕的非压縮图像。视频平面5的分辨率是1920 x 1080。 存储于呈现图像平面7中的非压縮图像的每个象素都是由一个8比特 索引颜色(indecolor)表示。在使用CLUT (颜色查询表)对索引颜 色进行转换之后就可以显示存储于呈现图像平面7中的非压縮图像。
合并单元8将存储于视频平面5中的非压縮图像数据(i)与存 储于呈现图像平面7中的数据合并到一起。
字体生成器9使用字符字体将包含在文本ST流中的文本代码扩 展为位图,并且将这些位图写到呈现图像平面7上。
I图像解码器10将在HDMV模式中从BD-ROM或本地存储器 18读出的IG流解码为非压縮图像,并且将这些非压縮图像写到互动图像平面12上。
开关11有选择地将字体生成器9生成的字体序列或通过P图像 解码器6进行解码从而得到的图像写到呈现图像平面7上。
互动图像平面12存储那些由I图像解码器10进行解码从而得到 的非压縮图像。互动图像平面12还存储那些应用程序在BD-J模式中 绘制的字符和图像。
合并单元13将存储于互动图像平面12中的数据与从合并单元8 中输出的合成图像(非压縮图像数据和存储于呈现图像平面7中数据 的结合)合并在一起。这种合并使得由应用程序写到I图像解码器10 上的字符和/或图像可以叠加到非压縮图像数据上。
CLUT单元14将存储于视频平面5中的非压縮图像的索引颜色 转换为Y、 Cr和Cb值。
CLUT单元15将存储于互动图像平面12中的非压缩图像的索引 颜色转换为Y、 Cr和Cb值。
音频解码器16对从解复用器3输出的PES包进行解码,并且按 照非压縮格式输出音频数据。
到目前为止,已经对用于播放AV剪辑的器件进行了描述。接下 来将描述与BD-J模式中操作相关的器件(网络设备17至解复用器 20)。
网络设备17用于实现播放装置中的通信功能。当BD-J模式中的 Java (TM)应用程序指定一个URL时,网络设备17就会与具有该 URL的网站建立TCP连接、FTP连接等等。建立这样一种连接使得 该Java (TM)应用程序可以从该网站下载数据。
本地存储器18是一种用于存储元数据以及由除BD-ROM之外的 其它记录介质或通信介质提供的内容的硬盘,这些内容例如通过网络 设备17建立的连接从网站上下载的内容。该元数据用于通过将下载 内容限制在本地存储器18中从而对这些下载内容进行管理。BD-J模 式中的一个应用程序可以通过访问本地存储器18从而使用下载内容 的一段执行多种过程。
读取缓冲器19是一种FIFO存储器。如果存储于本地存储器18中的下载内容包含一个子剪辑,那么读取缓冲器19就将按照先进先 出的方式存储该子剪辑所包含的TS包。
解复用器(De-mux) 20从读取缓冲器19中提取TS包,并且将 这些TS包转换为PES包。对于通过这种转换从而获得的PES包,解 复用器3将其中那些具有期望的PID的PES包从通过转换获得的PES 包中输出到字体生成器9、 I图像解码器10以及音频解码器16中。
通过网络设备17到解复用器20的上述操作,可以按照与记录于 BD-ROM上内容相同的方式对Java (TM)应用程序从网络下载的内 容进行播放。接下来将描述用于实现播放装置中集成控制的器件(指 令ROM 21至开关27)。
指令ROM21存储有定义了播放装置的控制的软件。
用户事件处理单元22将用户事件输出到CPU 24,所述用户事件 是通过遥控器上或播放装置的前面板上的键盘操作指示的。
PSR集合23是一种嵌入到播放装置中的寄存器,并且包含64个 播放器状态寄存器(PSR)和4096个通用寄存器(GPR)。在播放器 状态寄存器中所设置的值中(所设置的值称作PSR), PSR 4和PSR 8 用于表示当前播放位置。
PSR4被设置为从1到100的值,以指示当前播放位置所属的标 题,而设置为0时,用于指示当前播放位置属于顶级菜单。
当PSR5被设置为从1到999的值,以指示当前播放位置所属章 节的章节号,而设置为OxFFFF时,用于指示播放装置中的章节号是 无效的。
PSR6被设置为从1到999的值,以指示当前播放位置所属的PL (当前PL)的PL号。
PSR7被设置为从1到255,以指示当前播放位置所属的播放项 (当前播放项)的播放项号。
PSR 8被设置为从1到OxFFFFFFFF,以使用45KHZ的时间精度 指示当前播放位置(当前PTM (呈现时间))。使用上述的PSR 4至 PSR 8,可以在图21A中所示的整个BD-ROM的时间轴上标识当前 播放位置。CPU 24运行存储于指令ROM 21中的软件并且控制整个播放装 置。基于用户事件处理单元22输出的用户事件和PSR集合23中不 同PSR中设置的值,控制的内容动态地进行改变。
脚本存储器25存储当前PL信息和当前剪辑信息。当前PL信息 是记录在BD-ROM上的多条PL信息中作为当前处理目标的那条PL 信息。当前剪辑信息是记录在BD-ROM上的多条剪辑信息中作为当 前处理目标的那条剪辑信息。
本地存储器26是一种高速缓冲存储器,用于暂时存储记录在 BD-ROM上的数据从而弥补从BD-ROM读取数据时的缓慢性。由于 有本地存储器26的存在,可以在BD-J模式中高效地执行应用程序。
开关27用于有选择地将从BD-ROM或本地存储器中读取的数据 输入到读取缓冲器2、读取缓冲器19、脚本存储器25和本地存储器 26中的任意一个。
到目前为止,已经描述了本实施例的播放装置的硬件结构。接下 来将描述本实施例的播放装置的软件结构。
图33按照层结构的形式显示了硬件和存储于CPU 24中的软件。 如图33中所示,播放装置的层结构包含
a) 作为BD播放器设备的第一层;
b) 作为BD播放器模型的第二层;以及
c) 作为应用程序运行时间环境的第三层。
图32中所示播放装置的硬件结构属于第一层。作为BD播放器 设备的第一层包含 一个"解码器",它包含视频解码器4、 P图像解 码器6、 I图像解码器10以及音频解码器16; —个"平面",它包含 视频平面5、呈现图像平面7以及互动图像平面12; BD-ROM, BD-ROM的文件系统;本地存储器18以及本地存储器18的文件系 统。
作为BD播放器模型的第二层包含 b2)包含播放控制引擎32的层;以及
bl)包含虚拟文件系统30和呈现引擎31的层,并且该层向高于 其自身的层提供功能的API。作为应用程序运行时间环境的第三层包含 Cl)其中具有模块管理器34的层;
c2)其中具有HDMV模块33和BD-J模块35的层。
在图33中所示的层模型中,模块管理器34位于最上层。模块管 理器34具有一个直接通向播放控制引擎32的旁路url,该旁路越过 了 HDMV模块33和BD-J模块35。在如图33中所示的层模型中, 由于该旁路的存在,模块管理器34的形状为一个倒写的字符"L", 并且使用户事件管理器37嵌入到其中。
BD-J模块35是一种Java (TM)平台,具有以Java (TM)虚拟 机38为中心的构造。多种系统程序和应用程序都在该Java (TM)虚 拟机38所包含的工作存储器中工作。位于Java (TM)虚拟机38之 上的应用程序管理器36和时间听者管理器39 (缺省操作管理器40) 都是这种系统程序。应用程序管理器36包含一个PLMT处理器41。 另外,在BD-J模块35和播放控制引擎32之间有一个许可控制器42。
首先将描述属于第二层的虚拟文件系统30至模块管理器34。图 34显示了虚拟文件系统30到模块管理器34所执行的处理。
虚拟文件系统30是一种用于对存储于本地存储器18中的下载内 容按照BD-ROM的盘内容的处理方式进行处理的一种虚拟文件系 统。存储于本地存储器18中的下载内容包含子剪辑、剪辑信息以及 播放列表信息。下载内容中的播放列表信息与记录在BD-ROM上的 播放列表信息的区别在于,它可以指定剪辑信息而无论这些剪辑信息 是存储于BD-ROM上还是存储于本地存储器18上。并且对于这种指 定,虚拟文件系统30上的播放列表信息不需要通过全路径指定 BD-ROM或本地存储器18上的一个文件。这是因为BD-ROM或本 地存储器18上的文件系统被视作一种虚拟文件系统(虚拟文件系统 30)。因此,通过这里所指定的作为存储剪辑信息的文件的文件体的 五位数值,可以将播放项信息中的Clip_Information_file_name和子播 放项信息中的Clip—Information—file—name用于指定虚拟文件系统30 或BD-ROM上的一个AV剪辑。对于通过虚拟文件系统30从本地存 储器18中读取的数据,当将这些数据动态地与存储于BD-ROM中的数据合并到一起时,可以生成多种形式的播放。在本实施例中,因为
将本地存储器18和BD-ROM合并的盘内容与BD-ROM的盘内容同 等对待,所以可以认为"BD-ROM"也指一种虚拟记录介质,并且这 种虚拟记录介质是本地存储器18和BD-ROM的合并。
呈现引擎31执行AV播放功能。播放装置中的AV播放功能是一 组从CD和DVD播放器继承而来的传统功能。这些AV播放功能包 含播放、停止、暂停开始、暂停结束、静止结束、向前播放(具有 速度说明)、向后播放(具有速度说明)、视频变换、字幕变换以及角 度变换。为了实现这些AV播放功能,呈现引擎31控制视频解码器4、 P图像解码器6、1图像解码器10以及音频解码器16从而对对应于一 段期望时间的一部分AV剪辑进行解码,并且这部分AV剪辑已经被 读取到读取缓冲器2中。这里,期望时间可以是由PSR8 (当前PTM) 指定的时间。通过这种构造,可以播放对应于任意一段时间的一部分 AV剪辑。
播放控制引擎(PCE) 32所执行的功能包含(i)播放列表播放 控制功能;以及(ii)通过PSR集合23从而获得和设置状态的状态 获得/设置功能。在呈现引擎31所执行的AV播放功能中,播放列表 播放控制功能是根据当前PL信息和剪辑信息而执行的播放启动和播 放停止等等。该功能(i)和(ii)响应于由HDMV模块33、模块管 理器34和BD-J模块35发出的功能调用而执行。
也就是说,如果播放控制引擎32接收到命令它播放一个PL的 功能调用,那么它就通过虚拟文件系统30,从BD-ROM或本地存储 器18中读取对应于该功能调用中所指定的PL的播放列表信息。然 后,播放控制引擎32参考该段播放列表信息中包含的播放项信息, 通过虚拟文件系统30从BD-ROM或本地存储器18中读取该播放项 信息的Clipjnformation一file一name中叙述的剪辑信息。图34中的符 号 1、 2、 3以及 4分别指示了以下内容通过虚拟文件系统 30读取播放列表信息( 1);对播放列表信息所包含的播放项信息 进行解码( 2);通过虚拟文件系统30读取剪辑信息( 3);对剪 辑信息进行解码( 4)。在按照上述方式对剪辑信息和播放列表信息进行解码之后,通过虚拟文件系统30将AV剪辑所包含的TS包转移 到呈现引擎31。在将TS包转移到呈现引擎31之后,呈现引擎31 将AV剪辑所包含的TS包输出到解码器从而可以在平面上显示它们。 图34中的符号众1、众2、众3、众4以及众5分别指示以下内容读 取AV剪辑所包含的TS包(众1、众2);从虚拟文件系统30将这些 TS包转移到呈现引擎31 (众3);将这些TS包输出到解码器(众4); 以及将通过解码器得到的解码结果输出到平面(A5)。
HDMV模块33是用于执行HDMV模式的主体。如果HDMV模 块33从模块管理器34接收到一个激活请求(activate (mobjjd),其 中mobj—id指定了一个转移目的地MovieObject (电影对象)),那么 它就将该MovieObject (mobj一id)存储到本地存储器26中,对该 MovieObject中写入的导航命令进行解码,并且根据解码结果向播放 控制引擎32发出一个功能调用。在图34中,带有符号V2、 V3以 及V4的箭头分别指示以下内容从模块管理器34接收"activate
(mobj—id)" (V2);对MovieObject中写入的导航命令进行解码(▽ 3);以及向播放控制引擎32发出一个功能调用(V4)。
模块管理器34持有从BD-ROM读取的Index.bdmv并且执行转 移控制。该转移控制包括向当前标题所包含的动态脚本发出一个终止 事件,以及向转移目的地标题所包含的动态脚本发出一个激活事件。 如果一个MovieObject执行一个指定titlejd的JumpTitle (跳转标题) 命令(JumpTitle (title一id)),那么模块管理器34向当前标题所包含 的MovieObject发出一个终止事件,并且发出一个activate (mobj—id) 事件从而激活对应于title—id的标题所包含的MovieObject。在图34 中,带有符号VO、 VI以及V2的箭头分别指示以下内容执行一个 JumpTitle命令(V0);模块管理器34参考Index.bdmv ( ▽ 1);以及 发送一个通知从而激活转移目的地标题所包含的MovieObject (V2)。 这些工作步骤也适用于其中BD-J对象调用JumpTMeAPI (JumpTitle
(title—id))的情况。在这种情况下,向当前标题所包含的BD-J对象 发出一个终止事件,并且向BD-J模块35发出一个activate (mobj—id) 从而激活对应于titlejd的标题所包含的BD-J对象。到目前为止,已经描述了呈现引擎31至模块管理器34。接下来 将参考图35描述应用程序管理器36。图35显示了应用程序管理器 36。
每当标题之间发生转移时,应用程序管理器36就会命令Java (TM)虚拟机38启动这样一个应用程序它未在转移源标题中运行, 但是对于转移目的地标题却具有运行属性"自动运行"。同时,应用 程序管理器36终止这样一个应用程序它在转移源标题中运行,但 是在转移目的地标题中却没有生存周期。通过参考当前BD-J对象的 应用程序管理表从而进行这样的启动控制和终止控制。这里如果在标 题之间发生一个转移,那么模块管理器34会发出activate (bobjjd) 的通知。当接收到该通知时,应用程序管理器36将当前BD-J对象设 置为对应于该bobj—id的BD-J对象,并且参考当前BD-J对象的应用 程序管理器表。这使得应用程序管理器36可以识别那些自动启动和 自动终止的应用程序。在图35中,符号众0、众1、众2以及众3分别 指示以下内容发生一次TitleJump (标题跳转)(众0);通知activate (bobj—id)(众1);参考应用程序管理表(众2);以及命令Java(TM) 虚拟机38启动一个应用程序(众3)。通过该启动一个应用程序的命 令,Java (TM)虚拟机38把xlet程序从本地存储器26读取到工作 存储器(众4、众5)。
到目前为止,己经描述了应用程序管理器36。接下来将参考图 36描述用户事件管理器37至缺省操作管理器40。
用户事件管理器37将用户事件处理单元22接收到的用户事件分 为(i)播放控制的用户事件以及(ii)键盘事件。播放控制的用户 事件是用于发出以下命令的用户事件播放、停止、暂停开始、暂停 结束、静止结束、向前播放(具有速度说明)、向后播放(具有速度 说明)、视频变换、字幕变换以及角度变换。键盘事件是指示按下了
以下这些键的用户事件向上移动、向下移动、向右移动、向左移动
以及数字键。用户事件管理器37发出一个功能调用,从而使播放控 制引擎32根据播放控制的用户事件执行播放控制功能。该功能调用 称作UO (用户操作),并且通过位于模块管理器34的旁路上的UO控制器37a发送到播放控制引擎32,而不通过HDMV模块33和BD-J 模块35。这使得可以无延迟地执行用于播放、停止、暂停开始、暂 停结束等等的播放控制。在图36中,符号众l、众2以及众3分别指 示以下内容用户事件管理器37将用户事件分为(i)播放控制的用 户事件以及(ii)键盘事件(☆!、众2);以及根据播放控制的用户事 件被发送到播放控制引擎32的功能调用(众3)。
Java (TM)虚拟机38将应用程序所包含的xlet程序加载到工作 存储器,对该xlet程序进行解码,并且根据解码结果控制较低的层。 更具体地说,在对较低层的控制中,Java (TM)虚拟机38向BD中 间件(middleware)(未示出)发出一种JMF方法,从而对应于BD 播放装置的功能调用可以替换现有的功能调用,并且在该替换之后将 该功能调用发送到播放控制引擎32。
事件听者管理器39对键盘事件进行分析并且分发这些事件。图 36中的实线箭头Ol和02指示了由事件听者管理器39所进行的事件 分发。如果要被分发的事件是已经在xlet程序的事件听者中登记了的 键盘事件,那么事件听者管理器39就将该事件分发到由BD-J对象间 接指向的一个xlet程序。xlet程序中的事件听者具有对应于已经在其 中登记了的JMF的键盘事件。因此,可以通过这样一种登记的键盘 事件启动该xlet程序。如果要被分发的事件是未在事件听者中登记的 键盘事件,那么事件听者管理器39就将该事件分发到缺省操作管理 器40。因为在BD-ROM播放装置中可能会出现包含未在事件听者中 登记的键盘事件的各种键盘事件,所以上述安排是用于对每种键盘事 件都可以进行适当地处理而不会出现故障。
当事件听者管理器39将未在xlet程序的事件听者中登记的键盘 事件分发到缺省操作管理器40时,缺省操作管理器40向播放控制引 擎32发出对应于该未在事件听者中登记的事件的一个功能调用。图 36中的箭头03指示了由缺省操作管理器40发出的该功能调用。
PLMT处理器41是应用程序管理器36的一个组成部分,并且如 果从模块管理器34接收到activate(bobj—id),那么它就参考由bobj—id 标识的BD-J对象的播放列表管理表。并且如果将具有播放属性"自动播放"的PL写入到BD-J对象的播放列表管理表中,那么PLMT 处理器41就输出到播放控制引擎32以播放该自动播放PL。但是, 如果播放控制引擎32发出一种指示PL播放的结束的通知事件,那 么PLMT处理器41就会将发出该通知事件的时刻认做标题结束点。 图36中的箭头A1和A2分别指示了以下内容向播放控制引擎32 发出一个功能调用PLayPL ( △ 1);从播放控制引擎32输出一个通知 事件(A2)。
以上就是对BD-J模块35中层结构的全部描述。这里应该注意到, 在本实施例中省去了对许可控制器42的描述,我们会在实施例3中 对其进行详细描述。 <Java (TM)虚拟机38的内部结构>
接下来将描述Java (TM)虚拟机38的内部结构。图37显示了 Java (TM)虚拟机38的内部结构。如图37中所示,Java (TM)虚 拟机38包含了如图32所示的CPU24、用户类加载器52、方法区域 53、工作存储器54、线程55a、 55b,…55n以及Java (TM)堆栈56a、 56b,…56n。
用户类加载器52从本地存储器26等等中读取属于BDJA目录的 Java (TM)存档文件中的类文件,并且将这些读取的类文件存储到 方法区域53中。这种由用户类加载器52对类文件的读取是通过应用 程序管理器36指定一个文件路径并且命令用户类加载器52按照该路 径读取类文件而实现的。如果该文件路径指示本地存储器26,那么 用户类加载器52从本地存储器26将一个应用程序所包含的Java (TM)存档文件中的一个类文件读取到工作存储器上。如果该文件 路径指示虚拟文件系统30中的一个目录,那么用户类加载器52从 BD-ROM或本地存储器18上将一个应用程序所包含的Java (TM) 存档文件中的一个类文件读取到工作存储器上。图35中所示的应用 程序激活控制(众3、众4以及众5)是通过用户类加载器52对类文 件的读取而实现的。如果所指定读取的类文件并未存储于本地存储器 26,那么用户类加载器52就通知应用程序管理器36出现一个读取故 障。方法区域53存储由用户类加载器52从本地存储器26读取的类 文件。
工作存储器54被称作堆区域,用于存储各种类文件的实例。图 33中所示的应用程序管理器36和事件听者管理器39是位于工作存 储器54中的常驻应用程序。工作存储器54还存储对应于存储于方法 区域53中的类文件的实例以及常驻类型实例。这些实例是应用程序 所包含的xlet程序。当这样的xlet程序存储于工作存储器54中之后, 应用程序就做好了运行的准备。在图33、 35和36中所示的层模型中, 工作存储器54位于高于Java (TM)虚拟机38的一个层。但是,按 照这种方式描述工作存储器54中的应用程序管理器36和事件听者管 理器39是为了易于理解。实际上,线程55a、 55b,…55n将应用程 序管理器36和事件听者管理器39作为实例执行。
线程55a、 55b,…55n是用于执行存储于工作存储器54中的方 法的逻辑执行体。线程55a、 55b,…55n将存储于本地变量或操作数 堆栈中的变量作为操作数从而执行计算,并且将计算结果存储到这些 本地变量或操作数堆栈中。箭头kyl、 ky2以及kyn象征性地指示了 从工作存储器54向线程55a、 55b,…55n提供的方法。尽管物理执 行体仅是一个CPU,但是Java (TM)虚拟机中最多可以提供64个 线程作为逻辑执行体。只要逻辑执行体的数量不超过64,那么就可 以生成新线程或删除现有线程。在Java (TM)虚拟机38的工作期间 可以增加或降低工作线程的数量。因为在必要时可以增加线程的数 量,所以可以允许多个线程并行执行一个实例,由此提高了该实例的 执行速度。在图37中,CPU24和线程之间具有"一对多"的关系。 但是,如果有多个CPU,那么这种关系可以为"多对多"。线程55a、 55b,…55n对这些方法的执行是通过下述方式实现的将该方法所 包含的字节码转换为CPU 24的原生码,并且将这些原生码发送到 CPU 24。这里省略了对这种转换为原生码的描述,这是因为这样就 偏离了本发明的主题。
基于一对一的关系,与线程55a、 55b,…55n—致地提供了 Java (TM)堆栈56a、 56b,…56n,并且每个堆桟都具有一个程序计数器(图37中的PC)和一个或多个帧。该"程序计数器"指示了当前 执行的实例的一个部分。该"帧"是一对一分配给对方法的调用的堆
栈系统区域。每帧包含用于存储在有过一次的调用中使用的参数的 "操作数堆桟";以及该被调用的方法使用的"局部变量堆栈(图37 中的本地变量)"。因为每次执行调用时就会使一帧进入Java (TM) 堆栈56a、 56b,…56n,所以当一个方法递归调用其自身时也会使一 帧进入堆栈。当调用一个JMF播放器实例播放方法时,或当调用一 个JumpTitleAPI调用时,对应于该调用的一帧会进入Java (TM)堆 栈56a、 56b,…56n。作为参数存储于这些帧的操作数堆栈中的信息 包含(i)播放方法将要播放的MPLS文件的文件名;(ii)指示 JumpTitle API调用的跳转目的地的title—id等等。
接下来将详细描述应用程序管理器36和它的组成部分PLMT处 理器41如何在上述的Java (TM)虚拟机38的内部结构中进行工作。
在模块管理器34输出一个请求激活一个由bobj—id标识的BD-J 对象的事件(activatred[bobj—id])之后,应用程序管理器36就将具有 该bobj一id的BD-J对象设置为当前BD-J对象,其中该应用程序管理 器36是工作存储器54中的一个实例。然后,应用程序管理器36对 转移源标题中的执行状态和当前BD-J对象中应用程序的运行属性进 行检查,并且确定(i)要自动启动的应用程序以及(ii)要自动终止 的应用程序。
确定(i)要自动启动的应用程序是通过以下方式实现的在当 前BD-J对象的应用程序管理表中搜索在转移源标题中未运行但是在 当前BD-J对象中具有自动运行属性的应用程序的apli—id—ref。如果 找到这样的apli—id—ref,应用程序管理器36就命令用户类加载器52 读取属于由该aplijctref标识的应用程序的Java (TM)存档文件的 类文件,这使得可以在工作存储器54中生成对应于该类文件的实例。 这使得其生存周期位于当前标题中的应用程序做好了启动的准备。然 后,当线程55a、 55b,…55n被引发执行该应用程序的方法时,该应 用程序就会启动。
确定(ii)要自动终止的应用程序是通过以下方式实现的在当前BD-J对象的应用程序管理表中搜索在转移源标题中运行但是在当 前BD-J对象中并不具有生存周期的应用程序的apli—id—ref。如果找 到这样的apli—id_ref,应用程序管理器36就终止具有apli—id—ref的应 用程序所包含的xlet程序。这使得可以重新获得以下这些资源(i) 工作存储器54中原来被该应用程序占据的一个区域,或者(iO Java (TM)堆栈56a、 56b, ■ , 56n中那些原来被用于执行该应用程序 的方法的帧。
应用程序管理器36的一个组成部分PLMT处理器41对转移源 标题中的播放状态和当前标题中播放列表的播放属性进行检查,并且 确定(i)要被自动播放的播放列表以及(ii)要被自动终止的播放列 表。
确定(i)要自动播放的播放列表是通过以下方式实现的在播 放列表管理表中搜索在转移源标题中未播放但是在当前标题中具有 自动播放属性的播放列表。如果找到这样的播放列表,PLMT处理器 41就将要被播放的播放列表的PI—id—ref作为参数从而执行用于播放 列表播放的功能调用。通过执行该调用,可以在Java(TM)堆栈56a、 56b,…56n中生成具有存储在操作数堆栈中的PI—id—ref的帧。并且 线程55a、 55b,…55n执行用于播放列表的播放的功能调用。通过执 行该功能调用,呈现引擎31开始对该播放列表进行播放。
确定(ii)要自动终止的播放列表是通过以下方式实现的在播 放列表管理表中搜索在转移源标题中播放但是并未写入到当前标题 的播放列表管理表中的播放列表。如果找到这样的播放列表,PLMT 处理器41就执行一种用于停止播放该播放列表的功能调用,并且从 Java (TM)堆栈56a、 56b,…56n中删除对应于用于播放该播放列 表的功能调用的帧。
应用程序可以按照四种模式在工作存储器54中终止。图38显示 了应用程序终止的这四种模式。在第一种模式中,当发生资源短缺并 且应用程序管理器36发出一个终止事件时应用程序终止(众1)。在 第二种模式中,当应用程序通过应用程序管理器36从另一个应用程 序接收到一个终止事件时该应用程序终止(众2)。在第三种模式中,当应用程序管理表中写入的生存周期结束并且应用程序管理器36发 出一个终止事件时应用程序终止(众3)。在第四种模式中,当应用程 序自身激活终止处理时该应用程序终止(众4)。在这四种模式中的三 种中,由应用程序管理器36终止该应用程序。由此我们可以理解, 应用程序管理器36在控制应用程序的工作方面发挥了中心作用。如 果发出一个终止事件不会使应用程序终止,那么应用程序管理器36 可以强制性地终止该应用程序从而重新获得资源。这种可以强制性重 新获得资源的权力是应用程序管理器36的一个特性。 到目前为止,我们已经对BD-J模块35的组成部分进行了描述。(流 程图的描述)
上述内容只是对应用程序管理器36进行了概况性描述。图39和 40中详细显示了应用程序管理器36的处理。接下来将参考流程图更 加详细地描述应用程序管理器36的处理步骤。
图39是显示应用程序管理器36的步骤的流程图。图39所示的 步骤包含一个主环路,而该主环路包含步骤S1、 S2、 S3和S4。在步 骤S1中,对是否发生了一个标题跳转进行判断。如果判断出发生了 一个标题跳转,那么应用程序管理器36改变标题(步骤S7),参考 转移目的地标题的应用程序管理表,并且终止在转移源标题中运行但 并不存在于转移目的地标题中的应用程序(步骤S8)。然后,应用程 序管理器36参考转移目的地标题的播放列表管理表,并且终止正在 转移源标题中播放而并不存活于转移目的地标题中的播放列表(步骤 S9)。
然后,应用程序管理器36命令PLMT处理器41判断是否有一 个在转移源标题中未播放而在转移目的地标题中具有自动播放属性 的PL (步骤SIO)。如果判断出有这样一个PL,那么PLMT处理器 41就命令播放控制引擎32播放该自动播放PL (步骤Sll)。如果没 有这样的PL,那么就不播放自动播放PL。
随后的步骤包含步骤S12至S18,用于激活在转移目的地标题中 具有生存周期的应用程序。在该工作步骤中,应用程序管理器36命 令启动一个自动运行应用程序(步骤S14),并且如果该自动运行应用程序成功地启动(步骤S15中为"YES"),那么就将自动播放PL 的播放图像转换为四分之一 (1/4)(步骤S18)。
如果步骤S15中判断为"NO",那么就执行包含S14至S17的环 路。该环路中的控制变量具有一个重新启动计数器。该重新启动计数 器定义了一个应用程序重新启动的次数。在步骤S12中对该重新启动 计数器进行重新设置,并且在步骤S16中判断重新启动计数器是否为 0。如果在歩骤S16中判断出重新启动计数器不是0,那么在步骤S17
中就对该重新启动计数器进行减法操作。只要重新启动计数器不是o,
该自动运行应用程序就在包含步骤S14到S17的环路处理中反复启 动。这样一种重复就确保了可以激活应用程序。
在步骤S2,判断是否终止了一个主应用程序。如果判断出终止 了主应用程序,那么控制就转移到步骤S5并且判断该主应用程序是 否正常终止。如果判断出主应用程序异常终止,那么就执行步骤S19 和S20。如果判断出主应用程序正常终止,那么控制就返回到包含步 骤S1到S4的主环路,而不执行步骤S19和S20。
在步骤S19,判断是否正在播放一个自动播放PL。如果判断出 正在播放一个自动播放PL,那么应用程序管理器36就命令播放控制 引擎32将该自动播放PL的播放图像转换为全屏(步骤S20)。然后, 控制转移到步骤S16。通过控制转移到步骤S16,即使应用程序异常 中断,也可以执行包含步骤S14至S17的环路处理。这使得应用程序 可以反复启动直到在步骤S12中设置的重新启动计数器变为0。
在步骤S4中,判断在BD驱动器1中是否存在BD-ROM。如果 不存在BD-ROM,那么应用程序管理器36就命令终止所有应用程序 (步骤S6)。
图40显示了播放列表管理表和应用程序管理表的具体例子。在 图40中,第一行显示了一个标题的播放图像,第二行显示了该标题 的时间轴,第三行显示了一个PL的播放的过程,并且第四行显示了 一个应用程序的执行。第四行指示了当标题开始时应用程序#1启动, 并随后在时刻tl进入到操作状态。另一方面,当标题开始时播放列 表#1启动播放。因此,如第一行左手侧所示,在应用程序启动延迟期间,即在标题启动之后和应用程序进入操作状态之前的期间,以全 屏图像显示播放列表#1的播放图像gjl。当应用程序#1在时刻tl进 入操作状态时,显示一个合成图像gj2,它包含作为子屏的PL的 播放图像;以及作为母屏的应用程序的执行图像。该例子中应用程序 的执行图像是用于一种游戏的屏幕,其中安排有启动按钮、继续按钮
以及电源指示器。另外,将该应用程序的执行图像显示为一个Java (Tm)应用程序,执行在互动图像平面12上画出一个图像的处理。 为了执行该画图处理,Java (TM)应用程序需要画图库和字符库。 此后,只要同时进行该应用程序的执行和该PL的播放,就显示该母 一子屏。
在该例子中,应用程序#1随后异常终止,并且应用程序管理器 36在时刻t2探测到该异常终止。箭头brl象征性地指示了该探测。 当它发生时,应用程序管理器36在步骤S20将PL的播放图像转换 为全屏。在图40中,在时刻t3转换为全屏。如第一行的右手侧所示, 按照全屏图像的方式显示播放图像gj3。
如上所述,根据本实施例,通过将播放列表管理表中的播放属性 设置为自动播放的这种安排,即使一个启动了的Java (TM)应用程 序需要花费5到10秒才能进入到操作状态,在启动期间在屏幕上也 有显示。"屏幕上有显示"的这种状态缓解了开始执行一个标题时发 生的启动延迟。
另外,如果发生应用程序启动故障,或者如果应用程序异常终止, 那么还会继续播放在播放列表管理表中定义的播放列表,这也提供了 其中"屏幕上有显示"的状态。通过这种安排,可以避免装置出现黑 屏这种最坏情况。这至少在一定程度上可以使装置的制造商感到放 心。
实施例2
实施例2涉及一项改进,其中在编写程序期间就定义了错误终止 的恢复处理。为了定义这样一种恢复处理,在本实施例的记录介质中, 在一个BD-J对象中提供了一个错误管理表。图41A显示了该BD-J对象的内部结构。如图41A中所示,该BD-J对象除了包含应用程序 和播放列表管理表之外,还包含一个错误管理表(Error Management Table[bobj—id])。图41B显示了该错误管理表的内部结构。如图41B 中所示,该错误管理表包含数量由Number—of—recovery指示的多条恢 复信息(recovery ())。图41B中的虚线"eml"指示了由标识符
"recovery—id"标识的一条给定的恢复信息的内部结构的局部放大 图。由虚线"eml"指示的该条给定恢复信息包含参照值
"Apli—id—ref",它唯一地标识了对应于该条恢复信息的应用程序的 标识符;以及五个标记 "Restart—Application—flag "、
"Continuous—Playback—flag " 、 " Select—Title—flag "、
"Notify_Event—flag"以及"Reboot—flag"。图42显示了这五个标记 的含义。接下来将描述错误管理表中这五个标记的含义。
当将"Restart—Application—flag"设置为0时,它指示了当一个应 用程序异常终止时,该应用程序并不重新启动,并且当将它设置为除
"0"之外的整数"n"时,它指示了重复n次进行重新启动。该标记 的缺省值为"0"。
当将"Continuous—Playback—flag"设置为"0"时,它指示了当 应用程序异常终止时并不继续播放列表的播放,并且当将它设置为
"1"时,它指示了当应用程序异常终止时继续播放列表的播放,而 当将它设置为"2"时,它指示了当应用程序异常终止时继续播放列 表的播放并且这种播放是按照全屏图像和正常速度进行的。该标记的 缺省值为"0"。
当将"Select—Title—flag"设置为"0"时,它指示了当应用程序 异常终止时在标题之间不发生转移,并且当将它设置为除"0"之外 的整数"n"时,它指示了当前标题跳转到以"n"作为其标题号的标 题。该标记的缺省值为"0"。
当将"Notify—Event—flag"设置为"0"时,它指示了当应用程序 异常终止时不输出事件,并且当将它设置为除"0"之外的整数"n" 时,它指示了输出事件序号为"n"的事件。该标记的缺省值为"1"。
当将"Reboot—flag"设置为"0"时,它指示了当应用程序异常终止时并不执行播放装置的引导程序,并且当将它设置为"1"时, 它指示了执行播放装置的弓I导程序。
可以在编写程序期间通过上述标记提前定义当应用程序异常终 止时需要执行的恢复处理。现在,给出了错误管理表的说明的一个具
体例子。图43A显示了两个标题(标题#1、标题#2),并且其中写入 了错误管理表。在标题#1的应用程序管理表中,将应用程序#1写为 一种AutoRun (自动运行)应用程序。并且在标题#1的错误管理表 中,写入了当应用程序#1异常终止时需要用到的一条恢复信息。在 标题#1的播放列表管理表中,将播放列表#1写为一种AutoPky (自 动播放)播放列表。
在标题#2的应用程序管理表中,将应用程序#2写为一种AutoRun 应用程序。并且在标题#2的错误管理表中,写入了应用程序#2的一 条恢复信息。
图43B显示了根据图43A中所示应用程序和错误管理表从而执 行的 一个应用程序的执行进度和 一个播放列表的播放进度。因为应用 程序#1的恢复信息指示了 Continuous—Playback—flag二2,所以当应用 程序#1异常终止时播放列表继续播放,并且该播放是按照全屏图像 和正常速度进行的。
另一方面,应用程序#2的恢复信息指示Notify—Event—flag=2, 所以当应用程序#2异常终止时输出序号为"2"的事件。
使用这样的恢复信息描述,可以为每个标题和每个应用程序定义 应用程序异常终止时需要执行的处理。
通过向BD-J对象中加入错误管理表,本实施例的应用程序管理 器36根据图44和45中所示的流程图执行处理。图44是显示了实施 例2中应用程序管理器36的工作步骤的流程图。与图39中的情况相 同,该流程图包含了一个主环路,而该主环路包含步骤Sl、 S2、 S3 以及S4。当在主环路中选择了一个标题时,就执行步骤S21至S27 的过程。
在步骤S21,应用程序管理器36使PLMT处理器41判断在转移 目的地标题中是否有播放列表管理表。如果在转移目的地标题中存在播放列表管理表,那么应用程序管理器36就使播放控制引擎32启动 在转移源标题中并未播放但是在转移目的地中具有AutoPlay属性的 一个PL的播放(步骤S22),并且然后判断该播放是否成功(步骤 S23)。如果在步骤S23中判断出该播放是成功的,那么执行步骤S25 到S28的过程。如果在步骤S23中判断出该播放并不成功,那么控制 就转移到图45中所示的流程图。
如果在转移目的地标题中没有播放列表管理表,那么应用程序管 理器36就使播放控制引擎32停止在转移源标题中正在播放的一个 PL的播放(步骤S24),并且执行步骤S25到S28的处理。
在步骤S25,判断在转移目的地标题中是否有应用程序管理表。 如果在转移目的地标题中有应用程序管理表,那么应用程序管理器 36就启动转移目的地标题中的AutoRun应用程序(步骤S26),并且 在步骤S27,判断该应用程序是否成功地启动,如果在步骤S27中判 断出应用程序成功地启动,那么控制就返回到包含步骤Sl到S4的环 路。如果判断在步骤S27中应用程序未成功启动,那么控制就转移到 图45中所示的流程图。
图45的流程图显示了当一个应用程序异常终止时执行的工作步 骤。在歩骤S30中,判断发生异常终止的该应用程序所属的标题中是 否有错误管理表。如果在步骤S30中判断出该标题中没有错误管理 表,那么控制就返回到包含步骤S1到S4的环路。
如果在步骤S30中判断出该标题中有错误管理表,那么控制就转 移到步骤S44然后返回到包含步骤Sl到S4的环路。在步骤S31,判 断错误管理表中的Restart一Application—flag是否为"0"。如果判断出 错误管理表中的RestarLApplication一flag不为"0",那么执行包含步 骤S40到S44的环路处理。在该环路处理中,将重新启动计数器设置 为写入到Restart—Application—flag的值"n"(步骤S40),并且然后执 行包含步骤S41到S44的环路。该环路处理中的控制变量是该重新启 动计数器。当应用程序成功启动(步骤S44中为"Yes")并且重新启 动计数器变为"0"时(步骤S41中为"Yes"),该环路处理结束。在 该环路处理中,只要在步骤S41或S44中判断出为"No",那么就重复对该重新启动计数器进行减法操作(步骤S42)并且重复启动该 AutoRim应用程序。通过这种重复,可以重新启动异常终止的应用程 序。如果判断出Restart—Application—flag是"0",那么就执行步骤S32。
在步骤S32,判断Continuous—Playback—flag是"0"、" 1 "还是"2"。 如果判断出Continuous—Playback—flag是"2",那么就按照全屏方式 显示AutoPlay PL的播放图像(步骤S33),并且控制返回到包含步骤 SI到S4的主环路。
如果判断出Continuous—Playback—flag是"1",那么就按照四分 之一屏幕的方式继续AutoPlay PL的播放图像(步骤S34),并且控制 返回到包含步骤SI到S4的主环路。
如果判断出Continuous—Playback—flag是"0",那么控制就转移 到步骤S35。
在歩骤S35,判断错误管理表中select—title—flag是否不为"0"。 如果判断出sdectjitle—flag为"0",那么控制转移到步骤S37。如果 判断出select—title—flag不为"0",那么就将转移目的地标题设置为写 在select—title—flag中的值"n"(步骤S36),并且控制转移到如图44 中所示的步骤S37,
在步骤S37,判断错误管理表中Notify_Event_flag是否不为"O"。 如果判断出Notify一Event—flag为"0",那么控制转移到步骤S39。如 果判断出Notify—Event—flag不为"O",那么就生成由Notify_Event_flag 的值"n"标识的事件"n"(步骤S38),并且控制转移到包含步骤SI 到S4的主环路,如图44中所示。在步骤S39,判断判断错误管理表 中Boot—flag是否不为"0"。如果判断出Boo^flag为"0",那么控制 转移到包含步骤SI到S4的主环路。如果判断出Boot—flag不为"0", 那么控制就转移到图44的开始处,并且执行播放装置的引导程序。
如上所述,根据本实施例,可以由程序编写者而不是装置制造者 定义当应用程序异常终止时播放装置应该如何执行操作。
这里应该注意到,可以将这样一个程序嵌入到播放装置中在播 放一个不具有错误管理表的标题期间,当一个应用程序异常终止时, 该程序就执行一种恢复处理。另外,在标题跳转API中可以提供指定Restart_Application—Flag 至Reboot_Flag中任何一个的参数,从而应用程序管理器36可以执 行对应于在标题跳转API中提供的参数的恢复处理。
实施例3
在实施例1中我们描述过了,可以将BD-J对象中的播放列表管 理表用于定义Java (TM)虚拟机中PL的播放。本实施例则将重点 放在通过应用程序的JMF方法的PL的播放。这样做所带来的一个问 题是播放列表管理表。也就是说,因为在播放列表管理表中已经描述 了是否可以播放一个PL,所以在某些标题中可以播放该PL,而在另 外一些标题中则不能播放该PL。另外,还有这样一种情况,其中从 版权保护的角度出发,我们希望禁止某种特定的应用程序对一个PL 进行播放,尽管我们已经将该PL定义为可以播放。为了实现这种对 PL的播放的限制,在实施例3中,许可控制器42和应用程序管理器 36执行以下处理。
如果一个应用程序请求播放一个PL,那么许可控制器42就执行 与该应用程序的互相认证,并且判断请求播放该PL的应用程序是否 被授权播放该PL。如果该应用程序被授权播放该PL,那么许可控制 器42就请求控制机32播放该PL。如果未授权该应用程序播放该PL, 那么许可控制器42就向请求PL播放的应用程序输出一个响应事件, 该事件指示了请求未被许可。通过这种由许可控制器42判断是否许 可应用程序发出的播放PL的请求,如果发行人所发行的PL被请求 用另一个发行人所发行的应用程序播放,那么该请求就可能会被拒 绝。这使得不能使用非授权的应用程序播放一个PL。许可控制器42 所做出的判断是基于允许播放的PL和应用程序的组合以及不允许播 放的PL和应用程序的组合,并且在记录于BD-ROM中的许可文件 中定义了这些组合。这里省略了对这样一种文件的详细描述,因为它 偏离了本申请的主题。
在实施例3中,应用程序管理器36响应于一个应用程序发出的 请求,通知可以在当前播放时间点播放的一个PL。图46是一个流程图,它显示了应用程序管理器36所做出的这种通知的步骤。在该流 程图中,在一个应用程序启动期间,对该应用程序是否发出了通知一 个可播放PL的请求(GetPL)进行监视(步骤S45)。如果判断出该 应用程序发出了这样一种请求,那么继续判断在当前播放点所属的标 题所包含的BD-J对象中是否存在播放列表管理表(步骤S46)。如果 在该播放列表管理表中写入了一个PL,那么就将写入到播放列表管 理表中的该PL作为可播放PL通知给请求播放的该应用程序(步骤 S47)。
如果在播放列表管理表中未写入一个PL,那么就向请求播放的 该应用程序发送一条PL的播放不可用的通知(步骤S48)。到目前为 止,已经描述了实施例3中应用程序管理器36所执行的步骤。
接下来将描述当请求一个PL的播放时应用程序管理器36所执 行的步骤。在实施例3中,应用程序管理器36根据图47所示流程图 执行处理。
在图47中,应用程序管理器36判断是否有一个应用程序请求对 一个PL的播放(步骤S51 )。如果有请求一个PL的播放的应用程序, 那么应用程序管理器36就使得许可控制器42执行一种认证,从而判 断请求该播放的应用程序是否被授权播放该PL (步骤S52)。如果该 应用程序被授权播放该PL,那么应用程序管理器36就命令播放控制 引擎32启动该播放(步骤S53),并且等待由播放控制引擎32发出 的指示成功的响应(步骤S54)。
当接收到这样一种播放请求时,播放控制引擎32检查播放列表 信息的真实性。该检査包含检查其中存储有播放列表信息、剪辑信 息以及AV剪辑的BD-ROM和本地存储器18是否构成一个适当的播 放列表;以及由播放列表信息中dip_Information—file—name指定的该 剪辑信息和AV剪辑是否存储于BD-ROM和本地存储器18上。在其 中clip_Information—file一name并未指向一个适当文件的情况下,或者 在其中包含BD-ROM和本地存储器18的虚拟包中存在矛盾并且无法 构建一个适当的播放列表的情况下,播放控制引擎32会返回一个指 示"错误"的响应。如果在上述工作步骤之后返回一个"成功"响应,那么就向请求
播放的应用程序发出一个指示播放PL成功的事件(步骤S55)。如果 并未返回一个"成功"响应,那么就向请求播放的应用程序发出一个 指示播放PL失败的事件(步骤S56)。另一方面,如果在步骤S52判 断出请求播放的应用程序未被授权播放该PL,那么就向请求播放的 应用程序发出一个指示无法播放PL的事件(步骤S57)。
如上所述,本实施例使得如果对每个标题都定义了是否可以播放 一个播放列表,并且如果某些应用程序被授权可以播放一个播放列 表,而其它应用程序不具有这种授权,那么就可以响应于一个应用程 序发出的请求从而适当地执行一个播放列表的播放。这使得可以通过 组合应用程序的执行和播放列表的播放来提供多种内容表示。
实施例4
在实施例1中我们描述过,通过使我们期望播放的播放列表附加 有播放属性"AutoPlay",可以命令播放装置在启动标题时播放该 AutoPlayPL。但是,本实施例涉及一种改进,其中在BD-ROM中记 录了一种无边界应用程序,并且当标题启动时,使得该无边界应用程 序选择要自动启动的标题。
无边界应用程序是这样一种应用程序它与播放装置中的常驻应 用程序(例如播放控制引擎32)相同,并且响应于该播放控制引擎 32发出的请求从而执行一个处理,该处理是从写在播放列表管理表 中的多条播放列表信息中选择一条与播放装置侧的PSR设置值相匹 配的播放列表信息,并且通知该条被选中的播放列表信息。
为了使无边界应用程序选择一个PL,将播放列表管理表中的关 于请求这样一个选择的标题的所有播放属性都设置为"未指定"。这 是因为将"所有属性未指定"用作一种触发事件,使得播放控制引擎 32请求该无边界应用程序选择一个PL。
无边界应用程序所进行的选择是基于在编写程序期间所定义的 选择算法。图48A到48C通过表的形式显示了嵌入到无边界应用程 序中的选择算法的内容。该表指示了对应于PL的PSR值的范围,当PSR具有该值时,该PL将被播放。在这些图中,图48A显示了基于 母级别的选择算法的内容。在该播放装置中母级别被设置为PSR (13)。更具体地说,将指示用户年龄的一个整数设置在PSR (13) 中,并且播放装置将该整数视为母级别。在图48A中,PSR (13)的
值可以分为三个范围小于14;大于等于14并且小于18;以及大于
等于18。另外,为这些范围中的每种都指示了一个要被播放的播放 列表。因此,基于这样一种选择算法,如果PSR设置值小于14,那 么无边界应用程序就选择播放列表#1;如果PSR设置值大于等于14 并且小于18,那么无边界应用程序就选择播放列表#2;并且如果PSR 设置值大于等于18,那么无边界应用程序就选择播放列表#3。
图48B显示了基于音频语言的选择算法的内容。在播放装置中 将音频语言设置到PSR (16)。更具体地说,将一个整数设置在PSR (16)中,并且播放装置认为该整数指定了用于音频播放的语言。在 图48B中,PSR(16)的值可以分为三种范围英语;日语;以及其 它。另外,为这些范围中的每种都指示了一个要被播放的播放列表。 因此,基于这样一种选择算法,如果PSR (16)设置值指示英语,那 么无边界应用程序就选择播放列表#1;如果PSR (16)设置值指示日 语,那么无边界应用程序就选择播放列表#2;并且如果PSR(16)设 置值指示除英语和日语之外的其它语言,那么无边界应用程序就选择 播放列表#3。
图48C显示了基于用于视频的播放器配置的选择算法的内容。 在播放装置中将用于视频的播放器配置设置到PSR (14)。更具体地 说,将一个整数设置在PSR (14)中,并且播放装置认为该整数指定 了用于视频播放的环境。在图48C中,PSR(14)的值可以分为三种 范围分辨率525x600的电视系统信箱;分辨率525x600的电视系 统;以及分辨率1920 x 1080的电视系统。另外,为这些范围中的每 种都指示了一个要被播放的播放列表。因此,基于这样一种选择算法, 如果PSR(14)设置值指示分辨率525 x 600的电视系统信箱,那么 无边界应用程序就选择播放列表#1;如果PSR(14)设置值指示分辨 率525 x 600的电视系统,那么无边界应用程序就选择播放列表#2;并且如果PSR (14)设置值指示分辨率1920 x 1080的电视系统,那 么无边界应用程序就选择播放列表#3。通过使用一种计算机描述语言 描述如图48A到48C所示的条件转移就可以生成如图48A到48C所 示的选择算法。
到目前为止,已经描述了本实施例中记录介质的一种改进。接下 来将描述本实施例中播放装置的一种改进。该改进主要包含对应用程 序管理器36和播放控制引擎32的改进。
当标题之间发生转移时,应用程序管理器36参考播放列表管理 表并且判断在该播放列表管理表中是否存在AutoRim PL。如果没有 AutoRim PL,那么应用程序管理器36就将该播放列表管理表转移到 播放控制引擎32中,并且请求播放控制引擎32自动播放写在该播放 列表管理表中的一个PL。
当播放控制引擎32接收到播放列表管理表时,它会请求无边界 应用程序选择PL。当播放控制引擎32从无边界应用程序接收到该无 边界应用程序响应于该请求从而发送的可播放PL的列表时,它判断 在该表中所列出的PL中是否有一个写在从播放项转移而来的播放列 表管理表中的PL。并且如果在这些由无边界应用程序选择的PL中有 一个写在播放列表管理表中的PL,那么播放控制引擎32就自动播放 该PL。
图49显示了标题无边界应用程序选择PL的过程。在图49的左 手侧,显示了播放装置中软件的层结构。在图49的右手侧,显示了 BD-ROM的内容。在图49中,符号 1、 2、 3、 4分别代表以 下内容应用程序管理器36发出的在播放列表管理表中没有自动播 放的通知( 1);播放控制引擎32发出的指示可播放PL的请求(◎ 2);标题无边界应用程序对PSR设置值的获取( 3);以及标题无 边界应用程序向播放控制引擎32发出的关于可播放PL的通知(◎ 4)。
这里在图49中应该注意到,出于方便的考虑将标题无边界应用 程序写到BD-ROM上。因为标题无边界应用程序是一种Java (TM) 应用程序,所以更接近于实际情况的描述是标题无边界应用程序是一种由Java (TM)虚拟机38的工作存储器54中线程55执行的一种 实例。
根据上述的本实施例,使得位于标题边界处的一个应用程序做出 上述判断。这使得播放装置中的播放控制引擎32在启动一个标题后 的较早阶段就可以从记录于BD-ROM上的众多PL中识别这样一个 PL:它满足播放装置中设置的条件。这使得即使不预先确定具有 "AutoPlay"播放属性的应用程序,也可以在该标题的起始处确定一 个要被播放的PL。即使在BD-J模式中也可以实现例如语言信用和母 锁定的播放控制。
这里应该注意到,尽管在本实施例中选择算法将PSR值和播放 列表联系在一起,但是还可以预先定义当播放装置中的PSR设置值 超出假定范围时要被播放的播放列表。
实施例5
在实施例4中,标题无边界应用程序具有一种用于根据PSR设 置值选择要被播放的PL的选择算法。本实施例涉及一种改进,其中 当一个PL具有多角度周期时,使得标题无边界应用程序可以从该多 角度周期包含的多个角度中选择一个角度。本实施例中的标题无边界 应用程序将多个PSR值范围与要被播放的角度联系到了一起。在本 实施例中,如果当前播放时间点位于一个多角度周期中,那么播放控 制引擎32就请求标题无边界应用程序选择一个要被播放的角度。当 标题无边界应用程序接收到这样一个请求时,它就获得当前所设置的 PSR值,执行一种选择算法,并且选择对应于所获得的设置值的一个 角度。标题无边界应用程序向播放控制引擎32通知选择的结果,从 而播放控制引擎32播放该选择的角度。
如上所述,根据本实施例,负责编写程序的人可以定义一种用于 根据PSR值选择角度的算法。这使得负责编写程序的人可以使用多 种角度写出多种应用程序。
实施例6实施例6涉及实现BD-J模式中PL的播放的同步的一种改进。 当调用PlayPLAPI函数时,播放控制引擎32根据PL信息执行工作 步骤。如果PL具有两个小时的播放周期,那么上述的工作步骤在这 两个小时内就会一直持续。这样所引发的一个问题是,在Java(TM) 虚拟机38返回一个响应"成功"的时刻和播放控制引擎32实际上结 束该过程的时刻之间存在一段间隙。在一个调用之后,主要用于执行 事件驱动过程的Java (TM)虚拟机38立即就返回一个指示成功或失 败的响应。但是,因为播放控制引擎32实际上在两个小时之后才结 束处理,所以并不能通过一个调用之后立即就被返回的响应"成功" 确认该处理的结束。如果在PL播放期间执行了快进、后退或跳读, 那么该周期就会从两个小时变为小于或多于两个小时。当出现上述情 况时,就更加难以识别处理的结束。
播放控制引擎32独立于应用程序进行工作。因此,应用程序管 理器36不能准确地确定PL播放结束的时亥U。所以,在本实施例中, 无论应用程序是否终止,只要在工作存储器中有一个JMF播放器实 例,也就是说只要BD-J模块35被授权对呈现引擎31进行控制,那 么就会一直等待由播放控制引擎32发出的通知事件。如果从播放控 制引擎32接收到了一个通知事件,那么就可以确定标题已经终止, 并且命令模块管理器34转移跳转到下一个标题。通过这样一种安排, 可以将播放控制引擎32结束一个PL播放的时刻视为标题终止的时 刻。
接下来将参考图50到54中所示流程图,具体描述播放控制引擎 32所执行的控制工作歩骤。
图50是一个流程图,显示了播放控制引擎32所执行的PL播放 的步骤。该播放步骤主要包含对呈现引擎31的控制(步骤S106)和 对BD-ROM驱动器1或本地存储器18的控制(步骤S108)。在该流 程图中,将处理目标播放项指示为播放项弁x。在该流程图中,首先读 取当前PL信息(.mpls)(步骤SlOl),并且执行步骤S102到S110 的过程。步骤S102到S110组成了一种环路处理,其中对于当前PL 信息所包含的每条PI信息都重复执行步骤S103到SllO,直到在步骤S109中判断为"YES"。在该环路处理中,将处理目标播放项指示 为播放项弁x(P说x)。如果当前PL的起始处的播放项设置为播放项存x, 那么就对该播放项fe进行初始化(步骤S102)。对于上述环路处理来 说,结束的条件是判断出播放项^是当前PL中的最后播放项(步骤 S109)。如果播放项&不是当前PL中的最后播放项,那么就将当前 PL中的下一个播放项设置为播放项弁x (步骤SllO)。
步骤S103到S110按照如下方式在环路处理中重复执行。将播放 项弁x的Clip—information—file—name指定的剪辑信息读入到脚本存储 器25中(步骤S103)。使用当前剪辑信息的EPmap将播放项^x的 In_time转换为一个I图像地址"u"(步骤S104)。使用当前剪辑信息 的EPmap将播放项弁x的Out—time转换为一个I图像地址"v"(步骤
5105) 。将I图像地址"v"的下一个I图像地址减1,并将得到的结 果地址设置为地址"W"(步骤S107)。命令BD-ROM驱动器1或本 地存储器从I图像地址"u"到地址"W"的位置处读取TS包(步骤 S108)。
另一方面,命令呈现引擎31输出数据,并且这些数据的范围是 从当前PLMark的mark—time_stamp到播放项弁x的Out—time (步骤
5106) 。通过执行步骤S105到S108,可以播放由播放项弁x指定的一 部分AV剪辑。
在此之后,判断该播放项弁x是否为当前PL中的最后播放项(步 骤S109)。
如果判断出播放项弁x不是当前PL中的最后播放项,那么就将当 前PL中的下一个播放项设置为播放项弁x (步骤S110),并且控制返 回到步骤S103。重复上述步骤S103到S110从而按顺序播放该PL包 含的播放项。
图51是一个流程图,显示了角度改变步骤和用于向回跳读/向下 跳读的步骤。该流程图与图50中所示的步骤并行执行,并且重复执 行包含步骤Slll到S112的环路处理。在该环路的步骤Slll中,判 断从Java (TM)虚拟机38中是否发出了一个请求角度改变的API。 并且如果判断出发出了请求角度改变的API,那么就将当前剪辑信息变为另外一个。
在图51的步骤S115中,判断播放项弁x的is一multi一angles是否为 "ON"。该is一multi一angles是一种指示播放项^x是否对多角度做好了 准备的标记。如果在步骤S115中判断为"N0",那么控制就转移到 步骤S113。如果在步骤S115中判断为"YES",那么就执行步骤S116 到S119。步骤S116到S119是按照以下方式执行的。用变量"y"代 替角度改变之后的角度号(步骤S116)。将播放项^中第"y"个 Clip_information—file_name指定的 一 条剪辑信息读取到脚本存储器 21 (步骤S117)。使用当前剪辑信息的EP—map将当前PTM转换为 —个I图像地址"u"(步骤S118)。使用当前剪辑信息的EP_map将 播放项^的Out—time转换为I图像地址"v"(步骤S119)。在如上面 所述改变I图像地址"u"和"v"之后,就停止与本处理同时执行的 图50中所示处理,然后控制转移到步骤S106。通过转移到步骤S106, 从另一个AV剪辑读取TS包,.并且改变了视频内容。
另一方面,在图51的环路中的步骤S112中,判断从Java(TM) 虚拟机38中是否调用了一个向回跳读/向下跳读API。并且如果判断 出调用了向回跳读/向下跳读API,那么就执行图52的流程图中所示 的步骤。图52是一个流程图,显示了当判断出发出了向回跳读/向下 跳读API时执行的步骤。可以按照多种方式实现用于执行向回跳读或 向下跳读的步骤。因此,应该注意到这里仅描述了一个这样的例子。
在歩骤S121 ,通过对PSR指示的当前PI号和当前PTM进行转 换从而获得当前标记信息。在步骤S122,判断按下的键是否为向下 跳读或是向回跳读。如果按下的是向下跳读,那么在步骤S123中将 方向标记设置为"+ l"。如果按下的是向回跳读,那么在步骤S124 中将方向标记设置为"一1"。
在步骤S125中,将当前PLMark编号设置为通过将当前PLMark
号与方向标记的值相加而得到的数量。这里,如果按下的是向下跳读 键,那么就将方向标记设置为"+ l",并且因此当前PLMark增加。 如果按下的是向回跳读键,那么就将方向标记设置为"一1",并且因 此当前PLMark减小。在步骤S126中,将当前PLMark的ref_to—Playltem一Id中描述的 PI设置到播放项#x 。在步骤S127 ,读取播放项#x的 Clip—information—file—name指定的剪辑信息。在步骤S128,使用当前 剪辑信息的EP—map将当前PLMark的markjime—stamp转换为一个 I图像地址"u"。另一反面,使用当前剪辑信息的EP—map将播放项 #x的Out_time转换为一个I图像地址"v"。在步骤S130,命令呈现 引擎31输出数据,并且这些数据的范围是从当前PLMark的 mark_time—stamp到播放项弁x的Out—time。停止与本处理并行执行的 图50中所示的处理,并且然后控制转移到图50的步骤S107。通过 这种方式,在改变I图像地址"u"和"v"并且命令播放另一部分之 后,控制转移到步骤S107。通过转移到步骤S107,从另一个AV剪 辑读取TS包,并且改变了视频的内容。
图53是一个流程图,详细显示了呈现引擎31的工作步骤。在该 流程图中,将I图像的PTS设置到当前PTM之后(步骤S131),执 行包含歩骤S132到步骤S137的环路处理。
接下来将描述包含步骤S132到S137的环路处理。在该环路处理 中,反复输出对应于当前PTM的图像和音频并且反复更新当前PTM。 在该环路处理中,步骤S136定义了该环路处理结束所必需的条件。 也就是说,步骤S136定义了必须要由该环路处理结束当前PTM就是 PI弁x的Out—time 。
在歩骤S133,判断Java (TM)虚拟机38是否调用了快退API 或快进API。如果判断出调用了快退API或快进API,那么就在步骤 S138中判断所调用的API是快进还是快退。如果是快进,那么将下 一个I图像的PTS设置到当前PTM (步骤S139)。通过将当前PTM 设置到下一个I图像的PTS,可以实现每秒以向前跳读的方式播放AV 剪辑。通过这种安排,可以按照两倍速度或其它速度向前播放AV剪 辑。如果是快退,那么就判断当前PTM是否已经到达了播放项&的 Out_time (步骤S140)。如果判断出当前PTM未到达播放项弁x的 Out—time,那么就将前一个I图像的PTS设置到当前PTM (步骤 S141)。以这种方式,通过将读取目的地地址A设置到前一个I图像,可以实现每秒以向后跳读的方式播放AV剪辑。通过这种安排,可以 按照两倍速度或其它速度向后播放AV剪辑。可以通过多种方式实现 快进或快退的步骤。因此,应该注意到这里仅描述了一个这样的例子。 在步骤S134,判断是否调用了菜单调用API。如果判断出调用 了菜单调用API,那么就暂停当前播放过程(步骤S142),并且执行 用于菜单过程的菜单程序(步骤S143)。通过该过程,如果执行了菜 单调用,那么就可以暂停播放过程,并且执行用于菜单过程的菜单程 序。
在步骤S135,判断是否有一个在sync—Playltem—id中已经为其指 定了了播放项弁x (Playltem#x)的子播放项弁y (SubPlayltem #y)。如 果判断出存在这样一个子播放项弁y,那么控制就转移到图54中所示 的流程图。图54是一个流程图,它显示了子播放项的工作步骤。在 该流程图中,首先在步骤S146中判断当前PTM是否是子PI#y的 Sync—start—PTS_of—Playltem。如果判断出当前PTM是子PI#y的 Sync—start_PTS_of_PlayItem,那么控制就转移到步骤S153,并且在 该步骤中命令播放控制引擎32执行子播放项弁y的播放过程。
如果在步骤S136中判断为"YES",那么就执行步骤S144和 S145。在步骤S144中,判断是否满足下述两个条件(i)虚拟机文 件系统30输出了文件事件的通知结束;以及(ii)解码器输出了解码 事件的通知结束。如果上述两个条件都得到满足,那么就将流事件的 通知结束输出到播放控制引擎32。
图54中包含步骤S147到S152的流程图显示了基于子播放项弁y 的工作步骤。
在步骤S147中,读取由子播放项弁y的Clipjnformation—file—name 指定的剪辑信息。在步骤S148,使用当前剪辑信息的EP—map将子 播放项弁y的In—time转换为地址a 。在步骤S149,使用当前剪辑信 息的EP—map将子播放项^y的Out_time转换为地址P 。在步骤S150 中,命令解码器输出子播放项的In—time到Out—time。将I图像地址 P的下一个I图像地址减1,并且将得到的结果设置到地址Y (步骤 S151)。命令BD-ROM驱动器1或本地存储器18从子剪辑弁z中地址a到地址Y的位置读取TS包(步骤S152)。
现在,回到图50,我们将继续描述播放控制引擎32的过程。在 步骤S19中,判断呈现引擎31是否已经完成了播放控制。步骤S131 中将一直判断为"NO",直到图53的流程图中所示过程执行到最后 一个播放项弁x。当完成了图53的流程图中所示过程时,在步骤S131 中判断为"YES",并且控制转移到步骤S114。在步骤S114,通知事 件将被输出到Java (TM)虚拟机38中。通过该输出,Java (TM) 虚拟机38可以识别出播放已经进行了两个小时。
根据上述的本实施例,应用程序管理器36可以识别出播放已经 连续进行了两个小时的时刻。这使得应用程序管理器3 6可以命令Java (TM)虚拟机38执行一个与播放列表的播放的结束同步的处理。
注意事项
上述内容并未对本发明的所有实施例都进行了描述。还可以通过 例如实施例(A)、 (B)、 (C)、 (D)等等实现本发明。在本申请的权 利要求中定义的本发明是上述实施例的扩展或总结,或者是对上述实 施例的修改。这些扩展或总结的程度是基于提交本申请时本发明的技 术领域中的技术水平。
在上述所有实施例中,用BD-ROM代表了用于实现本发明的光 盘。但是,用于实现本发明的光盘的特征在于记录在光盘上的动态脚 本和索引表,并且这些特性并不依赖于BD-ROM的物理特性。因此, 任何可以用于记录动态脚本和索弓I表的记录介质都可应用于本发明。 例如,可以使用例如DVD-ROM、 DVD-RAM、 DVD-RW、 DVD-R、 DVD+RW、 DVD+R、 CD-R以及CD-RW的光盘,或者例如PD或 MO的磁光盘。另外,本发明还可以使用半导体存储卡,例如闪存 (TM)卡(compact flash card)、智能介质(smart media)、记忆棒 (memory stick)、多々某体卡(multimedia card)或者PCM-CIA卡。而 且,本发明还可以使用(i)磁记录盘,例如软磁盘(flexibledisk)、 超磁盘(SuperDisk)、 Zip或Clik!,或者(ii)可移动硬盘驱动器, 例如ORB、 Jaz、 SparQ、 SyJet、 EZFley或者微驱动器。进一步,本 发明可以使用嵌入到装置中的硬盘。在所有上述实施例中,播放装置在将记录于BD-ROM上的AV 剪辑输出到TV之前先要对这些AV剪辑进行解码。但是,播放装置 可能仅包含一个BD-ROM驱动器,而除BD-ROM之外的器件则位于 TV中。在这种情况下,可以将播放装置和TV包含到一个家庭网络 中,并且通过正EE 1394将该播放装置和TV连接到该家庭网络中。 另外,在上述实施例中,该播放装置是一种由于使用的原因从而要求 将其连接到一个TV的类型的播放装置。但是,该播放装置还可以是 这样一种类型其中该播放装置中内置一个显示器。进一步,可以将 每个实施例中实现了一种实质性过程的播放装置的一部分视作本发 明的播放装置。每个这样的播放装置都是本申请中描述的一种发明。 并且因此,基于每个实施例中所示播放装置的内部结构对播放装置所 进行的制造,都应该被视作是对本申请中所描述发明的实施。另外, 无论是出于营利目的还是免费对每个实施例中所示播放装置进行转 移、出租或是引入,都应该被视作是对本发明的实施。进一步,通过 直接的显示、产品目录或发行手册等等方式将该播放装置提供、转移 或出租给普通用户,也都应该被视作是对本发明的实施。
对于其工作步骤在每个流程图中得到了显示的程序来说,应该将 该程序视作一个独立的发明,这是因为如每个流程图中所示,该程序 为了对信息进行处理使用了具体的硬件资源。在每个实施例中,为了 实现本发明的程序,已经将该程序嵌入到播放装置中。但是,该程序 与播放装置之间是可以分离的,并且可以将该程序用作分立实体从而 实现每个实施例中所示的独立程序。可以将这种将每个实施例中所示 程序分立实体从而实施本发明的方法分为以下几类,例如(l)制造 该程序(2)出于营利目的或免费对该程序进行转移;(3)出租该程 序;(4)引入该程序;(5)通过双向电子通信线路向公众提供该程序; 以及(6)通过直接的显示、产品目录或发行手册等等方式将该程序 提供、转移或出租给普通用户。
我们认为在每个流程图的步骤中按照时间顺序执行的相关于时 间的元素在识别本发明方面起到了实质性的作用。因此,我们还认为 流程图中所示工作步骤起到了公幵播放方法的使用形式的作用。因此,我们认为按照时间顺序实施流程图的步骤从而实现本发明的目 的,实施本发明以及获得本发明的效果,也都是对本发明的实施。
当AV剪辑记录于BD-ROM上时,我们希望给该AV剪辑所包含 的每个TS包都附上一个扩展报头。该扩展报头称作TP—extra—header, 它包含"Arribval_Time—Stamp"禾口 "copy_permission—indicator", 并 且具有四字节的数据长度。将具有TP—extra—header的TS包(此后称 作具有EX的TS包)按照32个一组进行分组,并且将其写入到三个 段中。这32个具有EX的TS包的一组有6144个字节(=32x 192)。 每组的这种尺寸大小正好与这三个段中每个段的尺寸大小相同,其中 每个段的尺寸大小也是6144个字节(二2048 x 3)。存储于这三个段 中这32个具有EX的TS包的一组称作"对准单元"。
当将播放装置200用于一个家庭网络时(其中该装置通过正EE 1394连接到该网络),该播放装置按照下述传输过程传输该对准单元。 也就是说,发射机侧的一台设备将TP一extraJieader从对准单元中所 含每个具有EX的播放控制引擎32 TS包中除去,根据DTCP标准对 TS包的每个部分都进行编码,并且输出编码后的TS包。当输出编码 后的TS包时,该设备将同步包插入到编码后的TS包。基于 TP—extra—header的Arribval_Time—Stamp所指示的时间确定将同步包 插入到编码后的TS包中的位置。当输出这些TS包时,播放装置200 输出DTCP—Descriptor该DTCP—Descriptor指示了 TP—extra—header 中的复制许可/禁止设置。这里,通过描述DTCP一Descriptor从而指示 "复制禁止"使得在将播放装置通过正EE 1394连接到一个家庭网络 从而对其进行使用时,其它设备不能记录这些TS包。
在所有上述实施例中,记录于记录介质上的数字流是AV剪辑。 但是,该数字流可以是符合DVD视频标准或DVD视频记录标准的 VOB (视频对象)。该VOB是通过将视频流以及音频流复用到一起 从而获得的程序流,并且该程序流符合ISO/IEC13818-l标准。另外, AV剪辑中的视频流可以符合MPEG4或WMV系统。进一步,音频 流可以符合线性PCM系统、杜比AC3系统、MP3系统、MPEG-AAC 系统、Dts或WMA (视窗(TM)媒体音频)。在所有上述实施例中,可以通过对模拟广播所发出的模拟视频信 号进行编码从而获得视频作品。另外,视频作品还可以是包含通过数 字广播方式发出的传输流的流数据。
另外,还可以通过对存储在视频带上的模拟/数字视频信号进行 编码从而获得内容。进一步,还可以通过对直接从摄像机获得的模拟 /数字视频信号进行编码从而获得内容。进一步,可以通过发行服务 器所进行的发行从而获得数字作品。
BD-J模块35可以是一种嵌入到用于接收卫星广播的设备中的 Java (TM)平台。当BD-J模块35是Java (TM)平台时,本发明的 播放装置也执行用于MHP的STB所执行的过程。
此外,BD-J模块35可以是一种嵌入到用于执行移动电话的过程 控制的设备中的Java (TM)平台。当BD-J模块35是Java (TM) 平台时,本发明的播放装置也执行移动电话所执行的过程。
在层模型中,HDMV模式可以位于BD-J模式上。这尤其是因为 对HDMV模式中动态脚本进行分析和基于该动态脚本执行控制工作 步骤仅使播放装置承担了轻的负载,并且在BD-J模式上执行HDMV 模式并不存在任何问题。另外,在播放装置或电影作品的开发过程中, 仅通过一种模式就可以保证操作。
此外,可以仅在BD-J模式上执行播放过程。这是因为如实施例 5中所示,可以同步于BD-J模式中PL的播放执行播放控制,并且因 此不一定要提供HDMV模式。
通过在一种互动图像流中提供导航命令可以实现PL之间的转 移,并且其中该互动图像流会被复用到一个AV剪辑中。
在实施例1中,将标题无边界应用程序定义为这样一种标题它 的生存周期延伸到属于一个BD-ROM的所有标题。但是,也可以将 标题无边界应用程序定义为这样一种标题它的生存周期延伸到属于 多个BD-ROM的所有标题。
在实施例l中,在生成应用程序管理表时,我们希望将可以同时 执行的应用程序数量限制到,例如4或更少。
应该将可以同时执行的应用程序数量限制到例如4或更少的原因如下。有多个配有数字广播调频器功能的BD-ROM播放装置,并 且用于实现这种调频器功能的应用程序通常位于存储器中。为了给常 驻应用程序提供操作的空间,所以就应该将可以同时执行的应用程序 数量限制到,例如4或更少。我们希望在这四个应用程序中,第一个 是标题无边界应用程序,第二个是标题无边界程序,并且第三个是章 节边界应用程序。
在实施例2中,这样定义错误管理表,从而当一个应用程序异 常终止时,会执行一个恢复过程。但是,当一个应用程序异常终止时, 可能会执行多个恢复过程。也就是说,当一个应用程序异常终止时, 播放装置可以连续执行播放列表的播放、应用程序的重新启动以及事 件的输出。
另外,可以这样构建错误管理表从而为每个标题而并不为每个应 用程序都定义一个恢复过程。
AV剪辑可以具有一种复用到其中的互动图像流,用于显示菜单 和通过该菜单接收互动操作。因此,仅通过描述一个导航命令就可以 生成顶级菜单标题,其中该导航命令为了实现显示该顶级菜单和接收 互动操作仅需要命令播放电影对象中的一个AV剪辑。
在上述每个实施例中,只是举例说明了目录/文件结构和文件中 的数据结构。作为本发明的特征之一的管理信息并不依赖于目录/文 件结构和文件中的数据结构。因此,例如,对于作为BD-J模式中一 种操作脚本的BD-J对象来说,可以将其作为一个具有标识符 "bobj—id"和"BD-J"的文件(zzzzz.BD-J)包含到BDJA目录中, 并且可以仅将标识符"bobjjd"存储到BD-J Object.bdmv的BD-J Object [n]()。
工业应用性
个人可以将本发明的记录介质和播放装置可以用于家庭影院系 统中。但是,还可以将本发明的记录介质和播放装置应用于工业领域, 这是因为它具有在上述实施例中公开的内部结构,并且很明显的是, 可以对本发明的记录介质和播放装置进行批量生产。因此,本发明的 记录介质和播放装置具有工业应用性。
权利要求
1. 一种用于播放装置的集成电路,该播放装置设置有存储单元,存储用作虚拟机和应用程序管理器的模块,该虚拟机执行记录在记录介质上的应用程序,其中在该记录介质上记录有数字流、与该应用程序和数字流关联的标题和管理信息,而该应用程序管理器控制由该虚拟机执行的该应用程序的启动和停止,其中所述集成电路包含CPU,通过执行所述模块用作所述虚拟机和所述应用管理器;与所述CPU不同的视频解码器,用于解码记录在所述记录介质上的数字流中包含的视频流;与所述CPU不同的音频解码器,用于解码记录在所述记录介质上的数字流中包含的音频流;与所述CPU不同的合成单元,用于组合从所述视频解码器输出的视频数据与所述虚拟机执行所述应用程序而产生的图形数据,其中当所述虚拟机可执行与记录在所述记录介质上的标题相关的所述应用程序的生存周期在所述标题的播放周期内达到时,在所述CPU执行所述模块时所述集成电路配置为(1)所述视频解码器按照记录在所述记录介质上的管理信息解码包含在与所述标题相关的数字流内的视频流,以及所述音频解码器按照记录在所述记录介质上的管理信息解码包含在与所述标题相关的数字流内的音频流;(2)所述应用程序管理器工作使得所述虚拟机执行所述应用程序;以及(3)所述合成单元合成从所述视频解码器输出的视频数据与所述虚拟机执行所述应用程序而产生的图形数据。
2、 如权利要求1所述的集成电路,其中所述播放装置包括视频 平面和图形平面,其中所述视频平面存储了包含在所述视频流内的所 述视频数据,所述视频流包括在所述记录介质上记录的数字流内,而 所述图形平面存储了按照执行所述记录介质上记录的所述应用程序而产生的所述图形数据;以及所述集成电路配置成从所述视频解码器输出的所述视频数据存 储在所述视频平面内;所述集成电路配置成将由所述虚拟机执行所述应用程序产生的 所述图形数据存储在所述图形平面内;以及所述集成电路配置成所述合成单元合成存储在所述视频平面内 的所述视频数据与存储在所述图形平面内的所述图形数据。
3、 如权利要求2所述的集成电路,其中所述集成电路配置成在 所述CPU执行所述模块时可调整按照存储在所述视频平面内的所述 视频数据播放的播放图像。
4、 如权利要求2所述的集成电路,进一步包括与所述CPU不同的第一转换单元,用于将构成存储在所述视频 平面内的视频数据的像素数据转换成亮度和色差;以及与所述CPU不同的第二转换单元,用于将构成存储在所述图形 平面内的图形数据的像素数据转换成亮度和色差,其中所述集成电路 配置成所述合成单元合成从所述第一转换单元输出的所述亮度和色 差与从所述第二转换单元输出的所述亮度和色差。
全文摘要
BD-ROM包含记录于其中的播放列表、应用程序和BD-J对象,所述播放列表包含AV剪辑和播放列表信息。该应用程序是一种以用于虚拟机的编程语言写成的程序,并且指定了生存周期,在该生存周期期间可以由所述虚拟机执行该应用程序。该BD-J对象包含播放列表管理表。该播放列表管理表指示了在该生存周期期间与该应用程序的执行同时进行的播放列表的播放控制。
文档编号G11B27/10GK101447210SQ20091000140
公开日2009年6月3日 申请日期2004年11月9日 优先权日2003年11月10日
发明者冈田智之, 大久保雅文, 岩本启明, 池田航 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1