再现装置、再现方法、再现程序、及其记录介质和数据结构的制作方法

文档序号:6773844阅读:254来源:国知局
专利名称:再现装置、再现方法、再现程序、及其记录介质和数据结构的制作方法
技术领域
本发明涉及一种再现装置,其使得对记录在大容量记录介质上的程序进行的再现控制更加易于执行,以及涉及其再现方法、其再现程序、其记录介质以及其数据结构。
背景技术
到目前为止,对于销售包已经实现了一种交互功能,该交互功能为输入用户数据而显示用于各种设置的菜单屏和子菜单屏以及菜单屏上的按钮(按钮图像),并且用于执行所选定的功能,所述销售包是记录在如DVD的记录介质上的如电影、戏剧、音乐会等的视频数据和音频数据的包。
现在,将描述数字音频致密盘(CD-DA),它是这种销售包的一个典型的例子。一张CD-DA通常含有多个音乐数据轨道。每个轨道被指定一个编号。当执行标准再现时,音乐数据以轨道号向上的次序被连续地再现。当具有最大轨道号的音乐数据再现完之后,停止再现。
除了以轨道号次序再现音乐数据的标准再现操作之外,许多CD播放器模型还具有其它的不是以轨道号顺序再现音乐数据的再现功能,如随机再现、混洗再现和盘片重复再现。随机再现是从那些记录在盘上的轨道中随机地挑选出一条音乐数据轨道,并在音乐数据的特定轨道再现完成之后再现所挑选的音乐数据轨道的功能。混洗再现是与轨道号次序无关地再现记录在盘上的音乐数据,并在记录在盘上的所有音乐数据轨道再现完成之后停止再现的功能。在标准再现中,盘重复再现功能在最后一条音乐数据轨道再现完成这后,从音乐数据的起始轨道开始重复标准再现。在混洗再现中,盘重复再现功能改变了轨道号的再现次序,并以改变后的次序再现音乐数据。
在CD-DA中,音乐数据的排列仅由轨道号来指定。因而,很清楚,内容的开头就是具有轨道号#1的音乐数据的开头,内容的末尾就是具有最大轨道号的音乐数据的末尾。
另一方面,还有一条系统可以根据记录在记录介质上的指令或程序,对记录在该记录介质上的视频数据和音频数据内容执行再现控制。举例来说,如电影的主体部、预告片、电影制作场景、菜单等的多个内容被记录在DVD视频盘上。当从盘上再现内容时,根据指令和程序来控制对这些内容的再现。专利文件1公开了根据这样的指令和程序执行内容再现控制的技术。
专利文件1日本专利申请特开No.2004-304767发明内容然而,在这样一个根据指令和程序执行再现控制的系统中,播放器难以检测内容的末尾。
当再现一部电影的结尾序幕部分时,可以预计该内容已到达末尾。然而,实际上,结尾字幕部分的末尾并非总是内容的末尾。举例来说,如果在结尾字幕部分结束时执行的程序导致菜单屏的出现,那么可以想到,一个菜单屏和电影的主体部对是内容。因而,不能确定电影主体部的末尾是内容的末尾。另外,再现控制程序可被看作该内容的一部分。
因此,如果内容包括再现控制程序,则很难确定该内容的末尾。换句话说,“内容的末尾”取决于该内容创建者怎样识别该内容。因此,只有该内容创建者知道该内容的末尾。
DVD视频标准没有定义一种允许内容方将内容的一个特定部分是“内容的末尾”通知给播放器方的方式。因此,对DVD播放器来说,难以从DVD视频盘来再现数据以实现该播放器的独特功能。
例如,该播放器可能不具有重复地再现一段内容的重复功能。相反,该播放器可以仅重复再现单个标题(一段连续的程序链)来直接地和连续不断地从开头到末尾再现一段内容。因此,难以实现播放器的独特功能。
考虑到前述内容,期望提供一种再现装置,其允许当根据再现控制程序执行对内容的再现控制时易于实现播放器的独特功能,以及提供其再现方法、其再现程序、其记录介质和其数据结构。
根据本发明的一个实施例,提供了一种再现记录在记录介质上的内容数据的再现装置。该再现装置具有播放器部、内容再现部、接口部。播放器部具有用于从记录介质上读取数据的读取部,在该记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及控制再现该内容数据的再现控制程序,用于接收用户输入的输入部,和用于输出所再现的内容数据的输出部。内容再现部根据再现控制程序再现内容数据。接口部用于在内容再现部、再现控制程序和播放器部之间进行连接通信(interface)。当代表所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给接口部,并且接口部执行相应于该指令的处理。
根据本发明的一个实施例,提供了一种再现记录介质上的内容数据的再现方法。根据从记录介质读取的再现控制程序再现记录介质上的内容数据,在该记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及控制再现该内容数据的再现控制程序。内容再现步骤、再现控制程序以及播放器部相互连接通信,该播放器部具有从记录介质读取数据的读取部,接收用户输入的输入部,以及输出所再现的内容数据的输出部。当代表所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给该连接通信步骤,并且该连接通信步骤执行相应于该指令的处理。
根据本发明的一个实施例,提供了一种再现程序,其使计算机装置执行再现记录介质上的内容数据的再现方法。根据从记录介质读取的再现控制程序从记录介质上再现内容数据,在该记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及控制再现该内容数据的再现控制程序。内容再现步骤、再现控制程序以及播放器部相互连接通信,该播放器具有从记录介质读取数据的读取部,接收用户输入的输入部,以及输出所再现的内容数据的输出部。当代表所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给该连接通信步骤,并且该连接通信步骤执行相应于该指令的处理。
根据本发明的一个实施例,提供了一种记录介质,其中的数据是计算机装置可读取的并且在其上记录有再现程序,该再现程序使计算机装置执行再现记录介质上的内容数据的再现方法。根据从记录介质读取的再现控制程序从记录介质上再现内容数据,在该记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及控制再现该内容数据的再现控制程序。内容再现步骤、再现控制程序以及播放器部相互连接通信,该播放器部具有从记录介质读取数据的读取部,接收用户输入的输入部,以及输出所再现的内容数据的输出部。当代表所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给该连接通信步骤,并且该连接通信步骤执行相应于该指令的处理。
根据本发明的一个实施例,提供了一种记录介质,其中的数据是计算机装置可读取的,并且在其上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及控制再现该内容数据的再现控制程序。再现控制程序及根据该再现控制程序的内容数据被再现。播放器部被连接通信,其具有从记录介质读取数据的读取部,接收用户输入的输入部,以及输出所再现的内容数据的输出部。向该连接通信步骤描述代表所再现的内容数据的末尾的指令。
根据本发明的一个实施例,提供了一种信号,该信号具有一种数据结构,其中,包含视频流和音频流中的至少一种的内容数据以及控制该内容数据再现的再现控制程序被多路复用,该信号可通过通信线路被传送和接收,而且该信号可由计算机装置处理。该内容数据根据再现控制程序而再现。将内容数据的末尾通知给计算机装置的指令在内容数据中被描述,当计算机装置正在再现内容数据时,该指令由计算机装置读取。
根据本发明的一个实施例,该再现装置具有播放器部、内容再现部、接口部。播放器部具有配置成用于从记录介质中读取数据的读取部,在该记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及控制再现该内容数据的再现控制程序,配置成用于接收用户输入的输入部,和配置成用于输出所再现的内容数据的输出部。内容再现部根据再现控制程序再现该内容数据。接口部用于在内容再现部、再现控制程序和播放器部之间进行连接通信。当代表所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给接口部,并且该接口部执行相应于该指令的处理。因此,虽然根据再现控制程序再现该内容数据,但是当把内容的末尾通知给播放器部时,播放器部能执行独特的再现操作。
根据本发明的一个实施例,根据从记录介质读取的再现控制程序从记录介质上再现内容数据,在该记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及控制再现该内容数据的再现控制程序。内容再现步骤、再现控制程序以及播放器部相互连接通信,该播放部具有配置成用于从记录介质读取数据的读取部,配置成用于接收用户输入的输入部,以及配置成用于输出所再现的内容数据的输出部。当代表所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给该连接通信步骤,并且该连接通信步骤执行相应于该指令的处理。因此,虽然根据再现控制程序再现该内容数据,但是当把内容的末尾通知给播放器部时,播放器部能执行独特的再现操作。
根据本发明的一个实施例,从记录介质再现再现控制程序和根据该再现控制程序的内容数据,该记录介质上的数据可以被计算机装置读取,并且在记录介质上记录有包含视频流和音频流中的至少一种的内容数据以及控制再现该内容数据的再现控制程序。播放器部被连接通信,该播放器部具有配置成用于从记录介质读取数据的读取部,配置成用于接收用户输入的输入部,以及配置成输出所再现的内容数据的输出部。向该连接通信步骤描述代表所再现的内容数据的末尾的指令。因此,虽然根据再现控制程序再现该内容数据,但是当把内容的末尾通知给播放器部时,在从记录介质再现数据的计算机装置中,播放器部能执行独特的再现操作。
根据本发明的一个实施例,在一个数据结构中,包含视频流和音频流中的至少一种的内容数据以及控制内容数据再现的再现控制程序被多路复用。该数据结构通过通信线路被传送和接收。该数据结构可由计算机装置处理。该内容数据根据再现控制程序而再现。将内容数据的末尾通知给计算机装置的指令在内容数据中被描述,当计算机装置正在再现内容数据时,该指令被计算机装置读取。因此,虽然根据再现控制程序再现该内容数据,但是当把内容的末尾通知给播放器部时,在处理具有该数据结构的数据的计算机装置中,播放器部能执行独特的再现操作。
如上面所描述的,根据本发明的一个实施例,对内容执行再现控制的脚本程序明确地把内容的末尾通知给播放器。由于播放器接收表示内容末尾的信息,该播放器能够容易地完成在内容的末尾之后执行的独特的再现控制功能。
根据例如盘重复功能是否被设置的播放器设定和菜单屏是否被提供的内容状态,可以指定在内容的末尾将要执行的播放器操作。因此,可以防止发生由于缺乏对用户考虑而造成的例如黑屏的出现等不适当情形。另外,可以提供用户友好型界面。
当内容创建者仅在他或她想要将其指定为内容的末尾的一个部分处描述方法end时,播放器无需提供复杂的程序而自动执行适当的处理。因而,能够节省创建内容所需的大量时间和工作。
通过下文对最佳模式的实施方式的详细描述,如在附图中所示出的那样,本发明的这些以及其它目标、特征和优点将变得更加明显。


