首页> 中国专利> 数据记录设备、数据记录方法、数据处理设备、数据处理方法、程序、程序记录介质、数据记录介质、和数据结构

数据记录设备、数据记录方法、数据处理设备、数据处理方法、程序、程序记录介质、数据记录介质、和数据结构

摘要

可以在图像质量不劣化的情况下实现可变速度再现。对于来自RAPI信息提取器(423)的RAPI,控制器(425)在其地址、紧随其后的内部图像的PTS、以及内部图像和第二、第三、和第四参照图像的结束位置中选择一个,并且在输出服务器(426)中累积的剪辑信息文件中创建EP_map( )。即,在四个参照图像结束位置(1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture)之间,控制器(425)拷贝接近N-th_Ref_picture_copy中预定扇区数(在编码处理中每次能够被读取的扇区数)的值,根据N-th_Ref_picture_copy决定index_minus1,以及把它记录到盘上。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-12-31

    未缴年费专利权终止 IPC(主分类):H04N5/76 授权公告日:20120215 终止日期:20131117 申请日:20051117

    专利权的终止

  • 2012-02-15

    授权

    授权

  • 2008-03-12

    实质审查的生效

    实质审查的生效

  • 2008-01-23

    公开

    公开

说明书

技术领域

本发明涉及一种数据记录设备、数据记录方法、数据处理设备、数据处理方法、程序、程序记录介质、数据记录介质、以及数据结构,具体地,涉及允许数据被高度便利地处理的数据记录设备、数据记录方法、数据处理设备、数据处理方法、程序、程序记录介质、数据记录介质、以及数据结构。

背景技术

近年来,作为具有大的存储容量以及能被随机地存取的记录介质,例如数字多功能盘(DVD)已经普及。另外,用DVD执行多种处理的DVD器件也已经普及。

作为DVD器件,存在DVD记录器,其向DVD记录以及从DVD再现电视广播节目的数据等等;汽车导航系统,其使用地图信息等等已经记录在其上的DVD,从其中再现地图信息,并且显示它;游戏器件,其使用游戏程序等等已经记录在其上的DVD,从其中读取程序,以及执行它;及其它器件。

例如在非专利文件1“DVD Specifications for Read-Only Disc Part 3;Version 1.1 December 1997”中DVD的细节被描述。

诸如能处理大量数据的DVD器件的设备需要高度便利地处理数据。

发明内容

本发明从上述观点被构造,以及本发明的目的是高度便利地处理数据。

本发明是一种数据记录设备,包括:检测部分,其选择关于包含在视频数据中并且变成随机接入点的内部图像(intra-picture)的信息,并且检测接续所选择的内部图像的多个图像的位置信息;指定部分,其在由检测部分检测的多个图像的位置信息中,指定相距内部图像预定距离的图像的位置信息;以及记录部分,其把由检测部分检测的多个图像的位置信息和关于由指定部分指定的图像的信息,与视频数据一起,记录到数据记录介质。

数据记录设备还包括提取部分,其在由检测部分检测的多个图像的位置信息中,提取与预定扇区数相对应的图像的位置信息。在被检测部分检测的多个图像的位置信息中,指定部分根据由提取部分提取的多个图像的位置信息中与预定扇区数相对应的图像的位置信息,指定相距内部图像预定距离的图像的位置信息。记录部分记录由提取部分提取的多个图像的位置信息中、关于与预定扇区数相对应的图像位置的信息。

根据从数据记录介质中再现视频数据的设备缓冲视频数据所用的容量,预定扇区数被设置。

本发明是一种数据记录方法,包括步骤:选择关于包含在视频数据中并且变成随机接入点的内部图像的信息,并且检测接续所选择的内部图像的多个图像的位置信息;在由检测步骤检测的多个图像的位置信息中,指定相距内部图像预定距离的图像的位置信息;以及把由检测步骤检测的多个图像的位置信息和关于在指定步骤指定的图像的信息,与视频数据一起,记录到数据记录介质。

本发明是一种使计算机执行处理的第一程序,包括步骤:选择关于包含在视频数据中并且变成随机接入点的内部图像的信息,并且检测接续所选择的内部图像的多个图像的位置信息;在由检测步骤检测的多个图像的位置信息中,指定相距内部图像预定距离的图像的位置信息;以及把由检测步骤检测的多个图像的位置信息和关于在指定步骤指定的图像的信息,与视频数据一起,记录到数据记录介质。

本发明是一种第一程序记录介质的程序,该程序包括步骤:选择关于包含在视频数据中并且变成随机接入点的内部图像的信息,并且检测接续所选择的内部图像的多个图像的位置信息;在由检测步骤检测的多个图像的位置信息中,指定相距内部图像预定距离的图像的位置信息;以及把由检测步骤检测的多个图像的位置信息和关于在指定步骤指定的图像的信息,与视频数据一起,记录到数据记录介质。

本发明是一种数据处理设备,包括:读取部分,其把多个内部图像和接续多个内部图像的多个图像的位置信息、和在接续多个内部图像的多个图像中指定相距内部图像预定距离的图像的指定信息,与视频数据一起,从数据记录介质中读取,该多个内部图像包含在视频数据中并且变成随机接入点;选择部分,其在变成由读取部分读取并在数据记录介质中记录的视频数据的随机接入点的多个内部图像以及接续内部图像的多个图像中,根据指定相距内部图像预定距离的图像的指定信息,选择内部图像和接续内部图像的多个图像;以及再现部分,其通过在由选择部分选择并接续内部图像的多个图像中、从内部图像到相距内部图像预定距离的图像的全部图像,来快进再现视频数据。

相距内部图像预定距离的图像可以是相距内部图像接近预定扇区数的图像。

根据当视频数据从数据记录介质中再现时视频数据被缓冲所用的容量,预定扇区数可以被设置。

本发明是一种数据处理方法,包括步骤:把多个内部图像和接续多个内部图像的多个图像的位置信息、和在接续多个内部图像的多个图像中指定相距内部图像预定距离的图像的指定信息,与视频数据一起,从数据记录介质中读取,该多个内部图像包含在视频数据中并且变成随机接入点;在变成在读取步骤读取并在数据记录介质中记录的视频数据的随机接入点的多个内部图像以及接续内部图像的多个图像中,根据指定相距内部图像预定距离的图像的指定信息,选择内部图像和接续内部图像的多个图像;以及通过在由选择步骤选择并接续内部图像的多个图像中、从内部图像到相距内部图像预定距离的图像的全部图像,来快进再现视频数据。

本发明是一种使计算机执行处理的第二程序,包括步骤:把多个内部图像和接续多个内部图像的多个图像的位置信息、和在接续多个内部图像的多个图像中指定相距内部图像预定距离的图像的指定信息,与视频数据一起,从数据记录介质中读取,该多个内部图像包含在视频数据中并且变成随机接入点;在变成在读取步骤读取并在数据记录介质中记录的视频数据的随机接入点的多个内部图像以及接续内部图像的多个图像中,根据指定相距内部图像预定距离的图像的指定信息,选择内部图像和接续内部图像的多个图像;以及通过在由选择步骤选择并接续内部图像的多个图像中、从内部图像到相距内部图像预定距离的图像的全部图像,来快进再现视频数据。

本发明是一种第二程序记录介质的程序,该程序包括步骤:把多个内部图像和接续多个内部图像的多个图像的位置信息、和在接续多个内部图像的多个图像中指定相距内部图像预定距离的图像的指定信息,与视频数据一起,从数据记录介质中读取,该多个内部图像包含在视频数据中并且变成随机接入点;在变成在读取步骤读取并在数据记录介质中记录的视频数据的随机接入点的多个内部图像以及接续内部图像的多个图像中,根据指定相距内部图像预定距离的图像的指定信息,选择内部图像和接续内部图像的多个图像;以及通过在由选择步骤选择并接续内部图像的多个图像中、从内部图像到相距内部图像预定距离的图像的全部图像,来快进再现视频数据。

本发明是一种数据记录介质,在其上数据被记录,该数据包括接续从关于包含在视频数据中并且变成随机接入点的内部图像的信息中选择的内部图像的多个图像的位置信息、以及在多个图像的位置信息中指定相距内部图像预定距离的图像的信息。

本发明是一种数据结构,包括接续从关于包含在视频数据中并且变成随机接入点的内部图像的信息中选择的内部图像的多个图像的位置信息、以及在多个图像的位置信息中指定相距内部图像预定距离的图像的信息。

在本发明的数据记录设备、数据记录方法、和第一程序中,关于包含在视频数据中并且变成随机接入点的内部图像的信息被选择。接续被选择的内部图像的多个图像的位置信息被检测。在已经被检测的多个图像的位置信息中,相距内部图像预定距离的图像的位置信息被指定。已经被检测的多个图像的位置信息和已经被指定的图像的信息,与视频数据一起,记录在数据记录介质上。

在本发明的数据处理设备、数据处理方法、和第二程序中,多个内部图像和接续多个内部图像的多个图像的位置信息、以及在接续多个内部图像的多个图像中指定相距内部图像预定距离的图像的指定信息,与视频数据一起,从数据记录介质中读取。该多个内部图像包含在视频数据中并且变成随机接入点。根据指定相距内部图像预定距离的图像的指定信息,内部图像和接续内部图像的多个图像从多个内部图像以及接续内部图像的多个图像中被选择,该多个内部图像变成已经被读取并且记录在数据记录介质上的视频数据的随机接入点。通过在接续已经被选择的内部图像的多个图像中、从内部图像到相距内部图像预定距离的图像的全部图像,视频数据被快进再现。

本发明的数据记录介质和数据结构包括:接续内部图像的多个图像的位置信息,该内部图像从关于包含在视频数据中并且变成随机接入点的内部图像的信息中选择;以及在多个图像的位置信息中指定相距内部图像预定距离的图像的信息。

根据本发明的数据记录设备和数据处理设备可以是执行数据处理的独立的设备或块。

根据本发明,数据处理能被高度便利地执行。具体地,按照恒定的数据读取时间,再现处理能被有效地实现。

附图说明

图1是示出根据本发明的实施例的盘再现设备的硬件结构的示例的方框图;

图2A和图2B是示出CPU 112执行的软件模块组的结构的示例的方框图;

图3是示出在实际的经过时间与90kHz时钟的定时之间的关系的示意图;

图4是示出在实际经过时间与基于视频解码器的视频数据的输出而更新时间的时钟的时间计数之间的关系的示意图;

图5是示出缓冲器控制模块215的结构的示例的方框图;

图6是示出盘101的目录结构的示例的示意图;

图7是示出文件“PLAYLIST.DAT”的句法的示意图;

图8是示出PlayItem()的句法的示意图;

图9是示出PlayListMark()的句法的示意图;

图10是示出mark_type的值与Mark()的类型的关系的示意图;

图11是示出PlayList()、PlayItem()、剪辑、以及存储在剪辑流文件中的程序流的关系的示意图;

图12是示出剪辑信息文件Clip()的句法的示意图;

图13是示出stream_id、private_stream_id、以及由此被标识的基本(elementary)流的关系的示意图;

图14是示出StaticInfo()的句法的示意图;

图15是示出DynamicInfo()的句法的示意图;

图16是示出EP_map()的句法的示意图;

图17是示出在图16中示出的index_N_minus1的值与1stRef_Picture至4thRef_Picture的关系的示意图;

图18A和图18B是示出MPEG-2制式的程序流、程序流包、以及程序流包报头的句法的示意图;

图19A和图19B是示出MPEG-2制式的PES分组的句法的示意图;

图20A、图20B、和图20C是示出MPEG-2制式的PES分组的句法的示意图;

图21A和图21B是示出MPEG-2制式的PES分组的句法的示意图;

图22A和图22B是示出MPEG-2制式的PES_packet()的stream_id的值与基本流的属性的关系的示意图;

图23是示出盘再现设备使用的stream_id的示意图;

图24是示出private_stream1_PES_payload()的句法的示意图;

图25是示出private_stream_id的值与存储在private_payload()中的基本流的属性的关系的示意图;

图26是示出private_stream2_PES_payload()的句法的示意图;

图27是示出au_information()的句法的示意图;

图28是描述pic_struct的示意图;

图29是示出文件“PLAYLIST.DAT”的具体示例的示意图;

图30A和图30B是示出剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”的具体示例的示意图;

图31是示出剪辑信息文件“00001.CLP”的EP_map()的具体示例的示意图;

图32是示出PlayList#0和PlayList#1的PlayListMark()的具体示例的示意图;

图33是描述再现前处理的流程图;

图34是描述再现处理的流程图;

图35是描述在解码次序与输出次序之间的关系的流程图;

图36是描述视频解码器的结构的示意图;

图37是描述图36中示出的DPB的结构的示意图;

图38是描述时间更新处理的流程图;

图39是描述与pic_struct的值相对应的时间更新处理的示意图;

图40是描述PlayItem改变处理的流程图;

图41是描述时间代码显示处理的流程图;

图42是描述流改变处理的流程图;

图43是描述缓冲器控制模块215的处理的流程图;

图44是描述缓冲器控制模块215的处理的流程图;

图45是描述视频流读取处理的流程图;

图46是描述音频流读取处理的流程图;

图47是描述字幕流读取处理的流程图;

图48是描述再同步处理的流程图;

图49是描述标记处理的流程图;

图50是描述在标记处理中的匹配判断的示意图;

图51是描述PlayListEnd定时的示意图;

图52是描述PlayListEnd定时的示意图;

图53是描述事件间隔的示意图;

图54是描述输出属性控制处理的流程图;

图55是示出在剪辑信息文件“00003.CLP”中描述的pts_change_point与DynamicInfo()的集合的具体示例的示意图;

图56是描述字幕显示控制处理的流程图;

图57是描述捕获控制处理与背景/屏幕保护处理的流程图;

图58是示出private_stream2_PES_payload()的其它句法的示意图;

图59是示出au_information()的其它句法的示意图;

图60是示出盘记录设备的硬件结构的示例的方框图;

图61是描述由图60中示出的盘记录设备所完成的功能的方框图;

图62是描述Ep_map创建处理的流程图;

图63是描述快进再现处理的流程图;

图64是描述入口点选择处理的流程图;

图65是描述由图60中示出的盘记录设备完成的其它功能的方框图;

图66是示出EP_map()的其它句法的示意图;

图67是描述图65中示出的priority_flag的示意图;以及

图68是描述优先级设置处理的流程图。

具体实施方式

接下来,将描述本发明的实施例。权利要求项和实施例之间的关系如下。该关系表示支持如权利要求所述的发明的具体示例在实施例中被描述。因此,即使一些具体示例在权利要求项中没有被描述,它也不意味着具体示例与权利要求项不相对应。反之,即使具体示例在这个部分被描述为权利要求项的相应物,它也不意味着这些具体示例除了与权利要求项之外与其它不相对应。

在这个部分,并不意味着与在本发明的实施例中描述的具体示例相对应的发明的全部方面在权利要求中被阐述。换句话说,在这个部分的描述与在本发明的实施例中被描述的具体示例相对应。因此,在这个部分的描述不否认存在本专利申请的权利要求中没有阐述的本发明的方面,并且分案的专利申请可以被提出和/或本发明的附加方面可以作为补正被添加。

换句话说,本发明的数据记录设备包括检测部分(例如,图61中示出的多路复用单元421),其选择关于包含在视频数据中并且变成随机接入点的内部图像的信息,并且检测接续被选择的内部图像的多个图像的位置信息;指定部分(例如,图61中示出的控制器425),其在由检测部分检测的多个图像的位置信息中,指定相距内部图像预定距离的图像的位置信息;以及记录部分(例如,图60中示出的盘驱动器409),其把由检测部分检测的多个图像的位置信息和关于由指定部分指定的图像的信息,与视频数据一起,记录到数据记录介质。

本发明的数据记录方法包括如下步骤:选择关于包含在视频数据中并且变成随机接入点的内部图像的信息,并且检测接续所选择的内部图像的多个图像的位置信息(例如,图62中示出的流程图中的步骤S383);在由检测步骤检测的多个图像的位置信息中,指定相距内部图像预定距离的图像的位置信息(例如,图62中示出的流程图的步骤S386);以及把由检测步骤检测的多个图像的位置信息和关于由指定步骤指定的图像的信息,与视频数据一起,记录到数据记录介质(例如,图62中示出的流程图的步骤S386)。

本发明的数据处理设备包括读取部分(例如,图1中示出的盘驱动器102),其把多个内部图像和接续多个内部图像的多个图像的位置信息、和在接续多个内部图像的多个图像中指定相距内部图像预定距离的图像的指定信息,与视频数据一起,从数据记录介质中读取,该多个内部图像包含在视频数据中并且变成随机接入点;选择部分(例如,图2A和图2B中示出的播放器控制模块212),其根据在变成由读取部分读取并在数据记录介质中记录的视频数据的随机接入点的多个内部图像以及接续内部图像的多个图像中、指定相距内部图像预定距离的图像的指定信息,选择内部图像和接续内部图像的多个图像;以及再现部分(例如,图2A和图2B中示出的解码器控制模块214),其通过在由选择部分选择并接续内部图像的多个图像中、从内部图像到相距内部图像预定距离的图像的全部图像,来快进再现视频数据。

本发明的数据处理方法包括如下步骤:把多个内部图像和接续多个内部图像的多个图像的位置信息、和在接续多个内部图像的多个图像中指定相距内部图像预定距离的图像的指定信息,与视频数据一起,从数据记录介质中读取,该多个内部图像包含在视频数据中并且变成随机接入点(例如,在图62中示出的流程图中的步骤S391);根据在变成在读取步骤读取并在数据记录介质中记录的视频数据的随机接入点的多个内部图像以及接续内部图像的多个图像中、指定相距内部图像预定距离的图像的指定信息,选择内部图像和接续内部图像的多个图像(例如,图62中示出的流程图中的步骤S395);以及通过在由选择步骤选择并接续内部图像的多个图像中、从内部图像到相距内部图像预定距离的图像的全部图像,来快进再现视频数据(例如,图62中示出的流程图中的步骤S396)。

因为本发明的程序记录介质和程序类似于数据记录方法,所以将省略其描述。

接下来,参照附图,本发明的实施例将被描述。

[硬件结构]

图1是示出根据本发明的实施例的盘再现设备的硬件结构的示例的方框图。

图1中示出的盘再现设备可以被应用于例如盘播放器、游戏器件、汽车导航系统、等等。

在图1中示出的盘再现设备中,盘101是光盘,诸如DVD、磁光盘、磁盘、等等。诸如视频数据、音频数据、以及字幕数据的内容数据和再现那些数据所需要的附加数据,记录在盘101上。

当必要时,记录在盘101上的数据包括能够被计算机执行的程序。根据本发明的这个实施例,作为记录介质,作为盘形记录介质的盘101被使用。或者,记录介质可以是例如半导体存储器或带形记录介质。从远程位置的盘读取的数据可以被传输并输入到图1中示出的盘再现设备。换句话说,数据可以通过连接到盘再现设备的另一器件从盘101读取。由其它器件读取的数据能够由盘再现设备接收并处理。另外,盘再现设备能通过诸如因特网的网络,从储存类似于记录在盘101上的数据的数据的服务器等等接收数据,并且处理所接收的数据。另外,盘再现设备还能从诸如服务器等等的另一器件接收数据,记录所接收的数据到盘101,然后处理记录到盘101的数据。

盘101可以被加载至盘驱动器102以及从盘驱动器102卸载。盘驱动器102具有内置接口(未示出)。盘驱动器102通过内置接口与驱动器接口114连接。盘驱动器102驱动盘101,依照例如读取命令而从盘101读取数据,以及提供数据到驱动器接口114。

连接到总线111的是CPU(中央处理单元)112、存储器113、驱动器接口114、输入接口115、视频解码器116、音频解码器117、视频输出接口118、以及音频输出接口119。

CPU 112和存储器113用于构建计算机系统。换句话说,CPU 112执行作为存储在存储器113中的程序的软件模块组,以控制整个盘再现设备,并且执行后文将描述的各种处理。存储器113还存储CPU 112执行的软件模块组。另外,存储器113临时地储存操作CPU 112所需要的数据。存储器113可以仅仅包括非易失性存储器或易失性存储器与非易失性存储器的组合。当图1中示出的盘再现设备具有记录(安装)CPU 112执行的软件模块组的硬盘时,存储器113可以仅仅包括非易失性存储器。

CPU 112执行的程序(软件模块组)能够作为内置于盘再现设备的记录介质而被预先存储在存储器113中。

或者,程序可以被临时地或永久地存储到盘101或可拆卸记录介质,诸如软盘、CD-ROM(光盘只读存储器)、MO(磁光)盘、磁盘、或记忆卡。可拆卸记录介质可以作为所谓的封装软件而被提供。

程序可以被预先存储在存储器113中或者从上述可拆卸记录介质安装到盘再现设备。或者,程序可以从下载站点通过数字卫星广播的卫星无线地传输到盘再现设备,或者通过局域网(LAN)或者诸如因特网的网络由电缆传输到盘再现设备。盘再现设备通过输入接口115接收程序,并且安装该程序到内置的存储器113。

程序可以由一个CPU执行,或者由多个CPU分布地执行。

驱动器接口114在CPU 112的控制下控制盘驱动器102。盘驱动器102通过总线111提供从盘101读取的数据到CPU 112、存储器113、视频解码器116、音频解码器117、等等。

输入接口115依照用户的键(按钮)操作以及遥控命令器(未示出)接收信号,并且通过总线111提供该信号到CPU 112。输入接口115还用作调制解调器(包括ADSL(非对称数字用户线)调制解调器)、NIC(网络接口卡)、等等的通信接口。

视频解码器116解码已经由盘驱动器102从盘101读取、并通过驱动器接口114和总线111被提供给视频解码器116的编码视频数据,并且通过总线111提供该解码视频数据到CPU 112和视频输出接口118。

音频解码器117解码已经由盘驱动器102从盘101读取、并通过驱动器接口114和总线111被提供给音频解码器117的编码音频数据,并且通过总线111提供该解码音频数据到CPU 112和音频输出接口119。

视频输出接口118对通过总线111提供的视频数据执行预定的处理,并且从视频输出终端120输出被处理的视频数据。音频输出接口119对通过总线111提供的音频数据执行预定的处理,并且从音频输出终端121输出被处理的音频数据。

视频输出终端120连接到视频输出器件,诸如CRT(阴极射线管)或者液晶面板(未示出)。因此,从视频输出终端120输出的视频数据被提供给视频输出器件,并由其显示。音频输出终端121连接到音频输出器件,诸如扬声器和发大器(未示出)。因此,从音频输出终端121输出的音频数据被提供给音频输出器件,并由其输出。

视频数据和音频数据可以无线地或者通过电缆从盘再现设备提供到视频输出器件和音频输出器件。

[软件模块组的结构]

图2A和图2B示出图1中示出的CPU 112执行的软件模块组的结构的示例。

CPU 112执行的软件模块组主要归类为操作系统(OS)201和作为应用程序的视频内容再现程序210。

[操作系统201]

当盘再现设备开启时,操作系统201启动,执行预定的处理,诸如初始化设置,然后调用作为应用程序的视频内容再现程序210。

操作系统201提供诸如文件读取服务的基础服务到视频内容再现程序210。换句话说,操作系统201提供如下服务,针对从视频内容再现程序210接收的文件读取请求,通过驱动器接口114操作盘驱动器102,从盘101读取数据,然后提供该数据到视频内容再现程序210。另外,操作系统201还解释(interpret)文件系统。

操作系统201具有多任务处理的功能。换句话说,操作系统201能够在分时(time sharing)的基础上同时操作多个软件模块。换句话说,虽然视频内容再现程序210包括多个软件模块,但是它们可以并行地操作。

[视频内容再现程序210]

视频内容再现程序210包括脚本控制模块211、播放器控制模块212、内容数据提供模块213、解码控制模块214、缓冲器控制模块215、视频解码器控制模块216、音频解码器控制模块217、字幕解码器控制模块218、图形处理模块219、视频输出模块220、和音频输出模块221。

视频内容再现程序210是从盘101执行数据再现的关键任务的软件。当盘101被加载(插入)盘驱动器102时,视频内容再现程序210检查盘101是否是内容已经以预定格式(后文将描述)记录在其上的盘。视频内容再现程序210从盘101读取脚本文件(后文将描述),执行脚本,从盘101读取再现内容所需要的元数据文件,以及根据元数据控制内容再现。

接下来,用于构建图2A和图2B中示出的视频内容再现程序210的软件模块将被描述。在图2A和图2B中,通常,实线箭头标记表示内容数据,而虚线箭头标记表示控制数据。

[脚本控制模块211]

脚本控制模块211解释并执行记录在盘101上的脚本程序(脚本)。脚本程序可以描述诸如“操作图形处理模块219以创建诸如菜单的图像,并且显示它”、“根据从诸如遥控器的用户接口(UI)提供的信号(例如,在菜单上移动光标)来改变菜单显示”、以及“控制播放器控制模块212”的操作。

[播放器控制模块212]

播放器控制模块212参照记录在盘101上的元数据等等,以控制记录在盘101上的内容的再现。换句话说,播放器控制模块212分析记录在盘101上的PlayList()和Clip(),并且根据分析结果来控制内容数据提供模块213、解码控制模块214、以及缓冲器控制模块215。另外,播放器控制模块212执行后文将描述的流改变控制,其根据从脚本控制模块211和输入接口115所接收的命令来改变将被再现的流。另外,播放器控制模块212从解码控制模块214获取时间,显示时间,并且对标记(Mark())(后文将描述)执行处理。

[内容数据提供模块213]

在播放器控制模块212的控制下,或者根据存储在缓冲器控制模块215中的数据量,内容数据提供模块213请求操作系统201从盘101读取内容数据、元数据、等等。

根据从内容数据提供模块213所接收的请求操作系统201已经从盘101读取的元数据等等,被提供给预定模块。另一方面,根据从内容数据提供模块213所接收的请求操作系统201已经从盘101读取的内容数据,被提供给缓冲器控制模块215。

[解码控制模块214]

在播放器控制模块212的控制下,解码控制模块214控制视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218的操作。解码控制模块214具有对时间计数的时间计数部分214A。解码控制模块214管理在视频解码器控制模块216的控制下被输出的视频数据的输出、和应与视频数据同步的数据的输出之间的同步。在这种情况下,将与视频数据的输出同步的数据的输出是在音频解码器控制模块217的控制下被输出的音频数据。

通过对由外部提供的参照时钟、或与解码器等等同步的内部时钟计数,时间计数部分214A可以自主地对时间计数。

然而,在通过控制图2A和图2B中示出的各种类型的模块而实现的基于软件的解码器中,如果除这些处理之外,时间计数处理也由软件执行,则CPU112的处理负载将增加。因此,时间计数部分214A需要基于从解码器的视频数据的输出而更新时间。

图3示出在时间计数部分214A的独立时钟的时间和实际经过时间之间的关系。在图3中,因为时间计数部分214A用90kHz时钟计数,因此时间从时间0向右线性地增加。在时间33.3毫秒,时钟计数时间为3003。

图4示出时间计数部分214A基于视频解码器的视频数据的输出而更新时间的示例。在图4中示出的情况下,当经过33毫秒时,时钟的输出时间被更新至3003。当经过83.3毫秒时,输出时间被更新为7507。当经过116毫秒时,输出时间被更新为10510。在这个示例中,一帧的输出时间是16.66毫秒。

在图3中,虽然时间按1/90kHz的分辩率以阶梯形而经过,但是为了与图4相比较,时间的经过被表示为直线。在下面的描述中,参照图4所述,假定时间计数部分214A基于视频数据的输出而更新时间。

[缓冲器控制模块215]

缓冲器控制模块215具有缓冲器215A作为图1中示出的存储器113的存储区域的一部分。根据从操作系统201接收的请求,内容数据提供模块213把从盘101读取的内容数据临时地存储到缓冲器215A。

另外,分别根据从视频解码器控制模块216、音频解码器控制模块217、或者字幕解码器控制模块218接收的请求,缓冲器控制模块215提供存储在缓冲器215A中的数据到视频解码器控制模块216、音频解码器控制模块217、或者字幕解码器控制模块218。

换句话说,缓冲器控制模块215具有后面将在图5中描述的视频读取功能部分233、音频读取功能部分234、以及字幕读取功能部分235。缓冲器控制模块215的视频读取功能部分233处理从视频解码器控制模块216接收的数据请求,以提供存储在缓冲器215A中的数据到视频解码器控制模块216。同样地,在缓冲器控制模块215中的音频读取功能部分234处理从音频解码器控制模块217接收的请求,以提供存储在缓冲器215A中的数据到音频解码器控制模块217。在缓冲器控制模块215中的视频读取功能部分233处理从字幕解码器控制模块218接收的请求,以提供存储在缓冲器215A中的数据到字幕解码器控制模块218。

[视频解码器控制模块216]

视频解码器控制模块216操作该缓冲器控制模块215的视频读取功能部分233(图5),来按照每次一个视频存取单元,从缓冲器控制模块215的缓冲器215A中读取编码视频数据,并且提供该视频数据到图1中示出的视频解码器116。另外,视频解码器控制模块216控制视频解码器116,来按照每次一个视频存取单元而解码数据。另外,视频解码器控制模块216提供由视频解码器116解码的视频数据到图形处理模块219。

一个视频存取单元例如是视频数据的一个图像(一个帧或者一个场)。

[音频解码器控制模块217]

音频解码器控制模块217操作该缓冲器控制模块215的音频读取功能部分234(图5),来按照每次一个音频存取单元,从缓冲器控制模块215的缓冲器215A中读取编码音频数据,并且提供该编码音频数据到图1中示出的音频解码器117。音频解码器控制模块217控制音频解码器117,来按照每次一个音频存取单元,对编码音频数据解码。另外,音频解码器控制模块217把由音频解码器117解码的音频数据提供到音频输出模块221。

一个音频存取单元是音频数据的预定量(例如,与一个图像同步输出的数据量)。根据这个实施例,假定一个音频存取单元是预定固定长度的。

[字幕解码器控制模块218]

字幕解码器控制模块218操作该缓冲器控制模块215的字幕读取功能部分235(图5),来按照每次一个字幕存取单元,从缓冲器控制模块215的缓冲器215A读取编码字幕数据。另外,字幕解码器控制模块218具有字幕解码软件(未示出)。字幕解码软件解码从缓冲器215A读取的数据。字幕解码器控制模块218提供该解码字幕数据(字幕的图像数据)到图形处理模块219。

一个字幕存取单元是预定量(例如,与一个图像同步输出的数据量)的字幕数据。根据这个实施例,假定一个字幕存取单元的大小在其起首被描述。

[图形处理模块219]

图形处理模块219根据播放器控制模块212的命令扩大或者缩小从字幕解码器控制模块218接收的字幕数据,以及把该扩大或者缩小的字幕数据叠放到从视频解码器控制模块216接收的视频数据。图形处理模块219扩大或者缩小已经被叠放到字幕数据的视频数据的图像帧,以便所添加的视频数据的帧大小与连接到图1中示出的视频输出终端120的视频输出器件的屏幕匹配。所添加的视频数据被输出到视频输出模块220。

另外,图形处理模块219根据脚本控制模块211和播放器控制模块212的命令,生成菜单、消息、等等,并且把菜单、消息、等等叠放到输出视频数据。

另外,根据连接到图1中示出的视频输出终端120的视频输出器件的纵横比、和表示记录在盘101上的视频数据的纵横比的信息,图形处理模块219转换被输出到视频输出模块220的视频数据的纵横比。

换句话说,当视频输出器件的纵横比(aspect ratio)是16∶9时,如果表示视频数据的纵横比的信息是4∶3,则图形处理模块219执行挤压(squeeze)处理,以在横向(水平)方向缩小被输出到视频输出模块220的视频数据,使视频数据的左右端为黑色,并且输出结果的视频数据。当视频输出器件的纵横比是4∶3时,如果表示视频数据的纵横比的信息是16∶9,则图形处理模块219在纵向(垂直)方向对被输出到视频输出模块220的视频数据执行挤压处理,使视频数据的上下端为黑色,并且输出结果的视频数据。

当视频输出器件的纵横比和视频数据的信息所表示的纵横比相同时,例如4∶3或者16∶9,图形处理模块219输出未挤压的视频数据到视频输出模块220。

另外,根据从例如播放器控制模块212接收的请求,图形处理模块219捕获正在被处理的视频数据。此外,图形处理模块219存储所捕获的视频数据,或者提供该视频数据到播放器控制模块212。

[视频输出模块220]

视频输出模块220排它地占有图1中示出的存储器113的一部分作为FIFO(先进先出)缓冲器220A,以及临时地存储从图形处理模块219接收的视频数据。另外,视频输出模块220频繁地从FIFO 220A读取视频数据,并且输出该视频数据到视频输出终端120(图1)。

[音频输出模块221]

音频输出模块221排它地占有图1中示出的存储器113的一部分作为FIFO缓冲器221A,以及临时地存储从音频解码器控制模块217(音频解码器117)接收的音频数据。另外,音频输出模块221频繁地从缓冲器221A读取音频数据,并且输出该音频数据到音频输出终端121(图1)。

另外,当从音频解码器控制模块217接收的音频数据是具有“主音频”数据和“副音频”数据的左右信道的双重(双语)模式音频数据时,根据预先指定的音频输出模式,音频输出模块221输出从音频解码器控制模块217接收的音频数据到音频输出终端121。

换句话说,如果“主声音”已经被指定为音频输出模式,则音频输出模块221拷贝从音频解码器控制模块217接收的音频数据的左信道,作为音频数据的右信道,并且把音频数据(“主音频”数据)的左右信道输出到音频输出终端121。如果“副音频”已经被指定为音频输出模式,则音频输出模块221拷贝从音频解码器控制模块217接收的音频数据的右信道,作为左信道,并且把左右信道(“副音频”数据)输出到音频输出终端121。如果“主和副音频”两者已经被指定为音频输出模式,则音频输出模块221把从音频解码器控制模块217接收的音频数据直接输出到音频输出终端121。

如果从音频解码器控制模块217接收的音频数据是立体声模式音频数据,则不管已经指定什么音频输出模式,音频输出模块221直接输出从音频解码器控制模块217接收的音频数据到音频输出终端121。

用户能够在关于由视频内容再现程序210生成的菜单的屏幕上,通过使用遥控器来交互地指定音频输出模式。

[缓冲器控制模块215的结构]

图5示出图2A和图2B中示出的缓冲器控制模块215的结构的示例。

缓冲器控制模块215排它地使用图1中示出的存储器113的一部分作为缓冲器215A,以及临时地储存从盘101读取的数据到缓冲器215A。另外,缓冲器控制模块215从缓冲器215A读取数据,并且提供该数据到图2A和图2B中示出的视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218。

除缓冲器215A之外,缓冲器控制模块215还具有数据开始指针存储部分231和数据写入指针存储部分232,它们是存储器113的一部分。另外,缓冲器控制模块215具有作为内部模块的视频读取功能部分233、音频读取功能部分234、和字幕读取功能部分235。

缓冲器215A是例如环形(ring)缓冲器,其连续地储存从盘101读取的数据。在缓冲器215A读取其存储量的数据之后,缓冲器215A以所谓的无限循环(endless loop)来储存数据,以便缓冲器215A在最老的数据上盖写最新的数据。

