具体实施方式
以下将结合附图,对本发明的实施例进行说明。为了便于理解,首先描述存储在BD-ROM中的内容,即,AV数据,的管理结构,其中BD-ROM为“蓝光光盘只读格式第1.0版第3部分影音规范”所定义的只读蓝光光盘。这里,BD-ROM中的管理结构被称之为“BDMV格式”。
通过MPEG视频或MPEG音频编码方法编码、根据MPEG2系统多路复用的比特流,被称之为“剪辑AV流”(或简称AV流)。通过关于蓝光光盘的标准之一的“蓝光光盘只读格式第2部分”中定义的文件系统,将剪辑AV流作为文件记录在光盘上。上述文件被称之为“剪辑AV流文件(或简称AV流文件)”。
剪辑AV流文件从文件系统的角度来说是管理单元,并且它们对于用户并不一定很容易理解。为了增强用户的方便性,应提供用于将多个分离的剪辑AV流文件组合成一段电影内容,并将其回放的机制,或只对一些剪辑AV流文件进行回放的机制。这也需要在光盘上将用于便于专门回放或任意存取回放操作的信息作为数据库进行记录。通过关于蓝光光盘的标准之一的“蓝光光盘只读格式第3部分”定义该数据库。
附图1示意性的描述了BD-ROM的数据模型。如附图1所示,BD-ROM的数据结构包括4层。最底层是放置剪辑AV流的层(为了方便起见,这一层被称之为“剪辑层”)。第2最底层的是放置指定剪辑AV流回放部分的电影播放列表和播放项的层(为了方便起见,这一层被称之为“播放列表层”)。比第2最底层高的层,是放置包括指定电影播放列表回放次序的命令的电影对象的层(为了方便起见,这一层被称之为“对象层”)。最顶层是放置管理该BD-ROM中存储的标题等的索引表的层(为了方便起见,这一层被称之为“索引层”)。
下面将给出剪辑层的详细描述。剪辑AV流是以MPEG2TS的形式多路复用视频数据和音频数据的比特流。将关于剪辑AV流的信息作为剪辑信息记录在文件中。
在剪辑AV流中,还多路复用用于显示字幕的演示图形(PG)流或用于显示菜单的交互图形(IG)流。
剪辑AV流文件和存储相关剪辑信息的剪辑信息文件被认为是一个独立的对象,被称之为“剪辑”。也就是说,剪辑是一个由剪辑AV流和剪辑信息构成的独立的对象。
通常,可以将一个文件作为一个字节串来对待。剪辑AV流文件中的内容,在时间轴上扩张,并且主要指定剪辑中的入口点作为时间基数。如果提供一个预定剪辑存取点的时间标记,则可以将相应当剪辑信息文件用于寻找关于在相关剪辑AV流文件中开始读取数据的地址的地址信息。
下面将给出播放列表层的详细描述。电影播放列表,由指定所要回放的AV流文件的一组回放起始点(IN点)和回放结束点(OUT点)构成,并且还指明了特定AV流文件的回放部分。关于一个回放起始点和一个回放结束点的信息,被称之为“播放项”(PlayItem)。一个电影播放列表由一组播放项构成。回放一个播放项,是回放由播放项所引用的AV流文件的回放部分。也就是说,在关于播放项中IN点和OUT点的信息的基础上,回放剪辑中的对应区域。
下面将给出对象层的详细描述。一个电影对象包括用于将HDMV导航命令程序(HDM程序)与电影对象相关联的终端信息。HDMV程序是用于控制播放列表的回放的命令。终端信息包括用于允许用户在BD-ROM播放器上执行交互操作的信息。基于该终端信息,可以控制诸如显示菜单屏幕或标题搜索之类的用户操作。
BD-J对象是JavaTM程序对象。BD-J对象并不直接涉及本发明,因此省略对其的详细解释。
下面将给出索引层的详细描述。索引层包括一个索引表。该索引表是定义BD-ROM光盘标题的顶层表格。基于索引表中存储的标题信息,在BD-ROM驻留系统软件中,通过模块管理器控制BD-ROM光盘的回放。
更具体的说,如附图2中示意性示出的,索引表中的任意条目被称之为“标题”,且索引表中所输入的第一回放,顶层菜单以及标题#1,#2等都是标题。每一个标题表示到电影对象或BD-J对象的链接。每一个标题表示HDMV标题或BD-J标题之一。
现在,可以假定BD-ROM光盘中存储的内容是电影。然后,第一回放是在电影之前播放的电影公司的商业视频(电影预告片)。顶层菜单是用于选择电影回放,章节搜索,字母或语言的设置,特定视频的回放等的菜单屏幕。标题是从顶层菜单中选择的视频。标题可能被配置为一个菜单屏幕。
附图3是描述表示上述剪辑AV流,剪辑信息(流属性),剪辑,播放项,以及播放列表中关系的统一建模语言(UML)。播放列表与一个或多个播放项相关,且该播放项与一个剪辑相关。具有不同起始点和结束点的多个播放项,可以与一个剪辑相关。一个剪辑AV流文件由一个剪辑引用。同样,一个剪辑信息文件也由一个剪辑引用。剪辑AV流文件和剪辑信息文件具有一对一的对应性。通过上述结构的定义,无需改变剪辑流文件,就可以定义用于仅回放任意部分的无损回放次序。
如附图4所示,多个播放列表能够引用同一个剪辑。相反,一个播放列表能够指定多个剪辑。播放列表中播放项所指出的IN点和OUT点引用一个剪辑。在附图4示出的实例中,播放列表310的播放项320引用剪辑300,且播放列表311的播放项321的IN点和OUT点引用剪辑300的一个区域。播放列表311的播放项322的IN点和OUT点引用剪辑301的一个区域,且此外,播放列表312的播放项323的IN点和OUT点引用剪辑301的另一个区域。
如附图5中示出的一个实例所指出的,播放列表包括与所要回放的播放项相关的主路径,以及与子播放项相关的子路径。例如,子路径可以是添加至该播放项的后记录(配音)播放项。只有当播放列表满足预定条件时,才提供子播放项,虽然这里省略了细节的描述。
下面将结合附图6,论述“蓝光光盘只读格式第3部分”定义的BD-ROM上记录的文件的管理结构。通过目录结构,对文件进行分层管理。首先,在记录介质上创建一个目录(附图6示出实例中的根目录)。通过一个记录/回放系统管理该目录之下的目录。
根目录之下,设置目录“BDMV”和目录“CERTIFICATE”。目录“CERTIFICATE”中存储关于版权的信息。目录“BDMV”中,存储根据附图1所论述的数据结构。
直接在目录“BDMV”之下,设置两个文件,即文件“index.bdmv”和文件“MovieObject.bdmv”。在目录“BDMV”之下,设置目录“PLAYLIST”,目录“CLIPINF”,目录“STREAM”,目录“AUXDATA”,目录“META”,目录“BDJO”,目录“JAR”以及目录“BACKUP”。
在文件“index.bdmv”中,指出目录“BDMV”的内容。也就是说,最顶层的文件“index.bdmv”对应于索引层中的索引表。在文件“MovieObject.bdmv”中,存储关于至少一个电影对象的信息。也就是说,文件“MovieObject.bdmv”对应于上述对象层。
目录“PLAYLIST”是存储播放列表的数据库的目录。也就是说,目录“PLAYLIST”包括关于电影播放列表的文件“xxxxx.mpls”。每一个文件“xxxxx.mpls”为相应的电影播放列表而创建。在文件名中,“.”(句号)之前的“xxxxx”是五个数字,且句号之后的“mpls”是只有该类型文件才有的固定扩展名。
目录“CLIPINF”是放置剪辑数据库的目录。也就是说目录“CLIPINF”包括作为对应剪辑AV流文件的剪辑信息文件的文件“zzzzz.clpi”。在文件名中,“.”(句号)之前的“zzzzz”是五个数字,且句号之后的“clpi”是只有该类型文件才有的固定扩展名。
目录“STREAM”是放置作为真实数据的AV流文件的目录。也就是说,目录“STREAM”包括与对应剪辑信息文件相关的剪辑AV流文件。剪辑AV流文件是MPEG2传输流(在下文中称之为“MPEG2 TSs”),且其文件名为“zzzzz.m2ts”。在文件名中,句号之前的“zzzzz”被设置为与对应剪辑信息文件文件名中句号之前的部分相同。这将促使剪辑信息文件和剪辑AV流文件之间的关系更易于理解。
目录“AUXDATA”是放置用于显示菜单的声音文件,字体文件,字体索引文件,位图文件等的目录。在文件“sound.bdmv”中,存储与HDMV交互图形流应用程序相关的声音数据。文件名固定为“sound.bdmv”。在文件“aaaaa.otf”中,存储用于字幕显示或BD-J应用程序的字体数据。在文件名中,句号之前的“aaaaa”是五个数字,且句号之后的“otf”是只有该类型文件才有的固定扩展名。文件“bdmv.fontindex”是字体索引文件。
在目录“META”中,存储元数据文件。在目录“BDJO”和目录“JAR”中,存储与上述BD-J对象相关的文件。在目录“BACKUP”中,存储上述目录和文件的备份数据。目录“META”,目录“BDJO”,目录“JAR”和目录“BACKUP”并不直接涉及本发明,因此省略对其的解释。
当播放器中放置具有上述数据结构的光盘时,首先,需要播放器将从光盘中读取的电影对象中指出的命令,转换为用于控制播放器硬件的统一命令。在内置ROM中存储用于执行上述命令转换的软件。根据BD-ROM标准,该软件担任光盘和播放器之间的媒介,从而允许播放器执行操作,且因此,该软件被称之为“BD虚拟播放器”。
附图7A和7B示意性的描述了BD虚拟播放器执行的操作。附图7A描述了当置入光盘时,BD虚拟播放器所执行的操作的实例。在步骤S30中,在播放器中放置光盘,并对光盘进行初始化。然后,在步骤S31中,初始化存储光盘中使用的通用参数的寄存器。然后,在步骤S32中,执行从光盘中读取的程序。应该注意的是,例如,当光盘第一次置入播放器中时,初始化存取是为了对光盘进行首次回放。
附图7B描述了用户通过按压,例如,播放键,给出回放光盘的指令时,BD虚拟播放器所执行操作的实例。在步骤S40中,播放器处于暂停状态,然后,用户利用,例如,远程控制器给出指令(在附图7B中,该操作由UOP(用户操作)表示)。然后,在步骤S41中,初始化存储通用参数的寄存器。这样,重置寄存器将不是所必须的。在步骤S42中,播放器回放播放列表(回放阶段)。
下面将结合附图8,论述通过运行电影对象的播放列表的回放。假定通过用户操作给出回放标题号码#1的内容的指令。为了响应回放该内容的指令,播放器提交附图2中示出的索引表,从而获得对应于标题号码#1的对象号码。如果对应于标题号码#1的对象号码为#1,则播放器启动执行控制对象#1。
在附图8示出的实例中,电影对象#1中的程序包括2条线路,且第一条线路中的命令表示“播放播放列表(1)”。因此,播放器开始回放播放列表#1。播放列表#1包括至少一个播放项,并顺序回放多个播放项。在结束播放列表#1中播放项的回放之后,播放器恢复电影对象#1的激活,并执行第二线路中的命令。在附图8示出的实例中,第二线路中的命令表示“跳转至顶层菜单”,且播放器执行该命令,从而启动索引表中指示的顶层菜单的电影对象。
这里,给出适合于本发明实施例的图像显示系统的说明。该实施例中,基于如附图9所示的面板配置图像显示系统。在最低(向后)层上显示用于处理播放列表中指定的图像(主要是活动图像数据)的活动图像面板10。在活动图像面板10的上一层,显示处理在活动图像回放过程中所要回放的字幕数据的字幕面板11。在最顶(向前)层上,显示用于处理图形数据的交互图形面板12,该图形数据,是诸如显示菜单屏幕的字符数据和用于按钮图像的位图数据之类的图形数据。这三个面板可以进行组合,以便在一个显示屏幕上进行显示。
可以独立显示活动图像面板10,字幕面板11,和交互图形面板12。它们具有如附图10所示出的分辨率和显示颜色。对于活动图像面板10,分辨率为1920(像素)×1080(行),且一个像素的数据长度为16位。包括亮度信号Y和色差信号Cb和Cr的YCbCr系统为4:2:2。YCbCr(4:2:2)是一个颜色系统,其中,亮度信号Y和色差信号Cb和Cr均具有8位每像素,且用于两个水平像素的色差信号Cb和Cr形成一个颜色数据。对于字幕面板11和交互图形面板12,分辨率为1920(像素)×1080(行),且每像素的采样深度为8位。作为颜色系统,该系统使用了应用256色调色板的8位颜色映射地址。
在字幕面板11和交互图形面板12中,能够实现256级的α混合(alphablending)。当将字幕面板11或交互图形面板12与其他面板进行组合时,不透明性可以设置为256级。可以对每一像素进行不透明性的设置。下文中,不透明性α可以表示为(0≤α≤1)。当不透明性α=0时,字幕面板11或交互图形面板12是完全透明的。当不透明性α=1时,字幕面板11或交互图形面板12是完全不透明的。
字幕面板11处理便携式网络图形(PNG)的图像数据。交互图形面板12也能够处理PNG图像数据。PNG格式采样深度的范围从1到16位每像素。当采样深度为8位或16位时,可以添加α通道,也就是,关于每个像素不透明性的不透明信息(下文中也称为“α数据”)。当采样深度为8位时,不透明性可以指定在256级之内。通过利用不透明性信息(α通道)执行α混合。可以使用256色调色板图像,且可以提高索引数目,指定预先提供的调色板的颜色数目(索引)。
字幕面板11或交互图形面板12所处理的图像数据并不限制为PNG格式。也可以处理其他压缩编码方法所压缩的图像数据,诸如联合图像专家组(JPEG),游程长度压缩图像数据,未压缩位图图像数据。
附图11描述了根据附图9所示显示系统和附图10所示分辨率和显示颜色,合并三个面板的图形处理器的实例的配置。将活动图像面板10的活动图像数据提供给422/444转换电路20。在422/444转换电路20中,将活动图像数据的颜色系统从YCbCr(4:2:2)转换为YCbCr(4:4:4),且然后,将转换后的数据输入至乘法器21。
将字幕面板11的图像数据输入至调色板22A,并作为RGB(4:4:4)图像数据输出。如果根据α混合指定图像数据的不透明性,则从调色板22A输出所指定的不透明性α1(0≤α≤1)。
附图12描述了调色板22A的输入/输出数据的一个实例。在调色板22A中,将对应于诸如PNG文件的调色板信息存储为一个表格。调色板22A涉及通过以输入的8位像素数据作为地址的索引号码。基于该索引号码,调色板22A输出RGB(4:4:4)数据,每个颜色具有8位。同时,也从调色板22A中输出表示不透明性的α通道数据α。
附图13描述了调色板22A中所存储的调色板表格的实例。三个主要颜色R,G,B,每一个都具有8位,且将不透明性α分配至从[0x00]到[0xFF]的每一个256色索引值([0x]表示16进制符号)。调色板22A涉及以所输入PNG图像数据为基础的调色板表格,并为每一个像素输出均为8位的RGB数据,以及对应于图像数据所指定索引值的不透明性α。
将从调色板22A输出的RGB数据提供给RGB/YCbCr转换电路22B。在RGB/YCbCr转换电路22B中,将RGB数据转换为由亮度信号Y以及色差信号Cb和Cr所表示的数据(上述数据共称为“YCbCr数据”),每个信号的数据长度为8位。进行该转换的原因是为了利用通用数据格式,也就是作为活动图像数据的数据格式的YCbCr数据,对面板进行合并。
将YCbCr数据以及从RGB/YCbCr转换电路22B中输出的不透明性数据α1,输入至乘法器23。在乘法器23中,将所输入的YCbCr数据与不透明性数据α1相乘。将相乘的结果输入至加法器24的一个输入端。在乘法器23中,亮度信号Y以及色差信号Cb和Cr的每一个,与不透明性数据α1相乘。将不透明性数据α1的补数(1-α1)提供给乘法器21。
在乘法器21中,从422/444转换电路20输入的活动图像数据,与不透明性数据α1的补数(1-α1)相乘。将相乘的结果输入至加法器24的另一个输入端。在加法器24中,乘法器21和23的相乘结果进行相加。然后,合并活动图像面板10和字幕平面11。将加法器24相乘的结果输入至乘法器25。
将交互图形面板12的图像数据输入至调色板26A,并作为RGB(4:4:4)图像数据输出。如果利用α混合为图像数据指定了不透明性,则从调色板26A输出所指定的不透明性α2(0≤α2≤1)。将从调色板26A输出的RGB数据提供给RGB/YCbCr转换电路26B,并转换为YCbCr数据,该数据将统一为活动图像数据的数据格式。将从RGB/YCbCr转换电路26B输出的YCbCr数据输入至乘法器27。
如果交互图形面板12的图像数据为PNG格式,则为每个像素设置不透明性α2(0≤α2≤1)。将不透明性数据α2提供给乘法器27。在乘法器27中,将从RGB/YCbCr转换电路26B输入的YCbCr数据的亮度信号Y以及色差信号Cb和Cr的每一个,与不透明性数据α2相乘。乘法器27中相乘的结果输入至加法器28的一个输入端。将不透明性数据α2的补数(1-α2)提供给乘法器25。
在乘法器25中,加法器24中相加的结果与不透明性数据α2的补数(1-α2)相乘。将乘法器25中相乘的结果输入至加法器28的另一个输入端,且与乘法器27中相乘的结果相加。然后,交互图形面板12与活动图像面板10和字幕面板11的合成图像相合并。
在字幕面板11或交互图形面板12中,没有图像的区域的不透明性数据α被设置为0,以便能够透过面板11或12看到字幕面板11或交互图形面板12下方所显示的面板。例如,在活动图像面板11上显示的活动图像数据能够作为字幕面板11或交互图形面板12的背景进行显示。
通过硬件或软件,均可实现附图11中示出的图形处理器的配置。
结合附图14,给出了演示图形(PG)流和交互图形(IG)流的说明。如上所述,PG流是包括用于显示字幕的字幕图像数据的流。更具体地说,PG流包括形成位图数据的字幕图像数据本身和表示如何显示该字幕图像数据的数据。IG流是包括用于显示菜单的数据的流,且更具体地说,用于菜单屏幕的按钮图像数据,表示如何显示该按钮图像数据的数据,以及该按钮所指示的命令。
PG流或IG流包括在剪辑AV流中,且形成在包括一个或多个显示集的多个时间点单元内。该显示集和时间点可以认为是分别在MPEG2中定义的一个图像和图组(GOP)。
也就是说,显示集是用于显示字幕的最小单元,且对应于一个字幕图像。一个时间点,是由一个或多个显示集所形成的。通常,时间点是由显示项单元所形成的。也就是说,一个时间点是由某一显示项回放过程中,用于显示所要显示的字幕的显示集而形成的。用于解码PG流的PG解码器,清除字幕面板11和多个时间点单元中的不同存储器。
对于PG流,如附图14所示,一个时间点中可以包括多个显示集。相反,对于IG流,如果IG流是一个预先载入的IG流,则一个时间点中仅包括一个显示集。
事实上,用于形成时间点的基本单元并不局限于播放项,且形成时间点的所需项可以由创作方确定。在PG流的情况下,能够由用于显示电影中形成对话的多个字幕集的多个显示集形成一个时间点。作为选择,可以通过词语来分离该对话,且可以由用于显示相应词语的多个显示集形成一个时间点。
附图15A和15B示意性的描述了显示集的配置。如附图15A所示,PG流的显示集包括5段,诸如演示合成段(PCS),窗口定义段(WDS),调色板定义段(PIDS),对象定义段(ODS),以及结束段。虽然这里并未讨论每一段的细节,但以下仍将简要说明每一段。在PCS中,存储关于字幕的基本信息。WDS定义了用于显示字幕的显示画面,该显示画面被称为“窗口”。WIDS固定在该时间点中。PDS定义了关于字幕的颜色信息,且包括,例如,一个索引颜色信息表。ODS包括关于字幕的配置信息。例如,通过预定压缩编码方法,诸如游程长度压缩编码,对用于显示该字幕的位图数据进行压缩编码。结束段是表示该显示集结束的段。
如附图15B所示,IG流的显示集包括4段,即,交互合成段(ICS),PDS,ODS,以及结束段。在4段之中,ICS是存储IG流的基本结构的段。PDS,ODS,和结束段与PG流的显示集中的类似。也就是说,PDS是存储关于按钮图像的颜色信息的段。ODS是存储按钮图像的配置的信息。更具体地说,在ODS中,通过预定压缩编码方法,诸如游程长度压缩,对按钮图像自身,例如,用于显示按钮图像的位图数据,进行压缩编码并存储。结束段是表示该显示集结束的段。
附图16示意性的描述了PG流的显示集的逻辑结构。4段构成的一组,诸如PCS,WDS,PDS,ODS,以及结束段(未示出),形成一个显示集,如附图16中A部分和B部分所指出的。唯一的一个PCS可以一直存储在一个显示集内。唯一的一个WDS可以几乎一直存储在一个显示集内。然而,如果下面所要讨论的,PCS中定义的标记palette_up_date_flag表示1,则WDS是可选的。PDS和ODS是可选的,且在一个显示集中包括PDS和ODS并不是必需的。
如附图16中C部分所指出的,一个时间点由一个或多个显示集形成。虽然这里没有讨论细节,但可以在PCS的模块composition_descriptor()中包括的域composition_state中定义时间点起始显示集。基于该时间点起始显示集,对时间点进行定义。例如,将时间点定义为一组显示集,这一组显示集从在PCS中对时间点起始显示集进行定义的显示集开始,到在PCS中在PCS中对下一个时间点起始显示集进行定义的显示集的前一个显示集为止。下面,将讨论时间点定义的一个具体实例。如附图16中D部分所指出的,PG流包括一个或多个时间点。
附图17示意性的示出了IG流的显示集的逻辑结构。如附图17中A部分所指出的,除了段的配置以外,交互图形的显示集的整个层次结构和PG流的结构相同。在IG流的显示集中,与PG流相同,基于ICS的模块composition_descriptor()中包括的域composition_state中定义的时间点起始显示集,对时间点进行定义。在PG流中,一个显示集中只包括一个表示结构的PCS。相反,在IG流中,在一个显示集中包括多个表示结构的ICS。也就是说,可能多个ICS定义的是一个单独的模块composition_descriptor()。此外,PG流或IG流,在一个显示集中只包括一个结束段。与PG流中相同,PDS和ODS是可选的,且在显示集中包括PDS和ODS并不是必需的。对于IG流的显示集,为了简单的描述,省略了更详细的说明。
附图18描述了上述显示集的实例的存储格式。如上所述,用于显示字幕的显示集和用于显示按钮图像的显示集,分别与诸如PG流和IG流的剪辑AV流进行多路复用。如附图18中的A部分所指出的,该显示集由多个段形成。
如附图18中的B部分所指出的,形成该显示集的多个段彼此通过头信息进行区分,且多个段均存储在打包基本码流(PES)包的有效负载中。每一个PES包的最大尺寸固定为64k字节(KB)。如果一个具有相对较大尺寸的ODS或ICS,超过了最大尺寸,则将被划分为较小的部分,且然后,将所划分的部分填入多个PES包的有效负载。另一方面,由于大多数情况下PCS,WDS,和PDS都小于64KB,所以一个段可以存储在一个PES包中。在每一个PES包中,在PES的头部,存储表示有效负载,即,PCS,WDS,PDS,或ODS,中(在PG流的情况下)存储的数据的类型的信息,或表示包顺序的识别信息。
在PES的头部,还存储了指定该PES包解码时间的DTS(解码时间标记)和指定所解码数据的输出时间的演示时间标记(PTS)。也就是说,当系统时间时钟(STC)与DTS相一致时,开始对PES包有效负载中存储的数据进行解码,该系统时间时钟,是在MPEG系统所定义的基准解码器中所设置的。当STC与PTS相一致时,输出所解码的数据。
PTS和DTS是可选的,且如果预定存取单元的第一段部分包括在PES包的有效负载中,则将PTS和DTS添加至PES的头部。例如,如果划分一个段,并将其存储至多个PES包中,则在存储第一段部分的PES包中仅存储PTS和DTS。
如附图18的C部分所指出的,进一步将每一个PES包划分为更小的部分,并存储在形成MPEG TS的传输流(TS)包中。在包识别码(PID)中,存储TS包的顺序和用于识别每一个TS包中存储的数据的识别信息。
以下,将具体给出直接涉及本发明的段的细节。首先,讨论PG流的显示集中所包括的PCS和WDS。附图19描述了表示PCS结构的实例的语法。附图19中示出的语法是以C语言符号表示的,C语言是计算机程序描述语言中的一种。其他附图中示出的语法也是以C语言符号表示的。
模块segment_descriptor()包括域segment_type和域segment_length(未示出)。域segment_type指定了段的类型。如果域segment_type的值为0x16,这意味着该段是PCS。0x表示16进制符号。域segment_length表示从segment_length开始的该段的长度。
模块video_descriptor()包括域video_width,域video_height,和域frame_rate(未示出)。域video_width和域video_height表示与由该PCS中包括的显示集所要显示的字幕同时的,所要回放的活动图像的画面。域frame_rate指定了活动图像的画面频。
模块composition_descriptor()包括域composition_number和域composition_state(未示出)。域composition_number表示与该PCS相关的时间点中该段的顺序。域composition_state表示该PCS中包括的显示集的类型。
以下,将简要讨论显示集的类型。存在4种类型的显示集,即,时间点起始显示集,时间点持续显示集,采集点显示集,以及正常状态显示集。
时间点起始显示集是时间点的第一个显示集。在时间点与多于一个播放项相关联时,使用时间点持续显示集。例如,如果时间点与播放项#1和下一个播放项#2相关联,则在播放项#2的头部设置时间点持续显示集。
采集点显示集与字幕的解码相关,且表示安全解码的起始点。也就是说,当播放器进行任意存取时,非常可能存取的目的地是时间点的中点。然后,在任意存取之后,播放器重新开始解码,从而在采集点显示集的位置显示字幕。
正常状态显示集与字幕的解码相关,且表示不安全解码的起始点。如果当前另一显示集所显示字幕的颜色或配置将改变,则在正常状态显示集中设置表示该改变的显示集。如果在解码和字幕回放的过程中播放器寻找正常状态显示集,则其将根据该改变,变化当前所显示字幕的颜色或配置。
返回对PCS的语法的说明,域palette_update_flag是表示调色板是否更新的标记。域palette_id_ref表示调色板的ID,该调色板涉及该显示集所显示的字幕的一个画面。也就是说,通过域palette_id_ref引用PG流中PDS的颜色信息。
域number_of_composition_object表示包括该显示集所显示的字幕的一个画面中所包括的对象的数目。对域number_of_composition_object所表示的相同数目,重复下一个FOR语句所表示的循环。通过模块composition_object(),定义该显示集所显示的每一个对象。
附图20描述了表示模块composition_object()的实例的结构的语法。域object_id_ref表示通过模块composition_object(),将ODS用于显示字幕的基准(reference)。域window_id_ref指定了窗口的ID,其中,通过模块composition_object(),将用于显示字幕的对象进行显示。
域object_cropped_flag是一个标记,该标记表示是否通过模块composition_object(),将用于显示字幕的对象进行截取。也就是说,能够从ODS中截取预定尺寸的字幕。如果标记object_cropped_flag表示该对象将要被截取,基于下面所要讨论的剪辑尺寸信息,将截取部分字幕,并显示所截取的部分。
域forced_on_flag表示是否强制显示由模块composition_object()所显示的字幕,而不管表示是否显示用户操作所给出字幕的指令。
域composition_object_horizontal_position和域composition_object_vertical_position分别表示屏幕上模块composition_object()所显示字幕的水平位置和垂直位置。通过对于以下所要讨论的WDS所表示窗口位置的相对位置,表示水平位置和垂直位置。
如果上述域object_cropped_flag所描述的标记,表示所要截取的对象,则提供下一个IF语句(if(object_cropped_flag==1b)),以便指定所要截取部分的位置和尺寸。也就是说,在模块cropping_rectangle()中,分别通过域object_cropping_horizontal_position和域object_cropping_vertical_position,指定所要截取部分的位置和尺寸的起点。分别通过域object_cropping_width和域object_cropping_height,指定所要截取部分的宽度和高度
附图21描述了表示WDS的实例结构的语法。模块segment_descriptor()包括域segment_type和域segment_length(未示出)。域segment_type表示段的类型。如果segment_type的纸表示为0x17,则意味着段的类型为WDS。域segment_length表示从该域segment_length开始的这一段的长度。
域number_of_windows表示包括该WDS的显示集所显示的字幕的一个画面中所包括的窗口的数目。对域number_of_windows所表示的相同数目,重复下一个FOR语句所表示的循环,且通过模块window(),定义每一个窗口。
附图22描述了表示模块window()的实例结构的语法。域window_id指定了该窗口的ID。域window_horizontal_position和域window_vertical_position分别表示该窗口画面的水平位置和垂直位置的开始。域window_width和域window_height分别表示该窗口的宽度和高度。
这里,给出对IG流显示集中所包括ICS的说明。在对ICS说明之前,以下根据附图23简要讨论菜单屏幕和按钮配置。这里,先考虑附图23中A部分所指出的,显示多个按钮300的菜单屏幕301。
如附图23的B部分所指出的,以多个菜单画面层次化的构建菜单屏幕301。如果位于最顶层的菜单画面中的某一按钮300,借助于预定输入单元从选定状态移位到激活状态,则可以在前方最顶层显示,直接位于具有操作按钮300的菜单画面后部的菜单画面。下文中,借助于预定输入单元改变按钮的状态,仅称为“操作一个按钮”。
如附图23的C部分和D部分所指出的,可以以多个按钮302A,302B,302C等层次化的构建菜单屏幕301上显示的一个按钮300。换句话说,可以在单个的显示位置显示多个按钮,并选择其中一个按钮。例如,如果操作多个按钮中的一个,可以同步修改同一位置其他按钮的功能和显示。由于不需要修改菜单屏幕301,因此是很方便的。可以在同一位置选择性显示的一组多个按钮,被称为“按钮叠加组(BOG)”
可以以3种状态提供形成BOG的每一个按钮,诸如正常状态,选定状态,和激活状态。如附图23的E部分所指出的,为形成BOG的每一个按钮,提供分别表示正常状态,选定状态,和激活状态的按钮303A,303B,和303C。如附图23的F部分所指出的,可以为表示3种状态的按钮303A,303B,和303C中的每一个提供动画图像。这样,具有动画图像的按钮包括与动画图像数目相同的按钮图像数目。
下文中,形成动画图像的多个按钮图像也称为“动画画面”。
附图24描述了表示ICS头部信息的实例结构的语法。ICS的头部包括模块segment_descriptor(),模块video_descriptor(),模块composition_descriptor(),模块sequence_descriptor(),以及模块interactive_composition_data_fragment()。模块segment_descriptor()表示该段是一个ICS。模块video_descriptor()表示与该菜单一起显示的画面速率和画面尺寸。模块composition_descriptor()包括域composition_state(未示出),且表示该ICS的状态。模块sequence_descriptor()表示该ICS是否与多个PES包相关。
更具体地说,模块sequence_descriptor()表示当前PES包中包括的ICS是否为单个IG流中的第一个ICS或最后一个ICS。
如上所述,PES包的最大数据尺寸为64KB。如果单个ICS的数据尺寸超过64KB,则ICS将被划分为较小的部分,且这些较小的部分将被填入PES包。这样,附图24中示出的头部只包括在含有ICS划分后部分的PES包中的第一个PES包和最后一个PES包中,且在其他PES包中省略该头部。如果模块sequence_descriptor()表示当前PES包中包括对ICS是第一个ICS和最后一个ICS,则意味着ICS包括在一个单独的PES包中。
附图25描述了表示模块interactive_composition_data_fragment()的实例结构的语法。在附图25示出的实例中,所指出的模块interactive_composition_data_fragment()与模块interactive_composition()相同。域interactive_composition_length具有24位数据长度,且表示域interactive_composition_length之后模块interactive_composition()的长度。域stream_model具有1位数据长度,且表示是否对该数据流进行多路复用。也就是说,可以将IG流与AV流进行多路复用,或由IG流自身形成一个单独的剪辑AV流。
域user_interface_model具有1位数据长度,且表示该数据流所显示的菜单是弹出式菜单或常规菜单(一直显示在屏幕上)。弹出式菜单的显示可以由预定输入单元的开启或关闭控制,例如,远程控制器的按钮。另一方面,借助于用户的操作,很难控制常规菜单的显示。如果域user_interface_model为0,则该菜单为弹出式菜单。如果域user_interface_model为1,则该菜单为常规菜单。
如果域user_interface_model为0,则IF语句,即,如果(stream_model=’0b’),之后的域composition_time_out_pts和域selection_time_out_pts变为有效。域composition_time_out_pts具有33位数据长度,且表示所显示菜单消失的时间。域selection_time_out_pts具有33位数据长度,且表示在该菜单上的选择操作无效的时间。由MPEG2中定义的PTS,表示域composition_time_out_pts或域selection_time_out_pts中的时间。
域user_time_out_duration具有24位数据长度,且表示用于该菜单显示的自动初始化持续时间。下一个域number_of_pages具有8位数据长度,且表示该菜单所提供的页的数目。该域的初始值为0。也就是说,该菜单显示具有如附图23中B部分所指出的层次结构,且如果提供多页,则域number_of_pages为1或更大。对与域number_of_pages所表示数目相同的数目,重复下一个FOR语句所表示的循环。
附图26描述了表示模块page()的实例结构的语法。域page_id具有8位数据长度,且表示用于识别该页的ID。域page_version_number具有8位数据长度,且表示该页的版本号。下一个模块UO_mask_table()指定了表示在该页的显示过程中,在输入单元上禁止执行的用户操作(UO)的表。
模块in_effects()表示显示该页时激活的动画模块。在模块effect_sequence()中指出动画顺序。模块out_effects()表示在结束该页的显示时激活的动画模块。在模块effect_sequence()中,指出动画顺序。模块in_effects()和模块out_effects()表示当页中进行修改而发现ICS时所激活的动画。
下一个域animation_frame_rate_code具有8位数据长度,且如果该页按钮图像作为动画示出,则表示用于设置该动画画面速率的参数。当由Vfrm表示对应于该ICS的剪辑AV流文件中视频数据的画面速率,且由Afrm表示该动画画面速率时,可以由Vfrm对Afrm的比率,即,Vfrm/Afrm,表示域animation_frame_rate_code。
域default_selected_button_id_ref具有16位数据长度,且表示显示该页时,首先选择的按钮的ID。下一个域default_activated_button_id_ref具有16位数据长度,且表示到达附图25所讨论的域selection_time_out_pts所代表的时间时,自动激括的按钮的ID。
域palette_id_ref具有8位数据长度,且表示该页所涉及调色板的ID。也就是说,通过该域palette_id_ref指定IG流的PDS中的颜色信息。
下一个域number_of_BOGs具有8位数据长度,且表示该页中所使用的BOG的数目。对与域number_of_BOGs所表示数目相同的数目,重复下一个FOR语句所表示的循环,然后,由模块button_overlap_group()定义每一个BOG。
附图27描述了表示模块button_overlap_group()的实例结构的语法。域default_valid_button_id_ref具有16位数据长度,且表示模块button_overlap_group()中定义的BOG所首先显示的按钮的ID。下一个域number_of_buttons具有8位数据长度,且表示该BOG中使用的按钮的数目。对与域number_of_buttons所表示数目相同的数目,重复下一个FOR语句所表示的循环,然后,由模块button()定义每一个按纽。
也就是说,如上所述,一个BOG可以具有多个按钮,且由模块button()定义每一个按钮的结构。该模块button()所定义的按钮结构,是所要显示的实际的按钮。
附图28描述了表模块button()的实例结构的语法。域button_ id具有16位数据长度,且表示识别该按钮的ID。域button_numeric_select_value具有16位数据长度,且表示远程控制器上分配给该按钮的数字键。域auto_action_flag具有1位数据长度,且表示当选择该按钮时,自动执行的分配给该按钮的功能。
域button_horizontal_position和域button_vertical_position均具有16位数据长度,且指定在画面上该按钮的水平位置和垂直位置(高度)。
模块neighbor_info()表示关于该按钮的外部信息。也就是说,模块neighbor_info()的值表示选择目标按钮的同时,操作远程控制器的指定上,下,左,或右方向的方向键时,所要选择的按钮。在模块neighbor_info()中,域upper_button_id_ref,域lower_button_id_ref,域left_button_id_ref,以及域right_button_id_ref,每一个均具有16位数据长度,且表示当方向键分别指定上,下,左,和右方向的方向键时,所要选择的按钮的ID。
模块normal_state_info(),模块selected_state_info(),和模块activated_state_info()表示分别与正常状态,选定状态,和激活状态中的按钮相关的信息。
首先讨论模块normal_state_info()。域normal_start_obiect_id_ref和域normal_end_object_id_ref,每一个均具有16位数据长度,表示用于在正常状态中,指定按钮动画的第一个对象和最后一个对象的ID。也就是说,域normal_start_object_id_ref和域normal_end_object_id_ref,能够指定用于为相应ODS显示按钮动画的按钮图像(即,动画画面)。
下一个标记normal_repeat_flag具有1位数据长度,且表示是否重复按钮动画。例如,如果标记normal_repeat_flag为0,则不重复动画。如果标记normal_repeat_flag为1,则重复该动画。
下一个标记normal_complete_flag具有1位数据长度,且根据本发明的一个实施例进行定义。当按钮状态从正常状态改变至选定状态时,标记normal_complete_flag控制动画操作。
更具体地说,如果标记normal_complete_flag为1,则当按钮状态从正常状态改变至选定状态时,显示正常状态下定义的所有动画图像。更具体地说,如果标记normal_complete_flag为1,则当显示正常状态下动画的同时,响应于从正常状态至选定状态的改变状态的指令,显示动画画面,该动画画面从一接收到该指令所显示的动画画面开始,直到域normal_end_object_id_ref所指示的动画画面。
如果标记normal_complete_flag为1,且如果意味着重复动画的标记normal_repeat_flag为1,则显示动画画面,该动画画面从一接收到该指令所显示的动画画面开始,直到域normal_end_object_id_ref所指示的动画画面。
在这种情况下,即使该按钮在未选定状态,或在显示动画时该按钮自身关闭,也能够持续显示动画,直到域normal_end_object_id_ref所指示的动画画面为止,然后,改变该按钮的状态。
在例如,由根据域selection_time_out_pts定义的按钮的选择无效,或根据域user_time_out_duration定义的菜单自动初始化的情况下,按钮处于未选定状态。
相反,如果normal_complete_flag为0,则当按钮状态从正常状态改变至选定状态时,一收到改变按钮状态而不需显示动画的指令,就停止正常状态下按钮定义的动画的显示,直到域normal_end_object_id_ref所指示的动画画面为止,然后,显示选定状态的按钮。
现在,讨论模块selected_state_info()。模块selected_state_info()包括,与模块normal_state_info()中的域对应于的域,以及指定声音的域selected_state_sound_id_ref。域selected_state_sound_id_ref具有8位数据长度,且表示选定状态按钮所要回放的声音文件。例如,当按钮状态从正常状态改变至选定状态时,使用该声音文件作为特效声音。
域selected_start_object_id_ref和域selected_end_object_id_ref,每一个均具有16位数据长度,表示用于指定选定状态中按钮动画的第一个对象和最后一个对象的ID。
下一个标记selected_repeat_flag具有1位数据长度,且表示是否重复该按钮动画。例如,如果标记selected_repeat_flag为0,则不重复该动画。如果标记selected_repeat_flag为1,则重复该动画。
与normal_complete_flag相同,下一个标记selected_complete_flag具有1位数据长度,且与normal_complete_flag一起,根据本发明的一个实施例进行定义。当按钮状态从选定状态改变至其他状态时,标记selected_complete_flag控制动画操作。也就是说,在按钮状态从选定状态改变为激活状态或从选定状态改变为正常状态时,使用标记selected_complete_flag。
与标记normal_complete_flag相同,如果标记selected_complete_flag为1,则当按钮状态从选定状态改变为其他状态时,显示选定状态中定义的所有动画图像。更具体地说,如果标记selected_complete_flag为1,则当显示选定状态下动画的同时,响应于从选定状态至其他状态的改变状态的指令,显示动画画面,该动画画面从一接收到该指令所显示的动画画面开始,直到域selected_end_object_id_ref所指示的动画画面。
如果标记selected_complete_flag为1,且如果意味着重复动画的标记selected_repeat_flag为1,则显示动画画面,该动画画面从一接收到该指令所显示的动画画面开始,直到域selected_end_object_id_ref所指示的动画画面。
在这种情况下,即使该按钮在未选定状态,或在显示动画时该按钮自身关闭,也能够持续显示动画,直到域selected_end_object_id_ref所指示的动画画面为止,然后,改变该按钮的状态。
在例如,由根据域selection_time_out_pts定义的按钮的选择无效,或根据域user_time_out_duration定义的菜单自动初始化的情况下,按钮处于未选定状态。
相反,如果selected_complete_flag为0,则当按钮状态从选定状态改变至其他状态时,一收到改变按钮状态而不需显示动画的指令,就停止选定状态下按钮定义的动画的显示,直到域selected_end_object_id_ref所指示的动画画面为止,然后,显示其他状态的按钮。
在下一个模块activated_state_info()中,与模块normal_state_info()和模块selected_state_info()相反,在按钮状态从激活状态改变为其他状态时,并未定义表示是否重复动画的标记,或用于控制动画操作的标记。在按钮状态改变为激活状态时,执行分别给激活按钮的功能,且按钮处于激活状态的时间被认为是非常短的。通常,控制按钮从激活状态改变为其他状态并不是最好的。因此,在模块activated_state_info()中,可以省略上述两个标记。然而,也可以对它们进行定义。
在模块activated_state_info()中,域activated_state_sound_id_ref具有8位数据长度,且表示激活状态下按钮所要回放的声音文件。域activated_start_object_id_ref和域activated_end_object_id_ref,每一个均具有16位数据长度,表示分别用于指定激活状态中该按钮动画的第一个动画画面和最后一个动画画面的ID。
下一个域number_of_navigation_commands具有16位数据长度,且表示该按钮中嵌入的命令的数目。以与域number_of_navigation_commands所表示数目相同的次数,重复下一个FOR语句的循环,然后,定义该按钮所执行的命令navigation_command()。换句话说,从一个按钮能够执行多个命令。
现在,给出当前BD-ROM标准中定义的PG流和IG流的解码器模型的说明。附图29是对PG流或IG流适用的解码器模型。
首先在播放器中置入光盘,然后,从光盘上读取索引文件“index.bdmv”和电影对象文件“MovieObject.bdmv”,并显示顶层菜单。当根据顶层菜单指定所要回放的标题时,通过电影对象文件中的相应导航命令,调用用于回放指定标题的播放列表文件。然后,根据播放列表文件的说明,从光盘读取播放列表所请求的剪辑AV流文件,即,MPEG2传输流。
将传输流作为TS包提供给PID滤波器100,并分析该PID。PID滤波器100确定所提供的TS包是否存储视频数据,音频数据,菜单数据,或字幕数据。如果PID表示菜单数据,即,IG数据,或字幕数据,即,PG数据,则附图29所示出的解码器模型的配置变为有效。
在PID滤波器100中,在传输流中选择与解码器模型相一致的,存储数据的TS包,并将其存储在传输缓冲器(TB)101中。然后,在TB101中,提取TS包有效负载中存储的数据。当能够重构为PES包的数据的数目存储在TB101中时,基于PID对PES包进行重构。也就是说,将划分为TS包的段统一为一个PES包。
从根据段重构的PES包中去除PES的头部,且将该PES包作为基本码流动提供给解码器102,且临时存储在编码数据缓冲器(CDB)110中。在CDB110所存储的基本码流中,根据STC,如果存在已到达基于STC的DTS所指的时间的基本码流,则从CDB110中读取该基本码流,并将其传输至流图形处理器111。然后将该码流解码为多个段。
流图形处理器111在解码对象缓冲器(DB)112或合成缓冲器(CB)113。如果段的类型是DTS中提供的类型,诸如PCS,ICS,WDS,或ODS,则根据DTS所表示的时间,将该段存储在DB112或CB113中。如果段的类型不是DTS中提供的类型,诸如PDS,则立即将该段存储在CB113中。
图形控制器114控制多个段。例如,如果解码器模型与PG数据相一致,则图形控制器114根据PTS所表示的时间,从CB113中读取PCS,并且还读取PCS所引用的WDS和PDS。图形控制器114还从DB112中读取PCS所涉及的ODS。然后,图形控制器114对所读取的PCS,WDS和ODS进行解码,从而形成用于显示字幕的数据,然后将该数据写入图形面板103。
同样,如果解码器模型是与IG数据相一致的模型,则图形控制器114根据对应于ICS的PTS所表示的时间,从CB113中读取ICS,并且还读取该ICS所涉及的PDS。图形控制器114还从DB112中读取ICS所涉及的ODS。然后,图形控制器114对所读取的ICS和ODS进行解码,从而形成用于显示菜单屏幕的数据,诸如按钮图像,并将该数据写入图形面板103。
图形控制器114还对从CB113中读取的PDS进行解码,从而形成附图13中所讨论的颜色调色板表格,并将该颜色调色板表格写入颜色查找表(CLUT)104。
在预定时间,诸如画面时间,读取写入图形面板103的图像,并将颜色信息添加至CLUT104的颜色调色板表格所涉及的图像,以便形成输出图像数据。然后,输出该输出图像数据。根据播放器的说明书,可以进一步将基于CLUT104颜色调色板表格的颜色信息,添加至从图形面板103读取的图像数据,以便形成字幕图像数据,然后可以将所得到的字幕图像数据写入至画面存储器。
在上述解码器模型中,对于PG数据和IG数据,将多个段存储在CDB110中。然后,在段中定义的PTS所表示的时间,对每一段进行解码,并将其存储在DB112或CB113中,然后,在段中定义的PTS所表示的时间将其输出。这样,当基于在BD-ROM标准中定义的解码器模型涉及播放器时,将会考虑到与CDB110中所存储的段相对应的存储DTS和PTS的存储器的准备。附图29中的虚线,如PTS/DTS缓冲器150,指出该存储器。在当前BD-ROM标准中,并未定义PTS/DTS缓冲器150。
基于解码器模型控制播放器的控制器,根据PTS/DTS缓冲器150中存储的DTS,指定用于CDB110中所存储段的解码时间,并根据PTS/DTS缓冲器150中存储的PTS,指定DB112或CB113中解码并存储一个段的输出时间。
附图30描述了PTS/DTS缓冲器150中所存储数据的结构的实例。在PTS/DTS缓冲器150中,对应于CDB110所存储的段,存储DTS和PTS,且存储用于识别该段的段ID。根据规则,DTS和PTS中的每一个均具有33位数据长度。
在PTS/DTS缓冲器150中,也可以为每一段存储其他类型的数据。在附图30所示出的实例中,存储与段ID所指示的段的版本相关的版本信息和与段类型相关的信息。与段类型相关的信息表示就PG数据来说,该段是否为PCS,PDS,WDS,或ODS,且就IG数据来说,该段是否为ICS,PDS,或ODS。
在附图30所示出的域中,如果,例如,段ID的数据长度为16位,如果版本信息的数据长度为8位,且如果段类型的数据长度为4位,则每段的数据尺寸为94位,即,按照字节如果四舍五入为12字节。
在上述解码器模型中,根据时间点的更新,清除不同的缓冲器和面板。当从CDB110中读取,且在流图形处理器111中进行解码的PCS或ICS的模块composition_descriptor()中的域composition_state,表示对应显示集是时间点起始显示集时,由图形控制器114清除DB112,CB113,图形面板103,和CLUT104。根据时间点的更新,也可以清除PTS/DTS缓冲器150。
下面将说明时间点的定义。如上所述,在PG流或IG流中,根据时间点起始显示集定义时间点。
对于PG流,将下面项目(1)和(2)中显示集的范围较短的一个,定义为一个时间点:
项目(1):一组显示集从作为PCS中定义的时间点起始显示集的显示集开始,直到作为PCS中定义的下一个时间点起始显示集的显示集之前的一个显示集为止;以及
项目(2):一组显示集从作为PCS中定义的时间点起始显示集的显示集开始,直到与相应PG数据相关的播放列表结束为止。
更具体地说,就项目(1)来说,以一组显示集定义一个时间点,这一组显示集从定义时间点起始显示集的PCS的PTS开始,直到定义下一个时间点起始显示集的PCS的PTS为止。同样,就项目(2)来说,以一组显示集定义一个时间点,这一组显示集从定义时间点起始显示集的PCS的PTS开始,直到与该组显示集相关的播放列表结束为止。
对于IG流,将下面项目(3)、(4)和(5)中显示集的范围较短的一个,定义为一个时间点:
项目(3):一组显示集从作为ICS中定义的时间点起始显示集的显示集开始,直到ICS的域composition_time_out_pts中定义的时间为止;
项目(4):一组显示集从作为ICS中定义的时间点起始显示集的显示集开始,直到作为ICS中定义的下一个时间点起始显示集的显示集之前的一个显示集为止;以及
项目(5):一组显示集从作为ICS中定义的时间点起始显示集的显示集开始,直到与该IG数据相关的播放列表结束为止。
附图31是描述图形解码器102在PG数据显示集的单元中所执行的处理的流程图。在步骤S10中,PID滤波器100基于PID从TS包中获得存储PG数据的TS包,并将所获得的TS包存储在TB101中。然后,在步骤S11中,当存储在TB101中的能够重构PES包的TS包的数目已经足够的时候,基于PID从TS包的有效负载中提取数据,以便重构PES包。然后,从PES包中去除PES的头部,并将PES包作为基本码流/传输给CDB110。
在步骤S12中,流图形处理器111将从PES包中提取的基本码流扩展为段。然后在步骤S13到S17中,分别确定所扩展的段是否为PCS,WDS,PDS,ODS,或结束段。然后,根据所确定的结果执行处理。如附图19或附图21所讨论的,基于语法中第一个模块segment_description()的第一个域segment_type,确定段的类型。虽然并未示出,但以类似的方式,也可以确定WDS和ODS的段的类型。
在步骤S13中,确定该段是否是PCS。如果发现该段是PCS,则根据附图19所讨论的PCS的语法中模块composition_descriptor()中的域composition_state,处理进行至步骤S19,从而确定包括该PCS的显示集是否为时间点起始显示集。
如果在步骤S19中发现该显示集是时间点起始显示集,则处理进行至步骤S20。在步骤S20中,清除涉及字幕显示的缓冲器,例如DB112和CB113。这样,也可以清除CDB110。在步骤S21中,根据DTS所表示的时间,将PCS写入在步骤S20清除的CB113中。然后,处理返回至步骤S10,且获得下一个包。
如果在步骤S19中确定包括该PCS的显示集不是时间点起始显示集,则处理进行至根据DTS所表示的时间,将PCS写入CB113的步骤S22。这样,将PCS写入CB113的预定空间。
如果在步骤S13中确定该段不是PCS,则处理进行至步骤S14,从而确定该段是否为WDS。如果发现该段是WDS,则处理进行至步骤S23。在步骤S23中,根据DTS所表示的时间,将WDS写入CB113中。然后,处理返回至步骤S10,并获得下一个包。如果在步骤S14中确定该段不是WDS,则处理进行至步骤S15,从而确定该段是否为PDS。
如果发现该段是PDS,则处理进行至步骤S24。在步骤S24中,立即将PDS写入CB113中。由于PDS并不具有DTS,但具有PTS,所以,在将其确定为PDS之后,立即将其写入CB113。然后,处理返回至步骤S10,并获得下一个包。如果在步骤S15中确定该段不是PDS,则处理进行至步骤S16,从而确定该段是否为ODS。
如果发现该段是ODS,则处理进行至步骤S25。在步骤S25中,根据DTS所表示的时间,解码ODS中存储的游程长度处理的位图数据,并将其写入DB112。然后,处理返回至步骤S10,并获得下一个包。如果在步骤S16中确定该段不是ODS,则处理进行至步骤S17,从而确定该段是否为作为显示集结束的结束段。
如果发现该段是结束段,则结束关于该显示集的处理序列。
如果在步骤S17中确定该段不是结束段,则处理进行至步骤S18。也就是说,确定发生某一误差,并执行预定误差处理。
在上述配置中,根据PCS中定义的PTS,从CB113输出用于显示字幕的PCS,且显示该字幕之后,从CB113中删除PCS。然而,根据该方案,如果用户给出关闭字幕显示的指令,则在时间到达PCS中定义的PTS时,很难重现该字幕,即使用户试图通过开启字幕的显示来重现该字幕。
因此,从DB112中单独提供用于存储当前激活ODS的缓冲器,并且,从CB113中单独提供用于存储当前激活PCS和PDS的缓冲器。响应于开启字幕显示的指令,利用DB112和CB113中单独提供的缓冲器所存储的ODS,PCS,和PDS,形成字幕图像和颜色调色板表格,并将其分别写入图形面板103和CLUT104。
“激活”意味着PTS所指示的相应段的显示的状态,且更具体地说,从某一PCS中定义的PTS开始,到下一个用于显示字幕的PCS中定义PTS的一段时间。
也就是说,图形控制器114根据PCS中定义的PTS,将CB113输出的PCS提供给图形面板103和CLUT104,并且还保留CB113中单独提供的缓冲器中的PCS,直到到达下一个PCS中定义的PTS的时间。上述内容同样适用于ODS。图形控制器114根据PTS,将DB112输出的ODS提供给图形面板103,并且还保留DB112中单独提供的缓冲器中的ODS,直到到达下一个PCS中定义PTS的时间。
根据该配置,如果在根据用户操作关闭字幕显示之后重构字幕的显示,则与开启字幕显示的指令同步,立即重新开启字幕的显示。
也就是说,响应于关闭字幕显示之后开启字幕显示的指令,从CB113单独提供的缓冲器中读取PCS,且还从DB112单独提供的缓冲器中读取ODS,并且利用所读取的PCS和ODS,形成字幕图像。然后,将字幕图像写入图形面板103。上述内容同样适用于PDS。响应于开启字幕显示的指令,从CB113单独提供的缓冲器中读取PDS,且利用所读取的PDS,形成颜色调色板表格。然后,将颜色调色板表格写入CLUT104。
附图32是描述图形解码器102在IG数据显示集的单元中所执行的处理的的流程图。附图32所示出的处理与附图31中示出的对PG数据的处理相类似,除了对PG数据所特有的WDS的处理之外。
在步骤S30中,PID滤波器100基于PID从TS包中获得存储IG数据的TS包,并将所获得的TS包存储在TB101中。然后,在步骤S31中,从TB101中存储的TS包的有效负载中提取数据,并重构PES包。然后,从PES包中去除PES的头部,并将PES包作为基本码流传输给CDB110。
在步骤S32中,流图形处理器111将从PES包中提取的基本码流扩展为段。然后在步骤S33到S36中,分别确定所扩展的段是否为ICS,PDS,ODS,或结束段,并根据所确定的结果执行处理。如附图24所讨论的,基于语法中第一个模块segment_description(),确定段的类型。虽然并未示出,但以类似的方式,也可以确定ODS的段的类型。
在步骤S33中,确定该段是否是ICS。如果发现该段是ICS,则根据附图24所讨论的ICS的语法中模块composition_descriptor(),处理进行至步骤S38,从而确定包括该ICS的显示集是否为时间点起始显示集。
如果在步骤S38中发现该显示集是时间点起始显示集,则处理进行至步骤S39。在步骤S39中,清除涉及菜单显的示的缓冲器,例如DB112和CB113。这样,也可以清除CDB110。然后,在步骤S40中,根据DTS所表示的时间,将ICS写入在步骤S39清除的CB113中。然后,处理返回至步骤S30,且获得下一个包。
如果在步骤S38中确定包括该ICS的显示集不是时间点起始显示集,则处理进行至步骤S41。在步骤S41中,根据DTS所表示的时间,将ICS写入CB113。这样,将ICS写入CB113的预定空间。
如果在步骤S33中确定该段不是ICS,则处理进行至步骤S34,从而确定该段是否为PDS。如果该段不是PDS,则处理进行至步骤S35,从而确定该段是否为ODS。如果该段不是ODS,则处理进行至步骤S36,从而确定该段是否为结束段。如果在步骤S34中发现该段是PDS,则在步骤S42中立即将PDS写入CB113。如果在步骤S35中发现该段是ODS,则在步骤S43中根据DTS所表示的时间,解码ODS并将其写入DB112。
以下,将讨论适用上述解码器模型的回放设备。附图33描述了基于上述解码器模型的回放设备1的配置。回放设备1包括存储驱动器50,PID滤波器51,AV解码器52,和控制器53。存储驱动器50能够在其中安装上述BD-ROM,并对其进行播放。
控制器53包括中央处理单元(CPU),预存储CPU上所运行程序的ROM,当CPU执行程序时用作工作存储器的随机存取存储器(RAM)等。根据该配置,控制器53控制回放设备1的所有操作。
提供具有用户界面的回放设备1,该用户界面可以向用户提供预定控制信息,并且还响应于用户操作输出控制信号,虽然上述用户界面并未示出。例如,使用通过预定无线通信单元,例如,红外通信单元,执行与回放设备1的远程通信的远程控制器作为用户界面。在该远程控制器上,提供多个输入单元,该多个输入单元诸如例如,横向键之类的指定上,下,左,和右方向的方向键,数字键盘,分配有多个功能的功能键盘。
远程控制器根据在一个输入单元上执行的操作,产生一个控制信号,并将所产生的信号调制为,例如,红外信号,然后,传输该红外信号。回放设备1通过红外接收器(未示出)接收该红外信号,并将该红外信号解调为电信号,从而重构源控制信号。然后将该控制信号提供给控制器53。响应于该控制信号,控制器53根据程序控制回放设备1的操作。
用户界面并不局限于远程控制器,但可以在回放设备1的操作面板上提供一个开关组。作为选择,可以为回放设备1提供通过,例如局域网,执行通信的通信单元作为用户界面,且可以将通过该通信单元从外部计算机提供的信号,作为用户界面所提供的控制信号提供给控制器53。
在回放设备1的非易失性存储器中存储关于语言设置的初始信息。从非易失性存储器中读取语言设置的初始信息,并当例如,回放设备1通电时,将其提供给控制器53。
当将光盘载入存储驱动器50时,控制器53通过存储驱动器50从光盘上读出文件“index.bdmv”和文件“MovieObject.bdmv”,并基于所读取文件的说明,读出目录“PLAYLIST”中的播放列表文件。然后控制器53通过存储驱动器50从光盘上读出播放列表文件中包括对播放项所涉及的剪辑AV流文件。如果播放列表包括子播放项,则控制器53还通过存储驱动器50从光盘上读出于播放项所涉及的剪辑AV流文件和字幕数据。
下文中,对应于子播放项的剪辑AV流被称为“子剪辑AV流”,且对应于与子播放项相关的主播放项的剪辑AV流被称为“主剪辑AV流”。
然后,由解调器(未示出)解调从存储驱动器50输出的数据,且由误差校正器(未示出)对其执行误差校正处理,以便重构多路复用流。多路复用流是一传输流,该传输流中在通过PID识别数据类型和数据顺序之后,将数据划分为具有预定尺寸的较小的部分,并将较小的部分进行时分多路复用。PID滤波器51根据基于PID类型对数据进行分类。更具体地说,PID滤波器51将主剪辑AV流包提供给缓冲器60,将子剪辑AV流包提供给缓冲器61,将声音数据包提供给缓冲器62,以及将文本数据包提供给缓冲器63。
在控制器53的控制下,以逐包处理为基础,从缓冲器60中读取存储在缓冲器60中的主剪辑AV流包,并将其提供给PID滤波器64。PID滤波器64基于包的PID将包分类至视频流包,PG流包,IG流包,和音频流包。
在控制器53的控制下,以逐包处理为基础,从缓冲器61中读取存储在缓冲器61中的子剪辑AV流包,并将其提供给PID滤波器90。PID滤波器90基于包的PID将包分类至视频流包,PG流包,IG流包,和音频流包。
将PID滤波器64所分类的视频流包和PID滤波器90所分类的视频流包,提供给PID滤波器65,并根据PID对它们进行分配。也就是说,PID滤波器65将PID滤波器64输出的主剪辑AV流包提供给第一视频解码器69,并将PID滤波器90输出的子剪辑AV流包提供给第二视频解码器72。
第一视频解码器69从所提供包的有效负载中提取预定视频流,并对所提取视频流的MPEG2压缩码进行解码。然后,第一视频解码器69将已解码的数据输出至第一视频面板产生器70,并产生视频面板。这样,通过例如,将基带数字视频数据写入画面存储器,产生视频面板。将第一视频面板产生器70中产生的视频面板,提供给视频数据处理器71。
分别由第二视频解码器72和第二视频面板产生器73,执行类似于第一视频解码器69和第一视频面板产生器70所执行的处理,以便解码视频流,并产生视频面板。将第二视频面板产生器73中产生的视频面板,提供给视频数据处理器71。
视频数据处理器71将第一视频面板产生器70中产生的视频面板和第二视频面板产生器73中产生的视频面板,插入至一个画面中,从而产生一个视频面板。通过选择生的使用第一视频面板产生器70中产生的视频面板和第二视频面板产生器73中产生的视频面板,可以产生一个视频面板。所产生的视频面板,对应于例如,附图9中示出的活动图像面板10。
将PID滤波器64所分类的PG流包和PID滤波器90所分类的PG流包,提供给PID滤波器66,且选择PG流包的一种类型,并将其提供给PG解码器74。
PG解码器74,对应于附图29所讨论的解码器模型中的图形解码器102。这样,附图32所示出的PID滤波器100和TB101,分别对应于PID滤波器64和缓冲器(未示出)。
PG解码器74从所提供包的有效负载中提取预定PG流包,并对PG流包进行解码,从而产生显示字幕所用的图形数据。然后,PG解码器74将该图形数据提供给PID滤波器75。也就是说,PG解码器74从所提供包的有效负载中提取数据,并基于PID重构PES包。如果DTS和/或PTS包括在所重构的PES包的头部中,则PG解码器74提取DTS和/或PTS,并将其存储在PTS/DTS缓冲器150中,且还对有效负载的数据进行解码,从而形成PCS,WDS,PDS,和ODS。在相应DTS所表示的时间,将PCS,WDS,PDS,和ODS均存储在DB112或CB113中,且在相应PTS所表示的时间,将其从PG解码器74中输出。将PCS,WDS,PDS,和ODS均提供给PID滤波器75。
PID滤波器75以如下所述的文本数据的形式,选择预定图形数据和字幕数据,并将所选择的数据提供给PG面板产生器76。PG面板产生器76基于所提供的数据产生PG面板,并将PG面板提供给视频数据处理器71。PG面板对应于例如,附图9所讨论的字幕面板11,且还对应于附图29所讨论的图形面板103中存储的字幕图像。
将PID滤波器64所分类的IG流包和PID滤波器90所分类的IG流包,提供给PID滤波器67,且选择IG流包的一种类型,并将其提供给IG解码器77。
IG解码器77,对应于附图29所讨论的解码器模型中的图形解码器102。这样,附图29所示出的PID滤波器100和TB101,分别对应于PID滤波器67和缓冲器(未示出)。
IG解码器77从所提供的IG包中提取ICS,PDS,和ODS,并对ICS,PDS,和ODS进行解码。例如,IG解码器77从所提供包的有效负载中提取数据,并基于PID重构PES包。如果DTS和/或PTS包括在所重构的PES包的头部中,则IG解码器77提取DTS和/或PTS,并将其存储在PTS/DTS缓冲器150中,且还对有效负载的数据进行解码,从而形成IG流包的ICS,PDS,和ODS。在PTS/DTS缓冲器150所存储的相应DTS所表示的时间,将ICS和ODS进行解码,然后将其存储在DB112中。PDS立即被解码并存储在CB113中。
IG解码器77中,在PTS/DTS缓冲器150所存储的PTS所表示的时间,从DB112或CB113中读出相应段,并通过预载入缓冲器78将其提供给IG面板产生器79。IG面板产生器79基于所提供的段,产生IG面板。该IG面板对应于,例如,附图9所讨论的IG面板12。
视频数据处理器71包括,例如,附图11所讨论的图形处理器,且对视频面板(附图11中示出的活动图像面板10),PG面板(附图11中示出的字幕面板11),和IG面板(附图11中示出的IG面板12)进行合并,从而形成一段图像数据,并将该图像数据作为视频信号输出。
以下,将讨论在附图11中PG面板(即,字幕图像)的情况下的细节。调色板22A,RGB/YCbCr转换电路22B,和乘法器23,对应于附图29中所讨论的CLUT104。将颜色信息添加至调色板22A和RGB/YCbCr转换电路22B中的PG面板,且将不透明信息添加至乘法器23中的PG面板。然后,分别将所得到的PG面板与加法器24和加法器28中的视频面板和IG面板,以便输出一段图像数据。
将PID滤波器64所分类的音频流和PID滤波器90所分类的音频流,提供给PID滤波器68。PID滤波器68切换PID滤波器68的开关,以便将音频流的一种类型,提供给第一音频解码器80,并且,将其他类型的音频流提供给第二音频解码器81。第一音频解码器80和第二音频解码器81中解码的音频流在加法器82中进行合并,且进一步还在加法器83中将所加得的音频流与从缓冲器62中读取的声音数据相合并。然后,输出所得到的音频信号。
在文本-ST合成单元91中处理从缓冲器63中读取的文本-ST,并将其提供给PID滤波器75。
现在,下面将说明本发明的一个实施例。在BD-ROM标准中,定义PG数据或IG数据中所使用的段的数目,和上述解码器模型中所使用的缓冲器的缓冲区尺寸。在本发明的一个实施例中,提供数据结构和记录该数据结构的记录介质,该数据结构满足所定义的条件,例如,PG数据或IG数据所使用的段的数目和缓冲器的缓冲区尺寸。在本发明的一个实施例中,提供了用于产生该数据结构的创作设备和方法,用于在记录介质上记录该数据结构的记录设备和方法,以及用于制造该记录介质的制造设备和方法。在本发明的一个实施例中,提供了用于确定所产生数据是否满足BD-ROM标准所定义的条件,诸如PG数据或IG数据所使用的段的数目和缓冲器的缓冲区尺寸,的验证设备和方法。
下面,将简要讨论本发明相关的BD-ROM标准中PG数据或IG数据所定义的条件。对PG数据和IG数据中的每一个,定义在一个时间点内段的数目的上限。由于该上限,就PG数据来说,能够限制一个时间点内所使用的字幕图像数据的数目,并且,就IG数据来说,能够定义一个时间点内所使用的页,命令或按钮图像数据的数目。
一个时间点内PG数据的段的数目的上限为,例如,下面在附图34A所示的:8个PCS,1个WDS,8个PDS,64个ODS,以及8个结束段。一个时间点内IG数据的段的数目的上限为,例如,下面在附图34B所示的:1个ICS,256个PDS,4096个ODS,以及1个结束段。
基于例如,段的数目的上限,如上所述,确定CDB110,DB112,CD113和PTS/DTS缓冲器150的最小容量。
例如,对CDB110,定义CDB110中所能够存储的段的数目的上限。也就是说,如果段的数目超过图形流处理器111的处理能力,且下一个阶段存储在CDB110中,则可以打乱处理。例如,如果超过DB112和CB113中所能存储段数目的段的数目,存储在CDB110中,则根据段的DTS和PTS之间的关系,不能将从CDB113中读出并在DTS所表示的时间对其进行解码的段,存储在DB112和CB113中。
因此,基于DB112和CB113中存储的段的数目,确定CDB110中存储的段的数目的上限。如同一个特定的实例,对于PG数据,基于一个时间点内PG数据的段的数目的上限,如附图34A所讨论的,确定8(PCS)+1(WDS)+8(PDS)+64(ODS)+8(结束段)=89为CDB110中所能存储的段的数目的上限。实际上,对该上限添加某个余量,且将CDB110中能够存储的PG数据的段的数目的上限,设置为,例如,128。
对IG数据应用相同的处理。也就是说,对于IG数据,基于一个时间点内IG数据的段的数目的上限,如附图34B所讨论的,确定1(ICS)+256(PDS)+4096(ODS)+1(结束段)=4354为CDB110中所能存储的段的数目的上限。实际上,对该上限添加某个余量,且将CDB110中能够存储的IG数据的段的数目的上限,设置为,例如,5120。
基于CDB110中能够存储的段的数目的上限,确定用于PG数据的PTS/DTS缓冲器150的最小容量。基于DB112和CB113中能够存储的段的数目,确定CDB110中能够存储的段的数目的上限,如上所述。因此,下面将确定用于PG数据PTS/DTS缓冲器150的最小容量。
在形成PG数据的各段中,由于END段不具有DTS,并且不存储在DB112或CB113中,所以为了计算PTS/DTS缓冲器150的最小容量不需对END段进行计数。由于PDS不具有DTS,但可以存储在CB113中,所以可以为了计算PTS/DTS缓冲器150的最小容量而对PDS进行计数。因此,基于PCS,WDS,PDS,和ODS的数目的上限,评估与PG数据相一致的解码器模型中PTS/DTS缓冲器150的最小容量。
如果将附图30所示出数据结构的所有的域存储在每一个段中,则数据尺寸变为(8+1+8+64)×12字节=972字节,且与PG数据相一致的解码器模型中PTS/DTS缓冲器150的最小容量被评估为972字节。实际上,对该最小容量添加某个余量,且将PTS/DTS缓冲器150中的最小容量评估为约1.6KB。
与PG数据的情况相同,基于CDB110中能够存储的段的数目的上限,确定对于IG数据的PTS/DTS缓冲器150的最小容量。如上所述,基于DB112和CB113中能够存储的段的数目,确定CDB110中能够存储的段的数目的上限。因此,下面将确定对于IG数据的PTS/DTS缓冲器150的最小容量。
在形成IG数据的各段中,由于结束段不具有DTS,且不存储在DB112或CB113中,所以可以为了计算PTS/DTS缓冲器150的最小容量而不对结束段进行计数。由于PDS不具有DTS,但可以存储在CB113中,所以可以为了计算PTS/DTS缓冲器150的最小容量而对PDS进行计数。因此,基于ICS,PDS,和ODS的数目的上限,评估与IG数据相一致的解码器模型中PTS/DTS缓冲器150的最小容量。
如果将附图30所示出数据结构的所有的域存储在每一个段中,则数据尺寸变为(1+256+4096)×12字节=52236字节,且与IG数据相一致的解码器模型中PTS/DTS缓冲器150的最小容量被评估为52236字节。实际上,对该最小容量添加某个余量,且将PTS/DTS缓冲器150的最小容量评估为约64KB。
以下将根据本发明的一个实施例,描述PG数据或IG数据的数据结构。该实施例中,提供PG数据和/或IG数据的数据结构,该数据结构满足以下条件,即,在某一时间点,从光盘中读取并存储在作为解码缓冲器的CDB110中的段的数目,不超过CDB110中能够存储的段的数目的上限。
以下将参考附图35,根据本发明的一个实施例,讨论PG数据或IG数据的数据结构的概念。现在假定CDB110中能够存储的段的数目的上限为N。附图35示意性的描述了在某一时间点CDB110的状态。在CDB110中,如附图35所示,已存储作为能够存储在CDB110中的段的数目的上限的N段,诸如段Seg#n,Seg#n+1,Seg#n+2,......,Seg#n+N-2,Seg#n+N-1。Seg#m和Seg#m+1是将提供给CDB110的段。
附图35中,段的排列的顺序与提供段的顺序相对应,且向右边的时间较早。例如,段Seg#n是存储在CDB110中的段中,在最早的时间存储在CDB110中的段。段Seg#m+1和Seg#m是还未存储在CDB110中,且以后将要存储在CDB110中的段。段Seg#m下一个将要存储在CDB110中的段。
对每一个段指定DTS。在附图35示出的状态中对最陈旧的段Seg#n指定DTS#n。将要提供给CDB110的段的顺序,对应于为各段指定的DTS的时序顺序。
如果在该状态下将Seg#m提供给CDB110,则为了满足以下条件,即,CDB110中存储的段的数目,不超过CDB110中存储的段的数目的上限N,在将Seg#m提供给CDB110之前,从CDB110中输出至少一个段。
更具体地说,如果将段Seg#m存储在CDB110的时间RT#m,晚于在最早的时间从CDB110中输出的段Seg#n所指定的DTS#n,则当将段Seg#m提供给CDB110时,CDB110中存储的段的数目并未超过段的数目的上限N。
换句话说,提供以下数据结构。现在假定基于某一段x,在段x之前CDB110中存储的段的最大值限制在N内。这样,表示为N段指定的DTS中最早时间的DTS,应早于CDB110中存储段x的时间。根据该数据结构,可以一直满足由CDB110中的段的数目的上限所定义的条件。
现在,考虑CDB110中存储段x的时间。如附图33中示出的,从由光盘中读取并由存储驱动器50输出的一个数据流开始,在PID滤波器51中选择一个主剪辑AV流,并将其临时存储至缓冲器60。然后,以TS逐包处理为基础,从缓冲器60读出主剪辑AV流。也就是说,从缓冲器60输出对视频流包,音频流包,PG流包,和IG流包进行多路复用的剪辑AV流,作为排列在逻辑结构中的包。
在PID滤波器64中分类从缓冲器60中读出的包,并在PID滤波器65至68中基于PID对其进行选择,且将所选定的包提供给相应的模块。例如,PID滤波器64和66对PG流进行选择,且立即将它们形成段,并将其提供给PG解码器74。然后,将提供给解码器74的段存储在CDB110中。
附图36A和36B示意性的描述了将数据流从缓冲器60提供给PG解码器74或IG解码器77的流程。附图36A描述了基于附图29所讨论的解码器模型的数据流的流程。在BD-ROM标准所定义的解码器模型中,以每秒48兆位(Mbps)的传输率,将数据流提供给PID滤波器100。以48Mbps的传输率从TB101中输出基于PID在PID滤波器100中进行分类的TS包,并将其提供给CDB110。
附图36B描述了将基于附图36A所示解码器模型的数据流应用于附图33所示回放设备1的实例。这样,对于PG数据,解码器模型的PID滤波器100和TB101,分别对应于PID滤波器64和PID滤波器66,且对于IG数据,PID滤波器100和TB101,分别对应于PID滤波器64和PID滤波器67。因此,在PG数据的情况下,以48Mbps的传输率从缓冲器60输出的流中选择PG包,且在PID滤波器64和66中立即将它们形成段,并以48Mbps的传输率将其提供给PG解码器74。将提供给PG解码器74的段存储在PG解码器74的解码缓冲器(对应于CDB110)内。
下面将根据附图37更具体地进行说明。在附图37中,多个方块表示TS包,V,A,P,和I分别表示视频包,音频包,PG包,和IG包。在附图37中,向右边的时间较早。附图37的A部分表示缓冲器60输出的数据流的实例。缓冲器60的输出是对视频包,音频包,PG包,和IG包进行多路复用的多路复用包流。
如上所述,根据回放设备1中PID滤波器64到68中的数据类型,对包括缓冲器60输出的不同类型包的包流进行选择,并且还将PG数据和IG数据重构为PES包(未示出),并基于该PES包形成段。
对于PG数据的情况,如附图37的B部分所示,在将PG数据提供给PID滤波器64和66时,对PG数据所包括的包P1,P2,......进行选择,并存储在缓冲器内。然后,如上所述,当缓冲器中存储的能够重构为PES包的TS包的数目足够多时,重构PES包。也就是说,将划分为TS包的段统一为PES包。如附图37的B部分所示,TS包P1,P2和P3形成一个段。
对IG数据应用相同的处理。如附图37的C部分所示,在将IG数据提供给PID滤波器64和67时,对IG数据所包括的包I1,I2,......进行选择,并存储在缓冲器内。然后,当缓冲器中存储的能够重构为PES包的TS包的数目足够多时,重构PES包。也就是说,将划分为TS包的段统一为PES包。如附图37的C部分所示,TS包I1,I2和I3形成一个段。
以这样的方式,形成一个段,并在形成段的TS包中,当将缓冲器60最近输出的TS包提供给相应PID滤波器时,将其立即提供给解码器。
对于PG数据,如附图37的B部分所示,在形成一个段的TS包P1,P2和P3中,缓冲器60最近输出的TS包为TS包P1。在将TS包P1提供给PID滤波器64和66的时刻(附图37中的时间RTp1-3),形成一个段,并几乎在该时间RTp1-3,将其提供给PG解码器74。
对IG数据应用相同的处理。如附图37的C部分所示,在形成一个段的TS包I1,I2和I3中,缓冲器60最近输出的TS包为TS包I1。在将TS包I1提供给PID滤波器64和67的时刻(附图37中的时间RTI1-3),形成一个段,并几乎在该时间RTI1-3,将其提供给IG解码器77。
因此,如果TS包的逻辑顺序已知,则在基于某一TS包的相对时间,评估要将段提供给PG解码器74或IG解码器77的时间。换句话说,基于TS包的顺序,能够唯一的确定将段提供给CDB110的时间RT。
如果定义存储在解码缓冲器中的PG数据或IG数据的段的数目的上限N,则一直满足该上限N的数据结构将如下所述。
现在,假定为各段指定的DTS的顺序与提供各段的顺序相对应。就附图35所示某一段Seg#m来说,在为早于段Seg#m而提供给解码缓冲器的N个连续的段所指定的DTS中,对应于最早时间的DTS将早于将段Seg#m提供给解码缓冲器的时间RT#m。为了满足该条件,指定各段的DTS,并排列形成各段的TS包。
如上所述,基于TS包的顺序,能够唯一的确定将段Seg#m提供给解码缓冲器的时间RT#m。
以预定顺序排列包括除PG数据和IG数据以外的数据,例如,视频数据和音频数据,的TS包。因此,PG数据和IG数据的TS包,和视频数据和音频数据的TS包相互相关。通常,最好将PG数据或IG数据的TS包分组到一个预定单元,诸如显示集,这样的话,能够便于管理或验证。
以下,将根据本发明的一个实施例,给出用于产生上述数据结构的方法,和用于制造将该数据结构记录于其上的记录介质的方法的说明。附图38是描述用于制造一记录介质的流程图,该记录介质可以将包括视频数据,音频数据,PG数据,和IG数据的多路复用流记录于其上。如附图38所示,从产生内容到将该内容形成为光盘的处理,被称为“创作处理”。
利用例如,计算机上执行的预定软件,执行该创作处理。诸如视频数据,音频数据,字幕数据和菜单显示数据之类的不同材料的数据,均记录在诸如硬盘驱动器,之类的连接在计算机上的外部存储设备上。作为选择,还可以将材料数据记录在计算机的硬盘上,或者如果提供具有网络连接功能的计算机,则通过网络,从外部源提供材料数据。
在步骤S50中,获得视频数据,音频数据,字幕数据和菜单显示数据,且以预定时序顺序排列上述数据项,以便确定回放时间。因此,创建将要在记录介质上记录的内容。
然后,在步骤S51中,对视频数据,音频数据,字幕数据和菜单显示数据中的每一个进行编码,并从相应的数据项中产生基本码流。更具体地说,从视频数据和音频数据中产生基本码流。基于字幕数据,产生形成PG数据的诸如PCS,WDS,PDS,和ODS的段。同样,基于菜单显示数据,产生形成IG数据的诸如ICS,PDS,和ODS的段。对于PG数据和IG数据,均产生结束段。
然后,在步骤S52中,对步骤S51中产生的基本码流进行多路复用。更具体地说,根据数据类型,将步骤S51中产生的每一个基本码流划分为较小的部分,且如果需要则将PTS和DTS添加至多个所划分的部分,且将所划分的多个部分形成一个PES包。然后,将PES包划分为较小的部分,并且将表示数据类型的PID添加至每一个划分后的部分,从而得到TS包。以对应于DTS的顺序,排列形成视频数据,音频数据,PG数据和IG数据的TS包,然后,将对应数据类型的TS包多路复用为逻辑顺序中一个单独的数据流。
在步骤S53中,执行步骤S52中所产生的数据流的验证。对于PG数据或IG数据,确定所产生的数据流的逻辑顺序,是否满足本发明实施例的预定数据结构的条件。如果发现该逻辑顺序满足步骤S53中的条件,则处理进行至步骤S54。如果该逻辑顺序不满足该条件,则处理返回至步骤S52。在步骤S52中,例如,对TS包进行重新排列,并重新多路复用为一个数据流,从而满足预定数据结构的条件。如果不满足步骤S53中的条件,则所采用的方法,并不局限于上述处理,且如附图38中虚线所示,根据不满足该条件的原因,该处理返回至步骤S51,并对该数据进行重新编码。以下,将说明用于步骤S53中的验证步骤所指定的处理。
在步骤S54中,对步骤S53中验证的数据流进行格式化。在格式化处理中,在步骤S54中,创建基于数据流,例如,上面所讨论的剪辑信息文件中存储的信息,的数据库。将该格式化处理中产生的数据和数据流,构建入一个文件系统。例如,将数据和数据流存储到多个预定文件中,然后从各文件(参见附图6)构建一个层次结构。然后提供逻辑存取单元。与该文件系统相同,可以使用例如,统一磁盘格式(UDF)。
此外,在BD-ROM标准中,将具有4字节数据长度的预定头部添加至TS包,且然后,将所得到的TS包作为源包记录在光盘上。以这样的方式,在步骤S54的格式化处理中,还可以通过将一个头部添加至TS包,执行源包的构成。
然后,在步骤S55中,执行对所格式化数据流的验证。在该验证处理中,基于到步骤S54为止所产生的文件或文件系统,产生一个光盘图像,并将其回放,从而确定到步骤S54为止该创作处理的结果是否正确。
产生光盘图像,作为反映目标记录介质,诸如光盘上所记录图像的数据。例如,如果对以扇区为单元的记录数据,目标记录介质是光盘,则以扇区为单元创建作为位图数据的数据。
如果在步骤S55中作为验证处理的结果,确定到步骤S54为止的创作处理的结果是正确的,则处理进行至步骤S56。在步骤S56中,从流数据中产生一个光盘。如果作为步骤S55中验证处理的结果,发现在所格式化数据中存在误差,即,到步骤S54为止的创作处理的结果是不正确的,则处理返回至对数据流重新进行格式化的步骤S54。如果步骤S55中的验证处理失败,则所采用的方法,并不局限于上述处理。根据误差的原因,该处理返回至步骤S51,并对该数据进行重新编码
在步骤S56中,从步骤S55所验证的光盘图像中产生一个光盘。例如,对所验证的数据执行误差校正编码处理,然后,对其执行记录编码处理。然后,以预定方式对所得到的记录数据进行调制,且在现在,准备将所得到的信号记录到记录介质上。基于该信号,产生一个母盘。下面,将说明母盘产生的过程。
在上述实例中,在多路复用处理之后执行2次验证处理,并且也在格式化处理之后。作为选择,仅在格式化处理之后执行1次验证处理。这样,如果作为验证处理的结果,发现一个误差,根据误差的类型,处理返回至步骤S51中的编码处理,步骤S52中的多路复用处理,或步骤S54中的格式化处理。
下面,将特别讨论步骤S53中验证处理的细节。在步骤S60中,从记录介质上所记录的所有TS包中重构PES包,且从PES包中重构各段。
然后,在步骤S61中确定重构的各段是否按DTS的顺序排列。如果在步骤S61中发现各段不是按DTS的顺序排列,则处理进行至执行误差处理的步骤S68。例如,处理返回至附图38的流程图中的步骤S52,且在多路复用处理中,重新排列TS包,以便使各段的顺序与DTS的顺序相匹配。作为选择,处理可以返回至步骤S51,如附图38中虚线所示,且再一次执行编码处理,以便可以改变DTS,并为各段提供DTS。
相反,如果在步骤S61中确定各段是按DTS的顺序排列,处理进行至步骤S62。在步骤S62中,如果为所有的段设置DTS,则获得各DTS。然后,在步骤S63中,如上所述,基于TS包的顺序,确定将该段提供给解码缓冲器的时间RT,。从该处理中排除不与DTS或PTS一起提供的结束段。
然后,在步骤S64中,通过提供等于N的数量的段,将目标段的DTSn与在目标段之后将段提供给解码缓冲器的时间RTn+N相比较。如果该流程图中第一次执行步骤S64,则目标段可以是所有段中最早时间提供给解码缓冲器的段。在步骤S65中,确定目标段的DTS是否早于时间RTn+N。将所确定的结果存储到预定寄存器中。
然后,在步骤S66中确定是否已处理除结束段之外的所有段。如果存在未处理的段,则处理返回至步骤S64,步骤S64中,将未处理的段设置为目标段,并通过提供等于N的数量的段,将下一个目标段的DTSn与在目标段之后将段提供给解码缓冲器的时间RTn+N相比较。
事实上,除结束段之外的所有段中,最后处理的第(N-1)个段,可以从该处理中排除。
如果步骤S66中所有段均已处理,则处理进行至步骤S67,从而基于步骤S64中所获得的确定结果,确定是否违反解码缓冲器中能够存储的段的数目的上限N的条件。如果违反了上限N的条件,则处理进行至执行误差处理的步骤S68。
例如,处理返回至附图38的流程图中的步骤S52。基于步骤S67中的确定结果,对于发现违反上限N的条件的一组段,即,对于形成该组的每一个段,它的DTSn都晚于通过提供等于N的数量的段,将在目标段之后将段提供给解码缓冲器的时间RTn+N,则对TS包进行重新排列和多路复用,以便使时间RTn+N晚于DTSn。作为选择,处理返回至步骤S51,如附图38中虚线所示,其中,再一次执行编码处理,且改变并提供DTS。
在上述实例中,对将记录在记录介质上的所有段,执行验证处理。然而,可以在每一个播放列表的一组段上执行验证处理。作为选择,可以对每一个标题的一组段执行验证处理。
附图39中示出的处理仅仅表示实现本发明一个实施例的一种方法的一个实例,且本发明并不局限于该处理。
附图39中示出的处理是附图38所讨论的创作处理的一个步骤。然而,附图39所示出的处理可以作为用于所创建光盘或完整的光盘的验证处理而独立执行。这样,在步骤S68的误差处理中,可能指出误差的存在,且如果存在的话,还指出误差的位置。
附图40描述了执行附图38和39所讨论的创作处理的创作设备2的配置。该创作设备2包括CPU,RAM,ROM,硬盘驱动器等等,虽然它们并未示出。CPU通过使用RAM作为网络存储器,基于ROM或硬盘驱动器中存储的程序,控制整个创作设备2。利用,例如,计算机,形成该创作设备2。作为选择,可以通过用于执行创作处理的专用硬件形成该创作设备2。
存储器200包括一个或多个硬盘驱动器,并将所要记录的内容材料,诸如视频数据,音频数据,字幕数据,和用于显示菜单屏幕的按钮图像数据,存储在光盘上。
用户界面(UI)单元204提供用户界面,该用户界面对存储器200所存储的数据进行选择或创建,该数据诸如作为内容材料的视频数据或音频数据,与内容材料一起显示的字幕数据,和用于显示菜单屏幕的按钮图像数据。UI单元204在监视器(未示出)上显示用户界面屏幕,诸如附图41所示。该用户基于用户界面屏幕,在创作设备2上执行预定操作,从而允许创作设备2执行创作处理。
在附图41所示实例中,用户界面屏幕包括时间轴屏幕400和存储屏幕410。在存储屏幕410上,显示存储器200中存储的数据列表。在存储屏幕410上,例如,内容材料411,诸如视频数据和音频数据,将被显示在区域410A中,在区域410B中存储字幕图像数据412,且在区域410C中存储用于显示菜单屏幕的,诸如按钮图像的图像数据413,将上述数据作为预定图标显示。
UI单元204还显示时间轴屏幕400。在时间轴屏幕400上,水平轴表示时间序列,且在时间比例尺401上示出时间信息。用户选择通过使用指定装置,诸如鼠标,用已知方法,诸如施放操作,在存储屏幕410上显示的内容材料,字幕图像数据,或图像数据,诸如按钮图像,并且基于时间比例尺401将所选定的数据放置在时间轴屏幕400上。在附图41所示的实例中,在时间轴屏幕400上安排视频和音频数据402,字幕图像数据403A和403B,以及菜单屏幕404。基于数据的位置,确定单个数据的显示时间和流结构。
附图41所示的用户界面屏幕,是仅仅用于实现该实施例的实例,且该实施例中使用的用户界面屏幕并不局限于附图41中所示出的。
响应于来自于UI单元204的开始对数据进行编码的指令,根据用户执行的预定操作,基于对时间轴屏幕400所显示数据的选择,从存储器200读取视频数据,音频数据,字幕图像数据,和图像数据,诸如显示菜单屏幕所用的按钮图像,且将上述数据提供给视频编码器201,音频编码器202和数据编码器203。
视频编码器201和音频编码器202分别对从存储器200中读取的视频数据和音频数据进行编码,从而分别产生视频数据基本码流和音频数据基本码流。
数据编码器203对从存储器200中读取的字幕图像数据进行编码,从而产生由PG数据,即,PG流,表示的基本码流。数据编码器203也对从存储器200中读取的图像数据,诸如显示菜单屏幕所用的按钮图像数据,进行编码,从而产生由IG数据,即,IG流,表示的基本码流。
将从视频编码器201,音频编码器202和数据编码器203输出的数据,提供给多路复用器(MUX)205。多路复用器205将每个数据划分为多个预定部分,且如果需要,将DTS和/或PTS添加至每一个划分后的部分,从而构建PES包。多路复用器205进一步将PES包划分为多个预定部分,且将表示数据类型的PID添加至每一个划分后的部分,从而形成TS包。然后,以预定顺序排列TS包。因此,产生将视频数据基本码流,音频数据基本码流,PG流和IG流进行多路复用的传输流。
将从多路复用器205输出的传输流,提供给格式化单元206,且将具有4字节数据长度的预定头部,添加至每一个TS包,以便将TS包转换为源包。格式化单元206还基于所提供的传输流,产生诸如剪辑信息文件的数据库。将所产生的数据和数据流,构建入预定文件系统,诸如UDF。
格式化单元206还基于所产生的数据,产生光盘图像208。将光盘图像208记录在硬盘驱动器(未示出)上。
将格式化单元206的输出,提供给验证单元207。验证单元207执行附图38的步骤S53中执行的验证处理,即,附图39的流程图中执行的验证,诸如段的顺序的验证,和对是否满足回放设备的解码缓冲器所存储的段的数目的上限N的条件的验证。验证单元207还执行附图38的步骤S55中执行的验证,即,对格式化数据流的验证。这样,对格式化单元206产生的光盘图像208执行验证。
如果作为验证单元207所执行的验证处理的结果,发现一个误差,根据误差的类型,以预定方式控制视频编码器201,音频编码器202,数据编码器203,多路复用器205,和/或格式化单元207,并重新执行相应处理。
如果以段的排列顺序发现一个误差,或如果不满足回放设备的解码缓冲器所存储的段的数目的上限N的条件,则控制视频编码器201,音频编码器202,和数据编码器203,从而再次设置DTS,或控制多路复用器205从而改变TS包的顺序。如果在数据库,源包,或文件系统中发现误差,则控制格式化单元206,从而再次格式化数据。
上述方法仅仅是处理误差的实例。作为选择,如果以段的排列顺序发现一个误差,或如果不满足回放设备的解码缓冲器所存储的段的数目的上限N的条件,则可以将表示误差的消息提供给UI单元204,且用户可以手工改变包的顺序。
如果作为验证单元207执行的验证处理的结果,并未发现误差,则将表示光盘图像208的数据从验证单元207输出至下面将讨论的母盘前期处理。
上述实例中,验证单元207是创作设备2的一部分。然而,验证单元207可以作为独立验证装置的功能。例如,可以构建没有验证单元207的创作设备2,如附图42所示。在格式化单元206中产生光盘图像208。在将光盘图像208提供给母盘前期处理器之前,将其提供给执行数据结构的验证的,独立的验证装置3。如果作为验证的结果,发现一个误差,如上所述,则显示一个误差信息,且如果可能,还显示误差的原因和位置,例如在验证装置3所提供的显示单元3A上。如果创作设备2’是误差的原因,则验证装置3控制创作设备2’,如上所述,从而再次执行编码处理或多路复用处理。
可以利用计算机,诸如个人计算机,形成上述验证装置3。这样,通过该计算机所安装的软件,实现验证装置3所执行的验证处理。作为选择,可以利用用于执行验证处理的专用硬件形成验证装置3。
上述实例中,仅仅在格式化单元206之后的阶段提供验证单元207。然而,例如,在多路复用器205和格式化单元206之间,放置另一个验证单元。这样,验证单元207可以仅为格式化单元206所执行的处理执行验证。在多路复用器205和格式化单元206之间放置的验证单元中,执行对段的顺序的验证,或对于是否满足回放设备的解码缓冲器所存储的段的数目的上限N的条件的验证。
附图43描述了基于附图40或附图42所示创作设备2或2’输出的数据,用于制造可由回放设备1重写的光盘的制造方法。
如附图43中所示,准备了例如玻璃的源盘。然后将诸如光阻材料之类的记录材料应用于该源盘。然后制造一个记录母盘。
如果需要,对创作设备2或2’输出的数据执行编辑(母盘前期处理),以便产生具有将要记录在光盘上的格式的记录信号。然后,根据该记录信号调制激光束,并将其应用至母盘上的光阻材料。然后,将母盘上的光阻材料暴露给反映该记录信号的激光束。
随后,对母盘进行显影,以便在母盘上形成凹槽。然后,对母盘执行预定处理,诸如电铸,以便制作具有母盘所传送的凹槽的金属母盘。然后,从金属母盘中制作作为模子的金属压模。
然后,将一种材料,诸如丙烯酸纤维(PMMA)或聚碳酸酯(PC),注入模子,以便固定该模子。作为选择,该金属压模可以用紫外线(UV)固化树脂(2P)镀膜,然后,该树脂已具有UV辐射且已硬化。所以,将金属压模上的凹槽传送至该树脂,以便形成树脂拷贝。
然后,在拷贝上通过汽相淀积,溅射,或旋涂法形成反射膜。
此后,在执行进一步处理,诸如对所得到光盘的内部和外部直径的调整,之后,切分两个光盘。在将标签和插孔添加到所得到的光盘上之后,将该光盘插入光盘盒。以这样的方式,完成将可由回放设备1重写的数据记录在其上的光盘。
上述实例中,基于创作设备2的输出,制作母盘。然而可基于创作设备2所产生的光盘图像208,将数据记录在诸如蓝光光盘之类的记录介质上。
本领域技术人员应当理解的是,根据设计需要或其他因素,可以在本发明所附的权利要求或其等价物的范围之内,做出各种修改、组合、次组合和替换。