结合附图,通过下文的详细描述,本发明将能得到更充分的理解,其中相似的参考数字表示相似元件,其中图1是表示根据UMD视频标准的层结构的示意图;图2是表示根据本发明一个实施例的播放器模型的例子的示意图;图3是表示一个电影播放器的内部结构的例子的示意图;图4是表示电影播放器的播放状态和停止状态的示意图;图5是表示根据本发明一个实施例的电影播放器的事件模型的示意图;图6表示在再现播放列表期间所发生的事件的例子的示意图;图7A和图7B是电影播放器对象所具有的属性的例子的列表;图8是电影播放器对象所具有的方法的例子的列表;图9是用户键输入的例子的列表;图10是用户键输入的例子的列表;图11A、11B、11C是根据键输入的控制指令的例子的列表;图12是根据键输入的事件的例子的列表;图13是事件处理程序的例子的列表;图14是事件处理程序的例子的列表;图15是表示当用户输入事件发生时,所提供的程序执行的处理的例子;图16是描述一个脚本程序的例子的示意图;图17是表示一个脚本程序的例子的示意图;图18是表示根据UMD视频标准的文件管理结构的例子的示意图;
图19是表示文件“PLAYLIST.DAT”总体结构的语法的例子;图20是块PlayItem()的内部结构的例子;图21是块PlayListMark()的内部结构的例子;图22是描述块Mark()的字段mark_type的表;图23是描述剪辑(clip)AV流文件中指定标志时间的示意图;图24是表示剪辑AV流文件“XXXXX.CLP”总体结构的语法的例子的表;图25是描述块StreamInfo()的基本流的对应关系的表;图26是表示块StaticInfo()的内部结构的例子的表;图27是表示块DynamicInfo()的内部结构的例子的表;图28是表示块Ep_map()的内部结构的例子的表;图29是表示根据本发明的一个实施例的盘再现装置的结构的例子的方框图;图30A、30B是详细描述盘再现装置的操作的功能框图;图31是表示根据本发明的实施例的电影播放器状态的定义的示意图;图32是现有状态和由电影播放器的四个状态中的每个状态的方法改变后的状态的组合的表;图33A到图33E是描述在执行方法play()时的电影播放器的状态改变的例子的示意图;图34是描述播放项的再现方法的示意图;图35是当电影播放器再现的播放列表到达开头或者末尾时,电影播放器的操作的例子的表;图36是描述播放列表之间的再现的示意图;图37是表示在播放列表的末尾处脚本层中的处理和电影播放器的操作的例子的流程图;图38是描述UMD视频播放器所具有的三种类型存储区的示意图;图39是描述播放器状态的备份的示意图;图40是播放器状态的备份的列表;图41是描述对恢复信息进行恢复和丢弃的示意图;图42是描述对恢复信息进行恢复和丢弃的表;图43是描述对恢复信息进行恢复和丢弃的表;
图44是描述对恢复信息进行恢复和丢弃的表;图45是表示在方法stop()使用变元resumeInfoClearFlag的UMD视频播放器的操作的例子的流程图;图46是播放器状态的生存周期的例子的表;图47A、47B是恢复信息的生存周期的例子的表;图48是用户数据的生存周期的例子的表;图49是描述内容可以包含多个末尾的示意图;图50是表示执行如图2所示的播放器模型的方法end()的多个部件的示意图;图51是表示方法end()的描述的例子的示意图;图52是表示利用方法end()执行盘重复功能的处理的例子的流程图;以及图53是表示利用方法end()在内容的末尾执行播放器独特功能的处理的例子的示意图。
具体实施例方式
下面,将以下列顺序描述本发明的实施例。
1. UMD视频标准2. 根据UMD视频标准的播放器模式3. 电影播放器的事件模型4. 电影播放器对象5. 脚本程序的例子6. 文件管理结构7. 显示再现装置8. 电影播放器的状态改变模型8-1.电影播放器状态的定义8-2.使电影播放器改变状态的方法8-3.再现播放列表期间的电影播放器的操作8-4.电影播放器的再现恢复功能8-5.单个数据的生存周期
9.在内容末尾的处理1.UMD视频标准为了便于理解,将要描述根据本发明实施例的系统。相据本发明的这个实施例,用一种称为ECMA脚本的脚本语言描述一个播放器模型。ECMA脚本是基于由欧洲计算机制造商协会(ECMA)定义的JavaScript(Sun Microsystems公司的注册商标)的交叉平台脚本语言。ECMA脚本具有与HTML文档的高兼容性,并且能定义原始对象。因此,ECMA脚本适用于本发明该实施例的播放器模型。
换句话说,相关技术中的DVD视频使用在DVD视频标准中定义的非通用指令来描述实现交互功能的控制程序。控制程序被分散地嵌入到多个文件中,一个数据文件的多个位置,或者一个AV文件中。执行所嵌入的控制程序的条件和顺序被定义在DVD标准中。
在DVD视频系统中,难以构建通用的内容创建系统。因此,使用模板创建内容,这样故事按照准备好的剧情被创建。当创建复杂内容的时候,有必要使用用户定制的内容创建系统来代替模板。根据本发明的这个实施例,为了解决这样的问题,使用作为通用和可扩展的脚本语言的ECMA脚本来控制AV内容。
在下面的描述中,本发明的这个实施例的标准被称作通用介质盘视频标准(UMD是Sony Computer Entertainment公司的注册商标)。UMD视频标准的脚本部分被称作UMD视频脚本标准。
接下来,将简要描述UMD视频标准。图1示出了UMD视频标准的层结构。UMD视频标准定义了三个层——脚本层、播放列表层以及剪辑层。根据这种结构对流进行管理。
UMD视频标准处理已被数字编码为一个MPEG2流且被多路复用的视频数据、音频数据和字幕数据的MPEG2包化基本流。视频数据、音频数据和字幕数据的基本流被多路复用的MPEG2流被称作剪辑AV流。该剪辑AV流包含在剪辑AV流文件中。当记录剪辑AV流文件时,以一对一的关系对应的创建剪辑信息文件。一套剪辑信息文件和相应于该剪辑信息文件的剪辑AV文件被称作一个剪辑。
剪辑是在某个时间在盘上记录的一个数据单元。剪辑的再现次序是在播放列表层中管理的,该播放列表层是剪辑层上面的层。播放列表层是指定剪辑再现路径的层。播放列表层包含至少一个播放列表(PlayList)。播放列表是一组播放项(PlayItem)。一个播放项包含一对表示剪辑的再现范围的入点和出点。利用多个播放项,能以任何次序对多个剪辑进行再现。播放项能够指定同一个剪辑。剪辑AV流文件的入点和出点由时间戳(剪辑内部时间)来指定。时间戳通过剪辑信息文件的信息被转换为剪辑AV流的字节位置。
播放列表仅是一种在其中表示全部或者部分剪辑的播放项被以指定次序再现的结构。仅利用一个播放列表,很难实现剪辑再现分支以及和用户的交互。根据本发明的这个实施例,多个播放列表一同被包含在文件“PLAYLIST.DAT”中。
在UMD视频脚本中对脚本层进行描述,其中语言规范ECMA脚本被扩展。UMD视频脚本是一种在其中ECMA脚本被扩展以完成用于UMD视频的原始功能的脚本。
脚本层是播放列表层的上一层。脚本层是由使播放器再现播放列表和对播放器进行设置的指令序列组成的。利用脚本层中的指令,可以以这样一种方式实现对播放列表的再现,即选择根据多个语言的多个流中的一个或者按照根据预定条件选择的播放列表再现播放项。使用具有这样的条件分支的播放列表再现的应用的一个例子是多重故事(multi story)。脚本层实现与用户的交互功能。
根据本发明的这个实施例,脚本层是由被称作源文件的文件组成的。源文件包含按照真实ECMA脚本描述的脚本数据(脚本程序),用于按钮操作的音效的声音数据,由用于菜单屏的背景图像的图像数据组成的屏幕图案,以及用于显示例如按钮图像的GUI部件的图像数据(位图数据)。
可以有多个源文件。根据本发明的这个实施例,按照预定命名规则指定源文件的文件名。例如,文件名的扩展名“RCO”表示该文件是一个源文件。
2.根据UMD视频标准的播放器模型下面将描述根据UMD视频标准再现数据的再现装置(播放器)模型(这种模式被称作播放器模型)。该播放器从盘上读取源文件、播放列表文件以及剪辑信息文件。其后,播放器以在源文件中定义的再现次序从盘上读取剪辑AV流文件、播放列表文件以及剪辑信息文件,并且从剪辑AV流文件中再现视频数据、音频数据和字幕数据等。
根据脚本程序的语言规范,将再现播放列表的功能块实现为该脚本程序的一个对象。在UMD视频标准中,再现播放列表的对象被称作电影播放器对象。使播放器再现播放列表和对播放器进行设置的指令是该电影播放器对象所具有的方法。电影播放器对象由脚本层中的方法控制。在这点上,允许电影播放器对象将状态改变和再现位置通知给脚本层的功能是必须的。这个功能对应于电影播放器对象发出一个到脚本程序的事件的操作。对应于该事件的处理被描述为事件处理程序。
当创建了一个其信息通过事件从电影播放器对象传送到脚本程序,并且该脚本程序通过对象控制电影播放器对象的模型时,脚本程序能控制对剪辑AV流的再现。
图2示意性地示出了本发明这个实施例的播放器模型的例子。电影播放器300是根据UMD视频标准再现视频数据、音频数据以及字幕数据的模块。上述的电影播放器对象是一个包含在操作电影对象的脚本程序中的对象。换句话说,电影播放器对象是一个抽象的执行模块,其实现电影播放器的功能,并且其可由脚本程序操纵。
另外,由于电影播放器300和电影播放器对象被认为实质是相同的,他们可由相同的参考数字来描述。
在图2中,电影播放器300利用根据用户输入310从底层(图2中所示的本地执行平台301)接收到的方法和利用根据播放列表和剪辑信息的数据库从顶层(脚本层)接收到的方法来读取剪辑AV流文件,并解码和显示该剪辑AV流。
电影播放器对象300的内部结构取决于再现UMD视频的UMD视频播放器的实施方式。脚本层302将应用编程接口(API)提供给电影播放器对象300,该应用编程接口将方法和属性作为黑箱对象来使用。在这个例子中,UMD视频播放器表示实现电影播放器的真实装置。所有UMD视频播放器按照UMD视频标准实现电影播放器,并具有与之相关的再现兼容性。
如图2所示,电影播放器对象300具有三条输入/输出通道,其分别是可从本地执行平台301接收控制指令311的通道,把事件312通知给脚本层302的通道,以及从脚本层302接收方法313的通道。
控制指令311是控制电影播放器300的操作的指令,并且其是从本地执行平台301接收到的。本地执行平台301是作为真实装置的UMD视频播放器的装置特有部分和电影播放器300之间的接口。事件312是从电影播放器300传送到脚本层302的脚本事件。方法313是脚本层302的脚本程序利用其将指令发送到电影播放器300的方法。
按照UMD视频标准,电影播放器对象300包含播放列表和剪辑信息的数据库320。电影播放器300使用户输入310无效(屏蔽用户输入310),并且根据数据库320把由时间指定的再现位置转换成剪辑AV流的字节位置。
电影播放器对象300中的重放模块321解码剪辑AV流,该剪辑AV流是其音频数据、视频数据以及字幕数据被多路复用的MPEG2节目流(PS)。重放模块321具有播放状态和停止状态的两种状态,并且通过控制指令和方法从一种状态改变到另一种状态(见图3)。应该注意到,剪辑AV流并不局限于MPEG2PS。例如,该模型能把MPEG2传输流(TS)处理成与MPEG2PS相同的流。
脚本层302是按照UMD视频标准来执行脚本程序、控制电影播放器对象300并且显示屏幕的层。脚本层302完成内容创建方想要创建的剧本。脚本层302发送方法313到电影播放器对象300,并且从其接收事件312。脚本层302在它和本地执行平台301之间把对应于用户输入310的键事件314和使本地执行平台301显示屏幕的方法315进行交换。
本地执行平台301也具有未在UMD视频标准中定义的各种功能。根据本发明的这个实施例,存在有方法315,脚本层302利用该方法315把指令发送到本地执行平台301,在本地执行平台301中定义的其功能被抽象化的对象。脚本程序将方法315看作包含在该对象中。这是因为一个方法被包含在一个对象中,因而,控制对象330被定义在本地执行平台301中。方法315被定义为控制对象330的方法。
例如,菜单屏上的按钮可由本地执行平台301利用从脚本层302的脚本程序提供给本地执行平台301的方法315来显示。当用户选择或者确定按钮中一个时,本地执行平台301把对应于用户输入310的键事件314通知给脚本层302。脚本层302中的脚本程序执行对应于用户输入310的键事件314的处理。
指定电影播放器300和脚本层302的角色以使当电影播放器300解码视频数据、音频数据以及字幕数据并控制对所解码数据的显示时,脚本层302放置并显示部件图像(在下文中被称作GUI部件),该部件图像组成例如按钮的图形用户界面(GUI),并对应于对GUI部件的选择和确定进行处理。
本地执行平台301是电影播放器对象300和脚本程序运行的平台。当真实的UMD视频播放器是硬件设备时,UMD视频播放器将本地执行平台301实现为用于协调在硬件和电影播放器300之间的处理。
例如,本地执行平台301从用户接收用户输入310并且确定所接收的用户输入310是针对电影播放器对象300的指令还是针对脚本层302中所显示的按钮的指令。当所确定的结果表示用户输入310是针对电影播放器300的指令时,本地执行平台301把用户输入310转换为控制指令311,作为对电影播放器300的内部控制指令,并且将该控制指令发送到电影播放器300。
另一方面,当所确定的结果表示用户的输入310是针对脚本层302中所显示的GUI部件的指令时,本地执行平台301把相应于用户输入310的键事件314通知给脚本层302。本地执行平台301能根据用户输入310利用从脚本层302发送的方法315在屏幕上显示按钮图像。换句话说,本地执行平台301和脚本层302可以不通过电影播放器300直接地交换事件和方法。
另外,本地执行平台301可访问电影播放器300的属性并且检查电影播放器300的状态。
下面,将详细描述电影播放器300。图3示出了电影播放器300的内部结构的一个例子。如上所述,电影播放器300由数据库320和重放模块321组成。数据库320是存储从盘中读取的播放列表信息和剪辑的信息,即剪辑信息的区域。
重放模块321是由解码器引擎322和属性323组成的。属性323是表示重放模块321的状态的值。属性323具有两种类型的属性323A(只读参数)和属性323B(播放器状态),属性323A的值取决于电影播放器300的初始设置,如语言代码,属性323B的值根据重放模块321的状态而改变。
其值取决于初始设置的属性323A的值是由本地系统,例如真实的装置来设置的。因此,属性323A的值不被播放列表、剪辑信息以及脚本程序改变。属性323A的值仅可从脚本程序中读出。相反,表示重放模块321的状态的属性323B的值,可从脚本程序中读出。另外,也可从特定的脚本程序中写入属性323B的值。
在该操作模型中,假定在再现剪辑AV流之前,从盘中预先装入播放列表和剪辑信息。替代地,可用其它实现方式实现电影播放器模型的操作。
电影播放器对象300再现由脚本层302或者本地执行平台301指定的播放列表。例如,电影播放器300参照数据库320并且根据所指定的播放列表获得作为文件的字节位置的剪辑AV流的再现位置。在重放模块321中,解码器引擎322根据再现位置的信息来控制对剪辑AV流的解码。
如图4所示,根据播放列表的再现状态,电影播放器300具有播放状态和停止状态两种状态。播放状态表示播放列表被指定并且其正被再现。播放状态包括标准再现、例如双倍速再现和1/2倍速再现的变速再现、快进、快退以及暂停。所谓的分步(step)再现,其中每帧被正向再现以及被反向再现,是暂停状态和播放状态被重复的状态。停止状态表示播放列表不被再现。在停止状态中,没有选择播放列表并且表示“当前再现的播放列表号”的播放器状态的值是不确定的。
电影播放器300的状态取决于电影播放器300中的解码器引擎322在播放状态和停止状态之间的状态改变。根据解码引擎322的状态改变来更新属性323B的值。
恢复信息324存储在停止状态发生之前现存的状态。在电影播放器300解码播放列表之后,当电影播放器300处于播放状态时,如果电影播放器300的状态被改变到停止状态时,恢复信息324存储在停止状态发生之前现存的状态。另外,恢复信息324可被存储在播放器的作为硬件用于盘的每一标题的非易失性存储器中。盘对于每个标题具有唯一的标识信息(称为标题ID)。恢复信息324和该标识信息被相关地存储。因此,当具有根据标识信息的标题的盘状态从停止状态改变到播放状态时,根据恢复信息324,能够从发生停止状态的位置再现数据。
3.电影播放器的事件模型下面,将描述电影播放器300的事件模型。在电影播放器300再现播放列表的播放状态下,电影播放器300产生各种事件。事件执行被描述为脚本并被称为事件处理程序的处理程序。事件处理程序是当事件发生时所调用的方法。在事件发生时开始执行处理程序的程序执行模型被称为事件驱动模型。在事件驱动模型中,发生不规则事件。当事件发生时,执行预定的程序。根据本发明的这个实施例,脚本程序用事件处理程序组来控制电影播放器对象300的操作。
图5示意性地示出了本发明这个实施例的电影播放器300的事件模型。在图5中,事件处理程序onEventA()onEventB()以及onEventC()是接口。事件处理程序的内容被描述为脚本。事件处理程序的内容例如由内容创建方创建并执行。在UMD视频脚本标准中,给每个事件提供一个事件处理程序,其中电影播放器对象300把每个事件通知给脚本程序。在图5所示的例子中,确定当事件A发生时所执行的处理程序是事件处理程序onEventA()。这适用于事件B和事件C。因此,当事件B发生时,执行与其相应的事件处理程序onEventB()。当事件C发生时,执行与其相应的事件处理程序onEventC()。
由于系统方选择在事件发生时所调用的事件处理程序,因此,内容创建方无需描述用于确定在脚本程序中发生了什么事件的处理。
图6示出了当正在再现播放列表时所发生的事件的例子。由于在播放列表PlayList的开始处描述章节标志ChapterMark,当从开头再现播放列表时,发生对应于章节标志的事件Chapter。当无论何时将现有的章节改变到另一章节时,都把事件Chapter通知给脚本层302并执行相应的事件处理程序onChapter。当对于事件标志EventMark的再现时间用尽时,相应的标志事件就发生了。在播放列表的末尾,电影播放器300暂停对播放列表的再现并把事件PlayListEnd通知给脚本层302。脚本层302方使电影播放器300用相应的事件处理程序OnPlayListEnd()开始再现另一个播放列表。通过这种方式,电影播放器300以内容创建方想要的次序持续再现播放列表的序列。
以这种方式,在播放器运行时,发生各种事件。当把事件的发生通知给较高级别的程序时,较高级别的程序能知道播放器的状态。当较高级别的程序提供相应于被通知的事件而执行的程序(事件处理程序)时,它能够处理各种事件。下面将描述事件以及事件处理程序。
当内容创建方还未描述事件处理程序时,较高级别的程序执行一个建立在播放器中的并且定义在标准中的操作(缺省的事件处理程序)或忽略该事件。当对于特殊事件无需执行任何处理时,如果根据事件的事件处理程序未被描述,那么该事件能被主动地忽略掉。
作为事件模型,可以具有事件收听器模型、单方法模型等等,在事件收听器模型中,一个对象根据预定的事件将收听器登记到播放器对象。当在播放器对象中发生的事件是已经被登记的事件时,播放器对象将该事件传送到已登记该事件的对象。该对象执行相应于该事件的方法。在单方法模型中,当无论何时事件发生时,都调用一个方法。
本发明这个实施例的事件模型比需要如事件登记处理和事件删除处理等处理的事件收听器模型简单。单方法模型需要知道发生的是什么事件并且在方法中描述一个预处理,该预处理改变为发生的每个事件所准备的处理例程。由于由内容创建方执行该方法,即使该模型是简单的,也会增加内容创建方的负担。另外当无论何时事件发生时,由于调用大处理程序(方法),将占用大存储区并且执行速度会变慢。因此,由于本发明的这个实施例的模型针对各个事件提供处理程序(事件处理程序),可以说,这个模型在这些点上比其它模型优越。
4.电影播放器对象下面,将描述电影播放器对象300的外部规范。通常,根据ECMA脚本语言规范定义的对象具有属性和方法。如图2和图3示出的该对象,本发明这个实施例的电影播放器对象300具有属性和方法。当外部对象指定目标对象的对象名称和属性名称时,外部对象能够直接读取和写入该目标对象的被指定的属性。替代性地,当设置属性值的方法setXXX()(其中“XXX”表示属性名)和读取属性值的方法getXXX()被定义时,这些方法能够读取和写入其它对象的属性。
图7A和图7B示出了电影播放器对象300所具有的属性的例子的列表。这些属性对应于图3所示的属性323。图7示出了属于图3所示的只读参数323A的属性的例子。属性scriptVersion表示UMD视频脚本的版本。属性audioChannelCapability表示UMD视频播放器能再现的音频通道数量。属性languageCode表示设置给UMD视频播放器的菜单显示语言的语言码。属性audioLanguageCode表示设置给UMD视频播放器的音频语言的语言码。属性subtitleLanguageCode表示设置给UMD视频播放器的字幕语言的语言码。
当在电影播放器300装入一个盘时,根据由在只读参数323A中设置的属性languageCode表示的语言码,来决定从盘中读取的脚本文件。如果装入电影播放器300中的盘不具有根据语言的脚本文件,从盘中读取一个缺省的脚本文件。例如,从盘中读取位于多个脚本文件的开头的文件作为缺省脚本文件。
图7B示出了属于图3所示的播放器状态323B的属性的例子。属性playListNumber表示当前正被再现的播放列表的播放列表号。属性chapterNumber表示当前正被再现的章节的章节号。属性videoNumber表示当前正被再现的视频流的视频流号。属性audioNumber表示当前正被再现的音频流的音频流号。属性subtitleNumber表示当前正被再现的字幕流的字幕流号。属性playListTime表示当播放列表的开头是0时,再现播放列表之后所消耗的时间。属性audioFlag表示音频再现和双单声LR的开/关(ON/OFF)。属性subtitleFlag表示字幕显示的开/关(ON/OFF)。
双单声是其中立体声音频的左右(L,R)声道被独立地用作单耳声道的模式。
当电影播放器300处在播放状态或者暂停状态时,属于播放器状态323B的每个属性表示这些信息。当把电影播放器300该变为停止状态时,属于播放器状态323B的每个属性被备份为恢复信息324。在这点上,播放器状态323B的内容会被清除。
图8示出了电影播放器对象300所具有的方法的例子的列表。该方法对应于图2所示的方法313。方法play()再现视频数据。方法playChapter()指定章节并且再现所指定章节的视频数据。方法resume()用恢复信息324开始再现视频数据。方法stop()停止对视频数据的再现。方法pause()暂停对视频数据的再现。方法playStep()逐帧地再现视频数据。方法changeStream()把视频流、音频流和/或字幕流的现有流改变为另一个流。方法getPlayerStatus()获得电影播放器300的播放状态、停止状态、暂停状态等。方法changeResumeInfo()改变恢复信息324的内容。方法reset()停止对视频数据的再现并且清除恢复信息324的内容。
根据UMD视频标准,能在显示屏的一个部分显示视频数据。下列四种方法是在显示屏的一个部分显示视频数据的方法。方法setPos()设置视频数据的显示位置。方法getPos()获得视频数据的显示位置。方法setSize()设置视频数据的显示尺寸。方法getSize()获得视频数据的显示尺寸。
现实中,电影播放器300和本地执行平台301是整合在一起的。换句话说,电影播放器300UMD和本地执行平台301相当于作为装入盘并从盘中再现视频数据的UMD播放器的硬件和控制UMD播放器的软件。什么部分是硬件和软件取决于其实施结构。例如,当UMD播放器是个人电脑等时,除了盘驱动器之外的其它部分是由软件组成的。当使用单个UMD播放器时,除了盘驱动器之外,例如视频解码器、音频解码器等也可以由硬件组成。因此,方法、指令和事件并不总是明确地在如图2所示的电影播放器300和本地执行平台301之间交换。
另一方面,关于用户的键输入,如在图2中所示,首先通过本地执行平台301接收用户输入310。换句话说,本地执行平台301接收作为用户输入310的用户键输入。本地执行平台301确定用户输入310是对电影播放器300的指令还是对脚本层302中的脚本程序的事件。根据所确定的结果,本地执行平台301发送控制指令311或者键事件314并把所发控制指令311或者键事件314通知给相应的上一层(电影播放器300或脚本层302)。
图9和图10示出了作为用户输入310的键输入的例子。在图9和图10中,具有前缀“VM”的键是虚拟键。
图9示出了关于电影播放器300的操作的键输入的例子。键VK_PLAY提供相应于启动再现的播放键的功能。键VK_STOP提供相应于停止再现的停止键的功能。键VK_PAUSE提供相应于暂停再现的暂停键的功能。键VK_FAST_FORWARD提供相应于执行快进再现的快进键的功能。键VK_FAST_REVERSE提供相应于执行快退再现的快退键的功能。键VK_SLOW_FORWARD提供相应于执行慢进再现的慢(进)键的功能。键VK_SLOW_REVERSE提供相应于执行慢退再现的慢(退)键的功能。键VK_STEP_FORWARD提供相应于执行分步正向再现的步(进)键的功能。VK_STEP_REVERSE提供相应于执行分步反向再现的步(退)键的功能。
键VK_NEXT提供相应于输入了表示“下一个”值的下一个指定键的功能。键VK_PREVIOUS提供相应于输入了表示“前一个”值的前一个指定键的功能。利用键VK_NEXT和键VK_PREVIOUS,用户能分别指定例如到下一章节以及前一章节的跳转。
键VK_ANGLE提供相应于为多角度视频数据指定角度改变的角度改变键的功能。键VK_SUBTITLE提供相应于指定英文字幕、日文字幕以及字幕ON/OFF的字幕改变键的功能。键VK_AUDIO提供相应于指定比如环绕模式或者双语模式的音频模式的音频改变键的功能。键VK_VIDEO_ASPECT提供相应于改变视频数据的宽高比的示象改变键的功能。
图10示出了关于菜单操作的键输入的例子。键VK_UP提供相应于输入了表示“向上”值的向上指定键的功能。键VK_DOWN提供相应于输入了表示“向下”值的向下指定键的功能。键VK_RIGHT提供相应于输入了表示“向右”值的向右指定键的功能。键VK_LEFT提供相应于输入了表示“向左”值的向左指定键的功能。键VK_UP_RIGHT提供相应于输入了表示“向右上”值的向右上指定键的功能。键VK_UP_LEFT提供相应于输入了表示“向左上”值的向左上指定键的功能。键VK_DOWN_RIGHT提供相应于输入了表示“向右下”值的向右下指定键的功能。键VK_DOWNL_EFF提供相应于输入值表示“向左下”的向左下指定键的功能。利用这些方向键,用户可使例如光标在显示屏上移动。
键VK_MENU提供相应于显示菜单的菜单键的功能。键VK_ENTER提供相应于完成指令输入或者数据输入的输入键的功能。键VK_RETURN提供返回处理的上一步的功能。
键VK_COLORED_KEY_1提供相应于彩色功能键1的功能。键VK_COLORED_KEY_2提供相应于彩色功能键2的功能。键VK_COLORED_KEY_3提供相应于彩色功能键3的功能。键VK_COLORED_KEY_4提供相应于彩色功能键4的功能。键VK_COLORED_KEY_5提供相应于彩色功能键5的功能。键VK_COLORED_KEY_6提供相应于彩色功能键6的功能。
由于从其职能上来看,图9中所示的键输入的功能不同于图10中所示的这些键输入的功能,因此本地执行平台301需要选择这些键输入所要通知的目的地。如上所述,图9中所示的键输入指定对视频数据、音频数据以及字幕数据的再现操作。当本地执行平台301接收到作为用户输入310的图9所示的键输入中的一个时,本地执行平台301将接收到的键输入转换为图11所示的指令并且把转换的指令通知给电影播放器300。
另一方面,由于图10所示的键输入是对GUI的用户输入310,因此需要把这些输入通知给组成屏幕和放置了按钮的脚本层302。当本地执行平台301接收到作为用户输入310的如图10所示的键输入时,本地执行平台301把键输入转换为图2所示的事件314,并且把事件314通知给脚本层302。图12示出了根据键输入的事件314的例子。
图9和图10同样示出了如键VK_ANGLE、键VK_SUBTITLE和键VK_AUDIO等关于流改变的键输入。首先,利用这些键,用户输入310通知给用户输入310。电影播放器300把表示电影播放器300已经发送流改变请求的事件通知给脚本程序。脚本程序利用流改变方法使电影播放器300把如音频流或者字幕流的现有流改变成另一个流。因此这些键是本地执行平台301需要通知给电影播放器300的键输入。
下面,将详细描述图11中所示的指令。指令uo_timeSearch(playListTime)从正被再现的播放列表的指定时间开始启动再现。变元playListTime表示当播放列表的开始是0时播放列表的时间。由于这个指令不指定播放列表号,因此由变元playListTime表示的时间是在被再现的播放列表范围内的指定时间。指令uo_play()以标准再现速度开始再现。其开始位置根据恢复信息324来确定。当不存在恢复信息324时,这个用户操作无效。这个指令相应于无播放列表号的方法play()的执行。利用这个指令,用户不能指定播放列表号。
指令uo_playChapter(chapterNumber)从正初再现的播放列表中的变元chapterNumber所指定的章节开始启动再现。如果没有章节号,该指令从正被再现的章节的开头开始启动再现。该指令相应于无章节号的方法playChapter()。指令uo_playPrevChapter()从紧挨着的前一章节开始启动再现,指令uo_playNextChapter从紧挨着的后一章节开始启动再现。
指令uo_jumpToEnd()用于跳转到播放列表的末尾。该指令相应于停止再现和产生事件playListEnd的用户操作。利用该指令,脚本层302执行事件处理程序onPlayListEnd。指令uo_forwardScan(speed)启动由变元speed指定再现速度的正向再现。指令uo_backwardScan(speed)启动由变元speed指定再现速度的反向再现。这些指令uo_forwardScan(speed)和uo_backwardScan(speed)的变元speed取决于UMD视频播放器的实现方式。
指令uo_playStep(forward)开始步进再现。指令uo_playStep(backward)开始步退再现。指令uo_pauseOn()暂停再现。指令uo_pauseOff()取消再现的暂停状态。
指令uo_setAudioEnabled(Boolean)改变音频流的ON/OFF。当执行该指令时,标记audioFlag的值相应地改变。指令uo_setSubtitleEnabled(Boolean)改变字幕流的ON/OFF。当执行该指令时,相应地改变标记subtitleFlag的值。指令uo_angleChange()改变显示角度。当对应于用户操作把该指令通知给电影播放器300时,电影播放器300将事件angleChange通知给脚本层302。指令uo_audiochange(audioStreamNumber)改变将要再现的音频流。指令uo_changeAudioChannel(value)改变音频通道的号或者在双单声道再现中将一个通道改变为另一通道。当执行该指令时,相应地改变标记audioFlag的值。指令uo_subtitleChange(subtitleStreamNumber)把现有的字幕流改变为另一个字幕流。
下面,将详细描述图12中所示的事件和电影播放器300的方法之间的关系。事件menu跳转到一个菜单。本地执行平台301将此事件通知给脚本层302而不是电影播放器300。当脚本层302接收到事件menu时,脚本层302执行事件处理程序onMenu。事件exit是当本地执行平台301完成UMD视频应用时本地执行平台301发出的事件。当脚本层302接收到事件exit时,脚本层302执行事件处理程序onExit。
事件resourceChanged是当将现有的源文件改变为另一个源文件时,本地执行平台301产生的事件。当脚本层302接收到事件resourceChanged时,脚本层302执行事件处理程序onResourceChanged。
事件up、事件down、事件left,、事件right、事件focusIn、事件focusOut、事件push以及事件cancel是当聚焦到屏幕上的作为GUI部件的按钮图像上时所发生的事件。本地执行平台301把这些事件通知给脚本层302而不是电影播放器300。当聚焦到一个按钮图像上时,例如在屏幕上显示的光标表示按钮图像的坐标,以使按钮图像可被选择。当分别聚焦在向上按钮图像、向下按钮图像、向左按钮图像以及向右按钮图像上时,事件up、事件down、事件left和事件right发生。事件focusIn当聚焦在任何按钮图像上时发生。当解除对任何被聚焦的按钮图像聚焦时事件focusOut发生。当对任何被聚焦的按钮图像执行按下操作时,事件push发生。当对于任何按钮图像执行与按下操作相反的取消操作时,事件cancel发生。
事件autoPlay和事件continuePlay是使脚本层302开始执行脚本的事件。事件autoPlay是当装入盘时使脚本自动开始执行的事件。事件continuePlay是当装入盘时根据例如恢复信息324使脚本在脚本的执行被停止的位置处恢复执行。
存在有当图12中所示的事件发生时所执行的程序。相应于这些事件的程序被称为事件处理程序。事件和事件处理程序可使用例如名称来相互关联。通过在相应事件的名称上加上前缀“on”来创建事件处理程序的名称。图13和图14示出了事件处理程序的例子。当内容创建者描述事件处理程序内容时,UMD视频播放器能执行内容创建者想要的各种操作。
图13示出了电影播放器对象300所具有的事件以及与其相应的事件处理程序的例子。图13所示的事件对应于图2中所示的事件312。电影播放器300把在图13中所示的事件通知给脚本层302。事件处理程序是各种接口。事件处理程序的内容是由内容创建者通过使用例如脚本语言实现的。由于事件处理程序具有这种结构,因此当事件发生时,能够完成内容创建者想要的操作。
事件mark和事件处理程序onMark()是在检测到一个事件mark时执行的。在如播放列表中嵌入事件mark。当电影播放器300正在再现播放列表时,电影播放器300从播放列表检测事件mark。当电影播放器300检测到事件mark时,电影播放器300把事件mark通知给脚本层302。脚本层302执行对应于事件mark的事件处理程序onMark()。同样地,当完成对播放列表的再现时,执行事件playListEnd以及事件处理程序onPlayListEnd()。当检测到chapter-mark时,执行事件chapter和事件处理程序onChapter()。chapter-mark被嵌入在例如播放列表中并且由电影播放器300在它正在再现播放列表时被检测。
当角度改变由用户操作来指定时,执行事件angleChange以及事件处理程序onAngleChange()。例如,当由作为用户输入310的用户操作把键输入VK_ANGLE输入到本地执行平台301中时,本地执行平台301把用户输入310转换为指令uo_angleChange()并且将它提供给电影播放器300。电影播放器300产生相应于指令uo_angleChange的事件angleChange并且把事件angleChange提供给脚本层302。脚本层302执行相应于事件angleChange的事件处理程序onAngleChange()。同样地,当由用户操作指定音频改变时,执行事件audioChange和事件处理程序onAudioChange()。当由用户操作指定字幕改变时,执行事件subtitleChange和事件处理程序onSubtitleChange()。
图14示出了控制器对象330所具有的事件处理程序的例子。图14中所示的事件处理程序是属于本地执行平台301的控制器对象330的事件处理程序。当本地执行平台301把事件处理程序通知给脚本层302时,脚本层302执行它们。
事件menu和事件处理程序onMenu()跳转到菜单。事件menu是当菜单键被用户操作按下时本地执行平台301通知给脚本层302的事件。脚本层302接收到该事件,执行与此对应的事件处理程序onMenu(),并用事件处理程序onMenu()来放置并显示组成菜单屏的GUI部件。事件exit和事件处理程序onExit()是一个事件以及其相对应的事件处理程序。当本地执行平台301完成UMD视频应用时,本地执行平台301产生事件exit。
当由如用户操作来指定UMD视频播放器的操作的完成时,本地执行平台301把事件exit通知给脚本层302。当脚本层302收到事件exit时,该脚本利用事件处理程序onExit()执行退出处理。
事件resourceChanged和事件处理程序onResourceChanged()是一个事件和其相应的事件处理程序。在本地执行平台301已经把现有的源文件改变为另一个源文件之后,本地执行平台301产生事件resoureeChanged。
事件autoPlay、事件处理程序onAutoPlay()、事件continuePlay以及事件处理程序onContinuePlay()使脚本开始执行。
除了用于控制器对象330的事件处理程序之外,还存在有用于按钮的事件处理程序。然而,用于按钮的事件处理程序不与本发明这个实施例密切相关,它们的描述将被忽略。
下面将参照图15所示的流程图,简要描述当用户输入事件发生时执行所提供的程序的处理的例子。图15示出了这样的一个例子,其中当UMD视频播放器正在从盘中正常地再现数据时,当用户按下一个键使UMD视频播放器再现下一章节时(例如,“next”键),UMD视频播放器根据键输入跳转到下一章节,开始从下一章节再现数据,并且在屏幕上显示所提供的信息。
当UMD视频播放器正在从盘中正常地再现数据时,当用户在UMD视频播放器的遥控指令器上按下键“next”时(在步骤S10),键VK_NEXT作为用户输入310提供给本地执行平台301。本地执行平台301产生对应于用户输入310的用户指令uo_playNextChapter()(在步骤S11)。本地执行平台301把用户指令uo_playNextChapter()通知给电影播放器300。
当电影播放器300接收到指令uo_playNextChapter()时,电影播放器300搜索数据库320以根据播放列表信息基于当前再现位置找到下一章节标志的位置(在步骤S12)。在步骤S13,确定下一章节标志是否存在。当所确定的结果表示下一章节标志不存在时,电影播放器300不跳转到下一章节,而是恢复当前的再现操作。
相反,当在步骤S13所确定的结果表示下一章节标志存在时,流程前进到步骤S14。在步骤S14中,电影播放器300停止当前的再现并且从数据库320的剪辑信息文件的特征点信息中得到剪辑AV流文件中的下一章节标志的字节位置。在步骤S15中,电影播放器300访问所得到的文件字节位置并且从该位置开始再现流。
在步骤S16之后,执行显示消息的过程,该消息通知用户屏幕上现有的章节被改变为的下一章节。当现有的章节被改变为下一章并且从下一章节的开头开始再现时,事件chapter发生(在步骤S16处)。例如,电影播放器300检测位于在章节的开始处的章节标志并且产生事件chapter。电影播放器300把事件chapter通知给脚本层302。另外,电影播放器300把所跳转到的章节的章节号通知给脚本层302。脚本层302开始执行相应于所通知的事件的事件处理程序,例如事件处理程序onChapter()(在步骤S17)。
在这个例子中,假定在事件处理程序中描述了显示一个消息的操作,该消息表示屏幕上的章节被改变。脚本层302中的脚本执行事件处理程序,当事件发生时得到电影播放器300通知给脚本层302的章节号(在步骤S18),并且使本地执行平台301在屏幕上显示例如表示所得到的章节号的章节开头的预定消息。相应地,本地执行平台301在屏幕上显示该消息并且完成事件处理程序的处理(在步骤S20)。
在前述过程中,当用户操作使电影播放器300从下章节开始再现数据的键“next”时,电影播放器300跳转到下一章节。当电影播放器300开始再现下一章节时,电影播放器300在屏幕上显示表示下一章节的开头的消息。
因此用户输入的事件使得电影播放器300的状态将被改变并且新的事件将发生。利用新事件,电影播放器300能够执行各种处理过程。
电影播放器模型能够再现视频数据、音频数据以及字幕数据。利用内容创建者想要的事件并使它们在再现过程中发生,并且利用相应于该事件执行的相应的事件处理程序,能够完成他或她想要的操作。另外,当播放器正在再现播放列表的同时对其执行用户操作时,本地执行平台301将对应于作为用户操作的用户输入310的控制指令提供给电影播放器300以使播放器的现有状态改变为用户希望的另一个状态。另外,本地执行平台301把对应于作为对播放器的用户操作的用户输入310的事件通知给脚本层302中的脚本。结果,能够对应于用户的操作实现内容创建者所提供的对播放器的操作。
由于播放器模型具有这样的一种结构,用户能再现视频数据、音频数据以及字幕数据并交互地操作它们。
5.脚本程序的例子下面,将描述脚本层302中的脚本程序的例子。假定内容创建者创建了如图16中所示的内容再现流程。图16中所示的内容具有作为显示元件的播放列表400和401,顶菜单402,以及消息403。播放列表400用于显示当盘装入时自动显示的警告信息。播放列表401是作为内容的例子的电影的主体部分。顶菜单402具有如按钮的GUI部件,利用GUI部件例如用户可使脚本再现播放列表401。在播放列表401的再现过程中的任何时间可显示消息403。
另外,在图16所示的结构中,提供多个事件处理程序。当将盘装入UMD视频播放器中时,事件处理程序onAutoPlay()从盘中自动再现播放列表400并且在屏幕上显示警告消息。事件处理程序onPlayListEnd()是当播放列表再现完成时调用的事件处理程序。在图16所示的例子中,当完成再现播放列表400或者播放列表401时,调用事件处理程序onPlayListEnd()。换句话说,事件处理程序onPlayListEnd()确定播放列表的再现是否完成了。当完成对播放列表400的再现时,事件处理程序onPlayListEnd()开始对播放列表401的再现。当播放列表401的再现完成时,事件处理程序onPlayListEnd调用顶菜单402。
当用户操作菜单键时,调用事件处理程序onMenu()。事件处理程序onMenu()调用顶菜单402并且在屏幕上显示它。在播放列表的执行期间,当由标志Mark指定的时间被用尽时执行事件处理程序onMark()。在图16所示的例子中,在播放列表401中设置标记Mark。在播放列表401的执行期间,当由标志Mark指定的时间被用尽时,在屏幕上显示消息403。
在图16所示的例子中,当把盘装入UMD视频播放器中时,调用事件处理程序onAutoPlay。事件处理程序onAutoPlay再现播放列表400并且在屏幕上显示警告消息。播放列表400的再现时间被用尽之后,播放列表400到达末尾并且调用事件处理程序onPlayListEnd。事件处理程序onPlayListEnd确定播放列表400已经完全被再现,并且再现下一个播放列表401。当播放列表401正被再现的同时用户操作菜单键时,调用事件处理程序onMenu。事件处理程序onMenu在屏幕上显示顶菜单402。对应于在顶菜单402上的预定操作,事件处理程序onMenu从开头开始再现播放列表401。当播放列表401的再现时间对于由标志Mark所指定的时间已经被用尽时,调用事件处理程序onMark。事件处理程序onMark在屏幕上显示消息403。当已经完全再现完播放列表401时,调用事件处理程序onPlayListEnd。事件处理程序onPlayListEnd确定播放列表401已经被完全再现完并且在屏幕上显示顶菜单402。
图17示出了用于完成图16所示的操作的脚本程序的例子。如上所述,脚本程序具有事件处理程序以及在相应事件发生时执行这些事件处理程序。脚本程序以扩展名“RCO”存储在源文件“SCRIPT.DAT”中。
方法“movieplayer.play()”使电影播放器300再现播放列表。将被再现的播放列表的播放列表号作为变元被描述在括号()中。当已经完全再现完播放列表时,事件playListEnd发生。当事件playListEnd发生时,脚本调用事件处理程序movieplayer.onPlayListEnd()。在这点上,把事件playListEnd以及对象event_info提供给脚本。将已经完成再现的播放列表的播放列表号等存储在对象event_info中。该脚本能对应于对象event_info的内容而改变下一个操作。
6.文件管理结构下面,将参照图18来描述根据UMD视频标准的文件管理结构。文件在目录结构中被分级管理并且被记录在盘上。可使用由国际标准化组织(ISO)9660通过标准化形成的盘文件系统,通用盘格式(UDF)或者相似的格式。
在根目录下放置文件“TITLEID.DAT”以及目录“VIDEO”。在目录“VIDEO”下面放置目录“RESOURCE”、目录“CLIP”、目录“STREAM”以及文件“PLAYLIST.DAT”。
文件“TITLEID.DAT”是存储对于每个标题都不同的标题标识符(内容的类型)的文件。一个盘具有一个文件“TITLEID.DAT”。
源文件“JA000000.RCO”放置在目录“RESOURCE”之下。如上所述,除了组成脚本层302的脚本程序之外,在源文件中还包含组成菜单屏的数据,例如像图像数据和声音数据的部分数据。在目录“RESOURCE”下通常放置一个源文件。替代地,目录“RESOURCE”之下可以放置多个源文件。对于语言不同的多个菜单而创建多个源文件。然而在这种情况下,每次仅使用一个源文件。
源文件具有一个文件名,其具有一个作为分隔符的句点和固定的源文件所具有的扩展名“RCO”。句点之前的字符串表示源文件的内容。源文件的文件名具有“CCdannn.RCO”的格式。开头两个字符“CC”表示源文件的语言码。下一个字符“d”是表示语言码是否是缺省语言的标记。下一个字符“a”表示显示屏的宽高比。下面的四个字符“nnnn”表示识别号。指定该识别号以使源文件的文件名不是冗余的。
根据源文件的命名规则,其中的文件名表示源数据的语言属性以及显示屏的宽高比。根据文件名适当地选择源文件。
在目录“CLIP”下放置至少一个剪辑信息文件。一个剪辑信息文件具有一个由五到数个字符如“00001”(在这个例子中,为多个数字)的字符串部分组成的文件名、一个作为分隔符的句点以及一个如“CLP”的扩展部分。扩展部分“CLP”表示该文件是剪辑信息文件。
在目录“STREAM”下放置至少一个剪辑AV流文件。一个剪辑AV流文件具有一个由五到数个字符如“00001”(在这个例子中,为多个数字)的字符串部分组成的文件名、一个作为分隔符的句点以及一个如“PS”的扩展部分。扩展部分“PS”表示该文件是剪辑AV流文件。根据本发明的这个实施例,剪辑AV流文件是运动图像专家组2(MPEG2)节目流,其中的视频流、音频流和字幕流被多路复用并且被包含在由扩展部分“PS”标识的文件中。
如上所述,剪辑AV流文件是一个其中的视频数据和音频数据被压缩编码以及分时复用的文件。因此当读取以及解码剪辑AV流文件时,能获得视频数据和音频数据。剪辑信息文件是描述剪辑AV流文件的特征的文件。因此,剪辑信息文件和剪辑AV流文件相互关联。根据本发明的这个实施例,由于剪辑信息文件的文件名的具有数个到五个字符的字符串部分与剪辑AV流文件是相同的,可容易地得到其中的相互关系。
如上所述,源文件包含描述脚本程序的脚本文件。按照本发明的这个实施例,源文件包含使盘的再现状态将被交互改变的程序。在从盘中读取其它文件之前读取源文件。
文件“PLAYLIST.DAT”是描述指定剪辑AV流再现次序的播放列表的播放列表文件。下面,参照图24到图26,将描述文件“PLAYLIST.DAT”文件的内部结构。图24示出了表示文件“PLAYLIST.DAT”整体结构的语法的例子。在该例子中,以C语言描述该语法,其用作计算机装置程序的描述语言。其也应用到表示其它语法的表中。
字段name_length具有8位的数据长度并且表示指定给播放列表文件的名称的长度。字段name_string具有255字节的数据长度并且表示指定给播放列表文件的名称。在字段name_string中,从头开始的由字段name_length表示的字节长度的区域被用作有效名称。当字段值“name_length”是“10”时,从字段name_string的开头开始的10个字节被解释为有效名称。
字段number_of_PlayLists具有16个字节的数据长度并且表示随后的PlayList()块数。for循环跟随在字段number_of_PlayLists之后。For循环描述相应于字段number_of_playLists的块PlayList()。块PlayList()是播放列表其本身。
下面,将描述块PlayList()的内部结构的例子。块PlayList()以字段PlayList_data_length开始。字段PlayList_data_length具有32位的数据长度并且表示包括字段PlayList_data_length的块PlayList()的数据长度。字段PlayList_data_length之后跟随着具有15位数据长度的字段reserved_for_word_alignment和具有1位的数据长度的标记capture_enable_flag_PlayList。字段reserved_for_word_alignment以及具有1位的数据长度的标记capture_enable_flag_PlayList在块PlayList()中以16位排列数据。
标记capture_enable_flag_PlayList是表示属于含有标记capture_enable_flag_PlayList的块PlayList()的移动图像是否允许被二次使用的标记。当标记capture_enable_flag_PlayList的值是例如“1”时,它表示属于PlayList()的移动图像允许在播放器中被二次使用。
在前述的例子中,标记cpature_enable_flag_PlayList具有1位的数据长度。替代地,标记capture_enable_flag_PlayList具有多个位的数据长度,其描述多个二次使用允许级。例如,标记capture_enable_flag_PlayList具有2位的数据长度。在这种情况下,当标记值为“0”时,优选地可以不禁止二次使用移动图像。当标记的值是“1”时,允许移动图像在以下的情况中被二次使用,其中移动图像是以预定分辨率或者低于如64像素×64行的分辨率压缩编码形成的。当标记的值是“2”时,优选地可允许没有任何限制地二次使用移动图像。可替代地,当标记的位0的值是“0”时,可允许移动图像在内容再现应用中被二次使用。当标记的位1的值是“1”时,可允许移动图像在电影播放器中的另一个应用(例如,墙纸图像或者屏幕保护程序)中被二次使用。在这种情况下,标记的位0和位1值可以被结合使用。
字段PlayList_name_length具有8位的数据长度并且表示指定给块PlayList()的名称长度。字段PlayList_name_string具有255位的数据长度并且表示指定给块PlayList()的名称。在字段PlayList_name_string中,从头开始的由字段PlayList_name_string表示的字节长度的区域被用作有效名称。
字段number_of_PlayItems具有16位的数据长度并且表示随后的PlayItem()块数。字段number_of_PlayItem之后是for循环。For循环描述对应于字段number_of_PlayItems的块PlayItem()。块PlayItem()是播放项本身。
给块PlayList的块PlayItem()指定标识信息(ID)。例如,在块PlayList()的开始处所描述的块PlayItem()被指定为例如0。以出现的顺序将连续的号如1,2等指定给块PlayItem()。连续号初用作块PlayItem()的标识信息。对于块PlayItem()重复的for循环中的变元i能被用作块PlayItem()的标识信息。块PlayItem()之后是块PlayListMark()。
下面,参照图20,将描述块PlayItem()的内部结构的例子。块PlayItem()以字段length开始。字段length具有16位的数据长度并表示块PlayItem()的长度。字段length后面是字段Clip_Information_file_name_length。字段Clip_Information_file_name_length具有16位数据长度并且表示对应于块PlayItem()的剪辑信息文件的名称长度。字段Clip_Information_file_name具有以字节表示的可变数据长度并且表示对应于块PlayItem()的剪辑信息文件的名称。在字段Clip_Information_file_name中,从头开始的由由字段Clip_Information_file_name表示的字节长度的区域用作有效名称。当由字段Clip_Information_fil_ename指定剪辑信息文件时,根据文件名的上述关系可识别相应于剪辑信息文件的剪辑AV流文件。
字段IN_time以及字段OUT_time每个具有33位的数据长度。字段IN_time以及字段OUT_time是指定剪辑AV流文件的再现开始部分以及再现结束部分的时间信息,该剪辑AV流文件相应于由块PlayItem()中的字段Clip_Information_ille_name指定的剪辑信息文件。利用字段IN_time和字段OUT_time的信息,能指定除剪辑AV流文件的开头之外的再现开始位置。同样,利用字段IN_time和字段OUT_time的信息,能指定除剪辑AV流文件的末尾之外的再现结束位置。字段reserved_for_word_alignment是使数据结构的数据长度变为16位的倍数的调整字段。字段reserved_for_word_alignment具有15位的数据长度。
下面,将参照图21来描述块PlayListMark()的内部结构的例子。块PlayListMark()以字段length开始。字段length具有32位的数据长度并且表示块PlayListMark()的长度。字段length之后是字段number_of_PlayList_marks。字段number_of_PlayList_marks具有16位的数据长度并且表示Mark()的块数。字段number_of_PlayList_marks之后是for循环。该for循环描述对应于字段number_of_PlayList_marks的块Mark()。
下面,将描述块Mark()的内部结构的例子。块Mark()以字段mark_type开始。字段mark_type具有8位的数据长度并且表示包括字段mark_type的块Mark()的类型。根据本发明的这个实施例,如图22所示,定义两种类型的标志,章节标志和事件标志。章节是划分播放列表(块PlayList())的搜索单元。章节标志利用时间信息表示章节位置。事件标志是使事件发生的标志。
字段mark_name_length具有8位的数据长度并且表示指定给块Mark()的名称的长度。在块Mark()最后一行的字段mark_name_string表示指定给块Mark()的名称。在字段mark_name_string中,从头开始的由字段mark_name_length表示的字节长度的区域被用作有效名称。
字段ref_to_PlayItem_id、字段mark_time_stamp、字段entry_ES_stream_id以及字段entry_ES_private_stream_id这四个元素通过剪辑AV流文件与定义在块PlayList()中的块Mark()相互关联。换句话说,字段ref_to_PlayItem_id具有16位的数据长度并且表示块PlayItem( )的标识信息。因此,字段ref_to_PlayItem_id标识剪辑信息文件和剪辑AV流文件。
字段mark_time_stamp具有33位的数据长度并且在剪辑AV流文件中指定一个标志的时间。下面,参照图23,字段mark_time_stamp将被简要描述。在图23中由数字0、1和2指定的三个播放项(PlayItem(#0)、PlayItem(#1)、PlayItem(#2))组成播放列表。假定播放列表的时间t0被包括在播放项1(PlayItem(#1))中。另外,假定播放项0、1和2分别通过剪辑信息文件对应于剪辑AV流文件的节目流A、B和C。
在这种情况下,当把标志指定给播放列表的时间t0时,字段ref_to_PlayItem_id的值是“1”,其表示播放项包括时刻t0。另外,与相应的剪辑AV流文件中的时刻t0相对应的时间被描述在字段mark_time_stamp中。返回图21的描述,字段mark_time_stamp之后是字段entry_ES_stream_id以及字段entry_ES_private_stream_id。字段entry_ES_stream_id以及字段entry_ES_private_stream_id每个具有8位的数据长度。当块Mark()与预定基本流相互关联时,字段entry_ES_stream_id和字段entry_ES_private_stream_id识别该基本流。字段entry_ES_stream_id和字段entry_ES_priva_stream_id分别表示其中的基本流被多路复用的包(packet())的流ID(stream_id)和专用包首部(private_packet_header())的专用流ID(private_stream_id)。
包(packet())的流ID(stream_id)和专用包首部(private_packet_header())的专用流ID(private_stream_id)是基于例如MPEG2系统的节目流上的规定的。
当剪辑AV流#0的章节结构不同于剪辑AV流#1的章节结构时,使用字段entry_ES_stream_id和字段entry_ES_private_stream_id。当块Mark()与预定基本流不相关时,这两个字段的值是“0”。
下面,参照图24到图28,将描述剪辑信息文件的内部结构。如上所述,剪辑信息文件“XXXXX.CLP”描述放置在目录“STREAM”下的相应剪辑AV流文件“XXXXX.PS”的特征等。
图24示出了表示剪辑AV流文件“XXXXX.CLP”的总体结构的语法的例子。剪辑AV流文件“XXXXX.CLP”以字段presentation_start_time和字段presentation_end_time开始。字段presentation_start_time和字段presentation_end_time中的每个具有33位的数据长度并且表示相应的剪辑AV流文件的开始和结束的时间。作为时间信息,可以使用MPEG2系统的放映时间戳(PTS)。PTS具有90kHz的精度。
字段presentation_start_time和字段presentation_end_time之后是具有7位的数据长度的字段reserved_for_word_alignment和具有1位的数据长度的标记capture_enable_flag_Clip。字段reserved_for_word_alignment和具有1位的数据长度的标记capture_enable_flag_Clip在文件“XXXXX.CLP”中以16位排列数据。标记capture_enable_flag_Clip是表示包含在相应于文件“XXXXX.CLP”的剪辑AV流文件中的移动图像是否允许被二次使用的标记。例如,当标记capture_enable_flag_Clip的值是例如“1”时,表示相应于文件“XXXXX.CLP”的剪辑AV流文件的移动图像允许在视频播放器中被二次使用。
字段number_of_streams具有8位的数据长度并且表示随后的StreamInfo()块数。字段number_of_streams之后是for循环。该for循环描述相应于字段number_of_streams的块StreamInfo()。该for循环之后是块EP_map()。
下面,将描述块StreamInfo()的内部结构的例子。块StreamInfo()以字段length开始。字段length具有16位的数据长度并且表示块StreamInfo()的长度。字段length之后是每个具有8位的数据长度的字段stream_id和字段private_stream。如图25所示,块StreamInfo()与基本流相互关联。在图25所示的例子中,当块StreamInfo()的字段stream_id的值是在从“0xE0”到“oxEF”的范围内时,块StreamInfo()是与视频流相互关联的。当块StreamInfo()的字段stream_id的值是“0xBD”时,块StreamInfo()是与自适应变换声音编码(ATRAC)音频流、线性脉冲码调制(LPCM)音频流,或者字幕流相互关联的。当块StreamInfo()的字段private_stream_id的值是在从“0x00”到“0x0F”、从“0x10”到“0x1F”和从“0x80”到“0x9F”的范围内时,块StreamInfo()分别是与ATRAC音频流、LPCM音频流以及字幕流相互关联的。
在图25中,“0x”表示十六进制符号。这个符号应用在下面描述中。
块StreamInfo()主要描述两种类型的信息,第一种类型在流中没有变化,第二种类型在流中变化。在流中没有变化的信息被描述在块StaticInfo()中,而在流中变化的信息被以时间信息指定的改变点在块DynamicInfo()中描述。
块StaticInfo()以具有8位的数据长度的字段reserved_for_word_alignment开始。字段reserved_for_word_alignment在块StreamInfo()中以1个字节排列数据。字段reserved_for_word_alignment之后是字段number_of_DynamicInfo。字段number_of_DynamicInfo具有8位的数据长度并且表示随后的DynamicInfo()的块数。字段number_of_DynamciInfo之后是for循环。该For循环描述相应于字段number_of_DynamicInfo而重复的字段pts_change_point和块DynamicInfo()。
字段pts_change_point具有33位的数据长度并且表示在该时间利用PTS使块DynamicInfo()的信息变成有效的时间。每个流开始的时间由字段pts_change_point表示并且等于被定义在文件“XXXXX.CLP”中的字段presentation_start_time。
下面,将参照图26来描述块StaticInfo()的内部结构的例子。块StaticInfo()的内容取决于相应的基本流的类型。相应的基本流的类型能被如图25所示的字段stream_id和字段private_stream_id的值识别。图26使用if语句示出了其内容根据基本流的类型而改变的块StaticInfo(),该基本流是视频流、音频流或者字幕流。下面,将根据基本流的类型来描述块StaticInfo()。图26使用if语句示出了块StaticInfo(),其表示基本流的类型是视频流,音频流,或者是字幕流。下面,将根据基本流的类型来描述块StaticInfo()。
当基本流是视频流时,块StaticInfo()是由具有4位数据长度的字段picture_size,具有4位数据长度的字段frame_rate,以及1位数据长度的标记cc_flag组成的。字段picture_size和字段frame_rate表示视频流的图像大小以及帧频率。标记cc_flag表示视频流是否包含一个闭合字幕。当标记cc_flag的值是例如“1”时,该视频流包含一个闭合字幕(closed_caption)。字段reserved_for_word_alignment以16位排列数据。
当基本流是音频流时,块StaticInfo()是由具有16位数据长度的字段audio_language_code,具有8位数据长度的字段channel_configuration,具有1位数据长度的标记lfe_existance,以及具有4位数据长度的字段sampling_frequeny组成的。字段audio_language_code表示包含在音频流中的语言码。字段channel_configuration表示如单声道、立体声、多通道等的音频数据通道属性。字段lfe_existance表示音频流是否包含低频重音通道。当字段lfe_existance的值是例如“1”时,音频流包含低频重音通道。字段sampling_frequency表示音频数据的采样频率。字段reserved_for_word_alignment以16位排列数据。
当基本流是字幕流时,块StaticInfo()是由具有16位的数据长度的字段subtitle_language_code和具有1位数据长度的标记configurable_flag组成的。字段subtitle_language_code表示包含在字幕流中的语言码。标记configurable_flag表示是否允许改变所显示的字幕流的字符的大小和位置。当标记configurable_flag的值是例如“1”时,表示所显示的字幕流的字符的大小和位置允许被改变。字段reserved_for_word_alignment以16位排列数据。
下面,将参照图27来描述块DynamicInfo()的内部结构的例子。块DynamicInfo()以具有8位数据长度的字段reserved_for_word_alignment开始。位于字段reserved_for_word_alignment之后的元素取块于基本流的类型。基本流的类型能够通过参照图25描述的字段stream_id和字段private_stream_id的值来识别。图27使用一个if语句示出了其内容根据基本流的类型而改变的块DynamicInfo(),该基本流是视频流、音频流或者字幕流。下面,将根据基本流的类型描述块DynamicInfo()。
当基本流是一个视频流时,块DynamicInfo()是由具有4位数据长度的字段display_aspect_ratio组成的。字段display_aspect_ratio表示视频数据的显示输出的宽高比是16∶9还是4∶3。字段reserved_for_word_alignment以16位排列数据。
当基本流是一个音频流时,块DynamicInfo()是由具有4位数据长度的字段channel_assignment组成的。当音频流是由双通道组成的时,字段channel_assignment表示输出是立体声还是双单声道。双单声道是用于再现例如双语音频数据的。字段reserved_for_word_alignment以16位排列数据。
当基本流是字幕流时,块DynamicInfo()是由字段reserved_for_word_alignment组成的。字段reserved_for_word_alignment以16位排列数据。换句话说,关于字幕流,块DynamicInfo()没有定义动态改变的属性。
下面,将参照图28来描述块EP_map()的内部结构的例子。块EP_map()利用时间信息和位置信息来表示每个基本流的位流的有效解码起始位置,(被称为入口点或者随机存取点(RAP))。位置信息可以是对在其上记录有基本流的记录介质的最小存取单元。能从由块EP_map()表示的位置开始解码每个基本流。
由于一个固定速率流的有效解码起始位置能被计算出来,所以不需要如块EP_map()的信息。另一方面,对于可变速率流和其数据大小在每个存取单元中改变的流,如根据MPEG视频压缩编码系统的流,块EP_map()是随机存取数据必需的重要信息。
块EP_map()以具有8位数据长度的字段reserved_for_word_alignment开始。字段reserved_for_word_alignment以16位排列数据。字段reservedf_or_word_alignment之后是字段number_of_stream_id_entries。字段number_of_stream_id_entries具有8位的数据长度并且表示在块EP_map()中描述的基本流数。第一个for循环描述相应于字段number_of_stream_id_entries而重复的字段stream_id、字段private_stream_id以及字段number_of_EP_entries。在第一个for循环中的第二个for循环描述相应于字段number_of_EP_entries而重复的字段PTS_EP_start和字段RPN_EP_start。
第一个for循环描述每个具有8位数据长度的字段stream_id和字段private_stream_id并且识别如图25所示的基本流的类型。字段stream_id和字段private_stream_id之后是字段number_of_EP_entries。字段number_of_EP_entries具有32位的数据长度并且表示在基本流中描述的入口点数。第二个for循环描述相应于字段number_of_EP_entries而重复的字段PTS_EP_start和RPN_EP_start。
字段PTS_EP_start和字段RPN_EP_start每个具有33位的数据长度并表示入口点本身。字段PTS_EP_start利用PTS表示剪辑AV流文件中的入口点的时间。另一方面,字段RPN_EP_start表示在2048字节单元中的剪辑AV流文件中的入口点位置。
根据本发明的这个实施例,作为盘存取单元的一个扇区是2048字节。因此,字段RPN_EP_start表示扇区中的剪辑AV流文件的入口点位置。
在包private_stream_2之后即刻就是视频流的有效再现起始位置。包private_stream_2是包含能被用于解码视频流的信息的包。因此,视频流的入口点位置是包含包private_stream_2的包pack()的位置。
块EP_map与剪辑AV流的时间和剪辑AV流文件的位置相关。因此,利用剪辑AV流的存取点的时间信息(时间戳),能容易地搜索剪辑AV流文件以找到读出数据的数据地址。结果,盘能被随机地平稳读取。
根据本发明的这个实施例,在块EP_map()中,对每个基本流的时间信息和位置信息的设置(在第二个for循环中对字段PTS_EP_start和字段RPN_EP_start进行设置)被以升序(降序)预先登记。换句话说,已经按预定方向重新排列了时间信息和位置信息。因此,能够对数据执行二进位的搜索。
根据本发明的这个实施例,如上所述,视频数据的基本流是根据MPEG2-Video标准的基本流。然而本发明的这个实施例不局限于这个例子。例如,视频数据的基本流可以是按照MPEG4-Visual标准或者MPEG4-AVC标准的基本流。同样地,根据本发明的这个实施例,如上所述,音频数据的基本流是根据ATRAC音频流的基本流。然而,本发明的这个实施例不限于这样的一个例子。代替地,音频数据的基本流可以是根据如MPEG1/2/4的音频系统的基本流。
7.盘再现装置下面,将描述根据本发明一个实施例的盘再现装置。图29示出了根据本发明一个实施例的盘再现装置100的结构的一个例子。连接到总线111的是中央处理单元(CPU)112、存储器113、驱动接口114、输入接口115、视频解码器116、音频解码器117、视频输出接口118、和音频输出接口119。盘再现装置100的每一个部分能够通过总线111与其它部分交换视频流、音频流、各种指令、数据等。
此外,盘驱动器102连接到驱动器接口114。盘驱动器102通过驱动器接口114与总线111交换数据和指令。
CPU 112具有只读存储器(ROM)和随机访问存储器(RAM)(未示出)。CPU 112根据预先存储在ROM中的程序和数据通过总线111与盘再现装置100的每一个部分交换数据和指令,并且控制整个盘再现装置100。所述RAM用作CPU 112的工作存储器。
尽管在图29中进行了省略,盘再现装置100也可以具有非易失性存储器,如能够重写数据并且在盘再现装置100的电源被关掉后能够保持数据的闪速存储器。所述非易失性存储器连接到例如总线111,使得CPU 112将数据写到非易失性存储器上并且从非易失性存储器读取数据。
供给到输入接口115的是从输入装置输入的输入信号,使用所述输入装置用户能够执行输入操作。输入装置例如是遥控指令器,利用该遥控指令器,用户通过使用例如红外信号和布置在盘再现装置100上的键遥控地操作盘再现装置100。输入接口115将从输入装置提供的输入信号转换成用于CPU 112的控制信号并且输出该控制信号。
以图18到图28所示的格式记录在盘101上的是播放列表、脚本程序、剪辑信息文件、剪辑AV流文件等。当将盘101装入盘驱动器102时,盘驱动器100自动或者根据用户的输入操作从盘101再现它们。从盘101读出的脚本文件、播放列表文件和剪辑信息文件被提供给CPU 112并且存储在例如CPU 112的RAM中。CPU 112根据存储在RAM中的数据和脚本程序从盘101读取剪辑AV流文件。
从盘101读出的剪辑AV流文件暂时存储在存储器113中。视频解码器116根据从CPU 112接收到的指令对存储在存储器113中的剪辑AV流文件的视频流和字幕流进行解码。CPU 112执行图像处理,如对解码后的视频数据和字幕数据的放大处理或者缩小处理,对视频流和字幕流的合成处理或者相加处理等图像处理,并且CPU 112获得一个视频数据流。图像处理可以由视频解码器116和视频输出接口118执行。视频数据在存储器113中被缓冲并且被提供给视频输出接口118。视频输出接口118将所提供的视频数据转换成模拟视频信号并且将模拟视频信号提供给视频输出终端120。
同样地,音频解码器117根据从CPU 112接收到的指令解码存储在存储器113中的剪辑AV流文件的音频流。解码的音频数据在存储器113中被缓冲并且被提供给音频输出接口119。音频输出接口119将所提供的音频数据转换成例如模拟音频信号并且将模拟音频信号提供给音频输出终端121。
在该例子中,图29中示出的每一部分由独立的硬件构成。然而,本发明的这个实施例不局限于这个例子。换句话说,所述视频解码器116和/或音频解码器117可以由在CPU 112上运行的软件构成。
盘再现装置100具有CPU 112和存储器并且根据程序工作。因此,可以认为盘再现装置100是一种计算机装置。
图30是详细描述图29中示出的盘再现装置100的操作的功能框图。盘再现装置100主要由操作系统201和视频内容现现部分210组成。视频内容再现部分210基本上是在操作系统201上运行的软件程序。代替性地,视频内容再现部分210可以由整体运行的软件和硬件组成。在下面的描述中,假定视频内容再现部分210由软件构成。在图30中,省略了盘驱动器102。
当盘再现装置100的电源接通时,操作系统201最先启动CPU 112并执行必要的处理,如每一部分的初始化设置,并且从ROM读取应用程序(在这个例子中,该程序是视频内容再现部分210)。当视频内容再现部分210正在运行时,操作系统201将诸如从盘101读取文件和对文件系统进行解释的基本服务提供给视频内容再现部分210。例如,相应于从视频内容再现部分210提供的读文件请求,操作系统201通过驱动接口114控制盘驱动器102,并且从盘101读出数据。从盘101读取的数据在操作系统201的控制下供给到视频内容再现部分210。
操作系统201具有实际上并行地分时控制多个软件模块的多任务处理功能。换句话说,组成如图30所示的视频内容再现部分210的每一个模块能够由操作系统201的多任务处理功能并行地操作。
下面将更具体地描述视频内容再现部分210的操作。视频内容再现部分210具有其它几个内部模块并且实现下面的功能。
(1)视频内容再现部分210确定所装入的盘101是不是一个根据UMD视频标准的盘(下文这个盘被称作UMD视频盘)。
(2)当所确定的结果表示所装入的盘101是UMD视频盘时,视频内容再现部分210从盘101读取源文件并且将脚本文件供给到脚本控制模块211。
(3)当所确定的结果表示所装入的盘101是UMD视频盘时,视频内容再现部分210还读取构成数据库的文件(即播放列表文件、剪辑信息文件等)并且将所述文件提供给播放器控制模块212。
下面将描述视频内容再现部分210的模块的操作。
脚本控制模块211将接收到的源文件存储到例如CPU 112的RAM(未示出)的预定区域。CPU 112(脚本控制模块211)从RAM读取源文件、解释源文件并且执行它。可替代地,可以将源文件存储在存储器113的预定区中,并且当需要时将源文件写到CPU 112的RAM(未示出)中。
如在播放器模型中描述的,产生和输出菜单屏的图像、相应于用户的输入移动光标以及改变菜单屏的GUI是由根据脚本程序而进行控制的图形处理模块219实现的。这里,利用被包含在存储于存储器113的源文件的图像数据和声音数据,产生了菜单屏等。通过执行脚本程序,脚本控制模块211能够控制播放器控制模块212。
播放器控制模块212参考包含在从盘101中读出的文件,诸如播放列表文件“PLAYLIST.DAT”和剪辑信息文件“XXXXX.CLP”的数据库信息,并且执行下面的控制以从盘101再现视频内容。
(1)播放器控制模块212分析如播放列表和剪辑信息的数据库信息。
(2)播放器控制模块212控制内容数据供应模块213、解码控制模块214和缓冲控制模块215。
(3)播放器控制模块212执行如播放状态、停止状态和暂停状态的播放器状态改变控制,以及根据从脚本控制模块211或者输入接口115接收到的指令执行如流改变的再现控制处理。
(4)播放器控制模块212获得正从解码控制模块214再现的视频流的时间信息,显示时间并且产生标志事件。
内容数据供应模块213根据从播放器控制模块212接收到的指令从盘101读取如剪辑AV流文件的内容数据并且将内容数据提供给缓冲控制模块215。缓冲控制模块215将内容数据作为缓冲器的内容(substance)21SA存储在存储器113中。内容数据供应模块213控制缓冲控制模块215以根据来自它的请求将存储在存储器113中的内容数据提供给视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218。此外,内容数据供应模块213从盘101读取内容数据,使得在缓冲控制模块215的控制下所存储的内容数据达到预定的数量。
解码控制模块214根据从播放器控制模块212接收到的指令控制视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218的运行。解码控制模块214具有内部时钟功能并且控制视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218的操作,使得视频数据和音频数据同步输出。
缓冲控制模块215专门使用存储器113的一部分作为缓冲器的内容215A。缓冲控制模块215存储数据开始指针和数据写指针。缓冲控制模块215也具有作为内部模块的视频读取功能、音频读取功能和字幕读取功能。视频读取功能具有视频读取指针。所述视频读取功能具有将信息au_information()存储为存取单元信息的寄存器。音频读取功能具有音频读取指针。字幕读取功能具有字幕读取指针和字幕读取功能标记。字幕读取功能标记根据它的值控制字幕读取功能的允许/禁止。当例如“1”被写到字幕读取功能标记上时,允许字幕读取功能。当例如“0”被写到字幕读取功能标记上时,禁止字幕读取功能。
作为缓冲控制模块215的内部模块的视频读取功能、音频读取功能和字幕读取功能具有解复用器功能,其对被复用的剪辑AV流进行解复用,所述剪辑AV流中的视频流、音频流和字幕流已经被多路复用;并且其获得视频流、音频流和字幕流。根据本发明的这个实施例,剪辑AV流由多个基本流组成,所述基本流根据MPEG2系统节目流格式被分时多路复用。因此,视频读取功能、音频读取功能和字幕读取功能具有用于MPEG2系统节目流的解复用器功能。
因此,视频读取功能读取放置在视频流的预定位置的字段stream_id(参见图25)的值并且保存该值。同样地,音频读取功能和字幕读取功能读取字段stream_id和字段private_stream_id(参见图25)的值并且保存所述值。使用字段stream_id和字段private_stream_id的值对所提供的比特流进行分析。
视频解码器控制模块216使得缓冲控制模块215的视频读取功能从存储器113读取视频流的一个视频存取单元并且将该视频存取单元提供给视频解码器116。视频解码器控制模块216控制视频解码器116对以存取单元提供给视频解码器116的视频流进行解码,并且产生视频数据。将所述视频数据提供给图形处理模块219。
同样地,音频解码器控制模块217使缓冲控制模块215的音频读取功能从存储器113读取音频流的一个音频存取单元并且将该音频流单元提供给音频解码器117。根据本发明的这个实施例,组成音频流的存取单元(音频帧)具有预定的固定长度。音频解码器控制模块217控制音频解码器117对以存取单元提供给的音频解码器117的音频流进行解码,并且产生音频数据。将所述音频数据提供给音频输出模块242。
字幕解码器控制模块218使缓冲控制模块215的字幕读取功能从存储器113读取字幕流的一个字幕存取单元,并且将该字幕存取单元提供给字幕解码器控制模块218。根据本发明的这个实施例,组成字幕流的字幕存取单元在开头包含长度信息。字幕解码器控制模块218具有能够解码所提供的字幕流并且产生字幕图像数据的字幕解码功能。将字幕图像数据提供给图形处理模块219。
如上所述,在视频解码器控制模块216的控制下由视频解码器116解码出的视频数据和由字幕解码器控制模块218解码出的字幕图像数据被提供给图形处理模块219。图形处理模块219以预定方式给所提供的视频数据增加字幕图像数据,并且产生被输出的视频信号。图形处理模块219根据从脚本控制模块211和播放器控制模块212接收到的指令产生菜单图像和消息图像,并且利用所输出的视频信号将它们覆盖起来。
例如,图形处理模块219对于提供的字幕图像数据执行放大处理和缩小处理,并且根据从脚本控制模块211接收到的指令以预定的方式将处理过的图像数据加到视频数据上。
此外,图形处理模块219根据预定的视频输出装置的宽高比和在从盘101再现的内容中标明的输出宽高比对输出信号的宽高比进行转换。当视频输出装置的宽高比是16∶9并且输出宽高比也是16∶9时,图形处理模块219直接输出视频数据。当视频输出装置的宽高比是16∶9而输出宽高比是4∶3时,图形处理模块219执行将图像的高度与视频输出装置的屏幕的高度相匹配的挤压(缩小)处理,将黑色部分插入图像的左边和右边,并且输出合成的图像。当视频输出装置的宽高比是4∶3并且输出宽高比为是4∶3时,图形处理模块219直接输出视频数据。当视频输出装置的宽高比是4∶3而输出宽高比是16∶9时,图形处理模块219执行将图像的宽度与视频输出装置的屏幕的宽度相匹配的挤压处理,将黑色部分插入图像的上部和下部区域,并且输出合成的图像。
图形处理模块219根据来自播放器控制模块212的请求还执行捕捉正在被处理的视频信号的处理并且将所请求的视频信号提供给播放器控制模块212。
视频输出模块241专门使用存储器113的一部分作为先进先出(FIFO)缓冲器。视频输出模块241暂时在缓冲器中存储由图形处理模块219处理的视频数据并且以预定的定时从那里读取视频数据。从缓冲器读取的视频数据被从视频输出接口118输出。
音频输出模块242专门使用存储器113的一部分作为FIFO缓冲器。音频输出模块242存储从音频输出接口119输出到缓冲器的音频数据并且以预定的定时从那里读取音频数据。从缓冲器读取的音频数据被从音频输出接口119输出。
当内容的音频模式是双单声道时(例如,两种语言),音频输出模块242根据预定音频输出模式输出音频数据。当音频输出模式是“主音频”时,音频输出模块242复制例如存储器113中的左通道音频数据并且输出左通道的音频数据和存储器113的音频数据。因此,音频输出模块242输出仅左通道的音频数据。当音频输出模式是“子音频”时,音频输出模块242复制例如存储器113中的右通道的音频数据并且输出右通道的音频数据和存储器113的音频数据。因此,音频输出模块242输出仅右通道的音频数据。当音频输出模式是“主和子音频”或者内容是立体声时,音频输出模块242直接地输出音频数据。
用户能够交互式地在例如视频内容再现部分210产生的菜单屏上设置音频输出模式。
非易失性存储器控制模块250将数据写到一个区域并且根据从播放器控制模块212接收到的指令从该区域读取数据,其中在该区域中的数据在视频内容再现部分210的操作完成后不被擦除(该区域被称作非易失性区域)。非易失性存储器控制模块250具有存储多组带有标题识别ID(Title_ID)的键钥的数据Saved_Player_Status和数据Saved_Player_Data的功能。非易失性存储器控制模块250将播放器控制模块212所具有的数据Backup_Player_Starus存储为数据Saved_Player_Status。数据Backup_Player_Status对应于例如播放器控制模块212的操作完成之前现存的播放器状态323B的数据。数据Saved_Player_Status对应于恢复信息324。此外,非易失性存储器控制模块250将播放器控制模块212具有的数据User_Data存储为数据Saved_User_Data。数据User_Data是用户对于播放器控制模块212设置的预定数据。
非易失性存储器控制模块250相关地将一组带有盘101的标题ID的数据Saved_Player_Status和数据Saved_User_Data存储在盘再现装置100的闪速存储器的预定区域中。在其中非易失性存储器控制模块250存储数据的存储介质不局限于闪速存储器,也可以是硬盘等。
8、电影播放器的状态改变模式8-1.对电影播放器的状态的定义下面将详细描述根据本发明的一个实施例的电影播放器300的状态改变模式。根据本发明的这个实施例,仅仅定义了电影播放器300的内部状态。换句话说,根据本发明的这个实施例,电影播放器300的状态是基于它的操作和功能而定义的。
更具体而言,关于电影播放器300的操作,从对播放列表进行再现的观点而言,定义了它的两种状态,即电影播放器300处于播放状态或者处于停止状态。此外,关于电影播放器300的功能,定义了电影播放器300是否从本地执行平台301接收控制指令的两种状态。
图31概念性地示出了根据本发明的这个实施例对电影播放器300的状态的定义。首先,根据电影播放器300的操作将描述它的状态。参考图3,从对播放列表进行再现的观点来看,电影播放器300处于播放状态或者停止状态。在播放状态中,电影播放器300已经选取了播放列表并且正在再现所选取的播放列表。在停止状态中,电影播放器300不再现播放列表。在停止状态中,电影播放器300还没有选取播放列表。换句话说,可以说电影播放器300的重放模块321正在解码剪辑AV流的状态是播放状态而重放模块321不是正在解码剪辑AV流的状态是停止状态。
播放状态被细分为几个状态。换句话说,播放状态被细分成正向标准速度的标准再现、不是标准速度的可变速正向和反向再现以及暂停。分步正向的再现和分步反向再现是通过交替地执行标准再现和暂停来实现的。电影播放器300正在再现播放列表的状态与电影播放器300处于播放状态含义相同。
下面,对于电影播放器300的功能描述它们的状态。对于电影播放器300的功能,它具有电影播放器300从本地执行平台301接收控制指令311的模式(这个模式被称作标准模式)和电影播放器300忽略控制指令311的模式(这个模式被称作菜单模式)。电影播放器300的两个操作模式被定义为它的状态。
在标准模式下,电影播放器300的操作能够由用户输入310而不通过脚本层302中的脚本程序来控制。
另一方面,在菜单模式下,电影播放器300并不接收控制指令311。电影播放器300仅仅接收来自脚本层302的方法313。因此,电影播放器300的操作能够由脚本层302中的脚本程序控制。例如,将用户输入310作为来自本地执行平台301的事件314而提供给脚本层302。脚本层302中的脚本程序以对应于键事件314的方法313控制电影播放器300的操作。
换句话说,使用菜单模式,内容创建者一方能够控制电影播放器300的操作。此外,使用菜单模式,采用较少种类的键能够实现各种控制。
因此,电影播放器300关于操作具有两种状态,这两种状态是播放状态和停止状态。此外,电影播放器300关于功能具有两种模式,这两种模式是标准模式和菜单模式。因此,在电影播放器300中,定义了作为两种操作状态和两种功能状态的结合的四种状态。换句话说,在电影播放器300产生之后直到它被消除,电影播放器300处于这四个状态中的一个状态。电影播放器300的产生和消除将在后面进行描述。
在该模型中,当使电影播放器300改变现有状态为另一个状态的方法313被发出时,电影播放器300根据方法313快速地将现有状态改变为另一个状态。在实际设备中,在将方法313发送给电影播放器300之后直到电影播放器300根据方法313已经改变现有状态为另一个状态的时间取决于所述装置的执行情况。
当使处于特殊状态的电影播放器300改变现有状态为相同状态的方法313被发出时,电影播放器300的状态没有改变。例如,当电影播放器300处于标准模式并处于停止状态时,即使使电影播放器300改变现有模式和状态为标准模式和停止状态的方法313被发出,电影播放器300的现有模式和状态也不改变。
暂停状态包含在播放状态中。为了将电影播放器300的停止状态改变为暂停状态,使用具有标识暂停的变元值pauseMode的方法play()。
下面将描述作为电影播放器300的两种状态和两种操作模式的结合的四种状态和四种状态的状态改变。在下面的描述中,电影播放器300的功能模式的标准模式和菜单模式分别叫做“标准”和“菜单”。另一方面,电影播放器300的操作状态的播放状态和停止状态叫做“播放”和“停止”。电影播放器300的模式和状态的结合方便地由State{mode,state}表示。在下面的描述中,电影播放器300的状态和模式的改变叫做状态改变。
如从图31清晰所示,电影播放器300具有包括从现有状态到相同状态的状态改变的全部16种状态改变,即4×4=16种状态改变。这些状态改变由从脚本层302提供到电影播放器300的方法313执行。换句话说,电影播放器300的状态改变在电影播放器300的外部执行。换句话说,在没有从脚本层302提供的方法的情况下状态改变不会自动在电影播放器300中执行。此外,状态改变不依照从本地执行平台301提供的控制指令在电影播放器300中执行。
根据本发明的这个实施例,因为方法313的变元的结合受到限定,不可能执行本来以所述方法在电影播放器300中是可行的所有16种状态改变。
下面将一个接一个地描述在电影播放器300中是可行的四种状态,所述四种状态是State{Menu,Stop},State{Normal,Stop},State{Menu,Play}和State{Normal,Play}。
(1)State{Menu,Stop}电影播放器300当前没有再现播放列表(处于停止状态)并且当前没有从本地执行平台301接收控制指令311。这个状态用于在其上没有在后台再现移动图像的菜单屏等。
为了允许脚本程序安全地控制刚刚已经产生的电影播放器300,电影播放器300不接收来自本地执行平台301的控制指令311是有效的。因此,在电影播放器300产生之后立即处于State{Menu,Stop}。
(2)State{Normal,Stop}电影播放器300当前没有再现播放列表(处于停止状态)并且正在从本地执行平台301接收控制指令311。这个状态用于当电影播放器300不是正在再现例如移动图像时。因为在这个状态下电影播放器300接收控制指令311,优选的,在电影播放器300产生之后即刻不使用这个状态。
(3)State{Menu,Play}电影播放器300正在再现播放列表(处于播放状态)并且当前没有从本地执行平台301接收控制指令311。这个状态用于在其上在后台正在再现移动图像的菜单屏等。
(4)State{Normal,Play}电影播放器300正在再现播放列表(处于播放状态)并且正在从本地执行平台301接收控制指令311。这个状态用于电影播放器300正在再现视频内容的主体部时。
下面将简要描述产生电影播放器300的模型。例如,当盘再现装置100的电源被接通且操作系统201被CPU 112启动时,执行如对各个部分进行初始化设置的必要处理。此外,视频内容再现部分210从ROM中被调用。视频内容再现部分210由CPU 112来执行。结果,产生了电影播放器300。当盘再现装置100的电源被关断时,电影播放器300被消除。
电影播放器300被假定为一个隐含对象。因此,对于脚本程序来说没有必要清楚地产生电影播放器300。
如上所述,在产生了电影播放器300之后,电影播放器300即刻处于菜单模式和停止状态(State{Menu,Stop})。在产生了电影播放器300之后,电影播放器300所具有的以下属性即刻变得不确定。
Property audioFlagProperty audioNumber
Property chapterNumberProperty playListNumberProperty playSpeedProperty subtitleFlagProperty subtitleNumberProperty videoNumber当电影播放器300被初始化时,具有将再现恢复到先前停止位置的“恢复再现功能”的UMD视频播放器能设置存储在非易失性存储器中的值来代替其属性的默认值。例如,能使用恢复信息324。
8-2.使电影播放器改变状态的方法下面将描述使电影播放器300改变现有状态为另一个状态的方法313。图32示出了电影播放器300的关于现有状态{Mode,State}和由方法313改变的状态{Mode,State}的四个状态的组合。如从图32清楚看到的,如使电影播放器300改变现有状态为另一个状态的方法313一样,存在有方法stop()、方法play()和方法resume()。由方法resume()引起的电影播放器300的操作取决于是否存在恢复信息324。
下面将描述方法stop()。方法stop()使电影播放器300与现有模式无关地将现有状态改变为停止状态。方法stop()具有一个用于模式的变元。带有一个变元的方法stop()允许电影播放器300将现有的状态和模式改变为由变元指定的停止状态和模式。如将在后面描述的那样,当满足特定的条件而执行方法stop()时,对播放器状态323B进行备份并且将其保存为恢复信息324。
下面将描述方法play()。方法play()使电影播放器300将现有状态改变为播放状态。方法play()可以具有一个用于模式的变元。方法play()允许电影播放器300将现有的状态和模式改变为由变元指定的停止状态和模式。如将在后面描述的那样,当满足特定的条件而执行方法play()时,对播放器状态323B进行备份并且将其保存为恢复信息324。
下面将描述方法resume()。方法resume()是将恢复信息324恢复为播放器状态323B和恢复电影播放器300的再现的方法。换句话说,方法resume()使电影播放器300从以恢复信息324表示的位置处恢复再现。当无恢复信息324而执行方法resume()时,电影播放器300不改变。
方法resume()电影播放器300对恢复信息324进行恢复的条件如下所述。当执行方法resume()时,如果存在恢复信息324且现有状态不是State{Normal,Play},那么电影播放器300对恢复信息324进行恢复。换句话说,当执行方法resume()时,如果存在恢复信息324且现有状态是State{Menu,Stop}、State{Normal,Stop}和State{Menu,Stop}中的一种时,方法resume()使电影播放器300将现有状态改变为State{Normal,Stop}并且恢复该恢复信息324。
方法play()具有多个变元。为了简化,假定方法play()具有三种类型的变元,它们是变元pauseMode、变元menuMode和变元playListNumber。特别地,为方法play()定义了更多的变元。
变元pauseMode指定播放状态下的再现模式。变元pauseMode具有值“Normal”、值“pause”或值“-1”。值“Normal”指定标准正向再现。值“pause”指定暂停。值“-1”指定保持现有再现速度。因此,变元pauseMode指定执行方法play()后的电影播放器300的播放状态的详细情况。当指定值“pause”时,显示由一个变元指定的图像,并且电影播放器300被暂停。在此情况下,如果没有由变元指定图像,那么显示根据预定选择规则指定的图像并且电影播放器300被暂停。
变元menuMode指定电影播放器300的模式(标准模式或菜单模式)并且具有值“Normal”、值“Menu”和值“-1”之一。值“Normal”指定标准模式。值“Menu”指定菜单模式。值“-1”指定保持现有模式。
变元playListNumber指定要被再现的播放列表的号。变元playListNumber可以被忽略。在此情况下,不改变当前选定的播放列表。
下面,将参照图33A到图33E,描述当执行方法play()时电影播放器300的状态改变的例子。在图33A到图33E中,左侧表示电影播放器300的现有状态340A,而右侧表示在脚本程序发出方法313使电影播放器300改变现有状态340A后改变成的状态340B。在状态340A和340B下面所表示的是在这些状态下已经被指定的播放列表号(PL1和PL2)。
图33A示出了一个例子,在该情况下,将方法play(x1,Normal,PL2)发送到处于State{Normal,Stop}的电影播放器300。方法play(x1,Normal,PL2)使电影播放器300以标准模式和以标准速度再现播放列表号为“PL2”的播放列表。电影播放器300已经将State{Normal,Stop}改变为State{Normal,Play}。
图33B示出了一个例子,在该情况下,将方法play(x1,Normal,PL2)发送到处于State{Normal,Play}的电影播放器300,其中在再现播放列表号为“PL1”的播放列表期间电影播放器300处于暂停状态。方法play(x1,Normal,PL2)使电影播放器300将现有状态改变为电影播放器300开始以标准模式和以标准速度再现播放列表号为“PL2”的播放列表的状态。在此情况下,虽然电影播放器300的再现操作从暂停改变为标准的正向再现,但是在发出方法play(x1,Normal,PL2)之前和之后,状态仍然保持在State{Normal,Play}。因此,电影播放器300没有将现有状态改变为另一状态。
图33C示出了一个例子,在该情况下,将方法play(-1,-1,PL2)发送到处于State{Normal,Play}的电影播放器300,其中电影播放器300正在以标准速度正向再现播放列表号为“PL1”的播放列表。方法play(-1,-1,PL2)使电影播放器300将现有状态改变为电影播放器300以标准速度以标准模式再现播放列表号为“PL2”的播放列表的状态。在此情况下,虽然电影播放器300正在再现的播放列表被改变,但是状态仍然保持为State{Normal,Play}。因此,电影播放器300没有将现有状态改变为另一状态。
图33D示出了一个例子,在该情况下,将方法play(pause,-1,PL2)发送到处于State{Normal,Play}的电影播放器300,其中电影播放器300正在以标准速度以正向再现播放列表号为“PL1”的播放列表。方法play(pause,-1,PL2)使电影播放器300选择播放列表号为“PL2”的播放列表,并且在标准模式中播放列表号为“PL2”的播放列表的开始处暂停。在此情况下,虽然电影播放器300的再现操作从标准正向速度再现改变为暂停,但是该状态仍然保持在State{Normal,Play}内。因此,电影播放器300没有将现有状态改变为另一状态。
图33E示出了一个例子,在该情况下,将方法play(-1,Menu)发送到处于State{Normal,Play}的电影播放器300,其中在再现播放列表号为“PL1”的播放列表期间电影播放器300暂停。在方法play()中,变元playListNumber被省略。方法play(-1,Menu)使电影播放器300选择播放列表号为“PL1”的播放列表,并且在菜单模式中在播放列表号为“PL1”的播放列表的开始处暂停。电影播放器300已经将State{Normal,Play}改变为State{Menu,Stop }。
因此,电影播放器300从脚本程序接收方法play(),电影播放器300执行各种操作。在此点上,根据一个条件,电影播放器300将现有状态改变为另一状态。当内容创建者在脚本程序中以不同变元描述方法play()时,能使电影播放器300完成各种操作。
仅当电影播放器300执行从脚本程序接收到的方法play()时,电影播放器300开始再现所选播放列表号的播放列表。当开始再现一个播放列表时,处于停止状态的电影播放器300可以开始再现该播放列表,或正在再现该播放列表的电影播放器300可以停止对其的再现,选择一个新的播放列表,并且开始再现该新的播放列表。
当脚本程序将带有一个变元的方法play()发送到电影播放器300时,该变元的值被设置为播放器状态323B。当方法play()的一个变元被省略时,根据用于每介参数的规则的将缺省值或预定值设置为播放器状态323B。
不希望允许按内容创建者不想要的顺序来再现播放列表。因此,禁止对应于用户操作的控制指令311以防止引起以播放列表号再现播放列表。这是根据本发明这个实施例的电影播放器300的操作模型的多个特征中的一个。
如果为方法play()的变元值指定一个无效的播放列表和不存在的时间,那么执行方法play()将失败。这意味着脚本程序含有错误和违反标准。对这一点上的错误处理取决于电影播放器300的实现方式。
下面将对多个播放项的再现进行描述。一旦电影播放器300开始再现一个播放列表,电影播放器300就持续对其进行再现直到到达了其的末尾。从头到尾的对播放列表的再现不需要用户的操作和脚本程序的控制。如在图34中所示,电影播放器300对组成如在播放列表文件中“PLAYLIST.DAT”(参见附图19)中指定的播放列表的播放项进行再现。组成播放列表的播放项在没有事件处理程序控制的情况下被连续地再现。
电影播放器300在其再现一个播放项之后直到其再现下一个播放项的操作取决于其实现方式,而未被以一种格式来定义。例如,是继续显示播放项的最后一个图像还是显示一个黑色图像取决于电影播放器300的实现方式。然而,当执行一个在其中例如将一个播放项的IN点设置为一个随机存取点(入口点,参见图28)的创作处理时,两个播放项的间隔时间可以被尽可能地降低。
8-3.再现播放列表期间电影播放器的操作下面,将描述在再现播放列表期间电影播放器300的操作。用于如双倍速再现或三倍速再现的高速再现、如1/2倍速再现的低速再现和反向再现的用户可变速再现指令作为用户输入310被输入到本地执行平台301。对应于用户输入310,将一个取决于电影播放器300的实现方式的控制指令311从本地执行平台301提供给电影播放器300。
可变速再现的速度取决于电影播放器300的实现方式。将一个具有能指定速度的“加快”或“减慢”变元的指令从本地执行平台301提供给电影播放器300。电影播放器300将该指令转换成实际速度。实现可变速再现的方法取决于电影播放器300的实现方式。脚本程序可以利用方法getPlayStatus()知晓电影播放器300指定的速度。
相反地,脚本程序发送到电影播放器300的方法play()不利用变元对速度进行指定。方法play()仅指定暂停(利用变元“pause”)和标准速度再现(利用变元“x1”)。
在电影播放器300以可变的再现速度以正向再现了一个播放列表之后,当现有的播放项到达末尾时,电影播放器300再现下一个播放项。这里,电影播放器300以同样地方向和以同样地再现速度再现下一个播放项以继续进行可变速再现。
图35示出了当电影播放器300正在再现的播放列表到了开头或末尾时电影播放器300的操作的例子。在电影播放器300以正向再现一个播放列表之后,当该播放列表到了末尾时,电影播放器300显示最后一个图像并且暂停。为了使最后一个图像清楚,有必要清楚地利用在事件处理程序onPlayListEnd中描述的方法stop()来停止电影播放器300。
当电影播放器300以高于标准速度的速度执行高速再现时,在播放列表的末尾,即使播放列表的最后一个图像不是跳转点,电影播放器300也显示播放列表的最后一个图像。
在电影播放器300以反向再现播放列表之后,当现有的播放列表到了开头时,电影播放器300再现先前的播放项,即以正向编排的先前播放项。电影播放器300以相同的再现速度以反向从末尾到开头再现先前的播放项。当电影播放器300正在再现的播放列表在反向到达了开头时,电影播放器300取消可变速再现并且在播放列表的开头处暂停。
此外,电影播放器300利用使电影播放器300暂停的控制指令311来暂停。当电影播放器300的暂停状态被取消时,对播放列表的再现方向和再现速度取决于电影播放器300的实现方式。
下面,将描述在再现播放列表期间所发生的事件。如参照图13描述的,在再现播放列表期间所发生的事件是对应于用户操作的事件angleChange、事件audioChange和事件subtitleChange和对应于嵌入在播放列表中的标志的事件chapter和事件mark。参照图15描述了当发生事件时的操作的例子。
下面,将描述在播放列表末尾处执行的处理。如上所述,电影播放器300通过方法play()现指定的播放列表号的播放列表。一旦电影播放器300开始再现一个播放列表,电影播放器300就在没有脚本程序和控制指令311控制的情况下持续再现该播放列表直到其到达末尾。当电影播放器300所再现的播放列表到了末尾时,不管播放列表如何到达末尾,电影播放器300都将事件playListEnd通知给脚本程序。换句话说,当该播放列表到了末尾时,无论电影播放器300执行的是标准再现,是快速正向再现还是由另一个播放列表的跳转再现,电影播放器300都产生事件playListEnd。
当电影播放器300正在再现的播放列表到达了末尾并且事件playListEnd发生时,电影播放器300暂停,并且电影播放器300所存储的播放列表再现时间与播放列表的最后时间相匹配。播放列表的最后时间是播放列表的最后一个图像的再现结束时间,并且其与再现时间轴上的最后一个播放项的OUT点相匹配。
可以使用事件playListEnd来连续地再现播放列表和在一个多重故事的一个分支点处显示一个菜单。
当脚本程序具有作为在发生事件playListEnd时执行的程序的事件处理程序onPlayListEnd时,脚本程序执行事件处理程序onPlayListEnd。当事件处理程序onPlayListEnd描述使电影播放器300开始再现另一个播放列表的方法play()时,电影播放器300开始再现该播放列表。以这样的方式,电影播放器300继续再现该播放列表。
下面,将参照图36更具体地描述此操作。当电影播放器300已经再现播放列表号为“PL1”的播放列表时,事件playListEnd发生。当事件playListEnd发生时,执行脚本程序所具有的事件处理程序onPlayListEnd。事件处理程序onPlayListEnd指定对播放列表号为“PL2”的播放列表进行再现。电影播放器300接收事件处理程序onPlayListEnd并且对已经指定的播放列表号为“PL2”的播放列表进行再现。
因此,再现路径临时从播放列表号为“PL1”的播放列表的末尾改变到事件处理程序onPlayListEnd,并且然后改变到播放列表号为“PL2”的播放列表的开头。
当在一个多重故事的一个分支点处显示一个菜单时,可以在相应于事件playListEnd的事件处理程序onPlayListEnd中描述再现一个播放列表的指令,该播放列表利用其末尾处的一个分支点显示一个菜单屏。
图37示出了脚本层302在播放列表的末尾处的处理的流程图,并且显示了电影播放器300的具体操作的一个实例。在图37中,步骤S30到步骤S33表示在脚本层302方的处理过程,而步骤S40到步骤S44表示在电影播放器300方的处理过程。
在电影播放器300正在再现的播放列表到达了末尾之后,为了再现下一个播放列表,脚本程序需要明确地发出一个相应的指令。由于播放列表的再现顺序由脚本程序来决定,因此电影播放器300方不能自动决定接下来要再现的播放列表。
当电影播放器300正在再现的播放列表到达了末尾(在步骤S40)时,电影播放器300将事件playListEnd通知给脚本层302(在步骤S41)。电影播放器300继续再现到达了末尾的播放列表的最后一个图像并且将现有状态改变为暂停状态(在步骤S42)。
当脚本层302接收到事件playListEnd时,脚本层302执行事件处理程序onPlayListEnd(在步骤S30)。电影播放器300接下来执行的操作取决于事件处理程序onPlayListEnd中的脚本程序的描述。
在步骤S40之后,即使暂停的电影播放器300接收到一个取消暂停状态或使电影播放器300开始以正向进行再现的方法或者控制指令311,电影播放器300也忽略该方法或该控制指令311。使电影播放器300开始以正向进行再现的方法是具有一个指定正向再现的变元的方法play()和方法playStep()。使电影播放器300开始以正向进行再现的控制指令311包括指令uo_play()、指令uo_playNextChapter()、指令uo_forwardScan()、指令uo_playStep()、指令uo_pauseOn()、和uo_pauseOff()。当电影播放器300在播放列表的末尾暂停时,其忽略这些指令。
当电影播放器300在播放列表的末尾暂停时,方法stop()和方法resume()是有效的。当电影播放器300在播放列表的末尾暂停时,模式change是有效的。
在事件playListEnd发生了之后,以标准模式操作的电影播放器300能接收不同于使电影播放器300开始以正向进行再现的控制指令311的控制指令。在此情况下,当脚本程序执行用于电影播放器300的方法313时,电影播放器300根据方法313而运行。
在图37中所示的实例中,事件处理程序onPlayListEnd使脚本层302执行方法stop()(在步骤S31)。当脚本层302执行法stop()时,电影播放器300取消由方法311引起的操作并且将现有状态改变为停止状态(在步骤S43)。在停止状态,电影播放器300清除电影播放器300已经再现过的播放列表的最后一个图像,并且示黑屏。
事件处理程序onPlayListEnd使脚本层302执行使电影播放器300再现下一个播放列表的方法313(在步骤S32)。例如,在方法play()中,分别将值“x1”指定给变元pauseMode,将值“Menu”指定给变元menuMode和将接下来要再现的播放列表号指定给变元playListNumber。这些值使电影播放器300将现有模式改变为菜单模式并且在标准模式下再现由变元playListNumber指定播放列表号的播放列表。此后,脚本层302完成事件处理程序onPlayListEnd(在步骤S33)。电影播放器300方根据在步骤S32指定的方法play()将现有模式改变为另一种模式。另外,电影播放器300以指定的速度再现所指定的播放列表(在步骤S44)。
为了改善用户的可操作性,内容创建者需要利用事件处理程序onPlayListEnd来创作(描述)已经再现了一个播放列表的电影播放器300所执行的下一个操作,使得在电影播放器300已经再现该列表之后,电影播放器300将现有状态改变为停止状态,以方法play()再现下一个播放列表,或显示菜单屏。
8-4.电影播放器的再现恢复功能下面将描述电影播放器300的状态改变和再现恢复功能。首先,参照图38,将描述UMD视频播放器所具有的三种类型的存储器区。在UMD视频播放器模型中,将播放器状态区501、恢复信息区502和用户数据区503定义为三种类型的基本存储区。这三种类型的存储区501、502和503形成在例如存储器113中。代替性地,这些存储区501、502和503可以形成在作为CPU 112的工作存储器的RAM中。
播放器状态区501是存储表示电影播放器300的再现状态的信息的存储器区。换句话说,播放器状态区501存储如图3所示的播放器状态323B。可以利用方法getPlayStatus()从脚本程序500中读出播放器状态区501的内容。
恢复信息区502是临时备份保持在播放器状态区501中的部分信息的存储器区。换句话说,将播放器状态区501的部分信息存储在恢复信息区502中作为如图3所示的恢复信息324。当有必要时,备份在恢复信息区502中的播放器状态区501的部分信息被恢复到播放器状态区501中。通过本地执行平台301执行信息的备份和存储。存储在恢复信息区502中的信息用于恢复再现功能,该恢复再现功能从先前的再现停止位置起动再现。
脚本程序500能利用方法getResumeInfo()读取恢复信息区502的内容。脚本程序500能利用方法changeResumeInfo()来对存储在恢复信息区502中的恢复信息324中的一个流改变参数。
当有必要时,存储在恢复信息区502中的信息被本地执行平台301存储到非易失性存储器510中。同样地,当有必要时,从恢复信息区502存储到非易失性存储器510中的信息被本地执行平台301从非易失性存储器510装入,并且存储在恢复信息区502中。
当电影播放器300利用预定的方法将现有状态改变为预定状态时,将信息从播放器状态区501备份到恢复信息区502和将信息从恢复信息区502恢复到播放器状态区501是电影播放器300自动执行的处理过程。
用户数据区503是存储取决于内容的信息的区域。内容创建者能自由地使用用户数据区503。用户数据区503可自由地用于诸如电影播放器300的播放列表的再现路径的历史和对应于内容的正确与不正确的应答。
脚本程序500能利用方法setUserData()将数据存储到用户数据区503。脚本程序500利用方法getUserData()读用户数据区503的内容。当有必要时,本地执行平台301将存储在用户数据区503中的信息存储到非易失性存储器510中。同样地,当有必要时,本地执行平台301从非易失性存储器510装载信息,并且将该信息存储在用户数据区503中。
下面将描述实现根据本发明的一个实施例的再现恢复功能的UMD播放器模型。
首先,简要描述该恢复操作。利用备份在恢复信息区502中的信息恢复再现状态的操作被称为恢复操作。利用方法resume()来执行该恢复操作。
更具体而言,将播放器状态323B从播放器状态区501备份在恢复信息区502中,并且根据方法resume()利用备份在恢复信息区502中的恢复信息324来恢复再现状态。播放器状态323B由电影播放器300的状态构成,即播放列表号和电影播放器300目前正在再现的章节号,所选定的流号等。
将方法resume()发送到电影播放器300的操作取决于恢复信息324是否被存储在恢复信息区502中。当恢复信息324存储在恢复信息区502中时,恢复信息324被恢复到播放器状态区501作为播放器状态323B。这里,存储在恢复信息区502中的恢复信息324被丢弃。
当在一个在再现内容期间所调用的菜单上改变再现流时,使用方法changeResumeInfo()。在利用方法changeResumeInfo()将存储在恢复信息区502中的恢复信息324改变为所指定的信息之后,当以方法resume()执行恢复操作时,现有的再现流可以被改变为所指定的再现流,并且能开始再现所指定的再现流。
当执行方法resume()时,电影播放器300能执行恢复操作。替代地,当利用方法getResumelnfo()获得恢复信息324并且执行具有所指定的变元的方法play()时,可以实现该恢复操作。
下面将参照图39和图40来描述将播放器状态323B备份到恢复信息区502的过程。图39示出了定义在电影播放器300中的四种状态改变中的一种状态改变,该状态改变时被存储在播放器状态区501中的播放器状态323B被备份在恢复信息区502中。图40示出了播放器状态323B被备份到恢复信息区502的条件。
当电影播放器300正在以标准模式再现播放列表并且播放状态(State{Normal,play})从有状态改变为停止状态时,将存储在播放器状态区501中的播放器状态323B备份到恢复信息区502并且存储为恢复信息324。在停止状态下,播放器状态323B的一些值变得不确定。
另外,当电影播放器300将现有状态State{Normal,play}改变为状态State{Menu,play}时,也将存储在播放器状态区501中的播放器状态323B备份到恢复信息区502。
相反,当在菜单模式下再现播放列表的电影播放器300从现有状态改变为另一个状态时,不把存储在播放器状态区域501中的播放器状态323B备份到恢复信息区502中。
换句话说,播放器状态323B被备份到恢复信息区502作为恢复信息324,(1)当电影播放器300的现有状态是State{Normal,play}并且电影播放器300利用执行方法stop()直接将现有状态State{Normal,play}改变为状态State{Normal,play}时,或者(2)当电影播放器300的现有状态是State{Normal,play}并且电影播放器300利用执行方法stop()将现有状态State{Normal,play}改变为状态State{Normal,Stop}或State{Menu,Stop}时。在此情况下,方法stop()的变元resumInfoClearFlag的值是“false”。
希望将播放器状态323B备份到恢复信息区502用以存储内容的主体部的返回位置。例如,当完成再现内容的主体部、跳到一个移动图像菜单、返回到内容的主体部并且从所再现停止位置再现内容的主体部的一系列操作时,希望使用恢复信息324,该恢复信息324是被备份在恢复信息区502中的播放器状态323的数据。
因此,当正在再现内容的主体部时,即电影播放器300的现有状态是State{Normal,play}时,存储在恢复信息区502中的恢复信息324已经被丢弃。当电影播放器300将现有状态State{Normal,play}改变为另一状态时,将播放器状态323B备份到恢复信息区502作为恢复信息324。
因此,为了实现恢复再现,当电影播放器300将现有状态改变为另一状态时,将播放器状态323B备份到恢复信息区502并且将存储在恢复信息区502中的恢复信息324丢弃。当脚本层302指定方法resume()时,如果恢复信息324被存储在恢复信息区502中,那么恢复信息324被恢复到播放器状态区501作为播放器状态323B。
脚本层302能以方法getResumeInfo()从恢复信息区502中装入恢复信息324。利用方法changeResumeInfo()能改变关于存储在恢复信息区502中的恢复信息324中的一个流的一个参数。另外,利用方法stop()的一个变元,存储在恢复信息区502中的恢复信息324能被丢弃。
下面将参照图41到44,描述将存储在恢复信息区502中的恢复信息324恢复到播放器状态区501的过程和丢弃恢复信息324的过程。在电影播放器300返回到主体部的再现状态,即State{Normal,play}之后,被存储为内容的主体部的返回位置的恢复信息324被丢弃。这里,有两种情况。在第一种情况下,恢复信息324被恢复到播放器状态区501作为播放器状态323B,而后被丢弃。在第二中情况下,恢复信息324被丢弃,不被恢复。
换句话说,在此模型中,当电影播放器300返回到State{Normal,play}时,存储在恢复信息区502中的恢复信息324被丢弃。这里,当电影播放器300等满足预定条件时,存储在恢复信息区502中的恢复信息324被恢复到播放器状态区501而后被丢弃。当将恢复信息324恢复到播放器状态区501时,从恢复信息324指定的位置开始再现。此操作是恢复再现。
图41示出了定义在电影播放器300中的4种状态改变中的一种状态改变,该状态改变中的恢复信息324被恢复到播放器状态区501,而后被丢弃。
当以下的三个条件(1)到(3)被满足时,恢复信息324被恢复,而后被丢弃(1)当电影播放器300的现有状态是State{Menu,Stop}、State{Normal,Stop}或State{Menu,Play}时,(2)当恢复信息324被存储在恢复信息区502中时,以及(3)当电影播放器300利用执行方法resume()将现有状态改变为State{Normal,play}时。
图42是这些条件的表。当电影播放器300的现有状态是State{Normal,play}时,因为恢复信息324未被存储,所以在图42中没有定义此状态下的操作。
当恢复信息324被存储在恢复信息区502中时,如果执行方法resume(),那么电影播放器300将现有状态改变为State{Normal,play}。当恢复信息324未被存储在恢复信息区502中时,如果执行方法resume(),那么电影播放器300不将现有状态改变为另一状态。这里,电影播放器300保持处于执行方法resume()之前即刻发生的状态State{Mode,State},并且播放器状态323B未被改变。
相反,当以下的三个条件(4)到(6)被满足时,恢复信息324不被恢复,但是被丢弃(4)当电影播放器300的现有状态是State{Menu,Stop}、State{Normal,Stop}或State{Menu,Play}时,(5)当恢复信息324被存储在恢复信息区502中时,以及(6)当电影播放器300利用执行方法resume()将现有状态改变为State{Normal,play}时。
图43是这些条件的表。当电影播放器300的现有状态是State{Normal,play}时,因为恢复信息324未被存储在恢复信息区502中,所以在图43中没有定义此状态下的操作。
当恢复信息324未被存储在恢复信息区502中时,如果执行方法play(),那么电影播放器300将现有状态改变为State{Normal,play}。结果,其中恢复信息324未被存储在恢复信息区502中的状态保持不变。
通过设置方法stop()的一个变元可以将存储在恢复信息区502中的恢复信息324丢弃。具体而言,根据本发明的这个实施例,作为方法stop()的一个变元,定义变元resumeInfoClearFlag来指定是否丢弃被存储在恢复信息区502中的恢复信息324。如图44所示,当执行方法stop()时,如果利用值“true”来指定变元resumeInfoClearFlag,那么恢复信息324被丢弃。
当电影播放器300所再现的电影的主体部到达了末尾并且电影播放器300的停止再现时,该电影的主体部的末尾位置被记录为恢复信息324。此后,当用户操作电影播放器300执行再现操作(恢复再现操作)时,电影播放器300跳转到该电影的主体部的末尾并且暂停。因此,电影播放器300中的恢复再现操作的可操作性变坏。
为了改进电影播放器300中的恢复再现操作的可操作性,有必要提供一个丢弃被自动记录为该模型特征的恢复信息324的部件。因为只有电影创建者知道电影的主体部的末尾,脚本程序500才能利用方法stop()的变元resumeInfoClearFlag来指定对用于电影播放器300的恢复信息324的丢弃。
图45示出了当执行具有变元resumeInfoClearFlag的方法stop()时UMD视频播放器的操作的实例。在图45中,步骤S50到步骤S54示出了在脚本层302方的处理,而步骤S60到步骤S64示出了在电影播放器300方的处理。
当电影播放器300正在再现的播放列表到达了末尾(在步骤S60)时,电影播放器300将事件playListEnd通知给脚本层302(在步骤S61)。电影播放器300在步骤S60继续显示到达了末尾的播放列表的最后一个图像并且暂停(在步骤S62)。
当脚本层302接收到事件playListEnd时,脚本层302执行事件处理程序onPlayListEnd(在步骤S50)。在步骤S51,脚本层302确定与事件playListEnd相对应的播放列表是否是作者电影剧本的末尾。另外,脚本层302能根据例如脚本程序500来确定一个特定的播放列表是否是电影剧本的最后一个播放列表。
当所确定的结果表示该播放列表不是最后一个播放列表时,该流程前进到步骤S53。在步骤S53,脚本层302将方法stop()的变元resumeInfoClearFlag设置成值“false”并且将不丢弃恢复信息324的方法stop()发送到电影播放器300。当电影播放器300接收到方法stop()时,电影播放器300将现有状态改变为停止状态。另外,电影播放器300将播放器状态323B备份到恢复信息区502(在步骤S64)。
相反,当在步骤S51所确定的结果表示该播放列表是电影剧本中的最后一个播放列表时,该流程前进到步骤S52。在步骤S52,脚本层302将方法stop()的变元resumeInfoClearFlag设置成值“True”并且将丢弃恢复信息324的方法stop()发送到电影播放器300。当电影播放器300接收到方法stop()时,电影播放器300将现有状态改变为停止状态。另外,电影播放器300丢弃(清除)存储在恢复信息区502中的恢复信息324。
在步骤S52之后,脚本层302根据脚本程序500的描述执行方法end()。
8-5.各个数据的生存周期下面将描述播放器状态323B、恢复信息324和用户数据的生存期。
图46示出了播放器状态323B的生存期的实例。当电影播放器300被产生时,播放器状态323B也被产生。当电影播放器300被消除时,播放器状态323B也被消除。当电影播放器300被产生时,播放器状态323B被初始化。当播放器状态323B被产生时,表示电影播放器300的状态的属性表示停止状态。其它的属性不确定。播放器状态323B的值根据电影播放器300的再现状态的改变而改变。当恢复信息区502的内容被恢复时播放器状态323B的值发生改变。能够利用从脚本层302发出的方法getPlayerStatus()来装入播放器状态323B。
播放器状态323B的存储状态取决于电影播放器300的实现方式。只要通过从脚本层发出的getPlayerStatus()方法能获得播放器状态323B,播放器状态323B就能以任何格式存储。
图47示出了恢复信息324的生存期的实例。当电影播放器300被产生时,分配用于恢复信息324的存储区。当电影播放器300被产生时,恢复信息324被初始化。当恢复信息324被初始化时,丢弃恢复信息324的内容。当电影播放器300被初始化时,包含非易失性存储器的UMD视频播放器从非易失性存储器装入恢复信息324。这里,用户数据也被装入。
当电影播放器300将现有状态State{Normal,Play}改变为另一个状态时,播放器状态323B被备份到恢复信息区502。
利用从脚本层302发出的方法changeResumeInfo()能够改变关于恢复信息324的流的参数videoNumber、audioNumber、audioFlag、subtitleNumber和subtitleFlag。
当电影播放器300在标准模式中开始再现播放列表时,恢复信息324的内容被丢弃。这里,存在两种情况。在第一种情况下,在恢复信息324的内容被丢弃之前它被恢复到播放器状态323B。在第二种情况下,在恢复信息324的内容被丢弃之前不将它恢复到播放器状态323B。当执行带有变元resumeInfoClearFlag=“true”的方法stop()时,恢复信息324的内容被丢弃。
当恢复信息324被存储时,利用方法resume()将其恢复到播放器状态323B。
利用方法getResumeInfo()能够从脚本层302读取恢复信息324的内容。当已经丢弃的恢复信息324被读取时,因为值“0”被返回作为返回值playStatus,因此能够确定恢复信息324是否被存储。
当电影播放器300被完成(被消除)时,恢复信息324也被消除。当电影播放器300被完成(被消除)时,包含非易失性存储器的UMD视频播放器将恢复信息324保存到非易失性存储器。这里,UMD视频播放器也将用户数据保存到非易失性存储器。
图48示出了用户数据的生存期的实例。当电影播放器300被产生时,分配用于用户数据的存储区。当电影播放器300被产生时,用户数据被初始化。当用户数据被初始化时,用户数据的内容被清除(利用方法getUserData(),返回长度为“0”的数组)。当初始化电影播放器300时,包含非易失性存储器的UMD视频播放器从非易失性存储器装入用户数据。这里,UMD视频播放器也从非易失性存储器装入恢复信息。
当执行方法setUserData()时,用户数据被保存到用户数据区503。利用方法setUserData(),将具有64位(最大)数据长度的整型数组保存到用户数据区503。存储在用户数据区503中的数据能够被以从脚本层302发送出的方法getUserData()读取。当用户数据不被存储时,返回长度为0的数组。
脚本层302不具有清除用户数据区503的内容的方法。当重写用户数据区503的内容时,该内容可以被改变。
当电影播放器300被完成(被消除)时,用户数据区503也被消除。当电影播放器300被完成(被消除)时,包含非易失性存储器的UMD视频播放器将存储在用户数据区503中的数据保存到非易失性存储器。这里,UMD视频播放器也将恢复信息324保存到非易失性存储器。
9.在内容的末尾处的处理下面将描述本发明的另一个实施例。根据本发明的这个实施例,脚本程序清楚地将内容的末尾通知给本地执行平台301。当本地执行平台301接收到信息时,在内容的末尾之后本地执行平台301能够实现只有播放器才有的各种功能。
内容创建者有意地指明内容的末尾。因此,内容创作者想要的“内容的末尾”的位置仅仅描述在他或她创建的脚本程序中。换句话说,播放列表的末尾通常不是内容的末尾。因为对于一个多重故事的内容,一个内容可以包含多个末尾。
现在,假定内容600具有如图49所示的故事结构。内容600在开始点610处开始。按照由至少一个播放列表构成的路径对内容600进行再现。当内容到达分支点611时,在预定的分支菜单屏或类似物上选取路径b和c中的一个。当选取路径b时,在分支点612处选取路径d到f中的一个。根据所选取的路径,内容600到达末尾点613、614或者615。当在分支点611处选取路径c时,在分支点616处选取路径g和h中的一个。根据所选取的路径,内容600到达末尾点617或者618。
具有这种结构的内容600可以具有末尾点613、614、615、617和618。在这种情况下,内容600具有5个“内容的末尾”。代替性地,根据分支菜单的结构,可以指明分支点612和613作为“内容的末尾”。此外,可以在路径的中间指明“内容的末尾”。当使用父源(parental)功能等时,利用对播放器的设置可以指明“内容的末尾”。当使用父源功能等时,在不具有故事分支的单个故事内容中可以指明多个“内容的末尾”。
另一方面,脚本程序根据电影播放器300的停止位置和它的历史确定内容的最后位置。现在,在脚本程序中描述允许脚本程序将“内容的末尾”通知给控制器对象330的方法end(),使得它在程序创建者期望的位置处执行该方法。因此,脚本程序能够清楚地将“内容的末尾”通知给本地执行平台301。
例如,在脚本程序中,当在内容的末尾处再现播放列表时,方法end()可以被描述在相应于从电影播放器300接收到的事件312的事件处理程序中。
图50示出了涉及到在如图2所示的播放器模型中执行方法end()的各个部分。如图50所示,方法end()是脚本层302将其通知给含有控制器对象330的本地执行平台301的方法315。当控制器对象330接收到方法end()时,控制器对象330能启动播放器独特功能的运行。
图51示出了方法end()的说明的一个实例。方法end()是控制器对象330的一个方法(Controller,end())并且不具有属性。当执行方法end()时,返回布尔型的值。方法end()的返回值表示UMD视频播放器是否在没有播放器独特的操作的情况下完成了对内容的操作。当方法end()的返回值是“true”时,其表示UMD视频播放器在执行了事件处理程序之后没有执行播放器独特的功能。相反,当方法end()的返回值是“false”时,其表示UMD视频播放器在执行了事件处理程序之后执行播放器独特的功能。
脚本程序利用方法end()将内容的末尾通知给本地执行平台301。另外,因为脚本程序从本地执行平台301获得方法end()的返回值,所以脚本程序能知道是否执行了播放器的独特功能并能执行下一个操作。
当方法end()的返回值是“false”并且脚本程序已经确定执行了播放器的独特功能时,脚本程序能抑制对另一种方法的执行,使得其不阻止播放器的独特功能的运行。相反,当方法end()的返回值是“true”并且脚本程序已经确定没有执行播放器的独特功能时,脚本程序能调用一个菜单屏,使得用户的可操作性得到改进。
下面将描述一个使用方法end()的操作的具体实例。首先,将描述一个利用方法end()实现盘重复功能的实例。盘重复功能是一种在内容到达了末尾后自动从开头开始再现内容的功能。
图52是一个示出了利用方法end()执行盘重复功能的处理的实例的流程图。在流程图的执行之前,内容创建者在脚本程序中描述方法end()以将他或她期望的位置指定为内容的末尾。当内容被再现并且内容到达了被指定为末尾的位置时,在脚本程序中,在内容的末尾处执行的事件处理程序发出方法end()(在步骤S70)。
方法end()被提供给本地执行平台301。当本地执行平台301接收到方法end()时,本地执行平台301确定是否已经给UMD视频播放器设置了盘重复功能(在步骤S71)。例如,给本地执行平台301设置盘重复功能,并且将其写到只读存储器323A(末在图7A中示出)。
当所确定的结果表示已经设置了盘重复功能时,该流程前进到步骤S72。在步骤S72,本地执行平台301将事件autoPlay发送到脚本层302。这里,因为方法end()没有完成,事件autoPlay被编入队列(在步骤S72)。因为已经设置了盘重复功能,方法end()在步骤S70处的返回值是“false”(在步骤S73)。
脚本层302在方法end()之后执行脚本程序直到在内容的末尾处执行的事件处理程序的末尾(在步骤S74)。执行早于事件autoPlay被编入队列的事件。此后,执行相应于事件autoPlay的事件处理程序onAutoPlay(在步骤S75)。如参照图12和图14所描述的那样,事件处理程序onAutoPlay是当将盘装入播放器时与能使脚本程序自动执行的事件autoPlay相对应的事件处理程序。当从开头再现盘的数据时,执行事件处理程序onAutoPlay。当事件处理程序onAutoPlay被调用时,从开头开始再现该内容。
另一方面,当没有在步骤S71设置盘重复功能并且UMD视频播放器完成了该操作而没有任何特定的操作时,该流程前进到步骤S76。在步骤S76,方法end()返回值“true”作为返回值。这里,在方法end()之后执行该脚本程序直到该事件处理程序的末尾(在步骤S77)。UMD视频播放器的下一个操作取决于脚本程序。当脚本程序在方法end()之后没有描述任何代码时,UMD视频播放器变成等待状态,等待事件的到来(在步骤S78)。例如,UMD视频播放器显示黑屏并等待一个事件。替代性地,UMD视频播放器也可以根据脚本程序的描述显示一个菜单屏。在步骤S77和S78,本地执行平台301不执行任何处理。
在以方法end()实现盘重复功能的实例中,如果没有给播放器设置盘重复功能,那么方法end()的返回值为“true”。在已经执行了含有方法end()的事件处理程序之后,UMD视频播放器变成等待状态,等待事件的到来。
这里,如果电影播放器300已经再现了播放列表并且停止该操作时,电影播放器300可以不显示数据(即,黑屏)。当脚本程序等待事件和用户操作时,如果出现黑屏,那么用户可以想到播放器停止操作了。因为没有在显示屏上出现向导指示,所以用户会感到困惑不知道下一步做什么。换句话说,可以说此种情形是由于对用户缺乏考虑而产生的。
当内容创建者没有提供对用户进行导航使得在完成内容的再现之后显现菜单屏的脚本程序时,可能会出现此种情形。
为了防止这样的对于用户来说陌生或不起帮助作用的操作可以使用方法end()。
下面将参照如图53所示的流程图来描述一个实例,该实例为利用方法end()在内容的末尾执行播放器独特的功能,以防止这样的操作的发生。在执行该流程之前,内容创建者已经在脚本程序中描述了方法end()以将他或她所期望的位置指定为内容的末尾。当内容已经被再现并且内容到达了末尾时,脚本程序在于内容的末尾处执行的事件处理程序中发出方法end()(在步骤S80)。
方法end()被提供给本地执行平台301。当本地执行平台301接收到方法end()时,本地执行平台301参照例如只读存储器323A并确定是否已经给UMD视频播放器设置了盘重复功能(在步骤S81)。
当所确定的结果表示已经设置了盘重复功能时,该流程前进到步骤S82。在步骤S82,本地执行平台301将事件autoPlay发送到脚本层302。脚本层302将事件autoPlay编入队列。此后,该流程前进到步骤S83。
相反,当在步骤S81所确定的结果表示设置盘重复功能时,该流程前进到步骤S86。在步骤S86,本地执行平台301确定是否已经将事件处理程序onMenu登记在脚本程序中。当内容创建者已经将事件处理程序onMenu描述在脚本程序中时,并且当在开头已经执行了脚本程序时,事件处理程序onMenu被登记在执行脚本程序的解释器中。当事件处理程序onMenu已经被登记时,其能被执行。在此情况下,该流程前进到步骤S87。在步骤S87,将相应于事件处理程序onMenu的事件menu编入队列中。此后,该流程返回到步骤S83。
相反,当在步骤S86所确定的结果表示没有事件处理程序onMenu()没有被登记时,该流程前进到步骤S88。当事件处理程序onMenu没有被登记时,盘重复功能未被设置。另外,不存在使UMD视频播放器显示一个菜单的事件处理程序。在此情况下,执行使UMD视频播放器完成此操作并且使本地执行平台301显示一个菜单的处理。换句话说,该流程前进到步骤S88。在步骤S88,本地执行平台301将事件exit编入队列。如参照图12所描述的那样,事件exit是一个使UMD视频播放器完成该操作的事件。此后,该流程前进到步骤S83。
如在步骤S82、步骤S87和步骤S88所描述的那样,在此实例中,当方法end()被发送时,本地执行平台301将事件autoPlay(在步骤S82)、事件menu(在步骤S87)和事件exit(在步骤S88)中的一个编入队列。利用这些事件中的一个,UMD视频播放器在执行该事件处理程序之后执行播放器独特的功能。因此,仅将值“false”返回作为方法end()的返回值(在步骤S83)。此后,恢复脚本程序的执行。
在步骤S83,完成对方法end()的执行。在已经获得返回值之后,执行脚本程序。当脚本程序到达了含有方法end()的事件处理程序的末尾(在步骤S84)时,按顺序执行编入队列的事件(在步骤S85)。
当在步骤S82将事件autoPlay编入队列时,在步骤S85执行事件处理程序onAutoPlay。事件处理程序onAutoPlay使UMD视频播放器从开头开始再现内容。
当在步骤S87将事件menu编入队列时,在步骤S85执行事件处理程序onMenu。然而在很多种情况下,根据内容创建者的意图,希望事件处理程序onMenu含有使UMD视频播放器显示一个菜单屏的代码。因此,在很多种情况下,显示菜单屏。
当在步骤S88将事件exit编入队列时,在步骤S85执行事件处理程序onExit。事件处理程序onExit使UMD视频播放器完成该操作。在UMD视频播放器完成该操作之后,将能使播放器对其硬件进行设置的控制传送到例如播放器独特的系统菜单。
如上所述,根据这个实施例,定义了方法end(),其使脚本层302将内容的末尾通知给本地执行平台301。可以根据例如是否已经设置了盘重复功能的播放器设置和是否提供了菜单屏的内容状态来指定播放器在内容的末尾处执行的操作。因此,能够防止发生由于对用户缺乏考虑而产生的异常情况,例如出现黑屏。另外,能提供用户友好型界面。
当内容创建者仅在他或她想将其指定为内容的末尾的部分处描述方法end()时,播放器自动地执行适当的处理而无须提供复杂的程序。因此,能够节省创建内容所要的大量时间和工作。
本发明前述的实施例不但应用于处理音频流也用于处理视频流的盘再现装置100。替代性地,本发明的这些实施例还可以应用于再现或者音频流或者视频流的盘再现装置100。
在本发明前述的实施例中,作为内容数据的记录介质,描述了盘形记录介质。替代性地,作为内容数据的记录介质,可以使用半导体存储器。在本发明前述的实施例中,盘再现装置100由专用的硬件构成。替代性地,盘再现装置100的结构除了盘驱动器之外可以由运行在计算机装置上的软件实现。在此情况下,实现盘再现装置100的软件可以由记录介质,如光盘只读存储器(CD-ROM)或数字通用盘ROM(DVD-ROM)来提供。在此情况下,用于实现盘再现装置100的软件的记录介质被装入到计算机装置的盘驱动器中,并且将记录在记录介质上的软件安装在计算机装置上。当根据UMD将盘驱动器装置连接到计算机装置上时,能实现与根据本发明前述实施例的盘再现装置100相同的结构。该软件可以被记录在用于UMD视频内容的记录介质上。
本领域普通技术人员应该理解,只要落在所附的权利要求或其等价物的范围内,根据设计需要和其它因素,可以对本发明进行各种修改、组合、子组合和替换。
权利要求
1.一种对记录在记录介质上的内容数据进行再现的再现装置,其包括播放器装置,其具有用于从记录介质上读取数据的读取装置,在该记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及对内容数据的再现进行控制的再现控制程序,用于接受来自用户的输入的输入装置,和用于输出所再现的内容数据的输出装置;用于根据再现控制程序再现内容数据的内容再现装置,以及用于在内容再现装置、再现控制程序和播放器装置之间连接通信的接口装置,其中当表示所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给接口装置,并且该接口装置执行时应于所述指令的处理。
2.如权利要求1所述的再现装置,其中所述指令被描述在内容数据的多个位置,以将它们指定为内容数据的多个末尾。
3.如权利要求1所述的再现装置,其中所述接口装置根据所述指令使播放器装置执行播放器装置的独特功能。
4.如权利要求3所述的再现装置,其中所述独特功能是盘重复功能。
5.如权利要求3所述的再现装置,其中所述独特功能是播放器装置特有的系统菜单功能。
6.如权利要求1所述的再现装置,其中所述接口装置根据所述指令调用在再现控制程序中描述的预定功能。
7.如权利要求6所述的再现装置,其中所述预定功能是菜单功能。
8.一种从记录介质中再现内容数据的再现方法,其包括以下步骤根据从记录介质读取的再现控制程序从记录介质中再现内容数据,其中所述记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及对内容数据的再现进行控制的再现控制程序;和在内容再现步骤、再现控制程序和播放器装置之间进行连接通信,该播放器装置具有从记录介质读取数据的读取装置,接受来自用户的输入的输入装置,以及输出所再现的内容数据的输出装置;其中当表示所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给连接通信步骤,并且该连接通信步骤执行对应于该指令的处理。
9.一种再现程序,该再现程序使计算机装置执行从记录介质中再现内容数据的再现方法,该再现方法包括以下步骤根据从记录介质读取的再现控制程序从记录介质中再现内容数据,其中所述记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及对内容数据的再现进行控制的再现控制程序;和在内容再现步骤、再现控制程序和播放器装置之间进行连接通信,该播放器装置具有从记录介质读取数据的读取装置,接受来自用户的输入的输入装置,以及输出所再现的内容数据的输出装置;其中当表示所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给连接通信步骤,并且该连接通信步骤执行对应于该指令的处理。
10.一种记录介质,可由计算机装置从中读取数据,并且在其上记录有再现程序,该再现程序使计算机装置执行从记录介质中再现内容数据的再现方法,该再现方法包括以下步骤根据从记录介质读取的再现控制程序从记录介质中再现内容数据,其中所述记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及对内容数据的再现进行控制的再现控制程序;和在内容再现步骤、再现控制程序和播放器装置之间进行连接通信,该播放器装置具有从记录介质读取数据的读取装置,接受来自用户的输入的输入装置,以及输出所再现的内容数据的输出装置;其中当表示所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给连接通信步骤,并且该连接通信步骤执行对应于该指令的处理。
11.一种记录介质,可由计算机装置从中读取数据,并且在其上记录有包含视频流和音频流中的至少一种的内容数据以及对内容数据的再现进行控制的再现控制程序,该再现控制程序包括以下步骤再现该再现控制程序并且根据该再现控制程序再现内容数据;与播放器装置进行连接通信,该播放器装置具有从记录介质读取数据的读取装置,接受来自用户的输入的输入装置,以及输出所再现的内容数据的输出装置;以及将表示所再现的内容数据的末尾的指令描述到连接通信步骤。
12.如权利要求11所述的记录介质,其中所述指令被描述在内容数据的多个位置,以将它们指定为内容数据的多个末尾。
13.如权利要求11所述的记录介质,其中所述接口装置根据所述指令使播放器装置执行播放器装置的独特功能。
14.如权利要求11所述的记录介质,其中所述接口装置根据所述指令调用在再现控制程序中描述的预定功能。
15.如权利要求14所述的记录介质,其中所述预定功能是菜单功能。
16.一种具有数据结构的信号,该数据结构中的包含视频流和音频流中的至少一种的内容数据以及对内容数据的再现进行控制的再现控制程序被多路复用,该信号可通过通信线路传送和接收,而且该信号可由计算机装置处理,其中根据再现控制程序再现该内容数据,以及将内容数据的末尾通知给计算机装置的指令在内容数据中被描述,当计算机装置正在再现内容数据时,该指令被计算机装置读取。
17.一种对记录在记录介质上的内容数据进行再现的再现装置,其包括播放器部,其具有被配置成从记录介质中读取数据的读取部,在该记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及对内容数据的再现进行控制的再现控制程序,被配置成接受来自用户的输入的输入部,和被配置成输出所再现的内容数据的输出部,被配置成根据再现控制程序再现该内容数据的内容再现部,以及被配置成在内容再现部、再现控制程序和播放器部之间连接通信的接口部,其中当表示所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给接口部,并且该接口部执行对应于该指令的处理。
全文摘要
一种再现装置具有播放器部、内容再现控制部和接口部。该播放器部具有被配置成从记录介质中读取数据的读取部,在该记录介质上记录有包含视频数据流和音频数据流中的至少一种的内容数据以及对内容数据的再现进行控制的再现控制程序,接收来自用户的输入的输入部,和输出所再现的内容数据的输出部。该内容再现部根据再现控制程序再现该内容数据。该接口部在内容再现部、再现控制程序和播放器部之间连接通信。当表示所再现的内容数据的末尾的指令在再现控制程序中被描述时,再现控制程序将该指令提供给该接口部,并且该接口部执行相应于该指令的处理过程。
文档编号G11B27/10GK1819045SQ20051012169
公开日2006年8月16日 申请日期2005年12月2日 优先权日2004年12月2日
发明者浜田俊也, 藤波靖, 各务辰哉, 井原宏二, 内海秀介, 上田晓彦 申请人:索尼株式会社, 索尼计算机娱乐公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1