数据开始指针存储部分231存储数据开始指针,其表示在存储在缓冲器215A中的数据中、未从缓冲器215A读取的最老的数据的位置(地址)。

数据写入指针存储部分232存储指针,其表示在缓冲器215A中从盘101读取的最新的数据的位置(地址)。

无论何时从盘101读取的数据被存储到缓冲器215A中,数据写入指针所表示的位置以图5中示出的顺时针方向被更新。无论何时数据从缓冲器215A中被读取,数据开始指针所表示的位置以图5中示出的顺时针方向被更新。因此,存储在缓冲器215A中的有效数据是以图5中示出的顺时针方向从数据开始指针所表示的位置到数据写入指针所表示的位置。

视频读取功能部分233根据从图2A和图2B中示出的视频解码器控制模块216所接收的请求,从缓冲器215A读取视频流(视频数据的基本流),并且提供该视频流到视频解码器控制模块216。音频读取功能部分234根据从图2A和图2B中示出的音频解码器控制模块217接收的请求,从缓冲器215A读取音频流(音频数据的基本流),并且提供该音频流到音频解码器控制模块217。同样地,字幕读取功能部分235根据从图2A和图2B中示出的字幕解码器控制模块218接收的请求,从缓冲器215A读取字幕流(字幕数据的基本流),并且提供该字幕流到字幕解码器控制模块218。

换句话说,根据例如MPEG(运动图像专家组)2标准的程序流已经记录在盘101上,该程序流称为MPEG2-制式程序流。在该程序流中,视频流、音频流、以及字幕流的至少一个基本流在时分的基础上被多路复用。视频读取功能部分233具有用于程序流的去多路复用功能。视频读取功能部分233从存储在缓冲器215A中的程序流去多路复用视频流,并且读取该视频流。

同样地,音频读取功能部分234具有对于程序流的去多路复用功能。音频读取功能部分234从存储在缓冲器215A中的程序流去多路复用音频流,并且读取该音频流。同样地,字幕读取功能部分235具有关于程序流的去多路复用功能。字幕读取功能部分235从存储在缓冲器215A中的程序流中去多路复用字幕流,并且读取该字幕流。

视频读取功能部分233具有视频读取指针存储部分241、stream_id寄存器242、以及au_information()寄存器243,它们是图1中示出的存储器113的部分。

视频读取指针存储部分241存储表示视频流在缓冲器215A中的位置(地址)的视频读取指针。视频读取功能部分233从在缓冲器215A中视频读取指针的位置读取作为视频流的数据。stream_id(流标识符)寄存器242存储stream_id,其用于分析存储在缓冲器215A中的程序流,并且标识从程序流中读取的视频流。au_information()寄存器243存储au_information(),其是从缓冲器215A中读取视频流所需要的数据。

音频读取功能部分234具有音频读取指针存储部分251、stream_id寄存器252、以及private_stream_id(私有流标识符)寄存器253,它们是图1中示出的存储器113的部分。

音频读取指针存储部分251存储表示存储在缓冲器215A中的音频流的位置(地址)的音频读取指针。音频读取功能部分234从在缓冲器215A中音频读取指针的位置读取作为音频流的数据。stream_id寄存器252和private_stream_id寄存器253分别存储stream_id以及private_stream_id(其将在后文描述),用于分析存储在缓冲器215A中的程序流,并且标识从程序流读取的音频流。

字幕读取功能部分235具有字幕读取功能标志存储部分261、字幕读取指针存储部分262、stream_id寄存器263、以及private_stream_id寄存器264,它们是图1中示出的存储器113的部分。

字幕读取功能标志存储部分261存储字幕读取功能标志。当存储在字幕读取功能标志存储部分261中的字幕读取功能标志例如是“0”时,字幕读取功能部分235不操作。当存储在字幕读取功能标志存储部分261中的字幕读取功能标志例如是“1”时,字幕读取功能部分235操作。

字幕读取指针存储部分262存储表示存储在缓冲器215A中的字幕流的位置(地址)的字幕读取指针。字幕读取功能部分235从在缓冲器215A中字幕读取指针的位置读取作为字幕流的数据。stream_id寄存器263和private_stream_id寄存器264分别存储stream_id和private_stream_id(其将在后文描述),用于分析存储在缓冲器215A中的程序流,并且标识从程序流读取的字幕流。

[记录在盘101上的数据的数据格式的描述]

接下来,将描述记录在盘101上的数据的数据格式。

图6示意性地示出盘101的目录的结构。

