具体实施方式
实施例1
下面描述与本发明相关的记录介质的实施例。首先,描述关于本发明的重放装置的实现形式中的一种使用形式。图1显示了关于本发明的重放装置的典型使用形式。在图1中,关于本发明的重放装置是重放装置200。重放装置200用于在家庭影院系统中提供电影作品,所述家庭影院系统例如由重放装置200,遥控器300,和电视400组成。
关于本发明的重放装置的典型使用形式如上所述。接着描述用于由关于本发明的重放装置进行重放的记录介质。在给出的例子中,由关于本发明的重放装置播放的记录介质是BD-ROM 100(光记录介质)。图2显示了BD-ROM 100的内部结构。
在图2中的第四层级显示了BD-ROM 100,而在第三层级显示了BD-ROM上的轨道。图2中描绘的轨道由从BD-ROM的内圆周到外圆周的轨道螺旋产生,其对于侧面已经被画出。该轨道由导入区、卷区和导出区组成。图2中的卷区具有由物理层、文件系统层和应用层组成的层状结构。使用目录结构表达BD-ROM的应用格式给出了图2中的第一层级。BDMV目录放置在BD-ROM中的第一层级的根目录下。
INDEX.BDMV文件布置在BDMV目录中,并且在BDMV目录下存在五个子目录,它们被称为PLAYLIST目录,CLIPINF目录,STREAM目录,BDJA目录,和BDBJ目录。
STREAM目录存储形成主数字流的文件,将扩展名“m2ts”分配给该文件(00001.m2ts)。
在PLAYLIST目录中存在扩展名为“mpls”的文件(00001.mpls)。
在CLIPINF目录中存在扩展名为“clpi”的文件(00001.clpi)。
在BDJA目录中存在扩展名为“jar”的文件(00001.jar)。
在BDBJ目录中存在扩展名为“bdbj”的文件(00001.bdbj)。
接着描述这些文件。
AVClip
首先描述扩展名为“m2ts”的文件(00001.m2ts)。图3系统地显示了怎样构造扩展名为“m2ts”的文件。该文件存储AVClip。通过多路复用TS包构成AVClip(中间层级),通过将由多个视频帧(图片pj1,pj2,Pj3)组成的视频流和由多个音频帧组成的音频流(上面第一层级)首先转换成PES包(上面第二层级),然后转换成TS包(上面第三层级),并且以相同的方式将字幕图形显示(P图形或PG)流(下面第一层级)和对话交互图形(I图形或IG)流(下面第一层级)转换成TS包(下面第三层级)来产生所述TS包。
除了如图3中所示通过多路复用获得的AVClip之外,也存在不是由多路复用产生的AVClip。这些被称为SubClip,并且包括构成音频流、图形流或文本字幕流(TextST流)等的AVClip。
剪辑信息
扩展名为“clpi”的文件(00001.clpi)是与AVClip对应的一条剪辑信息。剪辑信息是管理信息,其包含显示GOP的头位置的EP_map,和诸如AVClip中的流的编码格式、帧频、比特率和分辨率等的信息。
PL信息
扩展名为“mpls”的文件(00001.mpls)存储播放列表(PL)信息。PL信息通过参考AVClip定义播放列表。图4显示了PL信息的结构,如图的左侧所示,PL信息由MainPath信息,PLMark信息和SubPath信息构成。
MainPath信息“MainPath()”由箭头mpl所指示的播放项目信息“PlayItem()”组成。播放项目是通过在一个或多个AVClip时间轴上指定In_time和Out_time来定义的重放间隔。多条播放项目信息的放置定义由多个重放间隔组成的列表。图4中的箭头mp2显示了播放项目信息的内部结构的特写。如图4中所示,播放项目信息由In_time,Out_time和显示相应的AVClip的Clip_Information_file_name组成。图5显示了AVClip和PL之间的关系。第一层级显示AVClip的时间轴,而第二层级显示PL的时间轴。PL信息包括三条播放项目信息(PlayItem#1-#3),其中三个重放间隔由PlayItem#1、#2和#3的In_times和Out_times定义。当这些重放间隔以线布置时定义不同于AVClip的时间轴。这是在第二层级所示的PL时间轴。因而允许通过播放项目信息中的定义来定义不同于AVClip的时间轴。
通常,在任何一个时间指定一个AVClip,尽管多个AVClip的分批指定也是可能的。使用播放项目信息中的Clip_Information_file_names执行AVClip的分批指定。图6显示了使用四个Clip_Information_file_names分批指定AVClip。图中的第一至第四层级显示了四个AVClip时间轴(时间轴AVClips#1-#4),而第五层级显示了PL时间轴。四个时间轴由包括在播放项目信息中的这四个Clip_Information_file_names指定。这允许由In_times和Out_times定义四种备选的可播放的重放间隔。结果,在PL时间轴上定义由多条可切换角视频(所称的多角度间隔)组成的间隔。
PLMark信息“PLMark()”指定PL时间轴上的任意间隔作为章节。图7显示了PLMark信息的内部结构,该内部结构包括箭头pm1所指示的ref_to_playitem_id和Mark_time_stamp。图8显示了使用PLMark定义章节。图8中的第一层级显示AVClip时间轴,而第二层级显示PL时间轴。图8中的箭头pk1和pk2显示PLMark中的播放项目(ref_to_playitem_id)和时间点(Mark_time_stamp)的指定。由于这些指定在PL时间轴上定义三个章节(Chapters#1-#3)。这完成了对PLMark的描述。
接着描述SubPath信息。
SubPath信息“SubPath()”通过在SubClip时间轴上指定In_time和Out_time定义一个或多个重放间隔,并且具有图9中所示的内部结构。SubPath信息由箭头sh1所指示的子播放项目信息“SubPlayItem()”组成。在箭头sh2所标记的特写中,子播放项目信息由Clip_Information_file_name,In_time,Out_time,Sync_PlayItem_Id,和Sync_Start_PTS_of_PlayItem组成。使用包括在子播放项目信息中的Clip_Information_file_name,In_time和Out_time指定SubClip时间轴上的In_times和Out_times。Sync_PlayItem_Id,和Sync_Start_PTS_of_PlayItem用于使SubClip时间轴和PL时间轴上的重放间隔同步。这允许在SubClip时间轴和PL时间轴上的处理以彼此同步进行。
图10显示了同步指定和SubClip时间轴上的重放间隔的定义。图10中的第一层级显示PL时间轴,而第二层级显示SubClip时间轴。图10中的SubPlayItem.In_time和SubPlayItem.Out_time分别显示重放间隔的开始和结束。因而显然重放间隔也在SubClip时间轴上被定义。箭头Sn1所标记的Sync_PlayItem_Id显示播放项目的同步指示,而箭头Sn2所标记的Sync_Start_PTS_of_PlayItem指定PL时间轴上的播放项目期间的一点。
BD-ROM中的PL信息的特征在于它使得定义允许切换AVClip的多角度间隔和允许同步AVClip和SubClip的同步间隔成为可能。将剪辑信息和PL信息归类为“静态脚本”。
下面描述“动态脚本”。在这里“动态”指的是重放控制的内容由于用户键事件和重放装置200中的状态变化等而变化。使用BD-ROM,可以使用与Java应用程序相同的描述来描述重放控制。也就是说,使用BD-ROM,Java应用程序充当动态脚本。
Java应用程序
下面描述Java应用程序。Java应用程序由装载在虚拟机的堆积区(也称为工作存储器)中的一个或多个xlet程序组成。应用程序由装载在工作存储器中的xlet程序以及数据构成。Java应用程序结构如上所述。
实际Java应用程序是存储在图2中的BDMV目录下的BDJA目录中的Java档案文件(00001.jar)。下面参考图11描述Java档案文件。
Java档案文件
Java档案文件(图2中的00001.jar)是一个或多个类文件和数据文件等的集合。图11A显示了收集在档案文件中的程序和数据。图11A中的数据是由Java档案库存储器收集并且排列在框内所示的目录结构中的多个文件。该目录结构由根目录,Java目录,和图像目录组成,其中common.pkg文件,类文件(aaa.class,bbb.class),和menu.jpg文件放置在各自的目录内。Java档案文件是Java档案库存储器将这些文件收集在一起的结果。当从BD-ROM读入高速缓存时类文件和数据被扩展,并且在高速缓存中作为存在于目录中的多个文件来对待。Java档案文件的文件名中的五位数字数值“00001”显示Java档案文件的标识符(ID),并且BD-J对象使用该值来参考Java档案文件。当将Java档案文件读入到高速缓存中时通过参考文件名中的该数值,有可能提取构成任意Java应用程序的数据以及程序。
图11A中的类文件(aaa.class,bbb.class)对应于以上的xlet程序。使用这些类文件的xlet程序(即实例)定义由Java平台支持的工作模式(BD-J)中的重放过程。xlet程序是能够使用Java多媒体框架(JMF)接口的Java程序,并且基于根据JMF等的键事件执行处理。
此外,xlet程序也可以执行访问网站和下载内容的过程。这允许重放通过混合下载内容和列表创建的原始作品。
接着描述xlet程序的类文件。图11B显示了类文件的内部结构。如图11B中所示,该类文件与普通类文件类似,由常数池,接口,和方法1,2,3…n组成。类文件中的方法包括由预记载的键事件触发的那些方法(EventListener)和用于调用重放装置200中的应用编程接口(API)函数的那些方法。通过利用分配给指定方法的局部变量和调用所述方法时出现的自变量描述这些方法中的计算过程等。Java档案文件如上所述。
接着描述扩展名为“bdbj”的文件。该文件(00001.bdbj)存储BD-J对象。BD-J 对象是信息,该信息通过使PL信息中被定义的AVClip与应用程序相联系来定义标题。图12显示了BD-J对象的内部结构。BD-J对象显示应用程序管理表和PL信息参考值。应用程序管理表显示Java应用程序,所述Java程序的生命周期是由BD-J对象通过枚举单个Java应用程序的ID(应用程序ID)和属于特殊应用程序的Java档案文件的ID来定义的标题。换句话说,每个应用程序由一个或多个Java档案文件构成。
PL信息参考值显示当开始标题时待显示的PL信息。
扩展名为“bdbj”的文件如上所述。
接着描述INDEX.BDMV文件。
INDEX.BDMV是与整个BD-ROM有关的管理信息。该文件包含以下信息,诸如标识电影作品供应商的组织ID和分配给由供应商提供的单个BD-ROM的光盘ID。当装载光盘之后首先通过读取INDEX.BDMV在重放装置中唯一地识别光盘。INDEX.BDMV可以附加地包括这样的表,该表将BD-ROM中的多个可播放标题映射到定义单个标题的BD-J对象。下面描述可记录到BD-ROM的标题的类型,所述类型包括FirstPlayTitle,Top_menuTitle,和标题#1-#3。
FirstPlayTitle负责当装载BD-ROM时在做其他事情之前播放BD-ROM的动态商标。FirstPlayTitle因而实现了当装载BD-ROM时播放代表电影作品的创作者和/或发行人的动态商标。
Top_menuTitle由AVClip和播放位于BD-ROM中的菜单层次的最顶层的菜单的应用程序组成。
标题#1、#2和#3对应于普通电影作品。
换句话说,INDEX.BDMV显示FirstPlayTitle,Top_menuTitle和标题#1-#3与单个BD-J对象的对应关系。
图13显示了INDEX.BDMV的内部结构。该文件显示FirstPlayTitle信息,Top_menuTitle信息,标题#1信息,标题#2信息,和标题#3信息与标题ID和定义这些标题的BD-J对象的对应关系。定义标题的BD-J 对象可以使用标题信息进行标识,而用于同步的PL信息和应用程序可以从这些BD-J对象导出。这完成了对BD-ROM的描述。
BD-ROM不是关于本发明的重放装置所用的唯一记录介质。
在重放期间也使用与重放装置一体化的硬盘(本地存储器)。下面描述记录在本地存储器中的数据。
图14显示了本地存储器中的目录结构。在该目录结构中,子目录“organization#1”位于根目录下,在该目录下有子目录“disc#1”和“disc#2”。organization#1目录被分配给电影作品的特定供应商。disc#1和disc#2目录被分配给由每个供应商提供的不同的BD-ROM。在这些目录名中利用在各自BD-ROM中的INDEX.BDMV文件中所示的组织ID和光盘ID。
提供与对应于特定供应商的目录中的BD-ROMs对应的目录允许独立地存储与单个BD-ROMs有关的下载数据。在这些子目录下存储了PL信息,剪辑信息,和AVClip,与存储在BD-ROM上的内容类似。也附加地存在Java档案文件,BD-J对象,合并管理信息文件,和签名信息文件。
与仅仅涉及BD-ROM上的AVClip的BD-ROM上的PL信息相比,本地存储器中的PL信息包括涉及BD-ROM上的和本地存储器中的AVClip的信息;也就是,作为虚拟包被新添加的PL信息,其特定例子是图14中的PLINFO#2。
在这里,由四条播放项目信息构成本地存储器中的PL信息(播放项目信息#1-#4)。在头条(播放项目信息#1)涉及BD-ROM上的剪辑信息而其余三条(播放项目信息#2-#4)涉及本地存储器中的剪辑信息的情况下,该PL信息可以从BD-ROM上的和本地存储器中的AVClip定义单一数据流序列,如图15中所示。
图15显示了由存储在本地存储器中的PL信息定义的播放列表重放时间轴的类型。第一层级显示存储在BD-ROM上的AVClip#1的重放时间轴,而第二层级显示在存储在本地存储器中的PL信息中定义的播放列表的重放时间轴,第三、第四和第五层级分别显示存储在本地存储器中的AVClip#2、#3和#4的重放时间轴。
在播放项目信息#2、#3和#4指定AVClip#2、#3和#4作为重放间隔的情况下,本地存储器中的PL信息能够将BD-ROM上的和本地存储器中的AVClip定义为单一数据流序列。
如上所述,BD-ROM上的和本地存储器中的AVClip可以被定义为单一数据流序列,并_且通过合并该数据流序列和BD-ROM上的或本地存储器中的应用程序,可以由AVClip和由记录在BD-ROM上的或本地存储器中的应用程序构成单一标题。如图16A中所示,在AVClip#1记录在BD-ROM上而AVClip#2-#4和Java应用程序记录在本地存储器中的情况下,这些AVClip和Java应用程序可以如图16B中所示作为单一标题来对待。
接着描述合并管理信息。合并管理信息唯一地显示本地存储器中的disc#1和#2目录中的构成虚拟包的所有文件,并且被存储在指定文件(在下文被称为“合并管理信息文件”)中。图17显示了合并管理信息文件的典型内部结构。合并管理信息文件由本地存储器中构成虚拟包的每个文件的存储位置信息组成。存储位置信息由访问作为虚拟包的各个文件的标识符和指示本地存储器中各个文件的存储位置的文件路径组成。
接着描述签名信息文件。签名信息文件在合并管理信息文件上显示供应商的电子签名。通常使用的电子签名通过计算需要防窜改的信息的散列值,并使用某种秘密密钥加密该散列值来获得。
这完成了对本地存储器的描述。
下面描述关于本发明的重放装置的实施例。图18显示了重放装置的硬件配置。重放装置由BD-ROM驱动器1,读缓冲器2,多路分解器(Demux)3,视频解码器4,视频平面5,图形显示(P图形)解码器6,图形显示(P图形)平面7,合成单元8,字体发生器9,交互图形(I图形)解码器10,开关11,交互图形(I图形)平面12,合成单元13,颜色查找表(CLUT)单元14,颜色查找表(CLUT)单元15,音频解码器16,网络设备17,本地存储器18,读缓冲器19,多路分解器(Demux)20,指令ROM 21,用户事件(UE)处理单元22,播放器状态寄存器(PSR)组23,中央处理单元(CPU)24,脚本存储器25,本地存储器26,和开关27。
首先描述关于记录在BD-ROM 100上的AVClip的重放的元件(BD-ROM驱动器1-音频解码器16)。
BD-ROM驱动器1装载/退出BD-ROMs,并且访问BD-ROM 100。
读缓冲器2是先进先出(FIFO)存储器,其中从BD-ROM 100或本地存储器18读取的传输流(TS)包在先进先出的基础上被存储。
Demux 3从读缓冲器2读取TS包,并且将这些TS包转换成打包基本流(PES)包。具有由CPU 24设置的包标识符(PID)的PES包,然后被输出到视频解码器4,P图形解码器6,I图形解码器10,和音频解码器16中的一个。
视频解码器4解码从Demux3输出的PES包以获得未压缩格式的图片,并且将这些图片写入视频平面5。
视频平面5用于存储未压缩图片。平面是重放装置中用于存储一屏像素数据的存储区。视频平面5具有1920×1080的分辨率,其中存储的图片数据由16位YUV表达的像素数据构成。在视频平面5中,每帧视频流中的重放视频可以被缩放。缩放包括将每帧的重放视频变化为整个视频平面5的1/4(四分之一)或1/1(全比例尺)。在BD-J模式中根据来自CPU 24的指令执行缩放,从而允许屏幕产生,由此视频流的重放图像被转移到屏幕的角上或投影到整个屏幕上。
P图形解码器6解码从BD-ROM读取的P图形流,并且将未压缩图形写入P图形平面7。字幕由于图形流被解码出现在屏幕上。
P图形平面7是带有用于一屏数据的存储空间的存储器,其能够存储一屏未压缩图形。该平面具有1920×1080的分辨率,其中P图形平面7中的未压缩图形的像素由8位索引颜色表达。存储在P图形平面7中的未压缩图形通过使用CLUT转换索引颜色被提交以供显示。
合成单元8合成存储在视频平面5中的未压缩图片数据和P图形平面7的存储内容。
字体发生器9使用字符字体来扩展包括在位图中的TextST流中的文本代码,并且将扩展代码写入P图形平面7。
I图形解码器10在DVD-like模式中解码从BD-ROM或本地存储器18读取的I图形流,并且将未压缩图形写入I图形平面12。
开关11选择性地将字体发生器9生成的字体序列和由P图形解码器6解码产生的图形中的一个写入到P图形平面7。
用由I图形解码器10解码产生的未压缩图形写入I图形平面12。使用αRGB全彩色在BD-J模式中将应用程序绘制的字符和图形写入到I图形平面12中。
合成单元13合成I图形平面12的存储内容和从合成单元8输出的合成图像(即合成未压缩图片数据和P图形平面7的存储内容)。该合成允许由应用程序写入I图形解码器10的字符和图形重叠在未压缩图片数据上并且被显示。
CLUT单元14将存储在视频平面5中的未压缩图形中的索引颜色转换成Y/Cr/Cb。
当在DVD-like模式(即用于播放象传统DVD这样的数字流的模式)中工作时CLUT单元15将存储在I图形平面15中的未压缩图形中的索引颜色转换成Y/Cr/Cb。当在BD-J模式(即用于与Java应用程序同步地播放数字流的模式)中工作时,CLUT单元15将αRGB全彩色转换成Y/Cr/Cb。需要注意的是Java应用程序可以绑定或不绑定到标题,以及绑定或不绑定到光盘。
音频解码器16解码从Demux 3输出的PES包并且输出未压缩音频数据。
关于AVClip重放的元件如上所述。下面描述关于在BD-J模式中工作的元件(网络设备17-Demux 20)。
网络设备17实现重放装置中的通信功能。在应用程序在BD-J模式中指定URL的情况下,网络设备17建立与URL所指示的网站的传输控制协议(TCP)或文件传送协议(FTP)连接等。由于连接被建立Java应用程序从网站被下载。
本地存储器18是硬盘,其用于存储通过网络设备17建立的连接从网站下载的内容,从除BD-ROM之外的通信和记录介质提供的内容,以及元数据。元数据是用于绑定和管理本地存储器18中的下载内容的信息。通过访问本地存储器18,BD-J模式中的应用程序可以使用下载内容执行许多处理。本地存储器18也保存合并管理信息文件。
读缓冲器19是FIFO存储器,其在SubClip被包括在存储于BD-ROM100上或本地存储器18中的下载内容中的情况下基于先入先存储构成SubClip的TS包。
Demux 20从读缓冲器19读取TS包,并且将读取的TS包转换成PES包。具有特定PID的PES包然后输出到P图形解码器6,字体发生器9,和音频解码器16。
以上元件17-20允许由Java应用程序通过网络下载的内容以类似于记录在BD-ROM上的内容的方式被播放。下面描述用于实现重放装置中的集中控制的元件(指令ROM 21—开关27)。
指令ROM 21存储软件,该软件定义与重放装置有关的控制。
响应重放装置的遥控器或前面板的键操作,UE处理单元22将用于执行这些操作的用户事件输出到CPU 24。
PSR组23是在重放装置内部的一组寄存器,由64个播放器状态寄存器(PSR)和4096个通用寄存器(GPR)组成。PSR 4-8用于表示当前重放点。
PSR 4由于被设置到1-100的值指示当前重放点的标题。将PSR 4设置为“0”表示当前重放点是菜单顶部(top menu)。
PSR 5由于被设置到1-999的值指示当前重放点的章节编号。将PSR 5设置为“0xFFFF”指示在重放装置中的章节编号为零。
PSR 6由于被设置到0-999的值指示当前重放点所属的PL(当前PL)的编号。
PSR 7由于被设置到0-255的值指示当前重放点所属的播放项目(当前播放项目)的编号。
PSR 8由于被设置到0-0xFFFFFFFF的值指示使用45KHz的时间精度的当前重放点(当前显示时间或“PTM”)。PSR 4-8允许在图23A中所示的整个BD-ROM的时间轴上标识当前重放点。
CPU 24运行存储在指令ROM 21中的软件以执行与整个重放装置有关的控制。这些控制动态地变化,其取决于从UE处理单元22输出的用户事件和PSR组23中的PSR值。
脚本存储器25用于存储当前PL信息和当前剪辑信息。当前PL信息是记录在BD-ROM上的当前被处理的一条PL信息。当前剪辑信息是记录在BD-ROM上的当前被处理的一条剪辑信息。
假设从BD-ROM低速读取,本地存储器26是临时存储BD-ROM的记录内容的高速缓冲存储器。本地存储器26的提供允许BD-J模式中的应用程序高效地运行。
开关27选择性地将从BD-ROM和本地存储器18读取的数据输送到读缓冲器2,读缓冲器19,脚本存储器25和本地存储器26中的一个。
关于本实施例的重放装置的硬件配置如上所述。下面描述关于本实施例的重放装置中的软件结构。
图19描绘了由硬件和存储在指令ROM 21上的软件组成的以层状结构重布置的元件。如图19中所示,重放装置的层状结构由第一层(BD层),第二层(BD播放器模型),和第三层(应用程序运行时间环境)组成。
图18中所示的重放装置的硬件配置属于第一层。在该硬件配置中,在图19中的第一层的“BD播放器”包括由视频解码器4,P图形解码器6,I图形解码器10和音频解码器16组成的“解码器”,由视频平面5,P图形平面7和I图形平面12组成的“平面”,BD-ROM 100和相关文件系统,本地存储器18和相关文件系统,以及网络设备17。
在第二层的“BD播放器模型”由用于显示引擎31和虚拟文件系统单元38的下层和用于重放控制引擎32的上层组成,并且提供与更高级别有关的API函数。
图18中所示的PSR组23和脚本存储器25存在于重放控制引擎32内部。
在第三层的“应用程序运行时间环境”由包括模块管理器33的层组成,所述模块管理器33堆叠在包括DVD-like模块29a和Java平台29b的层上。
下面描述该软件结构中的元件。
DVD-like模块29a,Java平台29b
DVD-like模块29a解码导航命令,并且基于解码结果执行与重放控制引擎32有关的函数调用。
Java平台29b是所谓的具有层次结构的Java平台,所述层次结构由Java虚拟机30和Java虚拟机运行的中间软件(未示出)组成。
Java虚拟机30
Java虚拟机30将构成应用程序的xlet程序装载到工作存储器中,解码xlet程序,并且根据解码结果在下层上执行控制。为了执行这些控制,Java虚拟机30向中间软件发布方法,使中间软件用对应于BD重放装置的函数调用替换所述方法,并且向重放控制引擎32发布所述函数调用。
Java虚拟机30的内部结构
下面描述Java虚拟机30的内部结构。图20显示了Java虚拟机30的内部结构。如图20中所示,Java虚拟机30由CPU 24,用户类装载器52,方法区53,工作存储器54,线程55a,55b,…55n,和Java栈56a,56b,…56n构成。
用户类装载器52从本地存储器26等读取BDJA目录中的Java档案文件中的类文件,并且将读取的类文件存储在方法区53中。由用户类装载器52读取类文件由于模块管理器33将指定文件路径的读指令发送到用户类装载器52被执行。如果文件路径指示本地存储器26,用户类装载器52将构成应用程序的Java档案文件中的类文件从本地存储器26读入工作存储器54。如果文件路径指示文件系统中的目录,用户类装载器52将构成应用程序的Java档案文件中的类文件从BD-ROM或本地存储器18读入工作存储器54。
方法区53存储由用户类装载器52从本地存储器26读取的类文件。
工作存储器54是所谓的存储各种类文件的实例的堆积区。工作存储器54存储对应于常驻应用程序的实例和读入到方法区53的类文件。一个实例是构成应用程序的xlet程序,通过将xlet程序放置到工作存储器54中使所述应用程序可执行。
线程55a,55b,…55n是用于执行存储在工作存储器54中的方法的逻辑执行实体。它们使用局部变量和存储在操作数栈中作为操作数的自变量执行计算,并且将计算结果存储在局部变量或操作数栈中。图20中的箭头ky1,ky2,和kyn象征性地指示方法从工作存储器54提供给线程55a,55b,…55n。尽管CPU是唯一的物理执行实体,在Java虚拟机30中可以有高达64个逻辑执行实体或线程。线程可以被新创建并且现有线程可以在该数值限度内被删除,而且当Java虚拟机30工作时工作线程的数目可以变化。能够适当地增加线程的数目也使得有可能使用每个实例的多个线程并行地运行实例,并且由此加速实例的执行。
Java栈56a,56b,…56n与线程55a,55b,…55n一比一地存在,并且每个具有程序计数器(图20中的“PC”)和一个或多个帧。程序计数器显示当前正在执行实例的哪个部分。帧是分配给方法的每次调用的栈型区域,并且由用于存储与调用同时出现的自变量的操作数栈和被所调用的方法使用的局部变量栈(图20中的“局部变量”)组成。由于无论何时进行调用帧都堆叠在Java栈56a,56b,…56n上,因此递归地调用自身的方法的帧也一个堆叠在另一个上面。
Java虚拟机的内部结构如上所述。具有以上结构的Java虚拟机充当事件驱动执行实体。这完成了对Java虚拟机的描述。
显示引擎31
显示引擎31执行AV重放功能。重放装置的AV重放功能是从DVD播放器和CD播放器继承的传统功能组,包括播放,停止,暂停开始(PAUSEON),暂停结束(PAUSE OFF),静音(STILL OFF),快进播放(x2,x4等),快退播放(x2,x4等),音频变化,字幕变化,和角度变化。为了实现这些AV重放功能,显示引擎31控制视频解码器4,P图形解码器6,I图形解码器10和音频解码器16以解码读入到读缓冲器2的AVClip的一部分,所述部分对应于预期时间。通过将PSR 8所指示的地方(当前PTM)解码为预期时间,可以致使AVClip中的任意点可播放。
重放控制引擎32
重放控制引擎32执行各种功能,包括(i)对播放列表的重放控制和(ii)采集/设置PSR组23的状态。重放控制功能包括根据当前PL信息和剪辑信息使显示引擎31执行以上AV重放功能中的播放和停止。功能(i)和(ii)根据从DVD-like模块29a和Java平台29b的函数调用被执行。
接着描述重放控制引擎32执行的处理与Java虚拟机执行的处理的同步。当调用函数时重放控制引擎32执行基于PL信息的处理。在用于重放的AVClip的持续时间执行该处理,无论重放时间是15分钟还是30分钟。这里的问题是在Java虚拟机30返回成功响应的时间和重放控制引擎32实际结束处理的时间之间存在延时(time lag)。作为事件驱动执行实体的Java虚拟机30在调用之后立即返回指示重放是否成功的响应,而重放控制引擎32在15或30分钟重放持续时间过去之后结束AVClip和播放项目的重放。因而,成功响应返回到应用程序的时间不能用作衡量15或30分钟以后处理结束的基础。当在PL重放期间执行快进或倒带时衡量处理结束变得更加困难,这是由于15或30分钟的重放时间发生变化。鉴于此,当各个播放项目或AVClip的重放结束时,重放控制引擎32将指示播放项目和AVClip重放结束的事件输出到应用程序。这种输出使得应用程序知道重放控制引擎32在哪个点结束播放项目或AVClip重放。
模块管理器33
模块管理器33读取INDEX.BDMV并且选择INDEX.BDMV中的多条标题信息中的一条作为当前标题信息。模块管理器33读取当前标题信息所指示的BD-J对象,并且基于BD-J对象中所描述的PL信息控制重放控制引擎32执行重放控制。模块管理器33也控制Java虚拟机30以读取和执行BD-J对象中所描述的Java档案文件。
如果基于PL信息的数字流的重放和应用程序的执行结束,或者如果用户调用菜单,模块管理器33读取定义另一标题的标题信息,并且选择该条标题信息作为当前标题信息。根据数字流重放或用户菜单调用选择另一条标题信息作为当前标题信息的过程被称为“标题变化”。
图21中所示的状态转变可以通过重复地执行标题变化实现。图21中的椭圆窗口表示标题。
标题包括当BD-ROM首次被装载时用于重放的“FirstPlayTitle”,构成顶部菜单的“Top_menuTitle”,和其他普通标题。图21中的箭头jh1,jh2,jh3,jh4,jh5,jh6,jh7和jh8象征性地指示标题之间的转移。
图21中所示的状态转变包括当BD-ROM被装载时播放FirstPlayTitle,然后转移到Top_menuTitle并且等待从顶部菜单选择。
当用户从菜单选择时,在再次返回到Top_menuTitle之前根据选择播放各个标题。直到光盘被退出无限地重复该处理的过程是光盘内容所独有的状态转变。该状态转变在上述的模块管理器33的控制下实现。
这完成了对Java虚拟机30,显示引擎31,重放控制引擎32,和模块管理器33的描述。由Java虚拟机30对重放控制引擎32的控制通过虚拟包被执行。为了通过虚拟包实现对重放控制引擎32的控制,重放装置包括网络管理模块37和虚拟文件系统单元38。接着描述这些元件。
网络管理模块37
网络管理模块37根据从应用程序的方法调用从电影作品的供应商所管理的网站下载产生虚拟包所需的数据。该数据包括替换或添加到合并管理信息文件,签名信息文件,和BD-ROM上的文件的文件(PL信息,剪辑信息,AVClip,Java档案文件,等等)。当工作存储器54中的应用程序提出下载请求时,网络管理模块37通过网络下载产生虚拟包所需的数据,并且将下载的数据写入本地存储器18。
虚拟文件系统单元38
虚拟文件系统单元38是属于图19中的第二层的元件,其根据从应用程序的方法调用产生虚拟包。虚拟包的产生包括管理构成虚拟包的AVClip的状态的处理和生成虚拟包信息的处理。
虚拟包信息
虚拟包信息扩展BD-ROM上的卷管理信息。这里涉及的卷管理信息定义存在于记录介质上的目录结构,并且由与目录有关的目录管理信息和与文件有关的文件管理信息组成。
虚拟包信息通过将新文件管理信息添加到显示目录结构的卷管理信息来扩展BD-ROM上的目录结构。添加到卷管理信息的文件管理信息涉及存在于本地存储器18中的PL信息,剪辑信息,AVClip和Java档案文件。产生该文件管理信息已被添加到其中的虚拟包信息和将该虚拟包信息提供给重放控制引擎32的过程允许重放控制引擎识别如存在于BD-ROM上的存储在本地存储器18中的PL信息,剪辑信息,AVClip和Java档案文件。图22显示了由虚拟文件系统单元38典型地产生虚拟包信息。在图22的左上方是BD-ROM上的目录结构,这与图2相同。在左下方是本地存储器18中的目录结构,这与图14相同。与本地存储器18中的PL信息,剪辑信息,AVClip和Java档案文件有关的文件管理信息被添加到BD-ROM上的卷管理信息。
具体而言:
i)与本地存储器18中的播放列表信息#2(00002.mpls)有关的文件管理信息被添加到PLAYLIST目录中的目录管理信息;
ii)与本地存储器18中的剪辑信息#2、#3和#4(00002.clip,00003.clip,00004.clip)有关的文件管理信息被添加到CLIPINF目录中的目录管理信息;
iii)与本地存储器18中的AVClip#2、#3和#4(00002.m2ts,00003.m2ts,00004.m2ts)有关的文件管理信息被添加到STREAM目录中的目录管理信息;
iv)与本地存储器18中的Java档案文件“00002.jar”有关的文件管理信息被添加到BDJA目录中的目录管理信息;
由此获得虚拟包信息。换句话说,虚拟包信息是以上面的方式已被添加的卷管理信息。
然后将该虚拟包信息提供给重放控制引擎32,重放控制引擎由此能够在与BD-ROM上的PL信息,剪辑信息,AVClip,和Java档案文件同等的基础上处理本地存储器18中的PL信息,剪辑信息,AVClip,和Java档案文件。虚拟包信息的生成如上所述。
下面描述虚拟包信息更新的定时。
假设当按照图21中的箭头jh1,jh2,jh3,jh4等所指示的参考标记的数值顺序执行转移之后BD-ROM被退出。这允许从BD-ROM的装载到退出的连续时间间隙被看作单一时间轴。该时间轴被作为整个光盘的时间轴。图23A显示了整个光盘的时间轴,而图23B显示了该时间轴的结构。如图23B中所示,整个光盘的时间轴由播放FirstPlayTitle的间隔,播放Top_menuTitle的间隔,和播放普通标题(标题#1等)的间隔组成。关于定义这些标题的重放间隔的方式,由于每个标题仅仅由一个BD-J对象构成,因此任何给定的BD-J对象有效的间隔可以被当作标题的重放间隔。这些重放间隔之间的空隙,或者从一个标题变化到另一标题的些微间隔(即“标题变化”)是虚拟包信息更新的时间。
接着使用图24描述由Java应用程序执行的下载新合并管理和签名信息文件以及内容文件的过程。
Java应用程序首先将当前合并管理信息文件发送到服务器(步骤S11),由此请求下载,并且判断是否已接收来自服务器的数据(步骤S12)。当数据被下载时,Java应用程序在相应光盘目录中创建新目录,并且将下载的合并管理信息文件和签名信息文件写入新目录(步骤S13)。需要注意的是如果下载的合并管理和签名信息文件的文件名不与光盘目录中的现有合并管理和签名信息文件一致,下载文件可以直接放置在现存目录(光盘#1文件)之下而不创建新目录。将下载的AVClip,剪辑信息,PL信息,和Java档案文件写入相应目录(步骤S14)。Java应用程序然后使用新合并管理和签名信息文件的文件路径作为自变量调用更新请求方法(步骤S15)。Java应用程序判断返回值是否为false(步骤S16),并且如果为false则终止处理。如果返回值是不是false,则Java应用程序使用更新的虚拟包信息执行处理(步骤S17)。
需要注意的是尽管根据当请求下载时Java应用程序将当前合并管理信息文件发送到服务器描述了以上处理,Java应用程序可以仅仅发送合并管理信息文件的ID。
接着使用图25描述一旦接收更新请求由虚拟文件系统单元38执行的更新“准备”过程。
虚拟文件系统单元38首先使用当调用方法时充当自变量的文件路径读取新合并管理和签名信息文件(步骤S21),并且验证签名以便检验新合并管理信息文件是否已被窜改(步骤S22)。如果签名不能被验证则执行异常终止。如果签名被验证,则虚拟文件系统单元38检验调用应用程序的权限(步骤S23)。如果调用应用程序未被授权则执行异常终止。如果调用应用程序被授权,则虚拟文件系统单元38判断新合并管理信息文件所指定的文件是否实际存在于本地存储器中(步骤S24)。如果这些文件并不存在则执行异常终止。如果这些文件存在,则虚拟文件系统单元38将新合并管理和签名信息文件以及从新合并信息文件引用的本地存储器中的所有文件变为只读(步骤S25)。
图26是由虚拟文件系统单元38执行的虚拟包“更新”处理的流程图。虚拟文件系统单元38首先标识对应于被装载的BD-ROM的光盘目录,并且用Java应用程序调用更新请求方法时、充当自变量的文件路径所指定的新合并管理和签名信息文件替换光盘目录中的合并管理和签名信息文件(步骤S31)。虚拟文件系统单元38然后将本地存储器18中的合并管理信息文件所指定的PL信息的文件管理信息添加到PLAYLIST目录中的目录管理信息中(步骤S32),并且执行步骤S33到S37的循环。该循环包括对于存在于本地存储器18中的每一条剪辑信息重复步骤S34到S36。在这里,用于循环处理的一条剪辑信息假定为剪辑信息x。虚拟文件系统单元38标识对应于剪辑信息x的AVClip(步骤S34),将本地存储器18中的合并管理信息文件所指定的剪辑信息x的文件管理信息添加到CLIPINF目录中的目录管理信息中(步骤S35),并且将本地存储器18中的合并管理信息文件所指定的AVClip x的文件管理信息添加到STREAM目录中的目录管理信息中(步骤S36)。通过对于本地存储器18中的所有剪辑信息和AVClip重复以上处理,与剪辑信息和AVClip有关的文件管理信息被添加到卷管理信息。由此获得的卷管理信息是虚拟包信息。虚拟文件系统单元38将该虚拟包信息提供给进行虚拟包调用的应用程序(步骤S38),并且结束处理。
图27是由模块管理器33执行的处理的流程图。
模块管理器33首先选择FirstPlayTitle作为当前标题(步骤S41),指定对应于当前标题的BD-J对象作为当前BD-J对象(步骤S42),并且使重放控制引擎32基于当前BD-J对象中所描述的PL信息执行PL重放(步骤S43)。模块管理器33然后使Java平台29b运行其生命周期是当前BD-J对象的应用程序管理表中的当前标题的Java应用程序(步骤S44),并且使Java平台29b终止其生命周期不是当前标题的Java应用程序(步骤S45)。模块管理器33然后判断基于当前PL信息的PL重放是否已经完成(步骤S46),并且如果完成,模块管理器33则标识下一个标题(步骤S47),并且选择该标题作为当前标题(步骤S48)。如果当前PL重放还未完成,则模块管理器33判断是否已发生标题调用(步骤S49),并且如果是这样的话则移动到步骤S47。如果未发生标题调用,则模块管理器33判断是否已发生标题跳转(步骤S50),并且如果是这样的话则移动到步骤S47。如果未发生标题跳转,则模块管理器33判断当前标题的主应用程序是否已结束(步骤S51)并且如果是这样的话则移动到步骤S47。如果主应用程序还未结束,则模块管理器33返回到步骤S46。
图28是由重放控制引擎32执行的重放处理的流程图。在将当前PL信息中的第一条播放项目信息设置为播放项目i之后重放控制引擎32执行步骤S62到S68的循环(步骤S61)。该循环中的控制变量是变量i。在执行步骤S62到S66之后在步骤S68重放控制引擎32使控制变量i增加“1”直到变量i超过播放项目的数量(步骤S67)。
接着描述步骤S62到S66。重放控制引擎32将播放项目i中的Clip_information_file_name中所描述的AVClip设置为AVClip j(步骤S62),并且指示驱动设备和解码器播放从PlayItem.In_time到PlayItem.Out_time的AVClip j(步骤S63)。重放控制引擎32判断在Sync_PlayItem_Id中是否存在指定播放项目i的子播放项目k(步骤S64),并且如果该子播放项目并不存在则直接移动到步骤S67。如果子播放项目k存在,则重放控制引擎32将子播放项目k的Clip_information_file_name所描述的AVClip设置为AVClip h(步骤S65),指示驱动设备和解码器重放从Sync_Start_PTS_of_Playltem到的Out_time的AVClip h(步骤S66),并且移动到步骤S67。
由于对于构成PL信息的所有播放项目信息重复该处理,PL信息所定义的数据流序列被播放。
图29显示了在标题变化期间怎样更新虚拟包信息。
图29中的第一层级显示时间轴上的标题重放间隔,第二层级显示其生命周期是标题#1的Java应用程序,第三层级显示数字流,第四层级显示虚拟文件系统单元38的状态。
一旦接受来自Java应用程序的更新请求,虚拟文件系统单元38被放置在“准备”状态,并且执行图25中所示的处理。
在执行该处理之后,虚拟文件系统单元38在“准备好”状态等待标题变化。当发生标题变化时,虚拟文件系统单元38被放置在“更新”状态,并且在回复到“稳定”状态之前执行图26中所示的处理以更新虚拟包。如果在虚拟文件系统单元38回复到“稳定”状态之后,再次从Top_menuTitle选择标题#1,则使用更新的虚拟包播放标题#1。
在这里,当模块管理器33例如由于数据流序列的重放结束或由用户调用菜单而选择不同标题作为当前标题时,发生标题变化。
使用图30到33示意性地描述以上处理。
图30显示了将当前合并管理信息文件发送到服务器的Java应用程序。ROOT下所示的文件位于本地存储器中,而BDMV下的文件位于虚拟包中。
图31显示了下载内容文件、新合并管理信息文件和新签名信息文件的Java应用程序。“00012.clpi”和“00012.m2ts”是下载的内容文件,而存储在newMF目录中的合并管理和签名信息文件已最新被下载。
图32显示了请求虚拟文件系统单元38将现有合并管理和签名信息文件更新为最新下载的文件的Java应用程序。通过使用文件路径来指定新合并管理和签名信息文件提出该更新请求。
图33显示了合并管理和签名信息文件的替换以及内容文件的映射。在图33的左侧显示了更新期间旧合并管理和签名信息文件的替换。在图33的右侧显示了标题变化后内容文件的映射。
需要注意的是从旧合并管理信息而不是从新合并管理信息引用的文件的只读属性被移除,从而使这些文件可由Java应用程序写入。
合并管理信息文件包括指示添加到本地存储器的内容的位置的信息。指示附加内容位置的信息包括内容ID,内容存储于其中的目录的目录路径,或单个内容文件的文件路径。当将这些文件映射到虚拟包时可以在合并管理信息文件中描述文件名映射信息,从而允许在虚拟包中的不同文件名下访问这些文件。在这里,文件名映射信息用本地存储器中的文件名(包括文件路径)映射虚拟包中的文件名(包括文件路径)。
在该情况下,作为虚拟包介质由虚拟文件系统单元38产生虚拟包,所述虚拟包介质由这样的文件构成,文件名映射信息中所描述的虚拟包中的所述文件的文件名已被添加到BD-ROM上的文件结构中。由Java应用程序访问的虚拟包中的文件被指定为虚拟包中的文件而不是BD-ROM上或本地存储器中的文件。当Java应用程序请求访问虚拟包中的文件时,虚拟文件系统单元38基于文件名映射信息将访问目的地切换到本地存储器或BD-ROM。如果在文件名映射信息中描述了所期望的文件,访问目的地变为本地存储器中的相应文件。如果未在文件名映射信息中描述所期望的文件,访问目的地变为BD-ROM上的相应文件。
换句话说,Java应用程序的创作者不需要知道单个文件存储于其上的介质(BD-ROM或本地存储器),因为虚拟文件系统单元38将虚拟包中由Java应用程序指定的文件的访间目的地切换到实际存储所述文件的介质,由此减轻了程序创作的负担。
根据本实施例,虚拟包在标题变化期间被更新,这意味着重放对象的替换将不会导致重放装置的异常操作。
实施例2
本实施例涉及当执行标题调用时的改进。标题调用导致在首先暂停当前标题之后播放被调用标题,然后在被调用标题的重放结束之后继续原始标题。由于标题调用以继续重放为前提,因此当调用标题时重放控制引擎32将存储在PSR中的用于重放控制的系统参数保存到备份PSR中,并且在被调用标题的重放结束之后将被保存参数恢复到PSR中。
下面是存储在PSR中的系统参数的列表。PSR 0到PSR 12存储显示重放状态的系统参数,PSR 13到PSR 19存储由播放器设置为优选的系统参数,PSR 20到PSR 32是备份PSR。
PSR0: I图形流编号
PSR1: 音频流编号
PSR2: P图形流/TextST流编号
PSR3: 角度编号
PSR4: 当前标题编号
PSR5: 当前章节编号
PSR6: 当前播放列表ID
PSR7: 当前播放项目ID
PSR8: 重放时间信息
PSR9: 导航定时器
PSR10:选择键信息
PSR11:I图形流中的当前页ID
PSR12:P图形流和TextST流中的用户样式ID
PSR13:视听年龄等级(parental level)
PSR14:字幕支持信息
PSR15:播放器设定值(音频)
PSR16:音频流的语言代码
PSR17:P图形流和TextST流的语言代码
PSR18:菜单的语言代码
PSR19:播放器的版本信息
PSR20:PSR 0的备份
PSR21:PSR 1的备份
PSR22:PSR 2的备份
PSR23:PSR 3的备份
PSR24:PSR 4的备份
PSR25:PSR 5的备份
PSR26:PSR 6的备份
PSR27:PSR 7的备份
PSR28:PSR 8的备份
PSR29:PSR 9的备份
PSR30:PSR 10的备份
PSR31:PSR 11的备份
PSR32:PSR 12的备份
在标题调用期间更新虚拟包信息导致调用前后虚拟包信息的差异。
由于当恢复原始标题时虚拟包信息将变化,因此如果重放控制引擎32试图使用备份值播放原始标题则会出现错误。该问题通过当Java应用程序请求更新时清除备份PSR得以避免。然而,假定变化没有影响取决于合并管理信息文件的内容,关于是否清除系统参数值的决定可以留待Java应用程序处理。
图34A是当标题调用之后暂停当前标题的重放时由重放控制引擎32执行的处理的流程图。图34B是当被调用标题的重放结束之后继续重放原始标题时由重放控制引擎32执行的处理的流程图。
当暂停当前标题重放时,重放控制引擎32将PSR 0-12保存到PSR 20-32(步骤S71)。
当被调用标题的重放结束之后继续原始标题重放时,重放控制引擎32首先判断虚拟包是否已被更新(步骤S81)。如果未更新则将PSR 20-32恢复到PSR 0-12(步骤S83),如果虚拟包信息已被更新则在执行步骤S83之前初始化PSR 20-32(步骤S82)。
根据本实施例,在标题调用期间当虚拟包信息已被更新时初始化备份PSR,由此消除当继续原始标题重放时发生重放错误的危险。因而使重放控制引擎32稳定工作。
需要注意的是当虚拟包信息被更新时,PSR中的系统参数值可以被强制清除,而不是将该决定留待Java应用程序处理。
实施例3
本实施例涉及一种方法,该方法用于管理合并管理信息的版本和从重放装置中的常驻应用程序指定用于合并的附加内容。图35显示了关于本实施例的合并管理信息文件的典型内容。在实施例1中,通过改写旧合并管理信息更新合并管理信息文件(或更确切地说存储在其中的合并管理信息),从而导致旧信息被擦除。在本实施例中,新合并管理信息不断地被添加到文件中,而且即使对于相同的光盘ID也不改写旧信息。因而,如果虚拟文件系统单元38取消产生虚拟包并且回复到原始BD-ROM,则反映该状态的信息被保留在合并管理信息文件中。在该情况下,合并管理信息文件的合并目标目录中的相应单元被留下空白或者记下指示原始BD-ROM的字符串。
通过执行更新时不改写旧合并管理信息使将先前的合并管理信息(的历史)保留在合并管理信息文件中,然后如果用户想要虚拟包的旧版本,可以参考先前的合并管理信息产生旧版本。而且,先前由用户产生的虚拟包可以参考合并管理信息文件(或者更确切地说存储在其中的旧合并管理信息)不仅从Java应用程序而且从重放装置中的常驻应用程序产生。
由常驻应用程序使用先前的合并管理信息的另一例子包括显示附加内容列表,从而用户可以从常驻应用程序删除不想要的附加内容。由于合并管理信息文件可以用于区分存储附加内容的目录,因此也可以从除了存储附加内容的Java应用程序之外的应用程序(即常驻应用程序)检索和删除附加内容。
图36显示了关于本实施例的请求虚拟包更新的Java应用程序。与实施例1的差异在于这样的事实,即在不改写旧信息的情况下不断地添加合并管理信息,即使用于目标光盘ID的合并管理信息已经存在。当请求虚拟包更新时Java应用程序允许通过追加日期信息标识合并管理信息文件中最新的一条合并管理信息。日期信息不限于日期,也可以简单地为连续编号。
图37显示了由使用合并管理信息文件的常驻应用程序向用户显示的典型附加内容列表。在这里,被显示的附加内容列表基于图35中所示的合并管理信息文件。理想的是显示使用户掌握附加内容涉及的信息。图37中的附加内容被显示为内容名。尽管仅仅日期信息被添加到图36中的合并管理信息,但是也可以添加附加内容的提要,因为常驻应用程序能够执行这样的显示。在该情况下,提供附加内容的提要用于当Java应用程序请求虚拟包更新时与内容ID一起输入。这些提要可以为包含各自提要的文件指定文件路径,而不是简单地包括字符串的直接输入。因而除了更新日期之外合并管理信息存储内容提要,并且常驻应用程序能够连同日期信息一起在附加内容列表中显示这些提要。
胜于使Java应用程序指定内容提要,显示特定内容关于什么的元信息可以被追加到内容本身,常驻应用程序可以读取该信息并且基于读取的信息显示提要。
图37中的“添加”栏显示各个附加内容首次与BD-ROM合并的日期。该信息也可以从合并管理信息读取。
需要注意的是首次合并附加内容的日期可以与合并管理信息分开保存。这些日期也可以从存储附加内容的目录被创建的日期确定。当显示在附加内容列表中的选择按钮之一被按压时,常驻应用程序将所选内容的目录路径/光盘ID和选择日期作为相应合并管理信息写入到合并管理信息文件中。换句话说,最近选择的附加内容变为最新合并管理信息。如果选择原始BD-ROM,指示原始BD-ROM的值或空白单元被插入到合并管理信息文件的合并目标目录中。当显示在附加内容列表中的删除按钮之一被按压时,常驻应用程序参考合并管理信息文件读取用于删除的附加内容的目录,并且删除该目录。对应于该内容的内容ID的合并管理信息也从合并管理信息文件被删除。
图38是关于本实施例的从BD-ROM的装载直到重放的处理流程的流程图。虚拟文件系统单元38首先检验被装载的BD-ROM的光盘ID(步骤S91),读取合并管理信息文件(步骤S92),并且判断是否存在对应于被装载的BD-ROM的光盘ID的合并管理信息(步骤S93)。如果判断是否定的(步骤S93=否),则仅仅使用原始BD-ROM执行重放(步骤S94)。如果判断是肯定的(步骤S93=是),则使用最新合并管理信息产生虚拟包(步骤S95)。在产生虚拟包期间,虚拟文件系统单元38判断是否已检测到错误(步骤S96)。如果判断是肯定的(步骤S96=是),则虚拟文件系统单元38判断是否存在对应于BD-ROM的光盘ID的在先的合并管理信息(步骤S97)。如果判断是肯定的(步骤S97=是),则使用在最新合并管理信息之前的合并管理信息的版本产生虚拟包(步骤S98)。如果判断是否定的(步骤S97=否),则仅仅使用原始BD-ROM执行重放(步骤S94)。如果在步骤S96未检测到错误,使用产生的虚拟包执行重放(步骤S99)。典型错误包括最新合并管理信息中的错误和不存在从播放列表引用的数据流等。
根据本实施例,通过将先前的合并管理信息保存在合并管理信息文件中,可以参考合并管理信息文件的内容历史使用合并管理信息的旧版本从重放装置中的常驻应用程序产生虚拟包。如果在产生虚拟包期间出现错误,可以通过产生虚拟包的旧版本作为备选的动作过程避免所述问题。
实施例4
本实施例涉及一种方法,该方法用于当Java应用程序请求虚拟包更新时指定虚拟包的有效期限,和仅仅在有效期限内使用虚拟包执行重放。
图39显示了当请求虚拟包更新时被指定的有效期限。Java应用程序指定用于合并的附加内容的内容ID和用于虚拟包的使用的有效期限。例如,如果用户想要作为虚拟包播放内容直到光盘被退出并且然后在重装载光盘之后仅仅使用原始BD-ROM播放内容,则到光盘被退出为止指示虚拟包是有效的值在从Java应用程序请求虚拟包更新时的自变量中被指定。
图40是关于本实施例的从BD-ROM的装载(或重放装置的重启)直到重放的处理流程的流程图。虚拟文件系统单元38首先检验被装载的BD-ROM的光盘ID(步骤S101),读取合并管理信息文件(步骤S102),并且判断是否存在对应于被装载的BD-ROM的光盘ID的合并管理信息(步骤S103)。如果判断是否定的(步骤S103=否),则仅仅使用原始BD-ROM执行重放(步骤S104)。如果判断是肯定的(步骤S103=是),则虚拟文件系统单元38判断相应的合并管理信息是否在有效期限内(步骤S105)。如果不再有效,则删除相应的合并管理信息(步骤S106),并且仅仅使用原始BD-ROM执行重放(步骤S104)。如果仍然有效,则相应的合并管理信息用于产生虚拟包(步骤S107),并且使用虚拟包执行重放(步骤S108)。
需要注意的是作为本实施例的应用也可以想到其中仅Java模式虚拟包被产生的方式。如果当从Java应用程序请求产生虚拟包时仅指定Java模式,当存在从DVD-like模式到Java模式的过渡时,虚拟文件系统单元38产生虚拟包并且然后变换到Java模式。相反地,当存在从Java模式到DVD-like模式的过渡时,在取消虚拟包并回复到原始BD-ROM之后虚拟文件系统单元38变换到DVD-like模式。
根据本实施例,有可能使用虚拟包指定重放的有效期限,由此允许使用仅一次虚拟包(即一旦BD-ROM被退出就被禁止的虚拟包)进行重放,和产生带有使用期限限制的虚拟包。
需要注意的是在本实施例中有效期限在请求虚拟包更新时被指定,有效期限也可以在装载BD-ROM之后请求产生虚拟包时被指定。
实施例5
下面是关于在实施例1的图25中的步骤S23的调用应用程序的权限的具体描述。具体而言,本实施例涉及拒绝来自未授权Java应用程序的虚拟包更新请求的方法。
图41显示了用于筛选虚拟包更新请求的许可请求文件。如上所述,在来自Java应用程序的更新请求的基础上执行虚拟包更新。然而,当在来自未授权Java应用程序的请求的基础上执行更新时,由于查看限制被改变或者仅仅可以在某些条件下查看的视频剪辑的重放被允许,存在光盘内容被非法更新的危险。鉴于此,根据本实施例的虚拟包更新仅仅可以由具有更新许可的Java应用程序请求,所述更新许可是显示请求更新的许可已被准许的信息。通过检验与发布请求的Java应用程序对应的许可请求文件的内容判断是否具有更新许可。具体而言,类装载器根据各个许可请求文件的内容限制Java应用程序的功能。例如,如果许可请求文件中的更新属性值为“真”则处理更新请求,如果为“假”则拒绝。
图42显示了强加在用于合并的本地存储器中的目录上的访问限制。如果用于合并的目录的内容由未授权Java应用程序更改,即使更新请求被筛选也存在虚拟包的内容被非法改变的危险。鉴于此,也在各个许可请求文件的内容的基础上限制对本地存储器访问的许可。例如,如果许可请求文件中的读和写属性值都为“真”,下载的内容可以被写入并且存储的文件可以被读取和编辑。然而,将在带有读和写属性之一或两者为“假”的许可请求文件的Java应用程序,或不带有许可请求文件的Java应用程序上强加文件访问限制。
根据本实施例,可以防止未授权Java应用程序更新虚拟包和改变本地存储器中的目录的内容。
下面是使用许可请求文件来限制虚拟包更新的具体例子。考虑一个例子,其中本地存储器中的目录被分配给电影作品的特定供应商。具体而言,假设由A工作室、B工作室和C公司提供的内容同时存储在本地存储器中和BD-ROM上。在这里,C公司是数字杂志的供应商。当合并本地存储器和BD-ROM中的内容时,例如如果B工作室所提供的内容与A工作室所提供的内容合并将出现问题。鉴于此,仅仅准许C公司的更新许可(即许可请求文件中的更新属性值设置为“真”),由此允许使各种服务可用。A工作室和B工作室仅仅能够合并它们自己的内容。
实施例6
本实施例涉及一种方法,该方法用于在Java应用程序在多个标题上操作的情况下在标题变化期间更新虚拟包。
图43显示了其生命周期被限制到单一标题的Java应用程序和其生命周期持续多个标题的Java应用程序。Java应用程序的生命周期在应用程序管理信息中被显示,并且模块管理器33根据该应用程序管理信息管理Java应用程序的开始和结束。Java应用程序包括仅仅在它们开始的标题内存在的那些应用程序(在下文被称为“标题绑定应用程序”)和可以在多个标题上存在的那些应用程序(在下文被称为“标题未绑定应用程序”)。应用程序管理信息包含标题数目,应用程序ID和显示特定Java应用程序是否被绑定的信息。
在图43所示的应用程序管理信息中,例如,在标题#1中Java应用程序#1被绑定而Java应用程序#2未绑定。模块管理器33连同标题#1的结束一起终止绑定Java应用程序#1。在另一方面,在标题#1结束之后允许未绑定的Java应用程序#2存活,并且根据下一个标题的应用程序管理信息作出是否终止该应用程序的决定。由于图43中的应用程序管理信息的例子表明Java应用程序#2可以同时在标题#1和标题#2中存在,因此允许该应用程序在从标题#1到标题#2的过渡期间存活。然而,由于Java应用程序#2在标题#2中是标题绑定的,因此模块管理器33连同该标题的结束一起终止应用程序。
图44显示了在标题变化期间当更新虚拟包时在未绑定标题的应用程序上执行的处理。如图43中所示,可以在标题变化之前的标题和之后的标题中同时存在的标题未绑定应用程序在标题变化期间继续工作。然而,如果请求虚拟包更新,包括标题未绑定应用程序的所有应用程序在标题变化期间被终止。在更新虚拟包之后,标题未绑定应用程序然后与属于下一个标题的标题绑定应用程序一起被重新启动。
图45是考虑未绑定标题应用程序的标题变化处理的流程图。当标题重放开始时(步骤S111),虚拟文件系统单元38首先判断在当前标题重放期间是否已从Java应用程序请求虚拟包更新(步骤S112)。如果判断是肯定的(步骤S112=是),则虚拟文件系统单元38执行更新准备(步骤S113)。当标题变化发生时(步骤S114),虚拟文件系统单元38判断更新请求是否已被处理(步骤S115)。如果判断是肯定的(步骤S115=是),终止包括标题未绑定应用程序的所有应用程序(步骤S116),并且更新虚拟包(步骤S117)。然后在标题变化之后播放下一个标题(步骤S118)。如果在步骤S112虚拟包更新还未被请求或者如果在S115更新请求还未被处理,则当标题变化发生时模块管理器33仅仅终止标题绑定应用程序(步骤S119)。
由于本实施例保证所有应用程序在虚拟包的更新期间被终止,因此根据对旧的更新前文件的参考仍然保留在高速缓存中或者新文件与旧文件一起存在于高速缓存中,有可能在完成虚拟包更新之后防止任何连贯性损失。
需要注意的是如果能够在多个光盘上存在的Java应用程序(“光盘未绑定应用程序”)在请求虚拟包更新之后发生标题变化时正在工作,通过以与光盘变化操作相同的方式对待虚拟包更新,光盘未绑定应用程序可以继续工作而不会被强制终止。
还需要注意的是在发生标题变化之后模块管理器33可以根据完成虚拟包更新之后更新的应用程序管理信息,管理标题未绑定应用程序的开始和结束,而不会在更新期间终止标题未绑定应用程序。在该情况下,在更新完成之前,使标题未绑定应用程序参考更新前的虚拟包。
实施例7
本实施例涉及在INDEX.BDMV文件变化之后的虚拟包更新。一旦接收来自Java应用程序的虚拟包更新请求,虚拟文件系统单元38确认INDEX.BDMV文件存在于用于合并的目录中。如果INDEX.BDMV文件存在,虚拟文件系统单元38为准备更新读取INDEX.BDMV文件。然后现有的INDEX.BDMV文件被无效而新的INDEX.BDMV文件生效。如果例如BD播放器的常驻应用程序执行标题搜索或Java应用程序采集标题信息,在标题变化之前使用该新INDEX.BDMV文件。换句话说,在更新标题结构之后事先通知Java应用程序和用户使得有可能防止标题变化为将在更新之后停止存在的标题或标题变化到未预期的标题。
图46是在INDEX.BDMV文件变化之后的虚拟包更新的流程图。首先,当在Java模式中播放标题时(步骤S121),虚拟文件系统单元38判断Java应用程序是否已请求虚拟包更新(步骤S122),并且如果已请求,则虚拟文件系统单元38接收请求并且执行更新准备(步骤S123)。在检验文件和目录结构是否正确的同时,虚拟文件系统单元38判断INDEX.BDMV文件是否存在(步骤S124)。如果INDEX.BDMV文件存在,则在判断是否已发生标题调用之前(步骤S126),虚拟文件系统单元38使现有的INDEX.BDMV文件无效并且使新的INDEX.BDMV文件生效(步骤S 125)。参考在步骤S125中生效的INDEX.BDMV文件从BD播放器中的常驻应用程序或从Java应用程序执行标题变化。当标题变化发生时虚拟文件系统单元38执行更新(步骤S127)。
因而,尽管在更新请求后发生标题变化之前不执行虚拟包更新,在标题变化之前可以使新INDEX.BDMV文件可用。这意味着在更新请求之后,在标题搜索期间显示的标题列表将在标题变化发生之前已变化。
由于用户然后基于改变的标题列表选择标题,因此可以防止由选择将在更新之后停止存在的标题引起的错误。因而可以在标题变化期间更新虚拟包而不会出现问题,即使由于更新而改变了标题结构。
需要注意的是可以在重启BD播放器之后执行在INDEX.BDMV文件变化之后的虚拟包更新。
变型
以上基于优选实施例描述了关于本发明的重放装置,尽管本发明当然不限于这些实施例。
关于其仅有的功能是播放记录介质的重放装置描述了以上实施例,尽管本发明并不限于此。例如,本发明可以是具有记录和重放功能的记录/重放装置。
文件可以放置在使用任何类型结构的本地存储器中,只要与用于合并的BD-ROM上的文件的对应关系被清楚地显示。
在以上实施例中,Java(注册商标)用作虚拟机的编程语言,尽管也可以使用除了Java之外的编程语言,这样的例子包括Perl Script,ECMA Script和B-Shell等,其与UNIX(注册商标)操作系统一起使用。
关于播放BD-ROM的重放装置描述了以上实施例,尽管当然可以在如以上实施例中描述的BD-ROM上的必要数据被记录在可写光记录介质上的情况下实现与以上相同的效果。
而且,当然可以在如以上实施例中描述的BD-ROM上的必要数据被记录在除了光记录介质之外的便携式记录介质(例如SD卡,小型闪存等)上的情况下实现与以上相同的效果。