专利名称:再现设备、再现方法、再现程序、记录介质和数据结构的制作方法
技术领域:
本发明涉及当从大容量记录介质中再现节目时允许适当地和自动地选择音频流和字幕流的再现设备、再现方法、再现程序、记录介质和数据结构。
背景技术:
作为可随机存取的、可附连-可拆卸(attachable-detachable)记录介质,数字多功能盘(DVD)已经被使用多年了。近年来,已经开发了具有比DVD更大的记录容量的盘形记录介质和比DVD更小的另一种盘形记录介质。
已经将包含诸如电影、戏剧、音乐会之类的视频和音频内容的这种记录介质作为销售包(sell package)进行销售。在这些单元包中,可以将不同语言的多个音频和字幕流记录作为一个节目内容。例如,在DVD视频标准中,将视频流、不同语言的多个音频流和不同语言的多个字幕流复用作为一个运动图像专家组2(MPEG)节目流。
在外国(例如,美国)创作的电影内容可以包含不同语言的多个音频流,例如作为原始语言的英语的音频和作为日语配音音频流(Japanese dubbed audiostream)的日语音频流,以及作为英语字幕流和日语字幕流的多个字幕流。
在DVD视频标准中,当电影内容包含不同语言的多个音频流和不同语言的多个字幕流时,用户可以选择要被再现的流。例如,用户可以有能力选择日语配音版本的音频流和英语版本的字幕流。作为另一个例子,用户可以有能力选择日语配音版本的音频流而不选择字幕流。
DVD播放器设备具有自动选择功能,该功能允许将优先的语言初始设置为语言预设信息,并且根据语言预设信息自动地选择字幕流而不需要用户的选择。此外,DVD播放器带有这样的功能根据除了初始设置之外的内容的再现历史和再现路径来选择要被再现的下一个流。
随后,将简要描述基于DVD视频标准的现存音频流选择功能。如上所述,使用DVD播放器设备,可以初始设置所选择并且优先再现的音频。当例如有日语用户使用DVD播放器设备时,通常将音频初始设置到“日语”。在装置设置中,当DVD播放器设备再现例如美国电影或者法语电影时,只要已经记录了日语音频流,就优先地自动选择日语配音版本的音频流。
相反,某些用户想要听到创作内容的原始语言的音频。例如,好像用户可能想要观看带有创作内容的原始语言的音频的电影内容以及用户的母语的翻译版本的字幕。例如,当日语用户观看在美国创作的电影内容时,用作为创作内容的原始语言的英语的音频和作为用户的母语的日语的字幕来再现电影内容。当用户观看通过以这种方式选择音频和语言的内容时,他或者她可以在接近原创的氛围中享受该内容。
日本专利申请公开No.2003-46951公开了具有这些模式的再现装置选择要被再现的音频的语言并且不显示字幕的模式、默认地设置要被再现的音频并且选择字幕语言的模式、和选择音频、字幕和菜单的语言以便可以容易地设置语言的模式。
然而,现存的DVD视频标准不具有表示所记录的音频流的语言是否为创作内容的原始语言的机制。因此,当再现盘的内容时不能自动地选择原始语言。所以,作为现有技术的问题,当从盘再现内容的任何时候,用户都需要改变音频的设置。
当从盘中再现作为原始语言的除了日语以外(例如,法语)的内容时,用户需要参照附连到盘上的包装或小册子来获知在盘上记录的内容的原始语言。在用户知道了原始语言之后,他或者她需要时间来几次按下播放器设备的语言选择按钮,直到选择原始语言为止。
在这种情况下,当将要被再现的音频的优先语言在播放器设备的初始设置中预设为例如法语时,只有当从盘中再现内容时,才自动地选择法语的音频。然而,当从原始语言是另一种语言(例如英语)的盘中再现内容时,用户需要改变播放器设备的初始设置。因此,用户感到非常不方便。
发明内容
因此,本发明的目的是提供允许当从盘中再现内容时适当地和自动地选择音频和字幕的再现设备、再现方法、再现程序、再现介质和数据结构。
为了解决上述问题,本发明是从盘形记录介质中再现内容数据的再现设备,其包括读取装置,用于从其上已经记录了包含至少视频流、与视频流对应的一个或多个音频流的内容数据和用其控制内容数据的再现的再现控制程序的记录介质中读取数据;播放器装置,用于根据再现控制程序来再现内容数据;和第一模式设置装置,用于将第一模式设置为播放器模式,以便当再现内容数据时从一个或多个音频流中自动地选择原始语言的音频流。
此外,本发明是从盘形记录介质中再现内容数据的再现方法,该方法包括步骤从其上已经记录了包含至少视频流、与视频流对应的一个或多个音频流的内容数据和用其控制内容数据的再现的再现控制程序的记录介质中读取数据;根据再现控制程序来再现内容数据;和将第一模式设置到内容再现步骤,使得当再现内容数据时从该一个或多个音频流中自动地选择原始语言的音频流。
此外,本发明是使得计算机设备执行从盘形记录介质中再现内容数据的再现方法的再现程序,该再现方法包括步骤从其上已经记录了包含至少视频流、与视频流对应的一个或多个音频流的内容数据和用其控制内容数据的再现的再现控制程序的记录介质中读取数据;根据再现控制程序来再现内容数据;和将第一模式设置到内容再现步骤,使得当再现内容数据时从该一个或多个音频流中自动地选择原始语言的音频流。
此外,本发明是其上已经记录了包含至少视频流、与视频流对应的一个或多个音频流的内容数据和用其控制内容数据的再现的再现控制程序以及流信息的记录介质,所述流信息至少描述标识该一个或多个音频流中的每一个的信息,以便标识用作原始语言的音频流的信息首先到来。
此外,本发明是数据结构,包括视频流;包含与视频流对应的一个或多个音频流的内容数据;用其控制内容数据的再现的再现控制程序;和至少包含标识该一个或多个音频流中的每一个的信息的流信息,以便标识用作原始语言的音频流的信息首先到来。
如上所述,根据本发明,至少已经将包含视频流和与视频流对应的一个或多个音频流的内容数据和用其控制内容数据的再现的再现控制程序记录在记录介质上。当再现设备根据从记录介质上再现的再现控制程序从其再现内容数据时,设置从一个或多个音频流中自动地选择原始语言的音频流的模式。用户可以享受从盘中再现的原始语言的内容而不必检查内容的原始语言和将原始语言设置到再现设备。
此外,根据本发明,已经以标识原始语言的音频流的信息在流信息中首先到来的方式,在记录介质上至少记录了包含视频流和与视频流对应的一个或多个音频流的内容数据、用其控制内容数据的再现的再现控制程序和至少表示标识一个或多个音频流的每一个的信息的流信息。因此,从盘中再现内容的再现设备可以检查在流信息中标识音频流和标识原始语言的音频流的信息的排列。
此外,根据本发明的数据结构至少包括包含视频流和与视频流对应的一个或多个音频流的内容数据、用其控制内容数据的再现的再现控制程序和至少表示标识该一个或多个音频流中的每一个的信息的流信息,以便标识原始语言的音频流的信息在流信息中首先到来。因此,当检查在流信息中标识音频流的信息的排列时,可以标识原始语言的音频流。
在这点上,不需要将表示原始语言的信息添加到用作原始语言的音频流或者标识音频流的信息中,就能够标识原始语言的音频流。
如上所述,作为本发明的效果,当从盘中再现内容时,可以正确地和自动地选择不同语言的音频流和字幕流。
此外,根据本发明的实施方式,作为播放器的音频的初始设置,可以设置属性“original language(原始语言)”。可以自动地选择创作内容的语言。因此,作为本发明的效果,用户可以在不破坏原始环境的情况下欣赏内容。
此外,根据本发明的实施方式,即使作为自动选择的结果已经将相同的语言设置到音频流和字幕流中,也自动使得字幕流不被显示。因此,用户不需要手工操作该设备以不显示不想要的字幕。因此,作为本发明的效果,提高了用户友好性。
图1是示出根据UMD视频标准的层结构的示意图;图2是示出根据本发明的实施方式的播放器模型的例子的示意图;图3是示出电影播放器的内部结构的例子的示意图;图4是描述电影播放器的三种状态的示意图;图5是示出根据本发明的实施方式的电影播放器的事件模型的示意图;图6是示出当正在再现播放列表时发生的事件的例子的示意图;图7是示出电影播放器对象的性质的例子的列表的示意图;图8是示出电影播放器对象的方法的例子的列表的示意图;图9是示出作为用户输入的按键输入的例子的示意图;图10是示出作为用户输入的按键输入的例子的示意图;图11A、图11B和图11C是示出根据按键输入的控制命令的例子的示意图;图12是示出根据按键输入的事件的例子的示意图;图13是示出事件处理程序(handler)的例子的示意图;图14是事件处理程序的例子的示意图;图15是示出根据用户输入事件执行预定程序的过程的例子的流程图;图16是示出将盘装载到UMD视频播放器直到从其中弹出盘为止所执行的过程的流程图;图17是示出脚本文件的结构的例子的示意图;图18是示出执行事件处理程序onAutoPlay()的过程的例子的流程图;图19是示出执行事件处理程序onContinuePlay()的过程的例子的流程图;图20是示出当完成再现时作执行的过程的例子的流程图;图21是描述脚本程序的例子的示意图;图22是示出脚本程序的例子的示意图;图23是描述根据UMD视频标准的文件管理结构的示意图;图24是示出文件“PLAYLIST.DAT”的整个结构的语法的例子的示意图;图25是示出块PlayItem()的内部结构的例子的示意图;图26是示出块PlayListMark()的内部结构的例子的示意图;图27是描述块Mark()的字段mark_type的示意图;图28是描述在剪切片段(clip)AV流文件中的标志时间的指定的示意图;图29是示出表示剪切片段AV流文件“XXXXX.CLP”的整个结构的语法的例子的示意图;图30是描述块StreamInfo()和基本流的相互关系的示意图;图31是示出块StaticInfo()的内部结构的例子的示意图;图32是示出块DynamicInfo()的内部结构的例子的示意图;图33是示出块EP_map()的内部结构的例子的示意图;图34是示出根据本发明的盘再现设备的结构的例子的框图;图35A和图35B是详细描述盘再现设备的操作的功能框图;图36是描述根据本发明的实施方式的音频和字幕流的自动选择的示意图;图37是描述根据本发明的实施方式的音频和字幕流的自动选择的示意图;图38是描述根据本发明的实施方式的音频和字幕流的自动选择的示意图;图39是示出属性audioFlag的值的例子的示意图;图40是示出属性subtitleFlag的值的例子的示意图;图41A和41B是示出方法play()的参量的例子的列表的示意图;图42是示出从多个类型的音频流和字幕流中自动地选择音频流和字幕流的流程的流程图;图43是详细描述自动地选择音频流的过程的例子的流程图;图44是详细描述自动地选择音频流的过程的例子的流程图;图45是详细描述自动地选择字幕流的过程的例子的流程图;图46是详细描述自动地设置属性subtitleFlag的过程的例子的流程图;和图47是描述自动地设置属性subtitleFlag的过程的另一个例子的流程图。
具体实施例方式
在下面,将用以下顺序来描述本发明的实施方式。
1.UMD视频标准2.根据UMD视频标准的播放器模型3.电影播放器的事件模型4.电影播放器对象5.脚本程序的例子6.文件管理结构7.盘再现设备8.音频的字幕流的自动选择1.UMD视频标准为了便于理解本发明,将描述根据本发明的实施方式的系统。根据本发明的实施方式,用被称为ECMA脚本的脚本语言来描述播放器模型。ECMA脚本是基于JavaScript(注册商标)并且由欧洲计算机制造商协会(ECMA)进行标准化的跨平台(cross platform)脚本语言。ECMA脚本具有与HTM文档的较高的兼容性。此外,由于ECMA脚本允许定义原始对象,所以可以根据本发明将ECMA脚本适当地用于播放器模型。
在下面的描述中,将使用基于ECMA脚本的脚本语言并且根据本发明的实施方式的标准称为UMD(Universal Media Disk,通用媒体盘注册商标)视频标准。将UMD视频标准的脚本部分称为UMD视频脚本标准。
下面,将简要描述UDM视频标准。图1示出UMD视频标准的层结构。UMD视频标准定义由脚本层、播放列表层和剪切片段层组成的三层结构。根据这种层结构来管理流。
根据UDM视频标准,将数字编码的视频数据、音频数据和字幕数据当作已经根据MPEG2(运动图像专家组2)系统,将它们复用为基本流的MPEG2流。将已经将视频数据、音频数据和字幕数据的基本流进行复用的MPEG2流称为剪切片段AV流。将剪切片段AV流存储在剪切片段AV流文件中。当记录剪切片段AV流文件时,以1对1的关系根据剪切片段AV文件来创作剪切片段信息文件。将剪切片段信息文件和与其对应的剪切片段AV流文件对称为剪切片段。
剪切片段是盘的记录单元。将以比剪切片段层更高的播放列表层管理剪切片段的再现顺序。播放列表层是指定剪切片段的再现路径的层。播放列表层包含一个和多个播放列表。播放列表由一组播放项目组成。播放项目包含表示剪切片段的再现范围的IN点和OUT点对。当放置播放项目时,可以用任何顺序来再现剪切片段。播放项目可以冗余地指定剪切片断。用时间戳(剪切片段之间的时间)来指定剪切片段AV流的IN点和OUT点。根据剪切片段信息文件的信息将时间戳转换为剪切片段AV流文件的比特位置。
播放列表具有再现以预定顺序表示所有或者全部剪切片段的播放列表的结构。仅仅用播放列表,不能改变剪切片段的再现顺序。此外,播放列表不将交互功能提供给用户。根据本发明的实施方式,将多个播放列表一并存储在一个文件“PLAYLIST.DAT”中。
脚本层是由作为语言规约(specification)的ECMA脚本的扩展的UMD视频脚本组成。UMD视频脚本是基于UMD视频标准将ECMA脚本进行扩展以实现特殊功能的脚本。
脚本层是播放列表层的上层。脚本层由指定播放列表的再现并且设置播放器的命令序列组成。在脚本层中的命令完成包括条件分支的播放列表再现,可以选择根据多个语言的流之一或者可以根据以预定条件选择的播放列表来再现流。使用包括条件分支的播放列表再现的应用的示例包括多故事(multi-story)内容。脚本层将交互功能提供给用户。
根据本发明的实施方式,脚本层由一个文件“SCRIPT.DAT”组成。将文件“SCRIPT.DAT”作为源进行管理。文件“SCRIPT.DAT”包含根据实际ECMA脚本描述的脚本数据、在按钮操作中的用于声音效果等的声音数据、菜单屏幕中由用于背景图像等的图像数据组成的屏幕设计、和诸如按钮图像之类的用于GUI部分的图像数据(位图数据)。
2.根据UMD视频标准的播放器模型下面,将描述再现根据UMD视频标准的数据的再现设备(播放器)的模型,即播放器模型。播放器从盘中读取脚本程序、播放列表和剪切片段信息文件。之后,播放器根据这些文件以再现顺序读取剪切片段AV流文件,并且再现视频数据、音频数据、字幕数据等。
在脚本程序的语言规约中,将再现播放列表的功能块实现为脚本程序中的对象。根据UMD视频标准,将再现播放列表的对象称作电影播放器对象。指定播放列表的再现并且设置播放器的命令是电影播放器对象的方法。由脚本层的方法来控制电影播放器对象。在该点上,电影播放器对象需要将状态改变、再现位置等通知给脚本层的功能。该功能与电影播放器对象将事件发布给脚本程序的操作对应。将与该事件对应的过程描述为事件处理程序。
当作出这样的模型电影播放器对象将信息作为事件传送给脚本程序而脚本程序用一方法控制电影播放器对象时,脚本程序可以控制剪切片段AV流的再现。
图2示意地示出根据本发明的实施方式的播放器模型的例子。电影播放器300是根据UMD视频标准再现视频数据、音频数据和字幕数据的模块。电影播放器对象是脚本程序中的对象,从而脚本程序操作电影对象。换句话说,电影播放器对象是完成电影播放器的功能的脚本程序。
由于认为电影播放器300和电影播放器对象基本上相同,所以在下面的描述中,用相同的附图标记来表示它们。
在图2中,电影播放器300根据播放列表的数据库或者带有作为用户输入310等的较低层(在图2中所示的例子中的本地实施平台301)的方法、或作为较高层的脚本层302的方法的剪切片段信息来读取AV流文件,并且解码和显示剪切片段AV流。
电影播放器对象200的内部依赖于从UMD视频盘再现数据的UMD视频播放器的实施方式。脚本层302提供作为方法和属性的API(应用编程接口)作为黑盒子对象。在这种情况下,UMD视频播放器表示实施电影播放器的实际装置。所有UMD视频播放器根据UMD视频标准来实施电影播放器并且具有与其他UMD视频播放器的再现兼容性。
如图2中所示,电影播放器300具有三个输入/输出路径通过其从本地实施平台301接收控制命令311的路径、通过其将事件312通知给脚本层302的路径和通过其从脚本层302接收方法313的路径。
控制命令311是从本地实施平台301接收的、并且控制电影播放器对象300的操作的命令。本地实施平台301是作为实际装置的UMD视频播放器的原始部分和电影播放器300之间的接口。事件312是从电影播放器300发送到脚本层302的脚本事件。方法313是脚本层302的脚本程序指定到电影播放器300的方法。
电影播放器对象300具有根据UMD视频标准的用于播放列表和剪切片段信息的数据库320。电影播放器对象300将用户的输入310屏蔽(mask)。此外,电影播放器对象300执行例如这样的过程用数据库320将由事件指定的再现位置转换为剪切片段AV流的字节位置。
电影播放器对象300的回放模块321将作为已经将视频数据、音频数据和字幕数据复用的MPEG2 PS(节目流)的剪切片段AV流解码。回放模块321具有三种状态播放、停止和暂停。回放模块312用控制命令和方法在这些状态之间变化(见图3)。
脚本层302是根据UMD视频脚本标准执行脚本程序、控制电影播放器对象300和在显示器上显示数据的层。脚本层302完成内容创作者端想要的情节(scenario)。脚本层302将方法313发布给电影播放器对象300。脚本层302从电影播放器对象300接收事件312。脚本层302与本地实施平台301交换根据用户输入310的按键事件314和使得本地实施平台301在显示器上显示数据的方法315。
例如,由本地实施平台301根据从脚本层302的脚本程序提供到本地实施平台301的方法315来产生在菜单屏幕上的按钮。当用户执行诸如针对一个按钮的选择或者决定之类的操作时,将根据用户输入310的按键事件314从本地实施平台301发送到脚本层302。脚本层302的脚本程序用根据用户输入310的按键事件314来执行处理。
因此,电影播放器300执行针对视频数据、音频数据和字幕数据的解码和显示控制。另一方面,脚本层302执行用于组成诸如按钮之类的图形用户界面的部分图像(下面,将这部分图像称为GUI部分)的排列和显示处理、以及针对GUI部分的选择和决定操作的处理。
本地实施平台301是用于电影播放器对象300和脚本程序的操作的平台。当实际UMD视频播放器是硬件时,将本地实施平台301实施为硬件,从而本地实施平台301中介于硬件和播放器模型之间。
本地实施平台301从用户接收用户输入310,并且确定所接收到的用户输入310是用于电影播放器300的命令还是用于在脚本播放器302中所产生和显示的按钮的命令。当确定结果表示用户输入310是用于电影播放器300的命令时,本地实施平台301将用户输入310转换为作为针对电影播放器300的内部控制命令的控制命令311,并且将控制命令发布给电影播放器300。
当所确定的结果表示用户输入310是在脚本层302中产生和显示的GUI部分的命令时,本地实施平台301根据用户命令310将按键事件314通知给脚本层302。例如,本地实施平台301可以根据脚本层302根据按键事件314指定的方法315在显示器上显示例如按钮图像。换句话说,本地实施平台301和脚本层302可以直接交换事件和方法而不通过电影播放器300。
下面,将详细描述电影播放器300。图3示出电影播放器300的内部结构的例子。如上所述,电影播放器300由数据库320和回放模块321组成。数据库320是存储从盘读取的播放列表的信息和剪切片段的信息(即剪切片段信息)的区域。
回放模块321由解码器引擎322和属性323组成。属性323是表示回放模块321的状态的值。属性323具有两种类型属性323A(只读参数),其值依赖于类似于语言代码的电影播放器300的初始设置;和属性323B(播放器状态),其值依赖于回放模块321的状态。
由例如实际装置的本地装置来设置其值依赖于初始设置的属性323A的值。因此,不由播放列表、剪切片段信息和脚本程序来改变属性323A的值。可以从脚本程序中读取属性323A的值。相反,可以从脚本程序中读取表示回放模块321的状态的属性323B的值。此外,可以从一些脚本程序写属性323B的值。
在这种操作模式中,假设在再现剪切片段AV流之前从盘预先装载播放列表和剪切片段信息。替代地,可以在另一种实施方式中完成电影播放器模型的操作。
电影播放器对象300再现由脚本层302或者本地实施平台301所指定的播放列表。例如,电影播放器300参照数据库320,根据所指定的播放列表获得作为文件的字节位置的剪切片段AV流的再现位置。在回放模块321中,解码器引擎322根据再现位置的信息来控制剪切片段AV流的解码。
如图4中所示,电影播放器300根据播放列表的再现状态而具有三种状态播放、停止和暂停。播放状态表示正在再现播放列表并且已经经过了一段时间。播放状态包括普通再现、诸如两倍速再现和1/2速度再现之类的可变速度再现、快进和快退(fast reverse)。暂停状态表示正在再现播放列表并且时间轴停止。前进和后退再现帧的所谓帧再现是重复暂停状态和播放状态的状态。停止状态表示不是正在被再现播放列表的状态。
电影播放器300的状态依赖于电影播放器300的解码器引擎322的播放、暂停和停止之间的状态变化。根据解码器引擎322的状态变化来更新属性323B的值。
恢复信息324存储在停止状态发生之前紧接着存在的状态。在电影播放器300解码播放列表之后,当电影播放器300处于播放状态时,如果电影播放器300的状态改变到停止状态,则恢复信息324存储在停止状态发生之前紧接着存在的状态。此外,将针对盘的每个标题的恢复信息324存储在作为硬件的播放器的非易失存储器中。盘具有针对盘的每个标题的唯一标识信息(称为标题ID)。恢复信息324和标识信息相关地存储。因此,当具有根据标识信息的标题的盘的状态从停止状态改变为播放状态时,可以从停止状态发生的位置再现数据。
3.电影播放器的事件模型下面,将描述电影播放器300的事件模型。在播放状态中,电影播放器300再现播放列表并且产生各种事件。事件执行被描述被脚本并且称为事件处理程序的处理程序。事件处理程序是在事件发生时调用的方法。将事件发生时开始执行处理程序的程序执行模型称为事件驱动模型。在事件驱动模型中,发生不规则事件。当事件发生时,执行预定的程序。根据本发明的实施方式,脚本程序用事件处理程序组来控制电影播放器对象300的操作。
图5示意示出根据本发明的实施方式的电影播放器300的事件模型。在图5中,事件处理程序onEventA()、onEventB()和onEventC()是接口。将事件处理程序的内容描述为脚本。由例如内容创作者端来创作和实施事件处理程序的内容。在UMD视频脚本标准中,针对电影播放器对象300通知给脚本程序的每个事件提供事件处理程序。在图5所示的例子中,确定当事件A发生时所执行的处理程序是事件处理程序onEventA()。将这种方式应用于事件B和事件C。因此,当事件B发生时,执行对应的事件处理程序onEventB()。当事件C发生时,执行对应的事件处理程序onEventC()。
由于系统端选择在事件发生时调用的事件处理程序,所以内容创作者端不需要在脚本程序中描述确定发生了什么事件的处理。
图6示出当正在再现播放列表时发生的事件的例子。由于在播放列表PlayList的开始处描述章(chaper)标志ChapterMark,所以当从开始再现播放列表时,发生与章标志对应的事件Chapter。当该章改变为另一章的任何时候,将事件Chapter通知给脚本层302并且执行对应的事件处理程序onChapter。当经过针对事件标志EventMark的再现事件时,发生对应的标志事件。在播放列表的结尾,电影播放器300暂停播放列表的再现并且将事件PlalyListEnd通知给脚本层302。脚本层302端使得电影播放器300开始再现在对应事件处理程序onPlayListEnd()中的另一个播放列表。以这种方式,电影播放器300以内容创作者端希望的顺序连续再现播放列表序列。
以这种方式,当操作播放器时,发生各种事件。当将事件的发生通知给上层程序时,较上层程序可以抓取播放器的状态。当上层程序提供根据其被通知的事件所执行的程序(事件处理程序),其可以处理各种事件。将在后面描述事件和事件处理程序。
当内容创作者端没有描述事件处理程序时,上层程序执行内置在播放器中并且在标准中定义的操作(默认事件处理程序)或者忽略该事件。当不需要处理时,如果不描述根据该事件的事件处理程序,则可以互动地忽略该事件。
作为事件模型,可能存在事件收听者模型、单方法模型等。在事件收听者模型中,对象将根据预定事件的收听者注册到播放器对象。当在播放器对象中发生的事件是已经被注册的事件时,播放器对象将事件传送到已经注册了该事件的对象。该对象执行对应的方法。在单方法模型中,只要事件发生就调用一个方法。
根据本发明的实施方式的事件模型比需要诸如事件注册处理和事件删除处理之类的处理的事件收听者模型简单。单个方法模型需要知道发生了什么事件,并且在方法中描述根据发生的每个事件改变处理例程的预先处理。由于由内容创作者端实施方法,所以即使模型是简单的,内容创作者端的负担也增加。此外,在事件发生的任何时候,由于调有一个大的处理程序(方法),所以将使用大的存储器区域并且执行速度将变慢。因此,由于根据本发明的实施方式的模型提供根据独立事件的处理程序(事件处理程序),所以该模型从这些方面来说比其他模型优越。
4.电影播放器对象下面,将描述电影播放器对象300的外部规约。通常,根据ECMA脚本语言规约所定义的对象具有属性和方法。与这种对象类似,如图2和图3中所示,根据本发明的实施方式的电影播放器对象300也具有属性和方法。当外部对象指定对象名称和属性名称时,对象可以直接读取和写属性。替代地,当定义设置属性值的方法setXXX()(其中“XXX”表示属性名称)和读取属性值的方法getXXX()时,方法可以读取和写其他对象的属性。
图7示出电影播放器对象300具有的属性的例子的列表。这些属性对应于图3中所示的属性323。属于图3中所示的只读参数323A的属性如下。属性scriptVersion表示UMD视频脚本的版本。属性languageCode表示被设置到UMD视频播放器的菜单显示语言的语言代码。属性audioLanguageCode表示被设置到UDM视频播放器的音频语言的语言代码。属性subtitleLanguagecod表示被设置到UMD视频播放器的字幕语言的语言代码。
当将盘装载到电影播放器300中时,根据在只读参数323A中设置的属性languangeCode所表示的语言代码来决定从盘读取的脚本文件。当被装载到电影播放器300中的盘不具有根据该语言的脚本文件时,从盘中读取默认的脚本文件。例如,读取在多个脚本文件的开始处记录的文件作为默认脚本文件。
属于图3中所示的播放器状态323b的属性如下。属性playListNumber表示当前正在被再现的播放列表的播放列表号码。属性chaperNumber表示当前正在被再现的章的章号码。属性videoNumber表示当前正在被再现的视频流的视频流号码。属性audioNumber表示当前正在被再现的音频流的音频流号码。属性subtitleNumber表示当前正在被再现的字幕流的字幕流号码。属性playListTime表示当播放列表的开始为0时的播放列表的时间。属性audioFlag指定音频再现和双单声道(dual monaural)LR的ON/OFF(开/关)。属性subtitleFlag表示字幕指示的ON/OFF。
双单声道是将立体声音频的左和右(L、R)声道独立用于单声道音频声道的模式。
当电影播放器300处于播放状态或者暂停状态时,属于播放器状态323B的每个属性表示这些信息。当将电影播放器300改变到停止状态时,将属于播放器状态323B的每个属性备份作为恢复信息324。在该点上,可以清除播放器状态323B的内容。
图8示出电影播放器对象300具有的方法的例子的列表。这些方法对应于图3中所示的方法313。方法play()再现视频数据。方法playChapter()指定章并且再现所指定的章的视频数据。方法stop()停止再现视频数据。方法pause()暂停视频数据的再现。方法playStep()按步地再现视频数据。方法changeStream()改变视频流、音频流和/或字幕流。方法gePlayerStatus()获得电影播放器300的播放状态、停止状态或者暂停状态等。方法reset()停止视频数据的再现并且清除恢复信息342的内容。
根据UMD视频标准,可以在显示屏幕的一部分上显示视频数据。下面四个方法是在显示屏幕的一部分上显示视频数据的方法。方法setPos()设置视频数据的显示位置。方法getPos()获得视频数据的显示位置。方法setSize()设置视频数据的显示大小。方法getSize()获得视频数据的显示大小。
在实际中,集成电影播放器300和本地实施平台301。换句话说,将电影播放器300UMD和本地实施平台301关联为硬件,装载盘并且从盘再现视频数据的UMD播放器,和控制UMD播放器的软件。哪个部分是硬件以及哪个部分是软件依赖于实施的结构。例如,当UMD播放器是个人计算机等的时候,除了盘驱动器以外的其他部分由软件组成。当使用单个UMD播放器的时候,除了盘驱动器以外,例如视频解码器、音频解码器等也可以由硬件组成。因此,在电影播放器300和本地实施平台301之间交换的方法、命令和事件不限于在图2中明确示出的那些。
另一方面,关于用户的按键输入,如图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_POWER提供与电源按键对应的功能。按键VK_POWER_ON提供与电源开(ON)按键对应的功能。按键VK_POWER_OFF提供与电源关(OFF)按键对应的功能。按键VK_MENU提供与显示菜单的菜单按键对应的功能。按键VK_ENTER提供与结束命令或者数据输入的回车(enter)按键对应的功能。按键KV_RETURN提供通过一个步骤返回处理的功能。
按键VK_PLAY提供与开始再现操作的播放按键对应的功能。按键VK_STOP提供与停止再现操作的停止按键对应的功能。按键VK_PAUSE提供与暂停再现操作的暂停按键对应的功能。按键VK_FAST_FORWARD提供与执行快进再现操作的快进按键对应的功能。按键VK_FAST_REVERSE提供与执行快退再现操作对应的快退按键对应的功能。按键VK_SLOW_FORWARD提供与执行慢再现操作的慢(前进)按键对应的功能。按键VK_SLOW_REVERSE提供与执行慢退再现操作的慢(后退)按键对应的功能。按键VK_STEP_FORWARD提供与执行按步前进再现操作的步进(前进)按键对应的功能。按键VK_STEP_REVERSE提供与执行按步后退再现操作的帧(后退)按键对应的功能。
图10示出关于菜单操作的按键输入。按键VK_NEXT提供与输入表示“next(下一个)”的值的下一个指定按键对应的功能。按键VK_PREVIOUS提供与输入表示“previous(前一个)”的值的前一个指定按键对应的功能。使用按键VK_NEXT和VK_PREVIOUS,用户可以分别指定例如到下一章和前一章的移动。
按键VK_UP提供与输入表示“up(上)”的值的上方向指定按键对应的功能。按键VK_DOWN提供与输入表示“down(下)”的值的下方向指定按键对应的功能。按键VK_RIGHT提供与输入表示“right(右)”的值的右方向指定按键对应的功能。按键VK_LEFT提供与输入表示“left(左)”的值的左方向指定按键对应的功能。按键VK_UP_RIGHT提供与输入表示“upper right(右上)”的值的右上方向指定按键对应的功能。按键VK_UP_LEFT提供与输入表示“upper left(左上)”的值的左上方向指定按键对应的功能。按键VK_DOWN_RIGHT提供与输入表示“down right(右下)”的值的右下方向指定按键对应的功能。按键VK_DOWN_LEFT提供与输入表示“down left(左下)”的值的左下方向指定按键对应的功能。使用这些方向按键,用户可以指定例如在显示器上的光标的移动。
按键VK_ANGLE提供与指定用于多角度(multi-angle)视频数据的角度改变操作的角度改变按键对应的功能。按键VK_SUBTITILE提供与指定英语字幕、日语字幕和字幕开/关(ON/OFF)的字幕改变按键对应的功能。按键VK_AUDIO提供与指定诸如环绕模式或者双语模式之类的音频模式的音频改变按键对应的功能。按键VK_VIDEO_ASPECT提供与改变视频数据的宽高比的宽高比改变按键对应的功能。按键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接收图9中所示的按键输入之一作为用户输入310时,本地实施平台301将所接收到的按键输入转换为图11A、图11B和图11C中所示的命令,并且将所转换的命令通知给电影播放器300。
在另一方面,由于图10中所示的按键输入是对GUI的用户输入310,所以需要将这些输入通知给构成屏幕和产生按钮的脚本层302。当本地实施平台301接收作为用户输入的图10所示的按键输入之一时,本地实施平台301将按键输入转换为图2中所示的事件314,并且将事件314通知给脚本层302。图12示出根据按键输入的按键事件314的例子。
图9和图10还示出诸如按键VK_ANGLE、按键VK_SUBTITLE和按键VK_AUDIO的关于流改变操作的按键输入。这些按键输入是完成与脚本程序对电影播放器300执行的流改变方法相同的功能的按键输入。
下面,将详细描述图11A、图11B和图11C中所示的命令。命令uo_timeSearch(playListTime)指定正在从指定的时间再现的播放列表的再现。参量playListTime表示当播放列表的开始为0时播放列表的时间。由于该命令不指定播放列表号码,所以由参量playListTime所表示的时间是在正在被再现的播放列表的范围中的指定时间。命令uo_play()指定以诸如正常再现速率之类的预定再现速度的再现的开始。根据恢复信息324来决定播放列表的开始位置。当不存在与恢复信息324对应的信息时,使得用户的操作无效。该命令对应于执行方法play()而不是指定的播放列表号码。使用该命令,用户不能指定播放列表号码。
命令uo_playChapter(chapterNumber)开始再现从参量chapterNumber所指定的章再现的播放列表。不用指定章的号码,该命令从正在被再现的章的开始处开始再现播放列表。这个命令对应于方法playChapter()而不是指定的章号码。命令uo_playPrevChapter()从之前紧邻的章开始再现播放列表。命令uo_playNextChapter()从紧邻之后的章开始再现播放列表。命令uo_stop()停止再现播放列表。
命令uo_jumpToEnd()跳到播放列表的结尾。该命令对应于使得电影播放器300停止再现并且产生事件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_changeAudioChannel(value)改变音频数据的声道或者双单声道再现的一个声道。当执行该命令时,需要相应地改变标记audioFlag的值。命令uo_setAudioEnabled(Boolean)打开/关闭音频流。当执行该命令时,需要相应地改变标记audioFlag的值。命令uo_setSubtitleEnabled(Boolean)打开/关闭字幕流。当执行该命令时,需要相应地改变标记subtitleFlag的值。命令uo_angleChange()改变显示角度。当将针对该命令的用户操作通知给电影播放器300时,电影播放器300将事件angleChange通知给脚本层302。命令uo_audiochange(audioStreamNumber)改变要被再现的音频流。命令uo_subtitleChange(subtitleStreamNumber)改变要被再现的字幕流。
下面,将详细描述图12中示出的事件和电影播放器300的方法之间的关系。事件menu(菜单)跳到一菜单。本地实施平台301将该事件通知给脚本层302而不是电影播放器300。当脚本层302接收到事件menu时,脚本层302执行事件处理程序onMenu。事件exit(退出)是当本地实施平台301完成UMD视频应用程序时其发布的事件。当脚本层302接收到事件exit时,脚本层302执行事件处理程序onExit。
事件up(上)、事件down(下)、事件left(左)、事件right(右)、事件focusIn、事件focousOut、事件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示出电影播放器200具有的事件的例子和对应的事件处理程序。在图13中所示的事件与图12中所示的事件312对应。电影播放器300将图13中所示的事件通知给脚本层302。事件处理程序是某种接口。由内容创作者使用脚本语言来实施事件处理程序的内容。由于事件处理程序具有这种结构,所以当事件发生时,可以完成内容创作者想要的操作。
当检测到事件mark(标志)时执行事件mark和事件处理程序onMark()。将事件mark嵌入在例如播放列表中。当电影播放器300正在再现播放列表时,电影播放器300从播放列表中检测播放列表。当电影播放器300检测到事件mark时,电影播放器300将事件mark通知给脚本层302。脚本层302执行与事件mark对应的事件处理程序onMark()。类似地,当完成播放列表的再现时,执行事件playListEnd和事件处理程序onPlayListEnd()。当检测到章标记时执行事件chapter(章)和事件处理程序onChapter()。将章标记嵌入在例如播放列表中,并且当电影播放器300正在再现播放列表时电影播放器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示出系统对象具有的事件处理程序的例子。在图14中所示的事件处理程序是本地实施平台301事先具有的事件处理程序。本地实施平台301将事件处理程序通知给脚本层302。
事件menu和事件处理程序onMenu()跳到菜单。事件menu是当通过用户操作按下菜单按键时本地实施平台301通知给脚本层302的事件。脚本层302接收该事件,执行对应的事件处理程序onMenu(),并且用事件处理程序onMenu()排列和显示组成菜单屏幕的GUI部分。事件exit和事件处理程序onExit()是当本地实施平台301完成UMD视频应用程序时其产生的事件和事件处理程序。
当用户操作等指定UMD视频播放器的操作的完成时,本地实施平台301将事件exit通知给脚本层302。当脚本层302接收到事件exit时,脚本用事件处理程序onExit()来执行退出处理。事件autoPlay、事件处理程序onAutoPlay()、事件continuePlay和事件处理程序onContinuePlay()开始执行对应的脚本。
除了系统对象的事件处理程序之外,还存在用于按钮的事件处理程序。然而,用于按钮的事件处理程序不与本发明紧密地相关,所以将省略对它们的描述。
随后,将参照图15中所示的流程图,简要描述当用户输入事件发生时执行所提供的程序的处理的例子。图15示出这样的例子在UMD视频播放器从盘中正在正常再现数据的时,当用户按下“next(下一个)”按键使得UMD视频播放器再现下一章时,UDM视频播放器根据该按键输入跳到下一章,开始再现下一章,并且在屏幕上显示准备好的消息。
在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在屏幕上显示消息(在步骤S19),并且完成事件处理程序的处理(在步骤S20)。
在上述处理中,当用户操作按键“next”使得电影播放器300开始再现下一章时,电影播放器300执行章跳转操作并且当电影播放器300开始再现要被跳转的下一章时在屏幕上显示表示该章的开始的消息。
因此,用户输入事件使得电影播放器300的状态改变。此外,用户输入事件使得新事件发生。使用新事件,电影播放器300可以执行各种处理。
图16示出将盘装载到UMD视频播放器之后直到将盘从其弹出为止的处理。在图17中,阴影的步骤表示正在执行脚本的状态。
当用户将盘放到UMD视频播放器的预定位置中时,其根据预定操作装载盘以便UMD视频播放器可以从该盘再现视频数据(在步骤S30)。当装载盘时,本地实施平台301参照恢复信息324并且从恢复信息324中装载与盘对应的连续再现信息(在步骤S31)。
之后,参照与盘对应的恢复信息324。确定是否存在连续再现信息(在步骤S32)。当存在连续再现信息时,本地实施平台301将事件continuePlay通知给脚本层。脚本层302执行与所通知的事件continuePlay对应的事件处理程序onContinuePlay(在步骤S33)。当在步骤S32的所确定的结果表示不存在与盘对应的连续再现信息时,流程前进到步骤S34。在步骤S34,本地实施平台301将事件autoPlay通知给脚本层302。脚本层302执行与事件autoPlay对应的事件处理程序onAutoPlay。
在步骤S35,根据事件处理程序onAutoPlay和事件处理程序onContinuePlay的内容来执行用于盘的再现操作和其他操作。执行与用于盘的再现操作对应发生的事件和与该事件对应的事件处理程序。
当本地实施平台301产生事件exit时,流程前进到步骤S36。在步骤S36,脚本层302执行与事件exit对应的事件处理程序onExit。事件处理程序onExit执行完成UMD视频应用程序的处理。本地实施平台301根据在例如遥控器上的、作为预定操作的用户输入310来产生事件exit。
当完成根据事件处理程序onExit的脚本处理时,本地实施平台301进行操作。在步骤S37,电影播放器300执行停止再现操作的处理。在该点处,将电影播放器300停止再现操作之前紧邻着存在的状态存储在恢复信息324中作为连续再现信息。完成盘的再现操作(在步骤S38)。在没有完成针对相同盘的再现操作时(在步骤S39),流程前进到步骤S40。在步骤S40,本地实施平台301弹出盘并且完成处理步骤的序列。当执行针对相同盘的再现操作时,流程返回到步骤S31。
图17示出脚本文件的结构的例子。如图1中所示,脚本文件是由脚本层302组成的文件“SCRIPT.DAT”。脚本文件由事件处理程序组和主处理部分组成。事件处理程序组由一个和多个事件处理程序组成。当将事件的发生通知给脚本层302的任何时候,取回和执行与所通知的事件对应的事件处理程序。主处理部分描述在事件处理程序中所使用的全局变量的定义。初始地执行主处理部分一次。
图18示出执行事件处理程序onAutoPlay()的过程的例子。当用户将盘装载到UMD视频播放器300并且使得其从开始执行盘的再现操作时(在步骤S50),电影播放器300执行该过程。在步骤S51,本地实施平台301确定脚本是否包含事件处理程序onAutoPlay()。该脚本包含事件处理程序onAutoPlay()时,本地实施平台301将事件autoPlay通知给脚本层302(在步骤S52)。在步骤S54,脚本层302执行事件处理程序onAutoPlay()。因此,电影播放器300自动开始从所装载的盘再现数据。
相反地,当在步骤S51的确定结果表示脚本不包含事件处理程序onAutoPlay()时,流程前进到步骤S53。本地实施平台301将事件exit通知给脚本层302。在这种情况下,当用户操作在本地实施平台301中实施的菜单屏幕上的用于再现操作的菜单按键时,电影播放器300开始从盘再现数据。当脚本层302具有事件处理程序onExit()时,脚本层302执行事件处理程序onExit()。
图19示出执行事件处理程序onContinuePlay()的过程的例子。当用户将盘装载到UMD视频播放器中并且使得电影播放器300执行连续的再现操作时(在步骤S60),电影播放器300执行该过程。在步骤S61,本地实施平台301确定是否存在与所装载的盘对应的恢复信息324。当恢复信息324不存在时,流程前进到步骤S62。在步骤S62,电影播放器300从开始执行盘的再现操作。
当存在与所装载的盘对应的恢复信息324时,流程前进到步骤S63。在步骤S63,本地实施平台01确定脚本是否包含事件处理程序onContinuePlay()。当脚本包含事件处理程序onContinuePlay()时,本地实施平台301将事件处理程序onContinuePlay()通知给脚本层302。因此,脚本层302执行事件处理程序onContinuePlay()(在步骤S64)。因此,电影播放器300根据事件处理程序onContinuePlay()恢复所装载的盘的再现。
相反,当在步骤S63所确定结果表示脚本不包含事件处理程序onContinuePlay()时,流程前进槽步骤S65。在步骤S65,本地实施平台301执行默认事件处理程序onContinuePlay()。默认事件处理程序onContinuePlay()根据例如恢复信息324简单地从最后的再现结束位置开始再现操作。
事件处理程序onAutoPlay和事件处理程序onContinuePlay的用户接口不限于这些例子。替代地,可以使用各种方法。例如,在图19中,在步骤S60,在用户使得电影播放器300执行连续再现操作之后,本地实施平台301确定是否存在与所装载的盘对应的恢复信息324。替代地,相反,本地实施平台301可以首先确定是否存在与所装载的盘对应的恢复信息324。当存在恢复信息324时,本地实施平台301可以询问用户是否要执行连续再现操作。
图20示出当完成再现操作时所执行的过程的例子。在电影播放器300正在执行盘的再现操作的情况下,当用户使得电影播放器300停止再现操作时(在步骤S70),电影播放器300执行该处理。当将使得电影播放器300停止再现操作的用户输入310输入到本地实施平台301时,其开始退出处理(在步骤S71)。退出处理由例如下面三个步骤组成(1)限制新事件发生(2)丢弃已经被排队的事件处理器程序;和(3)将控制命令uo_stop()发布给电影播放器300。
本地实施平台301在步骤S71执行退出处理。在本地实施平台301停止当前事件处理程序的执行之后(在步骤S72),流程前进到步骤S73。在步骤S73,本地实施平台301将事件exit通知给脚本层302。因此,脚本层302执行onExit()(在步骤S74)。事件处理程序onExit()执行例如当完成再现操作时所执行的预定后续(post)处理和存储用户设置数据的方法setUserData。
在步骤S75,本地实施平台301执行退出处理。在退出处理中,本地实施平台301将连续信息存储到例如非易失存储器中(即,将完成再现操作之前紧邻着存在的状态备份到恢复信息324中)并且使得系统菜单显示在屏幕上。
播放器模型可以再现视频数据、音频数据和字幕数据。由于内容创作者期望的事件在他或者她所期望的再现时间发生并且执行他或者她所期望的对应事件处理程序,所以可以完成他或者她所期望的操作。此外,当用户操作正在执行盘的再现操作的UMD视频播放器时,本地实施平台301将与用户操作对应的命令通知给电影播放器300,以便将播放器的状态改变到用户所期望的状态。此外,本地实施平台301将对应于用户输入的事件通知给脚本层302,结果,脚本层302可以完成与用户操作对应的、内容创作者所期望的操作。当播放器模型具有这种结构时,用户可以互动地操作视频播放器来再现视频数据、音频数据和字幕数据。
5.脚本程序的例子随后,将描述脚本层302的脚本程序的例子。假设内容创作者创作如图21中所示的内容再现的流程。在图21中所示的内容具有播放列表400和401、顶部菜单402和消息403作为显示部件。播放列表400用于显示当装载盘时所自动显示的警告消息。播放列表401是作为内容的例子的电影的主要部分。顶部菜单402具有诸如按钮的GUI部件,用户使用按钮使得播放列表401进行再现。在播放列表401的任何再现时间显示消息403。
此外,在图21中所示的结构中,提供几个事件处理程序。当将盘装载到UMD视频播放器中时,事件处理程序onAutoPlay()自动地从盘再现播放列表400并且将警告消息显示在屏幕上。事件处理程序onPlayListEnd()是当完成播放列表的再现时被调用的事件处理程序。在图21中所示的例子中,当完成播放列表400和播放列表401的再现时,调用事件处理程序onPlayListEnd()。换句话说,事件处理程序onPlayListEnd()确定哪个播放列表的再现完成了。当完成了播放列表400的再现时,事件处理程序onPlayListEnd()开始播放列表401的再现。当完成播放列表401的再现时,事件处理程序onPlayListEnd调用顶部菜单402。
当用户操作菜单按键时调用事件处理程序onMenu()。事件处理程序onMenu()调用顶部菜单402并且将其显示在屏幕上。当经过标志Mark(标志)所指定的再现时间时执行事件处理程序onMark()。在图21中所示的例子中,将标志Mark设置在播放列表401中。当再现播放列表401并且由标志Mark所指定的再现事件经过时,将消息403显示在屏幕上。
在图21中所示的例子中,当将盘装载到UDM视频播放器中时,调用事件处理程序onAutoPlay。事件处理程序onAutoPlay再现播放列表400并且显示警告消息。在播放列表400的再现事件已经过去之后,在播放列表400的结尾处,调用事件处理程序onPlayListEnd。事件处理程序onPlayListEnd确定已经完成了再现播放列表400并且再现下一个播放列表401。在正在再现播放列表401的同时用户操作菜单按键时,调用事件处理程序onMenu。事件处理程序onMenu将顶部菜单402显示在屏幕上。事件处理程序onMenu开始从与顶部菜单402上的预定位置对应的开始处开始再现播放列表401。当播放列表401的再现时间已经经过标志Mark所指定的时间时,调用事件处理程序onMark。事件处理程序onMark在屏幕上显示消息403。当已经完成了再现播放列表401时,调用事件处理程序onPlayListEnd。事件处理程序确定是否已经完成了再现播放列表401并且将顶部菜单402显示在屏幕上。
图22示出完成图21中所示的操作的脚本程序的例子。如上所述,脚本程序具有事件处理程序并且当对应事件发生时执行它们。将脚本程序存储在将在后面描述的文件“SCRIPT.DAT”中。
方法“movieplayer.play()”使得电影播放器300再现播放列表。在括号()中描述要被再现的播放列表号码作为参量。当已经再现了播放列表时,事件playListEnd发生。当事件playListEnd发生时,脚本调用事件处理程序movieplayer.onPlayListEnd()。在该点上,在事件playListEnd之外,还将对象event_info提供给脚本。将已经完成了再现的播放列表的播放列表号码等存储在对象event_info中。该脚本可以改变与对象event_info的内容对应的下一个操作。
6.文件管理结构下面,参照图23,将描述根据UMD视频标准的文件管理结构。将文件层级地管理在目录结构中并且存储在盘上。可以使用由国际标准化组织(ISO)9660或者通用盘格式(UDF)所标准化的盘文件系统。
将文件“TITLEID.DAT”和目录“VIDEO”放置在根目录下。将目录“RESOURE”、目录“CLIP”、目录“STREAM”和文件“PLAYLIST.DAT”放置在目录“VIDEO”下。
文件“TITILEID.DAT”是存储在每个标题中不同的标题标识符(内容的类型)的文件。一个盘具有一个文件“TITLEID.DAT”。
将文件“SCRIPT.DAT”放置在目录“RESOURCE”下面。如上所述,文件“SCRIPT.DAT”存储组成脚本层302的脚本程序。通常,将作为一个文件的文件“SCRIPT.DAT”放置在目录“RESOURCE”下面。替代地,可以将多个文件“SCRIPT.DAT”放置在目的“RESOURCE”下面。在这种情况下,改变文件名的某些部分使得它们变得唯一。多个文件“SCRIPT.DAT”用于不同的显示语言。然而,在这种情况下,每次使用一个文件“SCRIPT.DAT”。
将至少一个剪切片段信息文件放置在目录“CLIP”下。剪切片段信息文件具有由下面部分组成的文件名诸如“00001”之类在具有几个到五个字符的字符串部分(在本例中,是数字)、作为分界符的点和诸如“CLP”之类的扩展部分。扩展部分“CLP”表示文件是剪切片段信息文件。
将至少一个剪切片段AV流文件放置在目录“STREAM”下。剪切片段AV流文件具有由下面部分组成的文件名诸如“00001”之类在具有几个到五个字符的字符串部分(在本例中,是数字)、作为分界符的点和诸如“PS”之类的扩展部分。扩展部分“PS”表示文件是剪切片段AV流文件。根据本发明的实施方式,剪切片段AV流文件是MPEG2(运动图像专家组2)节目流,即将视频流、音频流和字幕流复用其中并且将其存储在由扩展部分“PS”所标识的文件中。
如上所述,剪切片段AV流文件是将视频数据和音频数据压缩编码和时分复用的文件。因此,当读取和解码剪切片段AV流文件时,获得视频数据和音频数据。剪切片段信息文件时描述剪切片段AV流文件的特征的文件。因此,将剪切片段信息文件和剪切片段AV流文件相关联。根据本发明的实施方式,由于剪切片段信息文件和剪切片段AV流文件的文件名的具有几个到五个字符的字符串部分相同,所以可以容易地获得它们之间的关系。
文件“SCRIPT.DAT”是描述脚本程序的脚本文件。根据本发明的实施方式,文件“SCRIPT.DAT”存储使得盘的再现状态互动地改变的程序。在读取其他文件之前从盘中读取文件“SCRIPT.DAT”。
文件“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_PlayList具有16比特的数据长度并且表示其后跟随的块PlayList()的数量。字段number_of_PlayList之后跟随着for循环。for循环描述与字段number_of_PlayList对应的块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()的运动图像。
在上面的例子中,标记capture_enable_flag_PlayList具有1比特的数据长度。替代地,标记capture_enable_flag_PlayList可以具有描述多个辅助使用允许等级的多个比特的数据长度。在这种情况下,当该标记的值为“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_length表示的字节长度的区域用作有效名称。
字段number_of_PlayItems具有16比特的数据长度并且表示随后的块PlayItem()的数量。字段number_of_PlayItems之后跟随着for循环。该for循环描述与字段number_of_PlayItems对应的块PlayItem()。块PlayItem()是播放项目自身。
块PlayList的块PlayItem()分配有标识信息(ID)。例如,在块PlayList()的开始处所描述的块PlayItem()分配有例如0。块PlayItem()以诸如1、2等出现的顺序分配有序号。该序号用作块PlayItem()的标识信息。可以将针对块PlayItem()重复的for循环的参量i用于块PlayItem()的标识信息。块PlayItem()之后跟随有块PlayListMark()。
下面,将参照图25来描述块PlayItem()的内部结构。块PlayItem()以字段length开始。字段length具有16比特的数据长度并且表示块PlayItem()的长度。字段length之后跟随有字段Clip_Information_file_name_length。字段Clip_Information_file name_length具有16比特的数据长度并且表示与PlayItem()对应的剪切片段信息文件的名称的长度。字段Clip_Information_file_name_length具有以字节计算的可变数据长度并且表示与块PlayItem()对应的剪切片段信息文件的名称。在字段Clip_Information_file_name中,从开始起的、由字段Clip_Information_file_name_length表示的字节长度的区域用作有效名称。当由字段Clip_Information_file_name来指定剪切片段信息文件时,可以根据文件名称的上述关系来标识与剪切片段信息文件对应的剪切片段AV流文件。
字段IN_time和字段OUT_time每个具有32比特的数据长度。字段IN_time和字段OUT_time是指定与在块PlayItem()中的字段Clip_Information_file_name所指定的剪切片段信息文件对应的剪切片段AV流文件的再现开始位置和再现结束位置的时间信息。使用字段IN_time和OUT_time,可以指定除剪切片段AV流文件的开始之外的再现开始位置。类似地,使用字段IN_time和字段OUT_time,可以指定除剪切片段AV流文件的结尾之外的再现结束位置。
下面,将描述块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()的类型。根据本实施方式,如图27中所示,定义了三种标志类型章标志、索引标志和事件标志。章是分割播放列表(块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的四个部分将在块PlayList()中所定义的块Mark()与剪切片段AV流文件相关联。换句话说,字段ref_to_PlayItem_id具有16比特的数据长度并且表示块PlayItem()的标识信息。因此,字段ref_to_PlayItem_id标识剪切片段信息文件和剪切片段AV流文件。
字段mark_time_stamp具有32比特的数据长度并且指定剪切片段AV流文件中的标志的时间。下面,将参照图28简要描述字段mark_time_stamp。在图28中,播放列表由分配为0、1和2的三个播放项目组成(PlayItem(#0)、PlayItem(#1)和PlayItem(#2))。播放列表的时间t0包括在播放项目1(PlayItem(#1))中。播放项目0、1和2通过剪切片段信息文件与剪切片段流文件的节目流A、B和C分别对应。
在这种情况下,当将标志指定给播放列表的时间t0时,字段ref_to_PlayItem_id的值是“1”,其表示播放项目1包括时间t0。此外,在字段mark_time_stamp中描述在对应的剪切片段AV流文件中与时间t0对应的时间。
返回到图26的描述,字段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_private_stream_id分别表示其中复用基本流的分组(packet())的流ID(stream_id)和专用分组头部(private_packet_header())的专用流ID(private_stream_id)。
分组(packet())的流ID(stream_id)和专用分组头部(private_packet_header())的专用分组头部基于MPEG2系统的节目流的规定。当剪切片段AV流#0的章结构与剪切片段AV流#1的不同时,使用字段entry_ES_stream_id和字段entry_ES_private_stream_id。当不将块Mark()与预定的基本流相关联时,这两个字段的值为“0”。
下面,参照图29到图33来描述剪切片段信息文件的内部结构。如上所述,剪切片段信息文件“XXXXX.CLP”描述放置在目录“STREAM”下的对应剪切片段AV流文件“XXXXX.PS”的特征等。
图29示出表示剪切片段AV流文件“XXXXX.CLP”的整个结构的语法的例子。剪切片段AV流文件“XXXXX.CLP”以字段presentation_start_time和字段presentation_end_time开始。字段presentation_start_time和字段presentation_end_time每个具有32比特的数据长度,并且表示对应剪切片段AV流文件的开始和结束的时间。作为时间信息,可以使用MPEG2系统的呈现时间戳(PTS)。PTS具有90kHz的准确度。
字段presentation_start_time和字段presentation_end_time之后跟随有具有7比特的数据长度的字段reserved_for_word_alignment和具有1比特的数据长度的标记capture_enable_flag_Clip。字段reserved_for_worrd_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_id。如图30中所示,将块StreamInfo()与基本流相关联。在图30中所示的例子中,当块StreamInfo()的字段stream_id在从“0xE0”到“0xEF”的范围中时,将块StreamInfo()与视频流相关联。当块StreamInfo()的字段stream_id的值为“0xBD”时,将块StreamInfo()与自适应变换声音编码(AdaptiveTransformAcoustic Coding,ATRAC)音频流、线性脉冲码调制(Linear Pulse CodeModulation,LPCM)或者字幕流相关联。当块StreamInfo()的字段private_stream_id的值在从“0x00”到“0x0F”、从“0x10”到“0x1F”和从“0x80”到“0x90”的范围中时,将块StreamInfo()与ATRAC音频流、LPCM音频流和字幕流分别相关联。
在图30中,“0x”表示十六进制记号。还将这种记号应用下面的描述。
块StreamInfo()主要描述两种类型的信息,第一种类型在流中不变化,第二种类型在流中变化。在块StaticInfo()中描述在流中不变化的信息,而用时间信息所指定的变化点在块DynamicInfo()中描述在流中变化的信息。
块StaticInfo()之后跟随有具有8比特数据长度的字段reserved_for_word_alignment。字段reserved_for_word_alignment在块StreamInfo()中以字节对准数据。字段reserved_for_word_alignment之后跟随有字段number_of_DynamicInfo。字段number_of_DynamicInfo具有8比特的数据长度并且表示所跟随的块DynamicInfo()的数量。字段number_of_DynamicInfo之后跟随有for循环。该for循环描述字段pts_change_point和与字段number_of_DynamicInfo对应的块DynamicInfo()。
字段pts_change_point具有32比特的数据长度并且以PTS表示块DynamicInfo()的信息变为有效的时间。每个流开始的时间由字段pts_change_point表示并且等于在文件“XXXXX.CLP”中所定义的字段presentation_start_time。
下面,将参照图31来描述块StaticInfo()的内部结构。块StaticInfo()的内容依赖于对应基本流的类型。可以由图30中所示的字段stream_id和字段private_stream_id的值来标识对应基本流的类型。图31示出其内容依赖于基本流的类型而变化的块StaticInfo(),使用if语句该基本流可以是视频流、音频流或者字幕流。下面,将根据基本流的类型来描述块StaticInfo()。
当基本流是视频流时,块StaticInfo()由字段picture_size、字段frame_rate和标记cc_flag组成。字段picture_size和字段frame_rate每个具有4比特的数据长度。标记cc_flag具有1比特的数据长度。字段picture_size和字段frame_size表示视频流的画面大小和帧频率。标记cc_flag表示视频流是否包含闭路字幕(cloased caption)。当标记cc_flag的值例如是“1”时,视频流包含闭合字幕。字段reserved_for_word_alignment以16比特对准数据。
当基本流是音频流时,块StaticInfo()由基于16比特的数据长度的字段audio_language_code、具有8比特的数据长度的字段channel_configuration、具有1比特的数据长度的标记lfe_existence和具有4比特的数据长度的字段sampling_frquency组成。字段audio_language_code表示在音频流中所包含的语言代码。字段channel_configuration表示诸如单声道、立体声、多声道之类的音频数据的属性。字段lfe_existence表示音频流是否包含重低音(low frequencyemphasis)声道。当字段lfe_existence的值是例如“1”时,音频流包含重低音声道。字段sampling_frequency表示音频数据的采样频率。字段reserved_for_word_alignment以16比特位置对准。
当基本流是字幕流时,块StaticInfo()由具有16比特的数据长度的字段subtitle_language_code和具有1比特的数据长度的标记configurable_flag组成。字段subtitle_language_code表示在字幕流中所包含的语言代码。字段subtitle_language_code表示字幕流是正常字幕还是解说字幕(例如,用于描述画面的特殊字幕)。标记configurable_flag表示是否允许改变所显示的字幕流的字符的大小和位置。当标记configurable_flag的值是例如“1”时,其表示允许改变所显示的字幕流的字符的大小和位置。字段reserved_for_word_alignment以16比特位置对准。
下面,将参照图32来描述块DynamicInfo()的内部结构的例子。块DynamicInfo()以具有8比特的字段reserved_for_word_alignment开始。在字段reserved_for_word_alignment之后的组成部分依赖于基本流的类型。由图30中所描述的字段stream_id和字段private_stream_id来标识基本流的类型。在图32中,块DynamicInfo()的内容依赖于基本流的类型而变化,使用if语句其可以是视频流、音频流或者字幕流。下面,将根据基本流的类型来描述块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()不定义动态变化的属性。
下面,将参照图33来描述块EP_map()的内部结构的例子。块EP_map()用时间信息和位置信息来表示每个基本流的比特流的有效解码开始位置(进入点)。位置信息可以是用于在其上记录基本流的记录介质的最小存取单元。可以从块EP_map()所表示的位置解码每个基本流。
由于可以计算固定速率流的有效解码开始位置。在另一方面,对于可变速率流和诸如根据MPEG视频压缩编码系统的流之类的、其数据大小在每个存取单元中变化的流,块EP_map()是用于随机存取数据的信息。
块EP_map()以具有8比特数据长度的字段reserved_for_word_alignment开始。字段reserved_for_word_alignment以16比特对准数据。字段reserved_for_word_alignment之后跟随有字段number_of_sream_id_entries。字段number_of_sream_id_entries具有8比特的数据长度并且表示在块EP_map()中的基本流的数量。第一for循环描述与字段number_of_sream_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比特的数据长度并且标识基本流的类型的、如图30所示的字段stream_id和字段private_stream_id。字段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每个具有32比特的数据长度并且表示它们自己表示进入点。字段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视频标准的基本流。然而,本发明不限于这个例子。例如,视频流的基本流可以是根据MPEG4-Visual(视觉)标准或者MPEG4-AVC标准的基本流。类似地,根据本实施方式,如上所述,音频流的基本流是基于ATRAC音频流的基本流。然而,本发明不限于这样的例子。替代地,音频流的基本流可以是基于例如MPEG1/2/4音频系统的基本流。
7.盘再现设备下面,将描述根据本发明的实施方式的盘再现设备。图34示出根据本发明的盘再现设备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的工作存储器。
提供到输入接口115的是从用户用其执行输入操作的输入装置输入的输入信号。输入装置例如是用户使用其利用例如红外线信号来远程操作盘再现设备100的遥控器和安置在盘再现设备100上的按键。输入接口115将从输入装置提供来的输入信号转换为用于CPU 112的控制信号并且输出该控制信号。
以图23到图33所示的格式记录在盘101上的是播放列表、脚本程序、剪切片段信息文件、剪切片段AV流文件等。当将盘101装载到盘驱动器102中时,其自动地或者根据用户的输入操作从盘101中再现数据。将从盘101读取的脚本文件、播放列表文件和剪切片段信息文件提供给CPU 112并且存储在例如CPU 112的RAM中。CPU 112根据在RAM中所存储的数据和脚本程序从盘101中读取剪切片段AV流文件。
将从盘101中读取的剪切片段AV流文件临时存储在存储器113中。视频解码器116根据从CPU 112接收来的命令对存储器113中所存储的剪切片段AV流文件的视频流和字幕流进行解码。CPU 112执行诸如用于所经解码的视频数据和字幕数据的放大处理或者缩小处理、用于视频流和字幕流的合成处理或者添加处理之类的图像处理,并且获得视频数据的一个流。由视频解码器116和视频输出接口118来执行图像处理。视频数据由存储器113来缓存并且提供给视频输出接口118。视频输出接口118将所提供的视频数据转换为模拟视频信号,并且将模拟视频信号提供给视频输出终端120。
类似地,音频解码器117根据从CPU 112接收来的命令对存储器113中所存储的剪切片段AV流文件的音频流进行解码。经解码的音频数据在存储器113中进行缓存并且提供给音频输出接口119。音频输出接口119将所提供的音频数据转换为例如模拟音频信号,并且将该模拟音频信号提供给音频输出终端121。
在本例中,图34中所示的每个部分由独立的硬件组成。然而,本发明不限于这个示例。例如,视频解码器116和/和音频解码器117可以由在CPU 112上操作的软件组成。
图35A和35B是详细描述图34中所示的盘再现设备100的操作的功能框图。盘再现设备100主要由操作系统201和视频内容再现部分210组成。视频内容再现部分210基本上是在操作系统201上操作的软件程序。替代地,视频内容再现部分210可以由集成操作的软件和硬件组成。在下面的描述中,假设视频内容再现部分210是由软件组成的。在图35A和图35B中,省略盘驱动器102。
当将盘再现设备100通电时,操作系统201初始地启动CPU 112并且执行诸如用于每个部分的初始设置之类的必要处理,并且从ROM中读取应用程序(在本例中,视频内容再现部分210)。当视频内容再现部分210正在操作时,操作系统201提供诸如从盘101中读取文件和为视频内容再现部分210解释文件系统之类的基本服务。例如,操作系统201通过与从视频内容再现部分210提供来的文件读取请求对应的驱动器接口114来控制盘驱动器102,并且从盘101中读取数据。在操作系统201的控制下,将从盘101中读取的数据提供给视频内容再现部分210。
操作系统201具有通过例如时分控制虚拟地并行控制多个软件模块的多任务处理功能。换句话说,组成图35A和35B中所示的视频内容再现部分210的每个模块都通过操作系统的多任务处理功能并行地进行操作。
下面,将更加具体地描述视频内容再现部分210的操作。视频内容再现部分210具有多个内部模块并且完成下面功能。
(1)视频内容再现部分210确定所装载的盘101是否为根据UMD视频标准的盘(下面将这种盘称为UMD视频盘)。
(2)当确定的结果表示所装载的盘101是UMD视频盘时,视频内容再现部分210从盘101中读取脚本文件并且将该脚本文件提供给脚本控制模块211。
(3)当确定的结果表示所装载的盘101是UMD视频盘时,视频内容再现部分210还读取组成数据库的文件(即,播放列表文件、剪切片段信息文件等)并且将这些文件提供给播放器控制模块212。
下面,将描述视频内容再现部分210的模块的操作。
脚本控制模块211解释在脚本文件“SCRIPT.DAT”中所描述的脚本程序并且执行它。如在播放器模型中所描述的,由根据脚本程序而控制的图形处理模块219来实现GUI,所述GUI创作和输出菜单屏幕的图像、与用户输入对应地移动光标和改变菜单屏幕。通过执行脚本程序,脚本控制模块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将内容数据存储在存储器113中作为缓存器的内容(substance)215A。内容数据提供模块213根据来自视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218的请求,控制缓存器控制模块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流解复用为这些流。根据本发明的实施方式,根据视频复用系统和MPEG2系统节目流格式来复用多个基本流,从而形成剪切片段AV流。因此,视频读取功能、音频读取功能和字幕读取功能具有用于MPEG2系统节目流的解复用器功能。
因此,视频读取功能读取放置在视频流的预定位置的字段stream_id(见图30)的值,并且保存该值。类似地,音频读取功能和字幕读取功能读取字段stream_id和字段private_stream_id(见图30)的值,并且保存该值。将字段stream_id和字段private_stream_id的值用于分析所提供的比特流。
视频解码器控制模块216使得缓存器控制模块215的视频读取功能从存储器113中读取视频流的一个视频存取单元,并且将该视频存取单元提供给视频解码器116。视频解码器控制模块216控制视频解码器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直接输出视频数据。当输出宽高比为4∶3,图形处理模块219执行将图像的高度与输出视频装置的屏幕的高度匹配的压缩处理,将黑色部分插入到图像的左侧和右侧,并且输出所产生的图像。当输出视频装置的宽高比为4∶3并且输出宽高比为4∶3时,图形处理模块219直接输出视频数据。当输出宽高比为16∶9时,图形处理模块219执行将图像的宽度与输出视频装置的屏幕宽度匹配的压缩处理,将黑色部分插入到图像的上面和下面部分中,并且输出所产生的图像。
图形处理模块219还根据来自播放器控制模块212的请求执行捕获正在被再现的视频信号的处理,并且将所请求的视频信号向其输出。
视频输出模块241排他地使用存储器113的一部分作为先进先出(FIFO)缓存器。视频输出模块241将图形处理模块219所处理的视频数据临时存储在该缓存器中,并且以预定的定时从其读取视频数据。从视频输出接口118输出从该缓存器读取的视频数据。
音频输出模块242排他地使用存储器113的一部分作为FIFO缓存器。音频输出模块242将从音频输出接口119输出的音频输出存储到缓存器中,并且在预定的定时从其读取音频数据。从音频输出接口输出从缓存器读取的音频数据。
当内容的音频模式为双单声道(例如,双语)时,音频输出模块242根据预定的音频输出模式输出音频数据。当音频输出模式为“主音频”时,音频输出模块242将在例如存储器113中的左声道的音频数据进行拷贝并且输出左声道的音频数据和来自存储器113的音频数据。因此,音频输出模块242仅仅输出左声道的音频数据。当音频输出模式为“副音频”时,音频输出模块242拷贝在例如存储器113中的右声道的音频数据,并且输出右声道的音频数据和来自存储器113的音频数据。因此,音频输出模块242仅仅输出右声道的音频数据。当音频输出模式为“主和副音频”或者内容为立体声时,音频输出模块242直接输出音频数据。
用户可以在例如视频内容再现部分210产生的菜单屏幕上互动地设置音频输出模式。
非易失存储器控制模块250将数据写到在视频内容再现部分210的操作完成以后其数据不被擦除的区域(将该区域称为非易失区域),并且根据从播放器控制模块212接收的命令读取数据。非易失存储器控制模块250具有用标题ID(Title_ID)的关键字将数据Saved_Player_Status和数据Saved_Player_Data的多个组进行存储的功能。非易失存储器控制模块250存储播放器控制模块212具有的数据Backup_Player_Status作为Saved_Player_Status。数据Backup_Player_Status对应于在完成播放器控制模块212的操作之前紧邻着存在的例如播放器状态323B的数据。数据Saved_Player_Status对应于恢复信息324。此外,非易失存储器控制模块250存储播放器控制模块212具有的User_Data作为数据Saved_User_Data。数据User_data是用户设置到播放器控制模块212的预定数据。
当盘再现设备100具有作为非易失存储器的闪存等时,非易失存储器控制模块250用盘101的标题ID将数据Saved_Player_Status和数据Saved_User_Data的组存储在闪存的预定区域中。非易失存储器控制模块250存储数据的存储介质不限于闪存,还可以是硬盘等。
8.音频和字幕流的自动选择下面,将描述根据本发明的实施方式的音频和字幕流的自动选择。根据本实施方式,当已经复用多个不同语言的音频流和不同语言的多个字幕流时,自动地选择适当语言的音频流。类似地,自动地选择适当的语言的字幕流。
根据本发明,在使用诸如“日语”和“英语”的语言名称的普通音频语言设置之外,还可以设置状态“原始语言”。当播放器的音频语言设置已经是“原始语言”时,字段地选择适当语言的音频流。此外,当自动地选择字幕和音频流时,防止音频和字幕流动语言相同的情况。
“原始语言”表示创作内容的语言。例如,如果以日语创作内容并且其语言主要是日语,则原始语言是日语。可以在内容创作者端设置原始语言。
下面,参照图36到图38,将简要描述根据本发明的本实施方式的音频和字幕流的自动选择。在图36到图38中,假设在盘101中所包含的流501中,由(1)代表的音频流是原始语言。在本例中,没有定义字幕的原始语言。
作为第一个例子,参照图36,将描述在播放器设置500中将音频的语言设置为“原始语言”并且将字幕的语言设置为“日语”的情况。此外,假设在盘中所包含的内容是在美国创作的电影,而且盘的流501是两种类型的音频流(1)英语(=原始语言)和(2)日语以及两种类型的字幕流(1)英语和(2)日语。在这种情况下,在播放器从盘中再现内容之后紧接着选择的流502是原始语言(1)英语的音频流和(2)日语的字幕流。在图36中所示的例子中,由于适当地选择了音频流和字幕流,所以没有发生问题。
作为第二个例子,如图37中所示,在播放器设置500中,将音频的语言设置到“原始语言”并且将字幕的语言设置到“日语”,这与第一个例子的那些相同。此外,假设在盘上所记录的内容是在日本创作的电影,而且盘的流501是两种类型的音频流(1)日语(=原始语言)和(2)音频,以及两种类型的字幕流(1)英语和(2)日语。在这种情况下,由播放器从盘中再现内容之后紧邻着选择的流是作为原始语言(1)日语的音频流和字幕流(2)日语。因此,选择相同的语言。在这种情况下,由于不需要日语字幕,所以认为这种选择不是用户友好的。
为了解决第二例子的问题,如图38中所示,当已经在播放器设置500中将音频的语言设置为“原始语言”时,并且当原始语言匹配字幕语言时,关于所选择的流502,可以完成关闭字幕的显示的功能。
换句话说,当已经将播放器设置500的音频的语言设置为“原始语言”并且(作为自动选择的结果)音频的语言匹配于字幕的语言时,将使得字幕显示或者不显示的、在播放器的属性信息中所包含的属性subtitleFlag(属性323的播放器状态323B,见图3)设置到表示字幕关闭的值。使用这种规则,当选择音频和字幕的语言时,可以防止输出其语言与音频的相同的字幕流。
下面,将详细描述根据本发明的实施方式的音频和字幕流的自动选择。首先,将描述需要提供给播放器设备端以适当和自动地选择音频和字幕的信息。已经参照图7描述了控制流的再现的、电影播放器300的属性323(见图3)。在属性323中,用于音频的属性audioLanguageCode、属性audioNumber和属性audioFlag,以及用于字幕的属性subtitleLanguageCode、属性subtitleNumber和属性subtitleFlag与本实施方式特别相关。
如上所述,属性audioLanguageCode表示已经设置在UMD视频播放器中的音频语言的语言代码。换句话说,属性audioLanguageCode表示要为音频选择的语言。作为属性audioLanguageCode的值,可以使用在例如国际标准化组织(ISO)639-1中所定义的语言代码。在ISO639-1中,例如将英语缩写为“en”而将日语缩写为“jp”。根据本实施方式,作为属性audioLanguageCode的值,添加没有在ISO639-1中定义的“00”。使用值“00”表示“原始语言”。
如上所述,属性audioNumber表示正在被再现的音频流的流号码。属性audioNumber是由音频流ID(stream_ID)和专用流ID(private_stream_id)(见图30)组成的16比特值。在16个比特中,将高位的8比特用于流ID,而将低位的8比特用于专用流ID。可以由这16比特值来唯一标识剪切片段AV流文件的音频流。
属性audioFlag表示音频流的再现信息。图39示出属性audioFlag可以具有的值的例子。当属性audioFlag的值为“0“时,关闭音频的再现,使得不将音频进行再现。当该值为“1”时,再现由属性audioNumber所表示音频流。在该点上,考虑由属性audioNumber所表示的音频流是双单声道的情况,即立体声的左和右声道的内容不同的情况,当该值为“2”时,只再现双单声道的左声道,而当该值为“3”时,只再现双单声道的右声道。当音频流为双单声道而且属性audioFlag的值为“1”时,再现双单声道的左和右声道。
属性subtitleLanguageCode表示已经被设置到UMD视频播放器中的字幕的语言的语言代码。换句话说,属性subtitleLanguageCode表示要为字幕选择的语言。作为属性subtitleLanguageCode的值,类似于音频流的情况,可以使用例如国际标准化组织(ISO)639-1中所定义的语言代码。
如上所述,属性subtitleNumber表示当前正在被再现的字幕流的号码。属性subtitleNumber的值是由字幕流的流ID(stream_id)和专用流ID(private_stream_id)(见图30)组成的16比特值。在这16个比特中,高位的八个比特用作流ID,而低位的八个比特用于专用流ID。可以由这16比特的值来唯一地标识剪切片段AV流的字幕流。
属性subtitleFlag表示字幕流的再现状态。图40示出属性subtitleFlag的值的例子。当属性subtitleFlag的值为“0”时,将字幕显示关闭,使得不对字幕进行显示。当该值为“1”时,打开字幕显示,使得字幕被显示。
下面,将描述必须将其提供给内容端以适当和自动地选择音频和字幕的信息。内容端在剪切片段信息文件中描述音频流的属性信息和字幕流的属性信息。如参照图29和图31所述,剪切片段信息文件包含唯一地标识在对应AV流中所复用的每个基本流的字段stream_id和字段private_stream_id以及图31中所示的属性信息。在图31所示的属性信息中,用于音频流的字段audio_language_code和用于字幕流的字段subtitile_language_code与本发明的这个实施方式特别相关。
可以将多种语言的音频流复用到剪切片段AV流文件中。因此,需要指示已经被复用的多种语言的哪个音频流是原始语言的音频流。根据本实施方式,在图29中所示的剪切片段信息文件中,将在for循环所排列的流中首先到来的音频流的语言定义为原始语言。由与音频流对应的字段audio_language_code(见图31)来表示原始语言的语言代码。
可以在脚本层302上用参照图8描述的方法来设置电影播放器300的属性323(播放器状态323B)。用方法play()、方法playChapter()和方法changeStream()来设置音频流和字幕流。在这些方法中,方法changeStream()是将当前流改变为所需要的流的方法,不是自动选择流的机制。因此,将省略对方法changeStream()的描述。方法playChapter()等效于用参量chapterNumber替代作为方法play()的参量之一的参量playListTime,下面将仅仅描述method()。
图41A和图41B列出了方法play()的参量的例子。当以预定的方式将这些参量给予方法play()时,可以开始与所指定的流号码对应的视频流、音频流和字幕流的再现。由例如公式(1)来表示method()的语法。换句话说,参量由定界符(在本例中,命令“,”)来定界并且以预定的顺序排列。当省略参量时,仅仅描述定界符。
Movie.play(playListNumber,playListTime,menuMode,pauseMode,video_strm,audio_strm,audio_status,subtitle_strm,subtitle_status)....(1)参量playListNumber表示要被再现的播放列表的播放列表号码。参量playListTime表示从播放列表的开始的时间。当从播放列表的开始再现内容时,将参量playListTime的值设置到“0”。参量menuMode的值是“真”或者“假”,其表示在菜单模式中再现内容。当参量menuMode的值为“真”时,其表示在正常模式中再现内容。参量pauseMode的值是“真”或者“假”。当参量pauseMode的值为“真”时,其表示备用作为暂停。当参量pauseMode的值为“假”时,其表示以正常速度开始再现。参量video_strm表示要被再现的视频流。参量video_strm的值是“-1”或者“-2”。当参量video_strm的值为“-1”时,其表示由电影播放器300自动地选择要被再现的视频流。当参量video_strm的值为“-2”时,其表示不改变要被再现的视频流。
包括参量audio_strm的声音参量时用于音频流和字幕流的再现的参量。这些参量与本发明的这个实施方式特别相关。参量audio_strm是用其将值设置为电影播放器300的属性audioNumber(见图7)的参量。使用参量audio_strm将16比特的流ID(stream_id)和专用流ID(private_stream_id)所表示的音频流号码设置到属性audioNumber中。参量audio_strm的值是“-1”或者“-2”。当参量audio_strm的值为“-1”时,其表示在电影播放器300中自动地选择适当的音频流,并且将所选择的音频流的音频流号码设置到属性audioNumber中。当参量audio_strm的值为“-2”时,其表示再现以当前所设置的属性audioNumber的值开始,而不进行改变。
参量audio_status是用其设置电影播放器300的属性auidoFlag(见图7)的参数。当参量audio_status的值为“0”、“1”或者“3”时,将该值直接设置到属性audioFlag中。当参量audio_status的值为“-2”时,其表示保留属性audioFlag的当前值。
参量subtitle_strm是用其将值设置到电影播放器300的属性subtitleNumber(见图7)中的参量。使用参量subtitle_strm来将由16比特的流ID(stream_id)和专用流ID(private_stream_id)所表示的字幕流号码设置到subtitleNumber中。参量subtitle_strm的值为“-1”或者“-2”。当参量subtitle_strm的值为“-1”时,其表示在电影播放器300中自动地选择适当的字幕流,并且将所选择的字幕流的字幕流号码设置到属性subtitleNumber中。当参量subtitle_strm的值为“-2”时,其表示再现以当前所设置的属性subTitleNumber的值开始,而不进行改变。
参量subtitle_status是用其设置电影播放器300的属性subtitleFlag(见图7)的参数。当参量subtitle_status的值为“0”或者“1”时,将参量subtitle_status的值直接设置到属性subtitleFlag中。当参量subtitle_status的值为“-1”时,在电影播放器300中将属性subtitleFlag的值自动地设置到适当的值。当参量subtitle_status的值为“-2”时,保留属性subtitleFlag的当前值。
属性audioFlag不包含电影播放器300的自动设置,而属性subtitleFlag包含电影播放器300的自动设置。这是因为当将音频和字幕设置到相同的语言时,自动关闭字幕的显示,使得不显示字幕。
下面,将更加具体地描述音频流和字幕流的自动选择处理。图42示出从多种类型的音频流和字幕流中自动选择音频流和字幕流的流程。当将盘装载到播放器设备中时,用户选择要被再现的视频流(在步骤S80)。在步骤S81自动地选择与所选择的视频对应的音频流。对应于所选择的结果,在步骤S82设置属性audioFlag。参照属性audioFlag,在步骤S83选择字幕流。对应于所选择的结果,在步骤S84设置属性subtitleFlag 。
下面,将详细参照图43和图44中所示的流程图来描述在图42中所示的步骤S81自动选择音频流的处理的例子。在音频流的自动选择处理中,使用(1)语言代码、(2)声道数和(3)剪切片段信息文件中的音频流的排列。在这些属性信息中,(1)语言代码的优先级最高,(2)声道数的优先级次之,而(3)在剪切片段信息文件中的音频流的排列的优先级最低。
在图43和图44中,附图标记A表示流程前进到由相同的附图标记A表示的部分。
当开始音频流的选择处理时(在步骤S90),确定是否已经将表示在方法play()中所再现的音频流的流号码的参量audio_strm的值是否设置到“-1”或者是否已经省略了该值(在步骤S91)。如上所述,当参量audio_strm的值为“-1”时,指定音频流的自动选择。
当所确定的结果表示已经将出了值“-1”以外的值设置到参量audio_strm中时,流程前进到步骤S92。在步骤S92,将参量audio_strm的值设置到属性audioNumber中。选择由参量audio_strm所表示的音频流。之后,流程前进到图42中所示的步骤S82。在步骤S82,在电影播放器300中以与所选择的音频流对应的预定方式设置属性audioFlag。当所选择的音频流的音频声道数为5.1声道时,将属性audioFlag的值设置为例如“1”,表示是否再现音频流。当已经在步骤S92选择音频流时,作为错误终止该处理。
当已经作为错误终止该处理时,UMD视频播放器执行的操作依赖于其实施方式。当已经作为错误终止该处理时,在保留属性audioNumber的情况下执行下一个处理。将这种错误处理应用于图43和图44中的其他错误处理。
当在步骤S91的确定结果表示已经将参量audio_strm的值设置为“-1”或者进行省略时,流程前进到步骤S93。在步骤S93,确定是否不存在由电影播放器300的属性audioNumber所标识的音频流或者没有定义属性audioNumber的值。当存在由属性audioNumber所标识的音频流时,流程前进到步骤S94。在步骤S94,选择由属性audioNumber所标识的音频流。之后,流程前进到图42中所示的步骤S82。在电影播放器300中以与所选择的音频流对应的预定方式设置属性audioFlag。当还没有选择音频流时,作为错误终止该处理。
当在步骤S93的确定结果表示不存在由电影播放器300的属性audioNumber所标识的音频流或者没有定义属性audioNumber的值时,流程前进到步骤S95。在步骤S95之后,特别地执行用于音频流的自动选择处理。在图42中所示的步骤S81中的音频流的自动选择处理表示图43中所示的流程图整个流程。在图43中所示的流程图的步骤S95之后的处理是当参量audio_strm的值为“1”(其表示自动选择)时所执行的音频流的自动选择处理。
首先,执行基于(1)语言代码的自动选择处理。执行该处理,从而优先地选择其语言与播放器的音频语言设置的相同的音频流。在步骤S96,确定在电影播放器300中的属性audioLanguageCode的值是否为“00”。当确定结果表示属性audioLanguageCode的值表示“原始语言”时,流程前进到步骤S101。
在从S101到S104的步骤中,确定在内容端设置了哪种“原始语言”。在步骤S101,检查剪切片段信息文件(见图29)的块StreamInfo()中的音频流的排列,并且获得在该排列中的首先到来的音频流的语言代码。之后,确定是否存在其语言代码与所获得的语言代码相同并且其音频声道数等于或者小于已经被设置到UMD视频播放器中的音频声道数的音频流。当确定结果表示存在这种音频流时,流程前进到步骤S102。当确定结果表示不存在这种音频流时,流程前进到步骤S103。
在步骤S102,在满足步骤S101中的条件的这些音频流中选择其音频声道数最大的音频流。当UMD视频播放器的音频声道设置是例如5.1声道而且存在其语言代码与在块StreamInfo()中首先到来的音频流的语言号码相同并且其音频声道数是2声道和5.1声道的两个音频流时,选择其声道数为5.1声道的音频流。当存在其音频声道数相同的多个音频流时,选择在块StreamInfo()中较早到来的音频流。之后,流程前进到图42中所示的步骤S82。在步骤S82,在电影播放器300中以与所选择的音频流对应的预定方式来设置属性audioFlag。
在步骤S103,确定是否存在其音频声道数等于或者小于已经被设置到UMD视频播放器中的音频声道数的音频流。当存在这种音频流时,选择在这些音频流中其音频声道数最大的音频流(在步骤S104)。当存在其音频声道数相同的多个音频流时,选择在块StreamInfo()中较早到来的音频流。之后,流程前进到图42中所示的步骤S82。在电影播放器300中以与所选择的音频流对应的预定方式来设置属性audioFlag。
当在图中S103的确定结果表示不存在这种音频流时,完成根据图43和图44所示的流程图的处理。在这种情况下,虽然还没有选择音频流,但是流程前进到步骤S82。在步骤S82,以预定方式设置属性audioFlag。
当在图43中所示的步骤S96的确定结果表示电影播放器300的属性audioLanguageCode的值不表示“原始语言”时,流程前进到步骤S97。在步骤S97,确定是否存在其语言代码与电影播放器300的属性audioLanguageCode的语言代码相同并且其音频声道数等于或者小于已经被设置到UMD视频播放器的音频声道数的音频流。当确定结果表示存在这种音频流时,流程前进到步骤S98。当确定结果表示不存在这种音频流时,流程前进到步骤S99。
在步骤S98之后,与步骤S102类似,在满足步骤S97中的条件的音频流中选择其音频声道数最大的音频流。当存在其音频声道数相同的多个音频流时,选择在块StreamInfo()中较早到来的音频流。之后,流程前进到图42中所示的步骤S82。在电影播放器300中以与所选择的音频流对应的预定方式设置属性audioFlag。
在步骤S99,类似于步骤S103,确定是否存在其音频声道数等于或者小于已经被设置到UMD视频播放器的音频声道数的音频流。当确定结果表示存在这种音频流时,在这些音频流中选择其音频声道数最大的音频流(在步骤S100)。当存在其音频声道数相同的多个音频流时,选择在块StreamInfo()中较早到来的音频流。之后,流程前进到图42中所示的步骤S82。在电影播放器300中以与所选择的音频流对应的预定方式来设置属性audioFlag。
当步骤S99的确定结果表示不存在这种音频流时,完成根据图43和图44所示的流程图的处理。在这种情况下,虽然还没有选择音频流,但是流程前进到步骤S82。在步骤S82,以预定的方式设置属性audioFlag。
下面,参照图45中所示的流程图,详细描述在图42中所示的步骤S83中自动选择字幕流的处理的例子。当选择字幕流时(在步骤S110),流程前进到步骤S111。在步骤S111,确定在方法play()中是否已经将表示要被再现的字幕流的流号码的参量subtitle_strm的值设置为“-1”或者是否已经省略了该值。如上所述,当将参量subtitle_strm的值设置为“-1”时,指定字幕流的自动选择。
当所确定的结果表示已经将参量subtitle_strm的值设置到除了“-1”之外的其他值时,流程前进到步骤S112。在步骤S112,将参量subtitle_strm的值设置到属性subtitleNumber中并且选择有参量subtitle_strm所标识的字幕流。之后,流程前进到图84中所示的步骤S84。将属性subtitleFlag设置在电影播放器300中。当在步骤S112中没有选择字幕流时,将作为错误将处理终止。
当作为错误将处理终止时,UMD视频播放器执行的操作依赖于其实施。当已经作为错误终止了处理时,终止根据图45中所示的流程图的处理,而且虽然还没有选择字幕流,也执行下一个操作。将该错误处理应用于图45中的其他错误处理。
当步骤S111中的确定结果表示参量subtitle_strm的值是“-1”或者已经省略了该值时,流程前进到步骤S113。在步骤S113,确定是否不存在有电影播放器300的属性subtitleNumber所标识的字幕流或者没有定义属性subtitleNumber。当存在由属性subtitleNumber标识的字幕流时,流程前进到步骤S114。在步骤S114,选择由属性subtitleNumber所标识的字幕流。之后,流程前进到图42中所示的步骤S84。当在步骤S114中还没有选择字幕流时,作为错误将处理终止。
当在步骤S113的确定结果表示不存在由电影播放器300的属性subtitleNumber所标识的字幕流或者没有定义属性subtitleNumber的值时,流程前进到步骤S115。在步骤S115之后的步骤是字幕流的自动选择处理。
在步骤S116,检查剪切片段信息的块StreamInfo()字幕流,并且获得字幕流的语言代码。确定是否存在其语言代码与电影播放器300的属性subtitleLanguageCode的语言代码相同的字幕流。当所确定的结果表示存在这种字幕流时,流程前进到步骤S117。在步骤S117,选择字幕流。当存在满足步骤S116中的条件的多个字幕流时,选择在剪切片段新文件中在块StreamInfo()中较早到来的字幕流。之后,流程前进到图42中所示的步骤S84。
当在步骤S116中的确定结果表示不存在满足该条件的字幕流时,流程前进到步骤S118。在步骤S118中,由于不存在可以被选择的字幕流,所以将属性subtitleFlag的值设置到“0”,其表示不显示字幕。
下面,将参照图46中所示的流程图,详细描述42中所示的步骤S84中自动设置属性subtitleFlag的处理的例子。当开始属性subtitleFlag的字幕设置时(在步骤S120),流程前进到步骤S121。在步骤S121,确定是否已经将表示方法play()的字幕的再现的状态的参量subtitle_status的值设置到了表示自动设置的“-1”,或者已经省略了该值。当已经将参量subtitle_status的值设置到除了“-1”之外的值时,流程前进到步骤S122。在步骤S122中,将已经被设置到参量subtitle_status中的值设置到属性subtitleFlag中。
当已经将参量subtitle_status的值设置到“-1”或者已经省略了该值时,流程前进到步骤S123。在步骤S123,确定由电影播放器300的属性subtitleLanguageCode所标识的语言代码是否匹配于当前正在被选择的音频流的语言代码(电影播放器300的属性subtitleLanguageCode),以及是否已经将属性subtitleFlag的值设置到使得音频流被再现的除了“0”以外的值。当确定结果标识在步骤S123中的条件被满足时,流程前进到步骤S124。
在步骤S124中,将属性subtitleFlag的值设置到使得字幕不被显示的“0”。换句话说,当满足步骤S123中的条件时,其标识由音频流所再现的音频的语言与由字幕流所显示的字幕的语言相同。因此,将属性subtitleFlag的值设置到使得字幕不被显示的“0”。
当确定结果标识不满足步骤S123中的条件时,流程前进到步骤S125。在步骤S 125,将属性subtitleFlag的值设置到使得字幕显示的“1”。
在图46中,在步骤S123、S124和S125中,与字幕流的语言代码对应地打开或者关闭字幕的显示。替代地,使用字幕流的属性,可以打开和关闭字幕的显示。例如,即使字幕的语言与音频的语言匹配,当字幕流的属性表示诸如上述解说字幕时,可以(通过将属性subtitleFlag的值设置到“1”)不压缩字幕的显示。当字幕流用于解说时,不需要压缩字幕的显示。
如参照图31所描述的那样,由剪切片断AV流文件“XXXXX.CLP”的块StaticInfo()的字段subtitle_presentation_type的值来表示字幕流的属性。下面,将描述带有字幕流的属性的字幕的显示的设置打开/关闭的处理的例子。在图47中,用相同的附图标记表示与图46中的那些类似的部分,并且省略对它们的描述。当在步骤S123的确定结果表示由电影播放器300的属性subtitleLanguageCode所标识的语言代码匹配于当前正在被选择的音频流的语言代码而且已经将属性subtitleFlag的值设置到除了“0”以外的值时,流程前进到步骤S126。
在步骤S126,确定字幕流的属性是否代表正常字幕的属性(正常)。当确定结果表示字幕流的属性代表正常字幕的属性时,流程前进到步骤S124。在步骤S124中,将属性subtitleFlag的值设置到使得字幕不被显示的“0”。当确定结果表示字幕流的属性不代表正常字幕的属性时,流程前进到步骤S125。在步骤S125,将属性subtitleFlag的值设置到使得字幕被显示的“1”。
如上所述,根据本发明的实施方式适当和自动地选择音频和字幕。
在上述例子中,复用多个不同语言的音频流。然而,本发明不限于这种例子。例如,也可以复用其语言相同而内容不同的音频流。作为例子,可以复用其语言相同而内容不同的音频流A和音频流B,并且可以将一个流(例如音频流A)用作原始语言。
权利要求
1.一种从盘形记录介质中再现内容数据的再现设备,包括读取装置,用于从记录介质中读取数据,在该记录介质上已经记录了至少包含视频流、与该视频流对应的一个或多个音频流的内容数据以及用其来控制内容数据的再现的再现控制程序;播放器装置,用于根据再现控制程序来再现内容数据;和第一模式设置装置,用于将第一模式设置到播放器装置中,使得当再现内容数据时所述播放器装置从该一个或多个音频流中自动选择原始语言的音频流。
2.根据权利要求1所述的再现设备,其中,所述内容数据还包含一个或多个字幕流,和其中,该再现设备还包括第二模式设置装置,用于将第二模式设置到播放器装置中,使得当再现内容数据时该播放器装置选择是否再现字幕流。
3.根据权利要求2所述的再现设备,还包括音频流自动选择设置装置,用于设置是否自动地从该一个或多个音频流中选择一个音频流;和字幕流自动选择设置装置,用于设置是否从该一个或多个字幕流中自动地选择一个字幕流,其中,根据音频流自动选择设置装置的设置所自动选择的音频流的语言匹配于根据字幕流自动选择设置装置的设置所自动选择的字幕流的语言,自动地设置第二模式装置的第二模式使得不再现所选择的字幕流。
4.根据权利要求3所述的再现设备,其中,在音频流自动选择设置装置的自动选择中,当已经由模式设置装置设置了第一模式时,从该一个或多个音频流中选择原始语言的音频流,而当模式设置装置没有设置第一模式时,从该一个或多个音频流中选择由播放器装置所设置的语言的音频流。
5.根据权利要求3所述的再现设备,其中,在字幕流自动设置装置的自动选择中,从该一个或多个字幕流中选择由播放器装置所设置的语言的字幕流。
6.根据权利要求1所述的再现设备,其中,也已经将流信息记录在了记录介质上,该流信息至少描述标识该一个或多个音频流中的每一个的信息,和其中,播放器装置确定在该一个或多个音频流的流信息中首先到来的位置处的音频为原始语言的音频流。
7.根据权利要求6所述的再现设备,其中,流信息还描述表示音频流的声道数的信息,其中,播放器装置从该一个或多个音频流中自动选择其语言与原始语言相同并且其声道数最大的音频流。
8.根据权利要求7所述的再现设备,其中,存在其语言与原始语言相同并且其声道数也相同的多个音频流,播放器装置从该一个或多个音频流中选择在流信息中首先到来的音频流。
9.根据权利要求2所述的再现设备,其中,也已经将流信息记录在了记录介质上,该流信息至少描述标识该一个或多个字幕流中的每一个的信息,和其中,当存在其语言相同的多个字幕流时,播放器从该一个或多个字幕流中选择在流信息中首先到来的字幕流。
10.一种从盘形记录介质中再现内容数据的再现方法,包括步骤从记录介质中读取数据,在该记录介质上已经记录了至少包含视频流、与该视频流对应的一个或多个音频流的内容数据以及用其来控制内容数据的再现的再现控制程序;根据再现控制程序来再现内容数据;和将第一模式设置到内容再现步骤中,使得当再现内容数据时从该一个或多个音频流中自动选择原始语言的音频流。
11.一种使得计算机设备执行从盘形记录介质中再现内容数据的再现方法的再现程序,该再现方法包括步骤从记录介质中读取数据,在该记录介质上已经记录了至少包含视频流、与该视频流对应的一个或多个音频流的内容数据以及用其来控制内容数据的再现的再现控制程序;根据再现控制程序来再现内容数据;和将第一模式设置到内容再现步骤中,使得当再现内容数据时从该一个或多个音频流中自动选择原始语言的音频流。
12.一种记录介质,其上已经记录有至少包含视频流、与该视频流对应的一个或多个音频流的内容数据、用其来控制内容数据的再现的再现控制程序和至少描述标识一个或多个音频流中的每一个的流信息,使得标识用作原始语言的音频流的信息首先到来。
13.根据权利要求12所述的记录介质,其中,所述再现控制程序使得再现内容数据的再现设备根据流信息自动选择原始语言。
14.根据权利要求13所述的记录介质,其中,所述内容数据还包含与视频流对应的一个或多个字幕流,和其中,所述再现控制程序使得再现设备从该一个或多个音频流中自动选择一个音频流,从该一个或多个字幕流中自动选择一个字幕流,并且当已经被自动选择的音频流的语言匹配于已经被自动选择的字幕流的语言时不再现所选择的字幕流。
15.根据权利要求12所述的记录介质,其中,流信息还描述表示音频流的声道数的信息,和其中,再现该内容数据的再现装置使得从该一个或多个音频流中自动选择其语言于原始语言相同并且其声道数最大的音频流。
16.根据权利要求15所述的记录介质,其中,当在该一个或多个音频流中存在其语言与原始语言相同并且其声道数相同的多个音频流时,要被选择的音频流在流信息中较早到来。
17.根据权利要求14所述的记录介质,其中,流信息还至少包含标识该一个或多个字幕流中的每一个的信息,和其中,当在该一个或多个字幕流中存在其语言相同的多个字幕流时,要被选择的字幕流在流信息中较早到来。
18.一种数据结构,包括视频流;内容数据,包含一个或多个与视频流对应的音频流;再现控制程序,用其控制内容数据的再现;和流信息,至少包含标识该一个或多个音频流中的每一个的信息,使得标识用作原始语言的音频流的该信息首先到来。
全文摘要
在盘再现期间可以自动地选择音频和字幕。可以将原始语言设置为要在播放器端被再现的音频流的语言。在记录介质端,在剪切片段信息文件的头部描述原始语言的音频流。而且,作为自动设置音频和字幕的结果,当获得与两种语言的匹配时,不显示字幕。例如,当播放器设置(500)是使得音频是原始语言而字幕是日语、在盘中所包含的流(501)使得音频流是日语(原始语言)和英语而字幕是英语和日语的时候,自动设置选择原始语言,即用于音频的日语以及选择用于字幕的日语。由于音频语言与字幕语言一致,所以最终选择的流(502)是日语音频和不显示的日语字幕。
文档编号H04N5/93GK101044573SQ200580035850
公开日2007年9月26日 申请日期2005年8月2日 优先权日2004年8月19日
发明者浜田俊也, 各务辰哉, 藤波靖 申请人:索尼株式会社, 索尼计算机娱乐公司