用于盘101的文件系统例如是在ISO(国际标准化组织)-9660和UDF(通用盘格式)(http://www.osta.org/specs/)中定义的那些文件系统之一。记录在盘101上的数据文件以目录结构被分级管理。能够用于盘101的文件系统并不局限于这些文件系统。

在图6中,在表示文件系统的基础的根目录下有“VIDEO(视频)”目录。在“VIDEO”目录下有“CLIP(剪辑)”目录和“STREAM(流)”目录两个目录。

除“CLIP”目录和“STREAM”目录这两个目录之外,在“VIDEO”目录下还有“SCRIPT.DAT”文件和“PLAYLIST.DAT”文件两个数据文件。

“SCRIPT.DAT”文件是描述脚本程序的脚本文件。换句话说,“SCRIPT.DAT”文件描述允许盘101上的数据被交互地再现的脚本程序。存储在“SCRIPT.DAT”文件中的脚本程序由图2A和图2B中示出的脚本控制模块211解释和执行。

“PLAYLIST.DAT”文件存储至少一个播放列表(后文将参照图7描述的PlayList())。播放列表描述诸如记录在盘101上的视频数据的内容的再现过程。

在“CLIP”目录下至少有一个剪辑信息文件。在“STREAM”目录下至少有一个剪辑流文件。换句话说,在图6中,在“CLIP”目录下有三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”。在“STREAM”目录下有三个剪辑流文件“00001.PS”、“00002.PS”、和“00003.PS”。

剪辑流文件存储视频数据、音频数据、和字幕数据已被压缩和编码所得的至少一个流在时分的基础上被多路复用的程序流。

剪辑信息文件存储关于剪辑流的元数据,例如其特征。

换句话说,剪辑流文件和剪辑信息文件以1对1的关系相关联。在图6中,剪辑流文件根据5位数字+时间段+“PS”的命名规则命名,而剪辑信息文件根据与相应剪辑流相同的5位数字+时间段+“CLP”的命名规则来命名。

因此,剪辑流文件和剪辑信息文件能够通过文件名的扩展名(时间段的右侧)标识。另外,能够判断剪辑流文件和剪辑信息文件的除了它们的扩展名之外的它们的文件名(时间段的左侧部分)是否相关。

接下来,将详细描述记录在盘101上的文件。

[PLAYLIST.DAT]

图7示出在图6中示出的“VIDEO”目录下的“PLAYLIST.DAT”文件的内部结构。

在图7中,“PLAYLIST.DAT”文件具有:描述“PLAYLIST.DAT”文件的数据结构的“Syntax(句法)”字段;描述在“Syntax”字段中的每个数据项的位长的“No.of bits(位数)”字段;以及“Mnemonic(助记符)”字段,其中“bslbf”(bit string left bit first(首先位串左位))以及“uimsbf”(unsignedinteger most significant bit first(首先无符号整数最高有效位))表示在“Syntax”字段中的数据项从左位被移位,以及在“Syntax”字段中的数据项是无符号整数,并且从最高有效位被移位。这些情形适用于类似于图7的其它列表。

“PLAYLIST.DAT”文件以描述诸如名称(文件名)的信息的name_length(名称长度)(8位)和name_string(名称串)(255字节)开始。

换句话说,name_length表示紧随其后的name_string的按照字节的大小。name_string表示“PLAYLIST.DAT”文件的名称(文件名)。

从name_string的起首开始的name_length的字节被用作有效名称。当name_length的值是10时,从name_string的起首开始的10字节被解释为有效名称。

name_string之后跟随number_of_PlayLists(播放列表数目)(16位)。number_of_PlayLists表示接续name_string的PlayList()的数目。number_of_PlayLists之后跟随由number_of_PlayLists表示的PlayList()。

PlayList()是描述记录在盘101上的剪辑流文件的再现过程的播放列表。PlayList()具有下列内部结构。

PlayList()以PlayList_data_length(播放列表数据长度)(32位)开始。PlayList_data_length表示PlayList()的大小。

PlayList_data_length之后按顺序跟随reserved_for_word_alignment(预留用于字对齐)(15位)和capture_enable_flag_PlayList(捕获使能标志播放列表)(1位)。15位的reserved_for_word_alignment之后跟随1位的capture_enable_flag_PlayList,用于在capture_enable_flag_PlayList的位置的1 6位位置对齐,以将其放置到16位的位置。capture_enable_flag_PlayList是1位标志,其表示与按照PlayList()而被再现的视频流相对应的视频数据(属于PlayList()的视频数据)是否允许在再现来自盘101的数据的盘再现设备中被第二次使用。当capture_enable_flag_PlayList的值例如是1(0或者1)时,它表示属于PlayList()的视频数据被允许第二次使用。当capture_enable_flag_PlayList的值例如是0(0或者1)时,它表示属于PlayList()的视频数据不允许第二次使用。

在图7中,capture_enable_flag_PlayList由1位组成。或者,capture_enable_flag_PlayList可以由多个位组成。在这种情况下,属于PlayList()的视频数据可以逐步被允许第二次使用。换句话说,capture_enable_flag_PlayList可以由2位组成。当capture_enable_flag_PlayList的值是00B(其中B表示之前的数字是二进制数)时,视频数据禁止被第二次使用。当capture_enable_flag_PlayList的值是01B时,被缩小成64×64像素的大小或者更小的视频数据允许被第二次使用。当capture_enable_flag_PlayList的值是10B时,视频数据允许被第二次使用,而无需任何大小缩小。

视频数据的第二次使用关于应用而不是大小而被限制。换句话说,当capture_enable_flag_PlayList的值是01B时,仅仅视频内容再现程序210(图2A和图2B)被允许第二次使用视频数据。当capture_enable_flag_PlayList的值是10B时,在图1中示出的盘再现设备中包括视频内容再现程序210的任何应用被允许第二次使用视频数据。在这个示例中,在图1中示出的盘再现设备中除了视频内容再现程序210之外的应用是显示壁纸或者屏幕保护的应用。

当capture_enable_flag_PlayList由2位组成时,之前的用于字对齐的reserved_forword_alignment由14位组成。

或者,通过capture_enable_flag_PlayList,视频数据可以被允许在盘再现设备的外部第二次使用。在使用capture_enable_flag_PlayList的情况下,视频数据被允许在盘再现设备外部第二次使用,该视频数据被记录到例如能够被加载到盘再现设备、或者能够被连接到盘再现设备的记录介质,或者通过诸如因特网的网络被传输到另一器件。在这种情况下,表示视频数据能够被记录到记录介质的次数、或者视频数据能够被传输的次数的信息能够被添加到视频数据。

capture_enable_flag_PlayList之后按顺序跟随PlayList_name_length(播放列表名称长度)(8位)和PlayList_name_string(播放列表名称串)(255字节)。PlayList_name_length表示PlayList_name_string的按照字节的大小。PlayList_name_string表示PlayList()的名称。

PlayList_name_string之后跟随number_of_PlayItems(播放项目的数目)(16位)。number_of_PlayItems表示PlayItem()的数目。

number_of_PlayItems之后跟随由number_of_PlayItems表示的PlayItem()。

一个PlayList()能够描述以PlayItem()为单位的内容的再现过程。

在PlayList()中唯一的标识符(ID)代码被添加到由number_of_PlayItems表示的PlayItem()。换句话说,PlayList()的第一PlayItem()用数字0标识。其它PlayItem()用数字1、2、…、等等连续地标识。

由number_of_PlayIterms表示的PlayItem()之后跟随一个PlayListMark()。PlayListMark()是作为按照PlayList()的再现时间轴上的标记的Mark()的集合。PlayListMark()在后文将参照图9详细地描述。

[PlayItem()的描述]

图8示出包含在图7中示出的PlayList()中的PlayItem()的内部结构。

PlayItem()以length(长度)(16位)开始。length表示PlayItem()的大小,包括length的大小。

length之后顺次跟随Clip_Information_file_name_length(剪辑信息文件名长度)(16位)和Clip_Information_file_name(剪辑信息文件名)(可变长度)。Clip_Information_file_name_length表示Clip_Information_file_name的按字节的大小。Clip_Information_file_name表示与根据PlayItem()而再现的剪辑流文件(图6中示出的具有扩展名PS的文件)相对应的剪辑信息文件(图6中示出的具有扩展名CLP的文件)的文件名。根据上述用于剪辑流文件和剪辑信息文件的命名规则,根据PlayItem()而再现的剪辑信息文件的文件名能够通过Clip_Information_file name识别,以及剪辑流文件能够被标识。

Clip_Information_file_name之后顺次跟随IN_time(入时间)(32位)和OUT_time(出时间)(32位)。

IN_time和OUT_time是表示由Clip_Information_file_name标识的剪辑流文件的再现开始位置和再现结束位置的时间信息。

IN_time能够指定剪辑流文件的中间位置(包括起首)作为再现开始位置。OUT_time能够指定剪辑流文件的中间位置(包括末尾)作为再现结束位置。

PlayItem()再现由Clip_Information_file_name标识的剪辑流文件的从IN_time到OUT_time的内容。根据PlayItem()再现的内容有时指剪辑。

[PlayListMark()的描述]

图9示出包含在图7中示出的PlayList()中的PlayListMark()的内部结构。

如上所述,PlayListMark()是作为根据PlayList()(图7)的再现时间轴上的标记的Mark()的集合。Mark()的数目是0或者大于0。一个Mark()至少具有:表示根据PlayList()而执行的再现的时间轴上的一个时间的时间信息;表示Mark()类型的类型信息;以及当类型信息表示所发生的事件的类型时,事件的变元(argument)的变元信息。

换句话说,PlayListMark()以length(32位)开始,length表示PlayListMark()的大小,包括length的大小。

length之后跟随number_of_PlayList_marks(播放列表标记数目)(16位)。number_of_PlayList_marks表示接续number_of_PlayList_marks的Mark()的数目。number_of_PlayList_marks之后跟随由number_of_PlayList_marks表示的Mark()。

Mark()以mark_type(标记类型)(8位)开始。mark_type是上述类型信息,并且表示mark_type所属的Mark()的类型。

根据这个实施例,标记()具有三种类型,例如章(chapter)、索引(index)、以及事件(event)。

当Mark()的类型是章(有时称为章标记)时,它是章的开始位置的标记,其中章是作为PlayList()的划分的搜索单元。当Mark()的类型是索引(有时称为索引标记)时,它是索引的开始位置的标记,其中索引是章的子划分单元。当Mark()的类型是事件(有时称为事件标记)时,Mark()是当内容根据PlayList()正被再现时发生事件的位置的标记。脚本控制模块211被通知按照事件标记的事件已经发生。

图10示出在mark_type的值和Mark()类型之间的关系。在图10中,章标记的mark_type是1;索引标记的mark_type是2;以及事件标记的mark_type是3。在图10中,由8位mark_type表示的其它值,即0和4至255,预留用于未来扩展。

回到图9,mark_type之后跟随mark_name_length(标记名称长度)(8位)。Mark()以mark_name_string(标记名称串)结束。mark_name_length和mark_name_string用于描述Mark()的名称。mark_name_length表示mark_name_string的有效大小。mark_name_string表示Mark()的名称。因此,从mark_name_string的起首开始的mark_name_length的字节表示Mark()的有效名称。

mark_name_length之后跟随四个元素ref_to_PlayItem_id(参照播放项目标识符)(16位)、mark_time_stamp(标记时间戳)(32位)、entry_ES_stream_id(入口ES流标识符)(8位)、以及entry_ES_private_stream_id(入口ES私有流标识符)(8位),它们使在PlayList()中定义的Mark()与剪辑流文件相关联。

ref_to_PlayItem_id把ID描述为被分配给Mark()所属的PlayItem()的顺序编号。ref_to_PlayItem id标识Mark()所属的PlayItem()(图8)。因此,如图8所示,剪辑信息文件和剪辑流文件被标识。

mark_time_stamp表示Mark()在由ref_to_PlayItem_id标识的剪辑流文件中表示的位置。

图11示出PlayList()、PlayItem()、剪辑、存储在剪辑流文件中的程序流的关系。

在图11中,PlayList()由三个被顺序编号为ID#0、ID#1、以及ID#2的PlayItem()组成。在下面描述中,编号为ID#i的PlayItem()用PlayItem#i表示。

在图11中,作为根据PlayItem#_0、PlayItem#_1、以及PlayItem#_2而再现的内容的剪辑分别用剪辑A、剪辑B、以及剪辑C表示。

剪辑实体在存储在由图8中示出的PlayItem()的Clip_Information_file_name(剪辑信息文件名)标识的剪辑流文件中的程序流中,是从IN_time至OUT_time。在图11中,作为剪辑A、剪辑B、以及剪辑C的实体的程序流分别表示为程序流A、程序流B、以及程序流C。

在图11中,在作为根据PlayList()的再现的时间轴上的时间t0的标记的Mark()中,ref_to_PlayItem_id和mark_time_stamp被描述如下。

在图11中,因为时间t0是PlayItem#1被再现的时间,所以ref_to_PlayItem_id描述1为PlayItem#1的ID。因为在时间t0时,作为剪辑B的实体的程序流B被再现,所以mark_time_stamp描述存储程序流B的剪辑流文件的与时间t0相对应的时间。

再次回到图9,当Mark()与具体基本流相关时,entry_ES_stream_id和entry_ES_privat_stream_id被用于标识基本流。换句话说,entry_ES_stream_id描述与Mark()相关的基本流的stream_id。另一方面,当必要时,entry_ES_private_stream_id描述与Mark()相关的基本流的private_stream_id。

当视频流#1和视频流#2已被多路复用的剪辑的视频流#1被再现时,以及当在视频流#2正被再现期间章时间需要被改变时,视频流#1的stream_id和private_stream_id,在视频流#2正被再现期间的章标记时间的Mark()的entry_ES_stream_id和entry_ES_private_stream_id中被描述。另外,在视频流#2正被再现期间的章标记时间的Mark()的entry_ES_stream_id和entry_ES_private_stream_id中,视频流#2的stream_id和private_stream_id被描述。

不与具体基本流相关的Mark()的entry_ES_stream_id和entry_ES_private_stream_id例如是0。

entry_ES_private_id之后跟随mark_data(标记数据)(32位)。当Mark()是事件标记时,mark_data是变元信息,作为根据事件标记而发生的事件的变元。当Mark()是章标记或者索引标记时,mark_data能被用作章标记或者索引标记所表示的章编号或者索引编号。

[Clip()的描述]

接下来,将描述具有CLP扩展名并且被存储在图6中示出的“CLIP”目录下的剪辑信息文件的内部结构。

在图6中,在“CLIP”目录下有三个剪辑信息文件“00001.CLP”、“00002.CLP”、以及“00003.CLP”。这些剪辑信息文件包含表示存储在“STREAM”目录下的剪辑流文件“00001.PS”、“00002.PS”、以及“00003.PS”的特征的元数据。

图12示出剪辑信息文件Clip()的内部结构。

剪辑信息文件Clip()以presentation_start_time(表示开始时间)和presentation_end_time(表示结束时间)(每个32位)开始。presentation_start_time和presentation_end_time表示与剪辑信息文件Clip()相对应的剪辑流文件的开始时间和结束时间。剪辑流文件的时间被描述为用作MPEG2-制式的时间的90kHz的倍数。

presentation_end_time之后跟随reserved_for_word_alignment(7位)和capture_enable_flag_Clip(捕获使能标志剪辑)(1位)。7位的reserved_for_word_alignment被用于字对齐。capture_enable_flag_Clip是标志,用于表示视频数据是否像图7中示出的capture_enable_flag_PlayList那样被允许第二次使用。

然而,图7中示出的capture_enable_flag_PlayList表示属于PlayList()、与根据PlayList()而再现的视频流相对应的视频数据是否被允许第二次使用。与之相比,图12中示出的capture_enable_flag_Clip表示与存储在与剪辑信息文件Clip()相对应的剪辑流文件中的视频基本流相对应的视频数据是否被允许第二次使用。因此,以被允许第二次使用的视频数据为单位,图7中示出的capture_enable_flag_PlayList不同于图12中示出的capture_enable_flag_Clip。

像在图7中描述的capture_enable_flag_PlayList那样,在图12中描述的capture_enable_flag_Clip能够由多个位,而不是一个位组成。

capture_enable_flag_Clip之后跟随number_of_streams(流数目)(8位)。number_of_streams描述StreamInfo()的数目。因此,number_of_streams之后跟随由number_of_streams表示的StreamInfo()。

StreamInfo()以length(16位)开始。length表示StreamInfo()的大小,包括length的大小。length之后跟随stream_id(8位)和private_stream_id(8位)。stream_id和private_stream_id标识与StreamInfo()相关的基本流。

图13示出stream_id、private_stream_id(私有流标识符)、和由此被标识的基本流的关系。

stream_id与在MPEG2-制式标准中所定义的相同。MPEG2-制式标准为基本流的每个属性定义stream_id的值。因此,在MPEG2-制式标准中定义的基本流的属性能够仅仅由stream_id标识。

这个实施例能够处理在MPEG2-制式标准中未被定义的基本流的属性。private_stream_id是标识在MPEG2-制式标准中未被定义的基本流的属性的信息。

图13示出具有四个属性的基本流的stream_id以及private_stream_id的关系,该四个属性是根据在MPEG中定义的编码制式而编码的视频基本流、根据ATRAC(自适应变换声音编码)制式编码的音频基本流(以下有时称为ATRAC音频流)、根据LPCM(线性脉冲代码调制)制式编码的音频基本流(以下有时称为LPCM音频流)、以及字幕基本流(以下有时称为字幕流)。

MPEG2-制式标准定义:根据在MPEG中定义的编码制式而编码的视频基本流与在0xE0至0xEF(其中0x表示其之后的字符串用十六进制表示法表示)范围内的值多路复用。因此,根据在MPEG中定义的编码制式而编码、并由在0xE0至0xEF范围内的stream_id标识的16个视频基本流能够与程序流多路复用。

因为根据在MPEG中定义的编码制式而编码的视频基本流能够由在0xE0至0xEF的范围内的stream_id标识,所以不需要private_stream_id。

另一方面,在MPEG2-制式中,没有为ATRAC音频流、LPCM音频流、以及字幕流定义stream_id。

因此,根据这个实施例,对于在MPEG2-制式中没有定义stream_id的基本流,使用在MPEG2-制式中表示属性private_stream_1的值的0xBD。另外,如图13所示,这些基本流由private_stream_id标识。

换句话说,ATRAC音频流由在0x00至0x0F的范围内的private_stream_id标识。因此,16个ATRAC音频流能够与程序流多路复用。LPCM音频流由在0x10至0x1F的范围内的private_stream_id标识。因此,16个LPCM音频流能够与程序流多路复用。字幕流由在0x80至0x9F的范围内的private_stream_id标识。因此,32个字幕流能够与程序流多路复用。

后文将详细描述stream_id和private_stream_id。

回到图12,private_stream_id之后顺次跟随StaticInfo()和reserved_for_word_alignment(8位)。StaticInfo()描述当由包括StaticInfo()的StreamInfo()中描述的stream_id和private_stream_id标识的基本流正被再现时不变化的信息。后文将参照图14描述StaticInfo()。

reserved_for_word_alignment用于字对齐。

reserved_for_word_alignment之后跟随number_of_DynamicInfo(动态信息数目)(8位)。number_of_DynamicInfo表示接续number_of_DynamicInfo的pts_change_point(pts改变点)(每个32位)和DynamicInfo()的集合数目。

因此,number_of_DynamicInfo之后跟随由number_of_DynamicInfo表示的pts_change_point和DynamicInfo()的集合。

pts_change_point表示与pts_change_point成对的DynamicInfo()的信息变成有效的时间。表示基本流的开始时间的pts_change_point等于在与存储基本流的剪辑流文件相对应的剪辑信息文件Clip()的起首所描述的presentation_start_time。

DynamicInfo()描述所谓的动态信息,该动态信息当由stream_id和private_stream_id标识的基本流正被再现时改变。在由与DynamicInfo()成对的pts_change_point表示的再现时间,在DynamicInfo()中描述的信息变成有效。后文将参照图15描述DynamicInfo()。

由number_of_DynamicInfo表示的pts_change_point和DynamicInfo()的集合之后跟随EP_map()。后文将参照图16描述EP_map()。

[StaticInfo()的描述]

接下来,参照图14,图12中示出的StaticInfo()将详细描述。

图14示出StaticInfo()的句法。

StaticInfo()的内容根据相应的基本流的属性而变化。与StaticInfo()相对应的基本流的属性由包含在包括StaticInfo()的图12中示出的StreamInfo()中的stream_id和private_stream_id判断。

当与StaticInfo()相对应的基本流是视频流(stream==VIDEO)时,StaticInfo()包括picture_size(图像大小)(4位)、frame_rate(帧速率)(4位)、cc_flag(cc标志)(1位)、以及用于字对齐的reserved_for_word_alignment。

picture_size表示通过与视频流相对应的视频数据而被显示的图像的大小。frame_rate表示与视频流相对应的视频数据的帧频率。cc_flag表示视频流是否包含隐藏字幕(closed caption)数据。当视频流包含隐藏字幕数据时,cc_flag是1。当视频流不包含隐藏字幕数据时,cc_flag是0。

当与StaticInfo()相对应的基本流是音频流(stream==AUDIO)时,StaticInfo()包括audio_language_code(音频语言代码)(16位)、channel_configuration(信道配置)(8位)、lfe_existence(lfe存在)(1位)、sampling_frequency(采样频率)(4位)、以及用于字对齐的reserved_fo_rword_alignment。

audio_language_code描述表示包含在音频流内的音频数据的语言的代码。channel_configuration表示包含在音频流内的音频数据的属性,诸如非立体声(mono)、立体声、多信道、等等。lfe_existence表示音频流是否包含低频效果信道。当音频流包含低频效果信道时,lfe_existence是1。当音频流不包含低频效果信道时,lfe_existence是0。sampling_frequency是表示包含在音频流内的音频数据的采样频率的信息。

当与StaticInfo()相对应的基本流是字幕流(stream==SUBTITLE)时,StaticInfo()包括由subtitle_language_code(字幕语言代码)(16位)、configurable_flag(可配置标志)(1位)、以及用于字对齐的reserved_for_word_alignment。

subtitle_language_code描述表示包含在字幕流内的字幕数据的语言的代码。configurable_flag是表示字幕数据显示模式是否被允许从缺省显示模式改变的信息。当显示模式允许被改变时,configurable_flag是1。当显示模式不允许被改变时,configurable_flag是0。字幕数据的显示模式包括字幕数据的显示大小、显示位置、显示颜色、显示式样(例如,闪烁)、显示方向(垂直或者水平)、等等。

[DynamicInfo()的描述]

接下来,参照图15,将详细描述图12中示出的DynamicInfo()。

图15示出DynamicInfo()的句法。

DynamicInfo()以用于字对齐的reserved_for_word_alignment(8位)开始。接续reserved_for_word_alignment的元素取决于与DynamicInfo()相对应的基本流的属性。与DynamicInfo()相对应的基本流的属性由包含在StreamInfo()内的stream_ID和private_stream_id判断,如同参照图14所述的StaticInfo(),StreamInfo()如图12所示,包括DynamicInfo()。

如图12所示,DynamicInfo()描述当基本流正被再现时变化的动态信息。该动态信息不是具体的。然而,在图15中示出的实施例中,与DynamicInfo()相对应的基本流数据,即作为基本流的处理的输出的数据的输出属性,在DynamicInfo()中描述。

具体地,当与DynamicInfo()相对应的基本流是视频流(stream==VIDEO)时,DynamicInfo()包括display_aspect_ratio(显示纵横比)(4位)和用于字对齐的reserved_for_word_alignment。display_aspect_ratio描述视频流的视频数据的输出模式,例如视频数据的纵横比。换句话说,display_aspect_ratio描述表示作为纵横比的或者16∶9或者4∶3的信息。视频流的DynamicInfo()能够描述诸如视频数据的图像大小(X像素×Y像素)以及纵横比。

当与DynamicInfo()相对应的基本流是音频流(stream==AUDIO)时,DynamicInfo()包括channel_assignment(信道分配)(4位)和用于字对齐的reserved_for_word_alignment。当音频流包含音频数据的两个信道时,channel_assignment描述两个信道的输出模式。换句话说,channel_assignment描述表示立体声或者双重(双语)的信道分配的信息。

当与DynamicInfo()相对应的基本流是字幕流(stream==SUBTITLE)时,DynamicInfo()包括用于字对齐的reserved_for_word_alignment。换句话说,根据图15中示出的实施例,对于字幕流,作为动态信息的输出属性不被定义。

[EP_map()的描述]

接下来,参照图16,将详细描述图12中示出的EP_map()。

图16示出EP_map()的句法。

EP_map()描述解码开始可能点(入口点)的信息,从该点,与存储在与包括EP_map()的剪辑信息文件Clip()(图12所示)相对应的剪辑流文件中的程序流多路复用的每个基本流能够被解码。

具有固定速率的流的解码开始可能点能够通过计算获取。然而,对于其大小在每个视频存取单元中变化的流,诸如根据MPEG标准编码的视频流,解码开始可能点不能通过计算获取。解码开始可能点不能被获取,除非该流被分析。为了随机地存取数据,需要快速识别解码开始可能点。用EP_map(),解码开始可能点能够被快速识别。

在MPEG2-视频中,包括Sequence_header()等等的内部图像的起首是解码开始可能点。

EP_map()以用于字对齐的reserved_for_word_alignment(8位)开始。reserved_for_word_alignment之后跟随number_of_stream_id_entries(流标识符入口数目)(8位)。number_of_stream_id_entries表示描述在EP_map()中解码开始可能点的信息的基本流的数目。

number_of_stream_id_entries之后跟随标识基本流和基本流的解码开始可能点的信息的信息集合。它们被重复由number_of_stream_id_entries表示的次数。

换句话说,number_of_stream_id_entries之后跟随作为标识基本流的信息的stream_id(8位)和private_stream_id(8位)。private_stream_id之后跟随number_of_EP_entries(EP入口数目)(32位)。number_of_EP_entries表示由之后跟随number_of_EP_entries的stream_id和private_stream_id标识的解码开始可能点的数目。

number_of_EP_entries之后跟随由stream_id和private_stream_id标识的基本流的解码开始可能点的信息。信息被重复由number_of_EP_entries表示的次数。

换句话说,当当前的基本流是视频流时,index_N_minus1(索引N减1)和N-th_Ref_picture_copy(第N参照图像拷贝)被放置。其后,PTS_EP_start(PTS EP开始)(32位)和RPN_EP_start(32位)被作为解码开始可能点的信息而放置。这个序列被重复。index_N_minus1和N-th_Ref_picture_copy将在后文描述。

当当前的基本流并不是视频流时,16位的reserved_for_future_use之后跟随作为解码开始可能点的信息的PTS_EP_start(32位)和RPN_EP_start(RPNEP开始)(32位)。这个序列被重复。

记录在将后文描述的由RPN_EP_start表示的private_stream_2(私有流2)中的1stRef_picture(第1参照图像)、2ndRef_picture(第2参照图像)、3rdRef_picture(第3参照图像)、和4thRef_picture(第4参照图像)中的一个,被拷贝到N-th_Ref_picture_copy。另外,表示哪个字段已被拷贝的信息,使用图17中示出的值,而被记录到index_N_minus1。换句话说,如图17所示,当1stRef_picture被拷贝时,0被记录到index_N_minus1。当2ndRef_picture被拷贝时,1被记录到index_N_minus1。当3rdRef_picture被拷贝时,2被记录到index_N_minus1。当4thRef_picture被拷贝时,4被记录到index_N_minus1。

作为解码开始可能点的信息的一个元素,PTS_EP_start表示在存储与由stream_id和private_stream_id标识的基本流多路复用的程序流的剪辑流文件中的解码开始可能点的时间(再现时间)。

解码开始可能点的信息的另一元素RPN_EP_start描述在存储与由stream_id和private_stream_id标识的基本流多路复用的程序流的剪辑流文件中的解码开始可能点的位置,作为如程序流的pack()的数目的值。根据这个实施例,pack()的大小固定是2048字节。另外,根据这个实施例,盘101(图1)的一个扇区是2048字节。

视频流的解码开始可能点(入口点)紧接private_stream_2分组(作为private_stream_2的属性的PES_packet())。private_stream_2分组存储用于解码被存储在两个相邻的private_stream_2分组之间的视频流的信息。因此,对于视频流,作为解码开始可能点的信息的RPN_EP_start描述其后紧随实际的解码开始可能点的private_stream_2分组的开始位置。

作为解码开始可能点的信息的PTS_EP_start和RPN_EP_start的集合针对由EP_map()中的stream_id和private_stream_id标识的每个基本流而以升序预先排序。因此,作为解码开始可能点的信息的PTS_EP_start和RPN_EP_start的集合能够被二分搜索(binary-searched)。

用于可变速率流和在视频存取单元中其大小不同的流的随机存取方法例如在日本专利申请公开公报No.2000-341640(日本专利申请No.HEI11-317738)中描述。

[剪辑流文件的描述]

接下来,在图6中示出的具有PS扩展名并存储在“STREAM(流)”目录下的剪辑流文件(图6中的“00001.PS”、“00002.PS”、和“00003.PS”)的内部结构将被描述。

剪辑流文件基于在MPEG-2制式(ISO/IEC 13818-1)中定义的MPEG2_Program_Stream()而构成。

图18A和图18B示出在MPEG-2制式(ISO/IEC 13818-1:20000)标准中描述的表2-31、表2-32、以及表2-33。

存储在剪辑流文件中的程序流是在MPEG2-制式标准的表2-31中定义的MPEG2_Program_Stream()。程序流包括至少一个pack()和一个MPEG_program_end_code(MPEG程序结束代码)。MPEG2_Program_Stream()在日本专利No.2785220中描述。

一个pack()包括如在MPEG-2制式标准的表2-32中定义的一个Pack_header()和任意数目PES_packet()。Pack_header()在MPEG2-制式标准的表2-33中被详细描述。

在MPEG2-制式标准中,pack()具有可变长度的大小。然而,如图16所示,假定pack()的大小是固定2048字节。在这个示例中,一个pack()的PES_packet()的数目是1、2、或者3。当pack()以private_stream_2分组开始时,通常其后紧随相应视频流的PES_packet()。另外,作为第三PES_packet(),可能有padding_packet(填料分组)。private_stream_2分组通常存在于pack()的起首。

当Pack()不以private_stream_2分组开始时,Pack()以包含视频数据、音频数据、字幕数据、等等的内容数据的PES_packet()开始。第二PES_packet()可以是padding_pket(填料分组)。

图19A和图19B至图21A至图21B示出在MPEG2-制式标准的表2-17中定义的PES_packet()。

PES_packet()主要由packet_start_code_prefix(分组开始代码前缀)、stream_id、PES_packet_length(PES分组长度)(图19A和图19B中示出)、根据stream_id等等而变化的报头部分(包括stuffing_byte(填充字节))(这些部分在图19A和图19B至图21A和图21B中示出)、以及PES_packet_data_byte(PES分组数据字节)(图21A和图21B中示出)组成。当PES_packet()是padding_packet(stream_id==padding_stream(填料流))时,padding_byte(填料字节)的所要求的数目(0xFF)(图21A和图21B)而不是PES_packet_data_byte被重复所要求的次数。

如图19A和图19B至图20A、图20B、和图20C所示,PES_packet()的报头部分能够描述表示被称为PTS(表示时间戳)的显示定时的信息、和表示被称为DTS(解码时间戳)的解码定时的信息。根据这个实施例,PTS被添加到全部存取单元(用于构成在MPEG2-制式中定义的基本流的解码单元)的每一个。当在MPEG2-制式中被指定时,DTS被添加。

与程序流多路复用的基本流被存储在PES_packet()的PES_packet_data_byte(图21A和图21B)中。PES_paccket()的stream_id根据基本流的属性来描述值,以标识存储在PES_packet_data_byte中的基本流。

在PES_packet()的stream_id中描述的值与基本流的属性(类型)的关系在MPEG2-制式标准的表2-18中定义。图22A和图22B示出MPEG-2制式标准的表2-18。

根据本发明的实施例,例如图23中示出的值被用作在如图22A和图22B所示的MPEG2-制式标准中定义的stream_id。

换句话说,根据这个实施例,五个式样10111101B、10111110B、10111111B、110xxxxxB、和1110xxxxB被用作stream_id值,其中“x”表示0和1的任意一个。

根据图23中示出的表,具有private_stream_1的属性的基本流的PES_packet()的stream_id是10111101B。根据图23中示出的表,padding_packet的PES_packet()的stream_id是10111110B。根据图23中示出的表,具有private_stream_2属性的基本流的PES_packet()的是10111111B。

在MPEG中定义的音频流(音频基本流)的PES_packet()的stream_id是110xxxxxB。110xxxxxB的低五位xxxxx是标识音频流的音频流编号。能够由音频流编号标识的32(=25)个音频流(在MPEG中定义的音频流)能够与程序流多路复用。

在MPEG中定义的视频流(视频基本流)的PES_packet()的stream_id是1110xxxxB。1110xxxxB的低四位xxxx是标识视频流的视频流编号。16(=24)个视频流(在MPEG中定义的视频流)能够与程序流多路复用。

stream_id是111oxxxxB的PES_packet()被用于存储在MPEG中定义的视频流。stream_id是110xxxxxB的PES_packet()被用于存储在MPEG中定义的音频流。另一方面,在MPEG中没有定义根据编码制式(例如,ATRAC制式)的用于基本流的PES_packet()的stream_id。因此,如同在MPEG中定义的视频流和音频流,在MPEG中没有定义的根据编码制式的基本流不能通过stream_id而存储在PES_packet()中。

因此,根据这个实施例,private_stream_1的PES_packet()的PES_packet_data_byte被扩展,以存储根据在MPEG中没有定义的编码制式的基本流。

private_stream_1的PES_packet()的扩展PES_packet_data_byte被描述为private_stream1_PES_payload()。

[private_stream1_PES_payload()的描述]

图24示出private_stream1_PES_payload()的句法。

private_stream1_PES_payload()包括private_header()和private_payload()。private_payload()存储基本流,诸如根据在MPEG制式中没有定义的编码制式而编码的ATRAC音频流、LPCM音频流、字幕流、等等。

private_header()以private_stream_id(8位)开始。private_stream_id是标识存储在private_payload()中的基本流的标识符信息。根据基本流的属性,private_stream_id具有以下值。

图25示出private_stream_id的值和存储在private_payload()中的基本流的属性的关系。

图25示出三个式样0000xxxxB、0001xxxxB、和100xxxxxB作为private_stream_id值,其中“x”是与图23中示出的情况一样的0和1的任意值。

根据图25中示出的表,ATRAC流的private_payload()的private_stream1_PES_payload()的private_stream_id是0000xxxxB。0000xxxxB的低四位xxxx是标识ATRAC音频流的音频流编号。能够由音频流编号标识的16(=24)个ATRAC音频流能够与程序流(MPEG2_Program_Stream())多路复用。

根据图25中示出的表,LPCM音频流的private_payload()的private_stream1_PES_payload()的private_stream_id是0001xxxxB。0001xxxxB的低四位xxxx是标识LPCM音频流的音频流编号。能够由音频流编号标识的16(=24)个能够与程序流多路复用。

根据图25中示出的表,字幕流的private_payload()的private_stream1_PES_payload()的private_stream_id是100xxxxxB。100xxxxxB的低五位xxxxx是标识字幕流的字幕流编号。32(=25)个字幕流能够与程序流多路复用。

图13示出图23和图25的关系。

回到图24,接续private_stream1_PES_payload()的private_stream_id的元素取决于存储在private_payload()中的基本流的属性而变化。存储在private_payload()中的基本流的属性由在private_header()的起首的private_stream_id判断。

当存储在private_payload()中的基本流是ATRAC音频流(private_stream_id==ATRAC)时,reserved_for_future_use(8位)被描述为未来扩展。reserved_for_future_use之后跟随AU_locator(AU定位符)(16位)。AU_locator基于紧接AU_locator的位置,而表示存储在private_payload()中的ATRAC音频流的音频存取单元的开始位置。当private_payload()不存储音频存取单元时,例如0xFFFF在AU_locator中描述。

当存储在private_payload()中的基本流是LPCM音频流(private_stream_id==LPCM)时,fs_flag(1位)、reserved_for_future_use(3位)、ch_flag(ch标志)(4位)、以及AU_locator(16位)被顺次描述。

 fs_flag(fs标志)表示存储在private_payload()中的LPCM音频流的采样频率。当LPCM音频流的采样频率是48kHz时,fs_flag是0。当LPCM音频流的采样频率是44.1kHz时,fs_flag是1。

ch_flag表示存储在private_payload()中的LPCM音频流的信道数。当LPCM音频流是非立体声时,ch_flag是1。当LPCM音频流是立体声时,ch_flag是2。

AU_locator基于紧接AU_locator的位置,而表示存储在private_payload()中的LPCM音频流的音频存取单元的开始位置。当private_payload()不存储音频存取单元时,在AU_locator中例如0xFFFF被描述。

当存储在private_payload()中的基本流是字幕流(private_stream_id==SUBTITLE)时,为了将来扩展,reserved_gor_future_use(8位)被描述。reserved_for_future_use后面紧接AU_locator(16位)。AU_locator基于紧接AU_locator的位置,而表示存储在private_payload()中的字幕流的字幕存取单元的开始位置。当private_payload()不存储字幕存取单元时,在AU_locator中例如0xFFFF被描述。

[private_stream2_PES_payload()的描述]

图26示出private_stream2_PES_payload()的句法。

private_stream2_PES_payload()是private_stream_2的private_payload()的PES_packet_data_byte(图21A和图21B)的扩展名,即,private_stream_2的PES_packet()的PES_packet_data_byte的扩展名。private_stream2_PES_payload()描述用于解码视频流的信息。

根据这个实施例,private_stream_2的PES_packet()紧接视频流的解码开始可能点。因此,根据这个实施例,当private_stream_2的PES_packet()从程序流中被检测到时,紧接PES_packet()的视频流能够被解码。

图16中示出的EP_map()的RPN_EP_start表示用于视频流的private_stream_2的PES_packet()的开始位置。

private_stream2_PES_payload()以用于将来扩展的reserved_for_future_use(8位)开始。reserved_for_future_use后顺次跟随video_stream_id(视频流标识符)(8位)、1stRef_picture(16位)、2ndRef_picture(16位)、3rdRef_picture(16位)、4thRef_picture(16位)、au_information()、以及VBI()。

video_stream_id描述与紧接private_stream_2的PES_packet()的视频流的PES_packet()的stream_id相同的值。video_stream_id标识PES_packet(),其存储以存储在private_stream_2的PES_packet()的private_stream2_PES_payload()中的信息解码的视频流。

1stRef_picture、2ndRef_picture、3rdRef_picture、以及4thRef_picture分别表示包括在由video_stream_id标识的视频流中的从private_stream_2的PES_packet()至下一private_stream_2的PES_packet()的第一、第二、第三、以及第四参照图像的最后的Pack()中的位置的相对值。1stRef_picture、2ndRef_picture、3rdRef_picture、以及4thRef_picture的细节在日本专利申请公开公报No.HEI 09-46712(日本专利申请No.HEI 07-211420)中被公开为bytes_to_first_P_pic(至第一P图像的字节)以及bytes_to_second_P_pic(至第二P图像的字节)。

au_information()描述关于从private_tream_2的PES_packet()至private_stream_2的PES_packet()的视频流的视频存取单元的信息。au_information()将参照图27详细描述。

VBI()被用于描述关于隐藏字幕(closed caption)的信息。

具有private_stream2_PES_payload()的private_stream_2的PES_packet()关于每个视频流的解码开始可能点而被描述。

图27示出图26中示出的au_information()的句法。

au_information()以length(16位)开始,length表示包括length的大小的au_information()的大小。length后顺次跟随reserved_for_word_alignment(8位)以及number_of_access_unit(存取单元的数目)(8位)。reserved_for_word_alignment用于字对齐。

number_of_access_unit表示从private_stream2的PES_packet()到下一private_stream2的PES_packet()而存储的视频存取单元的数目。

换句话说,在其video_stream_id与在图26中示出的private_stream2_PES_payload()中相同的private_stream2的PES_packet()中,number_of_access_unit表示包含在由从au_infomation()到下一au_information为止的video_stream_id表示的视频流中的存取单元(图像)的数目,其中,到下一au_information即当au_information()是其中最后的au_information()时,到剪辑流文件的末尾。

number_of_access_unit之后跟随根据number_of_access_unit的for循环的内容。换句话说,描述关于从包括number_of_access_unit的private_stream_2的PES_packet()到下一private_stream_2的PES_packet()的至少一个视频存取单元的信息。

在for循环中描述的信息(关于视频存取单元的信息)如下。

for循环包含pic_struct_copy(图像结构拷贝)(4位)、au_ref_flag(au参照标志)(1位)、AU_length(21位)、以及预留。

pic_struct_copy描述在ISO/IEC 14496-10,D.2.2.中定义的、关于与MPEG4-AVC(ISO/IEC 14496-10)相对应的视频存取单元的pic_struct()的拷贝。pic_struct()是信息,表示例如图像被显示为帧,或者图像的顶部场被显示之后其底部场被显示。

图28示出pic_struct表。

pic_struct被用作指示图像如何被显示的显示模式指定信息。

在图28中示出的pic_struct的表中,当图像被指示显示一个帧时,如在图28中示出的最左的Value(值)字段中所列,对于图像的pic_struct,0被设置。同样地,当图像被指示来显示顶部场或者底部场时,对于图像的pic_struct,1或者2被分别设置。当图像被指示来连续地显示顶部场和底部场时,对于图像的pic-struct,3被设置。当图像被指示来连续地显示底部场和顶部场时,对于图像的pic_struct,4被设置。当图像被指示连续地显示顶部场、底部场、以及顶部场时,对于图像的pic_struct,5被设置。当图像被指示连续地显示底部场、顶部场、以及底部场时,对于图像的pic_struct,6被设置。当图像被指示重复地显示一个帧两次或者三次时,对于图像的pic_struct,7或者8被分别设置。

au_ref_flag表示当另一存取单元被解码时,相应的存取单元是否是被参照的参照图像。当相应的存取单元是参照图像时,au_ref_flag是1。当相应的存取单元不是参照图像时,au_ref_flag是0。

AU_length表示相应的存取单元的按照字节的大小。

[记录在盘101上的数据的具体示例]

图29至图32示出具有上述格式并且已经记录在图1中示出的盘101上的数据的具体示例。

在图29至图32中,根据MPEG2-视频的视频流和根据ATRAC的音频流被使用。然而,在本发明中使用的视频流和音频流并不局限于这些流。换句话说,根据MPEG4-可视化的视频流、根据MPEG4-AVC的视频流、等等可以被使用。另一方面,根据MPEG1/2/4音频的音频流、根据LPCM音频的音频流、等等可以被使用。

不同于视频流和音频流,字幕流不可以被连续地解码,以及以相同间隔被显示。换句话说,字幕流从图2A和图2B中示出的缓冲器控制模块215被间歇地提供到字幕解码器控制模块218。字幕解码器控制模块218解码字幕流。

图29至图32示出:在三个剪辑信息文件”00001.CLP”、”00002.CLP”、和”00003.CLP”被存储在”CLIP”目录下并且与三个剪辑信息文件”00001.CLP”、”00002.CLP”、和”00003.CLP”相对应的三个剪辑流文件”00001.PS”、”00002.PS”、和”00003.PS”被存储在如图6所示的盘101上的”STREAM”目录的情况下,“PLAYLIST.DAT”文件、三个剪辑信息文件”00001.CLP”、”00002.CLP”、和”00003.CLP”、等等的具体示例。然而,在图29至图32中,诸如“PLAYLIST.DAT”文件等等的数据部分被省略。

换句话说,图29示出图7中示出的“PLAYLIST.DAT”文件的具体示例。

在图29中,number_of_PlayLists是2。因此,存储在“PLAYLIST.DAT”文件中的PlayList()的数目是2。在图29中,第一和第二PlayList()分别是PlayList#0和PlayList#1。

第一PlayList()的capture_enable_flag_PlayList(捕获使能标志播放列表),即PlayList#0,是1。因此,根据PlayList#0而被再现的视频数据允许被第二次使用。另一方面,PlayList#0的number_of_PlayItems(播放项目的数目)是2。因此,包含在PlayList#0中的PlayItem()的数目是2。在图29中,作为两个PlayItem()的PlayItem#0和PlayItem#1的具体示例在“PlayList#0”栏之下描述。

在作为包含在PlayList#0内的第一PlayItem()的PlayItem#0中,在图8中描述的Clip_Information_fil_ename是”00001.CLP”,IN_time是180,090,OUT_time是27,180,090。因此,根据PlayList#0的PlayItem#0而被再现的剪辑是从与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”的时间180,090到时间27,180,090。

在作为包含在PlayList#0内的第二PlayItem()的PlayItem#1中,在图8中描述的Clip_Information_file_name是“00002.CLP”,In-time是90,000,OUT_time是27,090,000。因此,根据PlayList#0的PlayItem#1而被再现的剪辑是从与剪辑信息文件”00002.CLP”相对应的剪辑流文件”00002.PS”的时间90,000到时间27,090,000。

在图29中,在作为第二PlayList()的PlayList#1中,capture_enable_flag_PlayList是0。因此,根据PlayList#1而被再现的视频数据不允许被第二次使用。在PlayList#1中,number_of_PlayItems(播放项目的数目)是1。因此,包含在PlayList#1内的PlayItem()的数目是1。在图29中,作为一个PlayItem()的PlayItem#0的具体示例在“PlayList#1”栏之下描述。

在作为包含在PlayList#1内的一个PlayItem()的PlayItem#0中,在图8中描述的Clip_Information_file_name是”00003.CLP”,IN_time是90,000,OUT_time是81,090,000。因此,根据PlayList#1的PlayItem#0而被再现的剪辑是从与剪辑信息文件”00003.CLP”相对应的剪辑流文件”00003.PS”的时间90,000到时间81,090,000。

接下来,图30A和图30B示出在图12中描述的剪辑信息文件Clip()的具体示例。换句话说,图30A和图30B示出图6中示出的剪辑信息文件”00001.CLP”、”00002.CLP”、和”00003.CLP”的具体示例。

在剪辑信息文件”00001.CLP”中,presentation_start_time是90,000以及presentation_end_time是27,990,000。因此,存储在与剪辑信息文件”00001.CLP”相对应的剪辑流文件”00001.PS”中的程序流能够使用内容310秒(27,990,000-90,000/90kHz)。

在剪辑信息文件”00001.CLP”中,capture_enable_flag_Clip是1。因此,与存储在与剪辑信息文件”00001.CLP”相对应的剪辑流文件”00001.PS”中的程序流多路复用的视频流允许被第二次使用。

此外,在图30A和图30B中,在剪辑信息文件”00001.CLP”中,number_of_streams是4。因此,四个基本流与存储在剪辑流文件”00001.PS”中的程序流多路复用。

假定四个基本流被表示为stream#0、stream#1、stream#2、和stream#3,在图30A和图30B中,作为stream#0、stream#1、stream#2、和stream#3的四个基本流的StreamInfo()(图12)的具体示例在”00001.CLP”栏之下被描述。

在剪辑流文件”00001.PS”的第一基本流stream#0中,stream_id是0xE0。因此,如图23和图25(或者图13)所示,基本流stream#0是视频流。根据这个实施例,private_stream_id不与视频流相关。在图30A和图30B中,private_stream_id是0x00。

在作为剪辑流文件”00001.PS”的第一基本流的视频流stream#0中,包含在StreamInfo()内的StaticInfo()(图14)的picture_size是“720×480”,frame_rate是”29.97Hz”,cc_flag是“Yes(是)”。因此,视频流stream#0是具有720×480像素和29.97Hz帧周期的视频数据。另外,视频流stream#0包含隐藏字幕数据。

在作为剪辑流文件“00001.PS”的第一基本流的视频流stream#0中,StreamInfo()(图12)的number_of_DynamicInfo是0。没有成对的pts_change_point和DynamicInfo()。

在剪辑流文件“00001.PS”的第二基本流stream#1中,stream_id是0xBD,private_stream_id是0x00。因此,如图23和图25所示,基本流stream#1是ATRAC音频流。

在作为剪辑流文件”00001.PS”的第二基本流的ATRAC音频流stream#1中,包含在StreamInfo()内的StaticInfo()(图14)的audio_language_code是“日语”,channel_configuration是“STEREO(立体声)”,lfe_existence是“NO(否)”,sampling_frequency是“48kHz”。因此,ATRAC音频流stream#1是日语和立体声音频数据。另外,ATRAC音频流stream#1不包含低频作用信道,并且采样频率是48kHz。

另外,在作为剪辑流文件”00001.PS”的第二基本流的ATRAC音频流stream#1中,因为StreamInfo()(图12)的number_of_DynamicInfo是0,所以没有成对的pts_change_point和DynamicInfo()。

在剪辑流文件“00001.PS”的第三基本流stream#2中,stream_id是0xBD,private_stream_id是0x80。因此,如图23和图25所示,基本流stream#2是字幕流。

在作为剪辑流文件”00001.PS”的第三基本流的字幕流stream#2中,包含在StreamInfo()内的StaticInfo()(图14)的subtitle_language_code是“日语”,configurable_flag是0。因此,字幕流stream#2是日语字幕数据。另外,此显示模式不允许改变。

在作为剪辑流文件”00001.PS”的第三基本流的字幕流stream#2中,因为StreamInfo()(图12)的number_of_DynamicInfo是0,所以没有成对的pts_change_point和DynamicInfo()。

在剪辑流文件“00001.PS”的第四基本流stream#3中,stream_id是0xBD,private_stream_id是0x81。因此,如图23和图25所示,基本流stream#3是字幕流。

为了区别作为剪辑流文件”00001.PS”的第三基本流的字幕流stream#2和作为第四基本流的字幕流stream#3,它们的private_stream_id分别是0x80和0x81。

在作为剪辑流文件”00001.PS”的第四基本流的字幕流stream#2中,包含在StreamInfo()内的StaticInfo()(图14)的subtitle_language_code是“日语”,configurable_flag是1。因此,字幕流stream#3是日语字幕数据。字幕流stream#3的显示模式被允许改变。

在作为剪辑流文件”00001.PS”的第四基本流的字幕流stream#3中,因为StreamInfo()(图12)的number_of_DynamicInfo是0,所以没有成对的pts_change_point和DynamicInfo()。

在图30A和图30B中,在剪辑信息文件”00002.CLP”中,presentation_start_time是90,000,presentation_end_time是17,090,000。因此,存储在与剪辑信息文件”00002.CLP”相对应的剪辑流文件”00002.PS”中的程序流能够使用内容300秒((27,090,000-90,000)/90kHz)。

在剪辑信息文件”00002.CLP”中,capture_enable_flag_Clip是0。因此,与存储在与剪辑信息文件”00002.CLP”相对应的剪辑流文件”00002.PS”中的程序流多路复用的视频流不允许被第二次使用。

在图30A和图30B中,在剪辑信息文件”00002.CLP”中,number_of_streams是4。因此,如同上述剪辑流文件“00001.PS”,四个基本流与存储在相应的剪辑流文件”00002.PS”中的程序流多路复用。

假定四个基本流被表示为stream#0、stream#1、stream#2、和stream#3,在图30A和图30B中,stream#0、stream#1、stream#2、和stream#3四个基本流的StreamInfo()(图12)的具体示例在“00002.CLP”栏之下描述。

在图30A和图30B中,剪辑流文件”00002.PS”的第一至第四基本流,stream#0至#3的StreamInfo()的内容与剪辑流文件”00001.PS”的第一至第四基本流,stream#0至#3的相同。因此,它们的描述将被省略。

如上所述,剪辑流文件”00002.PS”的第一至第四基本流,stream#0至#3的StreamInfo()的内容与剪辑流文件”00001.PS”的第一至第四基本流,stream#0至#3的相同。因此,剪辑流文件”00002.PS”的第一基本流stream#0是视频流。第二基本流stream#1是ATRAC音频流。第三和第四基本流,stream#2和stream#3是字幕流。

接下来,在图30A和图30B中,在剪辑信息文件”00003.CLP”中,presentation_start_time是90,000,presentation_end_time是81,090,000。因此,存储在与剪辑信息文件”00003.CLP”相对应的剪辑流文件”00003.PS”中的程序流能够使用内容900秒((81,090,000-90,000)/90kHz)。

在剪辑信息文件”00003.CLP”中,capture_enable_flag_Clip是1。因此,与存储在与剪辑信息文件”00003.CLP”相对应的剪辑流文件”00003.PS”中的程序流多路复用的视频流允许被第二次使用。

此外,在图30A和图30B中,在剪辑信息文件”00003.CLP”中,number_of_streams是3。因此,三个基本流与存储在剪辑流文件”00003.PS”中的程序流多路复用。

假定三个基本流被表示为stream#0、stream#1、和stream#2,在图30A和图30B中,作为stream#0、stream#1、和stream#2的三个流的StreamInfo()(图12)的具体示例在”00003.CLP”栏之下描述。

在剪辑流文件”00003.PS”的第一基本流stream#0中,stream_id是0xE0。因此,如图23和图25(或者图13)所示,基本流stream#0是视频流。与剪辑流文件”00001.PS”的第一基本流stream#0一样,private_stream_id是0x00。

在作为剪辑流文件”00003.PS”的第一基本流的视频流stream#0中,包含在StreamInfo()中的StaticInfo()(图14)的picture_size是“720×480”,frame_rate是“29.97Hz”,cc_flag是“No”。因此,视频流stream#0是具有720×480像素和29.97Hz的帧周期的视频数据。视频流stream#0不包含隐藏字幕数据。

在作为剪辑流文件“00003.PS”的第一基本流的视频流stream#0中,StreamInfo()(图12)的number_of_DynamicInfo是2。因此,在StreamInfo()中描述pts_change_point和DynamicInfo()的两个集合。

在剪辑流文件“00003.PS”的第二基本流stream#1中,stream_id是0xE1。因此,如图23和图25(或者图13)所示,基本流stream#1是视频流。为了区别作为剪辑流文件“00003.PS”的第一基本流的视频流stream#0和作为第二基本流的视频流stream#1,它们的stream_id分别是0xE0和0xE1。与剪辑流文件“00001.PS”的第一基本流stream#0一样,private_stream_id是0x00。

在作为剪辑流文件“00003.PS”的第二基本流的视频流stream#1中,包含在StreamInfo()内的StaticInfo()(图14)的picture_size、frame_rate、和cc_flag与作为第一基本流的视频流stream#0的相同。因此,作为剪辑流文件“00003.PS”的第二基本流的视频流stream#1是具有720×480像素和29.97Hz帧周期的视频数据。视频流stream#1不包含隐藏字幕数据。

在作为剪辑流文件“00003.PS”的第二基本流的视频流stream#1中,因为StreamInfo()(图12)的number_of_DynamicInfo是0,所以没有成对的pts_change_point和DynamicInfo()。

在剪辑流文件“00003.PS”的第三基本流stream#2中,stream_id是0xBD,private_stream_id是0x00。因此,如图23和图25所示,基本流stream#2是ATRAC音频流。

在作为剪辑流文件“00003.PS”的第三基本流的ATRAC音频流stream#2中,包含在StreamInfo()内的StaticInfo()(图14)的audio_language_code、channel_configuration、lfe_existence、和sampling_frequency与作为剪辑流文件“00001.PS”的第二基本流的ATRAC音频流stream#1的相同。因此,作为剪辑流文件“00003.PS”的第三基本流的ATRAC音频流stream#2是日语和立体声音频数据。另外,ATRAC音频流stream#2不包含低频作用信道。ATRAC音频流stream#2具有48kHz的采样频率。

在作为剪辑流文件“00003.PS”的第三基本流的ATRAC音频流stream#2中,StreamInfo()(图12)的number_of_DynamicInfo是3。因此,StreamInfo()描述pts_change_point和DynamicInfo()的三个集合。

图31示出在图12中描述的剪辑信息文件Clip()的EP_map()的具体示例。换句话说,图31示出图6中示出的剪辑信息文件“00001.CLP”的如图16所示的EP_map()的具体示例。

在图31中,在EP_map()中,number_of_stream_id_entries是1。因此,EP_map()描述一个基本流的解码开始可能点的信息。

在图31中示出的EP_map()中,stream_id是0xE0。因此,如图23和图25所示,EP_map()描述PTS_EP_start和RPN_EP_start(图16)作为RAPI(随机接入点信息)的信息,该RAPI是由0xE0的stream_id标识的视频流的解码开始可能点。换句话说,在图31中,EP_map()是剪辑信息文件“00001.CLP”。如图30A和图30B所示,在与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.CLP”中,stream_id是0xE0的基本流是剪辑流文件“00001.CLP”的第一视频流,stream#0。因此,在图31中示出的EP_map()中描述的信息是视频流stream#0的解码开始可能点的PTS_EP_start和RPN_EP_start。

在图31中,剪辑流文件“00001.CLP”的第一视频流stream#0的解码开始可能点的最先的五个PTS_EP_start和RPN_EP_start被描述,而第六和随后的PTS_EP_start和RPN_EP_start被省略。

RPN_EP_start、PTS_EP_start、1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture表示与被多路复用的流多路复用的所有RAPI的开始位置、和紧接每个RAPI的内部图像的结尾位置、以及接续内部图像的第二、第三、和第四参照图像。

顶部RAPI的位置是0(扇区)。紧接顶部RAPI的内部图像的PTS是90,000。作为从RAPI的起首开始的相对扇区计数,内部图像、第二、第三、以及第四参照图像的末尾位置分别是28、37、48和58。

第二RAPI的位置是244(扇区)。紧接第二RAPI的内部图像的PTS是135,045。作为从RAPI的起首开始的相对扇区计数,内部图像、第二、第三和第四参照图像的末尾位置分别是10、18、25、和31。

第三RAPI的位置是305(扇区)。紧接第三RAPI的内部图像的PTS是180,090。作为从RAPI的起首开始的相对扇区计数,内部图像、第二、第三和第四参照图像的末尾位置分别是25、44、50、和54。

第四RAPI的位置是427(扇区)。紧接第四RAPI的内部图像的PTS是225,135。作为从RAPI的起首开始的相对扇区计数,内部图像、第二、第三和第四参照图像的末尾位置分别是8、15、22、和29。

第五RAPI的位置是701(扇区)。紧接第五RAPI的内部图像的PTS是270,180。作为从RAPI的起首开始的相对扇区计数,内部图像、第二、第三和第四参照图像的末尾位置分别是26、32、41、和48。

接近四个参照图像(1stRef_Picture、2ndRef_Picture、3rdRef_Picture、和4thRef_Picture)的末尾位置的预定扇区计数(在编码处理中能够被集体读取的扇区计数)的值被存储到N-th_Ref_picture_copy。在图31中,最接近扇区计数“30”的值被选择。

例如,对于顶部入口,PTS_EP_start=90,000以及RPN_EP_start=0。对于N-th_Ref_picture_copy,28,其最接近“30”,从28、37、48、以及58中被选择。因此,“0”,其表示1stRef_picture,被存储到index_N_minus1。

接下来,对于第二入口,PTS_EP_start=135,045以及RPN_EP_start=244。对于N-th_Ref_picture_copy,31,其最接近“30”,从10、18、25、以及31中被选择。因此,“3”,其表示4thRef_picture,被存储到index_N_minus1。

因此,(0,28),(3,31),(0,25),(3,29),以及(1,32)被存储到图31例示的五个点入口的index_N_minus1和N-th_Ref_picture_copy。

完全考虑再现设备的再现质量,这个选择算法被决定。因此,在这个实施例中,最接近相对小的扇区计数“30”的值被选择。作为替代,另一扇区计数可以被选择。当index_N_minus1的值小时,如果从RAPI的位置N-th_Ref_picture_copy的大小的数据被读取,则包含的参照图像数目少。相比之下,当index_N_minus1的值大时,包含的参照图像数目大。

在这个示例中,虽然四个参照图像的末尾位置在五个点的数据中被描述,但是取决于视频编码方法或者内部图像的间隔,参照图像数变成四个或者更少也是可能的。在这样的情况下,至多四个参照图像的最大数目参照图像的末尾位置可以被描述。

在图31中示出的EP_map()中,private_stream_id被0x00。如上所述,当stream_id表示视频流时,private_stream_id是无关的。

图32示出在图29中描述的PlayList#0和PlayList#1(图7中示出的PlayList())的PlayListMark()的具体示例。

图32中示出的上部的表表示PlayList#0的PlayListMark()(图9)。

在图32中示出的上部的表中,PlayList#0的PlayListMark()的number_of_PlayList_marks(播放列表标记数目)是7。因此,包含在PlayList#0的PlayListMark()内的Mark()数是7。

在图32中示出的上部的表中,作为包含在PlayList#0内的七个Mark()的第一Mark()的mark#0的mark_type(标记类型)(图9)是“Chapter”。因此,Mark#0是章标记。另外,因为ref_to_PlayItem_id(图9)是0,所以Mark#0属于图29中示出的两个PlayItem#0和#1的PlayItem#0。另外,Mark#0的mark_time_stamp(标记时间戳)是180,090。因此,Mark#0是根据包含在PlayList#0内的PlayItem#0而被再现的剪辑流文件的时间(再现时间)标记180,090。Mark#0的entry_ES_stream_id和entry_ES_private_stream_id两者是0。因此,Mark#0不与任何基本流相关。另外,Mark#0的mark_data(标记数据)是1。因此,Mark#0表示编号是1的章。

根据包含在PlayList#0内的PlayItem#0而被再现的剪辑流文件是由在PlayItem#0的Clip_Information_file_name(图29)中描述的“00001.CLP”标识的剪辑流文件“00001.PS”。因此,由Mark#0的mark_time_stamp表示的时间180,090是剪辑流文件“00001.PS”的时间。

在图32中示出的上部的表中,作为被包含在PlayList#0内的七个Mark()的第五Mark()的Mark#4是章标记,其与第一Mark#0相同。

换句话说,作为第五Mark()的Mark#4的mark_type(图9)是“Chapter”。因此,Mark#4是章标记。另外,Mark#4的ref_to_PlayItem_id(图9)是1。因此,Mark#4属于被包含在PlayList#0内的图29中示出的两个PlayItem#0和#1中的playitem#1。Mark#4的mark_time_stamp是90,000。因此,Mark#4是根据包含在PlayList#0内的PlayItem#1而被再现的剪辑流文件的时间标记90,000。另外,Mark#4的entry_ES_stream_id和entry_ES_private_stream_id两者是0。因此,Mark#4不与任何基本流相关。另外,Mark#4的mark_data是2。因此,Mark#4表示编号是2的章。

在这个示例中,根据包含在PlayList#0内的PlayItem#1而被再现的剪辑流文件是由在图29中描述的PlayItem#1的Clip_Information_file_name中描述的“00002.CLP”标识的剪辑流文件“00002.PS”。因此,由Mark#4的mark_time_stamp表示的时间90,000是剪辑流文件“00002.PS”的时间。

在图32中示出的上部的表中,作为包含在PlayList#0内的七个Mark()的第二Mark()的Mark#1的mark_type(图9)是“Index(索引)”。因此,Mark#1是索引标记。另外,Mark#1的ref_to_PlayItem id(图9)是0。因此,Mark#1属于被包含在PlayList#0内的图29中示出的两个PlayItem#0和#1中的PlayItem#0。另外,Mark#1的mark_time_stamp是5,580,090。因此,Mark#1是根据包含在PlayList#0内的PlayItem#0而被再现的剪辑流文件的时间标记5,580,090。另外,Mark#1的entry_ES_stream_id和entry_ES_private_stream_id两者是0。因此,Mark#1不与任何基本流相关。另外,Mark#1的mark_data是1。因此,Mark#1表示编号是1的索引。

在这个示例中,根据包含在PlayList#0内的PlayItem#0而被再现的剪辑流文件是如上所述的剪辑流文件“00001.PS”。因此,由Mark#1的mark_time_stamp表示的时间5,580,090是剪辑流文件“00001.PS”的时间。

在图32中示出的上部的表中,作为包含在PlayList#0内的七个Mark()的第三、第六、和第七Mark()的Mark#2、Mark#5、和Mark#6是如同第二Mark#1的索引标记。

在图32中示出的上部的表中,作为包含在PlayList#0内的七个Mark()的第四Mark()的Mark#3的mark_type(图9)是“Event(事件)”。因此,Mark#3是事件标记。另外,Mark#3的ref_to_PlayItem_id(图9)是0。因此,Mark#3属于包含在PlayList#0内的图29中示出的两个PlayItem#0和#1的PlayItem#0。另外,Mark#3的mark_time_stamp是16,380,090。因此,Mark#3是根据包含在PlayList#0内的PlayItem#0而被再现的剪辑流文件的时间标记16,380,090。Mark#3的entry_ES_stream_id和entry_ES_private_stream_id是0。因此,Mark#3不与任何基本流相关。另外,Mark#3的mark_data是0。因此,Mark#3使变元为0的事件发生。

如上所述,根据包含在PlayList#0内的PlayItem#0而被再现的剪辑流文件是剪辑流文件“00001.PS”。由Mark#3的mark_time_stamp表示的时间16,380,090是剪辑流文件“00001.PS”的时间。

在图32中示出的上部的表中,Mark()所属的PlayItem()的时间在PlayList#0的PlayListMark()的表的右侧上的左栏中描述。PlayList#0的时间在表的右侧上的右栏中描述。

图32中示出的下部的表表示PlayList#1的PlayListMark()(图9)。

在图32中示出的下部的表中,PlayList#1的PlayListMark()的number_of_PlayList_marks是3。因此,包含在PlayList#1的PlayListMark()内的Mark()数是3。

在图32中示出的下部的表中,作为包含在PlayList#1内的三个Mark()的第一Mark()的Mark#0的mark_type(图9)是“Chapter”。因此,Mark#0是章标记。另外,Mark#0的ref_to_PlayItem_id(图9)是0。因此,Mark#0属于包含在PlayList#1内的图29中示出的一个PlayItem#0。Mark#0的mark_time_stamp是90,000。因此,Mark#0是根据包含在PlayList#1内的PlayItem#0而被再现的剪辑流文件的时间标记90,000。Mark#0的entry_ES_stream_id和entry_ES_private_stream_id两者都是0。因此,Mark#0不与任何基本流相关。另外,Mark#0的mark_data是0。因此,Mark#0表示编号为0的章。

根据包含在PlayList#1内的PlayItem#0而被再现的剪辑流文件是由在图29中描述的PlayItem#0的Clip_Information-file_name中描述的“00003.CLP”标识的剪辑流文件“00003.PS”。因此,由Mark#0的mark_time_stamp表示的时间90,000是剪辑流文件“00003.PS”的时间。

在图32中示出的下部的表中,作为包含在PlayList#1内的三个Mark()的第二Mark()的Mark#1的mark_type(图9)是“Event”。因此,Mark#1是事件标记。另外,Mark#1的ref_to_PlayItem_id(图9)是0。因此,Mark#1属于包含在PlayList#1内的图29中示出的PlayItem#0。另外,Mark#1的mark_time_stamp是27,090,000。因此,Mark#1是根据包含在PlayList#1内的PlayItem#0而被再现的剪辑流文件的时间标记27,090,000。另外,在Mark#1中,entry_ES_stream_id是0xE0以及entry_ES_private_stream_id是0。因此,Mark#1与其stream_id是0xE0的基本流相关,即Mark#1与如图23和图25所示的视频流相关。另外,Mark#1的mark_data是1。因此,Mark#1使其属性为1的事件发生。

如上所述,根据包含在PlayList#1内的PlayItem#0而被再现的剪辑流文件是“00003.PS”。因此,由Mark#1的mark_time_stamp表示的时间27,090,000是剪辑流文件“00003.PS”的时间。

其stream_id是0xE0、并与Mark#1相关的视频流是其stream_id是0xE0的视频流,该视频流在包含在Mark#1所属的PlayList#1(图29)内的PlayItem#0的Clip_Information_file_name中描述的“00003.CLP”中被描述,即与由图30A和图30B中示出的剪辑信息文件“00003.CLP”标识的剪辑流文件“00003.PS”多路复用的三个基本流stream#0至#2中的第一基本流(视频流)stream#0。

在图32中示出的下部的表中,作为包含在PlayList#1内的三个Mark()的第三Mark()的Mark#2的mark_type(图9)是“Event”。因此,Mark#2是事件标记。另外,Mark#2的ref_to_PlayItem_id(图9)是0。因此,Mark#2属于作为包含在PlayList#1内的图29中示出的一个PlayItem的PlayItem#0。另外,Mark#2的mark_time_stamp是27,540,000。因此,Mark#1是根据包含在PlayList#1内的PlayItem#0而被再现的剪辑流文件的时间标记27,540,000。另外,在Mark#2中,entry_ES_stream_id是0xE1,并且entry_ES_private_stream_id是0。因此,Mark#2是其stream_id为0xE1的基本流,即与如图23和图25所示的视频流相关。另外,Mark#2的mark_data是2。因此,Mark#2使其变元为2的事件发生。

在这个示例中,如上所述,根据包含在PlayList#1内的PlayItem#0而被再现的剪辑流文件是剪辑流文件“00003.PS”。因此,由Mark#2表示的时间27,540,000是剪辑流文件“00003.PS”的时间。

其stream_id是0xE1、并与Mark#2相关的视频流是其stream_id是0xE1的视频流,该视频流在包含在图29中示出的PlayList#1内的PlayItem#0的Clip_Information_file_name中被描述的“00003.CLP”中被描述,即与由图30A和图30B中示出的剪辑信息文件“00003.CLP”识别的剪辑流文件“00003.PS”多路复用的三个基本流stream#0到#2的第二基本流(视频流)stream#1。

在图32中示出的下部的表中,Mark()所属的PlayItem()的时间在PlayList#1的PlayListMark()的表的右侧被描述。

在图32中,虽然mark_data描述章和索引标记所表示的章和索引编号,但是它们不需要在mark_data中被描述。而是,通过对PlayListMark()的章和索引标记计数,章和索引编号能够被识别。

[盘再现设备的操作的描述]

接下来,假定在图29至图32中描述的数据已经记录在图1中示出的盘101上,图1中示出的盘再现设备的操作将被描述。

根据用于多路复用制式的MPEG2-制式的定义,不需要把时间戳添加到全部存取单元。而是,这个定义说明时间戳能够以0.7秒或者更少的间隔被添加。换句话说,存在具有时间戳的存取单元和不具有时间戳的存取单元。

在这个示例中,假定在视频流的解码开始位置的存取单元通常具有时间戳。换句话说,如将在“再现准备处理”中描述的,使用EP-map()而满足条件PTS_EP_start≤IN_time的最大PTS_EP_start通过二分搜索法被作为解码开始位置而检索。在EP_map()中注册的视频的再现开始位置之后紧随的存取单元具有时间戳。

另外,定义说明存在未成对字段。换句话说,紧接pic_struct=1的存取单元之后,pic_struct=2的存取单元被放置。另外,紧接pic_struct=2的存取单元之后,pic_struct=1的存取单元被放置。

在这个示例中,假定pic_struct=7和8的存取单元不发生。

当盘101被装入盘驱动器102时,相应的消息通过图2A和图2B中示出的驱动器接口114和操作系统201而被发送到视频内容再现程序210。当视频内容再现程序210已经从操作系统201接收表示盘101已经被装入盘驱动器102的消息时,视频内容再现程序210开始图33中示出的再现前处理。

[再现前处理]

图33是描述视频内容再现程序210执行的再现前处理的流程图。

应该注意,盘再现设备不需要以流程图的时序执行操作或者处理。或者,盘再现设备还并行地或者个别地执行操作或者处理。然而,在说明书中,为方便起见,盘再现设备的操作或者处理将根据流程图被描述。

在再现前处理中,在步骤S101中,视频内容再现程序210使用操作系统201的文件系统功能来检查盘101,并且判断盘101是否是用于视频内容再现程序210的正常盘。

如上所述,虽然盘101以操作系统201的文件系统功能而被存取(文件从其中被读取),其描述将被省略。

当步骤S101中的判断结果表示盘101不是正常盘,即在盘101中使用的文件系统不符合操作系统201或者盘101的根目录不包含“VIDEO”目录时,视频内容再现程序210判断视频内容再现程序210不符合盘101,流程前进到步骤S102。在步骤S102中,图形处理模块219执行错误处理,以及完成再现前处理。

换句话说,图形处理模块219生成表示盘101不正常的错误消息,作为错误处理,以及使视频输出模块220输出错误消息,以便错误消息被显示。例如通过从音频输出模块221输出警报声音,或者从盘驱动器102卸载盘101,错误处理可以被执行。

当步骤S101中的判断结果表示盘101是正常盘时,流程前进到步骤S103。在步骤S103中,视频内容再现程序210使内容数据提供模块213请求操作系统201读取存储在盘101(图6)的“VIDEO”目录下的“SCRIPT.DAT”和“PLAYLIST.DAT”两个数据文件。其后,流程前进到步骤S104。在步骤S104中,“SCRIPT.DAT”文件被提供到脚本控制模块211。另外,“PLAYLIST.DAT”文件被提供到播放器控制模块212。

其后,流程从步骤S104前进到步骤S105至S107。在步骤S105至S107中,播放器控制模块212执行初始化处理。脚本控制模块211等待,直到播放器控制模块212已经完成初始化处理。

[播放器控制模块212的初始化处理]

在初始化处理中,在步骤S105中,播放器控制模块212分析“PLAYLIST.DAT”文件,并且检查在“PLAYLIST.DAT”文件中描述的剪辑信息文件的数目以及它们的文件名。

换句话说,因为“PLAYLIST.DAT”文件在图29中示出,并且图29中示出的“PLAYLIST.DAT”文件的number_of_PlayLists是2,所以播放器控制模块212识别存在两个PlayList(),即PlayList#0和PlayList#1。另外,因为图29中示出的“PLAYLIST.DAT”文件的第一PlayList#0的number_of_PlayItems是2,所以播放器控制模块212识别PlayList#0包含两个PlayItem()即PlayItem#0和PlayItem#1。其后,播放器控制模块212参照包含在图29中示出的“PLAYLIST.DAT”文件的PlayList#0中的第一PlayItem#0和第二PlayItem#1的Clip_Information_file_name,并且识别包含在PlayList#0中的第一PlayItem#0的剪辑信息文件是“00001.CLP”以及第二PlayItem#1的剪辑信息文件是“00002.CLP”。

类似地,因为number_of_PlayItems是1,所以播放器控制模块212识别第二PlayList#1包含一个PlayItem()(PlayItem#0),并且由于PlayItem#0的Clip_Information_file_name,PlayItem#0的剪辑信息文件是“00003.CLP”。

其后,流程从步骤S105前进到步骤S106。在步骤S106中,播放器控制模块212读取在步骤S105中识别的剪辑信息文件,即来自在盘101的“VIDEO”目录下的“CLIP”目录的三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”。

在步骤S106中,仅仅首先再现的PlayList()的PlayItem的剪辑信息文件需要被读取。根据这个实施例,然而,如上所述,PlayList()的PlayItem()的所有剪辑信息文件被预先读取。

在步骤S106之后,流程前进到步骤S107。在步骤S107中,播放器控制模块212判断在步骤S105中识别的剪辑信息文件是否已经被成功地读取。另外,播放器控制模块212判断与剪辑信息文件相对应的剪辑流文件是否存在于盘101上。换句话说,在步骤S107中,播放器控制模块212判断剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”是否已经被成功地读取,以及与剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”相对应的剪辑流文件“00001.PS”、“00002.PS”、和“00003.PS”是否存在于盘101的“VIDEO”目录下的“STREAM”目录中。

当在步骤S107的判断结果指示在步骤S105中识别的剪辑信息文件没有被成功地读取,或者与剪辑信息文件相对应的剪辑流文件不存在于盘101上,即根据“PLAYLIST.DAT”文件的剪辑信息文件和剪辑流文件没有被记录在盘101上时,判断视频内容再现程序210不符合盘101。其后,流程前进到步骤S102。在步骤S102,上述错误处理被执行,然后再现前处理完成。

与之相比,当在步骤S107中的判断结果指示在步骤S105中识别的剪辑信息文件已经被成功地读取,以及与剪辑信息文件相对应的剪辑流文件存在于盘101上时,播放器控制模块212完成初始化处理。其后,流程前进到步骤S108。

在步骤S108,脚本控制模块211解析并且执行“SCRIPT.DAT”文件。

当脚本控制模块211执行“SCRIPT.DAT”文件时,假定使播放器控制模块2 12再现第一PlayList()(PlayList#0)。此时,图34中示出的再现处理被执行。

[再现处理]

图34是视频内容再现程序210执行的再现处理的流程图。

[再现准备处理]

在步骤S121和S122中,播放器控制模块212对于脚本控制模块211已经引起再现的PlayList(),即第一PlayList()(PlayList#0),执行再现准备处理。

换句话说,在步骤S121中,播放器控制模块212检查包含在第一PlayList#0内的第一PlayItem#0的IN_time(图8)。其后,流程前进到步骤S122。在步骤S122中,播放器控制模块212检查与由包含在第一PlayList#0内的第一PlayItem#0再现的剪辑流文件“00001.PS”的PlayItem#0的IN_time相对应的再现开始位置。

当PlayItem()的IN_time(图8)表示剪辑流文件的起首时,程序流从剪辑流文件的起首读取。然而,当IN_time不表示剪辑流文件的起首时,播放器控制模块211需要检测与IN_time相对应的位置,然后从该位置读取剪辑流文件。

具体地,在图29中,包含在第一PlayList#0内的第一PlayItem#0的IN_time是180,090。播放器控制模块212在由包含在第一PlayList#0内的第一PlayItem#0再现的剪辑流文件“00001.CLP”的图31中示出的EP_map()中,搜索PlayItem#0的IN_time为180,090的再现开始位置。

换句话说,播放器控制模块212通过二分搜索法等等,来搜索满足PTS_EP_start=IN_time的最大PTS_EP_start,其中PTS_EP_start表示在EP_map()中描述的解码开始可能点。这是因为由IN_time表示的位置通常不是解码开始可能点。

在这种情况下,如上所述,IN_time是180,090。另外,在由包含在第一PlayList#0内的第一PlayItem#0再现的剪辑流文件“00001.CLP”的在图31中示出的EP_map()中,满足PTS_EP_start=IN_time的PTS_EP_start的最大值是180,090。因此,播放器控制模块212在图31中示出的EP_map()中搜索180,090的PTS_EP_start。

另外,播放器控制模块212读取搜索RPN_EP_start的305(扇区),并且决定在剪辑流文件“00001.PS”中由RPN_EP_start表示的位置,作为再现开始位置。

在播放器控制模块212已经决定再现开始位置之后,流程从S122前进到步骤S123。在步骤S123中,播放器控制模块212控制图形处理模块219,以显示时间代码。在播放器控制模块212的控制下,图形处理模块219生成时间代码,并且输出该时间代码到视频输出模块220。因此,时间代码被显示。

在步骤S123中显示的时间代码例如是PlayList()的起首被转换成00:00:00(时:分:秒)的值。除时间代码之外,或者代替时间代码,章编号和索引编号可以被显示。

[PlayListMark()的分析处理]

在步骤S123中时间代码已经被显示之后,流程前进到步骤S124。在步骤S124中,播放器控制模块212执行用于分析脚本控制模块211已经导致再现的PlayList()的分析处理,即在第一PlayList()(PlayList#0)中描述的PlayListMark()(图9)。

具体地,在图32中示出的上部的表中,已经被预先读取的“PLAYLIST.DAT”文件的第一PlayList#0的PlayListMark()的number_of_PlayList_marks是7。因此,播放器控制模块212识别被包含在PlayList#0内的Mark()数目是7。

另外,播放器控制模块212分析图32中示出的上部的表的七个Mark(),并且识别七个Mark()的第一至第四Mark()的四个Mark()属于PlayList#0的第一PlayItem()(PlayItem#0)。

其后,播放器控制模块212获取属于PlayList#0的第一PlayItem#0的四个Mark()的mark_time_stamp,并且把它们作为四元素矩阵而提供到解码控制模块214。因此,作为在图32中示出的上部的表中的七个Mark()的第一至第四Mark()的四个Mark()的mark_time_stamp的四个时间{180,090}、{5,580,090}、{10,980,090}、和{16,380,090},从播放器控制模块212被提供到解码控制模块214。此时,这些时间的“标记处理”属性也从播放器控制模块2 12被提供到解码控制模块214。当由时间计数部分214A计数的时间与具有“标记处理”的属性的时间匹配时,解码控制模块214把表示这个状态的消息、与具有“标记处理”属性的时间匹配的时间、和“标记处理”属性,提供到播放器控制模块212。

[将被再现的基本流的决定处理]

其后,流程从步骤S124前进到步骤S125。在步骤S125中,播放器控制模块212决定将被再现的基本流。

换句话说,在剪辑信息文件“00001.CLP”中,如图30A和图30B所示,该剪辑信息文件的文件名在作为脚本控制模块211已经引起再现的PlayList()的第一PlayList#0的第一PlayItem#0(图29)的Clip_Information_file_name中描述,number_of_streams是4。因此,播放器控制模块212识别四个基本流已经与相应的剪辑流文件“00001.PS”多路复用。另外,播放器控制模块212检查四个基本流的、在图30A和图30B中示出的剪辑信息文件“00001.CLP”的Staticlnfo()的stream_id和private_stream_id,并且识别四个基本流是一个视频流、一个ATRAC音频流、和两个字幕流。换句话说,播放器控制模块212识别具有与剪辑流文件“00001.PS”多路复用的个别属性的基本流的数目。

关于具有与剪辑流文件多路复用的个别属性的基本流的数目的信息被用来把一个基本流改变为将被再现的另一基本流(从一种音频模式到另一音频模式,或从一种字幕模式到另一字幕模式)。当剪辑流文件不包含字幕流文件(即,内容不包含字幕数据)时,通过关于具有“字幕流”的属性的基本流的数目的信息,判断是否存在字幕流。

播放器控制模块212选择并且决定根据Staticlnfo()的检查结果而将被再现的基本流。在这种情况下,与剪辑流文件“00001.PS”多路复用的四个基本流包含一个具有“视频流”属性的基本流和一个具有“音频流”属性的基本流。因此,具有“视频流”属性的基本流和具有“音频流”(ATRAC音频流)属性的基本流被无条件地决定为将被再现的基本流。

另一方面,与剪辑流文件“00001.PS”多路复用的四个基本流包含两个具有“字幕流”属性的基本流。因此,这两个字幕流中的一个被选择并且被决定为将被再现的基本流。在这个示例中,首先出现在剪辑信息文件“00001.CLP”中的两个字幕流中的字幕流被选择。

当与剪辑流文件“00001.PS”多路复用的基本流的属性和数目被识别时,四个基本流需要被标识。播放器控制模块212标识与具有stream_id和private_stream-id的剪辑流文件“00001.PS”多路复用的四个基本流。

换句话说,播放器控制模块212从与剪辑流文件“00001.PS”多路复用的四个基本流中,标识具有“视频流”属性的基本流,其中,该剪辑流文件具有如在图30A和图30B中示出的剪辑信息文件“00001.CLP”中描述的、为0xE0的stream_id。

另外,播放器控制模块212从与具有如图30A和图30B中示出的剪辑信息文件“00001.CLP”中描述的为0xBD的stream_id和为0x00的private_stream_id的剪辑流文件“00001.PS”多路复用的四个基本流中,标识作为具有“音频流”属性的基本流的ATRAC音频流。

另外,播放器控制模块212从与剪辑流文件“00001.PS”多路复用的四个基本流中,标识作为具有“字幕流”属性的基本流的两个字幕流,该剪辑流文件分别具有如在图30A和图30B中的剪辑信息文件“00001.CLP”中描述的为0xBD的stream_id和为0x80的private_stream_id以及为0xBD的stream_id和为0x81的private_stream_id。

如上所述,与剪辑流文件多路复用的基本流可以通过被描述为与剪辑流文件相对应的剪辑信息文件的元数据的stream_id和private_stream_id标识。

stream_id和private_stream_id的组合是被提供以扩展MPEG2-制式的多路复用的机制。当stream_id和private_stream_id的组合被用作元数据时,基本流能够被可靠地标识。另外,当为了相应的基本流的数目和属性的增加而扩展private_stream_id时,当前机制能够使用,而无需任何改变。因此,stream_id和private_stream_id的组合具有高的可扩展性。

换句话说,例如,蓝光盘(BD)标准使用MPEG2标准的传输流的PID(分组ID)来标识数据。因此,BD标准被MPEG2标准限制。另一方面,DVD-视频标准定义类似于private_stream_id的sub_stream_id(子流标识符)。然而,sub_stream_id不能在数据库中描述以标识流。sub_stream_id在关于仅仅8至32个流的信息的固定区域中被描述(见VI4-49,表4.2.1-2(VTS_AST_ATRT)和VI4-52,表4.2.1-3(VTS_SPST_ATRT))。因此,sub_stream_id不具有高的可扩展性。

另一方面,stream_id和private_stream_id的组合能够用元数据描述。例如,在图12中示出的剪辑信息文件Clip()中,stream_id和private_stream_id的组合能够被描述由number_of_streams表示的次数。因此,不管基本流的数目(在由number_of_streams表示的范围内),与剪辑流文件多路复用的基本流能够由作为在剪辑信息文件Clip()中描述的元数据的stream_id和private_stream_id的组合来标识。

根据这个实施例,stream_id和private_stream id的组合用来标识与和图12中示出的剪辑信息文件相对应的剪辑流文件多路复用的基本流。另外,作为图9中示出的PlayListMark()的entry_ES_stream_id和entry_ES_private_stream_id的组合,这个组合可用于标识与Mark()相关的基本流。另外,stream_id和private_stream_id的组合被用来标识用于描述在图16中示出的EP_map()中的解码开始可能点的信息的基本流。

[输出属性控制处理]

其后,流程从步骤S125前进到步骤S126。在步骤S126中,播放器控制模块212执行关于被决定在步骤S125中将被再现的基本流的输出属性控制处理。

具体地,播放器控制模块212检查number_of_DynamicInfo(图12),其表示Dynamiclnfo()(图15)的数目,该Dynamiclnfo()描述被决定在步骤S125中将被再现的视频流、ATRAC音频流、和字幕流的输出属性。

在这种情况下,将被再现的视频流、ATRAC音频流、和字幕流是与剪辑流文件“00001.PS”多路复用的基本流。在图30A和图30B中示出的剪辑信息文件“00001.CLP”中,它们的number_of_DynamicInfo全部是0。当number_of_DynamicInfo全部是0时,播放器控制模块212不执行关于将被再现的基本流的输出属性的输出属性控制处理。

当将被再现的基本流的number_of_DynamicInfo不是0时,基本流的输出属性控制处理被执行。输出属性控制处理将在后文描述。

[再现开始准备处理]

在步骤S126之后,流程前进到步骤S127。在步骤S127中,播放器控制模块212对将被再现的基本流执行再现开始准备处理。

换句话说,播放器控制模块212把将被再现的基本流与其已经多路复用的剪辑流文件“00001.PS”的文件名、和在EP_map()中描述为在步骤S122中决定的再现开始位置的RPN_EP_start(=305),提供到内容数据提供模块213。

另外,在存储在将被再现的基本流已经与其多路复用的剪辑流文件“00001.PS”中的程序流被提供给缓冲器控制模块215之前,播放器控制模块212初始化缓冲器控制模块215。

具体地,缓冲器控制模块215(图5)把相同的值设置到存储在数据开始指针存储部分231中的数据开始指针、存储在数据写入指针存储部分232中的数据写入指针、存储在视频读取指针存储部分241中的视频读取指针、存储在音频读取指针存储部分251中的音频读取指针、以及存储在字幕读取指针存储部分262中的字幕读取指针。

因此,存储在数据开始指针存储部分231中的数据开始指针和存储在数据写入指针存储部分232中的数据写入指针保持缓冲器控制模块215的缓冲器215A的相同位置。这表示在缓冲器215A中还没有存储有效数据。

另外,播放器控制模块212把作为将被再现的基本流的标识符信息的stream_id、以及必要时还有private_stream_id,提供到缓冲器控制模块215。

换句话说,如上所述,在将被再现的基本流中具有“视频流”属性的视频流由0xE0的stream_id标识。具有“音频流”属性的ATRAC音频流由0xBD的stream_id、和0x00的private_stream_id标识。具有“字幕流”属性的字幕流由0xBD的stream_id和0x80的private_stream_id标识。播放器控制模块212提供这些stream_id和private_stream_id到缓冲器控制模块215。

在缓冲器控制模块215(图5)中,视频读取功能部分233把从播放器控制模块212接收的、用于视频流的、为0xE0的stream_id,存储到stream_id寄存器242。另外,音频读取功能部分234把从播放器控制模块212接收的、为0xBD的stream_id、和为0x00的private_stream_id,分别存储到stream_id寄存器252和private_stream_id寄存器253。另外,字幕读取功能部分235把从播放器控制模块212接收的、为0xBD的stream_id、和为0x80的private_stream_id,分别存储到stream_id寄存器263和private_stream_id寄存器264。

播放器控制模块212存储被提供到缓冲器控制模块215、并将被再现的基本流的stream_id和private_stream_id,用于后文的处理。当流改变请求消息出现或在将在后文描述的标记处理中正被再现的流被标识时,播放器控制模块212使用stream_id和private_stream_id。

为了初始化该缓冲器控制模块215(图5),播放器控制模块212把具有根据与将被再现的基本流多路复用的剪辑流文件的值的字幕读取功能标志设置到字幕读取功能标志存储部分261。

换句话说,在这种情况下,因为将被再现的基本流已经与其多路复用的剪辑流文件“00001.PS”包含字幕流,所以值为1的字幕读取功能标志被设置给字幕读取功能标志存储部分261,以激活字幕读取功能部分235。当将被再现的基本流与其多路复用的剪辑流文件不包含字幕流时,值为0的字幕读取功能标志被设置给字幕读取功能标志存储部分261。在这种情况下,字幕读取功能部分235不执行任何处理。

另外,播放器控制模块212把包含在脚本控制模块211已经使播放器控制模块212再现的第一PlayList#0内的第一PlayItem#0(图29)的、为180,090的IN_time和为27,180,090的OUT_time提供到解码控制模块214。解码控制模块214使用IN_time来开始解码根据PlayItem()而再现的剪辑,以及使用OUT_time来停止解码该剪辑,并控制PlayItem改变处理,其将在后文描述。

播放器控制模块212初始化字幕流显示模式,其中图形处理模块219显示字幕流。换句话说,播放器控制模块212控制图形处理模块219以缺省显示模式显示字幕流。

[读取数据的开始]

其后,流程从步骤S127前进到步骤S128。播放器控制模块212控制内容数据提供模块213,使用操作系统201的功能,读取包含将被再现的基本流已经与其多路复用的程序流的剪辑流文件。换句话说,内容数据提供模块213指定在盘101(图6)的“VIDEO”目录下的“STREAM”目录的剪辑流文件“00001.PS”,指定已经在步骤S122中被决定作为再现开始位置的扇区305,以及使操作系统201读取文件。内容数据提供模块213使操作系统201提供已经从盘101读取的数据到缓冲器控制模块215。

因此,剪辑流文件“00001.PS”的程序流从盘101读取。程序流被提供给缓冲器控制模块215。

缓冲器控制模块215(图5)把已经从盘101读取的程序流写入到由缓冲器215A的数据写入指针存储部分232的数据写入指针表示的位置,以及使数据写入指针递增写入数据的大小。

除非另作说明,当缓冲器控制模块215的缓冲器215A具有空余空间时,内容数据提供模块213从盘101读取数据,提供并且存储该数据到缓冲器控制模块215的缓冲器215A。因此,缓冲器215A通常存储足够量的数据。

[控制解码器的开始]

当数据从盘101被读取,以及数据被存储到缓冲器控制模块215的缓冲器215A时,流程从步骤S128前进到步骤S129。在步骤S129中,解码控制模块214控制视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218,以开始从缓冲器215A读取数据,作为预先解码操作。

因此,视频解码器控制模块216向缓冲器控制模块215(图5)的视频读取功能部分233请求数据。根据请求,视频解码器控制模块216从缓冲器控制模块215获取存储在缓冲器215A中的一个视频存取单元、被添加到该视频存取单元的PTS和DTS(有时被称为时间戳)、作为紧接解码开始可能点的private_stream_2的PES_packet()中描述的信息(有时称为附加信息)的pic_struct_copy、au_ref_flag、和AU_length、等等。无论何时视频解码器控制模块216获取视频存取单元,时间戳从视频解码器控制模块216被提供到解码控制模块214。

用于更新时间的pict_struct_copy从视频读取功能部分233发送。作为替代,包含在作为解析结果所获取的位流中的pic_struct可以被使用。

另一方面,音频解码器控制模块217向缓冲器控制模块215(图5)的音频读取功能部分234请求数据。根据请求,音频解码器控制模块217从缓冲器控制模块215获取存储在缓冲器215A中的一个(ATRAC)音频存取单元、和添加到音频存取单元的时间戳(PTS,DTS)。无论何时音频解码器控制模块217获取音频存取单元,时间戳从音频解码器控制模块217被提供到解码控制模块214。

还有,字幕解码器控制模块218向缓冲器控制模块215(图5)的字幕读取功能部分235请求数据。根据请求,字幕解码器控制模块218从缓冲器控制模块215获取存储在缓冲器215A中的一个字幕存取单元、和被添加到字幕存取单元的时间戳。无论何时字幕解码器控制模块218获取字幕存取单元,时间戳从字幕解码器控制模块218被提供到解码控制模块214。当将被再现的基本流不包含字幕流,或者缓冲器215A不存储字幕存取单元时,数据不从缓冲器控制模块215提供到字幕解码器控制模块218。

无论何时视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218向缓冲器控制模块215请求数据,根据它们的数据请求,它们发送结果到解码控制模块214。

当缓冲器控制模块215发送数据到视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218时,从缓冲器215A读取的数据的细节将在后文描述。

[解码数据的开始]

当视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218开始从缓冲器控制模块215的缓冲器215A读取数据时,流程从步骤S129前进到步骤S130。在步骤S130中,这些模块开始解码已经被读取的数据。

换句话说,与在步骤S127从播放器控制模块212提供的、包含在PlayList#0内的第一PlayItem#0的、为180,090的IN_time相对应地,根据在步骤S129中从视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218提供的时间戳,以及当必要时以改变的定时来保证同步,解码控制模块214使视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218开始解码。

用于以改变的定时来保证同步的开始解码数据的方法在例如日本专利No.3496725中描述。简而言之,从视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218提供的时间戳的最小值被设置为时间计数部分214A计数的时间初始值。时间计数部分214A从这个设置时间开始对时间计数。当由时间计数部分214A计数的时间与时间戳匹配时,解码控制模块214使这些模块开始解码数据。

视频解码器控制模块216从解码控制模块214接收解码开始命令,提供从缓冲器控制模块215(图5)的视频读取功能部分233获取的一个视频存取单元到视频解码器116(图1),以及使视频解码器116解码视频存取单元。另外,视频解码器控制模块216提供由视频解码器116解码的视频数据到图形处理模块219。

其后,视频解码器控制模块216使视频解码器116每次一个连续地解码从缓冲器控制模块215的视频读取功能部分233获取的视频存取单元,并且提供作为视频数据的解码的视频存取单元到图形处理模块219。

此时,在视频解码器116中,解码的视频数据和输出的视频数据被记录。例如,如图35所示,视频数据按I1、B0、P3、B2、P5、和B4的次序被解码,然而,视频数据可以按B0、I1、B2、P3、B4和P5的次序被输出。因此,视频解码器116具有存储解码图像的解码图像缓冲器。在图35中,In表示第n个I图像,Bn表示第n个B图像,以及Pn表示第n个P图像。

音频解码器控制模块217从解码控制模块214接收解码开始命令,提供从缓冲器控制模块215(图5)的音频读取功能部分234获取的一个音频存取单元到音频解码器117(图1),并且使音频解码器117解码该音频存取单元。音频解码器控制模块217提供由音频解码器117解码的音频数据到音频输出模块221。

其后,音频解码器控制模块217使音频解码器117每次一个连续地解码从缓冲器控制模块215的音频读取功能部分234获取的音频存取单元,并且提供作为音频数据的解码的音频存取单元到音频输出模块221。

另外,字幕解码器控制模块218从解码控制模块214接收解码开始命令,根据该命令使内部字幕解码软件解码从缓冲器控制模块215(图5)的字幕读取功能部分235获取的一个字幕存取单元,并且提供作为字幕数据(字幕的图像数据)的解码的字幕存取单元到图形处理模块219。

其后,字幕解码器控制模块218使内部解码软件每次一个连续地解码从缓冲器控制模块215的字幕读取功能部分235获取的字幕存取单元,并且提供作为字幕数据的解码的字幕存取单元到图形处理模块219。

[图形处理]

其后,流程从步骤S130前进到步骤S131。在步骤S131中,图形处理模块219对从视频解码器控制模块216提供的视频数据、以及必要时对从字幕解码器控制模块218提供的字幕数据,执行图形处理。

换句话说,图形处理模块219执行例如根据从播放器控制模块212接收的显示模式命令来扩大或者缩小从字幕解码器控制模块218提供的字幕数据的字幕处理。当图形处理模块219还没有从播放器控制模块212接收显示模式命令,或者已经从那里接收缺省显示模式命令时,图形处理模块219存储从字幕解码器控制模块218接收的字幕数据。

另外,图形处理模块219添加从视频解码器控制模块216接收的视频数据和从字幕解码器控制模块218接收的字幕数据或已经被处理的字幕数据,获取字幕数据已经叠放于其的输出视频数据,以及提供该叠放的视频数据到视频输出模块220。

当图形处理模块219从脚本控制模块211或者播放器控制模块212接收用于菜单、消息、时间代码、章编号、或者索引编号的信息显示命令时,图形处理模块219生成信息,将其叠放到输出的视频数据,以及提供该叠放的数据到视频输出模块220。

[输出处理]

在步骤S131之后,流程前进到步骤S132。在步骤S132中,视频输出模块220连续地把从图形处理模块219提供的输出视频数据存储到FIFO 220A,以及以预定输出速率连续地输出存储在FIFO 220A中的视频数据。

只要FIFO 220A具有足够的存储容量(空余空间),视频输出模块220就能从图形处理模块219接收输出的视频数据。当FIFO 220A不具有足够的存储容量时,视频输出模块220使图形处理模块219停止接收输出的视频数据。因此,图形处理模块219停止接收输出的数据。另外,图形处理模块219使视频解码器控制模块216和字幕解码器控制模块218停止它们的处理。因此,视频解码器控制模块216和字幕解码器控制模块218停止它们的处理。

在视频输出模块220已经使图形处理模块219停止接收输出的视频数据,且FIFO 220A已经输出视频数据之后,当FIFO 220A具有足够的存储容量时,视频输出模块220使图形处理模块219接收输出的视频数据。如同输出的视频数据接收停止请求,图形处理模块219向视频解码器控制模块216和字幕解码器控制模块218通知这个请求。因此,图形处理模块219、视频解码器控制模块216、和字幕解码器控制模块218恢复被停止的处理。

另一方面,音频输出模块221还使FIFO 221A连续地存储在步骤S130中描述的从音频解码器控制模块217提供的音频数据,以及以预定输出速率(采样频率)连续地输出音频数据。

只要FIFO 221A具有足够的存储容量(空白空间),音频输出模块221则从音频解码器控制模块217接收音频数据。然而,当FIFO 221A不具有足够的存储容量时,音频输出模块221使音频解码器控制模块217停止接收音频数据。因此,音频解码器控制模块217停止它的处理。

在音频输出模块221已经使音频解码器控制模块217停止接收音频数据,且FIFO 221A已经输出音频数据之后,当FIFO 221A具有足够的存储容量时,音频输出模块221使音频解码器控制模块217接收音频数据。因此,音频解码器控制模块217恢复被停止的处理。

以上述方式,当视频输出模块220和音频输出模块221输出数据时,基本流被解码。

[视频解码器116的内部结构的描述]

图36示出视频解码器116的内部结构。在这个示例中,视频解码器116包括视频解码引擎116A和DPB(解码图像缓冲器)116B。DPB 116B还包括DPB 116B-1至DPB 116B-n(以下,除非另作说明,它们被集体称为DPB116B)。另外,如图37所示,DPB 116B包括视频缓冲器301和附加信息缓冲器302。

视频解码引擎116A使用DPB 116B的视频缓冲器301来临时地存储被解码的视频数据,以及存储作为未来参照图像的视频数据。此时,从视频读取功能部分233获取的附加信息和通过解析存取单元而获取的参数(例如,pic_struct),被记录在与存储在视频缓冲器301中的视频数据相对应的附加信息缓冲器302中。

虽然在图1中示出的盘再现设备再现来自盘101的数据的全部处理以及它们的流程在图33和图34中被示出,但是当它正在再现来自盘101的数据时,盘再现设备执行的其它处理或者操作将被描述。

[发送时间信息到解码控制模块214]

接下来,将描述时钟(时间计数部分214A)的更新。视频解码器控制模块216使视频解码器116解码输入的视频存取单元。在视频解码器116已经执行解码和重新排序处理之后,一帧(两个场)的视频数据被输出到图形处理模块219。另外,视频数据的时间戳(PTS/DTS)和pic_struct信息从视频解码器控制模块216被发送到解码控制模块214。

如果存取单元的pic_struct是1或者2,则存取单元是一个场。因此,当两个存取单元被输出时,较早场的pic_struct和时间戳,如果较早场的存取单元具有时间戳,从视频解码器控制模块216被发送到解码控制模块214,以便两个存取单元被作为一个处理。如果较早场不具有时间戳,则表示较早场不具有时间戳的信息被发送到解码控制模块214。因为孤立场是不允许的,紧接pic_struct是1或者2的场之后,pic_struct是2或者1的场被分别放置。当两个场被作为一个处理时,较早场的时间戳被用作代表值。

如果存取单元的pic_struct是0、3、4、5、或6,则当一个存取单元被输出时,pic_struct和时间戳,如果存取单元具有时间戳,从视频解码器控制模块216被发送到解码控制模块214。当存取单元不具有时间戳时,表示存取单元不具有时间戳的信息被发送到解码控制模块214。

解码控制模块214用接收的时间戳和pic_struct的信息来更新时间计数部分214A。

接下来,参照图38中示出的流程图,更新时间计数部分214A的方法将被描述。

解码控制模块214判断接收的存取单元是否具有时间戳(在步骤S141)。如果存取单元具有时间戳,则解码控制模块214为时间计数部分214A设置时间戳(PTS)的值(在步骤S142)。如上所述,紧接在对存取单元开始解码处理之后,因为它通常具有时间戳,所以在初始状态任何异常都不存在。如果存取单元不具有时间戳,则根据之前的pic_struct的值被添加到当前时间(在步骤S144)。其后,当前pic_struct被存储,用于下一处理,然后,当前处理完成(在步骤S143)。

如图39所示,根据存储的pic_struct的值是0、3、或4,时间计数部分214A添加两个场的时间。如果pic_struct是5或6,则时间计数部分214A添加三个场的时间。如果存储的pic_struct是1或2,则时间计数部分214A添加两个场的时间。

当这个时间改变处理被执行时,时间计数部分214A的时间的值表示已从视频解码器控制模块216输出到图形处理模块219的存取单元(用于一帧)的显示开始时间。换句话说,如果视频数据具有时间戳,则PTS被代入时间计数部分214A。如果视频数据不具有时间戳,则按显示次序紧接视频数据的显示间隔被添加。

在这个示例中,AVC被用作视频编码制式。在MPEG-2视频制式中,例如用repeat_first_field(重复第一场),存取单元的显示持续时间能够被获取。

如上所述,在这种情况下,如果FIFO 220A的存储容量不够,则从视频解码器控制模块216的视频数据的输出被停止。在这种情况下,时间计数部分214A的更新被自动地停止。当对FIFO 220A的视频数据的更新被恢复时,时间计数部分214A的更新被自动地恢复。

换句话说,当根据由用户发布的命令,再现模式被转换为暂停状态时,因为视频输出模块220的更新被停止,所以视频解码器控制模块216被停止,从而时钟(时间计数部分214A)被停止。当暂停状态被恢复到正常再现状态时,视频输出模块的更新被允许。结果,视频解码器控制模块216的操作和视频数据的输出被恢复。另外,时钟(时间计数部分214A)的更新也被恢复。

这个操作对于缓慢再现是期望的。换句话说,缓慢再现是暂停状态和规律再现状态交替地执行的状态。此时,时钟(时间计数部分214A)与视频输出同步地更新。

在这个示例中,时间计数部分214A与视频解码器控制模块216的视频数据输出被同步地更新。然而,如果在视频解码器控制模块216之中和之后,在这种情况下,在图形处理模块219和视频输出模块220中,发生的延迟大,则在提供给用户的视频数据和时钟(时间计数部分214A)之间的关系有可能偏离。在这种情况下,当时钟(时间计数部分214A)的更新与从视频输出模块220输出的视频数据被同步地执行时,该关系能够被防止偏离。

具体地,参照图37所描述的附加信息缓冲器302,被添加到图形处理模块219、视频输出模块220、和FIFO 220A中的视频数据处理部分,以便视频数据和附加信息被成对处理,直到视频数据被输出。另外,当视频数据从视频输出模块220输出时,相应的附加信息被发送到解码控制模块214。通过上述算法,解码控制模块更新时钟(时间计数部分214A)。

用这个方法,不管在视频解码器中和其下游发生的延迟大或小,被显示的视频数据和时钟(时间计数部分214A)能够同步。

结果,即使再现流数据的设备不具有独立计数时钟,流数据也能被准确地再现。因此,应用到执行处理的CPU 112的负载能够被减少。

[改变PlayItem]

如图33和图34所示,图29中示出的第一PlayList#0的第一PlayItem#0被再现。根据PlayList#0,在第一PlayItem#0被再现之后,第二PlayItem#1被再现。换句话说,把PlayItem(播放项目)从PlayItem#0改变到PlayItem#1的PlayItem改变处理被执行。

接下来,参照图40中示出的流程图,将描述PlayItem改变处理。

如图33和图34所示,在图29中示出的PlayList#0的第一PlayItem#0的剪辑被再现之后,当第一PlayItem#0正被再现时,解码控制模块214(图2A和图2B)检查时间计数部分214A正在计数的时间。

[PlayItem#0再现的结束]

当时间计数部分214A已计数的时间已变成27,180,090(图29),其是在图34中示出的步骤S127中从播放器控制模块212提供的第一PlayItem#0的OUT_time时,解码控制模块214在步骤S151执行解码取消控制,以完成PlayItem#0的再现。

如果时间计数部分214A不以90kHz操作,即时间根据视频数据的输出而被更新,则时间计数部分214A计数的时间可以不与PlayItem#0的OUT_time精确匹配。在这种情况下,以PlayItem#0的OUT_time的时间变得接近于时间计数部分214A计数的时间的定时,解码处理被取消,从而PlayItem#0的再现被完成。这个处理在后文将参照图51和图52描述。

换句话说,解码控制模块214操作视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218,以停止它们的解码操作。另外,解码控制模块214控制视频输出模块220,以连续地输出视频数据。

另外,解码控制模块214把表示第一PlayItem#0已经被再现的消息发送到播放器控制模块212。

[再现PlayItem#1的开始]

如上所述,播放器控制模块212已经识别在图33中示出的步骤S105中第一PlayList#0包含第一PlayItem#0和第二PlayItem#1。当解码控制模块214已经接收表示第一PlayItem#0已经从播放器控制模块212再现的消息时,流程从步骤S151前进到步骤S152。在步骤S152中,用与第一PlayItem#0同样的方式,播放器控制模块212开始再现第二PlayItem#1。

如同在图34中示出的步骤S122的情况,作为第二PlayItem#1的再现处理,播放器控制模块212决定在EP_map()中描述的一个RPN_EP_start,作为第二PlayItem#1的再现开始位置。

另外,播放器控制模块212,如在图34中示出的步骤S124中描述的,识别属于第二PlayItem#1的Mark(),并如在图34中示出的步骤S125中描述的,识别具有与根据PlayItem#1而被再现的剪辑流文件“00002.PS”多路复用的属性的基本流的数目,以及决定将被再现的基本流。

播放器控制模块212执行与在图34中示出的步骤S127中相同的处理。

换句话说,播放器控制模块212把被决定为再现开始位置的EP_map()的RPN_EP_start和与将被再现的基本流多路复用的剪辑流文件的文件名,即与在第二PlayItem#1(图29)的Clip_Information_file_name中描述的“00002.CLP”相对应的剪辑流文件“00002.PS”的文件名,提供到内容数据提供模块213。

另外,在存储在与将被再现的基本流多路复用的剪辑流文件“00002.PS”中的程序流被提供给缓冲器控制模块215之前,播放器控制模块212初始化缓冲器控制模块215。

换句话说,缓冲器控制模块215(图5)把相同值设置到存储在数据开始指针存储部分231中的数据开始指针、存储在数据写入指针存储部分232中的数据写入指针、存储在视频读取指针存储部分241中的视频读取指针、存储在音频读取指针存储部分251中的音频读取指针、和存储在字幕读取指针存储部分262中的字幕读取指针。

另外,播放器控制模块212把stream_id,以及当必要时把作为用于标识将被再现的基本流的标识符信息的private_stream_id,提供到缓冲器控制模块215。

缓冲器控制模块215(图5)的视频读取功能部分233从播放器控制模块212接收将被再现的基本流的视频流的stream_id,并且存储它到stream_id寄存器242。另外,音频读取功能部分234从播放器控制模块212接收将被再现的基本流的音频流的stream_id和private_stream_id,并且分别存储它们到stream_id寄存器252和private_stream_id寄存器253。

既然与将被再现的基本流多路复用的剪辑流文件“00002.PS”包含字幕流,因此将被再现的基本流的字幕流的stream_id和private_stream_id被从播放器控制模块212提供到字幕读取功能部分235。字幕读取功能部分235分别存储stream_id和private_stream_id到stream_id寄存器263和private_stream_id寄存器264。

播放器控制模块212把具有根据与将被再现的基本流多路复用的剪辑流文件的值的字幕读取功能标志,设置到字幕读取功能标志存储部分261,以初始化缓冲器控制模块215(图5)。

在这种情况下,既然与将被再现的基本流多路复用的剪辑流文件“00002.PS”包含字幕流,因此,值是1的字幕读取功能标志被设置给字幕读取功能标志存储部分261,以激活字幕读取功能部分235。

播放器控制模块212把将被再现的第二PlayItem#1(图29)的作为IN_time的90,000以及作为OUT_time的27,090,000,提供到解码控制模块214。

另外,播放器控制模块212初始化用于图形处理模块219的字幕流显示模式命令。换句话说,播放器控制模块212控制图形处理模块219,以缺省显示模式显示字幕流。

当将被再现的字幕流的configurable_flag(图14)是1,其表示显示模式允许被改变时,播放器控制模块212发送给图形处理模块219的字幕流显示模式命令可以与当前显示模式命令一起保存。

用与第一PlayItem#0同样的方式,第二PlayItem#1被再现。当第二PlayItem#1正被再现时,解码控制模块214检查时间计数部分214A正在计数的时间。当时间计数部分214A已经计数的时间已经变成27,090,000(图29),其是在步骤S152中(图40)从播放器控制模块212提供的第二PlayItem#1的OUT_time时,解码控制模块214执行与在步骤S151中相同的解码取消控制,以完成PlayItem#1的再现。如上所述,时间计数部分214A计数的时间可以不与PlayItem#0的OUT_time精确匹配。在这种情况下,以PlayItem#0的OUT_time的时间变得接近于时间计数部分214A所计数的时间的定时,解码取消处理被执行,从而PlayItem#0的再现被完成。这个处理在后文将参照图51和图52描述。

[时间代码的显示]

接下来,如上所述,在图34中示出的步骤S123中,时间代码被显示。时间代码的显示被连续地更新。

接下来,参照图41中示出的流程图,时间代码显示处理将被描述。

当内置于解码控制模块214(图2A和图2B)的时间计数部分214A已经计数1秒时,流程前进到步骤S171。在步骤S171中,解码控制模块214把表示1秒已经过去的消息和时间计数部分214A已经计数的当前时间提供到播放器控制模块212。其后,流程前进到步骤S172。在步骤S172中,播放器控制模块212从解码控制模块214接收消息和当前时间,并且转换该当前时间为时间代码。其后,流程前进到步骤S173。

在步骤S173中,播放器控制模块212控制图形处理模块219,以显示在步骤S172中获取的时间代码。其后,流程回到步骤S171。

因此,时间代码以1秒间隔被更新。时间代码的更新间隔不局限于1秒。

[改变流]

由用于构成在图29中描述的第一PlayList#0的第一PlayItem#0再现的剪辑流文件“00001.PS”、以及由第二PlayItem#1再现的剪辑流文件“00002.PS”,与图30A和图30B所述的两个字幕流多路复用。

当具有相同属性的多个基本流与剪辑流文件多路复用时,将被再现的基本流能够从一个基本流被改变到另一基本流。

接下来,参照图42中示出的流程图,流改变处理将被描述。

当流改变命令在例如“SCRIPT.DAT”文件(图6)中被描述为脚本程序,并且脚本控制模块211执行该脚本程序,或用户操作遥控器来改变流时,流改变命令被提供给播放器控制模块212。

当脚本控制模块211执行描述流改变请求的脚本程序时,脚本控制模块211提供流改变请求消息到播放器控制模块212。当用户用遥控器输入流改变命令时,输入接口115从遥控器接收流改变命令信号,并且提供流改变请求消息到播放器控制模块212。

当使播放器控制模块212改变字幕流的字幕流改变请求消息被提供给播放器控制模块212时,它检查在图34中示出的步骤S125中已经被识别的、将被再现的基本流的字幕流数目。

当播放器控制模块212已经检查的字幕流数目是1或更少时,播放器控制模块212忽略字幕流改变请求消息。因此,播放器控制模块212不执行从步骤S192到步骤S194的处理。

与之相比,当字幕流数目是2或更多时,流程前进到步骤S192至S194。在这些步骤中,播放器控制模块212把正被再现的字幕流改变到另一字幕流。

换句话说,在步骤S192中,播放器控制模块212在剪辑信息文件中标识正被再现的字幕流。具体地,假定stream_id是0xBD以及private_stream_id是0x80的、与剪辑流文件“00002.PS”多路复用的字幕流,根据用于构成图29中描述的第一PlayList#0的第二PlayItem#1而正在被再现,则,播放器控制模块212标识正在被再现的字幕流为stream#2,其是在步骤S192中与剪辑流文件“00002.PS”多路复用的两个字幕流的在图30A和图30B中示出的剪辑信息文件“00002.CLP”中的第三字幕流。

其后,流程前进到步骤S193。在步骤S193中,播放器控制模块212标识在步骤S192中标识的剪辑信息文件的下一字幕流,作为下一将被再现的字幕流。在图30A和图30B中,第三字幕流stream#2的下一字幕流是在剪辑信息文件“00002.CLP”中的第四字幕流stream#3。因此,在步骤S193中,播放器控制模块212识别第四字幕流stream#3,作为下一将被再现的字幕流。

当正被再现的字幕流被标识为stream#3,其是与剪辑流文件“00002.PS”多路复用的两个字幕流的在图30A和图30B中示出的剪辑信息文件“00002.CLP”中的第四字幕流时,播放器控制模块212例如识别第三字幕流stream#2,作为下一将被再现的字幕流。

其后,流程前进到步骤S194。在步骤S194中,播放器控制模块212把作为下一将被再现的字幕流的、在步骤S193中识别的字幕的stream_id和private_stream_id,提供到缓冲器控制模块215(图5)的字幕读取功能部分235,以便字幕读取功能部分235使用stream_id和private_stream_id从缓冲器215A中读取下一字幕存取单元。

缓冲器控制模块215(图5)的字幕读取功能部分235分别把在步骤S194中从播放器控制模块212提供的stream_id和private_stream_id新设置到stream_id寄存器263和private_stream_id寄存器264。字幕读取功能部分235分别读取由新设置到stream_id寄存器263和private_stream_id寄存器264的stream_id和private_stream_id标识的下一字幕存取单元。

用上述方式,正被再现的字幕流被改变为下一次被再现的另一字幕流。

[缓冲器控制模块215的处理]

接下来,参照图43至图47,缓冲器控制模块215(图5)的处理、向缓冲器215A的数据写入处理、和从缓冲器215A的数据读取处理,将被描述。

如图5所述,缓冲器控制模块215具有用于从缓冲器215A读取数据和向缓冲器215A写入数据的五个指针。

换句话说,如图43和图44所示,缓冲器控制模块215具有存储在数据开始指针存储部分231中的数据开始指针、存储在数据写入指针存储部分232中的数据写入指针、存储在视频读取指针存储部分241中的视频读取指针、存储在音频读取指针存储部分251中的音频读取指针、和存储在字幕读取指针存储部分262中的字幕读取指针。

在图43和图44中,图5中示出的视频读取功能部分233的stream_id寄存器242和au_information()寄存器243、音频读取功能部分234的stream_id寄存器252和private_stream_id寄存器253、以及字幕读取功能部分235的字幕读取功能标志存储部分261、stream_id寄存器263、和private_stream_id寄存器264被省略。

存储在数据开始指针存储部分231中的数据开始指针表示存储在缓冲器215A中的最老的数据(需要被读取但还没有被读取)的位置。存储在数据写入指针存储部分232中的数据写入指针表示在缓冲器215A中的数据的写入位置。这个位置是最新的数据被写入到的位置。

存储在视频读取指针存储部分241中的视频读取指针表示从缓冲器215A中读取的视频流的位置。存储在音频读取指针存储部分251中的音频读取指针表示从缓冲器215A中读取的音频流的位置。存储在字幕读取指针存储部分262中的字幕读取指针表示从缓冲器215A中读取的字幕流的位置。

如图5所述,数据开始指针、数据写入指针、视频读取指针、音频读取指针、和字幕读取指针在缓冲器215A中以顺时针方向移动。

如图44所示,根据这个实施例,数据开始指针通常被更新,以便它表示与视频读取指针、音频读取指针、和字幕读取指针的最老数据位置相同的位置。在图44中,音频读取指针表示在视频读取指针、音频读取指针、或字幕读取指针中的最老数据的位置。数据开始指针与音频读取指针匹配。

在具有数据开始指针、数据写入指针、视频读取指针、音频读取指针、和字幕读取指针的缓冲器控制模块215中,当新的数据从盘101中读取,以及被写入缓冲器215A时,数据写入指针以顺时针方向被更新,以便数据写入指针表示紧接新写入数据的位置。

当视频流、音频流、或字幕流从缓冲器215A中被读取时,视频读取指针、音频读取指针、或字幕读取指针以顺时针方向被更新关于所读取的数据量。被读取的数据量是实际上被读取的视频数据、音频数据、或字幕数据、以及当它们被读取时插入被读取以及被省略的数据中的另一流的数据部分的总和。

当视频读取指针、音频读取指针、或字幕读取指针被更新时,数据开始指针被更新,以便它表示由视频读取指针、音频读取指针、或字幕读取指针表示的最老的数据的位置。

缓冲器控制模块215控制缓冲器215A的数据写入操作,以便数据写入指针不超前于数据开始指针。

除非数据写入指针超前于数据开始指针,否则缓冲器控制模块215把从盘101读取的数据写入到由数据写入指针表示的缓冲器215A的位置,并且更新该数据写入指针。另一方面,如果数据写入指针将要超前于数据开始指针,则缓冲器控制模块215使内容数据提供模块213停止从盘101读取数据以及停止写入数据到缓冲器215A。因此,缓冲器215A能够被防止上溢。

如上所述,根据两个指针即数据开始指针和数据写入指针的位置关系,从盘101读取的数据被写入缓冲器215A。

另一方面,缓冲器控制模块215控制缓冲器215A的数据读取操作,以便视频读取指针、音频读取指针、和字幕读取指针、以及数据开始指针不超前于数据写入指针。

换句话说,除非视频读取指针、音频读取指针、或字幕读取指针超前于数据写入指针,否则缓冲器控制模块215根据从视频解码器控制模块216、音频解码器控制模块217、或字幕解码器控制模块218接收的请求,从由视频读取指针、音频读取指针、或字幕读取指针表示的缓冲器215A的位置读取数据,并且更新视频读取指针、音频读取指针、或字幕读取指针,以及当必要时,更新数据开始指针。另一方面,如果视频读取指针、音频读取指针、或字幕读取指针超前于数据写入指针,则缓冲器控制模块215使视频解码器控制模块216、音频解码器控制模块217、或字幕解码器控制模块218停止发送请求,直到缓冲器215A存储足够的数据。结果,缓冲器215A能够防止下溢。

因此,缓冲器215A以从由数据开始指针表示的位置到由数据写入指针表示的位置的顺时针方向,把将被提供给视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218的数据储存在区域(图43和图44中的阴影)。另外,视频读取指针、音频读取指针、和字幕读取指针存在于该区域中。

在上述情况下,数据开始指针被更新,以便它表示由视频读取指针、音频读取指针、或字幕读取指针表示的最老的数据的位置。或者,数据开始指针可以被更新,以便它表示比最老的数据的位置早预定时间(例如,1秒)的数据的位置。

期望在视频读取指针、音频读取指针、和字幕读取指针中,视频读取指针和音频读取指针表示最老的数据的位置。

因此,当数据开始指针被更新,以便它表示比视频读取指针或音频读取指针表示的最老的数据的位置早例如1秒的数据的位置,如图43所示,比视频读取指针或音频读取指针表示的最老的数据早1秒的数据能够被存储在缓冲器215A中。在图43中,音频读取指针表示最老的数据的位置,而数据开始指针表示比最老的数据早1秒的数据的位置。

当数据开始指针被更新,以便它表示比最老的数据的位置早1秒的数据的位置时,盘再现设备的响应能够被改进。

换句话说,如图44所示,当数据开始指针被更新,以便它表示音频读取指针表示的最老的数据的位置时,如果特定再现命令,例如反向再现命令被发布,则已经从缓冲器215A中读取的数据需要从盘101再读取。因此,在特定再现命令被发布之后,直到特定再现操作被执行为止,需要花费一定程度的时间。

与之相比,如图43所示,当数据开始指针被更新,以便它表示比音频读取指针表示的最老的数据的位置早1秒的数据的位置时,如果特定再现命令例如反向再现命令被发布,并且用于开始特定再现操作所需要的数据是比最老的数据早1秒的数据并且被存储在缓冲器215A中,则特定再现操作能够被快速地开始,而不需要从盘101再读取数据。

当数据开始指针被更新,以便它表示比音频读取指针表示的最老的数据的位置早1秒的数据的位置时,用于开始特定再现操作所需要的数据可以不存储在缓冲器215A中。在这种情况下,用于开始特定再现操作所需要的数据从盘101被再读取。

接下来,将详细描述对来自缓冲器215A的视频流、音频流、和字幕流的读取操作。

如在图34中示出的步骤S127中所述,当剪辑流文件的再现操作被开始时,缓冲器控制模块215初始化数据开始指针、数据写入指针、视频读取指针、音频读取指针、和字幕读取指针,以便它们在缓冲器215A中表示相同位置。

当存储在剪辑流文件中的程序流(MPEG2-制式程序流)从盘101被读取并且被提供给缓冲器控制模块215时,它在缓冲器215A的数据写入指针所表示的位置存储程序流。另外,数据写入指针以顺时针方向被更新。

另外,缓冲器控制模块215(图5)的视频读取功能部分233解析存储在缓冲器215A中的程序流,根据从视频解码器控制模块216接收的请求而从存储在缓冲器215A中的程序流中提取视频存取单元,以及提供所提取的视频存取单元到视频解码器控制模块216。

同样地,音频读取功能部分234解析存储在缓冲器215A中的程序流,根据从音频解码器控制模块217接收的请求而从存储在缓冲器215A中的程序流中提取音频存取单元,以及提供音频存取单元到音频解码器控制模块217。字幕读取功能部分235解析存储在缓冲器215A中的程序流,根据从字幕解码器控制模块218接收的请求而从存储在缓冲器215A中的程序流中提取字幕存取单元,以及提供字幕存取单元到字幕解码器控制模块218。

[读取视频流]

接下来,参照图45中示出的流程图,通过视频读取功能部分233(图5)进行的对缓冲器215A的视频流读取处理将被详细描述。

在步骤S211中,视频读取功能部分233在存储在缓冲器215A中的程序流中搜索private_stream_2的PES_packet()。换句话说,如图23所述,在private_stream_2的PES_packet()中,stream_id是10111111B(=0xBF)。视频读取功能部分233搜索stream_id是1011111iB的PES_packet()。

假定与存储在剪辑流文件“00001.PS”中的程序流多路复用的基本流是将被再现的基本流,当程序流从盘101中被读取并且被存储在缓冲器215A中时,在图34中示出的步骤S122中,通过关于在剪辑流文件“00001.PS”的EP_map()(图31)中描述的解码开始可能点的信息,扇区305被决定为再现开始位置。在图34中示出的步骤S128中,作为再现开始点的扇区305被指定。视频读取功能部分233使操作系统201从剪辑流文件“00001.PS”读取程序流。

关于在视频流的EP_map()中描述的解码开始可能点的信息表示之后紧随实际解码开始可能点的private_stream_2的PES_packet()的位置。

因此,在存储在剪辑流文件“00001.PS”中的程序流从盘101中被读取并且被存储在缓冲器215A中之后,private_stream_2的PES_packet()被存储在缓冲器215A中由数据开始指针和视频读取指针表示的位置。

当在步骤S211中视频读取功能部分233已经找到private_stream_2的PES_packet()时,流程前进到步骤S212。在步骤S212中,视频读取功能部分233从private_stream2PES_payload()(图26)中提取video_stream_id,其为private_stream_2的PES_ payload()的PES_packet_data_byte(PES分组数据字节)。在图34中示出的步骤S127中,视频读取功能部分233判断video_stream_id是否与存储在stream_id寄存器242(图5)中的将被再现的视频流的stream_id匹配。

当在步骤S212中的判断结果表示在private_stream2_PES_payload()中描述的video_stream_id与存储在stream_id寄存器242中的stream_id不匹配,即在步骤S211中找到的private_stream_2的PES_packet()不在将被再现的视频流的解码开始可能点时,流程回到步骤S211。在步骤S211中,视频读取功能部分233在存储在缓冲器215A中的程序流中搜索另一private_stream_2的PES_packet(),以及重复相同的处理。

与之相比,当在步骤S212中的判断结果表示在private_stream2_PES_payload()中描述的video_stream_id与存储在stream_id寄存器242中的stream_id匹配,即在步骤S211中找到的private_stream_2的PES_packet()在将被再现的视频流的解码开始可能点时,流程前进到步骤S213。在步骤S213中,视频读取功能部分233从缓冲器215A中读取在private_stream_2的PES_packet()的private_stream2_PES_payload()中描述的au_information(),并且存储au_information()到au_information()寄存器243(图5)。其后,流程前进到步骤S214。

在步骤S214中,视频读取功能部分233把存储在数据开始指针存储部分231中的视频读取指针更新在步骤S211中找到的private_stream_2的PES_packet()(video_stream_id(图26)与存储在stream_id寄存器242(图5)中的stream_id匹配的private_stream_2的PES_packet())的大小。

换句话说,在剪辑流文件中,private_stream_2的PES_packet()之后紧随其stream_id与video_stream_id匹配的视频流(PES_packet())。因此,在步骤S214中,视频读取功能部分233更新视频读取指针,以便它表示视频流的实际解码开始可能点的位置。

其后,流程从S214前进到步骤S215。视频读取功能部分233判断视频解码器控制模块216是否已经发布数据请求。当在步骤S215中的判断结果表示视频读取功能部分233没有发布数据请求时,流程回到步骤S215。在步骤S215中,视频解码器控制模块216重复相同的处理。

与之相比,当在步骤S215中的判断结果表示视频解码器控制模块216已经发布数据请求时,流程前进到步骤S216。在步骤S216中,视频读取功能部分233从在缓冲器215A中由视频读取指针表示的位置解析程序流,从缓冲器215A读取在存储在au_information()寄存器243中的au_information()的AU_length中描述的字节的数据,即一个视频存取单元,把数据提供至视频解码器控制模块216,以及把视频读取指针更新已经从缓冲器215A读取的一个视频存取单元的大小。

换句话说,如图27所述,au_information()描述number_of_access_unit(存取单元的数目),其表示在从包含au_information()的private_stream_2的PES_packet()至下一private_stream_2的PES_packet()中包含的视频存取单元(图像)的数目。

另外,如图27所述,au_information()描述pic_struct_copy、au_ref_flag、和AU_length,作为关于由number_of_access_unit表示的每个视频存取单元的信息。

如图27所述,因为根据number_of_access_unit而在au_information()中描述的每个AU_length表示由从包含au_information的private_stream_2的PES_packet()到下一private_stream_2的PES-packet()的number_of_access_unit表示的每个视频存取单元的大小,所以视频读取功能部分233能够提取具有AU_length的存取单元,而不需要解析视频流。

换句话说,当MPEG2-视频或MPEG4-AVC存取单元被提取时,需要知道视频流的结构,然后解析它。然而,存储在记录在盘101上的剪辑流文件中的程序流包含private_stream_2的PES_packet(),其描述表示视频存取单元的大小的AU_length,以及其后紧随视频流的至少一个解码开始可能点。因此,视频读取功能部分233能够根据在private_stream_2的PES_packet()中描述的AU_length,从缓冲器215A中读取视频存取单元(作为视频存取单元的视频流),并且提供该视频存取单元到视频解码器控制模块216,而不需要解析该视频流。

在步骤S216中,当视频读取功能部分233提供视频存取单元到视频解码器控制模块216时,视频读取功能部分233还把在au_information()中描述的pic_struct_copy、au_ref_flag、和AU_length、以及被添加到作为关于视频存取单元的信息的每个视频存取单元的时间戳(PTS,DTS),提供到视频解码器控制模块216。

在步骤S216中视频读取功能部分233已经从缓冲器215A中读取一个视频存取单元并且提供它到视频解码器控制模块216之后,流程前进到步骤S217。在步骤S217中,视频读取功能部分233判断它是否已经处理由存储在au_information()寄存器243中的au_information()的number_of_access_unit(图27)表示的存取单元。

当在步骤S217中的判断结果表示视频读取功能部分233还没有处理由number_of_access_unit表示的存取单元,即视频读取功能部分233还没有从缓冲器215A中读取由number_of_access_unit表示的存取单元并且提供它们到视频解码器控制模块216时,流程回到步骤S215。在步骤S215中,视频读取功能部分233重复相同的处理。

与之相比,当在步骤S217中的判断结果表示视频读取功能部分233已经处理由number_of_access_unit表示的存取单元,即视频读取功能部分233已经从缓冲器215A读取由number_of_access_unit表示的存取单元并且提供它们到视频解码器控制模块216时,流程回到步骤S211。在步骤S211中,视频读取功能部分233搜索下一private_stream_2的PES_packet(),以及重复相同的处理。

[读取音频流]

接下来,参照图46中示出的流程图,通过音频读取功能部分234(图5)进行的对缓冲器215A的音频流读取处理将被描述。

在步骤S230中,音频读取功能部分234判断在图34中示出的步骤S127中已经被存储在stream_id寄存器252(图5)中的、将被再现的音频流的stream_id,是否表示private_stream_1的PES_packet()。

当在步骤S230中的判断结果表示存储在stream_id寄存器252中的stream_id不表示private_streain_1的PES_packet(),即如图23所述,存储在stream_id寄存器252中的stream_id是分配给已经根据MPEG标准而被编码的音频流的110xxxxxB时,流程前进到步骤S231。在步骤S231中,音频读取功能部分234在存储在缓冲器215A中的程序流中搜索表示在MPEG音频中定义的音频帧的起首的同步代码。因为同步代码的位置是音频帧的开始,所以音频读取功能部分234更新音频读取指针,以便它表示音频帧的起首位置。其后,流程从步骤S231前进到步骤S232。在步骤S232中,音频读取功能部分234在存储在缓冲器215A中的程序流中搜索与存储在与由音频读取指针表示的位置相对应的stream_id寄存器252中的stream_id匹配的PES_packet(),以及获取PES_packet()。其后,流程前进到步骤S233。

在步骤S233中,音频读取功能部分234更新存储在音频读取指针存储部分251中的音频读取指针,以便音频读取指针表示在步骤S232中已经被找到的PES_packet()的PES_packet_data_byte的起首(图19A和图19B至图21A和图21B)。其后,流程前进到步骤S237。

在步骤S237中,音频读取功能部分234判断音频解码器控制模块217是否已经发布数据请求。当在步骤S237中的判断结果表示音频解码器控制模块217没有发布数据请求时,流程回到步骤S237。在步骤S237中,音频读取功能部分234重复相同的处理。

与之相比,当在步骤S237中的判断结果表示音频解码器控制模块217已经发布数据请求时,流程前进到步骤S238。在步骤S238中,音频读取功能部分234从缓冲器215A中由音频读取指针表示的位置解析程序流,从缓冲器215A中读取具有预定固定长度的一个音频存取单元,以及与被添加到音频存取单元的时间戳(PTS,DTS)一起提供音频存取单元到音频解码器控制模块217。

音频读取功能部分234把音频读取指针更新从缓冲器215A中读取的一个音频存取单元的大小。其后,流程回到步骤S237。在步骤S237中,音频读取功能部分234重复相同的处理。

与之相比,当在步骤S230中的判断结果表示存储在stream_id寄存器252中的stream_id表示private_stream_1的PES_packet(),即存储在stream_id寄存器252中的stream_id是10111101B(=0xBD)并且表示如图23所述的private_stream_1的PES_packet()时,流程前进到步骤S234。在步骤S234中,音频读取功能部分234在存储在缓冲器215A中的程序流中搜索private_stream_1的PES_packet(),以及获取PES_packet()。换句话说,音频读取功能部分234搜索其stream_是10111101B的PES_packet(),以及获取PES_packet()。

当在步骤S234中音频读取功能部分234已经找到private_stream_1的PES_packet()时,流程前进到步骤S235。在步骤S235中,音频读取功能部分234从作为private_stream_1的PES_packet()的PES_packet_data_byte(PES分组数据字节)的private_stream1_PES_payload()(图24)中提取private_stream_id,以及判断这个private_stream1_id是否与在图34中示出的步骤S127中已经被存储在private_stream_id寄存器(图5)中的、将被再现的音频流的private_stream_id匹配。

当在步骤S235中的判断结果表示在private_stream1_PES_payload()中描述的private_stream_id与存储在private_stream_id寄存器235中的private_stream_id不匹配,即在步骤S234中找到的private_stream_1的PES_packet()不是将被再现的音频流时,流程回到步骤S234。在步骤S234中,音频读取功能部分234在存储在缓冲器215A中的程序流中搜索另一private_stream_1的PES_packet()。其后,音频读取功能部分234重复相同的处理。

与之相比,当在步骤S235中的判断结果表示在program_stream_PES_payload()中描述的private_stream_id与存储在private_stream_id寄存器253中的private_stream_id匹配,即在步骤S234中找到的private_stream_1的PES_packet()是将被再现的音频流时,流程前进到步骤S236。在步骤S236中,音频读取功能部分234从缓冲器215A中读取在private_stream_1的PES_packet()的private_stream1_PES_payload()(图24)中描述的AU_locator,添加紧接AU_locator的位置和AU_locator表示的值,以及获取音频存取单元的开始位置。

换句话说,如图24所述,AU_locator基于紧接AU_locator的位置而表示存储在private_stream1_PES_payload()的private_payload()中的音频存取单元或字幕存取单元的开始位置。因此,通过添加AU_locator表示的值和紧接AU_locator的位置,音频存取单元的开始位置能够被获取。

在步骤S236中,音频读取功能部分234更新存储在音频读取指针存储部分251中的音频读取指针,以便音频读取指针表示已经被获取的音频存取单元的开始位置。其后,流程前进到步骤S237。

在步骤S237中,音频读取功能部分234判断音频解码器控制模块217是否已经发布数据请求。当在步骤S237中的判断结果表示音频解码器控制模块217没有发布数据请求时,流程回到步骤S237。在步骤S237中,音频读取功能部分234重复相同的处理。

与之相比,当在步骤S237中的判断结果表示音频解码器控制模块217已经发布数据请求时,流程前进到步骤S238。在步骤S238中,音频读取功能部分234从缓冲器215A中由音频读取指针表示的位置解析程序流,从缓冲器215A中读取具有预定长度的一个音频存取单元,以及与被添加到音频存取单元的时间戳一起提供音频存取单元到音频解码器控制模块217。

音频读取功能部分234把音频读取指针更新从缓冲器215A中读取的一个音频存取单元的大小。其后,流程回到步骤S237。在步骤S237中,音频读取功能部分234重复相同的处理。

[读取字幕流]

接下来,参照图47中示出的流程图,通过字幕读取功能部分235(图5)进行的对来自缓冲器215A的字幕流的读取处理将被描述。

在步骤S251中,字幕读取功能部分235判断字幕读取功能标志,其在图34中示出的步骤S127中已经被存储在视频解码器控制模块216中。当在步骤S251中的判断结果表示字幕读取功能标志是0,即与将被再现的基本流多路复用的剪辑流文件不包含字幕流,以及在图34中示出的步骤S127中0已经被设置给字幕读取功能标志存储部分261时,字幕读取功能部分235不执行任何处理。

与之相比,当在步骤S251中的判断结果表示字幕读取功能标志是1,即与将被再现的基本流多路复用的剪辑流文件包含字幕流,以及在图34中示出的步骤S127中1已经被设置给字幕读取功能标志存储部分261时,流程前进到步骤S252。在步骤S252中,字幕读取功能部分235在存储在缓冲器215A中的程序流中搜索与已经被存储在stream_id寄存器263(图5)中的、将被再现的字幕流的stream_id匹配的PES_packet()。

如在图34中示出的步骤S127中所述,将被再现的字幕流的stream_id被存储在stream_id寄存器263(图5)中。另一方面,如图23所述,字幕流的stream_id是10111101B(=0xBD),其表示private_stream_1的PES_packet()。

因此,在步骤S252中,字幕读取功能部分235在存储在缓冲器215A中的程序流中搜索private_stream_1的PES_packet()。

当字幕读取功能部分235已经搜索private_stream_1的PES_packet()并且获取它时,流程前进到步骤S253。在步骤S253中,字幕读取功能部分235从作为private_stream_1的PES_packet()的PES_packet_data_byte的private_stream_PES()(图24)提取packet_stream_id,并且判断private_stream_id是否与在图34中示出的步骤S127中已经被存储在private_stream_id寄存器264(图5)中的、将被再现的字幕流的private_stream_id匹配。

当在步骤S253中的判断结果表示在private_stream_PES_payload()中描述的private_stream_id与存储在private_stream_id寄存器264中的private_sitdream_id不匹配,即在步骤S252中已经被找到的private_stream_1的PES_packet(),不是将被再现的字幕流时,流程回到步骤S252。在步骤S252中,字幕读取功能部分235在存储在缓冲器215A中的程序流中搜索另一private_stream_1的PES_packet()。其后,字幕读取功能部分235重复相同的处理。

与之相比,当在步骤S253中的判断结果表示在private_stream1_PES_payload()中描述的private_stream_id与存储在private_stream_id寄存器264中的private_stream_id匹配,即在步骤S252中已经被找到的private_stream_1的PES_packet()是将被再现的字幕流时,流程前进到步骤S254。在步骤S254中,字幕读取功能部分235从缓冲器215A中读取在private_stream_1的PES_packet()的private_stream1_PES_payload()(图24)中描述的AU_locator,添加紧接AU_locator的位置和AU_locator表示的值,以及获取字幕存取单元的开始位置。

如图24所述,AU_locator基于紧接AU_locator的位置而表示存储在private_stream1_PES_payload()的private_payload()中的字幕存取单元(或音频存取单元)的开始位置。因此,通过添加AU_locator表示的值和紧接AU_locator的位置,字幕存取单元的开始位置能够被获取。

另外,在步骤S254中,字幕读取功能部分235更新存储在字幕读取指针存储部分262中的字幕读取指针,以便字幕读取指针表示获取的字幕存取单元的开始位置。其后,流程前进到步骤S255。

在步骤S255中,字幕读取功能部分235判断字幕解码器控制模块218是否已经发布数据请求。当在步骤S255中的判断结果表示字幕读取功能部分235没有发布数据请求时,流程回到步骤S255。在步骤S255中,字幕读取功能部分235重复相同的处理。

与之相比,当在步骤S255中的判断结果表示字幕解码器控制模块218已经发布数据请求时,流程前进到步骤S256。在步骤S256中,字幕读取功能部分235从缓冲器215A中由字幕读取指针表示的位置解析程序流,从缓冲器215A中读取在字幕存取单元的起首描述的大小的一个字幕存取单元,以及与被添加到字幕存取单元的时间戳一起提供字幕存取单元到字幕解码器控制模块218。如图2A和图2B所述,字幕存取单元的大小在它的起首被描述。字幕读取功能部分235从缓冲器215A的由字幕读取指针表示的位置读取该大小的数据,以及与被添加到字幕存取单元的时间戳一起提供字幕存取单元到字幕解码器控制模块218。

字幕读取功能部分235把字幕读取指针更新从缓冲器215A中读取的一个字幕存取单元的大小。其后,流程回到步骤S255。在步骤S255中,字幕读取功能部分235重复相同的处理。

[再同步处理]

接下来,通过图2A和图2B中示出的解码控制模块214对视频数据和音频数据的同步控制将被描述。

如在图34中示出的步骤S130中所述,解码控制模块214使视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218开始解码它们的数据。当必要时,解码控制模块214使这些模块在不同的定时开始解码它们的数据,以使它们同步。例如,当视频解码器116和音频解码器117执行它们的解码处理时,取决于它们的进展状态,它们可以在不同的定时输出视频数据和音频数据。

因此,解码控制模块214执行再同步处理,该处理补偿视频数据和音频数据的输出定时的差别,以及使视频解码器116和音频解码器117同步地输出视频数据和音频数据。

接下来,参照图48中示出的流程图,再同步处理将被描述。

在再同步处理中,在步骤S271中,解码控制模块214判断在从视频解码器控制模块216输出的视频存取单元的时间戳和从音频解码器控制模块217输出的音频存取单元的时间戳之间的差别是否大。

换句话说,如在图34中示出的步骤S129中所述,无论何时视频解码器控制模块216从缓冲器控制模块215接收视频存取单元,视频解码器控制模块216提供视频存取单元的时间戳到解码控制模块214。同样地,无论何时音频解码器控制模块217从缓冲器控制模块215接收音频存取单元,音频解码器控制模块217提供音频存取单元的时间戳到解码控制模块214。

在步骤S271中,解码控制模块214比较在被认为是相同定时的预定时间段中的、从视频解码器控制模块216和音频解码器控制模块217接收的时间戳,并且判断时间戳的差别是否大。

当在步骤S271中的判断结果表示在从视频解码器控制模块216接收的视频存取单元的时间戳和从音频解码器控制模块217接收的音频存取单元的时间戳之间的差别不大,即在视频存取单元的时间戳和音频存取单元的时间戳之间的差别在存取单元能够被认为是同步的预定范围内,例如,两个图像帧(大约66毫秒)时,流程回到步骤S271。在步骤S271中,解码控制模块214判断时间戳的差别。

与之相比,当在步骤S271中的判断结果表示在从视频解码器控制模块216接收的视频存取单元的时间戳和从音频解码器控制模块217接收的音频存取单元的时间戳之间的差别大,即差别不在存取单元不能认为是同步的预定范围内时,流程前进到步骤S272。在步骤S272中,解码控制模块214比较从视频解码器控制模块216接收的视频存取单元的时间戳与从音频解码器控制模块217接收的音频存取单元的时间戳,以便判断在视频数据的输出和音频数据的输出中哪一个后于另一个。

当在步骤S272中的判断结果表示视频数据的输出后于音频数据的输出时,流程前进到步骤S273。在步骤S273中,解码控制模块214使视频解码器控制模块216停止解码及显示视频存取单元,即跳过对视频存取单元的处理,以推进对一个视频存取单元的处理。其后,流程前进到步骤S274。

在步骤S274中,视频解码器控制模块216接收来自解码控制模块214的跳过请求,以及检查与视频存取单元一起从缓冲器控制模块215提供的au_ref_flag(图27)。

换句话说,存储在private_stream_2的PES_packet()的private_stream2_PES_payload()(图26)中的au_information()(图27)包含作为关于存取单元的信息的au_ref_flag。如在图34中示出的步骤S129和图45中示出的步骤S216中所述,与视频存取单元一起,缓冲器控制模块215提供其au_ref_flag到视频解码器控制模块216。

在步骤S274中,视频解码器控制模块216检查与存取单元一起被提供的存取单元的au_ref_flag。

其后,流程从步骤S274前进到步骤S275。在步骤S275中,视频解码器控制模块216判断当另一图像根据已经从缓冲器控制模块215提供的视频存取单元的au_ref_flag的检查结果而被解码时,视频存取单元是否是不被参照的非参照图像。

如图27所述,视频存取单元的au_ref_flag表示存取单元是否是参照图像。当存取单元是参照图像时,au_ref_flag是1。与之相比,当存取单元不是参照图像时,au_ref_flag是0。

当在步骤S275中的判断结果表示从缓冲器控制模块215提供的视频存取单元不是非参照图像的视频存取单元,即从缓冲器控制模块215提供的视频存取单元是参照图像时,流程前进到步骤S276。在步骤S276中,视频解码器控制模块216使视频解码器116正常地处理视频存取单元。在视频解码器控制模块216已经从缓冲器控制模块215接收下一视频存取单元之后,流程回到步骤S274。

与之相比,当在步骤S275中的判断结果表示从缓冲器控制模块215提供的视频存取单元是非参照图像时,流程前进到步骤S277。在步骤S277中,视频解码器控制模块216使视频解码器116跳过对视频存取单元的处理。在缓冲器控制模块215已经提供下一视频存取单元之后,流程回到步骤S271。

因为对视频存取单元的处理被跳过,所以处理被推进接近一个视频存取单元。结果,后于音频数据的输出的视频数据的输出被提前。

与之相比,当在步骤S272中的判断结果表示视频数据的输出不后于音频数据的输出,即音频数据的输出后于视频数据的输出时,流程前进到步骤S278。在步骤S278中,解码控制模块214输出连续输出命令到视频解码器控制模块216,以连续地输出与正被解码的视频存取单元相对应的视频数据,以保持视频解码器控制模块216等待对下一视频存取单元的处理。其后,流程前进到步骤S279。

在步骤S279中,视频解码器控制模块216从解码控制模块214接收连续输出请求,并且根据该连续输出请求,把正被视频解码器116解码的视频存取单元的视频数据连续地输出到图形处理模块219。在缓冲器控制模块215已经提供下一视频存取单元之后,流程前进到步骤S271。

如上所述,解码控制模块214判断视频数据的输出是否后于音频数据的输出。当视频数据的输出后于音频数据的输出时,解码控制模块214使视频解码器控制模块216跳过对一个存取单元的处理。视频解码器控制模块216根据存取单元的au_ref_flag来判断将被跳过的存取单元是参照图像还是非参照图像。当存取单元是非参照图像时,解码控制模块214使视频解码器116跳过对该存取单元的处理。因此,视频数据的输出和音频数据的输出能够容易地同步。

换句话说,当将被跳过的存取单元是参照图像时,存取单元的视频数据需要被解码,以便当另一存取单元被解码时,视频数据被参照。因此,在视频数据的输出和音频数据的输出被同步的同步控制中,如果对参照图像的存取单元的处理被跳过,则对参照图像进行参照的另一存取单元不能被解码。结果,当与音频数据同步的视频数据被显示时,噪声出现。

因此,优选地,跳过不是参照图像的存取单元,即非参照图像。

另一方面,为了搜索作为非参照图像的存取单元的常规基本流,基本流需要被解析。根据例如MPEG4-AVC制式而编码的基本流是很复杂的。因此,当这个基本流被解析时,成本高。

与之相比,存储在记录在盘101上的剪辑流文件中的程序流,除具有包含视频存取单元的PES_packet_data_byte的PES_packet()(图19A和图19B至图21A和图21B)之外,还与包含作为PES_packet_data_byte的扩展的private_stream2_PES_payload()(图26)的private_stream_2的PES_packet()多路复用。private_stream2_PES_payload()的au_information()(图27)描述au_ref_flag,其表示视频存取单元是参照图像还是非参照图像。au_ref_flag与相应的视频存取单元一起,从缓冲器控制模块215被提供到视频解码器控制模块216。因此,视频解码器控制模块216能够通过检查视频存取单元的au_ref_flag,而无需额外成本,来判断视频存取单元是参照图像还是非参照图像。

[标记处理]

接下来,参照图49中示出的流程图,基于在PlayListMark()(图9)中描述的Mark()的标记处理将被描述。

解码控制模块214通常检查通过内置的时间计数部分214A计数的当前时间。在步骤S301中,解码控制模块214判断当前时间是否与在PlayListMark()(图9)中描述的任意Mark()的mark_time_stamp(标记时间戳)匹配。

如在图34中示出的步骤S124中所述,当播放器控制模块212再现图29中示出的第一PlayList#0的第一PlayItem#0时,播放器控制模块212识别出包含在图32中示出的上部的表中的PlayListMark()内的七个Mark()的第一Mark()至第四Mark()的四个Mark()属于PlayList#0的第一PlayItem#0,并且与表示mark_time_stamp所表示的时间属性是“标记处理”的信息一起,提供作为四个Mark()的mark_time_stamp的{180,090}、{5,580,090}、{10,980,090}、和{16,380,090}到解码控制模块214。

在步骤S301中,解码控制模块214判断已经从播放器控制模块212提供的具有“标记处理”属性的四个定时(mark_time_stamp)中的哪个与当前时间匹配。

当在步骤S301中的判断结果表示当前时间与具有“标记处理”属性的任何定时不匹配时,流程回到步骤S301。在步骤S301中,解码控制模块214重复相同的处理。

[在标记处理中的匹配判断]

在标记处理中,在步骤S301中,解码控制模块214判断当前时间是否与一个mark_time_stamp匹配。然而,在这个实施例中,因为时间计数部分214A指示离散值,因此如果它们的匹配被简单地判断,则问题可能发生。

参照图50,如此的问题将用简单的示例描述。在图50的上部部分,I0、P1、P2、和P3表示视频存取单元。假定这些视频存取单元的每个的pic_struct是3,即显示持续时间是一帧(在90kHz时是3003)。在这个示例中,假定它们的解码次序与它们的显示顺序相同,即重排序不发生。I0是在如“再现准备处理”中所述的EP_map()中注册的存取单元。I0的存取单元具有时间戳,PTS=180,090。与之相比,P1、P2、和P3的存取单元不具有时间戳。

当如此的视频数据被处理时,时间计数部分214A的时钟被更新,如在图50的下部部分所示。当I0被输出时,I0的PTS和pic_struct被提供。因为I0具有PTS,所以它被代入时间计数部分214A。结果,时间计数部分214A的PTS变成180,090。当P1被输出时,因为它不具有PTS,所以仅仅P1的pic_struct被提供。因为I0的pic_struct是3,因此一帧的时间(在90kHz是3003)被添加到时间计数部分214A。因此,时间计数部分214A的值变成183,093。同样地,当P2被输出时,因为P1的pic_struct是3,所以3003被添加到时间计数部分214A的时间。结果,时间计数部分214A的值变成186,096。当P3被输出时,同样地,3003被添加到时间计数部分214A的时间。结果,时间计数部分214A的值变成189,099。

现在,当在PlayListMark()(图9和图32)中注册的一个标记的mark_time_stamp是186,000时被执行的处理将被考虑。如上所述,时钟(时间计数部分214A)输出的值是180,090、183,093、186,096、189,099,与标记的时间匹配的值186,000不被输出。因此,当mark_time_stamp和时间被简单地比较,即判断差别是否是0时,问题将发生。

因此,预定规则被应用到时间匹配判断。换句话说,在这些示例中,当具体事件的mark_time_stamp被包含在具体图像的显示持续时间中时,定义该具体事件发生在相关图像的显示开始时间。在上述示例中,mark_time_stamp=186,000被包含在图像P1的显示持续时间中。因此,定义这个事件发生在P1的显示开始时间,即183,093。

接下来,在上述定义下执行匹配判断的解码控制模块214的判断算法将被描述。

在这个示例中,只有当视频数据被更新时,时间(时间计数部分214A)被更新。换句话说,只有当时间被更新时,在图49中示出的步骤S301的处理被执行。因此,在包括软件的再现设备中,因为处理的步骤数目能够被显著地减少,所以这个结构是有利的。

当时间被更新时,图49中示出的处理被调用。在步骤S301中,解码控制模块214检查是否存在被判断为与当前时间匹配的事件。换句话说,解码控制模块214基于当前时间和正被显示的图像的显示持续时间,而检查是否存在被包含在正被显示的图像的持续时间内的事件。当没有被判断为与当前时间匹配的事件时,流程回到步骤S301。当存在被判断为与当前时间匹配的事件时,流程前进到步骤S302。当没有被判断为与当前时间匹配的事件时,处理可以完成。

具体地,例如当I0正被显示时,因为时间是180,090,并且I0的pic_struct是3,因此很明显I0的显示持续时间是3003。因此,满足180,090≤mark_time_stamp<180,090+3003的mark_time_stamp被检索到。此时,既然在此时例示的事件时间186,000不满足这个表达式,则不判断时间匹配。

当I1正被显示时,因为时间是183,093以及I1的pic_struct是3,很明显I0的显示持续时间是3003。因此,满足183,093≤mark_time_stamp<183,093+3003的mark_time_stamp被检索到。既然在此时例示的事件的时间186,000满足这个表达式,则判断时间匹配。其后,在步骤S302之后的处理被执行。

在上文中,一个时间匹配判断被例示。作为替代,另一定义可以被应用。例如,当具体事件的mark_time_stamp等于或大于“具体图像的显示开始时间-α”并且小于“下一显示图像的显示开始时间-α”时,定义事件在相关图像的显示开始时间发生。作为替代,用相同的判断标准,定义事件发生的时间是例如“相关图像的显示开始时间-α”。

在如此的定义被引入的情况下,当标记的时间即mark_time_stamp被设置时,不需要知道视频流的时间。因此,当编辑操作被执行时,因为视频编码处理变得与数据库的创建完全独立,所以它们能够被个别地执行。

与之相比,当在步骤S301中的判断结果表示当前时间与具有“标记处理”属性的四个时间中的一个匹配时,解码控制模块214把表示当前时间变成具有“标记处理”属性的时间的消息、与具有“标记处理”属性的匹配时间一起,提供到播放器控制模块212。其后,流程前进到步骤S302。

在步骤S302中,播放器控制模块212与具有“标记处理”属性的匹配时间一起,从解码控制模块214接收表示当前时间变成具有“标记处理”属性的时间的消息,以及识别其mark_time_stamp与当前时间匹配的Mark(),作为用于标记处理而将被处理的Mark()(以下,有时这个Mark()被称为目标标记)。

换句话说,播放器控制模块212已经识别正被再现的PlayList()的PlayItem()。通过从PlayList()、PlayItem()、和与当前时间匹配并从解码控制模块214提供的、具有“标记处理”属性的时间(mark_time_stamp)(以下这个时间有时被称为标记时间),参照“PLAYLIST.DAT”文件(图7)的PlayListMark()(图9),播放器控制模块212识别目标标记。

具体地,假定图29中示出的第一PlayList#0的第一PlayItem#0正被再现,播放器控制模块212识别标记时间是四个Mark()的任何一个的mark_time_stamp,该四个Mark()是被包含在图32中示出的上部的表中的PlayListMark()内的七个Mark()的第一至第四Mark()。

当从解码控制模块214提供到播放器控制模块212的标记时间是例如16,380,090时,播放器控制模块212把被包含在图32中示出的上部的表中的PlayListMark()内的第一至第四Mark()的四个Mark()中的、其mark_time_stamp与作为标记时间的16,380,090匹配的第四Mark(),识别为目标标记。

当播放器控制模块212已经识别目标标记时,流程从步骤S302前进到步骤S303。在步骤S303中,播放器控制模块212判断目标标记是否描述标识基本流的entry_ES_stream_id和entry_ES_private_stream_id(图9)。

当在步骤S303中的判断结果表示目标标记不描述标识基本流的entry_ES_stream_id和entry_ES_private_stream_id(图9),即entry_ES_stream_id和entry_ES_private_stream_id两者是0x00时,流程跳过步骤S304前进到步骤S305。在步骤S305中,解码控制模块214对目标标记执行处理。

与之相比,当在步骤S303中的判断结果表示目标标记描述标识基本流的entry_ES_stream_id和entry_ES_private_stream_id(图9)时,流程前进到步骤S304。在步骤S304中,播放器控制模块212判断正被再现的基本流是否包含由entry_ES_stream_id以及必要时由entry_ES_private_stream_id标识的基本流。

当在步骤S304中的判断结果表示正被再现的基本流不包含由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流时,流程回到步骤S301。换句话说,当由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流不被再现时,目标标记被忽略。

与之相比,当在步骤S304中的判断结果表示正被再现的基本流包含由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流,即由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流正被再现时,判断目标标记是有效的。其后,流程前进到步骤S305。在步骤S305中,播放器控制模块212对目标标记执行处理。

换句话说,在步骤S305中,通过参照目标标记的mark_type(图9),播放器控制模块212判断目标标记。

当在步骤S305中的判断结果表示目标标记是章标记或索引标记,即目标标记的mark_type是“Chapter”或“Index”时,流程前进到步骤S306。在步骤S306中,播放器控制模块212使图形处理模块219用目标标记的编号更新章编号或索引编号。其后,流程回到步骤S301。

当在步骤S305中的判断结果表示目标标记是事件标记,即目标标记的mark_type是“Event”时,流程前进到步骤S307。在步骤S307中,播放器控制模块212提供表示事件已经发生的事件消息和目标标记的mark_data两者到脚本控制模块211。其后,流程前进到步骤S308。

在步骤S308中,脚本控制模块211从播放器控制模块212接收事件消息和mark_data,以及根据作为中断请求的事件消息而执行在具有mark_data的变元的“SCRIPT.DAT”文件中描述的处理序列。其后,流程回到步骤S301。

换句话说,脚本控制模块211执行与mark_data相对应的处理。

具体地,在图32中示出的下部的表中的PlayList#1的PlayListMark()中,每个第二Mark()(Mark#1)和第三Mark()(Mark#2)的mark_type是“Event”。然而,Mark#1的mark_data是1,而Mark#2的mark_data是2。

当脚本控制模块211接收与第二Mark()相对应的事件消息和与第三Mark()相对应的事件消息时,脚本控制模块211根据接收的事件消息,通过相同的事件处理机(handler)(中断处理规程),来执行处理。脚本控制模块211检查与事件消息一起提供的mark_data,以及根据mark_data,通过事件处理机来执行处理。

具体地,当mark_data例如是1时,脚本控制模块211控制图形处理模块219以显示第一类型图标。当mark_data例如是2时,脚本控制模块211控制图形处理模块219以显示第二类型图标。

mark_data不局限于1和2。另外,与mark_data相对应的处理不局限于简单图标的显示。

换句话说,当mark_data是在3至18的范围内时,脚本控制模块211控制图形处理模块219,以显示具有与从mark_data中减去2的值(在1至16范围内的数值)相对应的密度的第一类型图标。另一方面,当mark_data在19至34的范围内时,脚本控制模块211控制图形处理模块219以显示具有与从mark_data中减去18的值(在1至16范围内的数值)相对应的密度的第二类型图标。

当用户操作的控制器与输入接口115(图1)相连,并且控制器具有振动电机时,所述振动电机是具有安装在电机轴上的偏心锤(eccentric weight)的直流(DC)电机,并且当电机被驱动时振动,如果mark_data值在35至42的范围内,则振动电机能够被驱动与从mark_data中减去34的值(在1至8范围内的数值)相对应的操作时间段。

mark_data是数值。mark_data的使用和算法能够用脚本控制模块211执行的脚本程序描述。因此,根据由盘101的制造商或提供记录在盘101上的数据的内容供应商指定的预定规则或原始规则,mark_data能够被使用。

当当前时间与具有“标记处理”属性的时间匹配时,目标标记从作为具有“标记处理”属性的时间的标记时间中被识别。当目标标记不描述标识基本流的entry_ES_stream_id和entry_ES_private_stream_id时,根据目标标记的mark_type的处理被执行。即使目标标记描述标识基本流的entry_ES_stream_id和entry_ES_private_stream_id,当由entry_ES_stream_id和entry_ES_private_stream_id标识的基本流正被再现时,根据目标标记的mark_type的处理被执行。

当图29中示出的第二PlayList#1正被再现时,下列标记处理被执行。

换句话说,如在图32中示出的下部的表中所示,第二PlayList#1的PlayListMark()描述mark_time_stamp分别是90,000、27,090,000、和27,540,000的第一Mark()(Mark#0)、第二Mark()(Mark#1)、和第三Mark()(Mark#2)。

另外,因为在图32中示出的下部的表中的PlayListMark()的第二Mark()和第三Mark()的entry_ES_stream_id描述为0xE0和0xE1,所以第二Mark()和第三Mark()分别与由为0xE0和0xE1的stream_id标识的基本流有关。

如图29所述,第二PlayList#1仅仅描述一个PlayItem()(PlayItem#0)。根据PlayItem#0,剪辑流文件“00003.PS”被再现。如在图30A和图30B中示出的与剪辑流文件“00003.PS”相对应的剪辑信息文件“00003.CLP”中所述,剪辑流文件“00003.PS”与三个基本流多路复用,该三个基本流是通过为0xE0的stream_id标识的视频流stream#0、通过为0xE1的stream_id标识的视频流stream#1、和通过为0x00的private_stream_id标识的音频stream#2。

因此,在图32中示出的下部的表中的PlayListMark()的第二Mark()与其stream_id是0xE0、且与剪辑流文件“00003.PS”多路复用的视频流文件stream#0有关。第三Mark()与其stream_id是0xE1、且与剪辑流文件“00003.PS”多路复用的视频流stream#1有关。

如在图34中示出的步骤S124中所述,当图29中示出的第二PlayList#1的PlayItem#0被再现时,播放器控制模块212识别出,被包含在图32中示出的下部的表中的PlayListMark()中的三个Mark()属于PlayList#1的PlayItem#0,并且把作为三个Mark()的mark_time_stamp的{90,000}、{27,090,000}、和{27,540,000},与表示时间具有“标记处理”属性的信息一起,提供到解码控制模块214。

在标记处理中,当PlayList#1的PlayItem#0正被再现时,解码控制模块214通常判断时间{90,000}、{27,090,000}、和{27,540,000}中的哪一个与通过时间计数部分214A计数的当前时间匹配(在步骤S301中)。当当前时间与具有“标记处理”属性的时间匹配时,解码控制模块214把作为具有“标记处理”属性的时间的标记时间,与表示当前时间变成具有“标记处理”属性的时间的消息一起,提供到播放器控制模块212。

当当前时间与具有“标记处理”属性的时间{90,000}、{27,090,000}、和{27,540,000}的27,090,000匹配时,解码控制模块214把具有“标记处理”属性的标记时间,27,090,000,与表示当前时间变成具有“标记处理”属性的时间的消息一起,提供到播放器控制模块212。

播放器控制模块212已经识别PlayList#1的PlayItem#0正在被再现。播放器控制模块212比较作为属于在图32中示出的下部的表中的PlayListMark()中被描述的Mark()的PlayItem#0的三个Mark()的mark_time_stamp的90,000、27,090,000、和27,540,000与作为从解码控制模块214提供的标记时间的27,090,000,并且识别其mark_time_stamp与作为标记时间的27,090,000匹配的Mark(),即,在图32中示出的下部的表中的PlayListMark()中描述的第二Mark()(Mark#1),作为目标标记(在步骤S302中)。

在图32中示出的下部的表中的PlayListMark()中描述的、作为目标标记的第二Mark()中,entry_ES_stream_id是0xE0。如上所述,为0xE0的entry_ES_stream_id表示其stream_id是0xE0的、与剪辑流文件“00003.PS”多路复用的视频流stream#0(图30A和图30B)。播放器控制模块212判断正被再现的基本流是否包含视频流stream#0(在步骤S303和S304中)。

当正被再现的基本流不包含视频流stream#0时,播放器控制模块212忽略目标标记(在步骤S304中)。

与之相比,当正被再现的基本流包含视频流stream#0时,播放器控制模块212把目标标记作为有效来对待,并且根据目标标记执行处理(在步骤S305至S308中)。

在这种情况下,在图32中示出的下部的表中的PlayListMark()中描述的、作为目标标记的第二Mark()的mark_type是“Event”。因此,第二Mark()是事件标记。播放器控制模块212提供表示事件已经发生的事件消息和目标标记的mark_data到脚本控制模块211(在步骤S305和S307中)。脚本控制模块211根据从播放器控制模块212接收的、作为中断请求的事件消息,来执行在“SCRIPT.DAT”中描述的具有mark_data变元的处理序列(在步骤S308中)。

如上所述,在标记处理中,播放器控制模块判断当前时间是否与mark_time_stamp匹配,其中,所述当前时间,是根据表示在PlayList()的时间轴上的一个再现时间的mark_time_stamp、表示Mark()类型的marktype、和包含不具有Mark()或多于一个Mark()的PlayListMark()(图9)的PlayList()(图7),而再现的剪辑流文件的再现时间,其中Mark()包含mark_data,作为事件标记的变元。当当前时间与mark_time_stamp匹配时,播放器控制模块212识别具有等于作为当前时间的时间标记的mark_time_stamp的Mark(),作为目标标记。当目标标记的mark_type表示事件发生的类型,即目标标记是事件标记时,目标标记的mark_type和事件消息被提供。播放器控制模块212根据mark_data执行处理。因此,根据mark_data的处理能够根据剪辑流文件的再现时间而被执行。

[在out_time处理中的匹配判断]

如上所述,当时间计数部分214A计数的时间变得与通过播放器控制模块212提供的PlayItem的OUT_time相等时,解码控制模块214取消解码处理,并且完成PlayItem的再现。在这个实施例中,在图40中示出的流程图的步骤S151中,PlayItem#0的完成被描述。

在这种情况下,当时间和OUT_time在匹配判断中简单地比较时,存在问题发生的可能性。因此,当时间和OUT_time被比较时,上述匹配判断的定义被使用。

换句话说,如图51所示,在与PlayListEnd(播放列表结尾)相对应的PlayItem的OUT_time小于在PlayList的结尾显示的FoCFP(在目前正被再现的视频流中的帧或互补场对)的PET的情况下,当在其显示持续时间包含与PlayListEnd的时间相对应的OUT_time的FoCFP的显示开始时间(PTS),PlayListEnd事件发生,即PTSFOCFP[3]≤OUT_time<PETFOCFP[3]时,PlayListEnd事件在FoCFP[3]的显示开始时间PTSFOCFP[3]发生。在这个示例中,PETFOCFP[k]表示“显示持续时间基于pic_struct而被加到PTSFOCFP[k]的时间”。

因此,既然只有当视频流被输出时,时间匹配判断被执行,所以处理的负载变轻。另外,如上所述,视频流的准备变得与数据库的准备完全独立。

另外,解码控制模块214向播放器控制模块212通知PlayItem再现完成。当播放器控制模块212已经判断PlayItem是PlayList的最后PlayItem时,播放器控制模块212使脚本控制模块211产生PlayListEnd事件。

当脚本控制模块211接收到PlayListEnd事件时,脚本控制模块211知道命令PlayList的再现的完成,并且继续执行程序操作。换句话说,脚本控制模块211例如再现另一PlayList,显示菜单,或完成操作。

在图52中示出的情况下,当OUT_time等于在PlayItem中的最后图像的显示结束时间时,在上述匹配判断中这个情况可能不能被处理。在图52中,例如,当FoCFP[2]被显示和暂停时,如果playStop()被调用,则FoCFP[3]被显示和暂停。其后,如果playStop()被再次调用,则被显示的图像不被改变,但是PlayListEnd发生。

换句话说,由于最后图像的显示开始时间+基于pic_struct的持续时间=OUT_time,所以最后图像的显示开始时间+基于pic_struct的持续时间<OUT_time的关系不满足。

在这种情况下,在视频解码器控制模块216输出最后图像,以及然后图像的显示持续时间过去之后,视频解码器控制模块216发送表示显示结束的信息到解码控制模块214。因此,时钟被向前设置到“最后图像的显示开始时间+基于pic_struct的持续时间”。因此,匹配条件能够满足。

[字幕解码]

无论何时字幕解码器控制模块218获取存储在缓冲器215A中的一个字幕存取单元、以及从缓冲器控制模块215(图5)的字幕读取功能部分235添加到其中的时间戳,字幕解码器控制模块218使内部字幕解码软件解码字幕存取单元。另外,字幕解码器控制模块218发送时间戳和持续时间到解码控制模块214。

当解码控制模块214用从视频解码器控制模块216提供的信息改变时钟(时间计数部分214A)的时间时,解码控制模块214检查从视频解码器控制模块216提供的字幕存取单元的PTS。换句话说,当解码控制模块214已经基于匹配判断标准而判断字幕存取单元的PTS与时间匹配时,解码控制模块214使图形处理模块219输入字幕,以及使字幕解码器控制模块218输出字幕。

当解码控制模块214已经使字幕解码器控制模块218输出字幕时,字幕解码器控制模块218提供解码字幕图像数据到图形处理模块219。图形处理模块219存储输入的字幕数据,并且将它们与后面将输入的视频数据组合。

解码控制模块214还检查字幕的显示持续时间。换句话说,当“字幕的显示开始时间+显示持续时间”的值已经基于匹配判断标准而被判断为与当前时间匹配时,解码控制模块214使图形处理模块219擦除字幕。结果,图形处理模块219擦除已经被存储和被输入的字幕数据,并且停止把字幕数据与后面将输入的视频数据组合。

[标记间隔的必要性]

在上述匹配判断标准中,在预定范围内的时间被取整(round)到单个时间。换句话说,满足具体视频数据的显示开始时间≤t<显示结束时间的关系的时间t被取整到视频数据的显示开始时间。

因此,取决于事件的位置关系,两个相邻事件的时间可以被取整到一个时间。例如,在图50中示出的示例中,如果紧接其时间是186,000的事件的事件的mark_time_stamp是184,000,则定义两个事件在P1的显示开始时间发生。

为了防止这种情况,必须保证对于单个视频,仅仅单个事件能够被指定。因此,当相邻事件的间隔是三个场或更多(超过用pic_struct指定的最大显示时间)时,上述情况被保证。

图53示出上述条件的示例。换句话说,在图53中,情况A表示帧速率是5005/240000(逐行,23.976Hz),最小的事件间隔是7507,而情况B表示帧速率是4004/240000(隔行,59.94Hz),以及以90kHz的最小的事件间隔是6006。

在诸如AVC和MPEG2视频的视频编码制式中,一帧的信号被显示三个场的时间,以有效地编码2-3个下拉(pull-down)图像。因此,一个帧的信号的最大持续时间是三个场。换句话说,当相邻事件的间隔仅仅由三个场或更多的时间分离时,这两个相邻事件能够防止被判断为它们在单个视频数据的显示开始时间发生。

另外,能够通过超过三个场来定义相邻事件的间隔。例如,相邻事件的间隔能够通过两个或更多的帧而被定义。

作为替代,通过检查所有事件的视频数据并且判断它们没有叠放,上述条件可以被保证。

[输出属性控制处理]

接下来,参照图54中示出的流程图,在图34中示出的步骤S126中执行的输出属性控制处理等等将被详细描述。

如在图34中示出的步骤S126中所述,播放器控制模块212检查将被再现的至少一个基本流,即number_of_DynamicInfo(图12),其表示DynamicInfo()(图15)的数目,DynamicInfo()描述关于在图34中示出的步骤S125中已经被决定再现的至少一个基本流的输出属性。

当将被再现的至少一个基本流的每个的number_of_DynamicInfo是0时,播放器控制模块212不执行任何处理。

与之相比,当将被再现的基本流的number_of_DynamicInfo不是0时,播放器控制模块212根据图54中示出的流程图来执行输出属性控制处理。

因此,当记录在盘101上的三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”如图30A和图30B中所示,并且再现与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”的第一PlayList#0的第一PlayItem#0被再现时,因为与剪辑信息文件“0001.CLP”(图30A和图30B)的剪辑流文件“00001PS”多路复用的全部四个基本流stream#0至stream#3的number_of_DynamicInfo是0,因此播放器控制模块212不执行输出属性控制处理。

同样地,当再现与剪辑信息文件“00002.CLP”相对应的剪辑流文件“00002.PS”的第一PlayList#0的第二PlayItem#1被再现时,因为与剪辑信息文件“00002.CLP”(图30A和图30B)的剪辑流文件“00002.PS”多路复用的四个基本流stream#0至stream#3的number_of_DynamicInfo是0,因此播放器控制模块212不执行输出属性控制处理。

与之相比,当再现与剪辑信息文件“00003.CLP”相对应的剪辑流文件“00003.PS”的第二PlayList#1的PlayItem#0被再现时,因为,在与剪辑信息文件“00003.CLP”(图30A和图30B)的剪辑流文件“00003.PS”多路复用的三个基本流stream#0至stream#2中,作为第一基本流的视频流stream#0、和作为第三基本流的音频流stream#2的number_of_DynamicInfo分别是2和3,所以播放器控制模块212执行输出属性控制处理。

换句话说,在输出属性控制处理中,在步骤S320中,播放器控制模块212把在与将被再现的剪辑流文件相对应的剪辑信息文件Clip()(图12)中所述的pts_change_point,与表示具有“DynamicInfo()处理”属性的时间的信息一起,提供到解码控制模块214。解码控制模块214从播放器控制模块212接收作为具有“DynamicInfo()处理”属性的时间的pts_change_point。其后,流程前进到步骤S321。

在步骤S321中,解码控制模块214判断由时间计数部分214A计数的当前时间是否与作为具有“DynamicInfo()处理”属性的时间的pts_change_point匹配。当在步骤S321中的判断结果表示当前时间与pts_change_point不匹配时,流程回到步骤S321。

与之相比,当在步骤S321中的判断结果表示当前时间与具有“DynamicInfo()处理”属性的任何一个时间匹配时,解码控制模块214把表示当前时间变成具有“DynamicInfo()处理”属性的时间的消息、和具有“DynamicInfo()处理”属性的时间(以下有时被称为DynamicInfo(动态信息)时间),提供到播放器控制模块212。其后,流程前进到步骤S322。

在步骤S332中,播放器控制模块212从解码控制模块214接收表示当前时间变成具有“DynamicInfo()处理”属性的时间的消息、和DynamicInfo时间,并且识别与和DynamicInfo时间匹配的pts_change_point(图12)成对的DynamicInfo(),作为目标DynamicInfo()。其后,流程前进到步骤S323。

在步骤S323中,播放器控制模块212把在作为目标DynamicInfo()的DynamicInfo()(图15)中描述的输出属性提供到图形处理模块219或音频输出模块221。其后,流程前进到步骤S324。

在步骤S324中,根据在步骤S323中已经从播放器控制模块212提供的输出属性,图形处理模块219或音频输出模块221开始控制视频数据或音频数据的输出。其后,流程回到步骤S321。

因此,根据例如作为输出模式而描述的纵横比,视频数据被输出。或者,根据例如作为输出模式而描述的立体声模式或双重(双语)模式,音频数据被输出。

接下来,参照图55,输出属性控制处理将被详细描述。

即,图55示出在图30A和图30B中示出的剪辑信息文件“00003.CLP”中描述的pts_change_point和DynamicInfo()对(图12)。

如上所述,在图30A和图30B中示出的剪辑信息文件“00003.CLP”中,在与剪辑流文件“00003.PS”多路复用的三个基本流stream#0至stream#2中作为第一基本流和作为第三基本流的视频流stream#0和音频流stream#2的number_of_DynamicInfo分别是2和3。因此,在剪辑信息文件“00003.CLP”中,关于剪辑流文件“00003.PS”的第一视频流stream#0,pts_change_point和DynamicInfo()法人两个集合被描述,以及关于剪辑流文件“00003.PS”的第三音频流stream#2,pts_change_point和DynamicInfo()的三个集合被描述。

在图55中示出的上部的表中,剪辑流文件“00003.PS”的第一视频流stream#0的pts_change_point和DynamicInfo()的两个集合被描述。在图55中示出的下部的表中,剪辑流文件“00003.PS”的第三音频流stream#2的pts_change_point和DynamicInfo()的三个集合被描述。

在图55中示出的上部的表中,除第一视频流stream#0的pts_change_point和DynamicInfo()的两个集合之外,图30A和图30B中示出的剪辑信息文件“00003.CLP”的第一视频stream#0的stream_id(=0xE0)、private_stream_id(=0x00)、和number_of_DynamicInfo(=2)被描述。同样地,在图55中示出的下部的表中,除第三音频流stream#2的pts_change_point和DynamicInfo()的三个集合之外,图30A和图30B中示出的剪辑信息文件“00003.CLP”的音频流stream#2的stream_id(=0xBD)、private_stream_id(=0x00)、和number_of_DynamicInfo(=3)被描述。

在图55中示出的上部的表中,视频流stream#0的pts_change_point和DynamicInfo()的两个集合的第一集合的pts_change_point是90,000,以及它的Dynamlclnfo()的display_aspect_ratio(显示纵横比)(图15)是“4∶3”。第二集合的pts_change_point是54,090,000,以及它的DynamicInfo()的display_aspect_ratio是“16∶9”。

在图55中示出的下部的表中,音频流stream#2的pts_change_point和DynamicInfo()的三个集合的第一集合的pts_change_point是90,000,以及它的Dynamlclnfo()的channel_assignment(信道分配)(图15)是“Dual(双重)”。第二集合的pts_change_point是27,090,000,以及它的DynamicInfo()的channel_assignment是“Stereo(立体声)”。第三集合的pts_change_point是32,490,000,以及它的DynamicInfo()的channel_assignment是“Dual”。

现在,假定在图34中示出的步骤S125中,来自剪辑流文件“00003.PS”的、由为0xE0的stream_id标识的第一视频流stream#0、以及由为0xBD的stream_id和为0x00的private_stream id标识的第三音频流stream#2,已经被决定为将被再现的流。

在这种情况下,播放器控制模块212检查关于由为0xE0的stream_id标识的视频流stream#0的在图55中示出的上部的表中的pts_change_point和Dynamiclnfo()的两个集合、以及关于由为0xBD的stream_id和为0x00的private_stream_id标识的音频流stream#2的在图55中示出的下部的表中的pts_change_point和DynamicInfo()的三个集合,并且识别初始值。

换句话说,关于由为0xE0的stream_id标识的视频流stream#0的在图55中示出的上部的表中的pts_change_point和DynamicInfo()的两个集合的第一集合的pts_change_point是90,000。时间90,000在与视频流stream#0已经与其多路复用的剪辑流文件“00003.PS”相对应的在图30A和图30B中示出的剪辑信息文件“00003.CLP”中,与在表示剪辑流文件“00003.PS”的开始时间的presentation_start_time中描述的时间90,000匹配。

同样地,关于由为0xBD的stream_id和为0x00的private_stream_id标识的音频流stream#2的在图55中示出的下部的表中的pts_change_point和DynamicInfo()的三个集合的第一集合的pts_change_point是90,000。时间90,000在与音频流stream#2已经与其多路复用的剪辑流文件“00003.PS”相对应的在图30A和图30B中示出的剪辑信息文件“00003.CLP”中,与在表示剪辑流文件“00003.PS”的开始时间的presentation_start_time中描述的时间90,000匹配。

播放器控制模块212把pts_change_point识别为初始值,该pts_change_point与在表示剪辑流文件“00003.PS”的开始时间的presentation_start_time中描述的时间90,000匹配。因此,播放器控制模块212识别在图55中示出的上部的表中的pts_change_point和DynamicInfo()的两个集合的第一集合的pts_change_point、和在图55中示出的下部的表中的pts_change_point和DynamicInfo()的三个集合的第一集合的pts_change_point,作为初始值。

在剪辑流文件“00003.PS”被再现之前,播放器控制模块212,根据与在图34中示出的步骤S126中被识别为初始值的pts_change_point成对的DynamicInfo(),来指定基本流的输出属性。

对于由为0xE0的stream_id标识的视频流stream#0,在图55中示出的上部的表中,与是作为初始值的90,000的pts_change_point成对的DynamicInfo()的display_aspect_ratio是“4∶3”。在这种情况下,播放器控制模块212,通过表示display_aspect_ratio是“4∶3”的信息,即关于表示视频流stream#0是纵横比为4∶3的视频数据的输出属性的信息,来控制图形处理模块219。

对于由是0xBD的stream_id和是0x00的private_stream_id标识的音频流stream#2,在图55中示出的下部的表中,与是作为初始值的90,000的pts_change_point成对的DynamicInfo()的channel_assignment是“Dual”。在这种情况下,播放器控制模块212把表示channel_assignment是“Dual”的信息,即关于表示音频流stream#2是双重音频数据的输出属性的信息,提供到音频输出模块221。

在图34中示出的步骤S126中,播放器控制模块212对作为初始值的pts_change_point执行输出属性控制处理。

其后,播放器控制模块212,把关于视频流stream#0的在图55中示出的上部的表中的作为两个pts_change_point的90,000和54,090,000、以及关于音频流stream#2的在图55中示出的下部的表中的作为三个pts_change_point的90,000、27,090,000和32,490,000中、除作为初始值的90,000之外的时间的{27,090,000}、{32,490,000}和{54,090,000},与表示这些时间具有“DynamicInfo()处理”属性的信息一起,提供到解码控制模块214(在步骤S320中)。

解码控制模块214从播放器控制模块212接收具有“DynamicInfo()处理”属性的时间{27,090,000}、{32,490,000}、和{54,090,000}。在开始再现视频流stream#0和音频流stream#2之后,解码控制模块开始检查由时间计数部分214A计数的当前时间。

当当前时间与具有“DynamicInfo()处理”属性的时间{27,090,000}、{32,490,000}、和{54,090,000}的一个匹配时,解码控制模块214把DynamicInfo时间提供到播放器控制模块212(在步骤S321中),该DynamicInfo时间是具有“DynamicInfo()处理”属性的时间,并且与当前时间匹配。

当当前时间变成例如27,090,000时,解码控制模块214把与当前时间匹配、并且是具有“DynamicInfo()处理”属性的一个时间的27,090,000,作为DynamicInfo时间,提供到播放器控制模块212。

播放器控制模块212从解码控制模块214接收作为DynamicInfo时间的27,090,000,从在图55中示出的上部的表中的关于视频stream#0的两个pts_change_point和图55中示出的下部的表中的关于音频stream#2的三个pts_change_point中,检查与作为DynamicInfo时间的27,090,000匹配的pts_change_point,以及识别与和匹配27,090,000的pts_change_point成对的DynamicInfo(),即在图55中示出的下部的表中的关于音频流stream#2的第二DynamicInfo(),作为目标DynamicInfo()(在步骤S322中)。

当目标DynamicInfo()是视频流的DynamicInfo()时,播放器控制模块212提供在目标DynamicInfo()中描述的输出属性到图形处理模块219(在步骤S323中)。当目标DynamicInfo()是音频流的DynamicInfo()时,播放器控制模块212提供在目标DynamicInfo()中描述的输出属性到音频输出模块221(在步骤S323中)。

当图形处理模块219已经从播放器控制模块212接收输出属性时,图形处理模块219根据输出属性开始控制视频数据的输出(在步骤S324中)。

换句话说,图形处理模块219例如根据由从例如播放器控制模块212接收的输出属性表示的视频数据的纵横比(display_aspect_ratio(图15))和被连接到图1中示出的视频输出终端120的视频输出器件的纵横比,来转换被输出到视频输出模块220的视频数据的纵横比。

具体地,当视频输出器件的纵横比是例如16∶9,并且由输出属性表示的视频数据的纵横比是4∶3时,图形处理模块219对被输出到视频输出模块220的视频数据执行水平方向的挤压处理,放置使视频数据的左端和右端为黑色的数据到视频数据中,以及输出结果的视频数据。当视频输出器件的视频数据的纵横比是例如4∶3,并且由输出属性表示的视频数据的纵横比是16∶9时,图形处理模块219对被输出到视频输出模块220的视频数据执行垂直方向的挤压处理,放置使视频数据的上端和下端为黑色的数据到视频数据中,以及输出结果的视频数据。当视频输出器件的纵横比和作为输出属性的视频数据的纵横比相同,例如4∶3或16∶9时,图形处理模块219输出视频数据到视频输出模块220,而不对视频数据执行挤压处理。

通过在图55中示出的上部的表中关于由为0xE0的stream_id标识的视频流stream#0的pts_change_point和DynamicInfo()的两个集合,在作为视频流stream#0的再现开始时间的时间90,000之后,在时间54,090,000之前,从视频流#0,具有4∶3的纵横比的视频数据被获取。在时间54,090,000之后,具有16∶9的纵横比的视频数据从视频stream#0获取。

因此,假定被连接到图1中示出的视频输出终端120的视频输出器件的纵横比是例如4∶3,图形处理模块219在时间90,000之后在时间54,090,000之前,把从视频流stream#0获取的、具有4∶3的纵横比的视频数据,提供到纵横比是4∶3的视频输出器件。视频输出器件显示所接收的视频数据。

在时间54,090,000之后,图形处理模块219对具有1 6∶9的纵横比的视频数据执行垂直方向的挤压处理,并且转换具有16∶9纵横比的视频数据为具有4∶3纵横比、具有使视频数据上和下端为黑色的数据的视频信号。转换的视频信号被提供到视频输出器件。视频输出器件显示转换的视频数据。

当音频输出模块221从播放器控制模块212接收输出属性时,音频输出模块221根据输出属性,开始控制音频数据的输出(在步骤S324中)。

换句话说,音频输出模块221根据由从播放器控制模块212接收的输出属性表示的音频数据的信道分配(channel_assignment(图15))、以及根据通过用户操作遥控器而经由输入接口115(图1)从播放器控制模块212提供的音频输出模式,来处理从音频解码器控制模块217接收的音频数据,以及输出处理的音频数据到音频输出终端121(图1)。

具体地,当由输出属性表示的音频数据的信道分配是左信道是“主音频”数据而右信道是“副音频”数据的双重(双语)模式时,音频输出模块221根据从播放器控制模块212提供的音频输出模式,来处理从音频解码器控制模块217提供的音频数据,以及输出处理的音频数据到音频输出终端121。

换句话说,如果“主声音”已经被指定为音频输出模式,则音频输出模块221拷贝从音频解码器控制模块217接收的音频数据的左信道,作为音频数据的右信道,并且输出音频数据(“主音频”数据)的左右信道到音频输出终端121。如果“副音频”已经被指定为音频输出模式,则音频输出模块221拷贝从音频解码器控制模块217接收的音频数据的右信道,作为左信道,并且输出左右信道(“副音频”数据)到音频输出终端121。如果“主和副音频”两者已经被指定为音频输出模式,则音频输出模块221直接输出从音频解码器控制模块217接收的音频数据到音频输出终端121。

如果由输出属性表示的音频数据的信道分配是例如立体声模式,则不管已经指定什么音频输出模式,音频输出模块221直接输出从音频解码器控制模块217接收的音频数据到音频输出终端121。

通过在图55中示出的下部的表中,由是0xBD的stream_id和是0x00的private_stream_id标识的音频流stream#2的pts_change_point和DynamicInfo()的三个集合,在作为再现开始时间的时间90,000之后,在时间27,090,000之前,双重音频数据从音频流stream#2获取。另外,立体声音频数据在时间27,090,000之后,在时间32,490,000之前,从音频流stream#2被获取。另外,双重音频数据在时间32,490,000之后从音频流stream#2被获取。

因此,当“主音频”已经被指定为音频输出模式时,音频输出模块221拷贝在时间90,000之后时间27,090,000之前从音频流stream#2获取的双重音频数据的左信道的音频数据,作为音频数据的右信道。音频数据的左信道和右信道被输出到音频输出终端121。

在时间27,090,000之后在时间32,490,000之前从音频流stream#2获取的立体声音频数据被输出到音频输出终端121。

在时间32,490,000之后从音频流stream#2获取的双重音频数据的左信道被拷贝作为音频数据的右信道。音频数据的左信道和右信道被输出到音频输出终端121。

如上所述,在输出属性控制处理中,根据包含表示与剪辑流文件多路复用的每个基本流的再现时间的pts_change_point和表示每个基本流的输出属性的DynamicInfo()的n个集合(其中n是0或大于0的任意整数)的剪辑信息文件Clip()(图12),判断正被再现的基本流的再现时间是否与pts_change_point匹配。当正被再现的基本流的再现时间与pts_change_point匹配时,与pts_change_point成对的DynamicInfo()被识别。根据在DynamicInfo()中描述的输出属性,正被再现的基本流的输出被控制。因此,根据基本流的再现时间和输出属性,基本流的输出能够被控制。

[字幕显示控制处理]

接下来,参照图56中示出的流程图,控制与字幕流相对应的字幕数据的显示的字幕显示控制处理将被描述。

当PlayList()的再现被开始时,播放器控制模块212在步骤S341中初始化用于图形处理模块219的字幕数据显示模式。换句话说,播放器控制模块212控制图形处理模块219把字幕数据显示模式改变到缺省显示模式。在步骤S341中执行的显示模式的初始化与在图34中示出的步骤S127中执行的显示模式的初始化相对应。

在步骤S341之后,流程前进到步骤S342。在步骤S342中,播放器控制模块212判断用户是否已经通过遥控器输入新的字幕数据显示模式命令到输入接口115。

当在步骤S342中的判断结果表示新的显示模式命令已经被输入时,流程前进到步骤S343。在步骤S343中,播放器控制模块212判断字幕流是否正被再现。

当在步骤S343中的判断结果表示字幕流没有被再现时,流程回到步骤S342。

与之相比,当在步骤S343中的判断结果表示字幕流正被再现时,流程前进到步骤S345。在步骤S345中,播放器控制模块212判断新的显示模式命令是否是缺省显示模式命令。当在步骤S343中的判断结果表示新的显示模式命令是缺省显示模式命令时,流程回到步骤S341。在步骤S341中,如上所述,播放器控制模块212控制图形处理模块219以把字幕数据显示模式改变到缺省显示模式。

与之相比,当在步骤S345中的判断结果表示新的显示模式命令不是缺省显示模式命令,即新的显示模式命令是非缺省显示模式命令,例如字幕数据放大命令、字幕数据缩小命令、或亮度增加命令时,流程前进到步骤S346。在步骤S346中,播放器控制模块212获取与正被再现的字幕流与其多路复用的剪辑流文件相对应的剪辑信息文件Clip()(图12)的StaticInfo()(图14)的正被再现的字幕流的StaticInfo()。其后,流程前进到步骤S347。

在步骤S347中,播放器控制模块212判断在步骤S346中获取的StaticInfo()的configurable_flag。

当在步骤S347中的判断结果表示configurable_flag是0,其表示字幕数据显示模式不允许被改变时,流程前进到步骤S348。在步骤S348中,播放器控制模块212控制图形处理模块219以在输出视频数据叠放表示字幕数据显示模式不能被改变的消息。其后,流程回到步骤S342。在步骤S342中,错误信息被显示。

与之相比,当在步骤S347中的判断结果表示configurable_flag是1,其表示字幕数据显示模式允许被改变时,流程前进到步骤S349。在步骤S349中,播放器控制模块212把已经由用户通过输入接口115从遥控器输入的新的显示模式命令提供到图形处理模块219。其后,流程前进到步骤S350。

在步骤S350中,根据在步骤S349中已经从播放器控制模块212提供的显示模式命令,图形处理模块219开始对从字幕解码器控制模块218提供的字幕数据,执行放大处理、缩小处理、或亮度改变处理。其后,流程回到步骤S342。因此,根据已经由用户通过遥控器输入的显示模式命令,在显示大小内、在显示位置、或以显示颜色,字幕数据被显示。

与之相比,当在步骤S342中的判断结果表示新的显示模式命令没有被输入时,流程前进到步骤S351。在步骤S351中,播放器控制模块212判断PlayItem()是否已经被改变,如图40所描述。当在步骤S342中的判断结果表示PlayItem()没有被改变时,流程回到步骤S342。

与之相比,当在步骤S351中的判断结果表示PlayItem()已经被改变时,流程回到步骤S341。在步骤S341中,如上所述,播放器控制模块212控制图形处理模块219,以把字幕数据显示模式改变为缺省显示模式。换句话说,当PlayItem()已经被改变时,字幕数据显示模式被恢复到缺省显示模式。

如上所述,只有当字幕流的configurable_flag是1,其表示显示模式允许被改变时,用于字幕流的字幕数据显示模式能够与由用户通过遥控器输入的显示模式命令相对应地被改变。

因此,例如在图30A和图30B中示出的剪辑信息文件“00001.CLP”中,因为作为与剪辑流文件“00001.PS”多路复用的四个基本流的第三基本流的字幕流stream#2的configurable_flag是0,其表示显示模式不允许被改变,所以当字幕流stream#2正被显示时,即使用户操作遥控器以改变字幕显示模式,显示模式也不被改变。

与之相比,因为作为与剪辑流文件“00001.PS”多路复用的四个基本流的第四基本流的字幕流stream#3的configurable_flag是1,其表示显示模式允许被改变,所以当字幕流stream#3正被显示时,当用户操作遥控器改变字幕显示模式时,字幕的显示大小被改变。

现在,假定剪辑流文件“00001.PS”正根据图29中示出的第一PlayList#1的第一PlayItem#1而被再现。另外,在图30A和图30B中描述的剪辑信息文件“00001.CLP”中,假定与剪辑流文件“00001.PS”多路复用的四个基本流的第三和第四基本流是字幕流,并且第三和第四字幕流stream#2和stream#3的第三字幕流stream#2正在被再现。

当用户操作遥控器来输入字幕显示模式命令(在步骤S342中)时,显示模式命令从输入接口115(图1)被提供到播放器控制模块212。当播放器控制模块212接收显示模式命令时,播放器控制模块212在剪辑信息文件搜索与正被再现的字幕流相对应的StaticInfo()(图12)(在步骤S346中)。

换句话说,正被再现的字幕流是与剪辑流文件“00001.PS”多路复用的第三字幕流stream#2。播放器控制模块212在相应的剪辑信息文件“00001.CLP”搜索第三字幕流stream#2的StaticInfo()。

另外,播放器控制模块212判断在图30A和图30B中示出的第三字幕流stream#2的StaticInfo()中描述的为0的configurable_flag。因此,播放器控制模块212识别第三字幕流stream#2的显示模式不允许被改变。

在这种情况下,播放器控制模块212判断正被再现的字幕流与放大和缩小模式不相对应,并且控制图形处理模块219生成相应的错误信息(在步骤S348中),在视频数据叠放错误信息,并且输出叠放的视频数据。

在与剪辑流文件“00001.PS”多路复用的四个基本流的第三和第四字幕流stream#2和stream#3的第四字幕流stream#3正被再现的情况下,当播放器控制模块212接收已经由用户通过遥控器输入的显示模式命令时,播放器控制模块212在相应的剪辑信息文件“00001.CLP”搜索第四字幕流stream#3的StaticInfo()。

播放器控制模块212判断在图30A和图30B中示出的第四字幕流stream#3的StaticInfo()中描述的为1的configurable_flag(在步骤S347中)。因此,播放器控制模块212识别第四字幕流stream#3的显示模式已经允许被改变。

在这种情况下,播放器控制模块212判断正被再现的字幕流与放大模式或缩小模式相对应,以及把已经由用户通过遥控器输入的显示模式命令提供到图形处理模块219(在步骤S349中)。

因此,根据从播放器控制模块212接收的显示模式命令,图形处理模块219例如放大或者缩小从字幕解码器控制模块218接收的字幕数据,在从视频解码器控制模块212提供的视频数据叠放结果的字幕数据,以及输出叠放的视频数据。

当播放器控制模块212开始再现PlayList()的第一PlayItem()时,播放器控制模块212初始化图形处理模块219的字幕数据显示模式(在步骤S341中)。换句话说,播放器控制模块212控制图形处理模块219来把字幕数据显示模式改变为缺省显示模式。

当PlayItem()被改变时,播放器控制模块212初始化图形处理模块219的字幕数据显示模式(在步骤S341和S351中)。

当PlayItem()被改变时,播放器控制模块212根据新被再现的PlayItem(),来检查将被再现的新的字幕流的configurable_flag。当configurable_flag是0时,播放器控制模块212初始化图形处理模块219的字幕数据显示模式。当configurable_flag是1时,播放器控制模块212使图形处理模块219保持PlayItem()没有被改变的显示模式。

在图56中示出的字幕显示控制处理中,当新的显示模式命令由用户通过遥控器输入时,新的显示模式命令被提供到图形处理模块219(在步骤S349中)。显示模式命令可以被存储在例如用于构成存储器113(图1)的非易失性存储器中。被存储在非易失性存储器中的显示模式命令可以被提供到图形处理模块219。

在用户已经设置的显示模式命令被存储在非易失性存储器中,作为图1中示出的盘再现设备的初始化设置的情况下,当他或她用遥控器输入新的显示模式命令时,存储在非易失性存储器中的显示模式命令能够被替换为新的显示模式命令,并且存储在非易失性存储器中的新的显示模式命令能够被提供到图形处理模块219。在这种情况下,因为当完成上次的再现时非易失性存储器存储已经设置的显示模式命令,所以当下一PlayList()被再现时,字幕数据通过显示模式命令而被显示,而不需要通过遥控器输入显示命令。

在这种情况下,假定存储在非易失性存储器中的显示模式命令包括例如字幕流被放大或者缩小的放大率或者缩小率。

如上所述,在字幕显示控制处理中,根据表示显示模式是否允许从缺省显示模式改变的configurable_flag,判断字幕数据显示模式是否允许从缺省显示模式改变,所述缺省显示模式被包含在当包含在剪辑信息文件Clip()(图12)中的基本流正被再现时不被改变的字幕数据的StaticInfo()中。当正被再现的字幕数据的缺省显示模式允许被改变时,执行显示处理,例如用于字幕数据的放大处理、缩小处理、或者颜色改变处理。因此,字幕数据显示模式能够被控制。

[捕获控制处理]

接下来,参照图57中示出的流程图,控制与视频流相对应的视频数据的捕获的捕获控制处理将被描述。图57还示出描述第二次使用在捕获控制处理中已经被捕获的视频数据的背景/屏幕保护处理的流程图。

当视频数据捕获命令由用户从遥控器通过输入接口115(图1)被输入到播放器控制模块212时,捕获控制处理开始。

换句话说,在捕获控制处理中,在步骤S371中,播放器控制模块212判断视频流是否正被再现。当在步骤S371中的判断结果表示视频流没有被再现时,播放器控制模块212完成捕获控制处理。

与之相比,当在步骤S371中的判断结果表示视频流正被再现时,流程前进到步骤S372。播放器控制模块212从与正被再现的视频流相对应的PlayList()(图7)获取capture_enable_flag_PlayList(捕获使能标志播放列表),以及从与正被再现的视频流相对应的剪辑信息文件Clip()(图12)获取capture_enable_flag_Clip(捕获使能标志剪辑)。

如图7所述,PlayList()的capture_enable_flag_PlayList表示与根据PlayList()再现的视频流相对应的视频数据是否允许被第二次使用。另一方面,如图12所述,剪辑信息文件Clip()的capture_enable_flag_Clip表示与存储在与剪辑信息文件Clip()相对应的剪辑流文件中的视频流相对应的视频数据是否允许被第二次使用。

在步骤S372之后,流程前进到步骤S373。在步骤S373中,播放器控制模块212根据在步骤S373中已经被获取的capture_enable_flag_PlayList和capture_enable_flag_Clip,来判断当捕获命令从输入接口115(图1)输入时正被再现的视频数据的图像是否允许被捕获。

当在步骤S373中的判断结果表示当捕获命令从输入接口115输入时正被再现的视频数据的图像不允许被捕获,即在步骤S373中获取的capture_enable_flag_PlayList和capture_enable_flag_Clip的至少一个是0,其表示视频数据不允许被第二次使用时,流程前进到步骤S374。在步骤S374中,播放器控制模块212控制图形处理模块219在视频数据叠放表示视频数据不允许被捕获的错误信息,以及完成捕获控制处理。结果,错误信息被显示。

与之相比,当在步骤S373中的判断结果表示当捕获命令从输入接口115输入时正被再现的视频数据的图像允许被捕获,即已经在步骤S373中获取的capture_enable_flag_PlayList和capture_enable_flag_Clip两者都是1,其表示视频数据允许被第二次使用时,流程前进到步骤S375。在步骤S375中,播放器控制模块212把当捕获命令从输入接口115输入时正被再现的视频数据的捕获命令提供到图形处理模块219。其后,流程前进到步骤S376。

在步骤S376中,图形处理模块219根据从播放器控制模块212接收的捕获命令而从视频解码器控制模块216捕获视频数据的图像,存储图像到存储器113(图1)中,以及完成捕获控制处理。当capture_enable_flag(捕获使能标志)由多个位组成,并且它们的使用条件被限制时,此时,相应的操作被执行。换句话说,当捕获的图像的大小被限制时,其大小被缩小的图像被捕获。当使用的应用被限制时,表示该限制的标志也被记录。

如上所述,在捕获控制处理中,与当用户输入捕获命令时正被再现的视频流相对应的PlayList()(图7)和剪辑信息文件Clip()(图12)的capture_enable_flag_PlayList和capture_enable_flag_Clip被进行与(AND)运算。当与运算结果是1,即全部capture_enable_flag_PlayList和capture_enable_flag_Clip是1,其表示视频数据允许被第二次使用时,判断视频数据能够被第二次使用。结果,视频数据被捕获。

当视频流与图29中示出的第一PlayList#0的第一PlayItem#0相对应地被再现,即与剪辑流文件“00001.PS”多路复用的视频流正被再现时,如果用户输入捕获命令,则因为第一PlayList#0的capture_enable_flag_PlayList是1,并且在图30A和图30B中示出的、与由第一PlayItem#0再现的剪辑流文件“00001.PS”相对应的剪辑信息文件“00001.CLP”的capture_enable_flag_Clip是1,所以判断正被再现的视频数据(与和剪辑流文件“00001.PS”多路复用的视频流相对应的视频数据)能够被第二次使用,以及视频数据被捕获。

在视频流根据图29中示出的第一PlayList#0的第二PlayItem#1而正被再现,即与剪辑流文件“00002.PS”多路复用的视频流正被再现地情况下,当用户输入捕获命令时,因为第一PlayList#0的capture_enable_flag_PlayList是1,并且图30A和图30B中示出的、与根据第二PlayItem#1再现的剪辑流文件“00002.PS”相对应的剪辑信息文件“00002.CLP”的capture_enable_flag_Clip是0,所以判断正被再现的视频数据(与和剪辑流文件“00002.PS”多路复用的视频流相对应的视频数据)不能被第二次使用,以及视频数据不被捕获。

在视频流根据图29中示出的第二PlayList#1的PlayItem#0而正被再现,即与剪辑流文件“00003.PS”多路复用的视频流正被再现的情况下,当用户输入捕获命令时,因为第二PlayList#1的capture_enable_flag_PlayList是0,并且图30A和图30B中示出的、与和第二PlayItem#1的PlayItem#0相对应地被再现的剪辑流文件“00003.PS”相对应的剪辑信息文件“00003.CLP”的capture_enable_flag_Clip是1,所以判断正被再现的视频数据(与和剪辑流文件“00003.PS”多路复用的视频流相对应的视频数据)不允许被第二次使用。因此,视频数据不被捕获。

在这种情况下,当已经检查出第二PlayList#1的capture_enable_flag_PlayList是0时,能够判断视频数据不允许被第二次使用。因此,图30A和图30B中示出的、与和第二PlayList#1的PlayItem#0相对应地被再现的剪辑流文件“00003.PS”相对应的剪辑信息文件“00003.CLP”的capture_enable_flag_Clip的检查能够被省略。

在捕获控制处理中捕获、并存储在存储器113中的图像在背景/屏幕保护处理中能够被第二次使用。

例如当播放器控制模块212操作时,背景/屏幕保护处理被执行,但是基本流不被再现,即盘101没有被插入到盘驱动器102(图1)中或基本流已经被再现。

在背景/屏幕保护处理中,在步骤S380中,播放器控制模块212控制图形处理模块219在捕获控制处理中显示存储在存储器113中的图像。在播放器控制模块212的控制下,在捕获控制处理中,图形处理模块219显示存储在存储器113中的图像。

当图形处理模块219把存储在存储器113中的图像显示为静止图像时,所谓的墙纸(wall paper)被完成。当图像在它正被放大、缩小、以及以预定间隔移动时被显示时,屏幕保护完成。在捕获控制处理中显示存储在存储器113中的图像的背景/屏幕保护处理能够由另一独立应用,而不是播放器控制模块212执行。

当表示限制的标志被添加到存储在存储器133中的图像时,显示的图像根据标志被限制。

如上所述,capture_enable_flag_PlayList和capture_enable_flag_Clip,其表示正被再现的视频数据是否允许被第二次使用,与例如大于视频存取单元的PlayList()或PlayItem()相对应地被获取。根据capture_enable_flag_PlayList和capture_enable_flag_Clip,判断正被再现的视频数据是否允许被第二次使用。当判断结果表示正被再现的视频数据允许被第二次使用时,正被再现的视频数据被捕获,以及使用捕获的视频数据的背景/屏幕保护处理被执行。因此,视频数据的第二次使用能够被控制。

在图57中示出的捕获控制处理中,PlayList()(图7)包含capture_enable_flag_PlayList,以及与根据PlayItem()而再现的剪辑流文件相对应的剪辑信息文件Clip()(图12)包含capture_enable_flag_Clip。通过capture_enable_flag_PlayList和capture_enable_flag_Clip两者,判断视频数据是否允许被第二次使用。或者,当PlayList()(图7)包含capture_enable_flag_PlayList,或者与根据PlayItem()而再现的剪辑流文件相对应的剪辑信息文件Clip()(图12)包含capture_enable_flag_Clip时,即通过capture_enable_flag_PlayList或者capture_enable_flag_Clip,能够判断视频数据是否允许被第二次使用。

在图57中示出的捕获控制处理中,在步骤S376,图形处理模块219根据从播放器控制模块212接收的捕获命令,从视频解码器控制模块216捕获视频数据,即仅仅一个图像。或者,图形处理模块219可以捕获多个图像。换句话说,视频解码器控制模块216以时间序列输出的多个图像能够被捕获。在这种情况下,每次捕获的图像的数目能够被预先指定。或者,capture_enable_flag_PlayList和capture_enable_flag_Clip的位能够被扩展,以用于表示每次能够捕获的图像数目的信息。

在上述情况下,表示视频数据是否允许被第二次使用的使用许可信息,其是capture_enable_flag_PlayList和capture_enable_flag_Clip,在PlayList()和剪辑信息文件Clip()中描述。通过使用许可信息,判断根据PlayList()再现的全部的视频数据以及和与和剪辑信息文件Clip()相对应的剪辑流文件多路复用的视频流相对应的全部视频数据,是否允许被第二次使用。使用许可信息能够描述任意单位的视频数据。通过使用许可信息,能够判断任意单位的视频数据是否允许被第二次使用。

换句话说,图58示出包含使用许可信息的private_stream2_PES_payload()的句法。图59示出包含使用许可信息的au_information()的句法。

除video_stream_id紧接作为使用许可信息的capture_enable_flag_ps2(捕获使能标志ps2)之外,在图58中示出的private_stream2_PES_payload()与在图26中示出的相同。同样地,除pic_struct_copy紧接作为使用许可信息的capture_enable_flag AU(捕获使能标志AU)之外,图59中示出的au_information()与图27中示出的相同。

包含在图58中示出的private_stream2_PES_payload()中的capture_enable_flag_ps2表示,在包含private_stream2_PES_payload()的private_stream_2的PES_packet()之后、在下一private_straem_2的PES_packet()之前的视频流的视频数据是否允许被第二次使用。因此,通过包含在图58中示出的private_stream2_PES_payload()中的capture_enable_flag_ps2,能够判断在具体解码开始可能点之后、在下一解码开始可能点之前的视频数据是否允许被第二次使用。

另外,包含在图59中示出的au_information()中的capture_enable_flag_AU表示与capture_enable_flag_AU相对应的视频存取单元的视频数据是否允许被第二次使用。因此,通过包含在图59中示出的au_information()中的capture_enable_flag_AU,能够判断每个视频存取单元的视频数据,即每个图像,是否允许被第二次使用。

作为PlayList()(图7)的使用许可信息的capture_enable_flag_PlayList、作为剪辑信息文件Clip()(图12)的使用许可信息的capture_enable_flag_Clip、作为private_stream2_PES_payload()(图58)的使用许可信息的capture_enable_flag_ps2、以及作为au_information()(图59)的使用许可信息的capture_enable_flag_AU的至少两个能够被冗余地使用。在这种情况下,通过被冗余地使用的至少两种使用许可信息被与运算的结果,能够判断视频数据的图像是否允许被第二次使用。

如在图45中示出的步骤S211中所述,缓冲器控制模块215(图5)的视频读取功能部分233在存储在缓冲器215A的程序流中搜索包含图26或者图58中示出的private_stream_2_PES_payload()的private_stream_2的PES_packet(),该private_stream_2_PES_payload()包含图59中示出的au_information()。因此,当图58中示出的、包含capture_enable_flag_ps2的private_stream2_PES_payload()、以及图59中示出的、包含capture_enable_flag_AU的au_information()被使用时,播放器控制模块212需要向视频读取功能部分233询问capture_enable_flag_ps2和capture_enable_flag_AU,以判断视频数据是否允许被第二次使用。

接下来,参照图60,盘记录设备的硬件结构将被描述。

图60中示出的盘记录设备能够用于例如盘播放器、游戏器件、汽车导航系统、等等。

在图60中示出的盘记录设备中,盘410是例如诸如DVD、磁光盘的光盘、或者磁盘。盘410能够记录内容数据,诸如视频数据、音频数据、和字幕数据。另外,盘410能够记录内容数据。当各种类型的数据被记录在盘410上时,它能被用作图1中示出的盘101。

视频输入终端400A与诸如图像捕获器件(未示出)的视频输入单元相连。视频输入终端400A把从视频输入单元提供的视频数据提供到视频输入接口401。音频输入终端400B与诸如麦克风和发大器(未示出)的音频输入单元相连。音频输入终端400B提供输入音频数据到音频输入接口402。

视频输入接口401对输入视频数据执行希望的处理,以及通过总线411提供结果的视频数据到视频编码器403。音频输入接口402对输入音频数据执行希望的处理,以及通过总线411提供结果的音频数据到音频编码器404。

视频编码器403编码从CPU 405和视频输入接口401提供的视频数据,以及使盘驱动器409通过总线411把结果的压缩编码数据(编码视频数据,例如,MPEG2视频流)记录到盘410上。

音频编码器404编码从CPU 405和音频输入接口402提供的音频数据,以及使盘驱动器409通过总线411把结果的压缩编码数据(编码音频数据,例如,MPEG2音频流)记录到盘410上。

CPU 405和存储器406用于构成计算机系统。换句话说,CPU 405执行存储在存储器406中的程序,控制整个盘记录设备,并且执行将在后文描述的各种类型的处理。存储器406存储CPU 405执行的程序。另外,存储器406临时储存CPU 405需要通过其操作的数据。存储器406能够仅仅包括非易失性存储器、或者易失性存储器和非易失性存储器的组合。当图60中示出的盘记录设备具有记录CPU 405执行的程序的硬盘,并且该程序被记录(安装)在该硬盘上时,存储器406能够仅仅包括易失性存储器。

CPU 405执行的程序能够被预存储在作为内置于盘记录设备的记录介质的存储器406中。

作为替代,程序能够被临时或者永久地记录在盘驱动器409、除盘驱动器409之外的软盘、或者诸如CD-ROM(光盘只读存储器)、MO(磁光)盘、磁盘、或者记忆卡的可拆卸记录介质上。这种可拆卸的记录介质能够作为所谓的封装软件而被提供。

另外,程序能够被预存储在存储器406中。作为替代,程序能够从这种可拆卸的记录介质被安装到盘记录设备。作为替代,程序能够通过用于数字卫星广播的卫星从下载站点被无线传输到盘记录设备。作为替代,程序能够经由电缆通过诸如LAN(局域网)或者因特网的网络被传输到盘记录设备。盘记录设备能够通过输入接口408接收程序,并且安装它到内置的存储器406。

另外,程序能够由一个CPU处理。作为替代,程序可以由多个CPU分布地处理。

驱动器接口407在CPU 405的控制下控制盘驱动器409。因此,驱动器接口407通过总线411把从CPU 405、存储器406、视频编码器403、和音频编码器404提供的数据提供到盘驱动器409,并且使盘驱动器409记录数据到盘410上。作为替代,驱动器接口407从盘410读取数据,并且通过总线411提供数据到CPU 405和存储器406。

输入接口408根据用户的键(按钮)操作和远程命令器(遥控命令器)来接收信号,以及通过总线411提供信号到CPU 405。另外,输入接口408用作通信接口,例如调制解调器(包括ADSL(非对称数字用户线)调制解调器或者NIC(网络接口卡))。

视频数据和音频数据能够通过电缆、或者无线地,分别从视频输入单元和音频输入单元提供。

盘410能够被加载到盘驱动器409,以及从盘驱动器409卸载。盘驱动器409具有内置接口(未示出)。盘驱动器409通过接口与驱动器接口407相连。盘驱动器409驱动加载的盘410,以及根据例如从驱动器接口407接收的记录命令,来对盘410上的数据执行例如记录处理。

当必要时,记录在盘410上的数据(记录数据)包括计算机能够执行的程序。在这个实施例中,作为记录介质,作为盘形记录介质的盘410被使用。作为替代,作为记录介质,半导体存储器或者带形记录介质可以被使用。

连接到总线411的是CPU(中央处理单元)405、存储器406、驱动器接口407、输入接口408、视频编码器403、音频编码器404、视频输入接口401、以及音频输入接口402。

接下来,参照图61,通过实施根据本发明的数据编码方法的盘记录设备完成的功能将被描述。在该图所示的盘记录设备完成的功能中,音频编码器404压缩编码已经通过音频输入终端400B和音频输入接口402输入的音频信号,以及输出结果的信号到多路复用单元421。

视频编码器403压缩编码已经通过视频输入终端400A和视频输入接口401输入的视频信号,以及输出结果的信号到多路复用单元421。

多路复用单元421对输入MPEG2视频流和输入MPEG2音频流分组化,以及在时分的基础上多路复用它们,如参照图18A和图18B至图27所述。多路复用单元421从流中选择内部图像,以及以每秒大约两次的频率把图26中示出的private_stream_2的PES_packet()插入到内部图像里。

多路复用单元421把多路复用的流通过FIFO 422输出到RAPI重写单元424,以及到RAPI信息提取单元423。RAPI信息提取单元423检测多路复用的流的视频流中的private_stream_2的PES_packet()的开始位置、紧接private_stream_2的PES_packet()的内部图像的时间戳(PTS)的值、以及内部图像、紧接内部图像的第二、第三、和第四参照图像的结束位置,并且存储它们。

在这种情况下,RAPI表示private_stream_2的PES_packet()。

RAPI信息提取单元423把检测的内部图像和紧接内部图像的第二、第三、以及第四参照图像的结束位置输出到RAPI重写单元424。RAPI重写单元424盖写图26中示出的1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture的字段,作为RAPI的信息,记录顶部、第二、第三、和第四参照图像的结束位置,作为以扇区为单位的数值,以及存储它们到输出服务器426中。

在对所有多路复用的流的处理完成之后,控制器425获取由RAPI信息提取单元423已经提取和存储、并在多路复用流中已经被多路复用的所有RAPI的开始位置、和紧接每个RAPI的内部图像的结束位置、以及接续内部图像的第二、第三、和第四参照图像的结束位置。

控制器425通过输入信息来创建参照图16所描述的EP_map()。

控制器425用每个RAPI的地址、紧接每个RAPI的内部图像的PTS、以及内部图像和接续内部图像的第二、第三、和第四图像的结束位置之一,来创建剪辑信息文件的EP_map(),以及存储EP_map()到输出服务器426。

接下来,参照图62中示出的流程图,EP_map()创建处理将被描述。

在步骤S381中,视频编码器403压缩编码已经通过视频输入终端400A和视频输入接口401输入的视频信号,以及输出结果的信号到多路复用单元421。音频编码器404压缩编码已经通过音频输入终端400B和音频输入接口402输入的音频信号,以及输出结果的信号到多路复用单元421。在这种情况下,从音频编码器404输出的流是MPEG2音频流。同样地,从视频编码器403输出的流是MPEG2视频流。

在步骤S382中,多路复用单元421对输入MPEG2视频流和MPEG2音频流分组化,以及如参照图18A和图18B至图27所述在时分的基础上多路复用(分组化)它们,从流中选择内部图像,以及以每秒大约两次的频率把图26中示出的private_stream_2的PES_packet()插入到其中。在这个示例中,private_stream_2的PES_packet()表示它之后紧随不需要参照另一图像而能够被解码的视频的内部图像。此时,内部图像通常具有时间戳(PTS/DTS)。

此时,数据没有被记录在参照图26描述的1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture的字段里。另外,字幕流(未示出)可以被输入到多路复用单元421,以便它与视频流和音频流多路复用。

在步骤S383中,多路复用单元421通过FIFO 422输出多路复用流到RAPI重写单元424以及还到RAPI信息提取单元423。RAPI信息提取单元423从多路复用流的视频流中检测private_stream_2的PES_packet()的开始位置、紧接private_stream_2的PES_packet()的内部图像的时间戳(PTS)的值、以及内部图像和接续内部图像的第二、第三、和第四参照图像的结束位置,并且存储它们。

另外,RAPI信息提取单元423把检测的内部图像和接续内部图像的第二、第三、和第四参照图像的结束位置输出到RAPI重写单元424。RAPI重写单元424重写图26中示出的1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture的字段,作为RAPI信息,记录顶部、第二、第三、和第四参照图像的结束位置,作为以扇区为单位的值,以及存储它们到输出服务器426。

在步骤S385中,在RAPI信息提取单元423已经被提取和存储、并已被多路复用为多路复用流的RAPI的开始位置、和紧接每个RAPI的内部图像的结束位置、以及接续内部图像的第二、第三、和第四参照图像的结束位置被输入到控制器425。

控制器425通过输入信息创建参照图16描述的EP_map()。在这个示例中,假定EP_map()仅仅包含视频流的信息。视频的EP_map()表示在流中所有RAPI的位置,即private_stream_2的所有PES_packet()的位置。通过从RAPI信息提取单元423被输入到控制器425的信息,这个信息被创建。

更具体地,控制器425用每个RAPI的地址、紧接每个RAPI的内部图像的PTS、以及内部图像和接续内部图像的第二、第三、和第四图像的结束位置之一,来创建剪辑信息文件的EP_map(),以及存储EP_map()到输出服务器426。换句话说,控制器425把接近四个参照图像(1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture)的结束位置的预定扇区计数(在编码处理中每次能够被读取的扇区计数)的值拷贝至N-th_Ref_picture_copy。

在步骤S386中,控制器425基于N-th_Ref_picture_copy而决定index_minus1,并且记录它到盘410上。在这个示例中,存储在输出服务器426中的流数据和数据库文件通过驱动器接口407被提供到盘驱动器409,以及被记录到盘410上。

在上述处理中,如图31所示EP_map()被创建。

[使用1stRef_Picture、2ndRef_Picture、3rdRef_Picture、和4thRef_Picture]

接下来,参照图63中示出的流程图,使用图31中示出的EP_map()的快进再现处理将被描述。

假定用户(未示出)发布快进命令到视频内容再现程序210。播放器控制模块212从正被再现的流的剪辑信息文件中选择在EP_map()中注册的一个再现开始可能位置(在步骤S391中),以及决定从在EP_map中描述的RPN_EP_start,N-th_Ref_Picture_copy的大小的数据将被读取(在步骤S392中)。播放器控制模块212向内容数据提供模块213通知这个信息,以及命令解码控制模块214执行快进再现。

使用操作系统201的功能,内容数据提供模块213读取包含其中将被再现的基本流已经被多路复用的程序流的剪辑流文件,以及提供剪辑流文件到缓冲器控制模块215(在步骤S393中)。因为文件名等等已经被指定,所以它们不再次指定。不同于再现被开始的情况,读取命令与读取的开始地址和将被传输的数据的大小一起被发布。

视频读取功能部分233去多路复用已经被输入到缓冲器控制模块215的多路复用的数据(在步骤S394中),以及仅仅提供视频流到视频解码器控制模块216。在这种情况下,因为快进再现处理被执行,所以音频解码器控制模块217、字幕解码器控制模块218、音频读取功能部分234、以及字幕读取功能部分233不操作。

输入数据包含一个参照图像或者四个或更少的参照图像。在快进再现处理中,参照图64中示出的流程图所述,基于在入口点选择处理(在步骤S395中)中选择的入口点,仅仅参照图像被解码和显示。然而,index_N_minus1已经被发送到解码控制模块214。因此,解码控制模块214解码参照图像的指定数,发送解码图像到下游部分,以及使它显示参照图像(在步骤S396中)。

在参照图像已经被显示之后,播放器控制模块212选择接下来将显示的EP_map()的入口点,重复上述处理,以及输出以快进再现模式将被再现的图像(在步骤S397中)。

当在将被显示的EP_map()中作为跳转目的地的入口点被选择时,index_N_minus1被使用。接下来,在这种情况下使用index_N_minus1的方法将被描述。如先前所述,在N_th_Ref_Picture_copy被读取之后,index_N_minus1表示包含在数据中的参照图像的数目。在图31中示出的数据的示例中,因为第一和第三入口点每个的index_N_minuml是0,所以内部图像数是一个。因为第二和第四入口点每个的index_N_minus1是3,所以四个参照图像被包含。

当两个或更多参照图像被输出时,以快进再现模式再现的图像的主观质量趋向于改进。然而,输出多个参照图像,需要增加将被读取的数据量。因此,更新频率变低。换句话说,在它们之间存在折中的关系。因此,当播放器控制模块212在接下来将被显示的EP_map()中选择入口点时,播放器控制模块212评估index_N_minus1的值。

换句话说,当快进再现的速度高时,虽然在EP_map()中入口点的间隔剔除(thin-out)间隔变大,但是index_N_minus1大(即,主观图像质量高)的入口点被优选地选择。与之相比,当快进再现速度低时,index_N_minus1小的入口点被选择。

在上述index_N-minus1决定算法中,N-th_Ref_picture_copy接近于“30”的入口点被选择。换句话说,在如此算法下创建的EP_map()中,当数据根据N-th_Ref_picture_copy被读取时,数据读取量变得接近于“30”扇区。当数据读取速度占主导时,重要的是读取时间恒定。因此,使用如此的入口点选择方法是有效的。

接下来,参照图64中示出的流程图,在快进再现模式中的入口点选择处理将被描述。

在步骤S401中,播放器控制模块212判断快进再现模式是高速模式还是低速模式。当判断结果表示快进再现模式是高速模式时,流程前进到步骤S402。与之相比,当判断结果表示快进再现模式是低速模式时,流程前进到步骤S411。

<低速快进再现的选择的描述>

在步骤S402中,因为快进再现模式是低速模式,所以播放器控制模块212把将被选择的入口点编号(当前入口(N))从上次的入口加2(入口编号+=2)。在步骤S403中,播放器控制模块212从当前入口N读取index_N_minus1,前一点入口(N-1),和后一点入口(N+1)。

在步骤S404中,播放器控制模块212判断index_N_minus(N)的值,即第N入口点的index_N_minus1的值是否是0或者1。当在步骤S404中的index_N_minus1的值是0或者1时,流程前进到步骤S405。在步骤S405中,播放器控制模块212选择第N入口点,并完成处理。与之相比,当在步骤S404中的index_N_minus1的值既不是0也不是1时,流程前进到步骤S406。

在步骤S404中,播放器控制模块212判断inde_N_minus(N+1)的值,即第(N+1)入口点的index_N_minus1的值,是否是0或者1。在步骤S406中,当inde_N_minus(N+1)是0或者1时,流程前进到步骤S407。在步骤S407中,播放器控制模块212选择第(N+1)入口点,以及完成处理。与之相比,当在步骤S406中的inde_N_minus(N+1)既不是0也不是1时,流程前进到步骤S408。

在步骤S408中,播放器控制模块212判断inde_N_minus(N-1)的值,即第(N-1)入口点的index_N_minus1的值,是否是0或者1。当在步骤S408中的index_N_minus1的值是0或者1时,流程前进到步骤S409。在步骤S409中,播放器控制模块212选择第(N-1)入口点,以及完成处理。与之相比,当在步骤S408中的index_N_minus1的值既不是0也不是1时,流程前进到步骤S410。

既然很明显所有入口点N、(N+1)、和(N-1)的index_N_minus1的值是0或者1,在步骤S410中,播放器控制模块212选择第N入口点,以及完成处理。

<高速快进再现的选择的描述>

既然快进再现模式是高速模式,因此在步骤S411中,播放器控制模块212把将被选择的入口点编号(当前入口)(N)从上次的入口点加5(相应的入口编号+=5)。在步骤S412中,播放器控制模块212从当前入口N、前一点入口1(N-1)、和后一点入口(N+1)读取index_N_minus1。

在步骤S413中,播放器控制模块212判断inde_N_minus(N)的值,即第N入口点的index_N_minus1的值是否是3或者2。当在步骤S413中的第N入口点的index_N_minus1的值是3或者2时,流程前进到步骤S414。在步骤S414中,播放器控制模块212选择第N入口点,并完成处理。与之相比,当在步骤S413中第N入口的index_N_minus1的值既不是3也不是2时,流程前进到步骤S415。

在步骤S415中,播放器控制模块212判断inde_N_minus(N+1)的值,即第(N+1)入口点的index_N_minus1的值是否是3或者2。当在步骤S415中第(N+1)入口点的index_N_minus1的值是3或者2时,流程前进到步骤S416。在步骤S416中,播放器控制模块212选择第(N+1)入口点,并完成处理。与之相比,当在步骤S415中第(N+1)入口点的index_N_minus1的值既不是3也不是2时,流程前进到步骤S417。

在步骤S417中,播放器控制模块212判断inde_N_minus(N-1)的值,即第(N-1)入口点的index_N_minus1的值是否是3或者2。当在步骤S417中第(N-1)入口点的index_N_minus1的值是3或者2时,流程前进到步骤S418。在步骤S418中,播放器控制模块212选择第(N-1)入口点,并完成处理。与之相比,当在步骤S417中第(N-1)入口点的index_N_minus1的值既不是3也不是2时,流程前进到步骤S419。

既然很明显所有入口N、(N+1)、和(N-1)的index_N_minus1的值既不是3也不是2,因此在步骤S419中,播放器控制模块212选择第N入口点,并完成处理。

换句话说,当快进再现速度高时,虽然在EP_map()中入口点的间隔剔除间隔变大,但是index_N_minus1大(即主观图像质量高)的入口点被优选地选择。与之相比,当快进再现速度低时,index_N_minus1小的入口点被选择。

在上述处理中,快进再现能够以高速执行,而不恶化主观图像质量。当快进再现以低速执行时,因为快进再现用比高速情况下更多的参照图像来执行,所以再现图像的图像质量能够被防止降低。

在上述示例中,假定在再现处理中被读取的入口点的信息通常恒定。在这种情况下,在具有高处理性能的盘再现设备中,因为多个入口点被读取,所以再现图像的图像质量被改进。然而,如果不具有高处理性能的盘再现设备读取入口点的大量信息,则处理速度可能降低。因此,优先级被设置给将被读取的入口点的信息。具有高处理性能的盘再现设备可以使用所有入口点的信息,而具有低处理性能的盘再现设备只可以读取具有高优先级的入口点。

图65是描述设置优先级到入口点的盘记录设备的功能的功能方框图。在图65中示出的盘记录设备中,类似于图61中示出的盘记录设备的那些的功能,将用类似的参考标号表示,以及它们的描述将被省略。

字幕编码器443从字幕素材服务器442读取字幕素材,压缩编码该素材,以及写入结果的数据到字幕数据服务器444。不同于视频数据和音频数据,字幕数据间断地存在于时间轴上。因此,记录在字幕素材服务器442中的字幕素材的显示开始时间和显示持续时间、以及记录在字幕数据服务器444中的字幕数据的那些被作为字幕定时信息445提供。

虽然多路复用单元441基本上具有与图61中示出的多路复用单元421相同的功能,但是前者还把字幕数据和字幕定时信息与视频数据和音频数据多路复用。换句话说,多路复用单元441不但读取输入MPEG2视频流和MPEG2音频流,而且读取从字幕数据服务器444提供的字幕数据和字幕定时信息445,以及如参照图18A和图18B至图27所述,在时分的基础上多路复用它们。

多路复用单元441从流中选择内部图像,以及以每秒大约两次的频率往其中插入图23中示出的private_stream_2的PES_packet()。在这个示例中,private_stream_2的PES_packet()表示它之后紧随不需要参照另一图像而能够被解码的视频的内部图像。此时,内部图像通常具有时间戳(PTS/DTS)。

字幕数据的所有存取单元通常具有时间戳。

此时,数据没有被记录在参照图26描述的1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture的字段中。另外,字幕流(未示出)可以被输入到多路复用单元441,以便它与视频流和音频流多路复用。

多路复用单元441通过FIFO 422提供多路复用流到RAPI重写单元424,以及还到RAPI信息提取单元423。RAPI信息提取单元423从多路复用流提取视频流的信息和字幕流的信息,以及存储所提取的流。换句话说,RAPI信息提取单元423从视频流中检测private_stream_2的PES_packet()的开始位置、紧接private_stream_2的PES_packet()的内部图像的时间戳(PTS)的值、以及内部图像和接续内部图像的第二、第三、和第四参照图像的结束位置,并且存储它们。另外,RAPI信息提取单元423从字幕流中检测所有字幕存取单元的开始位置和时间戳。

控制器446用输入信息创建如图66所示的EP_map()。假定EP_map()包含关于视频流和字幕流的信息。在EP_map()中关于视频的主信息是所有RAPI即private_stream_2的PES_packet()的位置、和紧接private_stream_2的PES_packet()的内部图像的时间戳。用从RAPI信息提取单元423输入到控制器446的信息,这些信息能够被创建。在EP_map()中关于字幕的主信息是字幕存取单元的位置和时间戳。用从RAPI信息提取单元423输入到控制器446的信息,这些信息也能够被创建。

控制器446用从RAPI信息提取单元423输入的数据,在EP_map()的信息中创建没有被决定的priority_flag(优先级标志)。换句话说,控制器446评估视频流的所有入口点(RAPI的入口点)和字幕存取单元的时间戳,以及为它们每个设置priority_flag(其将在后文被描述)。为了设置priority_flag,章场景改变信息447已被输入到控制器446。

[EP_map的描述]

接下来,参照图66,优先级被设置给文件时的EP_map()将被描述。如图66所示,number_of_EP_entries后面跟随:priority_flag(2位),作为由紧接number_of_EP_entries的stream_id和private_stream_id标识的基本流的解码开始可能点的信息;reserved_for_future_use(14位);PTS_EP_start(32位);和RPN_EP_start(32位)。priority_flag、reserved_for_future_use、PTS_EP_start(32位)、以及RPN_EP_start(32位)被重复由number_of_EP_entries表示的次数。

priority_flag具有如图67所示的意义。换句话说,对于视频流的入口,当priority_flag的值是3时,它表示入口与章的起首相对应。当priority_flag的值是2时,它表示该入口与除了上述入口之外的一分钟间隔的重要场景改变相对应。当priority_flag的值是1时,它表示这个入口与除了上述入口之外的三秒间隔的场景改变相对应。假定其它入口的priority_flag的值是0。

对于字幕流的入口,当priority_flag的值是3时,它表示入口与章的起首相对应。当priority_flag的值是2时,它表示入口与除了上述入口之外的重要场景改变相对应。当priority_flag的值是1时,它表示这个入口与除了上述入口之外的场景改变相对应。假定其它入口的priority_flag的值是0。

当这个剪辑是两小时电影,以及它包含每秒两个随机接入点时,入口的总数等于14400(=2小时×3600秒×2次)。当章数是大约几十时,priority_flag=3的入口的数目变成几十,与章的数目相同。因为重要场景改变(priority_flag=2)的数目和其它场景改变(priority_flag=1)的数目取决于内容,因此,虽然不能一概而论,但是假定priority_flag=3或者2的入口数目大约是200,以及priority_flag=3,2,或者1的入口数目大约是2400,以及入口的总数是14400。在这种情况下,还假定priority_flag=2和1的入口的总数是1000。在这种情况下,假定当仅仅priority_flag=3,2,以及1的入口被读取时,存储量变成大约1000/14,4000,其是在所有的入口被读取的情况下的1/14。另外,在这种情况下,因为一个入口是10字节,所以对于一个视频流,存储器的容量能够被降低10字节×(14400-1000)=120134千字节。

另外,可以说两个小时电影包含1000至2000字幕句子。与之相比,存在几十章。因此,假定仅仅priority_flag=3的入口被读取,存储器容量能够被减少几十/1000或者几十/2000。因为字幕流的数目大于视频流的数目,所以减少存储器容量的效果变得充分。

在这个示例中,标志由值3,2,1,和0表示。作为替代,认为它们可以用各自的位表示,以及相应的位可以被设置为1。换句话说,这个字段可以包括三位。当最高有效位是1时,它可以表示这个入口是章的顶部。当下一位是1时,它可以表示这个入口是一分钟间隔的入口。当最低有效位是1时,它可以表示这个入口是五秒间隔的入口。当所有的位是0时,它可以定义这个入口不包括在这三类内。

对于字幕流,当入口的priority_flag的值是1时,它表示入口与章的顶部相对应。在这种情况下,假定其它入口的priority_flag的值是0。

接下来,参照图68中示出的流程图,prioirty_flag设置处理将被描述。

在步骤S441中,控制器446判断视频的当前入口是否是章的起首,即正被评估的入口是否与章场景改变信息447的章的时间相对应。当当前入口与章的时间相对应时,定义差值是0。当当前入口与章的时间相对应时,流程前进到步骤S442。在步骤S442中,控制器446为入口设置priority_flag=3,以及存储它到输出服务器。

当在步骤S441中的判断结果表示当前入口不是视频的章的起首时,流程前进到步骤S443。在步骤S443中,控制器446判断当前入口是否在视频的重要场景改变的位置,即,下一将被评估的入口在从章场景改变信息447中的“重要场景改变”的起首开始一分钟间隔的位置。当在步骤S443中的判断结果表示下一将被评估的入口在从“重要场景改变”的起首开始一分钟间隔的位置时,流程前进到步骤S444。在步骤S444中,控制器446为当前入口设置priority_flag=2。

当在步骤S443中的判断结果表示当前入口不是重要的场景改变时,流程前进到步骤S445。在步骤S445中,控制器446判断当前入口是否是视频的规律的场景改变,即下一将被评估的入口是否在从章场景改变信息447中的“场景改变”的起首开始三秒间隔的位置。当在步骤S445中的判断结果表示下一将被评估的入口在从“场景改变”的起首开始三秒间隔的位置时,流程前进到步骤S446。在步骤S446中,控制器446为当前入口设置priority_flag=1。

当在步骤S445中的判断结果表示当前入口不是规律的场景改变,即当前入口不与任何场景改变相对应时,流程前进到步骤S447。在步骤S447中,控制器446为当前入口设置priority_flag=0。

在步骤S448中,控制器446判断视频的所有入口是否已经被处理。当判断结果表示不是所有的入口被处理时,流程回到步骤S441。在步骤S441中,处理被重复。换句话说,处理从步骤S441到步骤S448重复,直到已经为视频的所有入口设置priority_flag为止。

当在步骤S448中的判断结果表示对于所有的入口,处理已经被完成时,流程前进到步骤S449。

在步骤S449中,控制器446判断字幕的当前入口是否在章的起首,即正被评估的入口是否与章场景改变信息447中的章的时间相对应。当在步骤S449中的判断结果表示当前入口与章的时间相对应时,流程前进到步骤S450。在步骤S450中,控制器446为当前入口设置priority_flag=3。

与之相比,当在步骤S449中的判断结果表示当前入口不在字幕的章的起首时,流程前进到步骤S451。在步骤S451中,控制器446判断当前入口是否在字幕的重要场景改变的位置,即下一将被评估的入口是否在从章场景改变信息447中的“重要场景改变”的起首开始一分钟间隔的位置。当在步骤S451中的判断结果表示下一将被评估的入口在从“重要场景改变”的起首开始的一分钟间隔的位置时,流程前进到步骤S452。在步骤S452中,控制器446为当前入口设置priority_flag=2。

当在步骤S451中的判断结果表示当前入口不是重要的场景改变时,流程前进到步骤S453。在步骤S453中,控制器446判断当前入口是否是字幕的规律场景改变,即下一将被评估的入口是否在从章场景改变信息447中的“场景改变”的起首开始三秒间隔的位置。当下一将被评估的入口在从“场景改变”的起首开始三秒间隔的位置时,流程前进到步骤S454。在步骤S454中,控制器446为当前入口设置priority_flag=1。

当在步骤S453中的判断结果表示当前入口不是规律场景改变,即下一将被评估的入口不是任何场景改变时,流程前进到步骤S455。在步骤S455中,控制器446为当前入口设置priority_flag=0。

在步骤S456中,控制器446判断字幕的所有的入口是否已经被处理。当在步骤S456中的判断结果表示不是所有的入口已经被处理时,流程回到步骤S449。在步骤S449中,处理被重复。换句话说,处理从步骤S449至步骤S456被重复,直到对于字幕的所有入口,priority_flag已经被设置为止。当在步骤S456中的判断结果表示字幕的所有入口已经被处理时,控制器446把根据图66中示出的句法的EP_map()的数据输出到输出服务器426。

[再现侧的操作:EP_map()的间隔剔除]

盘再现设备基于如上所述已经被设置的priority_flag、和存储器(例如,图1中示出的存储器113)的存储容量,来间隔剔除EP_map()。换句话说,在由于成本降低而具有有限功能的盘再现设备中,仅仅其priority_flag具有大的值的入口被存储在存储器中。当然,在具有能够存储整个EP_map()的存储器的设备中,不需要执行如此的操作。

在图33中示出的流程图的处理的步骤S106中,对于视频,priority_flag=1或者更高的入口被存储在存储器中。同样地,对于字幕,priority_flag=1或者更高的入口被存储在存储器中。在这种情况下,当EP_map()被读取时,对于视频流,播放器控制模块212基于stream_id和private_stream_id的值,而把priority_flag是3,2,或者1的入口读取到存储器,并且不把priority_flag是0的入口读取到存储器。对于字幕流,播放器控制模块212基于stream_id和private_stream_id的值,而把priority_flag是3和21的入口读取到存储器,并且不把priority_flag是1或者0的入口读取到存储器。

当上述处理被执行时,一个视频流的EP_map()所需要的存储器的存储容量变得比在处理不被执行的情况下小,大约为1/6至1/10。另外,一个字幕流的EP_map()所需要的存储量能够被减少到大约几十分之一。结果,在低成本盘再现设备中,入口能够基于存储器的容量而被存储。结果,再现处理能够被有效地执行。

在上述示例中,对于在章的起首的事件,priority_flag=3被设置。作为替代,对于诸如重要场景改变以及章的起首的任何意义,priority_flag=3可以被设置。

在上述实施例中,处理序列由软件执行。作为替代,它们可以由专用硬件执行。

在上述实施例中,作为视频解码器116(图1)和视频编码器403(图60),硬件解码器被使用。作为替代,作为视频解码器116(图1)和视频编码器403(图60),软件解码器可以被使用。这适用于音频解码器117(图1)和音频编码器404(图60)。

在上述实施例中,作为该字幕解码器,软件解码器被使用。作为替代,作为字幕解码器,硬件解码器可以被使用。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号